<?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>190979</bug_id>
          
          <creation_ts>2018-10-26 20:34:11 -0700</creation_ts>
          <short_desc>Add new global object and preliminary Worklets support for CSS painting api</short_desc>
          <delta_ts>2018-11-02 21:11:23 -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>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>190217</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Justin Michaud">justin_michaud</reporter>
          <assigned_to name="Justin Michaud">justin_michaud</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>koivisto</cc>
    
    <cc>mark.lam</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1472649</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-26 20:34:11 -0700</bug_when>
    <thetext>Add support for CSS.paintWorklet.addModule(), which should run with its own global object on the main thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472650</commentid>
    <comment_count>1</comment_count>
      <attachid>353217</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-26 20:47:18 -0700</bug_when>
    <thetext>Created attachment 353217
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472653</commentid>
    <comment_count>2</comment_count>
      <attachid>353217</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-10-26 20:56:05 -0700</bug_when>
    <thetext>Comment on attachment 353217
Patch

Attachment 353217 did not pass bindings-ews (mac):
Output: https://webkit-queues.webkit.org/results/9745508

New failing tests:
Please see test output for results</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472980</commentid>
    <comment_count>3</comment_count>
      <attachid>353305</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-29 11:57:39 -0700</bug_when>
    <thetext>Created attachment 353305
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472991</commentid>
    <comment_count>4</comment_count>
      <attachid>353305</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-10-29 12:17:55 -0700</bug_when>
    <thetext>Comment on attachment 353305
Patch

Attachment 353305 did not pass bindings-ews (mac):
Output: https://webkit-queues.webkit.org/results/9770503

New failing tests:
Please see test output for results</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473000</commentid>
    <comment_count>5</comment_count>
      <attachid>353311</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-29 12:57:26 -0700</bug_when>
    <thetext>Created attachment 353311
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473004</commentid>
    <comment_count>6</comment_count>
      <attachid>353311</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-10-29 13:07:12 -0700</bug_when>
    <thetext>Comment on attachment 353311
Patch

Attachment 353311 did not pass bindings-ews (mac):
Output: https://webkit-queues.webkit.org/results/9770987

New failing tests:
Please see test output for results</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473010</commentid>
    <comment_count>7</comment_count>
      <attachid>353315</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-29 13:16:49 -0700</bug_when>
    <thetext>Created attachment 353315
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473013</commentid>
    <comment_count>8</comment_count>
      <attachid>353315</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2018-10-29 13:22:07 -0700</bug_when>
    <thetext>Comment on attachment 353315
Patch

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

This is great! Someone with more JSC binding experience should look at the code more but looks ok from where I stand. Just saw a few formatting issues.

&gt; Source/WebCore/DerivedSources.make:1029
&gt; +	$(WebCore)/worklets/PaintWorkletGlobalScope.idl \
&gt; +    $(WebCore)/worklets/Worklet.idl \
&gt; +	$(WebCore)/worklets/WorkletGlobalScope.idl \

You got some weird spacing here.

&gt; Source/WebCore/DerivedSources.make:1162
&gt; +	$(WORKLETGLOBALSCOPE_CONSTRUCTORS_FILE) \

Same weird spacing.

&gt; Source/WebCore/worklets/PaintWorkletGlobalScope.h:35
&gt; +

Remove blank line here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473014</commentid>
    <comment_count>9</comment_count>
      <attachid>353315</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-10-29 13:22:44 -0700</bug_when>
    <thetext>Comment on attachment 353315
Patch

Attachment 353315 did not pass bindings-ews (mac):
Output: https://webkit-queues.webkit.org/results/9771232

New failing tests:
Please see test output for results</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473015</commentid>
    <comment_count>10</comment_count>
      <attachid>353316</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-29 13:26:35 -0700</bug_when>
    <thetext>Created attachment 353316
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473016</commentid>
    <comment_count>11</comment_count>
      <attachid>353316</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2018-10-29 13:29:18 -0700</bug_when>
    <thetext>Comment on attachment 353316
Patch

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

&gt; Source/WebCore/DerivedSources.make:1162
&gt; +	$(WORKLETGLOBALSCOPE_CONSTRUCTORS_FILE) \

Still has the weird spacing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473017</commentid>
    <comment_count>12</comment_count>
      <attachid>353316</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-10-29 13:31:17 -0700</bug_when>
    <thetext>Comment on attachment 353316
Patch

Attachment 353316 did not pass bindings-ews (mac):
Output: https://webkit-queues.webkit.org/results/9771356

New failing tests:
Please see test output for results</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473032</commentid>
    <comment_count>13</comment_count>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-29 13:34:56 -0700</bug_when>
    <thetext>(In reply to Don Olmstead from comment #11)
&gt; Comment on attachment 353316 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=353316&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/DerivedSources.make:1162
&gt; &gt; +	$(WORKLETGLOBALSCOPE_CONSTRUCTORS_FILE) \
&gt; 
&gt; Still has the weird spacing

Heh, Xcode isn&apos;t cooperating. I&apos;ll fix it with vim.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473041</commentid>
    <comment_count>14</comment_count>
      <attachid>353318</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-29 13:55:29 -0700</bug_when>
    <thetext>Created attachment 353318
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473363</commentid>
    <comment_count>15</comment_count>
      <attachid>353318</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2018-10-30 12:49:14 -0700</bug_when>
    <thetext>Comment on attachment 353318
Patch

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

&gt; Source/WebCore/bindings/js/JSWorkletGlobalScopeBase.cpp:42
&gt; +namespace WebCore {
&gt; +using namespace JSC;

Nit: We usually put a blank line between these.

&gt; Source/WebCore/css/CSSPaintImageValue.cpp:53
&gt; +    auto* selectedGlobalScope = renderElement.document().getCSSPaintWorkletGlobalScope();

Shouldn&apos;t this be getPaintWorkletGlobalScope() now?

&gt; Source/WebCore/css/DOMCSSPaintWorklet.idl:30
&gt; +    [ImplementedAs=ensurePaintWorklet,CallWith=Document] static readonly attribute Worklet paintWorklet;

Should DOMCSSPaintWorklet.* be DOMPaintWorklet.* now?

&gt; Source/WebCore/dom/Document.cpp:8381
&gt; +Worklet&amp; Document::ensureCSSPaintWorklet()

ensurePaintWorklet?

&gt; Source/WebCore/worklets/PaintWorkletGlobalScope.cpp:45
&gt; +    return 1.0;

Why not fetch this from the document?

&gt; Source/WebCore/worklets/WorkletGlobalScope.h:55
&gt; +    String origin() const final { ASSERT_NOT_REACHED(); return &quot;&quot;; }

emptyString()

&gt; Source/WebCore/worklets/WorkletScriptController.cpp:170
&gt; +        // This FIXME is from in WorkerScriptController.

Typo: in</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473412</commentid>
    <comment_count>16</comment_count>
      <attachid>353318</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-10-30 14:35:45 -0700</bug_when>
    <thetext>Comment on attachment 353318
Patch

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

&gt; Source/WebCore/worklets/Worklet.cpp:49
&gt; +    auto context = PaintWorkletGlobalScope::create(makeWeakPtr(document), ScriptSourceCode(moduleURL));

We usually prefer to pass the object and let the callee decide to take a WeakPtr. So:
auto context = PaintWorkletGlobalScope::create(document, ScriptSourceCode(moduleURL));

here

and then makeWeakPtr() inside the PaintWorkletGlobalScope constructor when assigning it to the member.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473466</commentid>
    <comment_count>17</comment_count>
      <attachid>353423</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-30 16:00:29 -0700</bug_when>
    <thetext>Created attachment 353423
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473511</commentid>
    <comment_count>18</comment_count>
      <attachid>353423</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-10-30 17:02:29 -0700</bug_when>
    <thetext>Comment on attachment 353423
Patch

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

&gt; Source/WebCore/Sources.txt:388
&gt; +bindings/js/JSPaintWorkletGlobalScopeCustom.cpp

Bad sorting now.

&gt; Source/WebCore/bindings/js/JSPaintWorkletGlobalScopeCustom.cpp:47
&gt; +void JSPaintWorkletGlobalScope::visitAdditionalChildren(JSC::SlotVisitor&amp; visitor)

I hear these visit methods can get called on a background thread. As a result, you&apos;ll likely need to protect all accesses / modifications to paintDefinitionMap with a Lock.

&gt; Source/WebCore/bindings/js/JSPaintWorkletGlobalScopeCustom.cpp:54
&gt; +JSValue JSPaintWorkletGlobalScope::registerPaint(ExecState&amp; state)

Please add a comment explaining why this requires custom code. What is the bindings generator missing to generate the code you need? We don&apos;t like to add new custom code unless there is a very good reason to.

&gt; Source/WebCore/bindings/js/JSPaintWorkletGlobalScopeCustom.cpp:58
&gt; +    PaintWorkletGlobalScope&amp; workletGlobalScope = wrapped();

auto&amp;

&gt; Source/WebCore/bindings/js/JSWorkletGlobalScopeBase.cpp:87
&gt; +    JSWorkletGlobalScopeBase* thisObject = jsCast&lt;JSWorkletGlobalScopeBase*&gt;(cell);

auto*

&gt; Source/WebCore/bindings/js/JSWorkletGlobalScopeBase.cpp:120
&gt; +    const JSWorkletGlobalScopeBase* thisObject = jsCast&lt;const JSWorkletGlobalScopeBase*&gt;(object);

auto*

&gt; Source/WebCore/bindings/js/JSWorkletGlobalScopeBase.cpp:134
&gt; +    JSWorkletGlobalScope* contextWrapper = script-&gt;workletGlobalScopeWrapper();

auto*

&gt; Source/WebCore/bindings/js/JSWorkletGlobalScopeBase.h:40
&gt; +    typedef JSDOMGlobalObject Base;

using Base = JSDOMGlobalObject;

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:509
&gt; +    return 0 if $interface-&gt;type-&gt;name eq &quot;WorkletGlobalScope&quot;;

Please add a comment before this line like so:
# For worklets, the global object is a PaintWorkletGlobalScope.

&gt; Source/WebCore/dom/Document.cpp:8390
&gt; +    m_paintWorkletGlobalScope = WTFMove(scope);

Should we ASSERT(!m_paintWorkletGlobalScope); before this? or is it OK to overwrite a previous WorkletGlobalScope?

&gt; Source/WebCore/dom/Document.h:1526
&gt; +    PaintWorkletGlobalScope* getPaintWorkletGlobalScope() { return m_paintWorkletGlobalScope.get(); }

Getters in WebKit do not use the &apos;get&apos; prefix. Should be:
PaintWorkletGlobalScope* paintWorkletGlobalScope();

&gt; Source/WebCore/worklets/PaintWorkletGlobalScope.cpp:38
&gt; +    return adoptRef(*new PaintWorkletGlobalScope(makeWeakPtr(document), WTFMove(code)));

return adoptRef(*new PaintWorkletGlobalScope(document, WTFMove(code)));

&gt; Source/WebCore/worklets/PaintWorkletGlobalScope.cpp:42
&gt; +    : WorkletGlobalScope(WTFMove(document), WTFMove(code))

makeWeakPtr(document)

&gt; Source/WebCore/worklets/PaintWorkletGlobalScope.h:43
&gt; +    bool isPaintWorkletGlobalScope() const final { return true; }

Should probably be private.

&gt; Source/WebCore/worklets/PaintWorkletGlobalScope.h:58
&gt; +    PaintWorkletGlobalScope(WeakPtr&lt;Document&gt;&amp;&amp;, ScriptSourceCode&amp;&amp;);

Document&amp;

&gt; Source/WebCore/worklets/Worklet.cpp:42
&gt; +

Extra blank line here.

&gt; Source/WebCore/worklets/Worklet.cpp:49
&gt; +    auto context = PaintWorkletGlobalScope::create(document, ScriptSourceCode(moduleURL));

Does this need a FIXME comment indicating that moduleURL should actually be a URL and not source code?

&gt; Source/WebCore/worklets/Worklet.cpp:51
&gt; +    document.setPaintWorkletGlobalScope(WTFMove(context));

What if the document already had a PaintWorkletGlobalScope?

&gt; Source/WebCore/worklets/Worklet.h:33
&gt; +class Worklet : public RefCounted&lt;Worklet&gt; {

Should probably subclass ScriptWrappable since it can have a JS wrapper.

&gt; Source/WebCore/worklets/Worklet.h:37
&gt; +    void addModule(Document&amp;, String moduleURL);

const String&amp;

&gt; Source/WebCore/worklets/Worklet.h:41
&gt; +

No need for this blank line.

&gt; Source/WebCore/worklets/Worklet.h:45
&gt; +#endif

Missing blank line before this.

&gt; Source/WebCore/worklets/WorkletGlobalScope.cpp:49
&gt; +WorkletGlobalScope::WorkletGlobalScope(WeakPtr&lt;Document&gt;&amp;&amp; document, ScriptSourceCode&amp;&amp; code)

Document&amp;

&gt; Source/WebCore/worklets/WorkletGlobalScope.cpp:50
&gt; +    : m_document(WTFMove(document))

makeWeakPtr(document)

&gt; Source/WebCore/worklets/WorkletGlobalScope.cpp:52
&gt; +    , m_script(std::make_unique&lt;WorkletScriptController&gt;(this))

if m_script cannot be null then we should use UniqueRef instead of unique_ptr.

&gt; Source/WebCore/worklets/WorkletGlobalScope.cpp:59
&gt; +    Frame* frame = m_document-&gt;frame();

auto&amp;

&gt; Source/WebCore/worklets/WorkletGlobalScope.cpp:60
&gt; +    m_jsRuntimeFlags = (frame ? frame-&gt;settings().javaScriptRuntimeFlags() : JSC::RuntimeFlags());

No need for the surrounding brackets.

&gt; Source/WebCore/worklets/WorkletGlobalScope.cpp:75
&gt; +    return m_topOrigin-&gt;toString();

Isn&apos;t the origin of the WorkletGlobalScope the origin of its document?

The call to `setSecurityOriginPolicy(SecurityOriginPolicy::create(m_document-&gt;securityOrigin()));` in the constructor made me believe so.

&gt; Source/WebCore/worklets/WorkletGlobalScope.cpp:110
&gt; +    // Always use UTF-8 in Workers.

Drop this comment, this is not a worker.

&gt; Source/WebCore/worklets/WorkletGlobalScope.h:50
&gt; +    virtual ~WorkletGlobalScope();

no need for the &apos;virtual&apos;.

&gt; Source/WebCore/worklets/WorkletGlobalScope.h:52
&gt; +    virtual bool isPaintWorkletGlobalScope() const { return false; }

Should probably be private.

&gt; Source/WebCore/worklets/WorkletGlobalScope.h:59
&gt; +    IDBClient::IDBConnectionProxy* idbConnectionProxy() final { ASSERT_NOT_REACHED(); return nullptr; }

Should probably be private.

&gt; Source/WebCore/worklets/WorkletGlobalScope.h:62
&gt; +    void postTask(Task&amp;&amp;) final { ASSERT_NOT_REACHED(); }

Should probably be private.

&gt; Source/WebCore/worklets/WorkletScriptController.cpp:188
&gt; +    JSC::ExecState* exec = m_workletGlobalScopeWrapper-&gt;globalExec();

auto*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473519</commentid>
    <comment_count>19</comment_count>
      <attachid>353423</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-10-30 17:06:52 -0700</bug_when>
    <thetext>Comment on attachment 353423
Patch

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

&gt;&gt; Source/WebCore/bindings/js/JSPaintWorkletGlobalScopeCustom.cpp:47
&gt;&gt; +void JSPaintWorkletGlobalScope::visitAdditionalChildren(JSC::SlotVisitor&amp; visitor)
&gt; 
&gt; I hear these visit methods can get called on a background thread. As a result, you&apos;ll likely need to protect all accesses / modifications to paintDefinitionMap with a Lock.

You should probably confirm this with JSC engineer (like Mark Lam) before doing the extra work since I am only 90% certain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473551</commentid>
    <comment_count>20</comment_count>
      <attachid>353423</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-10-30 18:18:54 -0700</bug_when>
    <thetext>Comment on attachment 353423
Patch

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

&gt;&gt;&gt; Source/WebCore/bindings/js/JSPaintWorkletGlobalScopeCustom.cpp:47
&gt;&gt;&gt; +void JSPaintWorkletGlobalScope::visitAdditionalChildren(JSC::SlotVisitor&amp; visitor)
&gt;&gt; 
&gt;&gt; I hear these visit methods can get called on a background thread. As a result, you&apos;ll likely need to protect all accesses / modifications to paintDefinitionMap with a Lock.
&gt; 
&gt; You should probably confirm this with JSC engineer (like Mark Lam) before doing the extra work since I am only 90% certain.

This can.

&gt;&gt; Source/WebCore/bindings/js/JSPaintWorkletGlobalScopeCustom.cpp:54
&gt;&gt; +JSValue JSPaintWorkletGlobalScope::registerPaint(ExecState&amp; state)
&gt; 
&gt; Please add a comment explaining why this requires custom code. What is the bindings generator missing to generate the code you need? We don&apos;t like to add new custom code unless there is a very good reason to.

Isn&apos;t this just copied from the previous implementation?

&gt; Source/WebCore/bindings/js/JSWorkletGlobalScopeBase.h:84
&gt; +} // namespace WebCore

nit: You should add a newline above this

&gt; Source/WebCore/bindings/js/JSWorkletGlobalScopeBase.h:85
&gt; +#endif

style nit: You should comment what this endif is for. You should also add a newline above this.

&gt; Source/WebCore/worklets/WorkletGlobalScope.h:109
&gt; +    bool wrapCryptoKey(const Vector&lt;uint8_t&gt;&amp;, Vector&lt;uint8_t&gt;&amp;) final { RELEASE_ASSERT_NOT_REACHED(); return false; }
&gt; +    bool unwrapCryptoKey(const Vector&lt;uint8_t&gt;&amp;, Vector&lt;uint8_t&gt;&amp;) final { RELEASE_ASSERT_NOT_REACHED(); return false; }

Do you have a bug for this?

&gt; Source/WebCore/worklets/WorkletGlobalScope.h:123
&gt; +    // FIXME: This is not implemented properly, it just satisfies the compiler.

Should have a bug #

&gt; Source/WebCore/worklets/WorkletScriptController.cpp:105
&gt; +    JSLockHolder lock(m_vm.get());

might as well be consistent with above and do:
JSLockHolder lock { vm() };

&gt; Source/WebCore/worklets/WorkletScriptController.cpp:109
&gt; +    // Explicitly protect the global object&apos;s prototype so it isn&apos;t collected
&gt; +    // when we allocate the global object. (Once the global object is fully
&gt; +    // constructed, it can mark its own prototype.)

This Strong&lt;&gt; is not needed. It&apos;ll either be alive in the stack or in a register since it&apos;s used below. Also, you pass in the &quot;structure&quot; below, which will mark its prototype. That &quot;structure&quot; is live until the global object sets its value. So this can just be a regular JSGlobalScopePrototype*

&gt; Source/WebCore/worklets/WorkletScriptController.cpp:170
&gt; +        // This FIXME is from WorkerScriptController.

This is ambiguous. You should link to a bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473935</commentid>
    <comment_count>21</comment_count>
      <attachid>353551</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-31 16:32:32 -0700</bug_when>
    <thetext>Created attachment 353551
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473938</commentid>
    <comment_count>22</comment_count>
      <attachid>353551</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-10-31 16:38:03 -0700</bug_when>
    <thetext>Comment on attachment 353551
Patch

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

&gt; Source/WebCore/worklets/PaintWorkletGlobalScope.h:42
&gt; +    bool isPaintWorkletGlobalScope() const final { return true; }

Why is this public?

&gt; Source/WebCore/worklets/PaintWorkletGlobalScope.h:54
&gt; +    HashMap&lt;String, std::unique_ptr&lt;PaintDefinition&gt;&gt;&amp; paintDefinitionMap() { return m_paintDefinitionMap; }

You should assert that m_paintDefinitionMapLock is locked here.

&gt; Source/WebCore/worklets/PaintWorkletGlobalScope.h:55
&gt; +    Lock&amp; lock() { return m_lock; }

name is too generic.

&gt; Source/WebCore/worklets/PaintWorkletGlobalScope.h:61
&gt; +    Lock m_lock;

m_lock seems to generic a name. I&apos;d call this m_paintDefinitionMapLock;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473941</commentid>
    <comment_count>23</comment_count>
      <attachid>353423</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-31 16:41:13 -0700</bug_when>
    <thetext>Comment on attachment 353423
Patch

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

&gt;&gt;&gt; Source/WebCore/bindings/js/JSPaintWorkletGlobalScopeCustom.cpp:54
&gt;&gt;&gt; +JSValue JSPaintWorkletGlobalScope::registerPaint(ExecState&amp; state)
&gt;&gt; 
&gt;&gt; Please add a comment explaining why this requires custom code. What is the bindings generator missing to generate the code you need? We don&apos;t like to add new custom code unless there is a very good reason to.
&gt; 
&gt; Isn&apos;t this just copied from the previous implementation?

No, this is new.

&gt;&gt; Source/WebCore/dom/Document.cpp:8390
&gt;&gt; +    m_paintWorkletGlobalScope = WTFMove(scope);
&gt; 
&gt; Should we ASSERT(!m_paintWorkletGlobalScope); before this? or is it OK to overwrite a previous WorkletGlobalScope?

I added a FIXME

&gt;&gt; Source/WebCore/worklets/PaintWorkletGlobalScope.h:43
&gt;&gt; +    bool isPaintWorkletGlobalScope() const final { return true; }
&gt; 
&gt; Should probably be private.

This can&apos;t be, it is used in WorkletScriptController

&gt;&gt; Source/WebCore/worklets/WorkletGlobalScope.h:109
&gt;&gt; +    bool unwrapCryptoKey(const Vector&lt;uint8_t&gt;&amp;, Vector&lt;uint8_t&gt;&amp;) final { RELEASE_ASSERT_NOT_REACHED(); return false; }
&gt; 
&gt; Do you have a bug for this?

No. It looks like it isn&apos;t actually a bug, since Worklets don&apos;t allow access to indexeddb.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473948</commentid>
    <comment_count>24</comment_count>
      <attachid>353557</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-31 16:47:37 -0700</bug_when>
    <thetext>Created attachment 353557
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473952</commentid>
    <comment_count>25</comment_count>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-31 16:54:53 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #22)
&gt; Comment on attachment 353551 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=353551&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/worklets/PaintWorkletGlobalScope.h:42
&gt; &gt; +    bool isPaintWorkletGlobalScope() const final { return true; }
&gt; 
&gt; Why is this public?

It is needed by WorkletScriptController. I tried to use is&lt;&gt;() instead, but the type traits would also require it to be public.

&gt; &gt; Source/WebCore/worklets/PaintWorkletGlobalScope.h:54
&gt; &gt; +    HashMap&lt;String, std::unique_ptr&lt;PaintDefinition&gt;&gt;&amp; paintDefinitionMap() { return m_paintDefinitionMap; }
&gt; 
&gt; You should assert that m_paintDefinitionMapLock is locked here.

Great idea! I put in a RELEASE_ASSERT, although I am not sure if that should be a regular ASSERT instead. I am not sure if a race here could cause a security issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473958</commentid>
    <comment_count>26</comment_count>
      <attachid>353557</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-10-31 17:02:12 -0700</bug_when>
    <thetext>Comment on attachment 353557
Patch

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

&gt; Source/WebCore/worklets/PaintWorkletGlobalScope.h:54
&gt; +    HashMap&lt;String, std::unique_ptr&lt;PaintDefinition&gt;&gt;&amp; paintDefinitionMap() { RELEASE_ASSERT(m_paintDefinitionLock.isLocked()); return m_paintDefinitionMap; }

I would use a debug assertion for performance reasons here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473959</commentid>
    <comment_count>27</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-10-31 17:03:46 -0700</bug_when>
    <thetext>(In reply to Justin Michaud from comment #25)
&gt; (In reply to Chris Dumez from comment #22)
&gt; &gt; Comment on attachment 353551 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=353551&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/worklets/PaintWorkletGlobalScope.h:42
&gt; &gt; &gt; +    bool isPaintWorkletGlobalScope() const final { return true; }
&gt; &gt; 
&gt; &gt; Why is this public?
&gt; 
&gt; It is needed by WorkletScriptController. I tried to use is&lt;&gt;() instead, but
&gt; the type traits would also require it to be public.

Does not make much sense, it should be public in the base class, and private in the subclass because it makes no sense to call this method on the subclass (if you are, you are doing a useless check). And Yes, you should be using is&lt;&gt;() / downcast&lt;&gt;() whenever possible but is&lt;&gt;() does usually rely on having such a virtual function defined.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473960</commentid>
    <comment_count>28</comment_count>
      <attachid>353560</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-31 17:11:59 -0700</bug_when>
    <thetext>Created attachment 353560
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474137</commentid>
    <comment_count>29</comment_count>
      <attachid>353560</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-11-01 09:44:40 -0700</bug_when>
    <thetext>Comment on attachment 353560
Patch

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

&gt; Source/WebCore/bindings/js/JSPaintWorkletGlobalScopeCustom.cpp:55
&gt; +// This custom binding is required to handle the paint callback conversion according to the spec.

Still not clear for me why we need custom bindings. We have plenty of API that takes callbacks without custom bindings (e.g. MutationObserver constructor, FileSystemEntry.getParent, Geolocation.getCurrentPosition).
You still have not convinced me you NEED custom bindings.

&gt; Source/WebCore/bindings/js/JSPaintWorkletGlobalScopeCustom.cpp:127
&gt; +    auto paintDefinition = std::unique_ptr&lt;PaintDefinition&gt;(new PaintDefinition { name, paint.releaseNonNull(), inputProperties, inputArguments });

heh.. std::make_unique&lt;PaintDefinition&gt;(name, paint.releaseNonNull(), inputProperties, inputArguments)

&gt; Source/WebCore/bindings/js/JSWorkletGlobalScopeBase.cpp:120
&gt; +    const auto* thisObject = jsCast&lt;const JSWorkletGlobalScopeBase*&gt;(object);

auto*, we like to omit &apos;const&apos; whenever possible.

&gt; Source/WebCore/bindings/js/JSWorkletGlobalScopeBase.cpp:143
&gt; +    const ClassInfo* classInfo = asObject(value)-&gt;classInfo(vm);

auto*

&gt; Source/WebCore/bindings/js/JSWorkletGlobalScopeBase.h:84
&gt; +} // namespace WebCore

Missing blank line before this.

&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:488
&gt; +    RELEASE_ASSERT_NOT_REACHED();

Does this really need to be a RELEASE_ASSERT?

&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:532
&gt; +        WorkerGlobalScope&amp; workerGlobalScope = downcast&lt;WorkerGlobalScope&gt;(*this);

This local variable is not needed, then you don&apos;t need the curly brackets either.

&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:537
&gt; +        WorkletGlobalScope&amp; workletGlobalScope = downcast&lt;WorkletGlobalScope&gt;(*this);

This local variable is not needed.

&gt; Source/WebCore/worklets/PaintWorkletGlobalScope.cpp:49
&gt; +    ASSERT(m_document-&gt;domWindow());

These assertions look super risky to me and I&apos;d suggest null checks instead. You can probably return 1.0 when document or window are null.

&gt; Source/WebCore/worklets/PaintWorkletGlobalScope.h:44
&gt; +    double devicePixelRatio();

const ?

&gt; Source/WebCore/worklets/PaintWorkletGlobalScope.idl:37
&gt; +    [Custom, MayThrowException] void registerPaint(DOMString name, Function paintCtor);

paintCtor -&gt; paintConstructor

&gt; Source/WebCore/worklets/WorkletConsoleClient.h:46
&gt; +protected:

It makes no sense for a class marked as final to have protected members. If the class is really final, then these members should be private.

&gt; Source/WebCore/worklets/WorkletConsoleClient.h:47
&gt; +    void messageWithTypeAndLevel(MessageType, MessageLevel, JSC::ExecState*, Ref&lt;Inspector::ScriptArguments&gt;&amp;&amp;) override;

override -&gt; final, here and below.

&gt; Source/WebCore/worklets/WorkletGlobalScope.cpp:54
&gt; +    , m_identifier(&quot;WorkletGlobalScope:&quot; + Inspector::IdentifiersFactory::createIdentifier())

makeString(&quot;WorkletGlobalScope:&quot;_s, Inspector::IdentifiersFactory::createIdentifier())

&gt; Source/WebCore/worklets/WorkletGlobalScope.cpp:58
&gt; +    auto* frame = m_document-&gt;frame();

I&apos;d rather you use document.frame() here as it looks safer than m_document-&gt;

&gt; Source/WebCore/worklets/WorkletGlobalScope.cpp:60
&gt; +    ASSERT(m_document-&gt;page());

ditto.

&gt; Source/WebCore/worklets/WorkletGlobalScope.cpp:79
&gt; +    ASSERT(m_document);

This assertion looks risky to me, I&apos;d suggest a null check. Same comment in other places. Or tell me what guarantees that you always have a document.

&gt; Source/WebCore/worklets/WorkletGlobalScope.h:49
&gt; +class WorkletGlobalScope : public RefCounted&lt;WorkletGlobalScope&gt;, public Supplementable&lt;WorkletGlobalScope&gt;, public ScriptExecutionContext, public EventTargetWithInlineData {

I don&apos;t think you need this to be Supplementable, do you?

&gt; Source/WebCore/worklets/WorkletGlobalScope.h:64
&gt; +    WorkletScriptController* script() { return &amp;m_script.get(); }

Why doesn&apos;t this return a WorkletScriptController&amp; instead of a WorkletScriptController* ? I can never return null.

&gt; Source/WebCore/worklets/WorkletGlobalScope.h:81
&gt; +    WeakPtr&lt;Document&gt; m_document;

Having protected data members is bad practice. Data members should be private. You can add a protected getter for that data member if needed.

&gt; Source/WebCore/worklets/WorkletGlobalScope.h:126
&gt; +    mutable WorkerEventQueue m_eventQueue;

Why does this need to be mutable?

&gt; Source/WebCore/worklets/WorkletScriptController.cpp:187
&gt; +#endif

Missing blank line before this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474271</commentid>
    <comment_count>30</comment_count>
      <attachid>353560</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-11-01 14:10:41 -0700</bug_when>
    <thetext>Comment on attachment 353560
Patch

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

&gt;&gt; Source/WebCore/bindings/js/JSPaintWorkletGlobalScopeCustom.cpp:127
&gt;&gt; +    auto paintDefinition = std::unique_ptr&lt;PaintDefinition&gt;(new PaintDefinition { name, paint.releaseNonNull(), inputProperties, inputArguments });
&gt; 
&gt; heh.. std::make_unique&lt;PaintDefinition&gt;(name, paint.releaseNonNull(), inputProperties, inputArguments)

It&apos;s a struct, so that doesn&apos;t work. Should I leave it as-is, or add a constructor?

&gt;&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:488
&gt;&gt; +    RELEASE_ASSERT_NOT_REACHED();
&gt; 
&gt; Does this really need to be a RELEASE_ASSERT?

I wasn&apos;t sure if commonVM() was safe to be returned, but I needed to return a reference to something to satisfy the compiler.

&gt;&gt; Source/WebCore/worklets/WorkletGlobalScope.h:126
&gt;&gt; +    mutable WorkerEventQueue m_eventQueue;
&gt; 
&gt; Why does this need to be mutable?

The signature of the getter is:
EventQueue&amp; eventQueue() const
For some reason. I have no clue why, but I can&apos;t change it without changing ScriptExecutionContext</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474275</commentid>
    <comment_count>31</comment_count>
      <attachid>353643</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-11-01 14:14:56 -0700</bug_when>
    <thetext>Created attachment 353643
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474568</commentid>
    <comment_count>32</comment_count>
      <attachid>353643</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-11-02 11:09:22 -0700</bug_when>
    <thetext>Comment on attachment 353643
Patch

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

&gt; Source/WebCore/worklets/WorkletScriptController.cpp:157
&gt; +void WorkletScriptController::evaluate(const ScriptSourceCode&amp; sourceCode, NakedPtr&lt;JSC::Exception&gt;&amp; returnedException, String* returnedExceptionMessage)

Can you confirm this is correct? Worklets have a unique opaque origin, so normally this would always sanitize exception messages. At the same time, it is important that exceptions show up in the inspector. As far as I know, there is nowhere where a worklet can import a cross-origin script (do ES6 modules allow cross-origin imports?), so this is safe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474632</commentid>
    <comment_count>33</comment_count>
      <attachid>353643</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-11-02 14:40:24 -0700</bug_when>
    <thetext>Comment on attachment 353643
Patch

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

r=me

&gt;&gt; Source/WebCore/worklets/WorkletScriptController.cpp:157
&gt;&gt; +void WorkletScriptController::evaluate(const ScriptSourceCode&amp; sourceCode, NakedPtr&lt;JSC::Exception&gt;&amp; returnedException, String* returnedExceptionMessage)
&gt; 
&gt; Can you confirm this is correct? Worklets have a unique opaque origin, so normally this would always sanitize exception messages. At the same time, it is important that exceptions show up in the inspector. As far as I know, there is nowhere where a worklet can import a cross-origin script (do ES6 modules allow cross-origin imports?), so this is safe.

You are not exposing this exception message to JS, are you? Logging it in WebInspector does not count as passing it to JS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474694</commentid>
    <comment_count>34</comment_count>
      <attachid>353751</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-11-02 17:30:17 -0700</bug_when>
    <thetext>Created attachment 353751
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474726</commentid>
    <comment_count>35</comment_count>
      <attachid>353751</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-02 21:01:39 -0700</bug_when>
    <thetext>Comment on attachment 353751
Patch

Clearing flags on attachment: 353751

Committed r237766: &lt;https://trac.webkit.org/changeset/237766&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474727</commentid>
    <comment_count>36</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-02 21:01:41 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474728</commentid>
    <comment_count>37</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-02 21:11:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/45780764&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353217</attachid>
            <date>2018-10-26 20:47:18 -0700</date>
            <delta_ts>2018-10-29 11:57:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190979-20181026204717.patch</filename>
            <type>text/plain</type>
            <size>181125</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjQ4NmIwMmU1NmRmOTIz
MGM2MTUyMTYzZWI3MmZkYzA0OTBmMzgxNS4uY2RlYzcwMThjNzcwZjk2NzczYjEzOTNhMWMzZTVm
ZjE5YjI0YzMyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MyBAQAorMjAxOC0xMC0yNiAgSnVz
dGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIG5l
dyBnbG9iYWwgb2JqZWN0IGFuZCBwcmVsaW1pbmFyeSBXb3JrbGV0cyBzdXBwb3J0IGZvciBDU1Mg
cGFpbnRpbmcgYXBpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTA5NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUZXN0OiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvd29ya2xldC5odG1sCisKKyAgICAgICAg
QWRkIGEgbmV3IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgYW5kIGdsb2JhbCBvYmplY3QgdG8gcnVu
IHdvcmtsZXRzIGluLiBUaGlzIGlzIG1vc3RseSBjb3B5K3Bhc3RlCisgICAgICAgIGZyb20gV29y
a2VycywgYnV0IHdpdGhvdXQgYW55IG9mIHRoZSB0aHJlYWRpbmcuIFdvcmtsZXQuYWRkTW9kdWxl
IGRvZXMgbm90IHlldCBzdXBwb3J0IGxvYWRpbmcgc2NyaXB0cworICAgICAgICBvciBkb2luZyBj
cm9zcyBvcmlnaW4gY2hlY2tpbmcuIFRoZXJlIGFyZSBxdWl0ZSBhIGZldyBwYXJ0cyBvZiB0aGUg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCBhcGkgdGhhdCBhcmUKKyAgICAgICAgbGVmdCBhcyBBU1NF
UlRfTk9UX1JFQUNIRUQoKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2Jq
ZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0IGNvbnN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20u
Y3BwLgorICAgICAgICAoV2ViQ29yZTo6SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6dmlzaXRB
ZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNQYWludFdvcmtsZXRHbG9i
YWxTY29wZTo6cmVnaXN0ZXJQYWludCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrbGV0
R2xvYmFsU2NvcGVCYXNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtsZXRH
bG9iYWxTY29wZUJhc2U6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZSk6CisgICAgICAgIChXZWJD
b3JlOjpKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6Y2xlYXJET01HdWFyZGVkT2JqZWN0
cyk6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnZpc2l0Q2hp
bGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpkZXN0
cm95KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtsZXRHbG9i
YWxTY29wZUJhc2U6OnN1cHBvcnRzUmljaFNvdXJjZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6
SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzaG91bGRJbnRlcnJ1cHRTY3JpcHQpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzaG91bGRJbnRlcnJ1cHRTY3Jp
cHRCZWZvcmVUaW1lb3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3Bl
QmFzZTo6amF2YVNjcmlwdFJ1bnRpbWVGbGFncyk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToK
KyAgICAgICAgKFdlYkNvcmU6OnRvSlNXb3JrbGV0R2xvYmFsU2NvcGUpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6d3JhcHBlZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnByb3h5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6Y3JlYXRlU3RydWN0dXJlKToK
KyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFN0
YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29w
ZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjU3RhdGVGcm9tV29ya2xldEdsb2JhbFNjb3BlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKElzRE9NR2xvYmFsT2JqZWN0KToKKyAgICAgICAg
KFNob3VsZFVzZUdsb2JhbE9iamVjdFByb3RvdHlwZSk6CisgICAgICAgIChHZW5lcmF0ZUhlYWRl
cik6CisgICAgICAgIChHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZ0ZvckV4
cG9zZWQpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGw6CisgICAgICAgICogY3NzL0NTU1BhaW50
SW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYWludEltYWdlVmFsdWU6Omlt
YWdlKToKKyAgICAgICAgKiBjc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRPTUNTU1BhaW50V29ya2xldDo6ZW5zdXJlUGFpbnRXb3JrbGV0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTUNTU1BhaW50V29ya2xldDo6ZW5zdXJlUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9ET01DU1NQYWludFdvcmtsZXQuaDoKKyAgICAg
ICAgKiBjc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmlkbDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVuc3VyZUNTU1BhaW50V29ya2xldCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVuc3VyZUNTU1BhaW50V29ya2xldEds
b2JhbFNjb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpnZXRDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSk6CisgICAg
ICAgICogZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbjoKKyAgICAgICAgKiBkb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0Ojp2bSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpleGVj
U3RhdGUpOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojppc1dvcmtsZXRHbG9iYWxTY29wZSBj
b25zdCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dlckFnZW50OjppbmplY3Rl
ZFNjcmlwdEZvckV2YWwpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtl
clJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1lQWdlbnQ6
OmluamVjdGVkU2NyaXB0Rm9yRXZhbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3Vz
dG9tUGFpbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludEltYWdlOjpD
dXN0b21QYWludEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50SW1hZ2U6OmRv
Q3VzdG9tUGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1h
Z2UuaDoKKyAgICAgICAgKiB3b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHA6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5j
cHAuCisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludFdvcmtsZXRH
bG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6
ZGV2aWNlUGl4ZWxSYXRpbyk6CisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxT
Y29wZTo6YWRkUmVnaXN0ZXJlZFBhaW50KToKKyAgICAgICAgKiB3b3JrbGV0cy9QYWludFdvcmts
ZXRHbG9iYWxTY29wZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50
V29ya2xldEdsb2JhbFNjb3BlLmguCisgICAgICAgICogd29ya2xldHMvUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUuaWRsLgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXQuY3BwOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
LgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtsZXQ6OldvcmtsZXQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldDo6YWRkTW9kdWxl
KToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwLgorICAgICAgICAqIHdvcmts
ZXRzL1dvcmtsZXQuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUuaWRsLgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRDb25zb2xl
Q2xpZW50LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93
b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0
Q29uc29sZUNsaWVudDo6V29ya2xldENvbnNvbGVDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2xldENvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtsZXRDb25zb2xlQ2xpZW50Ojpjb3VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrbGV0Q29uc29sZUNsaWVudDo6dGltZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0
Q29uc29sZUNsaWVudDo6dGltZUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29s
ZUNsaWVudDo6cHJvZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29sZUNsaWVu
dDo6cHJvZmlsZUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29sZUNsaWVudDo6
dGFrZUhlYXBTbmFwc2hvdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29sZUNsaWVu
dDo6dGltZVN0YW1wKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRDb25zb2xlQ2xpZW50Ojpy
ZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldENvbnNvbGVDbGllbnQ6OnJlY29yZEVu
ZCk6CisgICAgICAgICogd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuaDogQWRkZWQuCisg
ICAgICAgICogd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxTY29wZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6On5Xb3JrbGV0R2xvYmFsU2NvcGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpldmFsdWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmlzSlNFeGVjdXRpb25Gb3JiaWRkZW4gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpkaXNhYmxlRXZhbCk6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmRpc2FibGVXZWJBc3NlbWJs
eSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmNvbXBsZXRlVVJMIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6bG9nRXhjZXB0aW9u
VG9Db25zb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29u
c29sZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjphZGRN
ZXNzYWdlKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmlzUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpp
ZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6
c2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6anNSdW50aW1l
RmxhZ3MgY29uc3QpOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3Jr
bGV0R2xvYmFsU2NvcGUuaWRsOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlLmlkbC4KKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0U2Ny
aXB0Q29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlw
dENvbnRyb2xsZXI6OldvcmtsZXRTY3JpcHRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjp+V29ya2xldFNjcmlwdENvbnRyb2xsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmZvcmJpZEV4ZWN1dGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6aXNFeGVjdXRpb25G
b3JiaWRkZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xs
ZXI6OmRpc2FibGVFdmFsKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRTY3JpcHRDb250cm9s
bGVyOjpkaXNhYmxlV2ViQXNzZW1ibHkpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlw
dENvbnRyb2xsZXI6OmluaXRTY3JpcHRXaXRoU3ViY2xhc3MpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtsZXRTY3JpcHRDb250cm9sbGVyOjpzZXRFeGNlcHRpb24pOgorICAgICAgICAqIHdvcmtsZXRz
L1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V29y
a2xldFNjcmlwdENvbnRyb2xsZXI6OndvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OnZtKToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0SWZOZWVkZWQpOgorCiAyMDE4
LTEwLTI2ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjM3NDU4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRl
eCAxMjliNmM1NDkzMmY5ZTRlODg0NjZkY2Y5MThjYmQ2ZTE3NDY0MmQ1Li43MzE2OTdkNjBjN2M1
YTgwOTI5MzdjNGRlYWUyN2EzMDVmN2VjZjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTQz
LDYgKzE0Myw3IEBAIHNldChXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJD
T1JFX0RJUn0vd29ya2Vycy9zZXJ2aWNlIgogICAgICIke1dFQkNPUkVfRElSfS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dCIKICAgICAiJHtXRUJDT1JFX0RJUn0vd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ciIKKyAgICAiJHtXRUJDT1JFX0RJUn0vd29ya2xldHMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3ht
bCIKICAgICAiJHtXRUJDT1JFX0RJUn0veG1sL3BhcnNlciIKICAgICAiJHtERVJJVkVEX1NPVVJD
RVNfV0VCQ09SRV9ESVJ9IgpAQCAtNTM3LDcgKzUzOCw2IEBAIHNldChXZWJDb3JlX05PTl9TVkdf
SURMX0ZJTEVTCiAgICAgY3NzL0NTU01lZGlhUnVsZS5pZGwKICAgICBjc3MvQ1NTTmFtZXNwYWNl
UnVsZS5pZGwKICAgICBjc3MvQ1NTUGFpbnRDYWxsYmFjay5pZGwKLSAgICBjc3MvQ1NTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUuaWRsCiAgICAgY3NzL0NTU1BhZ2VSdWxlLmlkbAogICAgIGNzcy9D
U1NSdWxlLmlkbAogICAgIGNzcy9DU1NSdWxlTGlzdC5pZGwKQEAgLTkwNiw2ICs5MDYsMTAgQEAg
c2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICB3b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlclVwZGF0ZVZpYUNhY2hlLmlkbAogICAgIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyV2luZG93Q2xpZW50LmlkbAogCisgICAgd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUuaWRsCisgICAgd29ya2xldHMvV29ya2xldC5pZGwKKyAgICB3b3JrbGV0cy9Xb3JrbGV0R2xv
YmFsU2NvcGUuaWRsCisKICAgICB4bWwvRE9NUGFyc2VyLmlkbAogICAgIHhtbC9YTUxIdHRwUmVx
dWVzdC5pZGwKICAgICB4bWwvWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5pZGwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDY2MzkwZDQ5ZmIzOWQ2YzRiMmM0NzYyNjA1ZDI2MDVm
YjJiNWIxMGQuLmVmYmU5MzU0NzMxMmExN2Q2MTU2ZjVhZDU5OTFhYjBiNWYxN2E1NjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtODYsNiArODYsNyBAQCBWUEFUSCA9IFwKICAg
ICAkKFdlYkNvcmUpL3dlYnNvY2tldHMgXAogICAgICQoV2ViQ29yZSkvd29ya2VycyBcCiAgICAg
JChXZWJDb3JlKS93b3JrZXJzL3NlcnZpY2UgXAorICAgICQoV2ViQ29yZSkvd29ya2xldHMgXAog
ICAgICQoV2ViQ29yZSkveG1sIFwKICMKIApAQCAtNDUyLDcgKzQ1Myw2IEBAIEpTX0JJTkRJTkdf
SURMUyA9IFwKICAgICAkKFdlYkNvcmUpL2Nzcy9DU1NOYW1lc3BhY2VSdWxlLmlkbCBcCiAgICAg
JChXZWJDb3JlKS9jc3MvQ1NTUGFnZVJ1bGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9DU1NQ
YWludENhbGxiYWNrLmlkbCBcCi0gICAgJChXZWJDb3JlKS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9DU1NSdWxlLmlkbCBcCiAgICAgJChX
ZWJDb3JlKS9jc3MvQ1NTUnVsZUxpc3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9DU1NTdHls
ZURlY2xhcmF0aW9uLmlkbCBcCkBAIC0xMDI0LDYgKzEwMjQsOSBAQCBKU19CSU5ESU5HX0lETFMg
PSBcCiAgICAgJChXZWJDb3JlKS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbi5pZGwgXAogICAgICQoV2ViQ29yZSkvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJV
cGRhdGVWaWFDYWNoZS5pZGwgXAogICAgICQoV2ViQ29yZSkvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJXaW5kb3dDbGllbnQuaWRsIFwKKwkkKFdlYkNvcmUpL3dvcmtsZXRzL1BhaW50V29y
a2xldEdsb2JhbFNjb3BlLmlkbCBcCisgICAgJChXZWJDb3JlKS93b3JrbGV0cy9Xb3JrbGV0Lmlk
bCBcCisJJChXZWJDb3JlKS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaWRsIFwKICAgICAk
KFdlYkNvcmUpL3htbC9ET01QYXJzZXIuaWRsIFwKICAgICAkKFdlYkNvcmUpL3htbC9YTUxIdHRw
UmVxdWVzdC5pZGwgXAogICAgICQoV2ViQ29yZSkveG1sL1hNTEh0dHBSZXF1ZXN0RXZlbnRUYXJn
ZXQuaWRsIFwKQEAgLTExNTYsNiArMTE1OSw3IEBAIGFsbCA6IFwKICAgICAkKFNVUFBMRU1FTlRB
TF9ERVBFTkRFTkNZX0ZJTEUpIFwKICAgICAkKFdJTkRPV19DT05TVFJVQ1RPUlNfRklMRSkgXAog
ICAgICQoV09SS0VSR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUpIFwKKwkkKFdPUktMRVRH
TE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSkgXAogICAgICQoSlNfRE9NX0hFQURFUlMpIFwK
ICAgICAkKFdFQl9ET01fSEVBREVSUykgXAogICAgIFwKQEAgLTE1MDQsNiArMTUwOCw3IEBAIElE
TF9JTkNMVURFUyA9IFwKICAgICAkKFdlYkNvcmUpL3N2ZyBcCiAgICAgJChXZWJDb3JlKS90ZXN0
aW5nIFwKICAgICAkKFdlYkNvcmUpL3dvcmtlcnMgXAorICAgICQoV2ViQ29yZSkvd29ya2xldHMg
XAogICAgICQoV2ViQ29yZSkveG1sCiAKIElETF9DT01NT05fQVJHUyA9ICQoSURMX0lOQ0xVREVT
OiU9LS1pbmNsdWRlICUpIC0td3JpdGUtZGVwZW5kZW5jaWVzIC0tb3V0cHV0RGlyIC4KQEAgLTE1
MTYsNiArMTUyMSw4IEBAIFdJTkRPV19DT05TVFJVQ1RPUlNfRklMRSA9IC4vRE9NV2luZG93Q29u
c3RydWN0b3JzLmlkbAogV09SS0VSR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUgPSAuL1dv
cmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbAogREVESUNBVEVEV09SS0VSR0xPQkFMU0NP
UEVfQ09OU1RSVUNUT1JTX0ZJTEUgPSAuL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3JzLmlkbAogU0VSVklDRVdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFID0g
Li9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCitXT1JLTEVUR0xPQkFM
U0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUgPSAuL1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9y
cy5pZGwKK1BBSU5UV09SS0xFVEdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFID0gLi9QYWlu
dFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKIElETF9GSUxFU19UTVAgPSAuL2lk
bF9maWxlcy50bXAKIElETF9BVFRSSUJVVEVTX0ZJTEUgPSAkKFdlYkNvcmUpL2JpbmRpbmdzL3Nj
cmlwdHMvSURMQXR0cmlidXRlcy5qc29uCiAKQEAgLTE1MjgsMTAgKzE1MzUsMTAgQEAgZW5kZWYK
IAogJChTVVBQTEVNRU5UQUxfTUFLRUZJTEVfREVQUykgOiAkKFBSRVBST0NFU1NfSURMU19TQ1JJ
UFRTKSAkKEpTX0JJTkRJTkdfSURMUykgJChQTEFURk9STV9GRUFUVVJFX0RFRklORVMpIERlcml2
ZWRTb3VyY2VzLm1ha2UKIAkkKGZvcmVhY2ggZiwkKEpTX0JJTkRJTkdfSURMUyksQGVjaG8gJChm
KT4+JChJRExfRklMRVNfVE1QKSQoTkwpKQotCSQoUEVSTCkgJChXZWJDb3JlKS9iaW5kaW5ncy9z
Y3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbCAtLWRlZmluZXMgIiQoRkVBVFVSRV9BTkRfUExBVEZP
Uk1fREVGSU5FUykgJChBRERJVElPTkFMX0lETF9ERUZJTkVTKSBMQU5HVUFHRV9KQVZBU0NSSVBU
IiAtLWlkbEZpbGVzTGlzdCAkKElETF9GSUxFU19UTVApIC0tc3VwcGxlbWVudGFsRGVwZW5kZW5j
eUZpbGUgJChTVVBQTEVNRU5UQUxfREVQRU5ERU5DWV9GSUxFKSAtLXdpbmRvd0NvbnN0cnVjdG9y
c0ZpbGUgJChXSU5ET1dfQ09OU1RSVUNUT1JTX0ZJTEUpIC0td29ya2VyR2xvYmFsU2NvcGVDb25z
dHJ1Y3RvcnNGaWxlICQoV09SS0VSR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUpIC0tZGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlICQoREVESUNBVEVEV09SS0VS
R0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUpIC0tc2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
Q29uc3RydWN0b3JzRmlsZSAkKFNFUlZJQ0VXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNf
RklMRSkgLS1zdXBwbGVtZW50YWxNYWtlZmlsZURlcHMgJEAKKwkkKFBFUkwpICQoV2ViQ29yZSkv
YmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGwgLS1kZWZpbmVzICIkKEZFQVRVUkVf
QU5EX1BMQVRGT1JNX0RFRklORVMpICQoQURESVRJT05BTF9JRExfREVGSU5FUykgTEFOR1VBR0Vf
SkFWQVNDUklQVCIgLS1pZGxGaWxlc0xpc3QgJChJRExfRklMRVNfVE1QKSAtLXN1cHBsZW1lbnRh
bERlcGVuZGVuY3lGaWxlICQoU1VQUExFTUVOVEFMX0RFUEVOREVOQ1lfRklMRSkgLS13aW5kb3dD
b25zdHJ1Y3RvcnNGaWxlICQoV0lORE9XX0NPTlNUUlVDVE9SU19GSUxFKSAtLXdvcmtlckdsb2Jh
bFNjb3BlQ29uc3RydWN0b3JzRmlsZSAkKFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19G
SUxFKSAtLWRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSAkKERFRElD
QVRFRFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFKSAtLXNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgJChTRVJWSUNFV09SS0VSR0xPQkFMU0NPUEVfQ09O
U1RSVUNUT1JTX0ZJTEUpIC0td29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSAkKFdP
UktMRVRHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSkgLS1wYWludFdvcmtsZXRHbG9iYWxT
Y29wZUNvbnN0cnVjdG9yc0ZpbGUgJChQQUlOVFdPUktMRVRHTE9CQUxTQ09QRV9DT05TVFJVQ1RP
UlNfRklMRSkgLS1zdXBwbGVtZW50YWxNYWtlZmlsZURlcHMgJEAKIAkkKERFTEVURSkgJChJRExf
RklMRVNfVE1QKQogCi1KUyUuY3BwIEpTJS5oIDogJS5pZGwgJChKU19CSU5ESU5HU19TQ1JJUFRT
KSAkKElETF9BVFRSSUJVVEVTX0ZJTEUpICQoV0lORE9XX0NPTlNUUlVDVE9SU19GSUxFKSAkKFdP
UktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFKSAkKFBMQVRGT1JNX0ZFQVRVUkVfREVG
SU5FUykKK0pTJS5jcHAgSlMlLmggOiAlLmlkbCAkKEpTX0JJTkRJTkdTX1NDUklQVFMpICQoSURM
X0FUVFJJQlVURVNfRklMRSkgJChXSU5ET1dfQ09OU1RSVUNUT1JTX0ZJTEUpICQoV09SS0VSR0xP
QkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUpICQoV09SS0xFVEdMT0JBTFNDT1BFX0NPTlNUUlVD
VE9SU19GSUxFKSAkKFBMQVRGT1JNX0ZFQVRVUkVfREVGSU5FUykKIAkkKFBFUkwpICQoV2ViQ29y
ZSkvYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbCAkKElETF9DT01NT05fQVJH
UykgLS1kZWZpbmVzICIkKEZFQVRVUkVfQU5EX1BMQVRGT1JNX0RFRklORVMpICQoQURESVRJT05B
TF9JRExfREVGSU5FUykgTEFOR1VBR0VfSkFWQVNDUklQVCIgLS1nZW5lcmF0b3IgSlMgLS1pZGxB
dHRyaWJ1dGVzRmlsZSAkKElETF9BVFRSSUJVVEVTX0ZJTEUpIC0tc3VwcGxlbWVudGFsRGVwZW5k
ZW5jeUZpbGUgJChTVVBQTEVNRU5UQUxfREVQRU5ERU5DWV9GSUxFKSAkPAogCiAtaW5jbHVkZSAk
KFNVUFBMRU1FTlRBTF9NQUtFRklMRV9ERVBTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBhZWI2NjJlYjJm
MDBlMGMyYmRjZWI1YzdhYTFmZTU0MGIwYzFiYjdjLi4xMWI2YzAyNGFkYTBkMWI1MDgwMjBjNTQ4
ODJiY2MyNDhhZDY1MTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMzg1LDcgKzM4NSw3IEBAIGJpbmRp
bmdzL2pzL0pTRE9NQ29udmVydFN0cmluZ3MuY3BwCiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRX
ZWJHTC5jcHAKIGJpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuY3BwCiBiaW5kaW5ncy9qcy9KU0Rl
cHJlY2F0ZWRDU1NPTVZhbHVlQ3VzdG9tLmNwcAotYmluZGluZ3MvanMvSlNDU1NQYWludFdvcmts
ZXRHbG9iYWxTY29wZUN1c3RvbS5jcHAKK2JpbmRpbmdzL2pzL0pTUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGVDdXN0b20uY3BwCiBiaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAKIGJpbmRpbmdz
L2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcAogYmluZGluZ3MvanMvSlND
dXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcApAQCAtNDc4LDYgKzQ3OCw3IEBAIGJpbmRpbmdzL2pz
L0pTV2luZG93UHJveHkuY3BwCiBiaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5j
cHAKIGJpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwCiBiaW5kaW5ncy9q
cy9KU1dvcmtlck5hdmlnYXRvckN1c3RvbS5jcHAKK2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2Jh
bFNjb3BlQmFzZS5jcHAKIGJpbmRpbmdzL2pzL0pTWE1MRG9jdW1lbnRDdXN0b20uY3BwCiBiaW5k
aW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAogYmluZGluZ3MvanMvSlNYUGF0aE5T
UmVzb2x2ZXJDdXN0b20uY3BwCkBAIC02MTMsNyArNjE0LDYgQEAgY3NzL0NTU05hbWVkSW1hZ2VW
YWx1ZS5jcHAKIGNzcy9DU1NOYW1lc3BhY2VSdWxlLmNwcAogY3NzL0NTU1BhZ2VSdWxlLmNwcAog
Y3NzL0NTU1BhaW50SW1hZ2VWYWx1ZS5jcHAKLWNzcy9DU1NQYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5jcHAKIGNzcy9DU1NQZW5kaW5nU3Vic3RpdHV0aW9uVmFsdWUuY3BwCiBjc3MvQ1NTUHJpbWl0
aXZlVmFsdWUuY3BwCiBjc3MvQ1NTUHJvcGVydHkuY3BwCkBAIC0yMzcxLDYgKzIzNzEsMTIgQEAg
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKIHdvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAogd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKIAord29ya2xldHMvV29ya2xldC5jcHAK
K3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcAord29ya2xldHMvV29ya2xldEdsb2Jh
bFNjb3BlLmNwcAord29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCit3b3JrbGV0
cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKKwogeG1sL0RPTVBhcnNlci5jcHAKIHhtbC9O
YXRpdmVYUGF0aE5TUmVzb2x2ZXIuY3BwCiB4bWwvWE1MRXJyb3JzLmNwcApAQCAtMjQ4MCw3ICsy
NDg2LDkgQEAgSlNDU1NLZXlmcmFtZXNSdWxlLmNwcAogSlNDU1NNZWRpYVJ1bGUuY3BwCiBKU0NT
U05hbWVzcGFjZVJ1bGUuY3BwCiBKU0NTU1BhaW50Q2FsbGJhY2suY3BwCi1KU0NTU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlLmNwcAorSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKK0pTV29y
a2xldC5jcHAKK0pTV29ya2xldEdsb2JhbFNjb3BlLmNwcAogSlNDU1NQYWdlUnVsZS5jcHAKIEpT
Q1NTUnVsZS5jcHAKIEpTQ1NTUnVsZUxpc3QuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmMyZDcxZWZjNzcxNTdkZGUzZDM0
NGYyYWZlNDc5NjczNjE0NmE4My4uYWJiMDQyZThjNDE4MzA5ZGNkZjhhZGIxM2YxODc4Yzg5Yzdi
YTQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTM1MiwxNCArMTM1MiwxOSBAQAogCQk0QjM0ODA5NDBFRUY1MEQ0MDBBQzFC
NDEgLyogSW1hZ2VTb3VyY2VDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEIzNDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0cuaCAq
LzsgfTsKIAkJNEI1QkREOUIyMTY1OEExNTAwREQ0MjYyIC8qIENTU1BhaW50Q2FsbGJhY2suaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCNUJERDlBMjE2
NThBMTUwMERENDI2MiAvKiBDU1NQYWludENhbGxiYWNrLmggKi87IH07CiAJCTRCNkI1Q0JEMjE2
NDBFRkYwMDYwMzgxNyAvKiBET01DU1NQYWludFdvcmtsZXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCNkI1Q0I4MjE2M0VDMDcwMDYwMzgxNyAvKiBE
T01DU1NQYWludFdvcmtsZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwotCQk0QjZCNUNDMDIxNjQzODY0MDA2MDM4MTcgLyogQ1NTUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDRCNkI1Q0JGMjE2NDM4NjQwMDYwMzgxNyAvKiBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5oICovOyB9OworCQk0QjZCNUNDMDIxNjQzODY0MDA2MDM4MTcgLyogUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRCNkI1Q0JGMjE2NDM4NjQwMDYwMzgxNyAvKiBQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oICov
OyB9OwogCQk0QjZFODc2OTIxNzZENjkyMDA0MjBFNUUgLyogQ1NTUGFpbnRJbWFnZVZhbHVlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjZFODc2ODIx
NzZENjkyMDA0MjBFNUUgLyogQ1NTUGFpbnRJbWFnZVZhbHVlLmggKi87IH07CiAJCTRCNkZBNkY0
MEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCNkZBNkYyMEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFy
dFJlcGxhY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0QjdBRTQ5MzIxNzdCNTZGMDBDNTk5NTkgLyogQ3VzdG9tUGFpbnRJbWFnZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI3QUU0OTIyMTc3QjU2
RjAwQzU5OTU5IC8qIEN1c3RvbVBhaW50SW1hZ2UuaCAqLzsgfTsKKwkJNEI3RjlDNTIyMTgzQjVF
NTAwMUNFQkEwIC8qIFdvcmtsZXRDb25zb2xlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjdGOUM1MTIxODNCNUU1MDAxQ0VCQTAgLyogV29y
a2xldENvbnNvbGVDbGllbnQuaCAqLzsgfTsKIAkJNEJBRTk1QjEwQjJGQTlDRTAwQUVEOEEwIC8q
IEVkaXRvckRlbGV0ZUFjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEJBRTk1QjAwQjJGQTlDRTAwQUVEOEEwIC8qIEVkaXRvckRlbGV0ZUFjdGlv
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRC
REEzRkZFMjE1MUI2RjUwMEZENjYwNCAvKiBET01DU1NDdXN0b21Qcm9wZXJ0eURlc2NyaXB0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCREEzRkY4
MjE1MUI2RjIwMEZENjYwNCAvKiBET01DU1NDdXN0b21Qcm9wZXJ0eURlc2NyaXB0b3IuaCAqLzsg
fTsKIAkJNEJEQTNGRkYyMTUxQjZGNTAwRkQ2NjA0IC8qIERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJv
cGVydHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRC
REEzRkY5MjE1MUI2RjMwMEZENjYwNCAvKiBET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5Lmgg
Ki87IH07CiAJCTRCREE0MDAxMjE1MUI2RjUwMEZENjYwNCAvKiBDU1NSZWdpc3RlcmVkQ3VzdG9t
UHJvcGVydHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRCREEzRkZCMjE1MUI2RjQwMEZENjYwNCAvKiBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0QkRF
QTMyMDIxN0VDNTVGMDA1MkRGQ0QgLyogV29ya2xldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJERUEzMUYyMTdFQzU1RjAwNTJERkNEIC8qIFdvcmts
ZXQuaCAqLzsgfTsKKwkJNEJERUEzMjUyMTdGRTJFNDAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxT
Y29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJE
RUEzMjQyMTdGRTJFNDAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxTY29wZS5oICovOyB9OworCQk0
QkRFQTMyODIxODAwM0Y3MDA1MkRGQ0QgLyogV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCREVBMzI3MjE4MDAz
RjcwMDUyREZDRCAvKiBXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oICovOyB9OworCQk0QkRFQTMy
QzIxODAzM0VCMDA1MkRGQ0QgLyogSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QkRFQTMyQjIxODAzM0VCMDA1
MkRGQ0QgLyogSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmggKi87IH07CiAJCTREM0IwMEFCMjE1
RDY5QTcwMDc2Qjk4MyAvKiBNZWRpYVJlY29yZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RDNCMDBBOTIxNUQ2OUE3MDA3NkI5ODMgLyogTWVkaWFS
ZWNvcmRlci5oICovOyB9OwogCQk0RDNCMDBBRjIxNUQ2QTY5MDA3NkI5ODMgLyogQmxvYkV2ZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RDNCMDBB
RDIxNUQ2QTY5MDA3NkI5ODMgLyogQmxvYkV2ZW50LmggKi87IH07CiAJCTREQjcxMzBEMjE2RUNC
NEQwMDk2QTRERCAvKiBNZWRpYVJlY29yZGVyRXJyb3JFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNERCNzEzMEMyMTZFQzJCRDAwOTZBNEREIC8q
IE1lZGlhUmVjb3JkZXJFcnJvckV2ZW50LmggKi87IH07CkBAIC03OTAxLDE2ICs3OTA2LDE4IEBA
CiAJCTRCNkI1Q0I2MjE2M0RDMUEwMDYwMzgxNyAvKiBET01DU1NQYWludFdvcmtsZXQuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IERPTUNTU1BhaW50V29ya2xldC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTRCNkI1Q0I4MjE2M0VDMDcwMDYwMzgxNyAvKiBET01DU1NQYWludFdvcmtsZXQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRE9NQ1NTUGFpbnRXb3JrbGV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTRCNkI1Q0I5MjE2M0VEMzIwMDYwMzgxNyAvKiBET01DU1NQYWludFdvcmtsZXQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRE9NQ1NTUGFpbnRXb3JrbGV0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNEI2QjVDQkUyMTY0MzRGQjAwNjAzODE3IC8qIEpTQ1NTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDU1NQYWludFdv
cmtsZXRHbG9iYWxTY29wZUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTRCNkI1Q0JGMjE2NDM4NjQwMDYwMzgxNyAvKiBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk0QjZCNUNDMTIxNjQzOUNGMDA2MDM4MTcgLyogQ1NTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0QjZCNUNDMzIx
NjQzQThFMDA2MDM4MTcgLyogQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENT
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNEI2QjVDQkUyMTY0MzRGQjAwNjAzODE3IC8qIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZUN1
c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRCNkI1Q0JGMjE2NDM4NjQw
MDYwMzgxNyAvKiBQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QjZC
NUNDMTIxNjQzOUNGMDA2MDM4MTcgLyogUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0QjZCNUNDMzIxNjQzQThFMDA2MDM4MTcgLyogUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI2RTg3NjgyMTc2RDY5MjAwNDIwRTVFIC8qIENTU1Bh
aW50SW1hZ2VWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NQYWludEltYWdlVmFsdWUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI2RTg3NkIyMTc2RDhBMTAwNDIwRTVFIC8qIENT
U1BhaW50SW1hZ2VWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NQYWludEltYWdlVmFs
dWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QjZGQTZGMjBDMzlFNDhDMDAw
ODcwMTEgLyogU21hcnRSZXBsYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNtYXJ0UmVwbGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QjZGQTZGNjBD
MzlFNEExMDAwODcwMTEgLyogU21hcnRSZXBsYWNlQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU21hcnRSZXBsYWNlQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0QjdBRTQ5MjIxNzdCNTZGMDBDNTk5NTkgLyogQ3VzdG9tUGFpbnRJbWFnZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDdXN0b21QYWludEltYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTRCN0FFNDk1MjE3N0I2M0UwMEM1OTk1OSAvKiBDdXN0b21QYWludEltYWdlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEN1c3RvbVBhaW50SW1hZ2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0QjdGOUM1MTIxODNCNUU1MDAxQ0VCQTAgLyogV29ya2xldENvbnNv
bGVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2xldENvbnNvbGVDbGllbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEI3RjlDNTQyMTgzQjYzNDAwMUNFQkEwIC8qIFdvcmts
ZXRDb25zb2xlQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtsZXRDb25zb2xlQ2xp
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEJBRTk1QjAwQjJGQTlDRTAw
QUVEOEEwIC8qIEVkaXRvckRlbGV0ZUFjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBFZGl0b3JEZWxldGVBY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNEJEQTNGRjUyMTUxQjZGMDAwRkQ2NjA0IC8qIERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVy
dHkuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVy
dHkuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QkRBM0ZGNzIxNTFCNkYxMDBG
RDY2MDQgLyogRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc5MTgsNiArNzkyNSwxNiBAQAogCQk0QkRB
M0ZGOTIxNTFCNkYzMDBGRDY2MDQgLyogRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01DU1NSZWdpc3RlckN1c3RvbVByb3Bl
cnR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCREEzRkZBMjE1MUI2RjMwMEZE
NjYwNCAvKiBET01DU1NDdXN0b21Qcm9wZXJ0eURlc2NyaXB0b3IuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IERPTUNTU0N1c3RvbVByb3BlcnR5RGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTRCREEzRkZCMjE1MUI2RjQwMEZENjYwNCAvKiBDU1NSZWdpc3Rl
cmVkQ3VzdG9tUHJvcGVydHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NT
UmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTRCREVBMzFDMjE3RUJDRjUwMDUyREZDRCAvKiBXb3JrbGV0LmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXb3JrbGV0Lmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEJERUEzMUYyMTdFQzU1RjAwNTJERkNE
IC8qIFdvcmtsZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2xldC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0QkRFQTMyMzIxN0VDOTZBMDA1MkRGQ0QgLyogV29ya2xldC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXb3JrbGV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNEJERUEzMjQyMTdGRTJFNDAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxTY29wZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXb3JrbGV0R2xvYmFsU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNEJERUEzMjYyMTdGRTJGQTAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxTY29wZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrbGV0R2xvYmFsU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0QkRFQTMyNzIxODAwM0Y3MDA1MkRGQ0QgLyogV29ya2xldFNjcmlw
dENvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEJERUEzMjkyMTgwMDQwQzAwNTJERkNEIC8q
IFdvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtsZXRT
Y3JpcHRDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEJERUEz
MkEyMTgwMTA3MjAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxTY29wZS5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV29ya2xl
dEdsb2JhbFNjb3BlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEJERUEzMkIy
MTgwMzNFQjAwNTJERkNEIC8qIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNEJERUEzMkQyMTgwMzQwNTAwNTJERkNEIC8qIEpTV29ya2xldEdsb2JhbFNjb3BlQmFz
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RDNCMDBBNDIxNUQ2MTA0MDA3NkI5ODMgLyog
TWVkaWFSZWNvcmRlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTWVkaWFSZWNvcmRlci5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTREM0IwMEE2MjE1RDY0NUIwMDc2Qjk4
MyAvKiBCbG9iRXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEJsb2JFdmVudC5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTREM0IwMEE4MjE1RDY5QTYwMDc2Qjk4MyAv
KiBNZWRpYVJlY29yZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE1lZGlhUmVjb3JkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU4MDEs
NiArMTU4MTgsNyBAQAogCQkJCUIyMjI3N0NBMEQwMEJGMUUwMDcxQjc4MiAvKiBzdmcgKi8sCiAJ
CQkJNDE3REE0Q0QxMzczNDIwNDAwN0M1N0ZCIC8qIHRlc3RpbmcgKi8sCiAJCQkJMkU0MzQ2MzEw
RjU0NkE2ODAwQjBGMUJBIC8qIHdvcmtlcnMgKi8sCisJCQkJNEJERUEzMTgyMTdFQkI4ODAwNTJE
RkNEIC8qIHdvcmtsZXRzICovLAogCQkJCUUxRjA0MjQzMDk4MzkzODkwMDY2OTRFQSAvKiB4bWwg
Ki8sCiAJCQkJNjU2NTgwRUMwOUQxMkIyMDAwMEU2MUQ3IC8qIERlcml2ZWQgU291cmNlcyAqLywK
IAkJCQkwODlDMTY2NUZFODQxMTU4QzAyQUFDMDcgLyogUmVzb3VyY2VzICovLApAQCAtMTgwMzYs
NiArMTgwNTQsMjYgQEAKIAkJCXBhdGggPSBhbmltYXRpb247CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwogCQl9OworCQk0QkRFQTMxODIxN0VCQjg4MDA1MkRGQ0QgLyogd29ya2xldHMgKi8g
PSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTRCNkI1Q0MxMjE2
NDM5Q0YwMDYwMzgxNyAvKiBQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAgKi8sCisJCQkJNEI2
QjVDQkYyMTY0Mzg2NDAwNjAzODE3IC8qIFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmggKi8sCisJ
CQkJNEI2QjVDQzMyMTY0M0E4RTAwNjAzODE3IC8qIFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmlk
bCAqLywKKwkJCQk0QkRFQTMyMzIxN0VDOTZBMDA1MkRGQ0QgLyogV29ya2xldC5jcHAgKi8sCisJ
CQkJNEJERUEzMUYyMTdFQzU1RjAwNTJERkNEIC8qIFdvcmtsZXQuaCAqLywKKwkJCQk0QkRFQTMx
QzIxN0VCQ0Y1MDA1MkRGQ0QgLyogV29ya2xldC5pZGwgKi8sCisJCQkJNEI3RjlDNTQyMTgzQjYz
NDAwMUNFQkEwIC8qIFdvcmtsZXRDb25zb2xlQ2xpZW50LmNwcCAqLywKKwkJCQk0QjdGOUM1MTIx
ODNCNUU1MDAxQ0VCQTAgLyogV29ya2xldENvbnNvbGVDbGllbnQuaCAqLywKKwkJCQk0QkRFQTMy
NjIxN0ZFMkZBMDA1MkRGQ0QgLyogV29ya2xldEdsb2JhbFNjb3BlLmNwcCAqLywKKwkJCQk0QkRF
QTMyNDIxN0ZFMkU0MDA1MkRGQ0QgLyogV29ya2xldEdsb2JhbFNjb3BlLmggKi8sCisJCQkJNEJE
RUEzMkEyMTgwMTA3MjAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxTY29wZS5pZGwgKi8sCisJCQkJ
NEJERUEzMjkyMTgwMDQwQzAwNTJERkNEIC8qIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcCAq
LywKKwkJCQk0QkRFQTMyNzIxODAwM0Y3MDA1MkRGQ0QgLyogV29ya2xldFNjcmlwdENvbnRyb2xs
ZXIuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gd29ya2xldHM7CisJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOworCQl9OwogCQk0RDNCMDBBMDIxNUQ1QzBGMDA3NkI5ODMgLyogbWVkaWFyZWNvcmRl
ciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yNDQwOSw2
ICsyNDQ0Nyw4IEBACiAJCQkJQkNCRkI1M0IwRENEMjlDRjAwMTlCM0U1IC8qIEpTV2luZG93UHJv
eHkuaCAqLywKIAkJCQlFMUMzNkQzMjBFQjBBMDk0MDA3NDEwQkMgLyogSlNXb3JrZXJHbG9iYWxT
Y29wZUJhc2UuY3BwICovLAogCQkJCUUxQzM2RDMzMEVCMEEwOTQwMDc0MTBCQyAvKiBKU1dvcmtl
ckdsb2JhbFNjb3BlQmFzZS5oICovLAorCQkJCTRCREVBMzJEMjE4MDM0MDUwMDUyREZDRCAvKiBK
U1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwICovLAorCQkJCTRCREVBMzJCMjE4MDMzRUIwMDUy
REZDRCAvKiBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuaCAqLywKIAkJCQk3MDlBMDFGRDFFM0Qw
QkNDMDA2QjBENEMgLyogTW9kdWxlRmV0Y2hGYWlsdXJlS2luZC5oICovLAogCQkJCTQxQjQ1OUVE
MUY1NUVCQzcwMDAwRjZGRCAvKiBSZWFkYWJsZVN0cmVhbS5jcHAgKi8sCiAJCQkJNDFCNDU5REEx
RjRDQURCOTAwMDBGNkZEIC8qIFJlYWRhYmxlU3RyZWFtLmggKi8sCkBAIC0yNDQ0OSwxMiArMjQ0
ODksMTIgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTdDRDM0NDFCMUYzMkRFMzAwMDBEQ0Q0OSAv
KiBDYWNoZWQgQXR0cmlidXRlcyB3LyBJbnZhbGlkYXRpb24gKi8sCiAJCQkJN0MzRDhFRTQxRTA4
QkFCRTAwMjNCMDg0IC8qIEdDIC8gV3JhcHBpbmcgT25seSAqLywKLQkJCQk0QjZCNUNCRTIxNjQz
NEZCMDA2MDM4MTcgLyogSlNDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZUN1c3RvbS5jcHAgKi8s
CiAJCQkJOUJDNUY5REYxRDVBQUY2QTAwMkI3NDlEIC8qIEpTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5
Q3VzdG9tLmNwcCAqLywKIAkJCQlCQ0Q5QzI1RTBDMTdBQTY3MDA1QzkwQTIgLyogSlNET01XaW5k
b3dDdXN0b20uY3BwICovLAogCQkJCTY1MkZCQkJCMERFMjdDQjYwMDAxRDM4NiAvKiBKU0RPTVdp
bmRvd0N1c3RvbS5oICovLAogCQkJCUJDNTgyM0Y0MEMwQTk4REYwMDUzRjFCNSAvKiBKU0hUTUxF
bGVtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlCQ0UxQzQzRjBEOTgzMEY0MDAzQjAyRjIgLyogSlNM
b2NhdGlvbkN1c3RvbS5jcHAgKi8sCisJCQkJNEI2QjVDQkUyMTY0MzRGQjAwNjAzODE3IC8qIEpT
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwICovLAogCQkJCTQxOEMzOTVEMUM4RjBB
QUIwMDUxQzhBMyAvKiBKU1JlYWRhYmxlU3RyZWFtU291cmNlQ3VzdG9tLmNwcCAqLywKIAkJCQk0
NkJDQkJCRTIwODUwMDVCMDA3MTA2MzggLyogSlNSZW1vdGVET01XaW5kb3dDdXN0b20uY3BwICov
LAogCQkJKTsKQEAgLTI2MDUyLDkgKzI2MDkyLDYgQEAKIAkJCQk0QjVCREQ5OTIxNjU4OEU1MDBE
RDQyNjIgLyogQ1NTUGFpbnRDYWxsYmFjay5pZGwgKi8sCiAJCQkJNEI2RTg3NkIyMTc2RDhBMTAw
NDIwRTVFIC8qIENTU1BhaW50SW1hZ2VWYWx1ZS5jcHAgKi8sCiAJCQkJNEI2RTg3NjgyMTc2RDY5
MjAwNDIwRTVFIC8qIENTU1BhaW50SW1hZ2VWYWx1ZS5oICovLAotCQkJCTRCNkI1Q0MxMjE2NDM5
Q0YwMDYwMzgxNyAvKiBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAgKi8sCi0JCQkJNEI2
QjVDQkYyMTY0Mzg2NDAwNjAzODE3IC8qIENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmggKi8s
Ci0JCQkJNEI2QjVDQzMyMTY0M0E4RTAwNjAzODE3IC8qIENTU1BhaW50V29ya2xldEdsb2JhbFNj
b3BlLmlkbCAqLywKIAkJCQk5NDE4Mjc4QzFEOENBRTk1MDA0OTI3NjQgLyogQ1NTUGVuZGluZ1N1
YnN0aXR1dGlvblZhbHVlLmNwcCAqLywKIAkJCQk5NDE4Mjc4RDFEOENBRTk1MDA0OTI3NjQgLyog
Q1NTUGVuZGluZ1N1YnN0aXR1dGlvblZhbHVlLmggKi8sCiAJCQkJQTgwRTZDREIwQTE5ODlDQTAw
N0ZCOEM1IC8qIENTU1ByaW1pdGl2ZVZhbHVlLmNwcCAqLywKQEAgLTI4MDU1LDcgKzI4MDkyLDYg
QEAKIAkJCQlBODBFNkQwMDBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTUGFnZVJ1bGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTRCNUJERDlCMjE2NThBMTUwMERENDI2MiAvKiBDU1NQYWludENhbGxiYWNr
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0QjZFODc2OTIxNzZENjkyMDA0MjBFNUUgLyogQ1NTUGFp
bnRJbWFnZVZhbHVlLmggaW4gSGVhZGVycyAqLywKLQkJCQk0QjZCNUNDMDIxNjQzODY0MDA2MDM4
MTcgLyogQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk0
NkQzNzJFMUQ2Q0IyOTQwMDc3MDg0RiAvKiBDU1NQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUU0QTc5OTUyMjBFRTRCMTQwMEMxOTU2OCAvKiBDU1NQYXJzZXJDb250ZXh0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5NDlDNzcwMTFENkUxRDk4MDBDMERFNEYgLyogQ1NTUGFyc2VyRmFzdFBhdGhz
LmggaW4gSGVhZGVycyAqLywKQEAgLTI5NzU4LDYgKzI5Nzk0LDcgQEAKIAkJCQlFMUMzNjJFRjBF
QUYyQUE5MDA3NDEwQkMgLyogSlNXb3JrZXJMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTEyNzFBNTgwRUVFQ0RFNDAwRjYxMjEzIC8qIEpTV29ya2VyTmF2aWdhdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MUYxNzUwNjFGMzU4QkY3MDBDNzQ5NTAgLyogSlNXb3JrZXJUeXBlLmggaW4g
SGVhZGVycyAqLywKKwkJCQk0QkRFQTMyQzIxODAzM0VCMDA1MkRGQ0QgLyogSlNXb3JrbGV0R2xv
YmFsU2NvcGVCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzRDOTZERDFBRDQ0ODM1MDAzNjVB
NjAgLyogSlNXcml0YWJsZVN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM1OENCNzAxQzUz
Mjc3NTAwRTBDMkQ4IC8qIEpTWE1MRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMzQ4
QkQ0MERCN0Y4MDQwMDRBQkFCOSAvKiBKU1hNTEh0dHBSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywK
QEAgLTMwMTQ0LDYgKzMwMTgxLDcgQEAKIAkJCQkwODg1MDY3RjExREEwNDVCMDAxODJCOTggLyog
UGFpbnRJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODg1MDY4MDExREEwNDVCMDAxODJCOTgg
LyogUGFpbnRQaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEIxRTEzRUIyMTc5MzdCMzAwNDJD
Rjk4IC8qIFBhaW50UmVuZGVyaW5nQ29udGV4dDJELmggaW4gSGVhZGVycyAqLywKKwkJCQk0QjZC
NUNDMDIxNjQzODY0MDA2MDM4MTcgLyogUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4MEU2Q0ZCMEExOTg5Q0EwMDdGQjhDNSAvKiBQYWlyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRDMxNjBBMzEyQjAyNkY3MDBDMUEzNTkgLyogUGFubmVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRDMxNjAxQTEyQjAyNjc2MDBDMUEzNTkgLyogUGFubmVyTm9kZS5oIGluIEhl
YWRlcnMgKi8sCkBAIC0zMTU2Miw2ICszMTYwMCwxMCBAQAogCQkJCTk3QUFCRDJEMTRGQTA5RDUw
MDc0NTdBRSAvKiBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTU0QTBDNjgxREI4MDdEOTAwMTdBOTBCIC8qIFdvcmtlclRvUGFnZUZyb250ZW5k
Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGMTc0RkUxRjM1ODk5MjAwQzc0OTUwIC8q
IFdvcmtlclR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTRCREVBMzIwMjE3RUM1NUYwMDUyREZD
RCAvKiBXb3JrbGV0LmggaW4gSGVhZGVycyAqLywKKwkJCQk0QjdGOUM1MjIxODNCNUU1MDAxQ0VC
QTAgLyogV29ya2xldENvbnNvbGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTRCREVBMzI1
MjE3RkUyRTQwMDUyREZDRCAvKiBXb3JrbGV0R2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTRCREVBMzI4MjE4MDAzRjcwMDUyREZDRCAvKiBXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMjQwOTlFNjQ5MjAwNTZFNTgxIC8qIFdyYXBDb250
ZW50c0luRHVtbXlTcGFuQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE2RTZGRTkxQkJE
MTJFNTAwMEE2MDUzIC8qIFdyaXRhYmxlU3RyZWFtQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxNkU2RkU4MUJCRDEyREYwMDBBNjA1MyAvKiBXcml0YWJsZVN0cmVhbUludGVybmFsc0J1
aWx0aW5zLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZUN1c3RvbS5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5ZmEzNDVhNWUzOGYzOWYzYzFkZWRjZDUz
YjZmYTM3Mzg1NTEzYjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NQYWludFdvcmtsZXRHbG9iYWxT
Y29wZUN1c3RvbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzMgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJKU0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCi0KLSNpZiBFTkFCTEUo
Q1NTX1BBSU5USU5HX0FQSSkKLQotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiSlND
U1NQYWludENhbGxiYWNrLmgiCi0jaW5jbHVkZSAiSlNET01Db252ZXJ0Q2FsbGJhY2tzLmgiCi0j
aW5jbHVkZSAiSlNET01Db252ZXJ0U2VxdWVuY2VzLmgiCi0jaW5jbHVkZSA8d3RmL1NldEZvclNj
b3BlLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLXN0
YXRpYyBKU1ZhbHVlIHRocm93SW52YWxpZE1vZGlmaWNhdGlvbkVycm9yKEV4ZWNTdGF0ZSYgc3Rh
dGUsIFRocm93U2NvcGUmIHNjb3BlLCBBU0NJSUxpdGVyYWwgbWVzc2FnZSkKLXsKLSAgICBzY29w
ZS5hc3NlcnROb0V4Y2VwdGlvbigpOwotICAgIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUs
IGNyZWF0ZURPTUV4Y2VwdGlvbigmc3RhdGUsIEludmFsaWRNb2RpZmljYXRpb25FcnJvciwgbWVz
c2FnZSkpOwotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCi12b2lkIEpTQ1NTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGU6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKEpTQzo6U2xvdFZpc2l0
b3ImIHZpc2l0b3IpCi17Ci0gICAgZm9yIChhdXRvJiByZWdpc3RlcmVkIDogd3JhcHBlZCgpLnBh
aW50RGVmaW5pdGlvbk1hcCgpLnZhbHVlcygpKQotICAgICAgICByZWdpc3RlcmVkLT5wYWludENh
bGxiYWNrLT52aXNpdEpTRnVuY3Rpb24odmlzaXRvcik7Ci19Ci0KLS8vIGh0dHBzOi8vZHJhZnRz
LmNzcy1ob3VkaW5pLm9yZy9jc3MtcGFpbnQtYXBpLyNyZWdpc3RlcmluZy1jdXN0b20tcGFpbnQK
LUpTVmFsdWUgSlNDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6cmVnaXN0ZXJQYWludChFeGVj
U3RhdGUmIHN0YXRlKQotewotICAgIHVzaW5nIFBhaW50RGVmaW5pdGlvbiA9IENTU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb247Ci0KLSAgICBDU1NQYWludFdvcmtsZXRH
bG9iYWxTY29wZSYgd29ya2xldEdsb2JhbFNjb3BlID0gd3JhcHBlZCgpOwotICAgIFZNJiB2bSA9
IHN0YXRlLnZtKCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwot
Ci0gICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDIpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3IoJnN0YXRlKSk7Ci0KLSAgICBBdG9taWNTdHJpbmcgbmFtZShzdGF0ZS51bmNoZWNr
ZWRBcmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT50b0F0b21pY1N0cmluZygmc3RhdGUpKTsK
LSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwotICAgIEpTVmFsdWUg
Y29uc3RydWN0b3JWYWx1ZSA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpOwotICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7Ci0KLSAgICBpZiAobmFtZS5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCAiVGhlIGZp
cnN0IGFyZ3VtZW50IG11c3Qgbm90IGJlIHRoZSBlbXB0eSBzdHJpbmciX3MpOwotCi0gICAgYXV0
byYgcGFpbnREZWZpbml0aW9uTWFwID0gd29ya2xldEdsb2JhbFNjb3BlLnBhaW50RGVmaW5pdGlv
bk1hcCgpOwotCi0gICAgaWYgKHBhaW50RGVmaW5pdGlvbk1hcC5jb250YWlucyhuYW1lKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93SW52YWxpZE1vZGlmaWNhdGlvbkVycm9yKHN0YXRlLCBzY29wZSwg
IlRoaXMgbmFtZSBoYXMgYWxyZWFkeSBiZWVuIHJlZ2lzdGVyZWQiX3MpOwotCi0gICAgVmVjdG9y
PFN0cmluZz4gaW5wdXRQcm9wZXJ0aWVzOwotCi0gICAgSlNWYWx1ZSBpbnB1dFByb3BlcnRpZXNJ
dGVyYWJsZVZhbHVlID0gY29uc3RydWN0b3JWYWx1ZS5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZ2bSwgImlucHV0UHJvcGVydGllcyIpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwotCi0gICAgaWYgKCFpbnB1dFByb3BlcnRpZXNJdGVyYWJs
ZVZhbHVlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIGlucHV0UHJvcGVydGllcyA9IGNvbnZlcnQ8
SURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj4oc3RhdGUsIGlucHV0UHJvcGVydGllc0l0ZXJhYmxl
VmFsdWUpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7Ci0KLSAg
ICAvLyBGSVhNRTogVmFsaWRhdGUgaW5wdXQgcHJvcGVydGllcyBoZXJlIChzdGVwIDcpLgotCi0g
ICAgVmVjdG9yPFN0cmluZz4gaW5wdXRBcmd1bWVudHM7Ci0KLSAgICBKU1ZhbHVlIGlucHV0QXJn
dW1lbnRzSXRlcmFibGVWYWx1ZSA9IGNvbnN0cnVjdG9yVmFsdWUuZ2V0KCZzdGF0ZSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmdm0sICJpbnB1dEFyZ3VtZW50cyIpKTsKLSAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwotCi0gICAgaWYgKCFpbnB1dEFyZ3VtZW50c0l0
ZXJhYmxlVmFsdWUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgaW5wdXRBcmd1bWVudHMgPSBjb252
ZXJ0PElETFNlcXVlbmNlPElETERPTVN0cmluZz4+KHN0YXRlLCBpbnB1dEFyZ3VtZW50c0l0ZXJh
YmxlVmFsdWUpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7Ci0K
LSAgICAvLyBGSVhNRTogUGFyc2Ugc3ludGF4IGZvciBpbnB1dEFyZ3VtZW50cyBoZXJlIChzdGVw
cyAxMSBhbmQgMTIpLgotCi0gICAgSlNWYWx1ZSBjb250ZXh0T3B0aW9uc1ZhbHVlID0gY29uc3Ry
dWN0b3JWYWx1ZS5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImNvbnRl
eHRPcHRpb25zIikpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7
Ci0gICAgVU5VU0VEX1BBUkFNKGNvbnRleHRPcHRpb25zVmFsdWUpOwotCi0gICAgLy8gRklYTUU6
IENvbnZlcnQgdG8gUGFpbnRSZW5kZXJpbmdDb250ZXh0MkRTZXR0aW5ncyBoZXJlIChzdGVwIDE0
KS4KLQotICAgIGlmICghY29uc3RydWN0b3JWYWx1ZS5pc0NvbnN0cnVjdG9yKHZtKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsICJUaGUgc2Vjb25kIGFyZ3Vt
ZW50IG11c3QgYmUgYSBjb25zdHJ1Y3RvciJfcyk7Ci0KLSAgICBKU1ZhbHVlIHByb3RvdHlwZVZh
bHVlID0gY29uc3RydWN0b3JWYWx1ZS5nZXQoJnN0YXRlLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90
b3R5cGUpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7Ci0KLSAg
ICBpZiAoIXByb3RvdHlwZVZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcigmc3RhdGUsIHNjb3BlLCAiVGhlIHNlY29uZCBhcmd1bWVudCBtdXN0IGhhdmUgYSBw
cm90b3R5cGUgdGhhdCBpcyBhbiBvYmplY3QiX3MpOwotCi0gICAgSlNWYWx1ZSBwYWludFZhbHVl
ID0gcHJvdG90eXBlVmFsdWUuZ2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0s
ICJwYWludCIpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwot
Ci0gICAgaWYgKHBhaW50VmFsdWUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsICJUaGUgY2xhc3MgbXVzdCBoYXZlIGEgcGFpbnQgbWV0
aG9kIl9zKTsKLQotICAgIFJlZlB0cjxKU0NTU1BhaW50Q2FsbGJhY2s+IHBhaW50ID0gY29udmVy
dDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTQ1NTUGFpbnRDYWxsYmFjaz4+KHN0YXRlLCBwYWludFZh
bHVlLCAqZ2xvYmFsT2JqZWN0KCkpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpT
VmFsdWUoKSk7Ci0KLSAgICBhdXRvIHBhaW50RGVmaW5pdGlvbiA9IHN0ZDo6dW5pcXVlX3B0cjxQ
YWludERlZmluaXRpb24+KG5ldyBQYWludERlZmluaXRpb24geyBuYW1lLCBwYWludC5yZWxlYXNl
Tm9uTnVsbCgpLCBpbnB1dFByb3BlcnRpZXMsIGlucHV0QXJndW1lbnRzIH0pOwotICAgIHBhaW50
RGVmaW5pdGlvbk1hcC5hZGQobmFtZSwgV1RGTW92ZShwYWludERlZmluaXRpb24pKTsKLQotICAg
IC8vIEZJWE1FOiBjb25zdHJ1Y3QgZG9jdW1lbnREZWZpbml0aW9uIChzdGVwIDIyKS4KLQotICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCi19Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAppbmRleCBlYmIyZjYxZGRjYzMy
NWEwMWRjNTI0YjJiNTJlYjhiMTE0MTQzMDU4Li43ZGRhMjU4NmVmN2IzNWM3NTZiMWIwMjM5ZjFj
MWY3NjE2ZGUzMTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01H
bG9iYWxPYmplY3QuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiSlNSZWFkYWJsZVN0
cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuaCIKICNpbmNsdWRlICJKU1JlbW90ZURPTVdpbmRvdy5o
IgogI2luY2x1ZGUgIkpTV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJKU1dvcmtsZXRH
bG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIlJlamVjdGVkUHJvbWlzZVRyYWNrZXIuaCIKICNpbmNs
dWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlZENsb25l
LmgiCkBAIC0xOTQsNiArMTk1LDEwIEBAIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIEpTRE9NR2xv
YmFsT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgaWYgKGluaGVyaXRzPEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlPih2bSgp
KSkKICAgICAgICAgcmV0dXJuIGpzQ2FzdDxjb25zdCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZSo+
KHRoaXMpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisjaWYgRU5BQkxFKENTU19QQUlOVElO
R19BUEkpCisgICAgaWYgKGluaGVyaXRzPEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZT4odm0oKSkp
CisgICAgICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlKj4o
dGhpcyktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyNlbmRpZgogICAgIGRhdGFMb2coIlVu
ZXhwZWN0ZWQgZ2xvYmFsIG9iamVjdDogIiwgSlNWYWx1ZSh0aGlzKSwgIlxuIik7CiAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQYWludFdvcmtsZXRHbG9i
YWxTY29wZUN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWE4ZjhhYmMxOTBjMDQyNDRiODcxODQ1NGE5
YzY1ODRmOTI2ZGE2MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwCkBAIC0wLDAgKzEsMTMzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKworI2lm
IEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNs
dWRlICJKU0NTU1BhaW50Q2FsbGJhY2suaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnRDYWxsYmFj
a3MuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnRTZXF1ZW5jZXMuaCIKKyNpbmNsdWRlIDx3dGYv
U2V0Rm9yU2NvcGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNwYWNlIEpT
QzsKKworc3RhdGljIEpTVmFsdWUgdGhyb3dJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3IoRXhlY1N0
YXRlJiBzdGF0ZSwgVGhyb3dTY29wZSYgc2NvcGUsIEFTQ0lJTGl0ZXJhbCBtZXNzYWdlKQorewor
ICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CisgICAgdGhyb3dFeGNlcHRpb24oJnN0YXRl
LCBzY29wZSwgY3JlYXRlRE9NRXhjZXB0aW9uKCZzdGF0ZSwgSW52YWxpZE1vZGlmaWNhdGlvbkVy
cm9yLCBtZXNzYWdlKSk7CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKK3ZvaWQgSlNQ
YWludFdvcmtsZXRHbG9iYWxTY29wZTo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oSlNDOjpTbG90
VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBmb3IgKGF1dG8mIHJlZ2lzdGVyZWQgOiB3cmFwcGVk
KCkucGFpbnREZWZpbml0aW9uTWFwKCkudmFsdWVzKCkpCisgICAgICAgIHJlZ2lzdGVyZWQtPnBh
aW50Q2FsbGJhY2stPnZpc2l0SlNGdW5jdGlvbih2aXNpdG9yKTsKK30KKworLy8gaHR0cHM6Ly9k
cmFmdHMuY3NzLWhvdWRpbmkub3JnL2Nzcy1wYWludC1hcGkvI3JlZ2lzdGVyaW5nLWN1c3RvbS1w
YWludAorSlNWYWx1ZSBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlOjpyZWdpc3RlclBhaW50KEV4
ZWNTdGF0ZSYgc3RhdGUpCit7CisgICAgdXNpbmcgUGFpbnREZWZpbml0aW9uID0gUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGU6OlBhaW50RGVmaW5pdGlvbjsKKworICAgIFBhaW50V29ya2xldEdsb2Jh
bFNjb3BlJiB3b3JrbGV0R2xvYmFsU2NvcGUgPSB3cmFwcGVkKCk7CisgICAgVk0mIHZtID0gc3Rh
dGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMikpCisgICAgICAgIHJldHVy
biB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcigmc3RhdGUpKTsKKworICAgIEF0b21pY1N0cmluZyBuYW1lKHN0YXRlLnVuY2hlY2tlZEFy
Z3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnRvQXRvbWljU3RyaW5nKCZzdGF0ZSkpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CisgICAgSlNWYWx1ZSBjb25z
dHJ1Y3RvclZhbHVlID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSk7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKKworICAgIGlmIChuYW1lLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsICJUaGUgZmlyc3Qg
YXJndW1lbnQgbXVzdCBub3QgYmUgdGhlIGVtcHR5IHN0cmluZyJfcyk7CisKKyAgICBhdXRvJiBw
YWludERlZmluaXRpb25NYXAgPSB3b3JrbGV0R2xvYmFsU2NvcGUucGFpbnREZWZpbml0aW9uTWFw
KCk7CisKKyAgICBpZiAocGFpbnREZWZpbml0aW9uTWFwLmNvbnRhaW5zKG5hbWUpKQorICAgICAg
ICByZXR1cm4gdGhyb3dJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Ioc3RhdGUsIHNjb3BlLCAiVGhp
cyBuYW1lIGhhcyBhbHJlYWR5IGJlZW4gcmVnaXN0ZXJlZCJfcyk7CisKKyAgICBWZWN0b3I8U3Ry
aW5nPiBpbnB1dFByb3BlcnRpZXM7CisKKyAgICBKU1ZhbHVlIGlucHV0UHJvcGVydGllc0l0ZXJh
YmxlVmFsdWUgPSBjb25zdHJ1Y3RvclZhbHVlLmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoJnZtLCAiaW5wdXRQcm9wZXJ0aWVzIikpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIEpTVmFsdWUoKSk7CisKKyAgICBpZiAoIWlucHV0UHJvcGVydGllc0l0ZXJhYmxlVmFs
dWUuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgaW5wdXRQcm9wZXJ0aWVzID0gY29udmVydDxJRExT
ZXF1ZW5jZTxJRExET01TdHJpbmc+PihzdGF0ZSwgaW5wdXRQcm9wZXJ0aWVzSXRlcmFibGVWYWx1
ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKKworICAgIC8v
IEZJWE1FOiBWYWxpZGF0ZSBpbnB1dCBwcm9wZXJ0aWVzIGhlcmUgKHN0ZXAgNykuCisKKyAgICBW
ZWN0b3I8U3RyaW5nPiBpbnB1dEFyZ3VtZW50czsKKworICAgIEpTVmFsdWUgaW5wdXRBcmd1bWVu
dHNJdGVyYWJsZVZhbHVlID0gY29uc3RydWN0b3JWYWx1ZS5nZXQoJnN0YXRlLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKCZ2bSwgImlucHV0QXJndW1lbnRzIikpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CisKKyAgICBpZiAoIWlucHV0QXJndW1lbnRzSXRlcmFi
bGVWYWx1ZS5pc1VuZGVmaW5lZCgpKQorICAgICAgICBpbnB1dEFyZ3VtZW50cyA9IGNvbnZlcnQ8
SURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj4oc3RhdGUsIGlucHV0QXJndW1lbnRzSXRlcmFibGVW
YWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKKworICAg
IC8vIEZJWE1FOiBQYXJzZSBzeW50YXggZm9yIGlucHV0QXJndW1lbnRzIGhlcmUgKHN0ZXBzIDEx
IGFuZCAxMikuCisKKyAgICBKU1ZhbHVlIGNvbnRleHRPcHRpb25zVmFsdWUgPSBjb25zdHJ1Y3Rv
clZhbHVlLmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiY29udGV4dE9w
dGlvbnMiKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKKyAg
ICBVTlVTRURfUEFSQU0oY29udGV4dE9wdGlvbnNWYWx1ZSk7CisKKyAgICAvLyBGSVhNRTogQ29u
dmVydCB0byBQYWludFJlbmRlcmluZ0NvbnRleHQyRFNldHRpbmdzIGhlcmUgKHN0ZXAgMTQpLgor
CisgICAgaWYgKCFjb25zdHJ1Y3RvclZhbHVlLmlzQ29uc3RydWN0b3Iodm0pKQorICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgIlRoZSBzZWNvbmQgYXJndW1lbnQg
bXVzdCBiZSBhIGNvbnN0cnVjdG9yIl9zKTsKKworICAgIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUg
PSBjb25zdHJ1Y3RvclZhbHVlLmdldCgmc3RhdGUsIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlw
ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKKworICAgIGlm
ICghcHJvdG90eXBlVmFsdWUuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKCZzdGF0ZSwgc2NvcGUsICJUaGUgc2Vjb25kIGFyZ3VtZW50IG11c3QgaGF2ZSBhIHByb3Rv
dHlwZSB0aGF0IGlzIGFuIG9iamVjdCJfcyk7CisKKyAgICBKU1ZhbHVlIHBhaW50VmFsdWUgPSBw
cm90b3R5cGVWYWx1ZS5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInBh
aW50IikpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CisKKyAg
ICBpZiAocGFpbnRWYWx1ZS5pc1VuZGVmaW5lZCgpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoJnN0YXRlLCBzY29wZSwgIlRoZSBjbGFzcyBtdXN0IGhhdmUgYSBwYWludCBtZXRob2Qi
X3MpOworCisgICAgUmVmUHRyPEpTQ1NTUGFpbnRDYWxsYmFjaz4gcGFpbnQgPSBjb252ZXJ0PElE
TENhbGxiYWNrRnVuY3Rpb248SlNDU1NQYWludENhbGxiYWNrPj4oc3RhdGUsIHBhaW50VmFsdWUs
ICpnbG9iYWxPYmplY3QoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1
ZSgpKTsKKworICAgIGF1dG8gcGFpbnREZWZpbml0aW9uID0gc3RkOjp1bmlxdWVfcHRyPFBhaW50
RGVmaW5pdGlvbj4obmV3IFBhaW50RGVmaW5pdGlvbiB7IG5hbWUsIHBhaW50LnJlbGVhc2VOb25O
dWxsKCksIGlucHV0UHJvcGVydGllcywgaW5wdXRBcmd1bWVudHMgfSk7CisgICAgcGFpbnREZWZp
bml0aW9uTWFwLmFkZChuYW1lLCBXVEZNb3ZlKHBhaW50RGVmaW5pdGlvbikpOworCisgICAgLy8g
RklYTUU6IGNvbnN0cnVjdCBkb2N1bWVudERlZmluaXRpb24gKHN0ZXAgMjIpLgorCisgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTgxNzdmM2MxYWI2NDEzYzU0ZjliNTBhMGY0NTlhZTVkZmE3OWM3YgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFz
ZS5jcHAKQEAgLTAsMCArMSwxNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTV29ya2xl
dEdsb2JhbFNjb3BlQmFzZS5oIgorCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisKKyNp
bmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKKyNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdFRh
c2suaCIKKyNpbmNsdWRlICJKU1dvcmtsZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmts
ZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTQ0pTVmFsdWVJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL0xhbmd1YWdlLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK2NvbnN0IENsYXNz
SW5mbyBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnNfaW5mbyA9IHsgIldvcmtsZXRHbG9iYWxT
Y29wZSIsICZKU0RPTUdsb2JhbE9iamVjdDo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZSkgfTsKKworY29uc3QgR2xv
YmFsT2JqZWN0TWV0aG9kVGFibGUgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzX2dsb2JhbE9i
amVjdE1ldGhvZFRhYmxlID0geworICAgICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLAorICAgICZz
aG91bGRJbnRlcnJ1cHRTY3JpcHQsCisgICAgJmphdmFTY3JpcHRSdW50aW1lRmxhZ3MsCisgICAg
bnVsbHB0ciwgLy8gcXVldWVUYXNrVG9FdmVudExvb3AKKyAgICAmc2hvdWxkSW50ZXJydXB0U2Ny
aXB0QmVmb3JlVGltZW91dCwKKyAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJJbXBvcnRNb2R1
bGUKKyAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJSZXNvbHZlCisgICAgbnVsbHB0ciwgLy8g
bW9kdWxlTG9hZGVyRmV0Y2gKKyAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJDcmVhdGVJbXBv
cnRNZXRhUHJvcGVydGllcworICAgIG51bGxwdHIsIC8vIG1vZHVsZUxvYWRlckV2YWx1YXRlCisg
ICAgJnByb21pc2VSZWplY3Rpb25UcmFja2VyLAorICAgICZkZWZhdWx0TGFuZ3VhZ2UsCisgICAg
bnVsbHB0ciwgLy8gY29tcGlsZVN0cmVhbWluZworICAgIG51bGxwdHIsIC8vIGluc3RhbnRpYXRl
U3RyZWFtaW5nCit9OworCitKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OkpTV29ya2xldEdsb2Jh
bFNjb3BlQmFzZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRy
PFdvcmtsZXRHbG9iYWxTY29wZT4mJiBpbXBsKQorICAgIDogSlNET01HbG9iYWxPYmplY3Qodm0s
IHN0cnVjdHVyZSwgbm9ybWFsV29ybGQodm0pLCAmc19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSkK
KyAgICAsIG1fd3JhcHBlZChXVEZNb3ZlKGltcGwpKQoreworfQorCit2b2lkIEpTV29ya2xldEds
b2JhbFNjb3BlQmFzZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1Byb3h5KiBwcm94eSkKK3sK
KyAgICBtX3Byb3h5LnNldCh2bSwgdGhpcywgcHJveHkpOworCisgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0sIG1fcHJveHkuZ2V0KCkpOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygp
KSk7Cit9CisKK3ZvaWQgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpjbGVhckRPTUd1YXJkZWRP
YmplY3RzKCkKK3sKKyAgICBhdXRvIGd1YXJkZWRPYmplY3RzID0gbV9ndWFyZGVkT2JqZWN0czsK
KyAgICBmb3IgKGF1dG8mIGd1YXJkZWQgOiBndWFyZGVkT2JqZWN0cykKKyAgICAgICAgZ3VhcmRl
ZC0+Y2xlYXIoKTsKK30KKwordm9pZCBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1dvcmts
ZXRHbG9iYWxTY29wZUJhc2UqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNXb3JrbGV0R2xvYmFsU2Nv
cGVCYXNlKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0
LCBpbmZvKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7
CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9wcm94eSk7Cit9CisKK3ZvaWQgSlNX
b3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBzdGF0
aWNfY2FzdDxKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UqPihjZWxsKS0+SlNXb3JrbGV0R2xvYmFs
U2NvcGVCYXNlOjp+SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlKCk7Cit9CisKK1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd3JhcHBlZC5nZXQoKTsKK30KKworYm9vbCBK
U1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnN1cHBvcnRzUmljaFNvdXJjZUluZm8oY29uc3QgSlNH
bG9iYWxPYmplY3QqIG9iamVjdCkKK3sKKyAgICByZXR1cm4gSlNHbG9iYWxPYmplY3Q6OnN1cHBv
cnRzUmljaFNvdXJjZUluZm8ob2JqZWN0KTsKK30KKworYm9vbCBKU1dvcmtsZXRHbG9iYWxTY29w
ZUJhc2U6OnNob3VsZEludGVycnVwdFNjcmlwdChjb25zdCBKU0dsb2JhbE9iamVjdCogb2JqZWN0
KQoreworICAgIHJldHVybiBKU0dsb2JhbE9iamVjdDo6c2hvdWxkSW50ZXJydXB0U2NyaXB0KG9i
amVjdCk7Cit9CisKK2Jvb2wgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzaG91bGRJbnRlcnJ1
cHRTY3JpcHRCZWZvcmVUaW1lb3V0KGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvYmplY3QpCit7Cisg
ICAgcmV0dXJuIEpTR2xvYmFsT2JqZWN0OjpzaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1l
b3V0KG9iamVjdCk7Cit9CisKK1J1bnRpbWVGbGFncyBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6
OmphdmFTY3JpcHRSdW50aW1lRmxhZ3MoY29uc3QgSlNHbG9iYWxPYmplY3QqIG9iamVjdCkKK3sK
KyAgICBjb25zdCBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
Y29uc3QgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlKj4ob2JqZWN0KTsKKyAgICByZXR1cm4gdGhp
c09iamVjdC0+bV93cmFwcGVkLT5qc1J1bnRpbWVGbGFncygpOworfQorCitKU1ZhbHVlIHRvSlMo
RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCosIFdvcmtsZXRHbG9iYWxTY29wZSYg
d29ya2xldEdsb2JhbFNjb3BlKQoreworICAgIHJldHVybiB0b0pTKGV4ZWMsIHdvcmtsZXRHbG9i
YWxTY29wZSk7Cit9CisKK0pTVmFsdWUgdG9KUyhFeGVjU3RhdGUqLCBXb3JrbGV0R2xvYmFsU2Nv
cGUmIHdvcmtsZXRHbG9iYWxTY29wZSkKK3sKKyAgICBXb3JrbGV0U2NyaXB0Q29udHJvbGxlciog
c2NyaXB0ID0gd29ya2xldEdsb2JhbFNjb3BlLnNjcmlwdCgpOworICAgIGlmICghc2NyaXB0KQor
ICAgICAgICByZXR1cm4ganNOdWxsKCk7CisgICAgSlNXb3JrbGV0R2xvYmFsU2NvcGUqIGNvbnRl
eHRXcmFwcGVyID0gc2NyaXB0LT53b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKCk7CisgICAgQVNT
RVJUKGNvbnRleHRXcmFwcGVyKTsKKyAgICByZXR1cm4gY29udGV4dFdyYXBwZXItPnByb3h5KCk7
Cit9CisKK0pTV29ya2xldEdsb2JhbFNjb3BlKiB0b0pTV29ya2xldEdsb2JhbFNjb3BlKFZNJiB2
bSwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvID0gYXNPYmpl
Y3QodmFsdWUpLT5jbGFzc0luZm8odm0pOworCisgICAgaWYgKGNsYXNzSW5mbyA9PSBKU1Byb3h5
OjppbmZvKCkpCisgICAgICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTV29ya2xldEdsb2JhbFNj
b3BlKj4odm0sIGpzQ2FzdDxKU1Byb3h5Kj4oYXNPYmplY3QodmFsdWUpKS0+dGFyZ2V0KCkpOwor
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFs
U2NvcGVCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxT
Y29wZUJhc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNTU4MjdiOThkM2RjYmNlNjQ1ZWJlYzU2ODM1YjBkMzEz
MmRhNzMwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
b3JrbGV0R2xvYmFsU2NvcGVCYXNlLmgKQEAgLTAsMCArMSw4NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShDU1NfUEFJTlRJTkdfQVBJKQorCisjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIK
KyNpbmNsdWRlICJKU0RPTVdyYXBwZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBKU1dvcmtsZXRHbG9iYWxTY29wZTsKK2NsYXNzIFdvcmtsZXRHbG9iYWxTY29wZTsKKworY2xh
c3MgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlIDogcHVibGljIEpTRE9NR2xvYmFsT2JqZWN0IHsK
KyAgICB0eXBlZGVmIEpTRE9NR2xvYmFsT2JqZWN0IEJhc2U7CitwdWJsaWM6CisgICAgc3RhdGlj
IHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAg
V29ya2xldEdsb2JhbFNjb3BlJiB3cmFwcGVkKCkgY29uc3QgeyByZXR1cm4gKm1fd3JhcHBlZDsg
fQorICAgIEpTQzo6SlNQcm94eSogcHJveHkoKSBjb25zdCB7IEFTU0VSVChtX3Byb3h5KTsgcmV0
dXJuIG1fcHJveHkuZ2V0KCk7IH0KKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CisKKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEpTQzo6
U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJ
bmZvKEpTQzo6R2xvYmFsT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAg
IH0KKworICAgIHN0YXRpYyBjb25zdCBKU0M6Okdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIHNfZ2xv
YmFsT2JqZWN0TWV0aG9kVGFibGU7CisKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c1JpY2hTb3Vy
Y2VJbmZvKGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgYm9vbCBzaG91
bGRJbnRlcnJ1cHRTY3JpcHQoY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHN0YXRp
YyBib29sIHNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQoY29uc3QgSlNDOjpKU0ds
b2JhbE9iamVjdCopOworICAgIHN0YXRpYyBKU0M6OlJ1bnRpbWVGbGFncyBqYXZhU2NyaXB0UnVu
dGltZUZsYWdzKGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgdm9pZCBx
dWV1ZVRhc2tUb0V2ZW50TG9vcChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgUmVmPEpTQzo6TWljcm90
YXNrPiYmKTsKKworICAgIHZvaWQgY2xlYXJET01HdWFyZGVkT2JqZWN0cygpOworCitwcm90ZWN0
ZWQ6CisgICAgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlKEpTQzo6Vk0mLCBKU0M6OlN0cnVjdHVy
ZSosIFJlZlB0cjxXb3JrbGV0R2xvYmFsU2NvcGU+JiYpOworICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oSlNDOjpWTSYsIEpTQzo6SlNQcm94eSopOworCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGls
ZHJlbihKU0M6OkpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKTsKKworcHJpdmF0ZToKKyAgICBS
ZWZQdHI8V29ya2xldEdsb2JhbFNjb3BlPiBtX3dyYXBwZWQ7CisgICAgSlNDOjpXcml0ZUJhcnJp
ZXI8SlNDOjpKU1Byb3h5PiBtX3Byb3h5OworfTsKKworLy8gUmV0dXJucyBhIEpTV29ya2xldEds
b2JhbFNjb3BlIG9yIGpzTnVsbCgpCisvLyBBbHdheXMgaWdub3JlcyB0aGUgZXhlY1N0YXRlIGFu
ZCBwYXNzZWQgZ2xvYmFsT2JqZWN0LCBXb3JrbGV0R2xvYmFsU2NvcGUgaXMgaXRzZWxmIGEgZ2xv
YmFsT2JqZWN0IGFuZCB3aWxsIGFsd2F5cyB1c2UgaXRzIG93biBwcm90b3R5cGUgY2hhaW4uCitK
U0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgV29y
a2xldEdsb2JhbFNjb3BlJik7CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFdvcmtsZXRHbG9iYWxT
Y29wZSogc2NvcGUpIHsgcmV0dXJuIHNjb3BlID8gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsICpz
Y29wZSkgOiBKU0M6OmpzTnVsbCgpOyB9CitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0
ZSosIFdvcmtsZXRHbG9iYWxTY29wZSYpOworaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBXb3JrbGV0R2xvYmFsU2NvcGUqIHNjb3BlKSB7IHJldHVybiBzY29w
ZSA/IHRvSlMoZXhlYywgKnNjb3BlKSA6IEpTQzo6anNOdWxsKCk7IH0KKworSlNXb3JrbGV0R2xv
YmFsU2NvcGUqIHRvSlNXb3JrbGV0R2xvYmFsU2NvcGUoSlNDOjpWTSYsIEpTQzo6SlNWYWx1ZSk7
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdFN0YXRlLmNwcAppbmRleCBlZWU4MzljYzQyNjRmYmU0YTI5ZGZiOTkxYjVmZGU1
MGQ2MGJhYjFjLi5hMWJhMTQ1MjgzNGQ4Y2EzY2U2YWY0NzcxMWU5NzBiMzg4Y2MxYjA3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwCkBAIC0zNSwxMSArMzUs
MTQgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93QmFzZS5oIgog
I2luY2x1ZGUgIkpTV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJKU1dvcmtsZXRHbG9i
YWxTY29wZS5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAj
aW5jbHVkZSAiV29ya2VyU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIldvcmtsZXRHbG9i
YWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvQ2FsbEZyYW1lLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNHbG9iYWxPYmplY3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmdJbmxpbmVz
Lmg+CkBAIC05NSw5ICs5OCwxNiBAQCBKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbVBhZ2Uo
RE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgUGFnZSogcGFnZSkKICAgICByZXR1cm4gcGFnZSA/IHBh
Z2UtPm1haW5GcmFtZSgpLnNjcmlwdCgpLmdsb2JhbE9iamVjdCh3b3JsZCktPmdsb2JhbEV4ZWMo
KSA6IG51bGxwdHI7CiB9CiAKLUpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tV29ya2VyR2xv
YmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlckdsb2JhbFNjb3BlKQorSlNDOjpFeGVj
U3RhdGUqIGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZShXb3JrZXJHbG9iYWxTY29wZSYg
d29ya2VyR2xvYmFsU2NvcGUpCiB7Ci0gICAgcmV0dXJuIHdvcmtlckdsb2JhbFNjb3BlLT5zY3Jp
cHQoKS0+d29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKCktPmdsb2JhbEV4ZWMoKTsKKyAgICByZXR1
cm4gd29ya2VyR2xvYmFsU2NvcGUuc2NyaXB0KCktPndvcmtlckdsb2JhbFNjb3BlV3JhcHBlcigp
LT5nbG9iYWxFeGVjKCk7CiB9CiAKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKK0pTQzo6
RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tV29ya2xldEdsb2JhbFNjb3BlKFdvcmtsZXRHbG9iYWxT
Y29wZSYgd29ya2xldEdsb2JhbFNjb3BlKQoreworICAgIHJldHVybiB3b3JrbGV0R2xvYmFsU2Nv
cGUuc2NyaXB0KCktPndvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIoKS0+Z2xvYmFsRXhlYygpOwor
fQorI2VuZGlmCisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdFN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCmlu
ZGV4IDc0NDIxZmQ5NWJhMTc3NTZlYjg5YzAwNDI2YzMzZmI1NDU0OTgzOTAuLjE1Mzg0YTcxMWYz
NTZjZWU0NzhjYTk5ZTI1NTViMWVlYTI0ODJhZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0U3RhdGUuaApAQCAtNDQsNiArNDQsOSBAQCBjbGFzcyBOb2RlOwogY2xhc3MgUGFn
ZTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBXb3JrZXJHbG9iYWxTY29w
ZTsKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKK2NsYXNzIFdvcmtsZXRHbG9iYWxTY29w
ZTsKKyNlbmRpZgogCiBET01XaW5kb3cqIGRvbVdpbmRvd0Zyb21FeGVjU3RhdGUoSlNDOjpFeGVj
U3RhdGUqKTsKIEZyYW1lKiBmcmFtZUZyb21FeGVjU3RhdGUoSlNDOjpFeGVjU3RhdGUqKTsKQEAg
LTUzLDYgKzU2LDkgQEAgSlNDOjpFeGVjU3RhdGUqIG1haW5Xb3JsZEV4ZWNTdGF0ZShGcmFtZSop
OwogCiBKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbU5vZGUoRE9NV3JhcHBlcldvcmxkJiwg
Tm9kZSopOwogV0VCQ09SRV9FWFBPUlQgSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZUZyb21QYWdl
KERPTVdyYXBwZXJXb3JsZCYsIFBhZ2UqKTsKLUpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9t
V29ya2VyR2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUqKTsKK0pTQzo6RXhlY1N0YXRlKiBl
eGVjU3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUmKTsKKyNpZiBF
TkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKK0pTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tV29y
a2xldEdsb2JhbFNjb3BlKFdvcmtsZXRHbG9iYWxTY29wZSYpOworI2VuZGlmCiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dl
YkNvcmVCdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVC
dWlsdGluTmFtZXMuaAppbmRleCAxYzkzODU5ZWNjMTY4NzRjMGMwN2UzNzNiMjk3M2M0MjUwNWRl
YTgwLi4yOTJmZDk3OTI0NDlkMzc3ZDI3NWMyODI0YmUxNTJkY2E2ZmQ2OTFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCkBAIC01MSw3
ICs1MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhDcmVkZW50aWFsKSBcCiAg
ICAgbWFjcm8oQ3JlZGVudGlhbHNDb250YWluZXIpIFwKICAgICBtYWNybyhDU1NBbmltYXRpb24p
IFwKLSAgICBtYWNybyhDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSkgXAogICAgIG1hY3JvKENT
U1RyYW5zaXRpb24pIFwKICAgICBtYWNybyhDdXN0b21FbGVtZW50UmVnaXN0cnkpIFwKICAgICBt
YWNybyhEYXRhYmFzZSkgXApAQCAtMTIzLDYgKzEyMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBtYWNybyhTUUxSZXN1bHRTZXQpIFwKICAgICBtYWNybyhTUUxSZXN1bHRTZXRSb3dMaXN0
KSBcCiAgICAgbWFjcm8oU1FMVHJhbnNhY3Rpb24pIFwKKyAgICBtYWNybyhQYWludFdvcmtsZXRH
bG9iYWxTY29wZSkgXAogICAgIG1hY3JvKFBlcmZvcm1hbmNlRW50cnkpIFwKICAgICBtYWNybyhQ
ZXJmb3JtYW5jZUVudHJ5TGlzdCkgXAogICAgIG1hY3JvKFBlcmZvcm1hbmNlTWFyaykgXApAQCAt
MjEwLDYgKzIxMCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhXZWJLaXRNZWRp
YUtleXMpIFwKICAgICBtYWNybyhXZWJTb2NrZXQpIFwKICAgICBtYWNybyhXaW5kb3dDbGllbnQp
IFwKKyAgICBtYWNybyhXb3JrbGV0KSBcCisgICAgbWFjcm8oV29ya2xldEdsb2JhbFNjb3BlKSBc
CiAgICAgbWFjcm8oV3JpdGFibGVTdHJlYW0pIFwKICAgICBtYWNybyhYTUxIdHRwUmVxdWVzdCkg
XAogICAgIG1hY3JvKGFwcGVuZEZyb21KUykgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCA0OGZjZTdiYzE2YTg4MGQ2M2Y0
MzJhMDE4ZjFmZWUyZjY3YmY1YmRjLi45YmRkZGVkMzAxNjcxZmI0NDc5NWIzMzJlZmZlMTJlYTAz
NWE4MzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQpAQCAtNDk3LDcgKzQ5Nyw3IEBAIHN1YiBHZXRDdXN0b21Jc1JlYWNoYWJs
ZQogc3ViIElzRE9NR2xvYmFsT2JqZWN0CiB7CiAgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0Owot
ICAgIHJldHVybiAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIGVxICJET01XaW5kb3ciIHx8ICRpbnRl
cmZhY2UtPnR5cGUtPm5hbWUgZXEgIlJlbW90ZURPTVdpbmRvdyIgfHwgJGNvZGVHZW5lcmF0b3It
PkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrZXJHbG9iYWxTY29wZSIpIHx8ICRp
bnRlcmZhY2UtPnR5cGUtPm5hbWUgZXEgIlRlc3RHbG9iYWxPYmplY3QiOworICAgIHJldHVybiAk
aW50ZXJmYWNlLT50eXBlLT5uYW1lIGVxICJET01XaW5kb3ciIHx8ICRpbnRlcmZhY2UtPnR5cGUt
Pm5hbWUgZXEgIlJlbW90ZURPTVdpbmRvdyIgfHwgJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50
ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrZXJHbG9iYWxTY29wZSIpIHx8ICRjb2RlR2VuZXJhdG9y
LT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiV29ya2xldEdsb2JhbFNjb3BlIikgfHwg
JGludGVyZmFjZS0+dHlwZS0+bmFtZSBlcSAiVGVzdEdsb2JhbE9iamVjdCI7CiB9CiAKIHN1YiBT
aG91bGRVc2VHbG9iYWxPYmplY3RQcm90b3R5cGUKQEAgLTUwNiw2ICs1MDYsNyBAQCBzdWIgU2hv
dWxkVXNlR2xvYmFsT2JqZWN0UHJvdG90eXBlCiAKICAgICAjIEZvciB3b3JrZXJzLCB0aGUgZ2xv
YmFsIG9iamVjdCBpcyBhIERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLgogICAgIHJldHVybiAw
IGlmICRpbnRlcmZhY2UtPnR5cGUtPm5hbWUgZXEgIldvcmtlckdsb2JhbFNjb3BlIjsKKyAgICBy
ZXR1cm4gMCBpZiAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIGVxICJXb3JrbGV0R2xvYmFsU2NvcGUi
OwogCiAgICAgcmV0dXJuIElzRE9NR2xvYmFsT2JqZWN0KCRpbnRlcmZhY2UpOwogfQpAQCAtMjUz
Nyw3ICsyNTM4LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0sIHByb3h5KTtcbiIpOwogICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICByZXR1cm4gcHRyO1xuIik7CiAgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgfVxuXG4iKTsKLSAgICB9IGVsc2lmICgkY29k
ZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldvcmtlckdsb2JhbFNj
b3BlIikpIHsKKyAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2Uo
JGludGVyZmFjZSwgIldvcmtlckdsb2JhbFNjb3BlIikgfHwgJGNvZGVHZW5lcmF0b3ItPkluaGVy
aXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrbGV0R2xvYmFsU2NvcGUiKSkgewogICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyAkY2xhc3NOYW1lKiBjcmVhdGUoSlND
OjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZjwkaW1wbFR5cGU+JiYgaW1w
bCwgSlNDOjpKU1Byb3h5KiBwcm94eSlcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiICAgIHtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICAkY2xh
c3NOYW1lKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPCRjbGFzc05hbWU+
KHZtLmhlYXApKSAke2NsYXNzTmFtZX0odm0sIHN0cnVjdHVyZSwgV1RGTW92ZShpbXBsKSk7XG4i
KTsKQEAgLTI4NDUsNyArMjg0Niw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICMgQ29uc3Ry
dWN0b3IKICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIgfHwgJGludGVyZmFj
ZU5hbWUgZXEgIlJlbW90ZURPTVdpbmRvdyIpIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIiAgICAkY2xhc3NOYW1lKEpTQzo6Vk0mLCBKU0M6OlN0cnVjdHVyZSosIFJlZjwkaW1wbFR5
cGU+JiYsIEpTV2luZG93UHJveHkqKTtcbiIpOwotICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9y
LT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiV29ya2VyR2xvYmFsU2NvcGUiKSkgewor
ICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNl
LCAiV29ya2VyR2xvYmFsU2NvcGUiKSB8fCAkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZh
Y2UoJGludGVyZmFjZSwgIldvcmtsZXRHbG9iYWxTY29wZSIpKSB7CiAgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgJGNsYXNzTmFtZShKU0M6OlZNJiwgSlNDOjpTdHJ1Y3R1cmUqLCBS
ZWY8JGltcGxUeXBlPiYmKTtcbiIpOwogICAgIH0gZWxzaWYgKCFOZWVkc0ltcGxlbWVudGF0aW9u
Q2xhc3MoJGludGVyZmFjZSkpIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAk
Y2xhc3NOYW1lKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmKTtcblxuIik7CkBA
IC0yODU1LDcgKzI4NTYsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAgIGlmICgkaW50ZXJm
YWNlTmFtZSBlcSAiRE9NV2luZG93IiB8fCAkaW50ZXJmYWNlTmFtZSBlcSAiUmVtb3RlRE9NV2lu
ZG93IikgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oSlNDOjpWTSYsIEpTV2luZG93UHJveHkqKTtcbiIpOwotICAgIH0gZWxzaWYgKCRjb2Rl
R2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiV29ya2VyR2xvYmFsU2Nv
cGUiKSkgeworICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgk
aW50ZXJmYWNlLCAiV29ya2VyR2xvYmFsU2NvcGUiKSB8fCAkY29kZUdlbmVyYXRvci0+SW5oZXJp
dHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldvcmtsZXRHbG9iYWxTY29wZSIpKSB7CiAgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiwg
SlNDOjpKU1Byb3h5Kik7XG4iKTsKICAgICB9IGVsc2UgewogICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpO1xuIik7CkBAIC0zNjYy
LDYgKzM2NjMsOCBAQCBzdWIgR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmdG
b3JFeHBvc2VkCiAgICAgICAgIHB1c2goQCRjb25qdW5jdHMsICJqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPigiIC4gJGdsb2JhbE9iamVjdFB0ciAuICIpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPmlzRG9jdW1lbnQoKSIpOwogICAgIH0gZWxzaWYgKCRleHBvc2VkIGVxICJXb3JrZXIiKSB7
CiAgICAgICAgIHB1c2goQCRjb25qdW5jdHMsICJqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigi
IC4gJGdsb2JhbE9iamVjdFB0ciAuICIpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzV29y
a2VyR2xvYmFsU2NvcGUoKSIpOworICAgIH0gZWxzaWYgKCRleHBvc2VkIGVxICJXb3JrbGV0Iikg
eworICAgICAgICBwdXNoKEAkY29uanVuY3RzLCAianNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
IiAuICRnbG9iYWxPYmplY3RQdHIgLiAiKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1dv
cmtsZXRHbG9iYWxTY29wZSgpIik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgYXNzZXJ0KCJVbnJl
Y29nbml6ZWQgdmFsdWUgJyIgLiBEdW1wZXIoJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0V4cG9zZWR9KSAuICInIGZvciB0aGUgRXhwb3NlZCBleHRlbmRlZCBhdHRyaWJ1dGUgb24gJyIg
LiByZWYoJGNvbnRleHQpIC4gIicuIik7CiAgICAgfQpAQCAtNDI1Miw3ICs0MjU1LDcgQEAgc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
OiAkcGFyZW50Q2xhc3NOYW1lKHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUoaW1wbCksIHByb3h5KVxu
Iik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAifVxuXG4iKTsKLSAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SW5oZXJp
dHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldvcmtlckdsb2JhbFNjb3BlIikpIHsKKyAgICB9IGVs
c2lmICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldvcmtl
ckdsb2JhbFNjb3BlIikgfHwgJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRl
cmZhY2UsICJXb3JrbGV0R2xvYmFsU2NvcGUiKSkgewogICAgICAgICBBZGRJbmNsdWRlc0Zvcklt
cGxlbWVudGF0aW9uVHlwZUluSW1wbCgkaW50ZXJmYWNlTmFtZSk7CiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiJHtjbGFzc05hbWV9OjokY2xhc3NOYW1lKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIFJlZjwkaW1wbFR5cGU+JiYgaW1wbClcbiIpOwogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICA6ICRwYXJlbnRDbGFzc05hbWUodm0sIHN0cnVjdHVyZSwgV1RGTW92ZShp
bXBsKSlcbiIpOwpAQCAtNDI3Myw3ICs0Mjc2LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7Y2xhc3NOYW1lfTo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBKU1dpbmRvd1Byb3h5KiBwcm94eSlcbiIpOwogICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgcHJveHkpO1xuXG4iKTsKLSAgICB9IGVsc2lmICgkY29k
ZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldvcmtlckdsb2JhbFNj
b3BlIikpIHsKKyAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2Uo
JGludGVyZmFjZSwgIldvcmtlckdsb2JhbFNjb3BlIikgfHwgJGNvZGVHZW5lcmF0b3ItPkluaGVy
aXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrbGV0R2xvYmFsU2NvcGUiKSkgewogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtjbGFzc05hbWV9OjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIEpTUHJveHkqIHByb3h5KVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
e1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKHZtLCBwcm94eSk7XG5cbiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbAppbmRleCAzZTA1YzdiNDk2ODJiZWU2NGY2ODk4YjRk
ZjQ0ODQyNTEzNDM4YjUxLi40NmNkM2I4ZjljYTljMTFhYTUxZmJkOWZhODc2MGZhN2IwZmQ5MzM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3Mt
aWRscy5wbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3Mt
aWRscy5wbApAQCAtMzYsNiArMzYsOCBAQCBteSAkd2luZG93Q29uc3RydWN0b3JzRmlsZTsKIG15
ICR3b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGU7CiBteSAkZGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlOwogbXkgJHNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZUNvbnN0cnVjdG9yc0ZpbGU7CitteSAkd29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmls
ZTsKK215ICRwYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGU7CiBteSAkc3Vw
cGxlbWVudGFsTWFrZWZpbGVEZXBzOwogCiBHZXRPcHRpb25zKCdkZWZpbmVzPXMnID0+IFwkZGVm
aW5lcywKQEAgLTQ2LDYgKzQ4LDggQEAgR2V0T3B0aW9ucygnZGVmaW5lcz1zJyA9PiBcJGRlZmlu
ZXMsCiAgICAgICAgICAgICd3b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGU9cycgPT4g
XCR3b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUsCiAgICAgICAgICAgICdkZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGU9cycgPT4gXCRkZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUsCiAgICAgICAgICAgICdzZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlPXMnID0+IFwkc2VydmljZVdvcmtlckdsb2JhbFNj
b3BlQ29uc3RydWN0b3JzRmlsZSwKKyAgICAgICAgICAgJ3dvcmtsZXRHbG9iYWxTY29wZUNvbnN0
cnVjdG9yc0ZpbGU9cycgPT4gXCR3b3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlLAor
ICAgICAgICAgICAncGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlPXMnID0+
IFwkcGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlLAogICAgICAgICAgICAn
c3VwcGxlbWVudGFsTWFrZWZpbGVEZXBzPXMnID0+IFwkc3VwcGxlbWVudGFsTWFrZWZpbGVEZXBz
KTsKIAogZGllKCdNdXN0IHNwZWNpZnkgI2RlZmluZSBtYWNyb3MgdXNpbmcgLS1kZWZpbmVzLicp
IHVubGVzcyBkZWZpbmVkKCRkZWZpbmVzKTsKQEAgLTU0LDYgKzU4LDggQEAgZGllKCdNdXN0IHNw
ZWNpZnkgYW4gb3V0cHV0IGZpbGUgdXNpbmcgLS13aW5kb3dDb25zdHJ1Y3RvcnNGaWxlLicpIHVu
bGVzcyBkZWZpbmUKIGRpZSgnTXVzdCBzcGVjaWZ5IGFuIG91dHB1dCBmaWxlIHVzaW5nIC0td29y
a2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlLicpIHVubGVzcyBkZWZpbmVkKCR3b3JrZXJH
bG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOwogZGllKCdNdXN0IHNwZWNpZnkgYW4gb3V0cHV0
IGZpbGUgdXNpbmcgLS1kZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUu
JykgdW5sZXNzIGRlZmluZWQoJGRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3Jz
RmlsZSk7CiBkaWUoJ011c3Qgc3BlY2lmeSBhbiBvdXRwdXQgZmlsZSB1c2luZyAtLXNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUuJykgdW5sZXNzIGRlZmluZWQoJHNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOworZGllKCdNdXN0IHNwZWNpZnkg
YW4gb3V0cHV0IGZpbGUgdXNpbmcgLS13b3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxl
LicpIHVubGVzcyBkZWZpbmVkKCR3b3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlKTsK
K2RpZSgnTXVzdCBzcGVjaWZ5IGFuIG91dHB1dCBmaWxlIHVzaW5nIC0tcGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlLicpIHVubGVzcyBkZWZpbmVkKCRwYWludFdvcmtsZXRH
bG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOwogZGllKCdNdXN0IHNwZWNpZnkgdGhlIGZpbGUg
bGlzdGluZyBhbGwgSURMcyB1c2luZyAtLWlkbEZpbGVzTGlzdC4nKSB1bmxlc3MgZGVmaW5lZCgk
aWRsRmlsZXNMaXN0KTsKIAogJHN1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlID0gQ3lnd2luUGF0
aElmTmVlZGVkKCRzdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZSk7CkBAIC02MSw2ICs2Nyw4IEBA
ICR3aW5kb3dDb25zdHJ1Y3RvcnNGaWxlID0gQ3lnd2luUGF0aElmTmVlZGVkKCR3aW5kb3dDb25z
dHJ1Y3RvcnNGaWxlKTsKICR3b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgPSBDeWd3
aW5QYXRoSWZOZWVkZWQoJHdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSk7CiAkZGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlID0gQ3lnd2luUGF0aElmTmVl
ZGVkKCRkZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOwogJHNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgPSBDeWd3aW5QYXRoSWZOZWVkZWQo
JHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOworJHdvcmtsZXRHbG9i
YWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgPSBDeWd3aW5QYXRoSWZOZWVkZWQoJHdvcmtsZXRHbG9i
YWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOworJHBhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3JzRmlsZSA9IEN5Z3dpblBhdGhJZk5lZWRlZCgkcGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVD
b25zdHJ1Y3RvcnNGaWxlKTsKICRzdXBwbGVtZW50YWxNYWtlZmlsZURlcHMgPSBDeWd3aW5QYXRo
SWZOZWVkZWQoJHN1cHBsZW1lbnRhbE1ha2VmaWxlRGVwcyk7CiAKIG9wZW4gRkgsICI8ICRpZGxG
aWxlc0xpc3QiIG9yIGRpZSAiQ2Fubm90IG9wZW4gJGlkbEZpbGVzTGlzdFxuIjsKQEAgLTgwLDYg
Kzg4LDggQEAgbXkgJHdpbmRvd0NvbnN0cnVjdG9yc0NvZGUgPSAiIjsKIG15ICR3b3JrZXJHbG9i
YWxTY29wZUNvbnN0cnVjdG9yc0NvZGUgPSAiIjsKIG15ICRkZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZUNvbnN0cnVjdG9yc0NvZGUgPSAiIjsKIG15ICRzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVD
b25zdHJ1Y3RvcnNDb2RlID0gIiI7CitteSAkd29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3Jz
Q29kZSA9ICIiOworbXkgJHBhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzQ29kZSA9
ICIiOwogCiAjIEdldCByaWQgb2YgZHVwbGljYXRlcyBpbiBpZGxGaWxlcyBhcnJheS4KIG15ICVp
ZGxGaWxlSGFzaCA9IG1hcCB7ICRfLCAxIH0gQGlkbEZpbGVzOwpAQCAtMTQzLDYgKzE1MywxMCBA
QCBmb3JlYWNoIG15ICRpZGxGaWxlIChzb3J0IGtleXMgJWlkbEZpbGVIYXNoKSB7CiAgICAgICAg
ICAgICAgICAgICAgICRkZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0NvZGUg
Lj0gJGF0dHJpYnV0ZUNvZGU7CiAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGdsb2JhbENvbnRl
eHQgZXEgIlNlcnZpY2VXb3JrZXIiKSB7CiAgICAgICAgICAgICAgICAgICAgICRzZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNDb2RlIC49ICRhdHRyaWJ1dGVDb2RlOworICAgICAg
ICAgICAgICAgIH0gZWxzaWYgKCRnbG9iYWxDb250ZXh0IGVxICJXb3JrbGV0IikgeworICAgICAg
ICAgICAgICAgICAgICAkd29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzQ29kZSAuPSAkYXR0
cmlidXRlQ29kZTsKKyAgICAgICAgICAgICAgICB9IGVsc2lmICgkZ2xvYmFsQ29udGV4dCBlcSAi
UGFpbnRXb3JrbGV0IikgeworICAgICAgICAgICAgICAgICAgICAkcGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGVDb25zdHJ1Y3RvcnNDb2RlIC49ICRhdHRyaWJ1dGVDb2RlOwogICAgICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIGRpZSAiVW5zdXBwb3J0ZWQgZ2xvYmFsIGNv
bnRleHQgJyRnbG9iYWxDb250ZXh0JyB1c2VkIGluIFtFeHBvc2VkXSBhdCAkaWRsRmlsZSI7CiAg
ICAgICAgICAgICAgICAgfQpAQCAtMTU3LDYgKzE3MSw4IEBAIEdlbmVyYXRlUGFydGlhbEludGVy
ZmFjZSgiRE9NV2luZG93IiwgJHdpbmRvd0NvbnN0cnVjdG9yc0NvZGUsICR3aW5kb3dDb25zdHJ1
Y3RvCiBHZW5lcmF0ZVBhcnRpYWxJbnRlcmZhY2UoIldvcmtlckdsb2JhbFNjb3BlIiwgJHdvcmtl
ckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzQ29kZSwgJHdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0
b3JzRmlsZSk7CiBHZW5lcmF0ZVBhcnRpYWxJbnRlcmZhY2UoIkRlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlIiwgJGRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzQ29kZSwgJGRl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSk7CiBHZW5lcmF0ZVBhcnRp
YWxJbnRlcmZhY2UoIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSIsICRzZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGVDb25zdHJ1Y3RvcnNDb2RlLCAkc2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3JzRmlsZSk7CitHZW5lcmF0ZVBhcnRpYWxJbnRlcmZhY2UoIldvcmtsZXRHbG9iYWxTY29w
ZSIsICR3b3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNDb2RlLCAkd29ya2xldEdsb2JhbFNj
b3BlQ29uc3RydWN0b3JzRmlsZSk7CitHZW5lcmF0ZVBhcnRpYWxJbnRlcmZhY2UoIlBhaW50V29y
a2xldEdsb2JhbFNjb3BlIiwgJHBhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzQ29k
ZSwgJHBhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSk7CiAKICMgUmVzb2x2
ZXMgcGFydGlhbCBpbnRlcmZhY2VzIGFuZCBpbXBsZW1lbnRzIGRlcGVuZGVuY2llcy4KIGZvcmVh
Y2ggbXkgJGlkbEZpbGUgKHNvcnQga2V5cyAlc3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludEltYWdlVmFsdWUuY3BwCmluZGV4IGE2OTBlNDFkNzY3
MWRlYTAzNTMyMWZhZmU3YjdmYTk3MTFhYmRhNTIuLjYxNjQxMzU4NmNmNjc2NDk3YjFhMjNlNjAw
MWMyNjU2YzBlN2M2ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludElt
YWdlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludEltYWdlVmFsdWUu
Y3BwCkBAIC0yOSw4ICsyOSw4IEBACiAKICNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKIAot
I2luY2x1ZGUgIkNTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiQ3VzdG9t
UGFpbnRJbWFnZS5oIgorI2luY2x1ZGUgIlBhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5j
bHVkZSAiUmVuZGVyRWxlbWVudC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aD4KIApAQCAtNTAsOCArNTAsMTAgQEAgUmVmUHRyPEltYWdlPiBDU1NQYWludEltYWdlVmFsdWU6
OmltYWdlKFJlbmRlckVsZW1lbnQmIHJlbmRlckVsZW1lbnQsIGNvbnN0IEZsb2EKIHsKICAgICBp
ZiAoc2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8mIHNl
bGVjdGVkR2xvYmFsU2NvcGUgPSByZW5kZXJFbGVtZW50LmRvY3VtZW50KCkuZW5zdXJlQ1NTUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGUoKTsKLSAgICBhdXRvKiByZWdpc3RyYXRpb24gPSBzZWxlY3Rl
ZEdsb2JhbFNjb3BlLnBhaW50RGVmaW5pdGlvbk1hcCgpLmdldChtX25hbWUpOworICAgIGF1dG8q
IHNlbGVjdGVkR2xvYmFsU2NvcGUgPSByZW5kZXJFbGVtZW50LmRvY3VtZW50KCkuZ2V0Q1NTUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGUoKTsKKyAgICBpZiAoIXNlbGVjdGVkR2xvYmFsU2NvcGUpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8qIHJlZ2lzdHJhdGlvbiA9IHNlbGVjdGVk
R2xvYmFsU2NvcGUtPnBhaW50RGVmaW5pdGlvbk1hcCgpLmdldChtX25hbWUpOwogCiAgICAgaWYg
KCFyZWdpc3RyYXRpb24pCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGVkOTczY2QzOGQ2OGU0M2NjNTI4NWM1ODEwNGIyNWRkYjZlMTBjMjgu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDU0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ1NTUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUuaCIKLQotI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLVJlZjxDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZT4gQ1NTUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGU6OmNyZWF0ZSgpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGUoKSk7Ci19Ci0KLUNTU1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
OjpDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSgpCi17Ci19Ci0KLWRvdWJsZSBDU1NQYWludFdv
cmtsZXRHbG9iYWxTY29wZTo6ZGV2aWNlUGl4ZWxSYXRpbygpCi17Ci0gICAgcmV0dXJuIDEuMDsK
LX0KLQotRXhjZXB0aW9uT3I8dm9pZD4gQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZFJl
Z2lzdGVyZWRQYWludCgpCi17Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50V29ya2xl
dEdsb2JhbFNjb3BlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzYjBkOWQ4ZjNm
MDIzN2UyNzkyZmNlZjdlNDc3ZmU1OGM2MmEzMDguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50V29ya2xldEds
b2JhbFNjb3BlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoQ1NTX1BBSU5USU5HX0FQSSkKLQotI2luY2x1ZGUgIkNTU1BhaW50Q2FsbGJhY2suaCIKLSNp
bmNsdWRlICJFeGNlcHRpb25Pci5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFj
ZSBKU0MgewotCi1jbGFzcyBKU1ZhbHVlOwotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1jbGFzcyBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlPiB7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZT4gY3JlYXRlKCk7Ci0KLSAgICBF
eGNlcHRpb25Pcjx2b2lkPiBhZGRSZWdpc3RlcmVkUGFpbnQoKTsKLSAgICBkb3VibGUgZGV2aWNl
UGl4ZWxSYXRpbygpOwotCi0gICAgc3RydWN0IFBhaW50RGVmaW5pdGlvbiB7Ci0gICAgICAgIGNv
bnN0IEF0b21pY1N0cmluZyBuYW1lOwotICAgICAgICBjb25zdCBSZWY8Q1NTUGFpbnRDYWxsYmFj
az4gcGFpbnRDYWxsYmFjazsKLSAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4gaW5wdXRQcm9w
ZXJ0aWVzOwotICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiBpbnB1dEFyZ3VtZW50czsKLSAg
ICB9OwotCi0gICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxQYWludERlZmluaXRp
b24+PiYgcGFpbnREZWZpbml0aW9uTWFwKCkgeyByZXR1cm4gbV9wYWludERlZmluaXRpb25NYXA7
IH0KLQotcHJpdmF0ZToKLSAgICBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSgpOwotCi0gICAg
SGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxQYWludERlZmluaXRpb24+PiBtX3BhaW50
RGVmaW5pdGlvbk1hcDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLSNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5pZGwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1MzZjMGE0MTM5NWMwYTFhMDg0ZmExZjdlYjVh
NmMyYmE3MmE2MWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmlkbAorKysg
L2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0qIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0qCi0qIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSogYXJlIG1ldDoKLSogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0qICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0qCi0qIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0qIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0qIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0qIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotKi8KLQotWwotICAg
IEVuYWJsZWRBdFJ1bnRpbWU9Q1NTUGFpbnRpbmdBUEksCi0gICAgQ29uZGl0aW9uYWw9Q1NTX1BB
SU5USU5HX0FQSSwKLSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAotICAgIEpTQ3VzdG9t
TWFya0Z1bmN0aW9uLAotICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdAotXSBpbnRlcmZhY2Ug
Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUgewotICAgIFtDdXN0b20sIE1heVRocm93RXhjZXB0
aW9uXSB2b2lkIHJlZ2lzdGVyUGFpbnQoRE9NU3RyaW5nIG5hbWUsIEZ1bmN0aW9uIHBhaW50Q3Rv
cik7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgZGV2aWNlUGl4
ZWxSYXRpbzsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRX
b3JrbGV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuY3BwCmlu
ZGV4IDEyMDY4MWI4ZDc2MTM0NmRhNzJhY2M1YTBiMjI2OWUxNDA3MzU4OWIuLmRjZWI3ZWU5YjYw
NDkwZGMwMTgxZTVjNmYxODY1ZDAyY2JjZjJhY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9ET01DU1NQYWludFdvcmtsZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01D
U1NQYWludFdvcmtsZXQuY3BwCkBAIC0yOCwxNiArMjgsMTcgQEAKIAogI2lmIEVOQUJMRShDU1Nf
UEFJTlRJTkdfQVBJKQogCi0jaW5jbHVkZSAiQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIK
ICNpbmNsdWRlICJET01DU1NOYW1lc3BhY2UuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2lu
Y2x1ZGUgIldvcmtsZXQuaCIKKwogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlJiBET01DU1NQ
YWludFdvcmtsZXQ6OmVuc3VyZVBhaW50V29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50JiBkb2N1
bWVudCkKK1dvcmtsZXQmIERPTUNTU1BhaW50V29ya2xldDo6ZW5zdXJlUGFpbnRXb3JrbGV0KERv
Y3VtZW50JiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gZG9jdW1lbnQuZW5zdXJlQ1NTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUoKTsKKyAgICByZXR1cm4gZG9jdW1lbnQuZW5zdXJlQ1NTUGFpbnRX
b3JrbGV0KCk7CiB9CiAKIERPTUNTU1BhaW50V29ya2xldCogRE9NQ1NTUGFpbnRXb3JrbGV0Ojpm
cm9tKERPTUNTU05hbWVzcGFjZSYgY3NzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0RPTUNTU1BhaW50V29ya2xldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29y
a2xldC5oCmluZGV4IGVlNWVmYjExZDE5YmI2MmYzOGU1NmUxMGU1ZDYxNjNjYzlkOGZiM2YuLmEy
Y2IzNzNmNmEwMzQxM2QxMjFiNDAxNDM0YmZkOWVmOTlhOTc2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmgKQEAgLTM1LDE0ICszNSwxNCBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKLWNsYXNzIENTU1BhaW50V29ya2xldEdsb2JhbFNj
b3BlOworY2xhc3MgV29ya2xldDsKIGNsYXNzIERPTUNTU05hbWVzcGFjZTsKIAogY2xhc3MgRE9N
Q1NTUGFpbnRXb3JrbGV0IGZpbmFsIDogcHVibGljIFN1cHBsZW1lbnQ8RE9NQ1NTTmFtZXNwYWNl
PiB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgRE9NQ1NTUGFpbnRXb3JrbGV0KERPTUNTU05hbWVz
cGFjZSYpIHsgfQogCi0gICAgc3RhdGljIENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlJiBlbnN1
cmVQYWludFdvcmtsZXRHbG9iYWxTY29wZShEb2N1bWVudCYpOworICAgIHN0YXRpYyBXb3JrbGV0
JiBlbnN1cmVQYWludFdvcmtsZXQoRG9jdW1lbnQmKTsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMg
RE9NQ1NTUGFpbnRXb3JrbGV0KiBmcm9tKERPTUNTU05hbWVzcGFjZSYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmlkbAppbmRleCAxOTBjZGI0NWVjNzUzZGViYmU5NmY4
ZDgzMzgxM2Y0NDYzNWFlOGMzLi5hYTU5ZTVlZTJkZTkxODFkMzA0N2ZlMzQ4MDRmZTUyN2EyNmY3
NDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0Lmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmlkbApAQCAtMjcs
NiArMjcsNSBAQAogICAgIEVuYWJsZWRBdFJ1bnRpbWU9Q1NTUGFpbnRpbmdBUEksCiAgICAgQ29u
ZGl0aW9uYWw9Q1NTX1BBSU5USU5HX0FQSSwKIF0gcGFydGlhbCBpbnRlcmZhY2UgRE9NQ1NTTmFt
ZXNwYWNlIHsKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBub3QgYWN0dWFsbHkgcGFydCBvZiB0aGUg
c3BlYywgYW5kIHNob3VsZCBiZSByZXBsYWNlZCB3aGVuIHdvcmtsZXRzIGFyZSBpbXBsZW1lbnRl
ZAotICAgIFtJbXBsZW1lbnRlZEFzPWVuc3VyZVBhaW50V29ya2xldEdsb2JhbFNjb3BlLENhbGxX
aXRoPURvY3VtZW50XSBzdGF0aWMgcmVhZG9ubHkgYXR0cmlidXRlIENTU1BhaW50V29ya2xldEds
b2JhbFNjb3BlIHBhaW50V29ya2xldEdsb2JhbFNjb3BlOworICAgIFtJbXBsZW1lbnRlZEFzPWVu
c3VyZVBhaW50V29ya2xldCxDYWxsV2l0aD1Eb2N1bWVudF0gc3RhdGljIHJlYWRvbmx5IGF0dHJp
YnV0ZSBXb3JrbGV0IHBhaW50V29ya2xldDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRl
eCA3YjQ4MDhiZTZhMzg2NzUxMDA4MGMwYmE0MDJjMTcxZjFlNTgwMzA4Li4xNjY0M2VkMTljNzA5
MjIxMjc3M2EwZTMwM2JkZGUyZDdhZTg3NjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAg
LTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJDREFUQVNlY3Rpb24uaCIKICNpbmNsdWRlICJDU1NB
bmltYXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiQ1NTRm9udFNlbGVjdG9yLmgiCi0jaW5j
bHVkZSAiQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJDU1NTdHlsZURl
Y2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVTaGVldC5oIgogI2luY2x1ZGUgIkNhY2hl
ZENTU1N0eWxlU2hlZXQuaCIKQEAgLTE0MCw2ICsxMzksNyBAQAogI2luY2x1ZGUgIlBhZ2VDb25z
b2xlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiUGFnZVRyYW5z
aXRpb25FdmVudC5oIgorI2luY2x1ZGUgIlBhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1Mb2NhbGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgpAQCAtMjE3LDYgKzIxNyw3IEBA
CiAjaW5jbHVkZSAiV2ViQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiV2hlZWxFdmVudC5oIgogI2lu
Y2x1ZGUgIldpbmRvd0ZlYXR1cmVzLmgiCisjaW5jbHVkZSAiV29ya2xldC5oIgogI2luY2x1ZGUg
IlhNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAiWE1MRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRl
ICJYTUxOU05hbWVzLmgiCkBAIC04Mzc3LDExICs4Mzc4LDE2IEBAIHZvaWQgRG9jdW1lbnQ6OmZy
YW1lV2FzRGlzY29ubmVjdGVkRnJvbU93bmVyKCkKIH0KIAogI2lmIEVOQUJMRShDU1NfUEFJTlRJ
TkdfQVBJKQotQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUmIERvY3VtZW50OjplbnN1cmVDU1NQ
YWludFdvcmtsZXRHbG9iYWxTY29wZSgpCitXb3JrbGV0JiBEb2N1bWVudDo6ZW5zdXJlQ1NTUGFp
bnRXb3JrbGV0KCkKIHsKLSAgICBpZiAoIW1fQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUpCi0g
ICAgICAgIG1fQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUgPSBDU1NQYWludFdvcmtsZXRHbG9i
YWxTY29wZTo6Y3JlYXRlKCk7Ci0gICAgcmV0dXJuICptX0NTU1BhaW50V29ya2xldEdsb2JhbFNj
b3BlOworICAgIGlmICghbV9DU1NQYWludFdvcmtsZXQpCisgICAgICAgIG1fQ1NTUGFpbnRXb3Jr
bGV0ID0gV29ya2xldDo6Y3JlYXRlKCk7CisgICAgcmV0dXJuICptX0NTU1BhaW50V29ya2xldDsK
K30KKwordm9pZCBEb2N1bWVudDo6c2V0Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoUmVmPFBh
aW50V29ya2xldEdsb2JhbFNjb3BlPiYmIHNjb3BlKQoreworICAgIG1fY3NzUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUgPSBXVEZNb3ZlKHNjb3BlKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCmluZGV4IDg1NDJjMTU1NjcxN2YyN2I2MDg5MDdkMmQxNGVlMTRjZGEyNDhmZDguLjRiNDYy
MzM0M2ZjZGUwYjRiMmI0OTk3YjRhMzQzMGJkZTFlOWJjNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CkBAIC04OCw3ICs4OCw2IEBAIGNsYXNzIEF0dHI7CiBjbGFzcyBDREFUQVNlY3Rpb247CiBjbGFz
cyBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOwogY2xhc3MgQ1NTRm9udFNlbGVjdG9yOwotY2xhc3Mg
Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU7CiBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uOwog
Y2xhc3MgQ1NTU3R5bGVTaGVldDsKIGNsYXNzIENhY2hlZENTU1N0eWxlU2hlZXQ7CkBAIC0xNTQs
NiArMTUzLDcgQEAgY2xhc3MgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0czsKIGNsYXNzIE5v
ZGVGaWx0ZXI7CiBjbGFzcyBOb2RlSXRlcmF0b3I7CiBjbGFzcyBQYWdlOworY2xhc3MgUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGU7CiBjbGFzcyBQbGF0Zm9ybU1vdXNlRXZlbnQ7CiBjbGFzcyBQcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb247CiBjbGFzcyBRdWFsaWZpZWROYW1lOwpAQCAtMTk0LDYgKzE5NCw3
IEBAIGNsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dDsKIGNsYXNzIFdlYkdQVVJlbmRlcmluZ0Nv
bnRleHQ7CiBjbGFzcyBXZWJNZXRhbFJlbmRlcmluZ0NvbnRleHQ7CiBjbGFzcyBXaW5kb3dQcm94
eTsKK2NsYXNzIFdvcmtsZXQ7CiBjbGFzcyBYUGF0aEV2YWx1YXRvcjsKIGNsYXNzIFhQYXRoRXhw
cmVzc2lvbjsKIGNsYXNzIFhQYXRoTlNSZXNvbHZlcjsKQEAgLTEzNTAsNiArMTM1MSwxMCBAQCBw
dWJsaWM6CiAgICAgLy8gQ2FsbGVycyBzaG91bGQgdHJ5IHRvIGNyZWF0ZSB0aGUgQ29uc29sZU1l
c3NhZ2UgdGhlbXNlbHZlcy4KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZENvbnNvbGVNZXNz
YWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1
bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyID0gMCkgZmluYWw7CiAKKyAgICAvLyBUaGUg
Zm9sbG93aW5nIGFkZE1lc3NhZ2UgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZC4KKyAgICAvLyBDYWxs
ZXJzIHNob3VsZCB0cnkgdG8gY3JlYXRlIHRoZSBDb25zb2xlTWVzc2FnZSB0aGVtc2VsdmVzLgor
ICAgIHZvaWQgYWRkTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIHVuc2lnbmVkIGxpbmVOdW1i
ZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0
YWNrPiYmLCBKU0M6OkV4ZWNTdGF0ZSogPSBudWxscHRyLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJ
ZGVudGlmaWVyID0gMCkgZmluYWw7CisKICAgICBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmln
aW4oKSBjb25zdCB7IHJldHVybiAqU2VjdXJpdHlDb250ZXh0OjpzZWN1cml0eU9yaWdpbigpOyB9
CiAgICAgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRv
cERvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKTsgfQogCkBAIC0xNTE3LDcgKzE1MjIsOSBAQCBw
dWJsaWM6CiAgICAgYm9vbCByZWdpc3RlckNTU1Byb3BlcnR5KENTU1JlZ2lzdGVyZWRDdXN0b21Q
cm9wZXJ0eSYmKTsKIAogI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQotICAgIENTU1BhaW50
V29ya2xldEdsb2JhbFNjb3BlJiBlbnN1cmVDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSgpOwor
ICAgIFdvcmtsZXQmIGVuc3VyZUNTU1BhaW50V29ya2xldCgpOworICAgIFBhaW50V29ya2xldEds
b2JhbFNjb3BlKiBnZXRDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSgpIHsgcmV0dXJuIG1fY3Nz
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuZ2V0KCk7IH0KKyAgICB2b2lkIHNldENTU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlKFJlZjxQYWludFdvcmtsZXRHbG9iYWxTY29wZT4mJik7CiAjZW5kaWYK
IAogICAgIHZvaWQgc2V0QXNSdW5uaW5nVXNlclNjcmlwdHMoKSB7IG1faXNSdW5uaW5nVXNlclNj
cmlwdHMgPSB0cnVlOyB9CkBAIC0xNTcwLDEwICsxNTc3LDYgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBmaW5hbCB7IHJlZigpOyB9CiAgICAgdm9pZCBk
ZXJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KIAotICAgIC8v
IFRoZSBmb2xsb3dpbmcgYWRkTWVzc2FnZSBmdW5jdGlvbiBpcyBkZXByZWNhdGVkLgotICAgIC8v
IENhbGxlcnMgc2hvdWxkIHRyeSB0byBjcmVhdGUgdGhlIENvbnNvbGVNZXNzYWdlIHRoZW1zZWx2
ZXMuCi0gICAgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgdW5zaWduZWQgbGlu
ZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRD
YWxsU3RhY2s+JiYsIEpTQzo6RXhlY1N0YXRlKiA9IG51bGxwdHIsIHVuc2lnbmVkIGxvbmcgcmVx
dWVzdElkZW50aWZpZXIgPSAwKSBmaW5hbDsKLQogICAgIFNlY29uZHMgbWluaW11bURPTVRpbWVy
SW50ZXJ2YWwoKSBjb25zdCBmaW5hbDsKIAogICAgIFNlY29uZHMgZG9tVGltZXJBbGlnbm1lbnRJ
bnRlcnZhbChib29sIGhhc1JlYWNoZWRNYXhOZXN0aW5nTGV2ZWwpIGNvbnN0IGZpbmFsOwpAQCAt
MjA2MCw3ICsyMDYzLDggQEAgcHJpdmF0ZToKICAgICBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVy
dHlTZXQgbV9DU1NSZWdpc3RlcmVkUHJvcGVydHlTZXQ7CiAKICNpZiBFTkFCTEUoQ1NTX1BBSU5U
SU5HX0FQSSkKLSAgICBSZWZQdHI8Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+IG1fQ1NTUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGU7CisgICAgUmVmUHRyPFdvcmtsZXQ+IG1fQ1NTUGFpbnRXb3Jr
bGV0OworICAgIFJlZlB0cjxQYWludFdvcmtsZXRHbG9iYWxTY29wZT4gbV9jc3NQYWludFdvcmts
ZXRHbG9iYWxTY29wZTsKICNlbmRpZgogCiAgICAgYm9vbCBtX2lzUnVubmluZ1VzZXJTY3JpcHRz
IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZh
Y3RvcnkuaW4gYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCmluZGV4
IDYwYWIxYTU4Mjg4YmU5OWEyOTdlZTkyM2I4ODk0MGYxOTNmNmY1NWYuLjc4YTIyYjMxNmE0YzQ2
ODBiMWQ3YzIyNzRhY2I2YWI3ZmQ1NjQ4YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudFRhcmdldEZhY3RvcnkuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFy
Z2V0RmFjdG9yeS5pbgpAQCAtNTIsNiArNTIsNyBAQCBXZWJBbmltYXRpb24KIFdlYktpdE1lZGlh
S2V5U2Vzc2lvbiBjb25kaXRpb25hbD1MRUdBQ1lfRU5DUllQVEVEX01FRElBCiBXZWJTb2NrZXQK
IFdvcmtlcgorV29ya2xldEdsb2JhbFNjb3BlIGNvbmRpdGlvbmFsPUNTU19QQUlOVElOR19BUEkK
IFhNTEh0dHBSZXF1ZXN0CiBYTUxIdHRwUmVxdWVzdFVwbG9hZAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXggYmE1YzM2MzI0YmM4MzQwMGU0
NGI4YzljMTViMTU1ZTU4MzcwY2ZiZi4uNjk4MmM4NWM4ZTRiYTFiZWE2NTI0ZDBiOWUyMDljYzM1
ZjNjNzE4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0
LmNwcApAQCAtNTQsNiArNTQsOCBAQAogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAj
aW5jbHVkZSAiV29ya2VyTmF2aWdhdG9yLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCisj
aW5jbHVkZSAiV29ya2xldEdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29ya2xldFNjcmlwdENv
bnRyb2xsZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9DYXRjaFNjb3BlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvRXhjZXB0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNQcm9taXNlLmg+CkBAIC00NzYsOCArNDc4LDE0IEBAIEpTQzo6Vk0mIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OnZtKCkKIHsKICAgICBpZiAoaXM8RG9jdW1lbnQ+KCp0aGlzKSkKICAgICAg
ICAgcmV0dXJuIGNvbW1vblZNKCk7CisgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPigqdGhp
cykpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpLnNj
cmlwdCgpLT52bSgpOworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorICAgIGlmIChpczxX
b3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlzKSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFdvcmts
ZXRHbG9iYWxTY29wZT4oKnRoaXMpLnNjcmlwdCgpLT52bSgpOworI2VuZGlmCiAKLSAgICByZXR1
cm4gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCp0aGlzKS5zY3JpcHQoKS0+dm0oKTsKKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAogUmVqZWN0ZWRQcm9taXNlVHJhY2tlciYgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6ZW5zdXJlUmVqZWN0ZWRQcm9taXNlVHJhY2tlclNsb3coKQpA
QCAtNTE5LDggKzUyNywxOSBAQCBKU0M6OkV4ZWNTdGF0ZSogU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6ZXhlY1N0YXRlKCkKICAgICAgICAgcmV0dXJuIGV4ZWNTdGF0ZUZyb21QYWdlKG1haW5UaHJl
YWROb3JtYWxXb3JsZCgpLCBkb2N1bWVudC5wYWdlKCkpOwogICAgIH0KIAotICAgIFdvcmtlckds
b2JhbFNjb3BlKiB3b3JrZXJHbG9iYWxTY29wZSA9IHN0YXRpY19jYXN0PFdvcmtlckdsb2JhbFNj
b3BlKj4odGhpcyk7Ci0gICAgcmV0dXJuIGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZSh3
b3JrZXJHbG9iYWxTY29wZSk7CisgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykp
IHsKKyAgICAgICAgV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlID0gZG93bmNh
c3Q8V29ya2VyR2xvYmFsU2NvcGU+KCp0aGlzKTsKKyAgICAgICAgcmV0dXJuIGV4ZWNTdGF0ZUZy
b21Xb3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSk7CisgICAgfQorI2lmIEVOQUJM
RShDU1NfUEFJTlRJTkdfQVBJKQorICAgIGlmIChpczxXb3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlz
KSkgeworICAgICAgICBXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtsZXRHbG9iYWxTY29wZSA9IGRv
d25jYXN0PFdvcmtsZXRHbG9iYWxTY29wZT4oKnRoaXMpOworICAgICAgICByZXR1cm4gZXhlY1N0
YXRlRnJvbVdvcmtsZXRHbG9iYWxTY29wZSh3b3JrbGV0R2xvYmFsU2NvcGUpOworICAgIH0KKyNl
bmRpZgorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKIFN0cmluZyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpkb21haW5Gb3JDYWNoZVBhcnRpdGlv
bigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApp
bmRleCAyYjY0NzVlNjI3ZGNlZmQ1ZGRiNjQzNGUxNTE1NTQ2NWU1NWM0N2U0Li43ODU5MDQ1ODIz
YjdjNjMwNTBhZTAxZjFhNjQ1YmFkMzBiMmRjNzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTg5LDYgKzg5LDcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCBib29sIGlzRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgYm9vbCBpc1dvcmtlckdsb2JhbFNjb3BlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgaXNXb3JrbGV0R2xvYmFsU2NvcGUoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogCiAgICAgdmlydHVhbCBib29sIGlzQ29udGV4dFRocmVhZCgpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNv
bnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29y
a2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggY2FjMDYyNTY5OWE0MThi
ODkwZDNkMTEzZDNjNDkyN2JkZTZmZWM5ZC4uYjIwY2JiYzk1MDcwMjgxMWI2NTg5YWMxZGZiZDU3
MzM5MTkzZDMzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93
b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKQEAgLTYwLDcgKzYwLDcg
QEAgSW5qZWN0ZWRTY3JpcHQgV29ya2VyRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JF
dmFsKEVycm9yU3RyaW5nJiBlcnJvclN0cmkKICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0
KCk7CiAgICAgfQogCi0gICAgSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlID0gZXhlY1N0YXRl
RnJvbVdvcmtlckdsb2JhbFNjb3BlKCZtX3dvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBKU0M6OkV4
ZWNTdGF0ZSogc2NyaXB0U3RhdGUgPSBleGVjU3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUobV93
b3JrZXJHbG9iYWxTY29wZSk7CiAgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0TWFuYWdlcigpLmlu
amVjdGVkU2NyaXB0Rm9yKHNjcmlwdFN0YXRlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5j
cHAKaW5kZXggOWNjNjlkMTcyNGNkYWQxOGY5OGUzZDNiMzJmMjk2OGE1NTRlMDY3ZC4uOGMzMjE0
ODdjNjg1ZmQzNGZhZWFhNzU1MGM5OGEyMjkwODc1ZDMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdl
bnQuY3BwCkBAIC02NSw3ICs2NSw3IEBAIEluamVjdGVkU2NyaXB0IFdvcmtlclJ1bnRpbWVBZ2Vu
dDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nJiBlcnJvclN0cmluCiAgICAgICAg
IHJldHVybiBJbmplY3RlZFNjcmlwdCgpOwogICAgIH0KIAotICAgIEpTQzo6RXhlY1N0YXRlKiBz
Y3JpcHRTdGF0ZSA9IGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZSgmbV93b3JrZXJHbG9i
YWxTY29wZSk7CisgICAgSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlID0gZXhlY1N0YXRlRnJv
bVdvcmtlckdsb2JhbFNjb3BlKG1fd29ya2VyR2xvYmFsU2NvcGUpOwogICAgIHJldHVybiBpbmpl
Y3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50
SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJ
bWFnZS5jcHAKaW5kZXggZDJlNDJjMGM5ZTYxOTlmNTI3NDI5MTY3MGYxN2EwNmU5ZGU4MjBmYi4u
MTVhYTkyNGMyYjYxNzFlNTM1MGMxMDFkNDQwYmU2YzNjY2E1MGM5MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHAKQEAg
LTM3LDcgKzM3LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DdXN0b21QYWludEltYWdl
OjpDdXN0b21QYWludEltYWdlKGNvbnN0IENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWlu
dERlZmluaXRpb24mIGRlZmluaXRpb24sIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKK0N1c3RvbVBh
aW50SW1hZ2U6OkN1c3RvbVBhaW50SW1hZ2UoY29uc3QgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6
OlBhaW50RGVmaW5pdGlvbiYgZGVmaW5pdGlvbiwgY29uc3QgRmxvYXRTaXplJiBzaXplKQogICAg
IDogbV9wYWludENhbGxiYWNrKGRlZmluaXRpb24ucGFpbnRDYWxsYmFjay5nZXQoKSkKIHsKICAg
ICBzZXRDb250YWluZXJTaXplKHNpemUpOwpAQCAtNjMsNyArNjMsNiBAQCBJbWFnZURyYXdSZXN1
bHQgQ3VzdG9tUGFpbnRJbWFnZTo6ZG9DdXN0b21QYWludChHcmFwaGljc0NvbnRleHQmIGRlc3RD
b250ZXh0LCBjbwogICAgIGlmIChyZXN1bHQudHlwZSgpICE9IENhbGxiYWNrUmVzdWx0VHlwZTo6
U3VjY2VzcykKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKIAot
ICAgIFVOVVNFRF9QQVJBTShkZXN0Q29udGV4dCk7CiAgICAgYXV0byBpbWFnZSA9IGNhbnZhcy0+
Y29waWVkSW1hZ2UoKTsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3
UmVzdWx0OjpEaWROb3RoaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5oCmluZGV4IDAzYWIyYTg4ODY4M2EzZjUzODcxZGFjNWI1
MWY4OTE5ZGE0YzRkZDIuLmViNmE4MWJhZTI0ZDExN2UwY2QzNDg4ZGM0N2E3NmU2MmIwNDIwY2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50
SW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWlu
dEltYWdlLmgKQEAgLTI3LDggKzI3LDggQEAKIAogI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJ
KQogCi0jaW5jbHVkZSAiQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJH
ZW5lcmF0ZWRJbWFnZS5oIgorI2luY2x1ZGUgIlBhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBJbWFnZUJ1ZmZl
cjsKIAogY2xhc3MgQ3VzdG9tUGFpbnRJbWFnZSBmaW5hbCA6IHB1YmxpYyBHZW5lcmF0ZWRJbWFn
ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDdXN0b21QYWludEltYWdlPiBjcmVhdGUoY29u
c3QgQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OlBhaW50RGVmaW5pdGlvbiYgZGVmaW5pdGlv
biwgY29uc3QgRmxvYXRTaXplJiBzaXplKQorICAgIHN0YXRpYyBSZWY8Q3VzdG9tUGFpbnRJbWFn
ZT4gY3JlYXRlKGNvbnN0IFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb24m
IGRlZmluaXRpb24sIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKICAgICB7CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEN1c3RvbVBhaW50SW1hZ2UoZGVmaW5pdGlvbiwgc2l6ZSkpOwogICAg
IH0KQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNDdXN0b21QYWludEltYWdl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiBwcml2YXRlOgotICAgIEN1c3Rv
bVBhaW50SW1hZ2UoY29uc3QgQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OlBhaW50RGVmaW5p
dGlvbiYsIGNvbnN0IEZsb2F0U2l6ZSYpOworICAgIEN1c3RvbVBhaW50SW1hZ2UoY29uc3QgUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGU6OlBhaW50RGVmaW5pdGlvbiYsIGNvbnN0IEZsb2F0U2l6ZSYp
OwogCiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRvQ3VzdG9tUGFpbnQoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRTaXplJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRz
L1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMDEzYjRhYjk1YWEzNDdlZTlh
OWEwZTk0YTBhMzJiNzQyMjM2MzIyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBAIC0wLDAgKzEsNTUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKworI2lmIEVOQUJM
RShDU1NfUEFJTlRJTkdfQVBJKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxQYWludFdv
cmtsZXRHbG9iYWxTY29wZT4gUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OmNyZWF0ZShXZWFrUHRy
PERvY3VtZW50PiYmIGRvY3VtZW50LCBTY3JpcHRTb3VyY2VDb2RlJiYgY29kZSkKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBQYWludFdvcmtsZXRHbG9iYWxTY29wZShXVEZNb3ZlKGRvY3Vt
ZW50KSwgV1RGTW92ZShjb2RlKSkpOworfQorCitQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6UGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGUoV2Vha1B0cjxEb2N1bWVudD4mJiBkb2N1bWVudCwgU2NyaXB0
U291cmNlQ29kZSYmIGNvZGUpCisgICAgOiBXb3JrbGV0R2xvYmFsU2NvcGUoV1RGTW92ZShkb2N1
bWVudCksIFdURk1vdmUoY29kZSkpCit7Cit9CisKK2RvdWJsZSBQYWludFdvcmtsZXRHbG9iYWxT
Y29wZTo6ZGV2aWNlUGl4ZWxSYXRpbygpCit7CisgICAgcmV0dXJuIDEuMDsKK30KKworRXhjZXB0
aW9uT3I8dm9pZD4gUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZFJlZ2lzdGVyZWRQYWludCgp
Cit7CisgICAgcmV0dXJuIHsgfTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjgyYzIxMDNkN2EzNjQ3Yjc4MTY3MDlkNGNlOTRhNzY5MDlmODEzZGYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRH
bG9iYWxTY29wZS5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShDU1NfUEFJTlRJ
TkdfQVBJKQorCisjaW5jbHVkZSAiQ1NTUGFpbnRDYWxsYmFjay5oIgorI2luY2x1ZGUgIldvcmts
ZXRHbG9iYWxTY29wZS5oIgorCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEpTVmFsdWU7CisKK30g
Ly8gbmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBhaW50V29y
a2xldEdsb2JhbFNjb3BlIDogcHVibGljIFdvcmtsZXRHbG9iYWxTY29wZSB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFJlZjxQYWludFdvcmtsZXRHbG9iYWxTY29wZT4gY3JlYXRlKFdlYWtQdHI8RG9j
dW1lbnQ+JiYsIFNjcmlwdFNvdXJjZUNvZGUmJik7CisKKyAgICBib29sIGlzUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisKKyAgICBFeGNlcHRp
b25Pcjx2b2lkPiBhZGRSZWdpc3RlcmVkUGFpbnQoKTsKKyAgICBkb3VibGUgZGV2aWNlUGl4ZWxS
YXRpbygpOworCisgICAgc3RydWN0IFBhaW50RGVmaW5pdGlvbiB7CisgICAgICAgIGNvbnN0IEF0
b21pY1N0cmluZyBuYW1lOworICAgICAgICBjb25zdCBSZWY8Q1NTUGFpbnRDYWxsYmFjaz4gcGFp
bnRDYWxsYmFjazsKKyAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4gaW5wdXRQcm9wZXJ0aWVz
OworICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiBpbnB1dEFyZ3VtZW50czsKKyAgICB9Owor
CisgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxQYWludERlZmluaXRpb24+PiYg
cGFpbnREZWZpbml0aW9uTWFwKCkgeyByZXR1cm4gbV9wYWludERlZmluaXRpb25NYXA7IH0KKwor
cHJpdmF0ZToKKyAgICBQYWludFdvcmtsZXRHbG9iYWxTY29wZShXZWFrUHRyPERvY3VtZW50PiYm
LCBTY3JpcHRTb3VyY2VDb2RlJiYpOworCisgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVl
X3B0cjxQYWludERlZmluaXRpb24+PiBtX3BhaW50RGVmaW5pdGlvbk1hcDsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaWRsIGIvU291cmNlL1dlYkNvcmUvd29ya2xl
dHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1NDljY2YwNDNiZTA0
ZGI2OTFkZWQ3ZjYwYzRlZTVlYTdhY2NkYjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5pZGwKQEAgLTAsMCArMSwzOSBA
QAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisqLworCitbCisgICAgRXhwb3NlZD1QYWludFdvcmtsZXQsCisg
ICAgRW5hYmxlZEF0UnVudGltZT1DU1NQYWludGluZ0FQSSwKKyAgICBDb25kaXRpb25hbD1DU1Nf
UEFJTlRJTkdfQVBJLAorICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uLAorICAgIEpTR2VuZXJhdGVU
b05hdGl2ZU9iamVjdCwKKyAgICBJbXBsaWNpdFRoaXMsCisgICAgSXNJbW11dGFibGVQcm90b3R5
cGVFeG90aWNPYmplY3QsCisgICAgSXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3RPblBy
b3RvdHlwZSwKKyAgICBHbG9iYWw9KFdvcmtsZXQsUGFpbnRXb3JrbGV0KSwKK10gaW50ZXJmYWNl
IFBhaW50V29ya2xldEdsb2JhbFNjb3BlIDogV29ya2xldEdsb2JhbFNjb3BlIHsKKyAgICBbQ3Vz
dG9tLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCByZWdpc3RlclBhaW50KERPTVN0cmluZyBuYW1l
LCBGdW5jdGlvbiBwYWludEN0b3IpOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3RyaWN0
ZWQgZG91YmxlIGRldmljZVBpeGVsUmF0aW87Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2xldHMvV29ya2xldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43N2ZhYzVlNTBiYWVmMTk1OTY5ZTk4ODc3M2ZmZDQwYjc4NDE0NGMz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5jcHAK
QEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXb3JrbGV0LmgiCisKKyNpZiBF
TkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVk
ZSAiUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2Rl
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFdvcmtsZXQ+IFdvcmtsZXQ6OmNyZWF0
ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV29ya2xldCgpKTsKK30KKworCitXb3Jr
bGV0OjpXb3JrbGV0KCkKK3sKK30KKwordm9pZCBXb3JrbGV0OjphZGRNb2R1bGUoRG9jdW1lbnQm
IGRvY3VtZW50LCBTdHJpbmcgbW9kdWxlVVJMKQoreworICAgIGF1dG8gY29udGV4dCA9IFBhaW50
V29ya2xldEdsb2JhbFNjb3BlOjpjcmVhdGUobWFrZVdlYWtQdHIoZG9jdW1lbnQpLCBTY3JpcHRT
b3VyY2VDb2RlKG1vZHVsZVVSTCkpOworICAgIGNvbnRleHQtPmV2YWx1YXRlKCk7CisgICAgZG9j
dW1lbnQuc2V0Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoV1RGTW92ZShjb250ZXh0KSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3Jr
bGV0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNjEzZjQ5NDcwNDQ0ZWJmNDdhOTRkNGRmNzA2NzRlYjcwZGNkMmI5
NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQuaApA
QCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgRG9jdW1lbnQ7CisKK2NsYXNzIFdvcmtsZXQgOiBwdWJs
aWMgUmVmQ291bnRlZDxXb3JrbGV0PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxXb3JrbGV0
PiBjcmVhdGUoKTsKKyAgICAKKyAgICB2b2lkIGFkZE1vZHVsZShEb2N1bWVudCYsIFN0cmluZyBt
b2R1bGVVUkwpOworCitwcm90ZWN0ZWQ6CisgICAgV29ya2xldCgpOworCit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmts
ZXRzL1dvcmtsZXQuaWRsIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5pZGwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTc0Y2M5MTM4MDBiNzllZTcwYTVjNDQ2NzllZjE1ZmU3ZWM4NDlmYQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQuaWRsCkBAIC0wLDAg
KzEsMzMgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworWworICAgIEVuYWJsZWRBdFJ1bnRpbWU9
Q1NTUGFpbnRpbmdBUEksCisgICAgQ29uZGl0aW9uYWw9Q1NTX1BBSU5USU5HX0FQSSwKKyAgICBJ
bXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAorICAgIEdsb2JhbD1Xb3JrbGV0LAorXSBpbnRlcmZh
Y2UgV29ya2xldCB7CisgICAgW0NhbGxXaXRoPURvY3VtZW50XSB2b2lkIGFkZE1vZHVsZShVU1ZT
dHJpbmcgbW9kdWxlVVJMLyosIG9wdGlvbmFsIFdvcmtsZXRPcHRpb25zIG9wdGlvbnMqLyk7Cit9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldENvbnNvbGVDbGll
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjg5NTA2YjllMzkzMTM0Y2VjMzM2MzZjYTY2ZjFjNWRjMjRiODgxODIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNs
aWVudC5jcHAKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJXb3JrbGV0Q29uc29sZUNsaWVudC5oIgorCisjaWYgRU5BQkxFKENTU19Q
QUlOVElOR19BUEkpCisKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlTWVzc2FnZS5oPgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1NjcmlwdEFyZ3VtZW50cy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Nj
cmlwdENhbGxTdGFjay5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdENhbGxTdGFj
a0ZhY3RvcnkuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNwYWNlIEluc3Bl
Y3RvcjsKKworV29ya2xldENvbnNvbGVDbGllbnQ6OldvcmtsZXRDb25zb2xlQ2xpZW50KFdvcmts
ZXRHbG9iYWxTY29wZSYgd29ya2xldEdsb2JhbFNjb3BlKQorICAgIDogbV93b3JrbGV0R2xvYmFs
U2NvcGUod29ya2xldEdsb2JhbFNjb3BlKQoreworfQorCitXb3JrbGV0Q29uc29sZUNsaWVudDo6
fldvcmtsZXRDb25zb2xlQ2xpZW50KCkgPSBkZWZhdWx0OworCit2b2lkIFdvcmtsZXRDb25zb2xl
Q2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdl
TGV2ZWwgbGV2ZWwsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRB
cmd1bWVudHM+JiYgYXJndW1lbnRzKQoreworICAgIFN0cmluZyBtZXNzYWdlVGV4dDsKKyAgICBh
cmd1bWVudHMtPmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyhtZXNzYWdlVGV4dCk7CisgICAgYXV0
byBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihN
ZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2FnZVRleHQsIFdURk1v
dmUoYXJndW1lbnRzKSwgZXhlYyk7CisgICAgbV93b3JrbGV0R2xvYmFsU2NvcGUuYWRkQ29uc29s
ZU1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7Cit9CisKK3ZvaWQgV29ya2xldENvbnNvbGVDbGll
bnQ6OmNvdW50KEpTQzo6RXhlY1N0YXRlKiwgUmVmPFNjcmlwdEFyZ3VtZW50cz4mJikgeyB9CisK
K3ZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6OnRpbWUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBT
dHJpbmcmKSB7IH0KK3ZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6OnRpbWVFbmQoSlNDOjpFeGVj
U3RhdGUqLCBjb25zdCBTdHJpbmcmKSB7IH0KKwordm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6
cHJvZmlsZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpIHsgfQordm9pZCBXb3JrbGV0
Q29uc29sZUNsaWVudDo6cHJvZmlsZUVuZChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYp
IHsgfQorCit2b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50Ojp0YWtlSGVhcFNuYXBzaG90KEpTQzo6
RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJikgeyB9Cit2b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50
Ojp0aW1lU3RhbXAoSlNDOjpFeGVjU3RhdGUqLCBSZWY8U2NyaXB0QXJndW1lbnRzPiYmKSB7IH0K
Kwordm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6cmVjb3JkKEpTQzo6RXhlY1N0YXRlKiwgUmVm
PFNjcmlwdEFyZ3VtZW50cz4mJikgeyB9Cit2b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50OjpyZWNv
cmRFbmQoSlNDOjpFeGVjU3RhdGUqLCBSZWY8U2NyaXB0QXJndW1lbnRzPiYmKSB7IH0KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMv
V29ya2xldENvbnNvbGVDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MGUyNzRlZjczZDEyM2RmZTc4Nzgw
OTJhOGZhMzUxNjk0Mzg1NDQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKworI2luY2x1
ZGUgIldvcmtsZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNv
bGVDbGllbnQuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgSlNDIHsK
K2NsYXNzIEV4ZWNTdGF0ZTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXb3Jr
bGV0Q29uc29sZUNsaWVudCBmaW5hbCA6IHB1YmxpYyBKU0M6OkNvbnNvbGVDbGllbnQgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFdvcmtsZXRD
b25zb2xlQ2xpZW50KFdvcmtsZXRHbG9iYWxTY29wZSYpOworICAgIHZpcnR1YWwgfldvcmtsZXRD
b25zb2xlQ2xpZW50KCk7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIG1lc3NhZ2VXaXRoVHlwZUFu
ZExldmVsKE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIEpTQzo6RXhlY1N0YXRlKiwgUmVmPElu
c3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvdW50KEpT
Qzo6RXhlY1N0YXRlKiwgUmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHByb2ZpbGUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHRpdGxl
KSBvdmVycmlkZTsKKyAgICB2b2lkIHByb2ZpbGVFbmQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBT
dHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKKyAgICB2b2lkIHRha2VIZWFwU25hcHNob3QoSlNDOjpF
eGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKKyAgICB2b2lkIHRpbWUo
SlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKKyAgICB2b2lk
IHRpbWVFbmQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsK
KyAgICB2b2lkIHRpbWVTdGFtcChKU0M6OkV4ZWNTdGF0ZSosIFJlZjxJbnNwZWN0b3I6OlNjcmlw
dEFyZ3VtZW50cz4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCByZWNvcmQoSlNDOjpFeGVjU3RhdGUq
LCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYpIG92ZXJyaWRlOworICAgIHZvaWQg
cmVjb3JkRW5kKEpTQzo6RXhlY1N0YXRlKiwgUmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRz
PiYmKSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBXb3JrbGV0R2xvYmFsU2NvcGUmIG1fd29y
a2xldEdsb2JhbFNjb3BlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wODdjZDllMjczYjYwNmZiYzI3MzY4ZTBmMzEzMDkwMmIxMGFmZDc4Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcApA
QCAtMCwwICsxLDEyNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV29ya2xldEdsb2JhbFNj
b3BlLmgiCisKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKworI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaCIKKyNpbmNsdWRlICJKU1dvcmtsZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIlBh
Z2VDb25zb2xlQ2xpZW50LmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5Qb2xpY3kuaCIKKyNp
bmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgi
CisKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FeGNlcHRpb24uaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0xvY2suaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxs
U3RhY2suaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNwYWNlIEluc3BlY3Rv
cjsKKworV29ya2xldEdsb2JhbFNjb3BlOjpXb3JrbGV0R2xvYmFsU2NvcGUoV2Vha1B0cjxEb2N1
bWVudD4mJiBkb2N1bWVudCwgU2NyaXB0U291cmNlQ29kZSYmIGNvZGUpCisgICAgOiBtX3Nlc3Np
b25JRChkb2N1bWVudC0+c2Vzc2lvbklEKCkpCisgICAgLCBtX3NjcmlwdChzdGQ6Om1ha2VfdW5p
cXVlPFdvcmtsZXRTY3JpcHRDb250cm9sbGVyPih0aGlzKSkKKyAgICAsIG1fZG9jdW1lbnQoV1RG
TW92ZShkb2N1bWVudCkpCisgICAgLCBtX2NvZGUoV1RGTW92ZShjb2RlKSkKK3sKKyAgICBBU1NF
UlQobV9kb2N1bWVudCk7CisgICAgRnJhbWUqIGZyYW1lID0gbV9kb2N1bWVudC0+ZnJhbWUoKTsK
KyAgICBtX2pzUnVudGltZUZsYWdzID0gKGZyYW1lID8gZnJhbWUtPnNldHRpbmdzKCkuamF2YVNj
cmlwdFJ1bnRpbWVGbGFncygpIDogSlNDOjpSdW50aW1lRmxhZ3MoKSk7CisgICAgQVNTRVJUKG1f
ZG9jdW1lbnQtPnBhZ2UoKSk7CisKKyAgICBzZXRTZWN1cml0eU9yaWdpblBvbGljeShTZWN1cml0
eU9yaWdpblBvbGljeTo6Y3JlYXRlKG1fZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpKTsKKyAg
ICBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3koc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2VjdXJp
dHlQb2xpY3k+KFVSTCB7IGNvZGUudXJsKCkgfSwgKnRoaXMpKTsKK30KKworV29ya2xldEdsb2Jh
bFNjb3BlOjp+V29ya2xldEdsb2JhbFNjb3BlKCkKK3sKKyAgICByZW1vdmVGcm9tQ29udGV4dHNN
YXAoKTsKKyAgICBtX3NjcmlwdC0+d29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcigpLT5zZXRDb25z
b2xlQ2xpZW50KG51bGxwdHIpOworfQorCit2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6ZXZhbHVh
dGUoKQoreworICAgIG1fc2NyaXB0LT5ldmFsdWF0ZShtX2NvZGUpOworfQorCitib29sIFdvcmts
ZXRHbG9iYWxTY29wZTo6aXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fc2NyaXB0LT5pc0V4ZWN1dGlvbkZvcmJpZGRlbigpOworfQorCit2b2lkIFdvcmtsZXRH
bG9iYWxTY29wZTo6ZGlzYWJsZUV2YWwoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCit7Cisg
ICAgbV9zY3JpcHQtPmRpc2FibGVFdmFsKGVycm9yTWVzc2FnZSk7Cit9CisKK3ZvaWQgV29ya2xl
dEdsb2JhbFNjb3BlOjpkaXNhYmxlV2ViQXNzZW1ibHkoY29uc3QgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UpCit7CisgICAgbV9zY3JpcHQtPmRpc2FibGVXZWJBc3NlbWJseShlcnJvck1lc3NhZ2UpOwor
fQorCitVUkwgV29ya2xldEdsb2JhbFNjb3BlOjpjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHVy
bCkgY29uc3QKK3sKKyAgICAvLyBBbHdheXMgcmV0dXJuIGEgbnVsbCBVUkwgd2hlbiBwYXNzZWQg
YSBudWxsIHN0cmluZy4KKyAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGNoYW5nZSB0aGUgVVJMIGNv
bnN0cnVjdG9yIHRvIGhhdmUgdGhpcyBiZWhhdmlvcj8KKyAgICBpZiAodXJsLmlzTnVsbCgpKQor
ICAgICAgICByZXR1cm4gVVJMKCk7CisgICAgLy8gQWx3YXlzIHVzZSBVVEYtOCBpbiBXb3JrZXJz
LgorICAgIHJldHVybiBVUkwobV9jb2RlLnVybCgpLCB1cmwpOworfQorCit2b2lkIFdvcmtsZXRH
bG9iYWxTY29wZTo6bG9nRXhjZXB0aW9uVG9Db25zb2xlKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIsIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+JiYgc3RhY2spCit7CisgICAgQVNTRVJUKG1f
ZG9jdW1lbnQpOworICAgIG1fZG9jdW1lbnQtPmxvZ0V4Y2VwdGlvblRvQ29uc29sZShlcnJvck1l
c3NhZ2UsIHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBXVEZNb3ZlKHN0YWNr
KSk7Cit9CisKK3ZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjphZGRDb25zb2xlTWVzc2FnZShzdGQ6
OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4mJiBtZXNzYWdlKQoreworICAg
IEFTU0VSVChtX2RvY3VtZW50KTsKKyAgICBtX2RvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShX
VEZNb3ZlKG1lc3NhZ2UpKTsKK30KKwordm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZENvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKK3sKKyAg
ICBBU1NFUlQobV9kb2N1bWVudCk7CisgICAgbV9kb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2Uo
c291cmNlLCBsZXZlbCwgbWVzc2FnZSwgcmVxdWVzdElkZW50aWZpZXIpOworfQorCit2b2lkIFdv
cmtsZXRHbG9iYWxTY29wZTo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2Fn
ZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2VUZXh0LCBjb25zdCBTdHJpbmcmIHNv
dXJjZVVSTCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBSZWZQ
dHI8U2NyaXB0Q2FsbFN0YWNrPiYmIGNhbGxTdGFjaywgSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB1
bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQoreworICAgIEFTU0VSVChtX2RvY3VtZW50
KTsKKyAgICBtX2RvY3VtZW50LT5hZGRNZXNzYWdlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0
LCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgV1RGTW92ZShjYWxsU3RhY2sp
LCBzdGF0ZSwgcmVxdWVzdElkZW50aWZpZXIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9i
YWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZGJmNWQ0NDIyMzM0NGUzZjU2ZGFkYzJhNmYxYjIzNTY1YjMxYzVhNQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29w
ZS5oCkBAIC0wLDAgKzEsMTI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19B
UEkpCisKKyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgi
CisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlNjcmlwdFNv
dXJjZUNvZGUuaCIKKyNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgorI2luY2x1ZGUgIlVSTC5o
IgorCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29sZU1lc3NhZ2UuaD4KKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9SdW50aW1lRmxhZ3MuaD4KKyNpbmNsdWRlIDxwYWwvU2Vzc2lvbklE
Lmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xh
c3MgV29ya2xldFNjcmlwdENvbnRyb2xsZXI7CitjbGFzcyBTY3JpcHRTb3VyY2VDb2RlOworCitj
bGFzcyBXb3JrbGV0R2xvYmFsU2NvcGUgOiBwdWJsaWMgUmVmQ291bnRlZDxXb3JrbGV0R2xvYmFs
U2NvcGU+LCBwdWJsaWMgU3VwcGxlbWVudGFibGU8V29ya2xldEdsb2JhbFNjb3BlPiwgcHVibGlj
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRh
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5Xb3JrbGV0R2xvYmFsU2NvcGUoKTsKKworICAgIHZp
cnR1YWwgYm9vbCBpc1BhaW50V29ya2xldEdsb2JhbFNjb3BlKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KKworICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb2Rl
LnVybCgpOyB9CisgICAgU3RyaW5nIG9yaWdpbigpIGNvbnN0IGZpbmFsIHsgQVNTRVJUX05PVF9S
RUFDSEVEKCk7IH0KKyAgICBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIoKSBjb25zdCB7IEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOyB9CisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyAgICBJ
REJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogaWRiQ29ubmVjdGlvblByb3h5KCkgZmluYWwg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorI2VuZGlmCisKKyAgICB2b2lkIHBvc3RUYXNrKFRh
c2smJikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorCisgICAgdm9pZCBldmFsdWF0
ZSgpOworCisgICAgdXNpbmcgUmVmQ291bnRlZDo6cmVmOworICAgIHVzaW5nIFJlZkNvdW50ZWQ6
OmRlcmVmOworCisgICAgV29ya2xldFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdCgpIHsgcmV0dXJu
IG1fc2NyaXB0LmdldCgpOyB9CisKKyAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6dW5p
cXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiYmKSBmaW5hbDsKKworICAgIGJvb2wg
aXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0IGZpbmFsOworICAgIFNlY3VyaXR5T3JpZ2lu
JiB0b3BPcmlnaW4oKSBjb25zdCBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisKKyAg
ICBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIoKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOyB9CisKKyAgICBib29sIGlzQ29udGV4dFRocmVhZCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIHRydWU7IH0KKyAgICBib29sIGlzU2VjdXJlQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgQVNT
RVJUX05PVF9SRUFDSEVEKCk7IH0KKworICAgIEpTQzo6UnVudGltZUZsYWdzIGpzUnVudGltZUZs
YWdzKCkgY29uc3QgeyByZXR1cm4gbV9qc1J1bnRpbWVGbGFnczsgfQorCitwcm90ZWN0ZWQ6Cisg
ICAgV29ya2xldEdsb2JhbFNjb3BlKFdlYWtQdHI8RG9jdW1lbnQ+JiYsIFNjcmlwdFNvdXJjZUNv
ZGUmJik7CisKK3ByaXZhdGU6CisgICAgdm9pZCByZWZTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkg
ZmluYWwgeyByZWYoKTsgfQorICAgIHZvaWQgZGVyZWZTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkg
ZmluYWwgeyBkZXJlZigpOyB9CisKKyAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBy
ZWYoKTsgfQorICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQor
CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIGNvbnN0X2Nhc3Q8V29ya2xldEdsb2JhbFNjb3BlKj4odGhpcyk7
IH0KKyAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIFdvcmtsZXRHbG9iYWxTY29wZUV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlw
ZTsgfQorCisgICAgYm9vbCBpc1dvcmtsZXRHbG9iYWxTY29wZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIHRydWU7IH0KKworICAgIHZvaWQgbG9nRXhjZXB0aW9uVG9Db25zb2xlKGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYWdlLCBjb25zdCBTdHJpbmcmLCBpbnQsIGludCwgUmVmUHRyPEluc3BlY3Rv
cjo6U2NyaXB0Q2FsbFN0YWNrPiYmKSBmaW5hbDsKKyAgICB2b2lkIGFkZE1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCB1bnNp
Z25lZCwgdW5zaWduZWQsIFJlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFjaz4mJiwgSlND
OjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBsb25nKSBmaW5hbDsKKyAgICB2b2lkIGFkZENvbnNvbGVN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiwgdW5zaWdu
ZWQgbG9uZykgZmluYWw7CisKKyAgICBFdmVudFRhcmdldCogZXJyb3JFdmVudFRhcmdldCgpIGZp
bmFsIHsgcmV0dXJuIHRoaXM7IH0KKyAgICBFdmVudFF1ZXVlJiBldmVudFF1ZXVlKCkgY29uc3Qg
ZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorCisjaWYgRU5BQkxFKFNVQlRMRV9DUllQ
VE8pCisgICAgYm9vbCB3cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIFZlY3Rv
cjx1aW50OF90PiYpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICBib29sIHVu
d3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mLCBWZWN0b3I8dWludDhfdD4mKSBm
aW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisjZW5kaWYKKyAgICBVUkwgY29tcGxldGVV
UkwoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7CisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KKyAgICBTdHJpbmcgdXNl
ckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0IGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0K
KyAgICB2b2lkIGRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgZGlz
YWJsZVdlYkFzc2VtYmx5KGNvbnN0IFN0cmluZyYpIGZpbmFsOworCisgICAgUEFMOjpTZXNzaW9u
SUQgbV9zZXNzaW9uSUQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdvcmtsZXRTY3JpcHRDb250cm9s
bGVyPiBtX3NjcmlwdDsKKworICAgIEpTQzo6UnVudGltZUZsYWdzIG1fanNSdW50aW1lRmxhZ3M7
CisgICAgV2Vha1B0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKKworICAgIFNjcmlwdFNvdXJjZUNv
ZGUgbV9jb2RlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZSkKK3N0YXRpYyBib29s
IGlzVHlwZShjb25zdCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7
IHJldHVybiBjb250ZXh0LmlzV29ya2xldEdsb2JhbFNjb3BlKCk7IH0KK1NQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfRU5EKCkKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xl
dHMvV29ya2xldEdsb2JhbFNjb3BlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmts
ZXRHbG9iYWxTY29wZS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDc1OWYwY2UxZDE2Zjg2OTE4NjAxMjc3NmYw
ZGIxNmI2MWJhYTQ3OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRz
L1dvcmtsZXRHbG9iYWxTY29wZS5pZGwKQEAgLTAsMCArMSwzNyBAQAorLyoKKyogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisqLworCitbCisgICAgQ3VzdG9tUHJveHlUb0pTT2JqZWN0LAorICAgIEV4cG9zZWQ9V29ya2xl
dCwKKyAgICBFbmFibGVkQXRSdW50aW1lPUNTU1BhaW50aW5nQVBJLAorICAgIENvbmRpdGlvbmFs
PUNTU19QQUlOVElOR19BUEksCisgICAgSlNMZWdhY3lQYXJlbnQ9SlNXb3JrbGV0R2xvYmFsU2Nv
cGVCYXNlLAorICAgIEltcGxpY2l0VGhpcywKKyAgICBJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3Rp
Y09iamVjdCwKKyAgICBJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdE9uUHJvdG90eXBl
LAorICAgIEdsb2JhbD1Xb3JrbGV0LAorXSBpbnRlcmZhY2UgV29ya2xldEdsb2JhbFNjb3BlIDog
RXZlbnRUYXJnZXQgeworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dv
cmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmts
ZXRTY3JpcHRDb250cm9sbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YThjYzNjZDhmZDg0YjdkNzczZTdl
ZDkyNTUzNjI3YmFhZjQ4ZjUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0wLDAgKzEsMTk1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCisKKyNpZiBFTkFCTEUo
Q1NTX1BBSU5USU5HX0FQSSkKKworI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUg
IkpTRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJKU0V4ZWNTdGF0ZS5oIgorI2luY2x1ZGUgIkpT
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgi
CisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgorI2luY2x1ZGUgIldvcmtsZXRDb25z
b2xlQ2xpZW50LmgiCisKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db21wbGV0aW9uLmg+Cisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRXhjZXB0aW9uLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvRXhjZXB0aW9uSGVscGVycy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dDQWN0
aXZpdHlDYWxsYmFjay5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5oPgorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb21pc2VEZWZlcnJlZFRpbWVyLmg+CisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvU3Ryb25nSW5saW5lcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7Cit1
c2luZyBuYW1lc3BhY2UgSlNDOworCitXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6V29ya2xldFNj
cmlwdENvbnRyb2xsZXIoV29ya2xldEdsb2JhbFNjb3BlKiB3b3JrbGV0R2xvYmFsU2NvcGUpCisg
ICAgOiBtX3ZtKFZNOjpjcmVhdGUoKSkKKyAgICAsIG1fd29ya2xldEdsb2JhbFNjb3BlKHdvcmts
ZXRHbG9iYWxTY29wZSkKKyAgICAsIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcigqbV92bSkK
K3sKKyAgICBtX3ZtLT5oZWFwLmFjcXVpcmVBY2Nlc3MoKTsgLy8gSXQncyBub3QgY2xlYXIgdGhh
dCB3ZSBoYXZlIGdvb2QgZGlzY2lwbGluZSBmb3IgaGVhcCBhY2Nlc3MsIHNvIHR1cm4gaXQgb24g
cGVybWFuZW50bHkuCisgICAgSlNWTUNsaWVudERhdGE6OmluaXROb3JtYWxXb3JsZChtX3ZtLmdl
dCgpKTsKK30KKworV29ya2xldFNjcmlwdENvbnRyb2xsZXI6On5Xb3JrbGV0U2NyaXB0Q29udHJv
bGxlcigpCit7CisgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0oKSk7CisgICAgbV93b3JrbGV0R2xv
YmFsU2NvcGVXcmFwcGVyLmNsZWFyKCk7CisgICAgbV92bSA9IG51bGxwdHI7CisgICAgaWYgKG1f
d29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcikgeworICAgICAgICBtX3dvcmtsZXRHbG9iYWxTY29w
ZVdyYXBwZXItPmNsZWFyRE9NR3VhcmRlZE9iamVjdHMoKTsKKyAgICAgICAgbV93b3JrbGV0R2xv
YmFsU2NvcGVXcmFwcGVyLT5zZXRDb25zb2xlQ2xpZW50KG51bGxwdHIpOworICAgICAgICBtX2Nv
bnNvbGVDbGllbnQgPSBudWxscHRyOworICAgIH0KK30KKwordm9pZCBXb3JrbGV0U2NyaXB0Q29u
dHJvbGxlcjo6Zm9yYmlkRXhlY3V0aW9uKCkKK3sKKyAgICBBU1NFUlQobV93b3JrbGV0R2xvYmFs
U2NvcGUtPmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBtX2V4ZWN1dGlvbkZvcmJpZGRlbiA9IHRy
dWU7Cit9CisKK2Jvb2wgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmlzRXhlY3V0aW9uRm9yYmlk
ZGVuKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV93b3JrbGV0R2xvYmFsU2NvcGUtPmlzQ29udGV4
dFRocmVhZCgpKTsKKyAgICByZXR1cm4gbV9leGVjdXRpb25Gb3JiaWRkZW47Cit9CisKK3ZvaWQg
V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JN
ZXNzYWdlKQoreworICAgIGluaXRTY3JpcHRJZk5lZWRlZCgpOworICAgIEpTTG9ja0hvbGRlciBs
b2NrIHsgdm0oKSB9OworCisgICAgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5zZXRFdmFs
RW5hYmxlZChmYWxzZSwgZXJyb3JNZXNzYWdlKTsKK30KKwordm9pZCBXb3JrbGV0U2NyaXB0Q29u
dHJvbGxlcjo6ZGlzYWJsZVdlYkFzc2VtYmx5KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQor
eworICAgIGluaXRTY3JpcHRJZk5lZWRlZCgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrIHsgdm0o
KSB9OworCisgICAgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5zZXRXZWJBc3NlbWJseUVu
YWJsZWQoZmFsc2UsIGVycm9yTWVzc2FnZSk7Cit9CisKKwordGVtcGxhdGU8dHlwZW5hbWUgSlNH
bG9iYWxTY29wZVByb3RvdHlwZSwgdHlwZW5hbWUgSlNHbG9iYWxTY29wZSwgdHlwZW5hbWUgR2xv
YmFsU2NvcGU+Cit2b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0V2l0aFN1
YmNsYXNzKCkKK3sKKyAgICBBU1NFUlQoIW1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcik7CisK
KyAgICBKU0xvY2tIb2xkZXIgbG9jayhtX3ZtLmdldCgpKTsKKworICAgIC8vIEV4cGxpY2l0bHkg
cHJvdGVjdCB0aGUgZ2xvYmFsIG9iamVjdCdzIHByb3RvdHlwZSBzbyBpdCBpc24ndCBjb2xsZWN0
ZWQKKyAgICAvLyB3aGVuIHdlIGFsbG9jYXRlIHRoZSBnbG9iYWwgb2JqZWN0LiAoT25jZSB0aGUg
Z2xvYmFsIG9iamVjdCBpcyBmdWxseQorICAgIC8vIGNvbnN0cnVjdGVkLCBpdCBjYW4gbWFyayBp
dHMgb3duIHByb3RvdHlwZS4pCisgICAgU3RydWN0dXJlKiBjb250ZXh0UHJvdG90eXBlU3RydWN0
dXJlID0gSlNHbG9iYWxTY29wZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKCptX3ZtLCBudWxs
cHRyLCBqc051bGwoKSk7CisgICAgU3Ryb25nPEpTR2xvYmFsU2NvcGVQcm90b3R5cGU+IGNvbnRl
eHRQcm90b3R5cGUoKm1fdm0sIEpTR2xvYmFsU2NvcGVQcm90b3R5cGU6OmNyZWF0ZSgqbV92bSwg
bnVsbHB0ciwgY29udGV4dFByb3RvdHlwZVN0cnVjdHVyZSkpOworICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gSlNHbG9iYWxTY29wZTo6Y3JlYXRlU3RydWN0dXJlKCptX3ZtLCBudWxscHRyLCBj
b250ZXh0UHJvdG90eXBlLmdldCgpKTsKKyAgICBhdXRvKiBwcm94eVN0cnVjdHVyZSA9IEpTUHJv
eHk6OmNyZWF0ZVN0cnVjdHVyZSgqbV92bSwgbnVsbHB0ciwganNOdWxsKCksIFB1cmVGb3J3YXJk
aW5nUHJveHlUeXBlKTsKKyAgICBhdXRvKiBwcm94eSA9IEpTUHJveHk6OmNyZWF0ZSgqbV92bSwg
cHJveHlTdHJ1Y3R1cmUpOworCisgICAgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLnNldCgq
bV92bSwgSlNHbG9iYWxTY29wZTo6Y3JlYXRlKCptX3ZtLCBzdHJ1Y3R1cmUsIHN0YXRpY19jYXN0
PEdsb2JhbFNjb3BlJj4oKm1fd29ya2xldEdsb2JhbFNjb3BlKSwgcHJveHkpKTsKKyAgICBjb250
ZXh0UHJvdG90eXBlU3RydWN0dXJlLT5zZXRHbG9iYWxPYmplY3QoKm1fdm0sIG1fd29ya2xldEds
b2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7CisgICAgQVNTRVJUKHN0cnVjdHVyZS0+Z2xvYmFsT2Jq
ZWN0KCkgPT0gbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKTsKKyAgICBBU1NFUlQobV93b3Jr
bGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5zdHJ1Y3R1cmUoKm1fdm0pLT5nbG9iYWxPYmplY3QoKSA9
PSBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpOworICAgIGNvbnRleHRQcm90b3R5cGUtPnN0
cnVjdHVyZSgqbV92bSktPnNldEdsb2JhbE9iamVjdCgqbV92bSwgbV93b3JrbGV0R2xvYmFsU2Nv
cGVXcmFwcGVyLmdldCgpKTsKKyAgICBjb250ZXh0UHJvdG90eXBlLT5zdHJ1Y3R1cmUoKm1fdm0p
LT5zZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbigqbV92bSwgSlNHbG9iYWxTY29wZTo6cHJv
dG90eXBlKCptX3ZtLCAqbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKSk7CisKKyAg
ICBwcm94eS0+c2V0VGFyZ2V0KCptX3ZtLCBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIuZ2V0
KCkpOworICAgIHByb3h5LT5zdHJ1Y3R1cmUoKm1fdm0pLT5zZXRHbG9iYWxPYmplY3QoKm1fdm0s
IG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7CisKKyAgICBBU1NFUlQobV93b3Jr
bGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtsZXRHbG9iYWxT
Y29wZVdyYXBwZXIpOworICAgIEFTU0VSVChhc09iamVjdChtX3dvcmtsZXRHbG9iYWxTY29wZVdy
YXBwZXItPmdldFByb3RvdHlwZURpcmVjdCgqbV92bSkpLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dv
cmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpOworCisgICAgbV9jb25zb2xlQ2xpZW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxXb3JrbGV0Q29uc29sZUNsaWVudD4oKm1fd29ya2xldEdsb2JhbFNjb3BlKTsK
KyAgICBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPnNldENvbnNvbGVDbGllbnQobV9jb25z
b2xlQ2xpZW50LmdldCgpKTsKK30KKwordm9pZCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6aW5p
dFNjcmlwdCgpCit7CisgICAgaWYgKG1fd29ya2xldEdsb2JhbFNjb3BlLT5pc1BhaW50V29ya2xl
dEdsb2JhbFNjb3BlKCkpIHsKKyAgICAgICAgaW5pdFNjcmlwdFdpdGhTdWJjbGFzczxKU1BhaW50
V29ya2xldEdsb2JhbFNjb3BlUHJvdG90eXBlLCBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLCBQ
YWludFdvcmtsZXRHbG9iYWxTY29wZT4oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVy
OjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBTdHJpbmcqIHJl
dHVybmVkRXhjZXB0aW9uTWVzc2FnZSkKK3sKKyAgICBpZiAoaXNFeGVjdXRpb25Gb3JiaWRkZW4o
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IGV4Y2Vw
dGlvbjsKKyAgICBldmFsdWF0ZShzb3VyY2VDb2RlLCBleGNlcHRpb24sIHJldHVybmVkRXhjZXB0
aW9uTWVzc2FnZSk7CisgICAgaWYgKGV4Y2VwdGlvbikgeworICAgICAgICBKU0xvY2tIb2xkZXIg
bG9jayh2bSgpKTsKKyAgICAgICAgcmVwb3J0RXhjZXB0aW9uKG1fd29ya2xldEdsb2JhbFNjb3Bl
V3JhcHBlci0+Z2xvYmFsRXhlYygpLCBleGNlcHRpb24pOworICAgIH0KK30KKwordm9pZCBXb3Jr
bGV0U2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291
cmNlQ29kZSwgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbiwgU3Ry
aW5nKiByZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2UpCit7CisgICAgaWYgKGlzRXhlY3V0aW9uRm9y
YmlkZGVuKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGluaXRTY3JpcHRJZk5lZWRlZCgpOwor
CisgICAgYXV0byYgc3RhdGUgPSAqbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxF
eGVjKCk7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9jayB7
IHZtIH07CisKKyAgICBKU0V4ZWNTdGF0ZTo6cHJvZmlsZWRFdmFsdWF0ZSgmc3RhdGUsIEpTQzo6
UHJvZmlsaW5nUmVhc29uOjpPdGhlciwgc291cmNlQ29kZS5qc1NvdXJjZUNvZGUoKSwgbV93b3Jr
bGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxUaGlzKCksIHJldHVybmVkRXhjZXB0aW9uKTsK
KworICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikgeworICAgICAgICAvLyBUaGlzIEZJWE1FIGlz
IGZyb20gaW4gV29ya2VyU2NyaXB0Q29udHJvbGxlci4KKyAgICAgICAgaWYgKC8qbV93b3JrbGV0
R2xvYmFsU2NvcGUtPmNhbkluY2x1ZGVFcnJvckRldGFpbHMoc291cmNlQ29kZS5jYWNoZWRTY3Jp
cHQoKSwgc291cmNlQ29kZS51cmwoKS5zdHJpbmcoKSkqLyB0cnVlKSB7CisgICAgICAgICAgICAv
LyBGSVhNRTogSXQncyBub3QgZ3JlYXQgdGhhdCB0aGlzIGNhbiBydW4gYXJiaXRyYXJ5IGNvZGUg
dG8gc3RyaW5nLWlmeSB0aGUgdmFsdWUgb2YgdGhlIGV4Y2VwdGlvbi4KKyAgICAgICAgICAgIC8v
IERvIHdlIG5lZWQgdG8gZG8gYW55dGhpbmcgdG8gaGFuZGxlIHRoYXQgcHJvcGVybHksIGlmIGl0
LCBzYXksIHJhaXNlcyBhbm90aGVyIGV4Y2VwdGlvbj8KKyAgICAgICAgICAgIGlmIChyZXR1cm5l
ZEV4Y2VwdGlvbk1lc3NhZ2UpCisgICAgICAgICAgICAgICAgKnJldHVybmVkRXhjZXB0aW9uTWVz
c2FnZSA9IHJldHVybmVkRXhjZXB0aW9uLT52YWx1ZSgpLnRvV1RGU3RyaW5nKCZzdGF0ZSk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBPdmVyd3JpdGUgdGhlIGRldGFpbGVkIGVy
cm9yIHdpdGggYSBnZW5lcmljIGVycm9yLgorICAgICAgICAgICAgU3RyaW5nIGdlbmVyaWNFcnJv
ck1lc3NhZ2UgeyAiU2NyaXB0IGVycm9yLiJfcyB9OworICAgICAgICAgICAgaWYgKHJldHVybmVk
RXhjZXB0aW9uTWVzc2FnZSkKKyAgICAgICAgICAgICAgICAqcmV0dXJuZWRFeGNlcHRpb25NZXNz
YWdlID0gZ2VuZXJpY0Vycm9yTWVzc2FnZTsKKyAgICAgICAgICAgIHJldHVybmVkRXhjZXB0aW9u
ID0gSlNDOjpFeGNlcHRpb246OmNyZWF0ZSh2bSwgY3JlYXRlRXJyb3IoJnN0YXRlLCBnZW5lcmlj
RXJyb3JNZXNzYWdlKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgV29ya2xldFNjcmlw
dENvbnRyb2xsZXI6OnNldEV4Y2VwdGlvbihKU0M6OkV4Y2VwdGlvbiogZXhjZXB0aW9uKQorewor
ICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5n
bG9iYWxFeGVjKCk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUs
IGV4Y2VwdGlvbik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYmE1NzhiYmY5YWIzMjFjOTcwMTQ0ZWI4ZmNlMzhiZWU1MzY1ZTg3ZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVy
LmgKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisK
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9EZWJ1Z2dlci5oPgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTUnVuTG9vcFRpbWVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25n
Lmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2lu
Y2x1ZGUgPHd0Zi9OYWtlZFB0ci5oPgorCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIFZNOworfQor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEpTV29ya2xldEdsb2JhbFNjb3BlOworY2xh
c3MgU2NyaXB0U291cmNlQ29kZTsKK2NsYXNzIFdvcmtsZXRDb25zb2xlQ2xpZW50OworY2xhc3Mg
V29ya2xldEdsb2JhbFNjb3BlOworY2xhc3MgV29ya2xldENvbnNvbGVDbGllbnQ7CisKK2NsYXNz
IFdvcmtsZXRTY3JpcHRDb250cm9sbGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXb3Jr
bGV0U2NyaXB0Q29udHJvbGxlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgor
ICAgIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyKFdvcmtsZXRHbG9iYWxTY29wZSopOworICAgIH5X
b3JrbGV0U2NyaXB0Q29udHJvbGxlcigpOworCisgICAgSlNXb3JrbGV0R2xvYmFsU2NvcGUqIHdv
cmtsZXRHbG9iYWxTY29wZVdyYXBwZXIoKQorICAgIHsKKyAgICAgICAgaW5pdFNjcmlwdElmTmVl
ZGVkKCk7CisgICAgICAgIHJldHVybiBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCk7
CisgICAgfQorCisgICAgdm9pZCBmb3JiaWRFeGVjdXRpb24oKTsKKyAgICBib29sIGlzRXhlY3V0
aW9uRm9yYmlkZGVuKCkgY29uc3Q7CisKKyAgICB2b2lkIGRpc2FibGVFdmFsKGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYWdlKTsKKyAgICB2b2lkIGRpc2FibGVXZWJBc3NlbWJseShjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSk7CisKKyAgICB2b2lkIGV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJj
ZUNvZGUmLCBTdHJpbmcqIHJldHVybmVkRXhjZXB0aW9uTWVzc2FnZSA9IG51bGxwdHIpOworICAg
IHZvaWQgZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIE5ha2VkUHRyPEpTQzo6RXhj
ZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24sIFN0cmluZyogcmV0dXJuZWRFeGNlcHRpb25NZXNz
YWdlID0gbnVsbHB0cik7CisKKyAgICB2b2lkIHNldEV4Y2VwdGlvbihKU0M6OkV4Y2VwdGlvbiop
OworCisgICAgSlNDOjpWTSYgdm0oKSB7IHJldHVybiAqbV92bTsgfQorCitwcml2YXRlOgorICAg
IHZvaWQgaW5pdFNjcmlwdElmTmVlZGVkKCkKKyAgICB7CisgICAgICAgIGlmICghbV93b3JrbGV0
R2xvYmFsU2NvcGVXcmFwcGVyKQorICAgICAgICAgICAgaW5pdFNjcmlwdCgpOworICAgIH0KKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRTY3JpcHQoKTsKKworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEpTR2xvYmFsU2NvcGVQcm90b3R5cGUsIHR5cGVuYW1lIEpTR2xvYmFsU2NvcGUsIHR5cGVu
YW1lIEdsb2JhbFNjb3BlPgorICAgIHZvaWQgaW5pdFNjcmlwdFdpdGhTdWJjbGFzcygpOworCisg
ICAgYm9vbCBtX2V4ZWN1dGlvbkZvcmJpZGRlbiB7IGZhbHNlIH07CisgICAgUmVmUHRyPEpTQzo6
Vk0+IG1fdm07CisgICAgV29ya2xldEdsb2JhbFNjb3BlKiBtX3dvcmtsZXRHbG9iYWxTY29wZTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8V29ya2xldENvbnNvbGVDbGllbnQ+IG1fY29uc29sZUNsaWVu
dDsKKyAgICBKU0M6OlN0cm9uZzxKU1dvcmtsZXRHbG9iYWxTY29wZT4gbV93b3JrbGV0R2xvYmFs
U2NvcGVXcmFwcGVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorI2VuZGlmCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggMWI1ODBkOTQ5MDExZjQ2NDEzYmRjNjNmODQ4OTQ3NjIwNzI0MDU0Yy4uZmE5OWY1OWYxYTE3
ZjY5Yzk1Y2FhYmZkM2Y3NTdhZDM4NmI2N2MxNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE4
LTEwLTI2ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAg
ICAgICBBZGQgbmV3IGdsb2JhbCBvYmplY3QgYW5kIHByZWxpbWluYXJ5IFdvcmtsZXRzIHN1cHBv
cnQgZm9yIENTUyBwYWludGluZyBhcGkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MDk3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBhIG5ldyB0ZXN0IGhhcm5lc3MgZm9yIHdvcmtsZXQgdGVzdHMs
IHNpbmNlIHRoZXkgZG8gbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBkb20uCisKKyAgICAgICAgKiBm
YXN0L2Nzcy1jdXN0b20tcGFpbnQvYmFzaWMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3Qv
Y3NzLWN1c3RvbS1wYWludC9iYXNpYy5odG1sOgorICAgICAgICAqIGZhc3QvY3NzLWN1c3RvbS1w
YWludC9yZWdpc3RlclBhaW50QmluZGluZ3MtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L3JlZ2lzdGVyUGFpbnRCaW5kaW5ncy1leHBlY3RlZC50
eHQ6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L3JlZ2lzdGVyUGFp
bnRCaW5kaW5ncy5odG1sOgorICAgICAgICAqIGZhc3QvY3NzLWN1c3RvbS1wYWludC9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3Mtd29ya2xldC5qczogQWRkZWQuCisgICAgICAgIChmb3JtYXRfdmFsdWUp
OgorICAgICAgICAqIGZhc3QvY3NzLWN1c3RvbS1wYWludC9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anM6IEFkZGVkLgorICAgICAgICAoYXN5bmMuaW1wb3J0V29ya2xldCk6CisgICAgICAgICogZmFz
dC9jc3MtY3VzdG9tLXBhaW50L3dvcmtsZXQtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L3dvcmtsZXQuaHRtbDogQWRkZWQuCisKIDIwMTgtMTAt
MjYgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMzc0NzkgYW5kIHIyMzc0ODQuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYmFzaWMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2Jhc2ljLWV4cGVjdGVkLnR4dAppbmRleCBl
YWExNzQzZTQzOTkwMGJmZDczYjBjMTkxNmUzZDJlY2VlNmQ0YjU2Li4wMjA1OWY5ODM1ZTIzNmFh
NWU5OTI5NTUxNDkxNzNiNWQ3NTI1NWE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy1jdXN0b20tcGFpbnQvYmFzaWMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzLWN1c3RvbS1wYWludC9iYXNpYy1leHBlY3RlZC50eHQKQEAgLTEsMTAgKzEsMyBAQAogCi1Q
QVNTIHRlc3QgdGhhdCByZWdpc3RlclBhaW50IHJ1bnMgCi1QQVNTIHRlc3QgdGhhdCByZWdpc3Rl
clBhaW50IHJ1bnMgd2l0aG91dCBpbnB1dFByb3BlcnRpZXMgCi1QQVNTIHRlc3QgdGhhdCByZWdp
c3RlclBhaW50IHJ1bnMgd2l0aCBpbnB1dEFyZ3VtZW50cyAKLVBBU1MgdGVzdCB0aGF0IHJlZ2lz
dGVyUGFpbnQgcnVucyB3aXRoIGNvbnRleHRPcHRpb25zIAotUEFTUyB0ZXN0IHRoYXQgcmVnaXN0
ZXJQYWludCBydW5zIHdpdGggcHJlZGVmaW5lZCBjbGFzcyAKLVBBU1MgdGVzdCB0aGF0IHJlZ2lz
dGVyUGFpbnQgYWNjZXB0cyBvbmx5IGEgc3RyaW5nIGFuZCBhIGNsYXNzIGNvbnN0cnVjdG9yIAog
UEFTUyB0ZXN0IHRoYXQgdGVzdCBkaXYgaGFzIHBhaW50KCkgdmFsdWUgCi1QQVNTIHRlc3QgdGhh
dCB0ZXN0IGRpdiBwYWludCBjYWxsYmFjayBnZXRzIGNhbGxlZCAKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2Jhc2ljLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy1jdXN0b20tcGFpbnQvYmFzaWMuaHRtbAppbmRleCAzZjRkYzNhMmQwMmVmMjFhMmU5
NzJkNGM4YjRmMmZhZThjMzg5NDU4Li40YzhiMGNmNTJlMTZkNWM4ZjAyODc4ZTJjZjc1Nzk1MzQw
ZTI4Zjk2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYmFz
aWMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYmFzaWMuaHRt
bApAQCAtMTYsNzAgKzE2LDcgQEAKIDxkaXYgaWQ9InBhaW50Ij48L2Rpdj4KIAogPHNjcmlwdD4K
LXRlc3QoZnVuY3Rpb24oKSB7Ci0gIENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3Rl
clBhaW50KCd0ZXN0MScsIGNsYXNzIHsKLSAgICBzdGF0aWMgZ2V0IGlucHV0UHJvcGVydGllcygp
IHsgcmV0dXJuIFsiLS10ZXN0Il07IH0KLSAgICBwYWludCgpIHsgfQotICB9KTsKLX0sICd0ZXN0
IHRoYXQgcmVnaXN0ZXJQYWludCBydW5zJyk7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gIENTUy5w
YWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCd0ZXN0MicsIGNsYXNzIHsKLSAg
ICBwYWludCgpIHsgfQotICB9KTsKLX0sICd0ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBydW5zIHdp
dGhvdXQgaW5wdXRQcm9wZXJ0aWVzJyk7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gIENTUy5wYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCd0ZXN0MycsIGNsYXNzIHsKLSAgICBz
dGF0aWMgZ2V0IGlucHV0QXJndW1lbnRzKCkgeyByZXR1cm4gWyI8bGVuZ3RoPiJdOyB9Ci0gICAg
cGFpbnQoKSB7IH0KLSAgfSk7Ci19LCAndGVzdCB0aGF0IHJlZ2lzdGVyUGFpbnQgcnVucyB3aXRo
IGlucHV0QXJndW1lbnRzJyk7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gIENTUy5wYWludFdvcmts
ZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCd0ZXN0NCcsIGNsYXNzIHsKLSAgICBzdGF0aWMg
Z2V0IGNvbnRleHRPcHRpb25zKCkgeyByZXR1cm4geyBhbHBoYTogdHJ1ZSB9OyB9Ci0gICAgcGFp
bnQoKSB7IH0KLSAgfSk7Ci19LCAndGVzdCB0aGF0IHJlZ2lzdGVyUGFpbnQgcnVucyB3aXRoIGNv
bnRleHRPcHRpb25zJyk7Ci0KLWNsYXNzIE15UGFpbnQgewotICBwYWludCgpIHsgfQotfQotCi10
ZXN0KGZ1bmN0aW9uKCkgewotICBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQ
YWludCgndGVzdDUnLCBNeVBhaW50KTsKLSAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnSW52YWxp
ZE1vZGlmaWNhdGlvbkVycm9yJ30sICgpID0+IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5y
ZWdpc3RlclBhaW50KCd0ZXN0NScsIE15UGFpbnQpKTsKLSAgQ1NTLnBhaW50V29ya2xldEdsb2Jh
bFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3Q2JywgY2xhc3MgZXh0ZW5kcyBNeVBhaW50IHsgfSk7
Ci19LCAndGVzdCB0aGF0IHJlZ2lzdGVyUGFpbnQgcnVucyB3aXRoIHByZWRlZmluZWQgY2xhc3Mn
KTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnSW52YWxp
ZE1vZGlmaWNhdGlvbkVycm9yJ30sICgpID0+IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5y
ZWdpc3RlclBhaW50KCd0ZXN0NicsICd0ZXN0JykpOwotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBl
RXJyb3IoKSwgKCkgPT4gQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQo
J3Rlc3Q3JykpOwotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gQ1NTLnBh
aW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3Q4JywgW10pKTsKLSAgYXNz
ZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IENTUy5wYWludFdvcmtsZXRHbG9iYWxT
Y29wZS5yZWdpc3RlclBhaW50KCd0ZXN0OScsIHt9KSk7Ci0gIGFzc2VydF90aHJvd3MobmV3IFR5
cGVFcnJvcigpLCAoKSA9PiBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWlu
dCgndGVzdDEwJywgNSkpOwotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4g
Q1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJycsIDUpKTsKLX0sICd0
ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBhY2NlcHRzIG9ubHkgYSBzdHJpbmcgYW5kIGEgY2xhc3Mg
Y29uc3RydWN0b3InKTsKLQogdGVzdChmdW5jdGlvbigpIHsKICAgYXNzZXJ0X2VxdWFscyhnZXRD
b21wdXRlZFN0eWxlKHBhaW50KS5nZXRQcm9wZXJ0eVZhbHVlKCJiYWNrZ3JvdW5kLWltYWdlIiks
ICJwYWludChteS1wYWludCkiKTsKIH0sICd0ZXN0IHRoYXQgdGVzdCBkaXYgaGFzIHBhaW50KCkg
dmFsdWUnKTsKLQotbGV0IHBhaW50X2NhbGxlZF90ZXN0ID0gYXN5bmNfdGVzdCgndGVzdCB0aGF0
IHRlc3QgZGl2IHBhaW50IGNhbGxiYWNrIGdldHMgY2FsbGVkJyk7Ci1wYWludF9jYWxsZWRfdGVz
dC5zdGVwKGZ1bmN0aW9uKCkgewotICBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0
ZXJQYWludCgnbXktcGFpbnQnLCBjbGFzcyB7Ci0gICAgcGFpbnQoY3R4LCBnZW9tLCBwcm9wZXJ0
aWVzKSB7Ci0gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKyl7Ci0gICAgICAgIGZvciAo
dmFyIGogPSAwOyBqIDwgNjsgaisrKXsKLSAgICAgICAgICBjdHguZmlsbFN0eWxlID0gJ3JnYign
ICsgTWF0aC5mbG9vcigyNTUgLSA0Mi41ICogaSkgKyAnLCcgKwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTWF0aC5mbG9vcigyNTUgLSA0Mi41ICogaikgKyAnLDApJzsKLSAgICAgICAgICBj
dHguZmlsbFJlY3QoaiAqIDI1LCBpICogMjUsIDI1LCAyNSk7Ci0gICAgICAgIH0KLSAgICAgIH0K
LSAgICAgIHBhaW50X2NhbGxlZF90ZXN0LmRvbmUoKTsKLSAgICB9Ci0gIH0pOwotfSk7Ci0KIDwv
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Jl
Z2lzdGVyUGFpbnRCaW5kaW5ncy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mt
Y3VzdG9tLXBhaW50L3JlZ2lzdGVyUGFpbnRCaW5kaW5ncy1leHBlY3RlZC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRiNDJiNjJkYTEzZWRhODE5NjEwYjMxOTdiNGU0NWE1NDczYmRjZjMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVnaXN0ZXJQYWludEJp
bmRpbmdzLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxNiBAQAorPCFET0NUWVBFIGh0bWw+PCEt
LSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBleHBlcmltZW50YWw6Q1NTUGFpbnRpbmdBUElFbmFibGVk
PXRydWUgXSAtLT4KKworPGNhbnZhcyBpZD0icGFpbnQiIHdpZHRoPSIxNTBweCIgaGVpZ2h0PSIx
NTBweCIgPjwvY2FudmFzPgorCis8c2NyaXB0IGlkPSJjb2RlIj4KK3ZhciBjYW52YXMgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgncGFpbnQnKTsKK3ZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4
dCgnMmQnKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspeworICBmb3IgKHZhciBqID0g
MDsgaiA8IDY7IGorKyl7CisgICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2IoJyArIE1hdGguZmxvb3Io
MjU1IC0gNDIuNSAqIGkpICsgJywnICsKKyAgICAgICAgICAgICAgICAgICAgIE1hdGguZmxvb3Io
MjU1IC0gNDIuNSAqIGopICsgJywwKSc7CisgICAgY3R4LmZpbGxSZWN0KGogKiAyNSwgaSAqIDI1
LCAyNSwgMjUpOworICB9Cit9Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvY3NzLWN1c3RvbS1wYWludC9yZWdpc3RlclBhaW50QmluZGluZ3MtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3JlZ2lzdGVyUGFpbnRCaW5kaW5ncy1l
eHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwMTQzMTUyYmQ4NmM5
ZGIwZDk3MjkyNDIyZDViOGFmODhhNTEwNmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3JlZ2lz
dGVyUGFpbnRCaW5kaW5ncy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCww
IEBACi0KLVBBU1MgcmVnaXN0ZXJQYWludCBtdXN0IGJlIGEgbWV0aG9kIAotUEFTUyBtdXN0IGdl
dCAicHJvdG90eXBlIiBwcm9wZXJ0eSBvZiB0aGUgY29uc3RydWN0b3IgCi1QQVNTIG11c3QgcmV0
aHJvdyBhbiBleGNlcHRpb24gdGhyb3duIHdoaWxlIGdldHRpbmcgImlucHV0UHJvcGVydGllcyIg
cHJvcGVydHkgb2YgdGhlIGNvbnN0cnVjdG9yIAotUEFTUyBtdXN0IHJldGhyb3cgYW4gZXhjZXB0
aW9uIHRocm93biB3aGlsZSBnZXR0aW5nICJwcm90b3R5cGUiIHByb3BlcnR5IG9mIHRoZSBjb25z
dHJ1Y3RvciAKLVBBU1MgbXVzdCB0aHJvdyB3aGVuICJwcm90b3R5cGUiIHByb3BlcnR5IG9mIHRo
ZSBjb25zdHJ1Y3RvciBpcyBub3QgYW4gb2JqZWN0IAotUEFTUyBtdXN0IGdldCBwYWludCBjYWxs
YmFjayBvZiB0aGUgY29uc3RydWN0b3IgcHJvdG90eXBlIAotUEFTUyBtdXN0IHJldGhyb3cgYW4g
ZXhjZXB0aW9uIHRocm93biB3aGlsZSBnZXR0aW5nIHBhaW50IGNhbGxiYWNrIG9uIHRoZSBjb25z
dHJ1Y3RvciBwcm90b3R5cGUgCi1QQVNTIG11c3QgcmV0aHJvdyBhbiBleGNlcHRpb24gdGhyb3du
IHdoaWxlIGNvbnZlcnRpbmcgcGFpbnQgY2FsbGJhY2sgdmFsdWUgdG8gRnVuY3Rpb24gY2FsbGJh
Y2sgdHlwZSAKLVBBU1MgbXVzdCByZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgY29u
dmVydGluZyB0aGUgdmFsdWUgb2YgaW5wdXRBcmd1bWVudHMgdG8gc2VxdWVuY2U8RE9NU3RyaW5n
PiAKLVBBU1MgbXVzdCByZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgaXRlcmF0aW5n
IG92ZXIgaW5wdXRBcmd1bWVudHMgdG8gc2VxdWVuY2U8RE9NU3RyaW5nPiAKLVBBU1MgbXVzdCBy
ZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgcmV0cmlldmluZyBTeW1ib2wuaXRlcmF0
b3Igb24gaW5wdXRBcmd1bWVudHMgCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3Nz
LWN1c3RvbS1wYWludC9yZWdpc3RlclBhaW50QmluZGluZ3MuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvY3NzLWN1c3RvbS1wYWludC9yZWdpc3RlclBhaW50QmluZGluZ3MuaHRtbAppbmRleCBkYzkw
MmM0Y2Q2NTkxMGQ1YjE4Y2FlMTU0ZWYzMzhjYTk4OThiY2RjLi5mYzEzZWI5YmE0NTY1MzljOTRm
NGY2MjYyODQ1MWNkZDg0NWYzNGI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1j
dXN0b20tcGFpbnQvcmVnaXN0ZXJQYWludEJpbmRpbmdzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MtY3VzdG9tLXBhaW50L3JlZ2lzdGVyUGFpbnRCaW5kaW5ncy5odG1sCkBAIC0yLDE3
ICsyLDY0IEBACiA8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxlPSJKdXN0aW4gTWljaGF1ZCIgaHJl
Zj0ibWFpbHRvOmp1c3Rpbl9taWNoYXVkQHdlYmtpdC5vcmciPgogPG1ldGEgbmFtZT0iYXNzZXJ0
IiBjb250ZW50PSJyZWdpc3RlclBhaW50IGFjY2Vzc2VzIGFyZ3VtZW50cyBpbiB0aGUgY29ycmVj
dCBvcmRlciI+CiA8bGluayByZWw9ImhlbHAiIGNvbnRlbnQ9Imh0dHBzOi8vZHJhZnRzLmNzcy1o
b3VkaW5pLm9yZy9jc3MtcGFpbnQtYXBpLTEvIj4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisKKzxzdHlsZT4KKyAgI3BhaW50
IHsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiBwYWludChteS1wYWludCk7CisgICAgd2lkdGg6IDE1
MHB4OworICAgIGhlaWdodDogMTUwcHg7CisgIH0KKzwvc3R5bGU+CisKKzxkaXYgaWQ9InBhaW50
Ij48L2Rpdj4KKworPHNjcmlwdCBpZD0iY29kZSIgdHlwZT0idGV4dC93b3JrbGV0Ij4KIGNsYXNz
IE15UGFpbnQgewogICBwYWludCgpIHsgfQogfQogCi10ZXN0KGZ1bmN0aW9uICgpIHsKLSAgICBh
c3NlcnRfdHJ1ZSgncmVnaXN0ZXJQYWludCcgaW4gQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3Bl
Ll9fcHJvdG9fXywgJyJyZWdpc3RlclBhaW50IiBleGlzdHMgb24gcHJvdG90eXBlJyk7Ci0gICAg
YXNzZXJ0X3RydWUoJ3JlZ2lzdGVyUGFpbnQnIGluIENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29w
ZSwgJyJyZWdpc3RlclBhaW50IiBleGlzdHMgb24gd2luZG93Jyk7Ci19LCAncmVnaXN0ZXJQYWlu
dCBtdXN0IGJlIGEgbWV0aG9kJyk7Cit0ZXN0KGZ1bmN0aW9uKCkgeworICByZWdpc3RlclBhaW50
KCdiYXNpYzEnLCBjbGFzcyB7CisgICAgc3RhdGljIGdldCBpbnB1dFByb3BlcnRpZXMoKSB7IHJl
dHVybiBbIi0tdGVzdCJdOyB9CisgICAgcGFpbnQoKSB7IH0KKyAgfSk7Cit9LCAndGVzdCB0aGF0
IHJlZ2lzdGVyUGFpbnQgcnVucycpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICByZWdpc3RlclBh
aW50KCdiYXNpYzInLCBjbGFzcyB7CisgICAgcGFpbnQoKSB7IH0KKyAgfSk7Cit9LCAndGVzdCB0
aGF0IHJlZ2lzdGVyUGFpbnQgcnVucyB3aXRob3V0IGlucHV0UHJvcGVydGllcycpOworCit0ZXN0
KGZ1bmN0aW9uKCkgeworICByZWdpc3RlclBhaW50KCdiYXNpYzMnLCBjbGFzcyB7CisgICAgc3Rh
dGljIGdldCBpbnB1dEFyZ3VtZW50cygpIHsgcmV0dXJuIFsiPGxlbmd0aD4iXTsgfQorICAgIHBh
aW50KCkgeyB9CisgIH0pOworfSwgJ3Rlc3QgdGhhdCByZWdpc3RlclBhaW50IHJ1bnMgd2l0aCBp
bnB1dEFyZ3VtZW50cycpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICByZWdpc3RlclBhaW50KCdi
YXNpYzQnLCBjbGFzcyB7CisgICAgc3RhdGljIGdldCBjb250ZXh0T3B0aW9ucygpIHsgcmV0dXJu
IHsgYWxwaGE6IHRydWUgfTsgfQorICAgIHBhaW50KCkgeyB9CisgIH0pOworfSwgJ3Rlc3QgdGhh
dCByZWdpc3RlclBhaW50IHJ1bnMgd2l0aCBjb250ZXh0T3B0aW9ucycpOworCit0ZXN0KGZ1bmN0
aW9uKCkgeworICByZWdpc3RlclBhaW50KCdiYXNpYzUnLCBNeVBhaW50KTsKKyAgYXNzZXJ0X3Ro
cm93cyh7J25hbWUnOiAnSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yJ30sICgpID0+IHJlZ2lzdGVy
UGFpbnQoJ2Jhc2ljNScsIE15UGFpbnQpKTsKKyAgcmVnaXN0ZXJQYWludCgnYmFzaWM2JywgY2xh
c3MgZXh0ZW5kcyBNeVBhaW50IHsgfSk7Cit9LCAndGVzdCB0aGF0IHJlZ2lzdGVyUGFpbnQgcnVu
cyB3aXRoIHByZWRlZmluZWQgY2xhc3MnKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgYXNzZXJ0
X3Rocm93cyh7J25hbWUnOiAnSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yJ30sICgpID0+IHJlZ2lz
dGVyUGFpbnQoJ2Jhc2ljNicsICd0ZXN0JykpOworICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJy
b3IoKSwgKCkgPT4gcmVnaXN0ZXJQYWludCgnYmFzaWM4JykpOworICBhc3NlcnRfdGhyb3dzKG5l
dyBUeXBlRXJyb3IoKSwgKCkgPT4gcmVnaXN0ZXJQYWludCgnYmFzaWM5JywgW10pKTsKKyAgYXNz
ZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHJlZ2lzdGVyUGFpbnQoJ2Jhc2ljMTAn
LCB7fSkpOworICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gcmVnaXN0ZXJQ
YWludCgnYmFzaWMxMScsIDUpKTsKKyAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgp
ID0+IHJlZ2lzdGVyUGFpbnQoJycsIDUpKTsKK30sICd0ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBh
Y2NlcHRzIG9ubHkgYSBzdHJpbmcgYW5kIGEgY2xhc3MgY29uc3RydWN0b3InKTsKIAogdGVzdChm
dW5jdGlvbiAoKSB7CiAgICAgY29uc3QgY2FsbHMgPSBbXTsKQEAgLTIyLDcgKzY5LDcgQEAgdGVz
dChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0W25hbWVdOwogICAgICAg
ICB9CiAgICAgfSk7Ci0gICAgQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFp
bnQoJ3Rlc3QtcHJvdG8nLCBwcm94eSk7CisgICAgcmVnaXN0ZXJQYWludCgndGVzdC1wcm90bycs
IHByb3h5KTsKICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNhbGxzLCBbImlucHV0UHJvcGVydGll
cyIsICJpbnB1dEFyZ3VtZW50cyIsICJjb250ZXh0T3B0aW9ucyIsICJwcm90b3R5cGUiXSk7CiB9
LCAnbXVzdCBnZXQgInByb3RvdHlwZSIgcHJvcGVydHkgb2YgdGhlIGNvbnN0cnVjdG9yJyk7CiAK
QEAgLTM2LDcgKzgzLDcgQEAgdGVzdChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICByZXR1cm4g
dGFyZ2V0W25hbWVdOwogICAgICAgICB9CiAgICAgfSk7Ci0gICAgYXNzZXJ0X3Rocm93cyh7J25h
bWUnOiAnZXhwZWN0ZWRFcnJvcid9LCBmdW5jdGlvbiAoKSB7IENTUy5wYWludFdvcmtsZXRHbG9i
YWxTY29wZS5yZWdpc3RlclBhaW50KCd0ZXN0LXJldGhyb3ctaW5wdXRQcm9wZXJ0aWVzMCcsIHBy
b3h5KTsgfSk7CisgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnZXhwZWN0ZWRFcnJvcid9LCBm
dW5jdGlvbiAoKSB7IHJlZ2lzdGVyUGFpbnQoJ3Rlc3QtcmV0aHJvdy1pbnB1dFByb3BlcnRpZXMw
JywgcHJveHkpOyB9KTsKIH0sICdtdXN0IHJldGhyb3cgYW4gZXhjZXB0aW9uIHRocm93biB3aGls
ZSBnZXR0aW5nICJpbnB1dFByb3BlcnRpZXMiIHByb3BlcnR5IG9mIHRoZSBjb25zdHJ1Y3Rvcicp
OwogCiB0ZXN0KGZ1bmN0aW9uICgpIHsKQEAgLTQ5LDcgKzk2LDcgQEAgdGVzdChmdW5jdGlvbiAo
KSB7CiAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0W25hbWVdOwogICAgICAgICB9CiAgICAgfSk7
Ci0gICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnZXhwZWN0ZWRFcnJvcid9LCBmdW5jdGlvbiAo
KSB7IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCd0ZXN0LXJldGhy
b3ctcHJvdG8nLCBwcm94eSk7IH0pOworICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ2V4cGVj
dGVkRXJyb3InfSwgZnVuY3Rpb24gKCkgeyByZWdpc3RlclBhaW50KCd0ZXN0LXJldGhyb3ctcHJv
dG8nLCBwcm94eSk7IH0pOwogfSwgJ211c3QgcmV0aHJvdyBhbiBleGNlcHRpb24gdGhyb3duIHdo
aWxlIGdldHRpbmcgInByb3RvdHlwZSIgcHJvcGVydHkgb2YgdGhlIGNvbnN0cnVjdG9yJyk7CiAK
IHRlc3QoZnVuY3Rpb24gKCkgewpAQCAtNjMsMTYgKzExMCwxNiBAQCB0ZXN0KGZ1bmN0aW9uICgp
IHsKICAgICB9KTsKIAogICAgIHJldHVybmVkVmFsdWUgPSBudWxsOwotICAgIGFzc2VydF90aHJv
d3MoeyduYW1lJzogJ1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IENTUy5wYWludFdvcmtsZXRH
bG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCd0ZXN0LXJldGhyb3ctcHJvdG8tbm9vYmoxJywgcHJv
eHkpOyB9LAorICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1R5cGVFcnJvcid9LCBmdW5jdGlv
biAoKSB7IHJlZ2lzdGVyUGFpbnQoJ3Rlc3QtcmV0aHJvdy1wcm90by1ub29iajEnLCBwcm94eSk7
IH0sCiAgICAgICAgICdtdXN0IHRocm93IHdoZW4gInByb3RvdHlwZSIgcHJvcGVydHkgb2YgdGhl
IGNvbnN0cnVjdG9yIGlzIG51bGwnKTsKICAgICByZXR1cm5lZFZhbHVlID0gdW5kZWZpbmVkOwot
ICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IENT
Uy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCd0ZXN0LXJldGhyb3ctcHJv
dG8tbm9vYmoyJywgcHJveHkpOyB9LAorICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1R5cGVF
cnJvcid9LCBmdW5jdGlvbiAoKSB7IHJlZ2lzdGVyUGFpbnQoJ3Rlc3QtcmV0aHJvdy1wcm90by1u
b29iajInLCBwcm94eSk7IH0sCiAgICAgICAgICdtdXN0IHRocm93IHdoZW4gInByb3RvdHlwZSIg
cHJvcGVydHkgb2YgdGhlIGNvbnN0cnVjdG9yIGlzIHVuZGVmaW5lZCcpOwogICAgIHJldHVybmVk
VmFsdWUgPSAnaGVsbG8nOwotICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1R5cGVFcnJvcid9
LCBmdW5jdGlvbiAoKSB7IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50
KCd0ZXN0LXJldGhyb3ctcHJvdG8tbm9vYmozJywgcHJveHkpOzsgfSwKKyAgICBhc3NlcnRfdGhy
b3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyByZWdpc3RlclBhaW50KCd0
ZXN0LXJldGhyb3ctcHJvdG8tbm9vYmozJywgcHJveHkpOzsgfSwKICAgICAgICAgJ211c3QgdGhy
b3cgd2hlbiAicHJvdG90eXBlIiBwcm9wZXJ0eSBvZiB0aGUgY29uc3RydWN0b3IgaXMgYSBzdHJp
bmcnKTsKICAgICByZXR1cm5lZFZhbHVlID0gMTsKLSAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6
ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUu
cmVnaXN0ZXJQYWludCgndGVzdC1yZXRocm93LXByb3RvLW5vb2JqNCcsIHByb3h5KTs7IH0sCisg
ICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgcmVn
aXN0ZXJQYWludCgndGVzdC1yZXRocm93LXByb3RvLW5vb2JqNCcsIHByb3h5KTs7IH0sCiAgICAg
ICAgICdtdXN0IHRocm93IHdoZW4gInByb3RvdHlwZSIgcHJvcGVydHkgb2YgdGhlIGNvbnN0cnVj
dG9yIGlzIGEgbnVtYmVyJyk7CiAKIH0sICdtdXN0IHRocm93IHdoZW4gInByb3RvdHlwZSIgcHJv
cGVydHkgb2YgdGhlIGNvbnN0cnVjdG9yIGlzIG5vdCBhbiBvYmplY3QnKTsKQEAgLTg3LDcgKzEz
NCw3IEBAIHRlc3QoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgcmV0dXJuIHRhcmdldFtuYW1l
XTsKICAgICAgICAgfQogICAgIH0pOwotICAgIENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5y
ZWdpc3RlclBhaW50KCdjYWxsYmFja3MnLCBjb25zdHJ1Y3Rvcik7CisgICAgcmVnaXN0ZXJQYWlu
dCgnY2FsbGJhY2tzJywgY29uc3RydWN0b3IpOwogICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2Fs
bHMsIFsncGFpbnQnXSk7CiB9LCAnbXVzdCBnZXQgcGFpbnQgY2FsbGJhY2sgb2YgdGhlIGNvbnN0
cnVjdG9yIHByb3RvdHlwZScpOwogCkBAIC0xMDIsNyArMTQ5LDcgQEAgdGVzdChmdW5jdGlvbiAo
KSB7CiAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0W25hbWVdOwogICAgICAgICB9CiAgICAgfSk7
Ci0gICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnZXhwZWN0ZWRFcnJvcid9LCBmdW5jdGlvbiAo
KSB7IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCdjYWxsYmFja3Mt
dGhyb3cnLCBjb25zdHJ1Y3Rvcik7IH0pOworICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ2V4
cGVjdGVkRXJyb3InfSwgZnVuY3Rpb24gKCkgeyByZWdpc3RlclBhaW50KCdjYWxsYmFja3MtdGhy
b3cnLCBjb25zdHJ1Y3Rvcik7IH0pOwogICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2FsbHMsIFsn
cGFpbnQnXSk7CiB9LCAnbXVzdCByZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgZ2V0
dGluZyBwYWludCBjYWxsYmFjayBvbiB0aGUgY29uc3RydWN0b3IgcHJvdG90eXBlJyk7CiAKQEAg
LTExNyw3ICsxNjQsNyBAQCB0ZXN0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIHJldHVybiB0
YXJnZXRbbmFtZV07CiAgICAgICAgIH0KICAgICB9KTsKLSAgICBhc3NlcnRfdGhyb3dzKHsnbmFt
ZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUucmVnaXN0ZXJQYWludCgnY2FsbGJhY2tzLXRocm93MicsIGNvbnN0cnVjdG9yKTsgfSk7Cisg
ICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgcmVn
aXN0ZXJQYWludCgnY2FsbGJhY2tzLXRocm93MicsIGNvbnN0cnVjdG9yKTsgfSk7CiAgICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyhjYWxscywgWydwYWludCddKTsKIH0sICdtdXN0IHJldGhyb3cgYW4g
ZXhjZXB0aW9uIHRocm93biB3aGlsZSBjb252ZXJ0aW5nIHBhaW50IGNhbGxiYWNrIHZhbHVlIHRv
IEZ1bmN0aW9uIGNhbGxiYWNrIHR5cGUnKTsKIApAQCAtMTMxLDcgKzE3OCw3IEBAIHRlc3QoZnVu
Y3Rpb24gKCkgewogICAgICAgICAgIHJldHVybiB0YXJnZXRbbmFtZV07CiAgICAgICB9CiAgIH0p
OwotICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBD
U1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgnc2VxdWVuY2UtdGhyb3cn
LCBwcm94eSk7IH0pOworICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwgZnVu
Y3Rpb24gKCkgeyByZWdpc3RlclBhaW50KCdzZXF1ZW5jZS10aHJvdycsIHByb3h5KTsgfSk7CiAg
IGFzc2VydF9hcnJheV9lcXVhbHMoY2FsbHMsIFsiaW5wdXRQcm9wZXJ0aWVzIiwgImlucHV0QXJn
dW1lbnRzIl0pOwogfSwgJ211c3QgcmV0aHJvdyBhbiBleGNlcHRpb24gdGhyb3duIHdoaWxlIGNv
bnZlcnRpbmcgdGhlIHZhbHVlIG9mIGlucHV0QXJndW1lbnRzIHRvIHNlcXVlbmNlPERPTVN0cmlu
Zz4nKTsKIApAQCAtMTQxLDEyICsxODgsMzYgQEAgdGVzdChmdW5jdGlvbiAoKSB7CiAgICAgICAg
IHlpZWxkICc8bGVuZ3RoPic7CiAgICAgICAgIHRocm93IHtuYW1lOiAnU29tZUVycm9yJ307CiAg
ICAgfX07Ci0gICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnU29tZUVycm9yJ30sIGZ1bmN0aW9u
ICgpIHsgQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3NlcXVlbmNl
LXRocm93MicsIGNvbnN0cnVjdG9yKTsgfSk7CisgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAn
U29tZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgcmVnaXN0ZXJQYWludCgnc2VxdWVuY2UtdGhyb3cy
JywgY29uc3RydWN0b3IpOyB9KTsKIH0sICdtdXN0IHJldGhyb3cgYW4gZXhjZXB0aW9uIHRocm93
biB3aGlsZSBpdGVyYXRpbmcgb3ZlciBpbnB1dEFyZ3VtZW50cyB0byBzZXF1ZW5jZTxET01TdHJp
bmc+Jyk7CiAKIHRlc3QoZnVuY3Rpb24gKCkgewogICAgIGNvbnN0IGNvbnN0cnVjdG9yID0gZnVu
Y3Rpb24gKCkge30KICAgICBjb25zdHJ1Y3Rvci5pbnB1dEFyZ3VtZW50cyA9IHtbU3ltYm9sLml0
ZXJhdG9yXTogMX07Ci0gICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1
bmN0aW9uICgpIHsgQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3N5
bWJvbC1pdGVyYXRvci10aHJvdzInLCBjb25zdHJ1Y3Rvcik7IH0pOworICAgIGFzc2VydF90aHJv
d3MoeyduYW1lJzogJ1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IHJlZ2lzdGVyUGFpbnQoJ3N5
bWJvbC1pdGVyYXRvci10aHJvdzInLCBjb25zdHJ1Y3Rvcik7IH0pOwogfSwgJ211c3QgcmV0aHJv
dyBhbiBleGNlcHRpb24gdGhyb3duIHdoaWxlIHJldHJpZXZpbmcgU3ltYm9sLml0ZXJhdG9yIG9u
IGlucHV0QXJndW1lbnRzJyk7CisKK2Fzc2VydF90cnVlKFBhaW50V29ya2xldEdsb2JhbFNjb3Bl
Lmhhc1J1bkFUZXN0KTsKK2lmIChQYWludFdvcmtsZXRHbG9iYWxTY29wZS5lcnJvcnMpIHsKKyAg
Y29uc29sZS5sb2coIlRoZSBmb2xsb3dpbmcgKCIgKyBQYWludFdvcmtsZXRHbG9iYWxTY29wZS5l
cnJvcnMubGVuZ3RoICsgIikgdGVzdHMgZmFpbGVkOiAiKQorICBjb25zb2xlLmxvZyhKU09OLnN0
cmluZ2lmeShQYWludFdvcmtsZXRHbG9iYWxTY29wZS5lcnJvcnMpKTsKKyAgYXNzZXJ0X3RydWUo
ZmFsc2UpOworfQorCitjbGFzcyBNeVBhaW50MiB7CisgIHBhaW50KGN0eCwgZ2VvbSwgcHJvcGVy
dGllcykgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKXsKKyAgICAgIGZvciAodmFy
IGogPSAwOyBqIDwgNjsgaisrKXsKKyAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2IoJyArIE1h
dGguZmxvb3IoMjU1IC0gNDIuNSAqIGkpICsgJywnICsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBNYXRoLmZsb29yKDI1NSAtIDQyLjUgKiBqKSArICcsMCknOworICAgICAgICBjdHguZmlsbFJl
Y3QoaiAqIDI1LCBpICogMjUsIDI1LCAyNSk7CisgICAgICB9CisgICAgfQorICB9Cit9CityZWdp
c3RlclBhaW50KCdteS1wYWludCcsIE15UGFpbnQyKTsKKzwvc2NyaXB0PgorCis8c2NyaXB0Pgor
ICBpbXBvcnRXb3JrbGV0KENTUy5wYWludFdvcmtsZXQsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdjb2RlJykudGV4dENvbnRlbnQpOwogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLXdvcmtsZXQuanMg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LXdvcmtsZXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDVjM2U3NGVlNmMxMzE0MTljMTY4OWVlODlkMDFhNDFh
YTcwMmVjYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1w
YWludC9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mtd29ya2xldC5qcwpAQCAtMCwwICsxLDczOSBAQAor
Ly8gVGhlc2UgYXJlIGhlbHBlcnMgdG8gYmUgZXZhbHVhdGVkIGluc2lkZSBhIHdvcmtsZXQKKy8v
IFRoZXkgYXJlIG1vc3RseSBmcm9tIHRoZSB3cHQgdGVzdGhhcm5lc3MuanMuCisKKy8qCisgKiBD
b252ZXJ0IGEgdmFsdWUgdG8gYSBuaWNlLCBodW1hbi1yZWFkYWJsZSBzdHJpbmcKKyAqLworZnVu
Y3Rpb24gZm9ybWF0X3ZhbHVlKHZhbCwgc2VlbikKK3sKKyAgICBpZiAoIXNlZW4pIHsKKyAgICAg
ICAgc2VlbiA9IFtdOworICAgIH0KKyAgICBpZiAodHlwZW9mIHZhbCA9PT0gIm9iamVjdCIgJiYg
dmFsICE9PSBudWxsKSB7CisgICAgICAgIGlmIChzZWVuLmluZGV4T2YodmFsKSA+PSAwKSB7Cisg
ICAgICAgICAgICByZXR1cm4gIlsuLi5dIjsKKyAgICAgICAgfQorICAgICAgICBzZWVuLnB1c2go
dmFsKTsKKyAgICB9CisgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsKSkgeworICAgICAgICByZXR1
cm4gIlsiICsgdmFsLm1hcChmdW5jdGlvbih4KSB7cmV0dXJuIGZvcm1hdF92YWx1ZSh4LCBzZWVu
KTt9KS5qb2luKCIsICIpICsgIl0iOworICAgIH0KKworICAgIHN3aXRjaCAodHlwZW9mIHZhbCkg
eworICAgIGNhc2UgInN0cmluZyI6CisgICAgICAgIHZhbCA9IHZhbC5yZXBsYWNlKCJcXCIsICJc
XFxcIik7CisgICAgICAgIGZvciAodmFyIHAgaW4gcmVwbGFjZW1lbnRzKSB7CisgICAgICAgICAg
ICB2YXIgcmVwbGFjZSA9ICJcXCIgKyByZXBsYWNlbWVudHNbcF07CisgICAgICAgICAgICB2YWwg
PSB2YWwucmVwbGFjZShSZWdFeHAoU3RyaW5nLmZyb21DaGFyQ29kZShwKSwgImciKSwgcmVwbGFj
ZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICciJyArIHZhbC5yZXBsYWNlKC8iL2csICdc
XCInKSArICciJzsKKyAgICBjYXNlICJib29sZWFuIjoKKyAgICBjYXNlICJ1bmRlZmluZWQiOgor
ICAgICAgICByZXR1cm4gU3RyaW5nKHZhbCk7CisgICAgY2FzZSAibnVtYmVyIjoKKyAgICAgICAg
Ly8gSW4gSmF2YVNjcmlwdCwgLTAgPT09IDAgYW5kIFN0cmluZygtMCkgPT0gIjAiLCBzbyB3ZSBo
YXZlIHRvCisgICAgICAgIC8vIHNwZWNpYWwtY2FzZS4KKyAgICAgICAgaWYgKHZhbCA9PT0gLTAg
JiYgMS92YWwgPT09IC1JbmZpbml0eSkgeworICAgICAgICAgICAgcmV0dXJuICItMCI7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIFN0cmluZyh2YWwpOworICAgIGNhc2UgIm9iamVjdCI6Cisg
ICAgICAgIGlmICh2YWwgPT09IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiAibnVsbCI7Cisg
ICAgICAgIH0KKworICAgICAgICAvLyBTcGVjaWFsLWNhc2UgTm9kZSBvYmplY3RzLCBzaW5jZSB0
aG9zZSBjb21lIHVwIGEgbG90IGluIG15IHRlc3RzLiAgSQorICAgICAgICAvLyBpZ25vcmUgbmFt
ZXNwYWNlcy4KKyAgICAgICAgaWYgKGlzX25vZGUodmFsKSkgeworICAgICAgICAgICAgc3dpdGNo
ICh2YWwubm9kZVR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgTm9kZS5FTEVNRU5UX05PREU6Cisg
ICAgICAgICAgICAgICAgdmFyIHJldCA9ICI8IiArIHZhbC5sb2NhbE5hbWU7CisgICAgICAgICAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWwuYXR0cmlidXRlcy5sZW5ndGg7IGkrKykgewor
ICAgICAgICAgICAgICAgICAgICByZXQgKz0gIiAiICsgdmFsLmF0dHJpYnV0ZXNbaV0ubmFtZSAr
ICc9IicgKyB2YWwuYXR0cmlidXRlc1tpXS52YWx1ZSArICciJzsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgcmV0ICs9ICI+IiArIHZhbC5pbm5lckhUTUwgKyAiPC8iICsgdmFs
LmxvY2FsTmFtZSArICI+IjsKKyAgICAgICAgICAgICAgICByZXR1cm4gIkVsZW1lbnQgbm9kZSAi
ICsgdHJ1bmNhdGUocmV0LCA2MCk7CisgICAgICAgICAgICBjYXNlIE5vZGUuVEVYVF9OT0RFOgor
ICAgICAgICAgICAgICAgIHJldHVybiAnVGV4dCBub2RlICInICsgdHJ1bmNhdGUodmFsLmRhdGEs
IDYwKSArICciJzsKKyAgICAgICAgICAgIGNhc2UgTm9kZS5QUk9DRVNTSU5HX0lOU1RSVUNUSU9O
X05PREU6CisgICAgICAgICAgICAgICAgcmV0dXJuICJQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gbm9k
ZSB3aXRoIHRhcmdldCAiICsgZm9ybWF0X3ZhbHVlKHRydW5jYXRlKHZhbC50YXJnZXQsIDYwKSkg
KyAiIGFuZCBkYXRhICIgKyBmb3JtYXRfdmFsdWUodHJ1bmNhdGUodmFsLmRhdGEsIDYwKSk7Cisg
ICAgICAgICAgICBjYXNlIE5vZGUuQ09NTUVOVF9OT0RFOgorICAgICAgICAgICAgICAgIHJldHVy
biAiQ29tbWVudCBub2RlIDwhLS0iICsgdHJ1bmNhdGUodmFsLmRhdGEsIDYwKSArICItLT4iOwor
ICAgICAgICAgICAgY2FzZSBOb2RlLkRPQ1VNRU5UX05PREU6CisgICAgICAgICAgICAgICAgcmV0
dXJuICJEb2N1bWVudCBub2RlIHdpdGggIiArIHZhbC5jaGlsZE5vZGVzLmxlbmd0aCArICh2YWwu
Y2hpbGROb2Rlcy5sZW5ndGggPT0gMSA/ICIgY2hpbGQiIDogIiBjaGlsZHJlbiIpOworICAgICAg
ICAgICAgY2FzZSBOb2RlLkRPQ1VNRU5UX1RZUEVfTk9ERToKKyAgICAgICAgICAgICAgICByZXR1
cm4gIkRvY3VtZW50VHlwZSBub2RlIjsKKyAgICAgICAgICAgIGNhc2UgTm9kZS5ET0NVTUVOVF9G
UkFHTUVOVF9OT0RFOgorICAgICAgICAgICAgICAgIHJldHVybiAiRG9jdW1lbnRGcmFnbWVudCBu
b2RlIHdpdGggIiArIHZhbC5jaGlsZE5vZGVzLmxlbmd0aCArICh2YWwuY2hpbGROb2Rlcy5sZW5n
dGggPT0gMSA/ICIgY2hpbGQiIDogIiBjaGlsZHJlbiIpOworICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICByZXR1cm4gIk5vZGUgb2JqZWN0IG9mIHVua25vd24gdHlwZSI7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgIC8qIGZhbGxzIHRocm91Z2ggKi8KKyAgICBk
ZWZhdWx0OgorICAgICAgICB0cnkgeworICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWwgKyAn
ICInICsgdHJ1bmNhdGUoU3RyaW5nKHZhbCksIDEwMDApICsgJyInOworICAgICAgICB9IGNhdGNo
KGUpIHsKKyAgICAgICAgICAgIHJldHVybiAoIltzdHJpbmdpZnlpbmcgb2JqZWN0IHRocmV3ICIg
KyBTdHJpbmcoZSkgKworICAgICAgICAgICAgICAgICAgICAiIHdpdGggdHlwZSAiICsgU3RyaW5n
KHR5cGVvZiBlKSArICJdIik7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIGlzX3Np
bmdsZV9ub2RlKHRlbXBsYXRlKQoreworICAgIHJldHVybiB0eXBlb2YgdGVtcGxhdGVbMF0gPT09
ICJzdHJpbmciOworfQorCitmdW5jdGlvbiBzdWJzdGl0dXRlKHRlbXBsYXRlLCBzdWJzdGl0dXRp
b25zKQoreworICAgIGlmICh0eXBlb2YgdGVtcGxhdGUgPT09ICJmdW5jdGlvbiIpIHsKKyAgICAg
ICAgdmFyIHJlcGxhY2VtZW50ID0gdGVtcGxhdGUoc3Vic3RpdHV0aW9ucyk7CisgICAgICAgIGlm
ICghcmVwbGFjZW1lbnQpIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisK
KyAgICAgICAgcmV0dXJuIHN1YnN0aXR1dGUocmVwbGFjZW1lbnQsIHN1YnN0aXR1dGlvbnMpOwor
ICAgIH0KKworICAgIGlmIChpc19zaW5nbGVfbm9kZSh0ZW1wbGF0ZSkpIHsKKyAgICAgICAgcmV0
dXJuIHN1YnN0aXR1dGVfc2luZ2xlKHRlbXBsYXRlLCBzdWJzdGl0dXRpb25zKTsKKyAgICB9CisK
KyAgICByZXR1cm4gZmlsdGVyKG1hcCh0ZW1wbGF0ZSwgZnVuY3Rpb24oeCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gc3Vic3RpdHV0ZSh4LCBzdWJzdGl0dXRpb25zKTsKKyAg
ICAgICAgICAgICAgICAgICAgICB9KSwgZnVuY3Rpb24oeCkge3JldHVybiB4ICE9PSBudWxsO30p
OworfQorCitmdW5jdGlvbiBzdWJzdGl0dXRlX3NpbmdsZSh0ZW1wbGF0ZSwgc3Vic3RpdHV0aW9u
cykKK3sKKyAgICB2YXIgc3Vic3RpdHV0aW9uX3JlID0gL1wkXHsoW14gfV0qKVx9L2c7CisKKyAg
ICBmdW5jdGlvbiBkb19zdWJzdGl0dXRpb24oaW5wdXQpIHsKKyAgICAgICAgdmFyIGNvbXBvbmVu
dHMgPSBpbnB1dC5zcGxpdChzdWJzdGl0dXRpb25fcmUpOworICAgICAgICB2YXIgcnYgPSBbXTsK
KyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb21wb25lbnRzLmxlbmd0aDsgaSArPSAyKSB7
CisgICAgICAgICAgICBydi5wdXNoKGNvbXBvbmVudHNbaV0pOworICAgICAgICAgICAgaWYgKGNv
bXBvbmVudHNbaSArIDFdKSB7CisgICAgICAgICAgICAgICAgcnYucHVzaChTdHJpbmcoc3Vic3Rp
dHV0aW9uc1tjb21wb25lbnRzW2kgKyAxXV0pKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gcnY7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3Vic3RpdHV0ZV9hdHRy
cyhhdHRycywgcnYpCisgICAgeworICAgICAgICBydlsxXSA9IHt9OworICAgICAgICBmb3IgKHZh
ciBuYW1lIGluIHRlbXBsYXRlWzFdKSB7CisgICAgICAgICAgICBpZiAoYXR0cnMuaGFzT3duUHJv
cGVydHkobmFtZSkpIHsKKyAgICAgICAgICAgICAgICB2YXIgbmV3X25hbWUgPSBkb19zdWJzdGl0
dXRpb24obmFtZSkuam9pbigiIik7CisgICAgICAgICAgICAgICAgdmFyIG5ld192YWx1ZSA9IGRv
X3N1YnN0aXR1dGlvbihhdHRyc1tuYW1lXSkuam9pbigiIik7CisgICAgICAgICAgICAgICAgcnZb
MV1bbmV3X25hbWVdID0gbmV3X3ZhbHVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorCisgICAgZnVuY3Rpb24gc3Vic3RpdHV0ZV9jaGlsZHJlbihjaGlsZHJlbiwgcnYpCisgICAg
eworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICAgICAgICBpZiAoY2hpbGRyZW5baV0gaW5zdGFuY2VvZiBPYmplY3QpIHsKKyAgICAgICAg
ICAgICAgICB2YXIgcmVwbGFjZW1lbnQgPSBzdWJzdGl0dXRlKGNoaWxkcmVuW2ldLCBzdWJzdGl0
dXRpb25zKTsKKyAgICAgICAgICAgICAgICBpZiAocmVwbGFjZW1lbnQgIT09IG51bGwpIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGlzX3NpbmdsZV9ub2RlKHJlcGxhY2VtZW50KSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgcnYucHVzaChyZXBsYWNlbWVudCk7CisgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBleHRlbmQocnYsIHJlcGxh
Y2VtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZXh0ZW5kKHJ2LCBkb19zdWJzdGl0dXRp
b24oU3RyaW5nKGNoaWxkcmVuW2ldKSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIHJldHVybiBydjsKKyAgICB9CisKKyAgICB2YXIgcnYgPSBbXTsKKyAgICBydi5wdXNoKGRv
X3N1YnN0aXR1dGlvbihTdHJpbmcodGVtcGxhdGVbMF0pKS5qb2luKCIiKSk7CisKKyAgICBpZiAo
dGVtcGxhdGVbMF0gPT09ICJ7dGV4dH0iKSB7CisgICAgICAgIHN1YnN0aXR1dGVfY2hpbGRyZW4o
dGVtcGxhdGUuc2xpY2UoMSksIHJ2KTsKKyAgICB9IGVsc2UgeworICAgICAgICBzdWJzdGl0dXRl
X2F0dHJzKHRlbXBsYXRlWzFdLCBydik7CisgICAgICAgIHN1YnN0aXR1dGVfY2hpbGRyZW4odGVt
cGxhdGUuc2xpY2UoMiksIHJ2KTsKKyAgICB9CisKKyAgICByZXR1cm4gcnY7Cit9CisKK2Z1bmN0
aW9uIGFzc2VydChleHBlY3RlZF90cnVlLCBmdW5jdGlvbl9uYW1lLCBkZXNjcmlwdGlvbiwgZXJy
b3IsIHN1YnN0aXR1dGlvbnMpCit7CisgICAgaWYgKGV4cGVjdGVkX3RydWUgIT09IHRydWUpIHsK
KyAgICAgICAgdmFyIG1zZyA9IG1ha2VfbWVzc2FnZShmdW5jdGlvbl9uYW1lLCBkZXNjcmlwdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgc3Vic3RpdHV0aW9ucyk7
CisgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25FcnJvcihtc2cpOworICAgIH0KK30KKworZnVu
Y3Rpb24gQXNzZXJ0aW9uRXJyb3IobWVzc2FnZSkKK3sKKyAgICB0aGlzLm1lc3NhZ2UgPSBtZXNz
YWdlOworICAgIHRoaXMuc3RhY2sgPSB0aGlzLmdldF9zdGFjaygpOworfQorCitBc3NlcnRpb25F
cnJvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEVycm9yLnByb3RvdHlwZSk7CisKK0Fzc2Vy
dGlvbkVycm9yLnByb3RvdHlwZS5nZXRfc3RhY2sgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgc3Rh
Y2sgPSBuZXcgRXJyb3IoKS5zdGFjazsKKyAgICAvLyBJRTExIGRvZXMgbm90IGluaXRpYWxpemUg
J0Vycm9yLnN0YWNrJyB1bnRpbCB0aGUgb2JqZWN0IGlzIHRocm93bi4KKyAgICBpZiAoIXN0YWNr
KSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsKKyAgICAg
ICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgc3RhY2sgPSBlLnN0YWNrOworICAgICAgICB9
CisgICAgfQorCisgICAgLy8gJ0Vycm9yLnN0YWNrJyBpcyBub3Qgc3VwcG9ydGVkIGluIGFsbCBi
cm93c2Vycy92ZXJzaW9ucworICAgIGlmICghc3RhY2spIHsKKyAgICAgICAgcmV0dXJuICIoU3Rh
Y2sgdHJhY2UgdW5hdmFpbGFibGUpIjsKKyAgICB9CisKKyAgICB2YXIgbGluZXMgPSBzdGFjay5z
cGxpdCgiXG4iKTsKKworICAgIC8vIENyZWF0ZSBhIHBhdHRlcm4gdG8gbWF0Y2ggc3RhY2sgZnJh
bWVzIG9yaWdpbmF0aW5nIHdpdGhpbiB0ZXN0aGFybmVzcy5qcy4gIFRoZXNlIGluY2x1ZGUgdGhl
CisgICAgLy8gc2NyaXB0IFVSTCwgZm9sbG93ZWQgYnkgdGhlIGxpbmUvY29sIChlLmcuLCAnL3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qczoxMjA6MjEnKS4KKyAgICAvLyBFc2NhcGUgdGhlIFVSTCBw
ZXIgaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zNTYxNDkzL2lzLXRoZXJlLWEt
cmVnZXhwLWVzY2FwZS1mdW5jdGlvbi1pbi1qYXZhc2NyaXB0CisgICAgLy8gaW4gY2FzZSBpdCBj
b250YWlucyBSZWdFeHAgY2hhcmFjdGVycy4KKyAgICB2YXIgc2NyaXB0X3VybCA9IGdldF9zY3Jp
cHRfdXJsKCk7CisgICAgdmFyIHJlX3RleHQgPSBzY3JpcHRfdXJsID8gc2NyaXB0X3VybC5yZXBs
YWNlKC9bLVwvXFxeJCorPy4oKXxbXF17fV0vZywgJ1xcJCYnKSA6ICJcXGJ0ZXN0aGFybmVzcy5q
cyI7CisgICAgdmFyIHJlID0gbmV3IFJlZ0V4cChyZV90ZXh0ICsgIjpcXGQrOlxcZCsiKTsKKwor
ICAgIC8vIFNvbWUgYnJvd3NlcnMgaW5jbHVkZSBhIHByZWFtYmxlIHRoYXQgc3BlY2lmaWVzIHRo
ZSB0eXBlIG9mIHRoZSBlcnJvciBvYmplY3QuICBTa2lwIHRoaXMgYnkKKyAgICAvLyBhZHZhbmNp
bmcgdW50aWwgd2UgZmluZCB0aGUgZmlyc3Qgc3RhY2sgZnJhbWUgb3JpZ2luYXRpbmcgZnJvbSB0
ZXN0aGFybmVzcy5qcy4KKyAgICB2YXIgaSA9IDA7CisgICAgd2hpbGUgKCFyZS50ZXN0KGxpbmVz
W2ldKSAmJiBpIDwgbGluZXMubGVuZ3RoKSB7CisgICAgICAgIGkrKzsKKyAgICB9CisKKyAgICAv
LyBUaGVuIHNraXAgdGhlIHRvcCBmcmFtZXMgb3JpZ2luYXRpbmcgZnJvbSB0ZXN0aGFybmVzcy5q
cyB0byBiZWdpbiB0aGUgc3RhY2sgYXQgdGhlIHRlc3QgY29kZS4KKyAgICB3aGlsZSAocmUudGVz
dChsaW5lc1tpXSkgJiYgaSA8IGxpbmVzLmxlbmd0aCkgeworICAgICAgICBpKys7CisgICAgfQor
CisgICAgLy8gUGFyYW5vaWQgY2hlY2sgdGhhdCB3ZSBkaWRuJ3Qgc2tpcCBhbGwgZnJhbWVzLiAg
SWYgc28sIHJldHVybiB0aGUgb3JpZ2luYWwgc3RhY2sgdW5tb2RpZmllZC4KKyAgICBpZiAoaSA+
PSBsaW5lcy5sZW5ndGgpIHsKKyAgICAgICAgcmV0dXJuIHN0YWNrOworICAgIH0KKworICAgIHJl
dHVybiBsaW5lcy5zbGljZShpKS5qb2luKCJcbiIpOworfQorCitmdW5jdGlvbiBtYWtlX21lc3Nh
Z2UoZnVuY3Rpb25fbmFtZSwgZGVzY3JpcHRpb24sIGVycm9yLCBzdWJzdGl0dXRpb25zKQorewor
ICAgIGZvciAodmFyIHAgaW4gc3Vic3RpdHV0aW9ucykgeworICAgICAgICBpZiAoc3Vic3RpdHV0
aW9ucy5oYXNPd25Qcm9wZXJ0eShwKSkgeworICAgICAgICAgICAgc3Vic3RpdHV0aW9uc1twXSA9
IGZvcm1hdF92YWx1ZShzdWJzdGl0dXRpb25zW3BdKTsKKyAgICAgICAgfQorICAgIH0KKyAgICB2
YXIgbm9kZV9mb3JtID0gc3Vic3RpdHV0ZShbInt0ZXh0fSIsICIke2Z1bmN0aW9uX25hbWV9OiAk
e2Rlc2NyaXB0aW9ufSIgKyBlcnJvcl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bWVyZ2Uoe2Z1bmN0aW9uX25hbWU6ZnVuY3Rpb25fbmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246KGRlc2NyaXB0aW9uP2Rlc2NyaXB0aW9uICsg
IiAiOiIiKX0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnN0aXR1
dGlvbnMpKTsKKyAgICByZXR1cm4gbm9kZV9mb3JtLnNsaWNlKDEpLmpvaW4oIiIpOworfQorCitm
dW5jdGlvbiBmaWx0ZXIoYXJyYXksIGNhbGxhYmxlLCB0aGlzT2JqKSB7CisgICAgdmFyIHJ2ID0g
W107CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykgeworICAgICAg
ICBpZiAoYXJyYXkuaGFzT3duUHJvcGVydHkoaSkpIHsKKyAgICAgICAgICAgIHZhciBwYXNzID0g
Y2FsbGFibGUuY2FsbCh0aGlzT2JqLCBhcnJheVtpXSwgaSwgYXJyYXkpOworICAgICAgICAgICAg
aWYgKHBhc3MpIHsKKyAgICAgICAgICAgICAgICBydi5wdXNoKGFycmF5W2ldKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcnY7Cit9CisKK2Z1bmN0aW9uIG1h
cChhcnJheSwgY2FsbGFibGUsIHRoaXNPYmopCit7CisgICAgdmFyIHJ2ID0gW107CisgICAgcnYu
bGVuZ3RoID0gYXJyYXkubGVuZ3RoOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVu
Z3RoOyBpKyspIHsKKyAgICAgICAgaWYgKGFycmF5Lmhhc093blByb3BlcnR5KGkpKSB7CisgICAg
ICAgICAgICBydltpXSA9IGNhbGxhYmxlLmNhbGwodGhpc09iaiwgYXJyYXlbaV0sIGksIGFycmF5
KTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcnY7Cit9CisKK2Z1bmN0aW9uIGZvckVh
Y2goYXJyYXksIGNhbGxiYWNrLCB0aGlzT2JqKQoreworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
YXJyYXkubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKGFycmF5Lmhhc093blByb3BlcnR5KGkp
KSB7CisgICAgICAgICAgICBjYWxsYmFjay5jYWxsKHRoaXNPYmosIGFycmF5W2ldLCBpLCBhcnJh
eSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIG1lcmdlKGEsYikKK3sKKyAgICB2
YXIgcnYgPSB7fTsKKyAgICB2YXIgcDsKKyAgICBmb3IgKHAgaW4gYSkgeworICAgICAgICBydltw
XSA9IGFbcF07CisgICAgfQorICAgIGZvciAocCBpbiBiKSB7CisgICAgICAgIHJ2W3BdID0gYltw
XTsKKyAgICB9CisgICAgcmV0dXJuIHJ2OworfQorCitmdW5jdGlvbiBzYW1lX3ZhbHVlKHgsIHkp
IHsKKyAgICBpZiAoeSAhPT0geSkgeworICAgICAgICAvL05hTiBjYXNlCisgICAgICAgIHJldHVy
biB4ICE9PSB4OworICAgIH0KKyAgICBpZiAoeCA9PT0gMCAmJiB5ID09PSAwKSB7CisgICAgICAg
IC8vRGlzdGluZ3Vpc2ggKzAgYW5kIC0wCisgICAgICAgIHJldHVybiAxL3ggPT09IDEveTsKKyAg
ICB9CisgICAgcmV0dXJuIHggPT09IHk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9lcXVhbHMoYWN0
dWFsLCBleHBlY3RlZCwgZGVzY3JpcHRpb24pCit7CisgICAgIC8qCisgICAgICAqIFRlc3QgaWYg
dHdvIHByaW1pdGl2ZXMgYXJlIGVxdWFsIG9yIHR3byBvYmplY3RzCisgICAgICAqIGFyZSB0aGUg
c2FtZSBvYmplY3QKKyAgICAgICovCisgICAgaWYgKHR5cGVvZiBhY3R1YWwgIT0gdHlwZW9mIGV4
cGVjdGVkKSB7CisgICAgICAgIGFzc2VydChmYWxzZSwgImFzc2VydF9lcXVhbHMiLCBkZXNjcmlw
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgKCIgKyB0eXBlb2YgZXhwZWN0
ZWQgKyAiKSAke2V4cGVjdGVkfSBidXQgZ290ICgiICsgdHlwZW9mIGFjdHVhbCArICIpICR7YWN0
dWFsfSIsCisgICAgICAgICAgICAgICAgICAgICAge2V4cGVjdGVkOmV4cGVjdGVkLCBhY3R1YWw6
YWN0dWFsfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXNzZXJ0KHNhbWVfdmFsdWUo
YWN0dWFsLCBleHBlY3RlZCksICJhc3NlcnRfZXF1YWxzIiwgZGVzY3JpcHRpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCAke2V4cGVjdGVkfSBi
dXQgZ290ICR7YWN0dWFsfSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHtleHBlY3RlZDpleHBlY3RlZCwgYWN0dWFsOmFjdHVhbH0pOworfQorCitmdW5jdGlvbiBh
c3NlcnRfbm90X2VxdWFscyhhY3R1YWwsIGV4cGVjdGVkLCBkZXNjcmlwdGlvbikKK3sKKyAgICAg
LyoKKyAgICAgICogVGVzdCBpZiB0d28gcHJpbWl0aXZlcyBhcmUgdW5lcXVhbCBvciB0d28gb2Jq
ZWN0cworICAgICAgKiBhcmUgZGlmZmVyZW50IG9iamVjdHMKKyAgICAgICovCisgICAgYXNzZXJ0
KCFzYW1lX3ZhbHVlKGFjdHVhbCwgZXhwZWN0ZWQpLCAiYXNzZXJ0X25vdF9lcXVhbHMiLCBkZXNj
cmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnb3Qg
ZGlzYWxsb3dlZCB2YWx1ZSAke2FjdHVhbH0iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAge2FjdHVhbDphY3R1YWx9KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X2lu
X2FycmF5KGFjdHVhbCwgZXhwZWN0ZWQsIGRlc2NyaXB0aW9uKQoreworICAgIGFzc2VydChleHBl
Y3RlZC5pbmRleE9mKGFjdHVhbCkgIT0gLTEsICJhc3NlcnRfaW5fYXJyYXkiLCBkZXNjcmlwdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUgJHth
Y3R1YWx9IG5vdCBpbiBhcnJheSAke2V4cGVjdGVkfSIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAge2FjdHVhbDphY3R1YWwsIGV4cGVjdGVkOmV4cGVjdGVkfSk7
Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9vYmplY3RfZXF1YWxzKGFjdHVhbCwgZXhwZWN0ZWQsIGRl
c2NyaXB0aW9uKQoreworICAgICAvL1RoaXMgbmVlZHMgdG8gYmUgaW1wcm92ZWQgYSBncmVhdCBk
ZWFsCisgICAgIGZ1bmN0aW9uIGNoZWNrX2VxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIHN0YWNrKQor
ICAgICB7CisgICAgICAgICBzdGFjay5wdXNoKGFjdHVhbCk7CisKKyAgICAgICAgIHZhciBwOwor
ICAgICAgICAgZm9yIChwIGluIGFjdHVhbCkgeworICAgICAgICAgICAgIGFzc2VydChleHBlY3Rl
ZC5oYXNPd25Qcm9wZXJ0eShwKSwgImFzc2VydF9vYmplY3RfZXF1YWxzIiwgZGVzY3JpcHRpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5leHBl
Y3RlZCBwcm9wZXJ0eSAke3B9Iiwge3A6cH0pOworCisgICAgICAgICAgICAgaWYgKHR5cGVvZiBh
Y3R1YWxbcF0gPT09ICJvYmplY3QiICYmIGFjdHVhbFtwXSAhPT0gbnVsbCkgeworICAgICAgICAg
ICAgICAgICBpZiAoc3RhY2suaW5kZXhPZihhY3R1YWxbcF0pID09PSAtMSkgeworICAgICAgICAg
ICAgICAgICAgICAgY2hlY2tfZXF1YWwoYWN0dWFsW3BdLCBleHBlY3RlZFtwXSwgc3RhY2spOwor
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgYXNzZXJ0KHNhbWVfdmFsdWUoYWN0dWFsW3BdLCBleHBlY3RlZFtwXSksICJhc3NlcnRfb2Jq
ZWN0X2VxdWFscyIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgInByb3BlcnR5ICR7cH0gZXhwZWN0ZWQgJHtleHBlY3RlZH0g
Z290ICR7YWN0dWFsfSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB7cDpwLCBleHBlY3RlZDpleHBlY3RlZCwgYWN0dWFsOmFjdHVhbH0pOworICAg
ICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgICAgIGZvciAocCBpbiBleHBlY3RlZCkgewor
ICAgICAgICAgICAgIGFzc2VydChhY3R1YWwuaGFzT3duUHJvcGVydHkocCksCisgICAgICAgICAg
ICAgICAgICAgICJhc3NlcnRfb2JqZWN0X2VxdWFscyIsIGRlc2NyaXB0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAiZXhwZWN0ZWQgcHJvcGVydHkgJHtwfSBtaXNzaW5nIiwge3A6cH0pOworICAg
ICAgICAgfQorICAgICAgICAgc3RhY2sucG9wKCk7CisgICAgIH0KKyAgICAgY2hlY2tfZXF1YWwo
YWN0dWFsLCBleHBlY3RlZCwgW10pOworfQorCitmdW5jdGlvbiBhc3NlcnRfYXJyYXlfZXF1YWxz
KGFjdHVhbCwgZXhwZWN0ZWQsIGRlc2NyaXB0aW9uKQoreworICAgIGFzc2VydChhY3R1YWwubGVu
Z3RoID09PSBleHBlY3RlZC5sZW5ndGgsCisgICAgICAgICAgICJhc3NlcnRfYXJyYXlfZXF1YWxz
IiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICJsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgJHtl
eHBlY3RlZH0gZ290ICR7YWN0dWFsfSIsCisgICAgICAgICAgIHtleHBlY3RlZDpleHBlY3RlZC5s
ZW5ndGgsIGFjdHVhbDphY3R1YWwubGVuZ3RofSk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGFjdHVhbC5sZW5ndGg7IGkrKykgeworICAgICAgICBhc3NlcnQoYWN0dWFsLmhhc093blByb3Bl
cnR5KGkpID09PSBleHBlY3RlZC5oYXNPd25Qcm9wZXJ0eShpKSwKKyAgICAgICAgICAgICAgICJh
c3NlcnRfYXJyYXlfZXF1YWxzIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAicHJvcGVy
dHkgJHtpfSwgcHJvcGVydHkgZXhwZWN0ZWQgdG8gYmUgJHtleHBlY3RlZH0gYnV0IHdhcyAke2Fj
dHVhbH0iLAorICAgICAgICAgICAgICAge2k6aSwgZXhwZWN0ZWQ6ZXhwZWN0ZWQuaGFzT3duUHJv
cGVydHkoaSkgPyAicHJlc2VudCIgOiAibWlzc2luZyIsCisgICAgICAgICAgICAgICBhY3R1YWw6
YWN0dWFsLmhhc093blByb3BlcnR5KGkpID8gInByZXNlbnQiIDogIm1pc3NpbmcifSk7CisgICAg
ICAgIGFzc2VydChzYW1lX3ZhbHVlKGV4cGVjdGVkW2ldLCBhY3R1YWxbaV0pLAorICAgICAgICAg
ICAgICAgImFzc2VydF9hcnJheV9lcXVhbHMiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAg
ICJwcm9wZXJ0eSAke2l9LCBleHBlY3RlZCAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfSIs
CisgICAgICAgICAgICAgICB7aTppLCBleHBlY3RlZDpleHBlY3RlZFtpXSwgYWN0dWFsOmFjdHVh
bFtpXX0pOworICAgIH0KK30KKworZnVuY3Rpb24gYXNzZXJ0X2FwcHJveF9lcXVhbHMoYWN0dWFs
LCBleHBlY3RlZCwgZXBzaWxvbiwgZGVzY3JpcHRpb24pCit7CisgICAgLyoKKyAgICAgKiBUZXN0
IGlmIHR3byBwcmltaXRpdmUgbnVtYmVycyBhcmUgZXF1YWwgd2l0aGluZyArLy0gZXBzaWxvbgor
ICAgICAqLworICAgIGFzc2VydCh0eXBlb2YgYWN0dWFsID09PSAibnVtYmVyIiwKKyAgICAgICAg
ICAgImFzc2VydF9hcHByb3hfZXF1YWxzIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICJleHBl
Y3RlZCBhIG51bWJlciBidXQgZ290IGEgJHt0eXBlX2FjdHVhbH0iLAorICAgICAgICAgICB7dHlw
ZV9hY3R1YWw6dHlwZW9mIGFjdHVhbH0pOworCisgICAgYXNzZXJ0KE1hdGguYWJzKGFjdHVhbCAt
IGV4cGVjdGVkKSA8PSBlcHNpbG9uLAorICAgICAgICAgICAiYXNzZXJ0X2FwcHJveF9lcXVhbHMi
LCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgImV4cGVjdGVkICR7ZXhwZWN0ZWR9ICsvLSAke2Vw
c2lsb259IGJ1dCBnb3QgJHthY3R1YWx9IiwKKyAgICAgICAgICAge2V4cGVjdGVkOmV4cGVjdGVk
LCBhY3R1YWw6YWN0dWFsLCBlcHNpbG9uOmVwc2lsb259KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0
X2xlc3NfdGhhbihhY3R1YWwsIGV4cGVjdGVkLCBkZXNjcmlwdGlvbikKK3sKKyAgICAvKgorICAg
ICAqIFRlc3QgaWYgYSBwcmltaXRpdmUgbnVtYmVyIGlzIGxlc3MgdGhhbiBhbm90aGVyCisgICAg
ICovCisgICAgYXNzZXJ0KHR5cGVvZiBhY3R1YWwgPT09ICJudW1iZXIiLAorICAgICAgICAgICAi
YXNzZXJ0X2xlc3NfdGhhbiIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAiZXhwZWN0ZWQgYSBu
dW1iZXIgYnV0IGdvdCBhICR7dHlwZV9hY3R1YWx9IiwKKyAgICAgICAgICAge3R5cGVfYWN0dWFs
OnR5cGVvZiBhY3R1YWx9KTsKKworICAgIGFzc2VydChhY3R1YWwgPCBleHBlY3RlZCwKKyAgICAg
ICAgICAgImFzc2VydF9sZXNzX3RoYW4iLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgImV4cGVj
dGVkIGEgbnVtYmVyIGxlc3MgdGhhbiAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfSIsCisg
ICAgICAgICAgIHtleHBlY3RlZDpleHBlY3RlZCwgYWN0dWFsOmFjdHVhbH0pOworfQorCitmdW5j
dGlvbiBhc3NlcnRfZ3JlYXRlcl90aGFuKGFjdHVhbCwgZXhwZWN0ZWQsIGRlc2NyaXB0aW9uKQor
eworICAgIC8qCisgICAgICogVGVzdCBpZiBhIHByaW1pdGl2ZSBudW1iZXIgaXMgZ3JlYXRlciB0
aGFuIGFub3RoZXIKKyAgICAgKi8KKyAgICBhc3NlcnQodHlwZW9mIGFjdHVhbCA9PT0gIm51bWJl
ciIsCisgICAgICAgICAgICJhc3NlcnRfZ3JlYXRlcl90aGFuIiwgZGVzY3JpcHRpb24sCisgICAg
ICAgICAgICJleHBlY3RlZCBhIG51bWJlciBidXQgZ290IGEgJHt0eXBlX2FjdHVhbH0iLAorICAg
ICAgICAgICB7dHlwZV9hY3R1YWw6dHlwZW9mIGFjdHVhbH0pOworCisgICAgYXNzZXJ0KGFjdHVh
bCA+IGV4cGVjdGVkLAorICAgICAgICAgICAiYXNzZXJ0X2dyZWF0ZXJfdGhhbiIsIGRlc2NyaXB0
aW9uLAorICAgICAgICAgICAiZXhwZWN0ZWQgYSBudW1iZXIgZ3JlYXRlciB0aGFuICR7ZXhwZWN0
ZWR9IGJ1dCBnb3QgJHthY3R1YWx9IiwKKyAgICAgICAgICAge2V4cGVjdGVkOmV4cGVjdGVkLCBh
Y3R1YWw6YWN0dWFsfSk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9iZXR3ZWVuX2V4Y2x1c2l2ZShh
Y3R1YWwsIGxvd2VyLCB1cHBlciwgZGVzY3JpcHRpb24pCit7CisgICAgLyoKKyAgICAgKiBUZXN0
IGlmIGEgcHJpbWl0aXZlIG51bWJlciBpcyBiZXR3ZWVuIHR3byBvdGhlcnMKKyAgICAgKi8KKyAg
ICBhc3NlcnQodHlwZW9mIGFjdHVhbCA9PT0gIm51bWJlciIsCisgICAgICAgICAgICJhc3NlcnRf
YmV0d2Vlbl9leGNsdXNpdmUiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgImV4cGVjdGVkIGEg
bnVtYmVyIGJ1dCBnb3QgYSAke3R5cGVfYWN0dWFsfSIsCisgICAgICAgICAgIHt0eXBlX2FjdHVh
bDp0eXBlb2YgYWN0dWFsfSk7CisKKyAgICBhc3NlcnQoYWN0dWFsID4gbG93ZXIgJiYgYWN0dWFs
IDwgdXBwZXIsCisgICAgICAgICAgICJhc3NlcnRfYmV0d2Vlbl9leGNsdXNpdmUiLCBkZXNjcmlw
dGlvbiwKKyAgICAgICAgICAgImV4cGVjdGVkIGEgbnVtYmVyIGdyZWF0ZXIgdGhhbiAke2xvd2Vy
fSAiICsKKyAgICAgICAgICAgImFuZCBsZXNzIHRoYW4gJHt1cHBlcn0gYnV0IGdvdCAke2FjdHVh
bH0iLAorICAgICAgICAgICB7bG93ZXI6bG93ZXIsIHVwcGVyOnVwcGVyLCBhY3R1YWw6YWN0dWFs
fSk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9sZXNzX3RoYW5fZXF1YWwoYWN0dWFsLCBleHBlY3Rl
ZCwgZGVzY3JpcHRpb24pCit7CisgICAgLyoKKyAgICAgKiBUZXN0IGlmIGEgcHJpbWl0aXZlIG51
bWJlciBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYW5vdGhlcgorICAgICAqLworICAgIGFzc2Vy
dCh0eXBlb2YgYWN0dWFsID09PSAibnVtYmVyIiwKKyAgICAgICAgICAgImFzc2VydF9sZXNzX3Ro
YW5fZXF1YWwiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgImV4cGVjdGVkIGEgbnVtYmVyIGJ1
dCBnb3QgYSAke3R5cGVfYWN0dWFsfSIsCisgICAgICAgICAgIHt0eXBlX2FjdHVhbDp0eXBlb2Yg
YWN0dWFsfSk7CisKKyAgICBhc3NlcnQoYWN0dWFsIDw9IGV4cGVjdGVkLAorICAgICAgICAgICAi
YXNzZXJ0X2xlc3NfdGhhbl9lcXVhbCIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAiZXhwZWN0
ZWQgYSBudW1iZXIgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHth
Y3R1YWx9IiwKKyAgICAgICAgICAge2V4cGVjdGVkOmV4cGVjdGVkLCBhY3R1YWw6YWN0dWFsfSk7
Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9ncmVhdGVyX3RoYW5fZXF1YWwoYWN0dWFsLCBleHBlY3Rl
ZCwgZGVzY3JpcHRpb24pCit7CisgICAgLyoKKyAgICAgKiBUZXN0IGlmIGEgcHJpbWl0aXZlIG51
bWJlciBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYW5vdGhlcgorICAgICAqLworICAgIGFz
c2VydCh0eXBlb2YgYWN0dWFsID09PSAibnVtYmVyIiwKKyAgICAgICAgICAgImFzc2VydF9ncmVh
dGVyX3RoYW5fZXF1YWwiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgImV4cGVjdGVkIGEgbnVt
YmVyIGJ1dCBnb3QgYSAke3R5cGVfYWN0dWFsfSIsCisgICAgICAgICAgIHt0eXBlX2FjdHVhbDp0
eXBlb2YgYWN0dWFsfSk7CisKKyAgICBhc3NlcnQoYWN0dWFsID49IGV4cGVjdGVkLAorICAgICAg
ICAgICAiYXNzZXJ0X2dyZWF0ZXJfdGhhbl9lcXVhbCIsIGRlc2NyaXB0aW9uLAorICAgICAgICAg
ICAiZXhwZWN0ZWQgYSBudW1iZXIgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICR7ZXhwZWN0ZWR9
IGJ1dCBnb3QgJHthY3R1YWx9IiwKKyAgICAgICAgICAge2V4cGVjdGVkOmV4cGVjdGVkLCBhY3R1
YWw6YWN0dWFsfSk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9iZXR3ZWVuX2luY2x1c2l2ZShhY3R1
YWwsIGxvd2VyLCB1cHBlciwgZGVzY3JpcHRpb24pCit7CisgICAgLyoKKyAgICAgKiBUZXN0IGlm
IGEgcHJpbWl0aXZlIG51bWJlciBpcyBiZXR3ZWVuIHRvIHR3byBvdGhlcnMgb3IgZXF1YWwgdG8g
ZWl0aGVyIG9mIHRoZW0KKyAgICAgKi8KKyAgICBhc3NlcnQodHlwZW9mIGFjdHVhbCA9PT0gIm51
bWJlciIsCisgICAgICAgICAgICJhc3NlcnRfYmV0d2Vlbl9pbmNsdXNpdmUiLCBkZXNjcmlwdGlv
biwKKyAgICAgICAgICAgImV4cGVjdGVkIGEgbnVtYmVyIGJ1dCBnb3QgYSAke3R5cGVfYWN0dWFs
fSIsCisgICAgICAgICAgIHt0eXBlX2FjdHVhbDp0eXBlb2YgYWN0dWFsfSk7CisKKyAgICBhc3Nl
cnQoYWN0dWFsID49IGxvd2VyICYmIGFjdHVhbCA8PSB1cHBlciwKKyAgICAgICAgICAgImFzc2Vy
dF9iZXR3ZWVuX2luY2x1c2l2ZSIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAiZXhwZWN0ZWQg
YSBudW1iZXIgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICR7bG93ZXJ9ICIgKworICAgICAgICAg
ICAiYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAke3VwcGVyfSBidXQgZ290ICR7YWN0dWFsfSIs
CisgICAgICAgICAgIHtsb3dlcjpsb3dlciwgdXBwZXI6dXBwZXIsIGFjdHVhbDphY3R1YWx9KTsK
K30KKworZnVuY3Rpb24gYXNzZXJ0X3Rocm93cyhjb2RlLCBmdW5jLCBkZXNjcmlwdGlvbikKK3sK
KyAgICB0cnkgeworICAgICAgICBmdW5jLmNhbGwodGhpcyk7CisgICAgICAgIGFzc2VydChmYWxz
ZSwgImFzc2VydF90aHJvd3MiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICIke2Z1bmN9
IGRpZCBub3QgdGhyb3ciLCB7ZnVuYzpmdW5jfSk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAg
ICBpZiAoZSBpbnN0YW5jZW9mIEFzc2VydGlvbkVycm9yKSB7CisgICAgICAgICAgICB0aHJvdyBl
OworICAgICAgICB9CisgICAgICAgIGlmIChjb2RlID09PSBudWxsKSB7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKHR5cGVvZiBjb2RlID09PSAib2JqZWN0Iikg
eworICAgICAgICAgICAgYXNzZXJ0KHR5cGVvZiBlID09ICJvYmplY3QiICYmICJuYW1lIiBpbiBl
ICYmIGUubmFtZSA9PSBjb2RlLm5hbWUsCisgICAgICAgICAgICAgICAgICAgImFzc2VydF90aHJv
d3MiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAiJHtmdW5jfSB0aHJldyAke2Fj
dHVhbH0gKCR7YWN0dWFsX25hbWV9KSBleHBlY3RlZCAke2V4cGVjdGVkfSAoJHtleHBlY3RlZF9u
YW1lfSkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZnVuYzpmdW5jLCBhY3R1
YWw6ZSwgYWN0dWFsX25hbWU6ZS5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZXhwZWN0ZWQ6Y29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVj
dGVkX25hbWU6Y29kZS5uYW1lfSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICB2YXIgY29kZV9uYW1lX21hcCA9IHsKKyAgICAgICAgICAgIElOREVYX1NJWkVfRVJS
OiAnSW5kZXhTaXplRXJyb3InLAorICAgICAgICAgICAgSElFUkFSQ0hZX1JFUVVFU1RfRVJSOiAn
SGllcmFyY2h5UmVxdWVzdEVycm9yJywKKyAgICAgICAgICAgIFdST05HX0RPQ1VNRU5UX0VSUjog
J1dyb25nRG9jdW1lbnRFcnJvcicsCisgICAgICAgICAgICBJTlZBTElEX0NIQVJBQ1RFUl9FUlI6
ICdJbnZhbGlkQ2hhcmFjdGVyRXJyb3InLAorICAgICAgICAgICAgTk9fTU9ESUZJQ0FUSU9OX0FM
TE9XRURfRVJSOiAnTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3InLAorICAgICAgICAgICAgTk9U
X0ZPVU5EX0VSUjogJ05vdEZvdW5kRXJyb3InLAorICAgICAgICAgICAgTk9UX1NVUFBPUlRFRF9F
UlI6ICdOb3RTdXBwb3J0ZWRFcnJvcicsCisgICAgICAgICAgICBJTlVTRV9BVFRSSUJVVEVfRVJS
OiAnSW5Vc2VBdHRyaWJ1dGVFcnJvcicsCisgICAgICAgICAgICBJTlZBTElEX1NUQVRFX0VSUjog
J0ludmFsaWRTdGF0ZUVycm9yJywKKyAgICAgICAgICAgIFNZTlRBWF9FUlI6ICdTeW50YXhFcnJv
cicsCisgICAgICAgICAgICBJTlZBTElEX01PRElGSUNBVElPTl9FUlI6ICdJbnZhbGlkTW9kaWZp
Y2F0aW9uRXJyb3InLAorICAgICAgICAgICAgTkFNRVNQQUNFX0VSUjogJ05hbWVzcGFjZUVycm9y
JywKKyAgICAgICAgICAgIElOVkFMSURfQUNDRVNTX0VSUjogJ0ludmFsaWRBY2Nlc3NFcnJvcics
CisgICAgICAgICAgICBUWVBFX01JU01BVENIX0VSUjogJ1R5cGVNaXNtYXRjaEVycm9yJywKKyAg
ICAgICAgICAgIFNFQ1VSSVRZX0VSUjogJ1NlY3VyaXR5RXJyb3InLAorICAgICAgICAgICAgTkVU
V09SS19FUlI6ICdOZXR3b3JrRXJyb3InLAorICAgICAgICAgICAgQUJPUlRfRVJSOiAnQWJvcnRF
cnJvcicsCisgICAgICAgICAgICBVUkxfTUlTTUFUQ0hfRVJSOiAnVVJMTWlzbWF0Y2hFcnJvcics
CisgICAgICAgICAgICBRVU9UQV9FWENFRURFRF9FUlI6ICdRdW90YUV4Y2VlZGVkRXJyb3InLAor
ICAgICAgICAgICAgVElNRU9VVF9FUlI6ICdUaW1lb3V0RXJyb3InLAorICAgICAgICAgICAgSU5W
QUxJRF9OT0RFX1RZUEVfRVJSOiAnSW52YWxpZE5vZGVUeXBlRXJyb3InLAorICAgICAgICAgICAg
REFUQV9DTE9ORV9FUlI6ICdEYXRhQ2xvbmVFcnJvcicKKyAgICAgICAgfTsKKworICAgICAgICB2
YXIgbmFtZSA9IGNvZGUgaW4gY29kZV9uYW1lX21hcCA/IGNvZGVfbmFtZV9tYXBbY29kZV0gOiBj
b2RlOworCisgICAgICAgIHZhciBuYW1lX2NvZGVfbWFwID0geworICAgICAgICAgICAgSW5kZXhT
aXplRXJyb3I6IDEsCisgICAgICAgICAgICBIaWVyYXJjaHlSZXF1ZXN0RXJyb3I6IDMsCisgICAg
ICAgICAgICBXcm9uZ0RvY3VtZW50RXJyb3I6IDQsCisgICAgICAgICAgICBJbnZhbGlkQ2hhcmFj
dGVyRXJyb3I6IDUsCisgICAgICAgICAgICBOb01vZGlmaWNhdGlvbkFsbG93ZWRFcnJvcjogNywK
KyAgICAgICAgICAgIE5vdEZvdW5kRXJyb3I6IDgsCisgICAgICAgICAgICBOb3RTdXBwb3J0ZWRF
cnJvcjogOSwKKyAgICAgICAgICAgIEluVXNlQXR0cmlidXRlRXJyb3I6IDEwLAorICAgICAgICAg
ICAgSW52YWxpZFN0YXRlRXJyb3I6IDExLAorICAgICAgICAgICAgU3ludGF4RXJyb3I6IDEyLAor
ICAgICAgICAgICAgSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yOiAxMywKKyAgICAgICAgICAgIE5h
bWVzcGFjZUVycm9yOiAxNCwKKyAgICAgICAgICAgIEludmFsaWRBY2Nlc3NFcnJvcjogMTUsCisg
ICAgICAgICAgICBUeXBlTWlzbWF0Y2hFcnJvcjogMTcsCisgICAgICAgICAgICBTZWN1cml0eUVy
cm9yOiAxOCwKKyAgICAgICAgICAgIE5ldHdvcmtFcnJvcjogMTksCisgICAgICAgICAgICBBYm9y
dEVycm9yOiAyMCwKKyAgICAgICAgICAgIFVSTE1pc21hdGNoRXJyb3I6IDIxLAorICAgICAgICAg
ICAgUXVvdGFFeGNlZWRlZEVycm9yOiAyMiwKKyAgICAgICAgICAgIFRpbWVvdXRFcnJvcjogMjMs
CisgICAgICAgICAgICBJbnZhbGlkTm9kZVR5cGVFcnJvcjogMjQsCisgICAgICAgICAgICBEYXRh
Q2xvbmVFcnJvcjogMjUsCisKKyAgICAgICAgICAgIEVuY29kaW5nRXJyb3I6IDAsCisgICAgICAg
ICAgICBOb3RSZWFkYWJsZUVycm9yOiAwLAorICAgICAgICAgICAgVW5rbm93bkVycm9yOiAwLAor
ICAgICAgICAgICAgQ29uc3RyYWludEVycm9yOiAwLAorICAgICAgICAgICAgRGF0YUVycm9yOiAw
LAorICAgICAgICAgICAgVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yOiAwLAorICAgICAgICAgICAg
UmVhZE9ubHlFcnJvcjogMCwKKyAgICAgICAgICAgIFZlcnNpb25FcnJvcjogMCwKKyAgICAgICAg
ICAgIE9wZXJhdGlvbkVycm9yOiAwLAorICAgICAgICAgICAgTm90QWxsb3dlZEVycm9yOiAwCisg
ICAgICAgIH07CisKKyAgICAgICAgaWYgKCEobmFtZSBpbiBuYW1lX2NvZGVfbWFwKSkgeworICAg
ICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkVycm9yKCdUZXN0IGJ1ZzogdW5yZWNvZ25pemVk
IERPTUV4Y2VwdGlvbiBjb2RlICInICsgY29kZSArICciIHBhc3NlZCB0byBhc3NlcnRfdGhyb3dz
KCknKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciByZXF1aXJlZF9wcm9wcyA9IHsgY29kZTog
bmFtZV9jb2RlX21hcFtuYW1lXSB9OworCisgICAgICAgIGlmIChyZXF1aXJlZF9wcm9wcy5jb2Rl
ID09PSAwIHx8CisgICAgICAgICAgICh0eXBlb2YgZSA9PSAib2JqZWN0IiAmJgorICAgICAgICAg
ICAgIm5hbWUiIGluIGUgJiYKKyAgICAgICAgICAgIGUubmFtZSAhPT0gZS5uYW1lLnRvVXBwZXJD
YXNlKCkgJiYKKyAgICAgICAgICAgIGUubmFtZSAhPT0gIkRPTUV4Y2VwdGlvbiIpKSB7CisgICAg
ICAgICAgICAvLyBOZXcgc3R5bGUgZXhjZXB0aW9uOiBhbHNvIHRlc3QgdGhlIG5hbWUgcHJvcGVy
dHkuCisgICAgICAgICAgICByZXF1aXJlZF9wcm9wcy5uYW1lID0gbmFtZTsKKyAgICAgICAgfQor
CisgICAgICAgIC8vV2UnZCBsaWtlIHRvIHRlc3QgdGhhdCBlIGluc3RhbmNlb2YgdGhlIGFwcHJv
cHJpYXRlIGludGVyZmFjZSwKKyAgICAgICAgLy9idXQgd2UgY2FuJ3QsIGJlY2F1c2Ugd2UgZG9u
J3Qga25vdyB3aGF0IHdpbmRvdyBpdCB3YXMgY3JlYXRlZAorICAgICAgICAvL2luLiAgSXQgbWln
aHQgYmUgYW4gaW5zdGFuY2VvZiB0aGUgYXBwcm9wcmlhdGUgaW50ZXJmYWNlIG9uIHNvbWUKKyAg
ICAgICAgLy91bmtub3duIG90aGVyIHdpbmRvdy4gIFRPRE86IFdvcmsgYXJvdW5kIHRoaXMgc29t
ZWhvdz8KKworICAgICAgICBhc3NlcnQodHlwZW9mIGUgPT0gIm9iamVjdCIsCisgICAgICAgICAg
ICAgICAiYXNzZXJ0X3Rocm93cyIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgIiR7ZnVu
Y30gdGhyZXcgJHtlfSB3aXRoIHR5cGUgJHt0eXBlfSwgbm90IGFuIG9iamVjdCIsCisgICAgICAg
ICAgICAgICB7ZnVuYzpmdW5jLCBlOmUsIHR5cGU6dHlwZW9mIGV9KTsKKworICAgICAgICBmb3Ig
KHZhciBwcm9wIGluIHJlcXVpcmVkX3Byb3BzKSB7CisgICAgICAgICAgICBhc3NlcnQodHlwZW9m
IGUgPT0gIm9iamVjdCIgJiYgcHJvcCBpbiBlICYmIGVbcHJvcF0gPT0gcmVxdWlyZWRfcHJvcHNb
cHJvcF0sCisgICAgICAgICAgICAgICAgICAgImFzc2VydF90aHJvd3MiLCBkZXNjcmlwdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAiJHtmdW5jfSB0aHJldyAke2V9IHRoYXQgaXMgbm90IGEgRE9N
RXhjZXB0aW9uICIgKyBjb2RlICsgIjogcHJvcGVydHkgJHtwcm9wfSBpcyBlcXVhbCB0byAke2Fj
dHVhbH0sIGV4cGVjdGVkICR7ZXhwZWN0ZWR9IiwKKyAgICAgICAgICAgICAgICAgICB7ZnVuYzpm
dW5jLCBlOmUsIHByb3A6cHJvcCwgYWN0dWFsOmVbcHJvcF0sIGV4cGVjdGVkOnJlcXVpcmVkX3By
b3BzW3Byb3BdfSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8qCisgKiBSZXR1cm4gdHJ1ZSBp
ZiBvYmplY3QgaXMgcHJvYmFibHkgYSBOb2RlIG9iamVjdC4KKyAqLworZnVuY3Rpb24gaXNfbm9k
ZShvYmplY3QpCit7CisgICAgLy8gSSB1c2UgZHVjay10eXBpbmcgaW5zdGVhZCBvZiBpbnN0YW5j
ZW9mLCBiZWNhdXNlCisgICAgLy8gaW5zdGFuY2VvZiBkb2Vzbid0IHdvcmsgaWYgdGhlIG5vZGUg
aXMgZnJvbSBhbm90aGVyIHdpbmRvdyAobGlrZSBhbgorICAgIC8vIGlmcmFtZSdzIGNvbnRlbnRX
aW5kb3cpOgorICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL0J1Z3MvUHVibGljL3Nob3dfYnVnLmNn
aT9pZD0xMjI5NQorICAgIHRyeSB7CisgICAgICAgIHZhciBoYXNfbm9kZV9wcm9wZXJ0aWVzID0g
KCJub2RlVHlwZSIgaW4gb2JqZWN0ICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJub2RlTmFtZSIgaW4gb2JqZWN0ICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJub2RlVmFsdWUiIGluIG9iamVjdCAmJgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiY2hpbGROb2RlcyIgaW4gb2JqZWN0KTsKKyAgICB9IGNhdGNoIChlKSB7Cisg
ICAgICAgIC8vIFdlJ3JlIHByb2JhYmx5IGNyb3NzLW9yaWdpbiwgd2hpY2ggbWVhbnMgd2UgYXJl
bid0IGEgbm9kZQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKGhhc19u
b2RlX3Byb3BlcnRpZXMpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG9iamVjdC5ub2Rl
VHlwZTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgLy8gVGhlIG9iamVjdCBp
cyBwcm9iYWJseSBOb2RlLnByb3RvdHlwZSBvciBhbm90aGVyIHByb3RvdHlwZQorICAgICAgICAg
ICAgLy8gb2JqZWN0IHRoYXQgaW5oZXJpdHMgZnJvbSBpdCwgYW5kIG5vdCBhIE5vZGUgaW5zdGFu
Y2UuCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordmFyIHJlcGxhY2VtZW50cyA9
IHsKKyAgICAiMCI6ICIwIiwKKyAgICAiMSI6ICJ4MDEiLAorICAgICIyIjogIngwMiIsCisgICAg
IjMiOiAieDAzIiwKKyAgICAiNCI6ICJ4MDQiLAorICAgICI1IjogIngwNSIsCisgICAgIjYiOiAi
eDA2IiwKKyAgICAiNyI6ICJ4MDciLAorICAgICI4IjogImIiLAorICAgICI5IjogInQiLAorICAg
ICIxMCI6ICJuIiwKKyAgICAiMTEiOiAidiIsCisgICAgIjEyIjogImYiLAorICAgICIxMyI6ICJy
IiwKKyAgICAiMTQiOiAieDBlIiwKKyAgICAiMTUiOiAieDBmIiwKKyAgICAiMTYiOiAieDEwIiwK
KyAgICAiMTciOiAieDExIiwKKyAgICAiMTgiOiAieDEyIiwKKyAgICAiMTkiOiAieDEzIiwKKyAg
ICAiMjAiOiAieDE0IiwKKyAgICAiMjEiOiAieDE1IiwKKyAgICAiMjIiOiAieDE2IiwKKyAgICAi
MjMiOiAieDE3IiwKKyAgICAiMjQiOiAieDE4IiwKKyAgICAiMjUiOiAieDE5IiwKKyAgICAiMjYi
OiAieDFhIiwKKyAgICAiMjciOiAieDFiIiwKKyAgICAiMjgiOiAieDFjIiwKKyAgICAiMjkiOiAi
eDFkIiwKKyAgICAiMzAiOiAieDFlIiwKKyAgICAiMzEiOiAieDFmIiwKKyAgICAiMHhmZmZkIjog
InVmZmZkIiwKKyAgICAiMHhmZmZlIjogInVmZmZlIiwKKyAgICAiMHhmZmZmIjogInVmZmZmIiwK
K307CisKK2Z1bmN0aW9uIGV4dGVuZChhcnJheSwgaXRlbXMpCit7CisgICAgQXJyYXkucHJvdG90
eXBlLnB1c2guYXBwbHkoYXJyYXksIGl0ZW1zKTsKK30KKworZnVuY3Rpb24gZ2V0X3NjcmlwdF91
cmwoKQoreworICAgIHJldHVybiAiLyI7Cit9CisKKy8qCisgKiBSZXR1cm4gYSBzdHJpbmcgdHJ1
bmNhdGVkIHRvIHRoZSBnaXZlbiBsZW5ndGgsIHdpdGggLi4uIGFkZGVkIGF0IHRoZSBlbmQKKyAq
IGlmIGl0IHdhcyBsb25nZXIuCisgKi8KK2Z1bmN0aW9uIHRydW5jYXRlKHMsIGxlbikKK3sKKyAg
ICBpZiAocy5sZW5ndGggPiBsZW4pIHsKKyAgICAgICAgcmV0dXJuIHMuc3Vic3RyaW5nKDAsIGxl
biAtIDMpICsgIi4uLiI7CisgICAgfQorICAgIHJldHVybiBzOworfQorCitmdW5jdGlvbiBhc3Nl
cnRfdHJ1ZShhY3R1YWwsIGRlc2NyaXB0aW9uKQoreworICAgIGFzc2VydChhY3R1YWwgPT09IHRy
dWUsICJhc3NlcnRfdHJ1ZSIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJleHBlY3RlZCB0cnVlIGdvdCAke2FjdHVhbH0iLCB7YWN0dWFsOmFjdHVhbH0pOworfQor
CitmdW5jdGlvbiBhc3NlcnRfZmFsc2UoYWN0dWFsLCBkZXNjcmlwdGlvbikKK3sKKyAgICBhc3Nl
cnQoYWN0dWFsID09PSBmYWxzZSwgImFzc2VydF9mYWxzZSIsIGRlc2NyaXB0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgZmFsc2UgZ290ICR7YWN0dWFsfSIsIHth
Y3R1YWw6YWN0dWFsfSk7Cit9CisKK2Z1bmN0aW9uIHRlc3QodHN0LCBuYW1lKSB7CisgIHRyeSB7
CisgICAgdHN0KCk7CisgIH0gY2F0Y2ggKGUpIHsKKyAgICBpZiAoIVBhaW50V29ya2xldEdsb2Jh
bFNjb3BlLmVycm9ycykKKyAgICAgIFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmVycm9ycyA9IFtd
OworICAgICAgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuZXJyb3JzLnB1c2goeyBuYW1lOiBuYW1l
LCBlcnJvcjogZS5tZXNzYWdlIH0pOworICB9CisgIFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmhh
c1J1bkFUZXN0ID0gdHJ1ZTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1
c3RvbS1wYWludC9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy1jdXN0b20tcGFpbnQvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFiMTNk
NDMyOTBmODM0ZDBmOWE2OTkzMDUwMGE2N2FjMTViZjVlZGYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpz
CkBAIC0wLDAgKzEsMjMgQEAKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CisKKy8vIEltcG9ydHMgY29kZSBpbnRvIGEgd29ya2xldCwgd2l0aCBzb21l
IGhlbHBlcnMuCithc3luYyBmdW5jdGlvbiBpbXBvcnRXb3JrbGV0KHdvcmtsZXQsIGNvZGUpIHsK
KyAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCgicmVzb3VyY2VzL3Rlc3RoYXJuZXNzLXdv
cmtsZXQuanMiKTsKKyAgY29uc3QgZmluYWxDb2RlID0gKGF3YWl0IHJlc3BvbnNlLnRleHQoKSkg
KyBjb2RlOworCisgIGxldCB1cmw7CisgIC8vIEZJWE1FOiBUaGlzIGlzIHRlbXBvcmFyeSwgdW50
aWwgd2Ugc3VwcG9ydCBsb2FkaW5nIHNjcmlwdHMgYnkgdXJsCisgIGlmICh3aW5kb3cuY2hyb21l
KSB7CisgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtmaW5hbENvZGVdLCB7dHlwZTogJ3RleHQv
amF2YXNjcmlwdCd9KTsKKyAgICB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpOworICB9
IGVsc2UgeworICAgIHVybCA9IGZpbmFsQ29kZTsKKyAgfQorCisgIHdvcmtsZXQuYWRkTW9kdWxl
KHVybCk7CisgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7CisgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9LCAzMDAwKTsKKyAg
fQorfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3dvcmts
ZXQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC93b3Jr
bGV0LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGI0MmI2MmRhMTNlZGE4MTk2MTBiMzE5N2I0
ZTQ1YTU0NzNiZGNmMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1
c3RvbS1wYWludC93b3JrbGV0LWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxNiBAQAorPCFET0NU
WVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBleHBlcmltZW50YWw6Q1NTUGFpbnRp
bmdBUElFbmFibGVkPXRydWUgXSAtLT4KKworPGNhbnZhcyBpZD0icGFpbnQiIHdpZHRoPSIxNTBw
eCIgaGVpZ2h0PSIxNTBweCIgPjwvY2FudmFzPgorCis8c2NyaXB0IGlkPSJjb2RlIj4KK3ZhciBj
YW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFpbnQnKTsKK3ZhciBjdHggPSBjYW52
YXMuZ2V0Q29udGV4dCgnMmQnKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspeworICBm
b3IgKHZhciBqID0gMDsgaiA8IDY7IGorKyl7CisgICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2IoJyAr
IE1hdGguZmxvb3IoMjU1IC0gNDIuNSAqIGkpICsgJywnICsKKyAgICAgICAgICAgICAgICAgICAg
IE1hdGguZmxvb3IoMjU1IC0gNDIuNSAqIGopICsgJywwKSc7CisgICAgY3R4LmZpbGxSZWN0KGog
KiAyNSwgaSAqIDI1LCAyNSwgMjUpOworICB9Cit9Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC93b3JrbGV0Lmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvd29ya2xldC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjZmY5MzU2
ODUzNDIwNGEyYWEwY2M2ZThkOWU4OTQ0MDEyZTJlNjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvd29ya2xldC5odG1sCkBAIC0wLDAgKzEsNDIg
QEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFs
OkNTU1BhaW50aW5nQVBJRW5hYmxlZD10cnVlIF0gLS0+Cis8bWV0YSBuYW1lPSJhdXRob3IiIHRp
dGxlPSJKdXN0aW4gTWljaGF1ZCIgaHJlZj0ibWFpbHRvOmp1c3Rpbl9taWNoYXVkQHdlYmtpdC5v
cmciPgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJUZXN0IHdvcmtsZXQgYWRkTW9kdWxl
IGFuZCBnbG9iYWwgb2JqZWN0Ij4KKzxsaW5rIHJlbD0iaGVscCIgY29udGVudD0iaHR0cHM6Ly9k
cmFmdHMuY3NzLWhvdWRpbmkub3JnL2Nzcy1wYWludC1hcGktMS8iPgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisKKzxzdHlsZT4KKyAgI3BhaW50IHsK
KyAgICBiYWNrZ3JvdW5kLWltYWdlOiBwYWludChteS1wYWludCk7CisgICAgd2lkdGg6IDE1MHB4
OworICAgIGhlaWdodDogMTUwcHg7CisgIH0KKzwvc3R5bGU+CisKKzxkaXYgaWQ9InBhaW50Ij48
L2Rpdj4KKworPHNjcmlwdCBpZD0iY29kZSIgdHlwZT0idGV4dC93b3JrbGV0Ij4KK2NsYXNzIE15
UGFpbnQgeworICBwYWludChjdHgsIGdlb20sIHByb3BlcnRpZXMpIHsKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDY7IGkrKyl7CisgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDY7IGorKyl7Cisg
ICAgICAgIGN0eC5maWxsU3R5bGUgPSAncmdiKCcgKyBNYXRoLmZsb29yKDI1NSAtIDQyLjUgKiBp
KSArICcsJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5mbG9vcigyNTUgLSA0Mi41
ICogaikgKyAnLDApJzsKKyAgICAgICAgY3R4LmZpbGxSZWN0KGogKiAyNSwgaSAqIDI1LCAyNSwg
MjUpOworICAgICAgfQorICAgIH0KKyAgICBjb25zb2xlLmxvZygiSGVsbG8gZnJvbSBwYWludCBj
YWxsYmFjayEiKTsKKyAgICBhc3NlcnRfZ3JlYXRlcl90aGFuKGV2YWwoImRldmljZVBpeGVsUmF0
aW8iKSwgMCk7CisgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnUmVmZXJlbmNlRXJyb3InfSwg
ZnVuY3Rpb24gKCkgeyBldmFsKCJ3aW5kb3ciKTsgfSk7CisKKyAgICBjb25zdCBwcm9taXNlID0g
bmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geyBjb25zb2xlLmxvZygiSW4gcHJvbWlz
ZSIpOyByZXNvbHZlKCkgfSk7CisgICAgcHJvbWlzZS50aGVuKCgpID0+IGNvbnNvbGUubG9nKCJQ
cm9taXNlIHdhcyByZXNvbHZlZCIpKTsKKyAgfQorfQorY29uc29sZS5sb2coIkhlbGxvIGZyb20g
cGFpbnQgd29ya2xldCEiKTsKK3JlZ2lzdGVyUGFpbnQoJ215LXBhaW50JywgTXlQYWludCk7Citj
b25zb2xlLmxvZyhXaW5kb3cpOyAvLyB0ZXN0IHRoYXQgdW5jYXVnaHQgZXhjZXB0aW9ucyBkbyBu
b3QgYWZmZWN0IHJlZ2lzdGVyZWQgcGFpbnQgY2FsbGJhY2tzCis8L3NjcmlwdD4KKworPHNjcmlw
dD4KK2ltcG9ydFdvcmtsZXQoQ1NTLnBhaW50V29ya2xldCwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2NvZGUnKS50ZXh0Q29udGVudCk7Cis8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353305</attachid>
            <date>2018-10-29 11:57:39 -0700</date>
            <delta_ts>2018-10-29 12:57:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190979-20181029115738.patch</filename>
            <type>text/plain</type>
            <size>181597</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjQ4NmIwMmU1NmRmOTIz
MGM2MTUyMTYzZWI3MmZkYzA0OTBmMzgxNS4uY2RlYzcwMThjNzcwZjk2NzczYjEzOTNhMWMzZTVm
ZjE5YjI0YzMyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MyBAQAorMjAxOC0xMC0yNiAgSnVz
dGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIG5l
dyBnbG9iYWwgb2JqZWN0IGFuZCBwcmVsaW1pbmFyeSBXb3JrbGV0cyBzdXBwb3J0IGZvciBDU1Mg
cGFpbnRpbmcgYXBpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTA5NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUZXN0OiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvd29ya2xldC5odG1sCisKKyAgICAgICAg
QWRkIGEgbmV3IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgYW5kIGdsb2JhbCBvYmplY3QgdG8gcnVu
IHdvcmtsZXRzIGluLiBUaGlzIGlzIG1vc3RseSBjb3B5K3Bhc3RlCisgICAgICAgIGZyb20gV29y
a2VycywgYnV0IHdpdGhvdXQgYW55IG9mIHRoZSB0aHJlYWRpbmcuIFdvcmtsZXQuYWRkTW9kdWxl
IGRvZXMgbm90IHlldCBzdXBwb3J0IGxvYWRpbmcgc2NyaXB0cworICAgICAgICBvciBkb2luZyBj
cm9zcyBvcmlnaW4gY2hlY2tpbmcuIFRoZXJlIGFyZSBxdWl0ZSBhIGZldyBwYXJ0cyBvZiB0aGUg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCBhcGkgdGhhdCBhcmUKKyAgICAgICAgbGVmdCBhcyBBU1NF
UlRfTk9UX1JFQUNIRUQoKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2Jq
ZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0IGNvbnN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20u
Y3BwLgorICAgICAgICAoV2ViQ29yZTo6SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6dmlzaXRB
ZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNQYWludFdvcmtsZXRHbG9i
YWxTY29wZTo6cmVnaXN0ZXJQYWludCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrbGV0
R2xvYmFsU2NvcGVCYXNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtsZXRH
bG9iYWxTY29wZUJhc2U6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZSk6CisgICAgICAgIChXZWJD
b3JlOjpKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6Y2xlYXJET01HdWFyZGVkT2JqZWN0
cyk6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnZpc2l0Q2hp
bGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpkZXN0
cm95KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtsZXRHbG9i
YWxTY29wZUJhc2U6OnN1cHBvcnRzUmljaFNvdXJjZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6
SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzaG91bGRJbnRlcnJ1cHRTY3JpcHQpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzaG91bGRJbnRlcnJ1cHRTY3Jp
cHRCZWZvcmVUaW1lb3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3Bl
QmFzZTo6amF2YVNjcmlwdFJ1bnRpbWVGbGFncyk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToK
KyAgICAgICAgKFdlYkNvcmU6OnRvSlNXb3JrbGV0R2xvYmFsU2NvcGUpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6d3JhcHBlZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnByb3h5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6Y3JlYXRlU3RydWN0dXJlKToK
KyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFN0
YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29w
ZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjU3RhdGVGcm9tV29ya2xldEdsb2JhbFNjb3BlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKElzRE9NR2xvYmFsT2JqZWN0KToKKyAgICAgICAg
KFNob3VsZFVzZUdsb2JhbE9iamVjdFByb3RvdHlwZSk6CisgICAgICAgIChHZW5lcmF0ZUhlYWRl
cik6CisgICAgICAgIChHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZ0ZvckV4
cG9zZWQpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGw6CisgICAgICAgICogY3NzL0NTU1BhaW50
SW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYWludEltYWdlVmFsdWU6Omlt
YWdlKToKKyAgICAgICAgKiBjc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRPTUNTU1BhaW50V29ya2xldDo6ZW5zdXJlUGFpbnRXb3JrbGV0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTUNTU1BhaW50V29ya2xldDo6ZW5zdXJlUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9ET01DU1NQYWludFdvcmtsZXQuaDoKKyAgICAg
ICAgKiBjc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmlkbDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVuc3VyZUNTU1BhaW50V29ya2xldCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVuc3VyZUNTU1BhaW50V29ya2xldEds
b2JhbFNjb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpnZXRDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSk6CisgICAg
ICAgICogZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbjoKKyAgICAgICAgKiBkb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0Ojp2bSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpleGVj
U3RhdGUpOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojppc1dvcmtsZXRHbG9iYWxTY29wZSBj
b25zdCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dlckFnZW50OjppbmplY3Rl
ZFNjcmlwdEZvckV2YWwpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtl
clJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1lQWdlbnQ6
OmluamVjdGVkU2NyaXB0Rm9yRXZhbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3Vz
dG9tUGFpbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludEltYWdlOjpD
dXN0b21QYWludEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50SW1hZ2U6OmRv
Q3VzdG9tUGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1h
Z2UuaDoKKyAgICAgICAgKiB3b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHA6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5j
cHAuCisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludFdvcmtsZXRH
bG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6
ZGV2aWNlUGl4ZWxSYXRpbyk6CisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxT
Y29wZTo6YWRkUmVnaXN0ZXJlZFBhaW50KToKKyAgICAgICAgKiB3b3JrbGV0cy9QYWludFdvcmts
ZXRHbG9iYWxTY29wZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50
V29ya2xldEdsb2JhbFNjb3BlLmguCisgICAgICAgICogd29ya2xldHMvUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUuaWRsLgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXQuY3BwOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
LgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtsZXQ6OldvcmtsZXQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldDo6YWRkTW9kdWxl
KToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwLgorICAgICAgICAqIHdvcmts
ZXRzL1dvcmtsZXQuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUuaWRsLgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRDb25zb2xl
Q2xpZW50LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93
b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0
Q29uc29sZUNsaWVudDo6V29ya2xldENvbnNvbGVDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2xldENvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtsZXRDb25zb2xlQ2xpZW50Ojpjb3VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrbGV0Q29uc29sZUNsaWVudDo6dGltZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0
Q29uc29sZUNsaWVudDo6dGltZUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29s
ZUNsaWVudDo6cHJvZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29sZUNsaWVu
dDo6cHJvZmlsZUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29sZUNsaWVudDo6
dGFrZUhlYXBTbmFwc2hvdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29sZUNsaWVu
dDo6dGltZVN0YW1wKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRDb25zb2xlQ2xpZW50Ojpy
ZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldENvbnNvbGVDbGllbnQ6OnJlY29yZEVu
ZCk6CisgICAgICAgICogd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuaDogQWRkZWQuCisg
ICAgICAgICogd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxTY29wZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6On5Xb3JrbGV0R2xvYmFsU2NvcGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpldmFsdWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmlzSlNFeGVjdXRpb25Gb3JiaWRkZW4gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpkaXNhYmxlRXZhbCk6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmRpc2FibGVXZWJBc3NlbWJs
eSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmNvbXBsZXRlVVJMIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6bG9nRXhjZXB0aW9u
VG9Db25zb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29u
c29sZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjphZGRN
ZXNzYWdlKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmlzUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpp
ZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6
c2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6anNSdW50aW1l
RmxhZ3MgY29uc3QpOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3Jr
bGV0R2xvYmFsU2NvcGUuaWRsOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlLmlkbC4KKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0U2Ny
aXB0Q29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlw
dENvbnRyb2xsZXI6OldvcmtsZXRTY3JpcHRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjp+V29ya2xldFNjcmlwdENvbnRyb2xsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmZvcmJpZEV4ZWN1dGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6aXNFeGVjdXRpb25G
b3JiaWRkZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xs
ZXI6OmRpc2FibGVFdmFsKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRTY3JpcHRDb250cm9s
bGVyOjpkaXNhYmxlV2ViQXNzZW1ibHkpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlw
dENvbnRyb2xsZXI6OmluaXRTY3JpcHRXaXRoU3ViY2xhc3MpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtsZXRTY3JpcHRDb250cm9sbGVyOjpzZXRFeGNlcHRpb24pOgorICAgICAgICAqIHdvcmtsZXRz
L1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V29y
a2xldFNjcmlwdENvbnRyb2xsZXI6OndvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OnZtKToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0SWZOZWVkZWQpOgorCiAyMDE4
LTEwLTI2ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjM3NDU4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRl
eCAxMjliNmM1NDkzMmY5ZTRlODg0NjZkY2Y5MThjYmQ2ZTE3NDY0MmQ1Li43MzE2OTdkNjBjN2M1
YTgwOTI5MzdjNGRlYWUyN2EzMDVmN2VjZjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTQz
LDYgKzE0Myw3IEBAIHNldChXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJD
T1JFX0RJUn0vd29ya2Vycy9zZXJ2aWNlIgogICAgICIke1dFQkNPUkVfRElSfS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dCIKICAgICAiJHtXRUJDT1JFX0RJUn0vd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ciIKKyAgICAiJHtXRUJDT1JFX0RJUn0vd29ya2xldHMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3ht
bCIKICAgICAiJHtXRUJDT1JFX0RJUn0veG1sL3BhcnNlciIKICAgICAiJHtERVJJVkVEX1NPVVJD
RVNfV0VCQ09SRV9ESVJ9IgpAQCAtNTM3LDcgKzUzOCw2IEBAIHNldChXZWJDb3JlX05PTl9TVkdf
SURMX0ZJTEVTCiAgICAgY3NzL0NTU01lZGlhUnVsZS5pZGwKICAgICBjc3MvQ1NTTmFtZXNwYWNl
UnVsZS5pZGwKICAgICBjc3MvQ1NTUGFpbnRDYWxsYmFjay5pZGwKLSAgICBjc3MvQ1NTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUuaWRsCiAgICAgY3NzL0NTU1BhZ2VSdWxlLmlkbAogICAgIGNzcy9D
U1NSdWxlLmlkbAogICAgIGNzcy9DU1NSdWxlTGlzdC5pZGwKQEAgLTkwNiw2ICs5MDYsMTAgQEAg
c2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICB3b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlclVwZGF0ZVZpYUNhY2hlLmlkbAogICAgIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyV2luZG93Q2xpZW50LmlkbAogCisgICAgd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUuaWRsCisgICAgd29ya2xldHMvV29ya2xldC5pZGwKKyAgICB3b3JrbGV0cy9Xb3JrbGV0R2xv
YmFsU2NvcGUuaWRsCisKICAgICB4bWwvRE9NUGFyc2VyLmlkbAogICAgIHhtbC9YTUxIdHRwUmVx
dWVzdC5pZGwKICAgICB4bWwvWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5pZGwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDY2MzkwZDQ5ZmIzOWQ2YzRiMmM0NzYyNjA1ZDI2MDVm
YjJiNWIxMGQuLmVmYmU5MzU0NzMxMmExN2Q2MTU2ZjVhZDU5OTFhYjBiNWYxN2E1NjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtODYsNiArODYsNyBAQCBWUEFUSCA9IFwKICAg
ICAkKFdlYkNvcmUpL3dlYnNvY2tldHMgXAogICAgICQoV2ViQ29yZSkvd29ya2VycyBcCiAgICAg
JChXZWJDb3JlKS93b3JrZXJzL3NlcnZpY2UgXAorICAgICQoV2ViQ29yZSkvd29ya2xldHMgXAog
ICAgICQoV2ViQ29yZSkveG1sIFwKICMKIApAQCAtNDUyLDcgKzQ1Myw2IEBAIEpTX0JJTkRJTkdf
SURMUyA9IFwKICAgICAkKFdlYkNvcmUpL2Nzcy9DU1NOYW1lc3BhY2VSdWxlLmlkbCBcCiAgICAg
JChXZWJDb3JlKS9jc3MvQ1NTUGFnZVJ1bGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9DU1NQ
YWludENhbGxiYWNrLmlkbCBcCi0gICAgJChXZWJDb3JlKS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9DU1NSdWxlLmlkbCBcCiAgICAgJChX
ZWJDb3JlKS9jc3MvQ1NTUnVsZUxpc3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9DU1NTdHls
ZURlY2xhcmF0aW9uLmlkbCBcCkBAIC0xMDI0LDYgKzEwMjQsOSBAQCBKU19CSU5ESU5HX0lETFMg
PSBcCiAgICAgJChXZWJDb3JlKS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbi5pZGwgXAogICAgICQoV2ViQ29yZSkvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJV
cGRhdGVWaWFDYWNoZS5pZGwgXAogICAgICQoV2ViQ29yZSkvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJXaW5kb3dDbGllbnQuaWRsIFwKKwkkKFdlYkNvcmUpL3dvcmtsZXRzL1BhaW50V29y
a2xldEdsb2JhbFNjb3BlLmlkbCBcCisgICAgJChXZWJDb3JlKS93b3JrbGV0cy9Xb3JrbGV0Lmlk
bCBcCisJJChXZWJDb3JlKS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaWRsIFwKICAgICAk
KFdlYkNvcmUpL3htbC9ET01QYXJzZXIuaWRsIFwKICAgICAkKFdlYkNvcmUpL3htbC9YTUxIdHRw
UmVxdWVzdC5pZGwgXAogICAgICQoV2ViQ29yZSkveG1sL1hNTEh0dHBSZXF1ZXN0RXZlbnRUYXJn
ZXQuaWRsIFwKQEAgLTExNTYsNiArMTE1OSw3IEBAIGFsbCA6IFwKICAgICAkKFNVUFBMRU1FTlRB
TF9ERVBFTkRFTkNZX0ZJTEUpIFwKICAgICAkKFdJTkRPV19DT05TVFJVQ1RPUlNfRklMRSkgXAog
ICAgICQoV09SS0VSR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUpIFwKKwkkKFdPUktMRVRH
TE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSkgXAogICAgICQoSlNfRE9NX0hFQURFUlMpIFwK
ICAgICAkKFdFQl9ET01fSEVBREVSUykgXAogICAgIFwKQEAgLTE1MDQsNiArMTUwOCw3IEBAIElE
TF9JTkNMVURFUyA9IFwKICAgICAkKFdlYkNvcmUpL3N2ZyBcCiAgICAgJChXZWJDb3JlKS90ZXN0
aW5nIFwKICAgICAkKFdlYkNvcmUpL3dvcmtlcnMgXAorICAgICQoV2ViQ29yZSkvd29ya2xldHMg
XAogICAgICQoV2ViQ29yZSkveG1sCiAKIElETF9DT01NT05fQVJHUyA9ICQoSURMX0lOQ0xVREVT
OiU9LS1pbmNsdWRlICUpIC0td3JpdGUtZGVwZW5kZW5jaWVzIC0tb3V0cHV0RGlyIC4KQEAgLTE1
MTYsNiArMTUyMSw4IEBAIFdJTkRPV19DT05TVFJVQ1RPUlNfRklMRSA9IC4vRE9NV2luZG93Q29u
c3RydWN0b3JzLmlkbAogV09SS0VSR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUgPSAuL1dv
cmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbAogREVESUNBVEVEV09SS0VSR0xPQkFMU0NP
UEVfQ09OU1RSVUNUT1JTX0ZJTEUgPSAuL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3JzLmlkbAogU0VSVklDRVdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFID0g
Li9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCitXT1JLTEVUR0xPQkFM
U0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUgPSAuL1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9y
cy5pZGwKK1BBSU5UV09SS0xFVEdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFID0gLi9QYWlu
dFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKIElETF9GSUxFU19UTVAgPSAuL2lk
bF9maWxlcy50bXAKIElETF9BVFRSSUJVVEVTX0ZJTEUgPSAkKFdlYkNvcmUpL2JpbmRpbmdzL3Nj
cmlwdHMvSURMQXR0cmlidXRlcy5qc29uCiAKQEAgLTE1MjgsMTAgKzE1MzUsMTAgQEAgZW5kZWYK
IAogJChTVVBQTEVNRU5UQUxfTUFLRUZJTEVfREVQUykgOiAkKFBSRVBST0NFU1NfSURMU19TQ1JJ
UFRTKSAkKEpTX0JJTkRJTkdfSURMUykgJChQTEFURk9STV9GRUFUVVJFX0RFRklORVMpIERlcml2
ZWRTb3VyY2VzLm1ha2UKIAkkKGZvcmVhY2ggZiwkKEpTX0JJTkRJTkdfSURMUyksQGVjaG8gJChm
KT4+JChJRExfRklMRVNfVE1QKSQoTkwpKQotCSQoUEVSTCkgJChXZWJDb3JlKS9iaW5kaW5ncy9z
Y3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbCAtLWRlZmluZXMgIiQoRkVBVFVSRV9BTkRfUExBVEZP
Uk1fREVGSU5FUykgJChBRERJVElPTkFMX0lETF9ERUZJTkVTKSBMQU5HVUFHRV9KQVZBU0NSSVBU
IiAtLWlkbEZpbGVzTGlzdCAkKElETF9GSUxFU19UTVApIC0tc3VwcGxlbWVudGFsRGVwZW5kZW5j
eUZpbGUgJChTVVBQTEVNRU5UQUxfREVQRU5ERU5DWV9GSUxFKSAtLXdpbmRvd0NvbnN0cnVjdG9y
c0ZpbGUgJChXSU5ET1dfQ09OU1RSVUNUT1JTX0ZJTEUpIC0td29ya2VyR2xvYmFsU2NvcGVDb25z
dHJ1Y3RvcnNGaWxlICQoV09SS0VSR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUpIC0tZGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlICQoREVESUNBVEVEV09SS0VS
R0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUpIC0tc2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
Q29uc3RydWN0b3JzRmlsZSAkKFNFUlZJQ0VXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNf
RklMRSkgLS1zdXBwbGVtZW50YWxNYWtlZmlsZURlcHMgJEAKKwkkKFBFUkwpICQoV2ViQ29yZSkv
YmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGwgLS1kZWZpbmVzICIkKEZFQVRVUkVf
QU5EX1BMQVRGT1JNX0RFRklORVMpICQoQURESVRJT05BTF9JRExfREVGSU5FUykgTEFOR1VBR0Vf
SkFWQVNDUklQVCIgLS1pZGxGaWxlc0xpc3QgJChJRExfRklMRVNfVE1QKSAtLXN1cHBsZW1lbnRh
bERlcGVuZGVuY3lGaWxlICQoU1VQUExFTUVOVEFMX0RFUEVOREVOQ1lfRklMRSkgLS13aW5kb3dD
b25zdHJ1Y3RvcnNGaWxlICQoV0lORE9XX0NPTlNUUlVDVE9SU19GSUxFKSAtLXdvcmtlckdsb2Jh
bFNjb3BlQ29uc3RydWN0b3JzRmlsZSAkKFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19G
SUxFKSAtLWRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSAkKERFRElD
QVRFRFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFKSAtLXNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgJChTRVJWSUNFV09SS0VSR0xPQkFMU0NPUEVfQ09O
U1RSVUNUT1JTX0ZJTEUpIC0td29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSAkKFdP
UktMRVRHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSkgLS1wYWludFdvcmtsZXRHbG9iYWxT
Y29wZUNvbnN0cnVjdG9yc0ZpbGUgJChQQUlOVFdPUktMRVRHTE9CQUxTQ09QRV9DT05TVFJVQ1RP
UlNfRklMRSkgLS1zdXBwbGVtZW50YWxNYWtlZmlsZURlcHMgJEAKIAkkKERFTEVURSkgJChJRExf
RklMRVNfVE1QKQogCi1KUyUuY3BwIEpTJS5oIDogJS5pZGwgJChKU19CSU5ESU5HU19TQ1JJUFRT
KSAkKElETF9BVFRSSUJVVEVTX0ZJTEUpICQoV0lORE9XX0NPTlNUUlVDVE9SU19GSUxFKSAkKFdP
UktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFKSAkKFBMQVRGT1JNX0ZFQVRVUkVfREVG
SU5FUykKK0pTJS5jcHAgSlMlLmggOiAlLmlkbCAkKEpTX0JJTkRJTkdTX1NDUklQVFMpICQoSURM
X0FUVFJJQlVURVNfRklMRSkgJChXSU5ET1dfQ09OU1RSVUNUT1JTX0ZJTEUpICQoV09SS0VSR0xP
QkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUpICQoV09SS0xFVEdMT0JBTFNDT1BFX0NPTlNUUlVD
VE9SU19GSUxFKSAkKFBMQVRGT1JNX0ZFQVRVUkVfREVGSU5FUykKIAkkKFBFUkwpICQoV2ViQ29y
ZSkvYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbCAkKElETF9DT01NT05fQVJH
UykgLS1kZWZpbmVzICIkKEZFQVRVUkVfQU5EX1BMQVRGT1JNX0RFRklORVMpICQoQURESVRJT05B
TF9JRExfREVGSU5FUykgTEFOR1VBR0VfSkFWQVNDUklQVCIgLS1nZW5lcmF0b3IgSlMgLS1pZGxB
dHRyaWJ1dGVzRmlsZSAkKElETF9BVFRSSUJVVEVTX0ZJTEUpIC0tc3VwcGxlbWVudGFsRGVwZW5k
ZW5jeUZpbGUgJChTVVBQTEVNRU5UQUxfREVQRU5ERU5DWV9GSUxFKSAkPAogCiAtaW5jbHVkZSAk
KFNVUFBMRU1FTlRBTF9NQUtFRklMRV9ERVBTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBhZWI2NjJlYjJm
MDBlMGMyYmRjZWI1YzdhYTFmZTU0MGIwYzFiYjdjLi4xMWI2YzAyNGFkYTBkMWI1MDgwMjBjNTQ4
ODJiY2MyNDhhZDY1MTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMzg1LDcgKzM4NSw3IEBAIGJpbmRp
bmdzL2pzL0pTRE9NQ29udmVydFN0cmluZ3MuY3BwCiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRX
ZWJHTC5jcHAKIGJpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuY3BwCiBiaW5kaW5ncy9qcy9KU0Rl
cHJlY2F0ZWRDU1NPTVZhbHVlQ3VzdG9tLmNwcAotYmluZGluZ3MvanMvSlNDU1NQYWludFdvcmts
ZXRHbG9iYWxTY29wZUN1c3RvbS5jcHAKK2JpbmRpbmdzL2pzL0pTUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGVDdXN0b20uY3BwCiBiaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAKIGJpbmRpbmdz
L2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcAogYmluZGluZ3MvanMvSlND
dXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcApAQCAtNDc4LDYgKzQ3OCw3IEBAIGJpbmRpbmdzL2pz
L0pTV2luZG93UHJveHkuY3BwCiBiaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5j
cHAKIGJpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwCiBiaW5kaW5ncy9q
cy9KU1dvcmtlck5hdmlnYXRvckN1c3RvbS5jcHAKK2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2Jh
bFNjb3BlQmFzZS5jcHAKIGJpbmRpbmdzL2pzL0pTWE1MRG9jdW1lbnRDdXN0b20uY3BwCiBiaW5k
aW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAogYmluZGluZ3MvanMvSlNYUGF0aE5T
UmVzb2x2ZXJDdXN0b20uY3BwCkBAIC02MTMsNyArNjE0LDYgQEAgY3NzL0NTU05hbWVkSW1hZ2VW
YWx1ZS5jcHAKIGNzcy9DU1NOYW1lc3BhY2VSdWxlLmNwcAogY3NzL0NTU1BhZ2VSdWxlLmNwcAog
Y3NzL0NTU1BhaW50SW1hZ2VWYWx1ZS5jcHAKLWNzcy9DU1NQYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5jcHAKIGNzcy9DU1NQZW5kaW5nU3Vic3RpdHV0aW9uVmFsdWUuY3BwCiBjc3MvQ1NTUHJpbWl0
aXZlVmFsdWUuY3BwCiBjc3MvQ1NTUHJvcGVydHkuY3BwCkBAIC0yMzcxLDYgKzIzNzEsMTIgQEAg
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKIHdvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAogd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKIAord29ya2xldHMvV29ya2xldC5jcHAK
K3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcAord29ya2xldHMvV29ya2xldEdsb2Jh
bFNjb3BlLmNwcAord29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCit3b3JrbGV0
cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKKwogeG1sL0RPTVBhcnNlci5jcHAKIHhtbC9O
YXRpdmVYUGF0aE5TUmVzb2x2ZXIuY3BwCiB4bWwvWE1MRXJyb3JzLmNwcApAQCAtMjQ4MCw3ICsy
NDg2LDkgQEAgSlNDU1NLZXlmcmFtZXNSdWxlLmNwcAogSlNDU1NNZWRpYVJ1bGUuY3BwCiBKU0NT
U05hbWVzcGFjZVJ1bGUuY3BwCiBKU0NTU1BhaW50Q2FsbGJhY2suY3BwCi1KU0NTU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlLmNwcAorSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKK0pTV29y
a2xldC5jcHAKK0pTV29ya2xldEdsb2JhbFNjb3BlLmNwcAogSlNDU1NQYWdlUnVsZS5jcHAKIEpT
Q1NTUnVsZS5jcHAKIEpTQ1NTUnVsZUxpc3QuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmMyZDcxZWZjNzcxNTdkZGUzZDM0
NGYyYWZlNDc5NjczNjE0NmE4My4uYWJiMDQyZThjNDE4MzA5ZGNkZjhhZGIxM2YxODc4Yzg5Yzdi
YTQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTM1MiwxNCArMTM1MiwxOSBAQAogCQk0QjM0ODA5NDBFRUY1MEQ0MDBBQzFC
NDEgLyogSW1hZ2VTb3VyY2VDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEIzNDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0cuaCAq
LzsgfTsKIAkJNEI1QkREOUIyMTY1OEExNTAwREQ0MjYyIC8qIENTU1BhaW50Q2FsbGJhY2suaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCNUJERDlBMjE2
NThBMTUwMERENDI2MiAvKiBDU1NQYWludENhbGxiYWNrLmggKi87IH07CiAJCTRCNkI1Q0JEMjE2
NDBFRkYwMDYwMzgxNyAvKiBET01DU1NQYWludFdvcmtsZXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCNkI1Q0I4MjE2M0VDMDcwMDYwMzgxNyAvKiBE
T01DU1NQYWludFdvcmtsZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwotCQk0QjZCNUNDMDIxNjQzODY0MDA2MDM4MTcgLyogQ1NTUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDRCNkI1Q0JGMjE2NDM4NjQwMDYwMzgxNyAvKiBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5oICovOyB9OworCQk0QjZCNUNDMDIxNjQzODY0MDA2MDM4MTcgLyogUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRCNkI1Q0JGMjE2NDM4NjQwMDYwMzgxNyAvKiBQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oICov
OyB9OwogCQk0QjZFODc2OTIxNzZENjkyMDA0MjBFNUUgLyogQ1NTUGFpbnRJbWFnZVZhbHVlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjZFODc2ODIx
NzZENjkyMDA0MjBFNUUgLyogQ1NTUGFpbnRJbWFnZVZhbHVlLmggKi87IH07CiAJCTRCNkZBNkY0
MEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCNkZBNkYyMEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFy
dFJlcGxhY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0QjdBRTQ5MzIxNzdCNTZGMDBDNTk5NTkgLyogQ3VzdG9tUGFpbnRJbWFnZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI3QUU0OTIyMTc3QjU2
RjAwQzU5OTU5IC8qIEN1c3RvbVBhaW50SW1hZ2UuaCAqLzsgfTsKKwkJNEI3RjlDNTIyMTgzQjVF
NTAwMUNFQkEwIC8qIFdvcmtsZXRDb25zb2xlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjdGOUM1MTIxODNCNUU1MDAxQ0VCQTAgLyogV29y
a2xldENvbnNvbGVDbGllbnQuaCAqLzsgfTsKIAkJNEJBRTk1QjEwQjJGQTlDRTAwQUVEOEEwIC8q
IEVkaXRvckRlbGV0ZUFjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEJBRTk1QjAwQjJGQTlDRTAwQUVEOEEwIC8qIEVkaXRvckRlbGV0ZUFjdGlv
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRC
REEzRkZFMjE1MUI2RjUwMEZENjYwNCAvKiBET01DU1NDdXN0b21Qcm9wZXJ0eURlc2NyaXB0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCREEzRkY4
MjE1MUI2RjIwMEZENjYwNCAvKiBET01DU1NDdXN0b21Qcm9wZXJ0eURlc2NyaXB0b3IuaCAqLzsg
fTsKIAkJNEJEQTNGRkYyMTUxQjZGNTAwRkQ2NjA0IC8qIERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJv
cGVydHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRC
REEzRkY5MjE1MUI2RjMwMEZENjYwNCAvKiBET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5Lmgg
Ki87IH07CiAJCTRCREE0MDAxMjE1MUI2RjUwMEZENjYwNCAvKiBDU1NSZWdpc3RlcmVkQ3VzdG9t
UHJvcGVydHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRCREEzRkZCMjE1MUI2RjQwMEZENjYwNCAvKiBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0QkRF
QTMyMDIxN0VDNTVGMDA1MkRGQ0QgLyogV29ya2xldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJERUEzMUYyMTdFQzU1RjAwNTJERkNEIC8qIFdvcmts
ZXQuaCAqLzsgfTsKKwkJNEJERUEzMjUyMTdGRTJFNDAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxT
Y29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJE
RUEzMjQyMTdGRTJFNDAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxTY29wZS5oICovOyB9OworCQk0
QkRFQTMyODIxODAwM0Y3MDA1MkRGQ0QgLyogV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCREVBMzI3MjE4MDAz
RjcwMDUyREZDRCAvKiBXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oICovOyB9OworCQk0QkRFQTMy
QzIxODAzM0VCMDA1MkRGQ0QgLyogSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QkRFQTMyQjIxODAzM0VCMDA1
MkRGQ0QgLyogSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmggKi87IH07CiAJCTREM0IwMEFCMjE1
RDY5QTcwMDc2Qjk4MyAvKiBNZWRpYVJlY29yZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RDNCMDBBOTIxNUQ2OUE3MDA3NkI5ODMgLyogTWVkaWFS
ZWNvcmRlci5oICovOyB9OwogCQk0RDNCMDBBRjIxNUQ2QTY5MDA3NkI5ODMgLyogQmxvYkV2ZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RDNCMDBB
RDIxNUQ2QTY5MDA3NkI5ODMgLyogQmxvYkV2ZW50LmggKi87IH07CiAJCTREQjcxMzBEMjE2RUNC
NEQwMDk2QTRERCAvKiBNZWRpYVJlY29yZGVyRXJyb3JFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNERCNzEzMEMyMTZFQzJCRDAwOTZBNEREIC8q
IE1lZGlhUmVjb3JkZXJFcnJvckV2ZW50LmggKi87IH07CkBAIC03OTAxLDE2ICs3OTA2LDE4IEBA
CiAJCTRCNkI1Q0I2MjE2M0RDMUEwMDYwMzgxNyAvKiBET01DU1NQYWludFdvcmtsZXQuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IERPTUNTU1BhaW50V29ya2xldC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTRCNkI1Q0I4MjE2M0VDMDcwMDYwMzgxNyAvKiBET01DU1NQYWludFdvcmtsZXQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRE9NQ1NTUGFpbnRXb3JrbGV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTRCNkI1Q0I5MjE2M0VEMzIwMDYwMzgxNyAvKiBET01DU1NQYWludFdvcmtsZXQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRE9NQ1NTUGFpbnRXb3JrbGV0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNEI2QjVDQkUyMTY0MzRGQjAwNjAzODE3IC8qIEpTQ1NTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDU1NQYWludFdv
cmtsZXRHbG9iYWxTY29wZUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTRCNkI1Q0JGMjE2NDM4NjQwMDYwMzgxNyAvKiBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk0QjZCNUNDMTIxNjQzOUNGMDA2MDM4MTcgLyogQ1NTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0QjZCNUNDMzIx
NjQzQThFMDA2MDM4MTcgLyogQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENT
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNEI2QjVDQkUyMTY0MzRGQjAwNjAzODE3IC8qIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZUN1
c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRCNkI1Q0JGMjE2NDM4NjQw
MDYwMzgxNyAvKiBQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QjZC
NUNDMTIxNjQzOUNGMDA2MDM4MTcgLyogUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0QjZCNUNDMzIxNjQzQThFMDA2MDM4MTcgLyogUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI2RTg3NjgyMTc2RDY5MjAwNDIwRTVFIC8qIENTU1Bh
aW50SW1hZ2VWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NQYWludEltYWdlVmFsdWUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI2RTg3NkIyMTc2RDhBMTAwNDIwRTVFIC8qIENT
U1BhaW50SW1hZ2VWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NQYWludEltYWdlVmFs
dWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QjZGQTZGMjBDMzlFNDhDMDAw
ODcwMTEgLyogU21hcnRSZXBsYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNtYXJ0UmVwbGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QjZGQTZGNjBD
MzlFNEExMDAwODcwMTEgLyogU21hcnRSZXBsYWNlQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU21hcnRSZXBsYWNlQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0QjdBRTQ5MjIxNzdCNTZGMDBDNTk5NTkgLyogQ3VzdG9tUGFpbnRJbWFnZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDdXN0b21QYWludEltYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTRCN0FFNDk1MjE3N0I2M0UwMEM1OTk1OSAvKiBDdXN0b21QYWludEltYWdlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEN1c3RvbVBhaW50SW1hZ2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0QjdGOUM1MTIxODNCNUU1MDAxQ0VCQTAgLyogV29ya2xldENvbnNv
bGVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2xldENvbnNvbGVDbGllbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEI3RjlDNTQyMTgzQjYzNDAwMUNFQkEwIC8qIFdvcmts
ZXRDb25zb2xlQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtsZXRDb25zb2xlQ2xp
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEJBRTk1QjAwQjJGQTlDRTAw
QUVEOEEwIC8qIEVkaXRvckRlbGV0ZUFjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBFZGl0b3JEZWxldGVBY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNEJEQTNGRjUyMTUxQjZGMDAwRkQ2NjA0IC8qIERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVy
dHkuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVy
dHkuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QkRBM0ZGNzIxNTFCNkYxMDBG
RDY2MDQgLyogRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc5MTgsNiArNzkyNSwxNiBAQAogCQk0QkRB
M0ZGOTIxNTFCNkYzMDBGRDY2MDQgLyogRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01DU1NSZWdpc3RlckN1c3RvbVByb3Bl
cnR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCREEzRkZBMjE1MUI2RjMwMEZE
NjYwNCAvKiBET01DU1NDdXN0b21Qcm9wZXJ0eURlc2NyaXB0b3IuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IERPTUNTU0N1c3RvbVByb3BlcnR5RGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTRCREEzRkZCMjE1MUI2RjQwMEZENjYwNCAvKiBDU1NSZWdpc3Rl
cmVkQ3VzdG9tUHJvcGVydHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NT
UmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTRCREVBMzFDMjE3RUJDRjUwMDUyREZDRCAvKiBXb3JrbGV0LmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXb3JrbGV0Lmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEJERUEzMUYyMTdFQzU1RjAwNTJERkNE
IC8qIFdvcmtsZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2xldC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0QkRFQTMyMzIxN0VDOTZBMDA1MkRGQ0QgLyogV29ya2xldC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXb3JrbGV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNEJERUEzMjQyMTdGRTJFNDAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxTY29wZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXb3JrbGV0R2xvYmFsU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNEJERUEzMjYyMTdGRTJGQTAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxTY29wZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrbGV0R2xvYmFsU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0QkRFQTMyNzIxODAwM0Y3MDA1MkRGQ0QgLyogV29ya2xldFNjcmlw
dENvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEJERUEzMjkyMTgwMDQwQzAwNTJERkNEIC8q
IFdvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtsZXRT
Y3JpcHRDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEJERUEz
MkEyMTgwMTA3MjAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxTY29wZS5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV29ya2xl
dEdsb2JhbFNjb3BlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEJERUEzMkIy
MTgwMzNFQjAwNTJERkNEIC8qIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNEJERUEzMkQyMTgwMzQwNTAwNTJERkNEIC8qIEpTV29ya2xldEdsb2JhbFNjb3BlQmFz
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RDNCMDBBNDIxNUQ2MTA0MDA3NkI5ODMgLyog
TWVkaWFSZWNvcmRlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTWVkaWFSZWNvcmRlci5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTREM0IwMEE2MjE1RDY0NUIwMDc2Qjk4
MyAvKiBCbG9iRXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEJsb2JFdmVudC5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTREM0IwMEE4MjE1RDY5QTYwMDc2Qjk4MyAv
KiBNZWRpYVJlY29yZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE1lZGlhUmVjb3JkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU4MDEs
NiArMTU4MTgsNyBAQAogCQkJCUIyMjI3N0NBMEQwMEJGMUUwMDcxQjc4MiAvKiBzdmcgKi8sCiAJ
CQkJNDE3REE0Q0QxMzczNDIwNDAwN0M1N0ZCIC8qIHRlc3RpbmcgKi8sCiAJCQkJMkU0MzQ2MzEw
RjU0NkE2ODAwQjBGMUJBIC8qIHdvcmtlcnMgKi8sCisJCQkJNEJERUEzMTgyMTdFQkI4ODAwNTJE
RkNEIC8qIHdvcmtsZXRzICovLAogCQkJCUUxRjA0MjQzMDk4MzkzODkwMDY2OTRFQSAvKiB4bWwg
Ki8sCiAJCQkJNjU2NTgwRUMwOUQxMkIyMDAwMEU2MUQ3IC8qIERlcml2ZWQgU291cmNlcyAqLywK
IAkJCQkwODlDMTY2NUZFODQxMTU4QzAyQUFDMDcgLyogUmVzb3VyY2VzICovLApAQCAtMTgwMzYs
NiArMTgwNTQsMjYgQEAKIAkJCXBhdGggPSBhbmltYXRpb247CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwogCQl9OworCQk0QkRFQTMxODIxN0VCQjg4MDA1MkRGQ0QgLyogd29ya2xldHMgKi8g
PSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTRCNkI1Q0MxMjE2
NDM5Q0YwMDYwMzgxNyAvKiBQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAgKi8sCisJCQkJNEI2
QjVDQkYyMTY0Mzg2NDAwNjAzODE3IC8qIFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmggKi8sCisJ
CQkJNEI2QjVDQzMyMTY0M0E4RTAwNjAzODE3IC8qIFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmlk
bCAqLywKKwkJCQk0QkRFQTMyMzIxN0VDOTZBMDA1MkRGQ0QgLyogV29ya2xldC5jcHAgKi8sCisJ
CQkJNEJERUEzMUYyMTdFQzU1RjAwNTJERkNEIC8qIFdvcmtsZXQuaCAqLywKKwkJCQk0QkRFQTMx
QzIxN0VCQ0Y1MDA1MkRGQ0QgLyogV29ya2xldC5pZGwgKi8sCisJCQkJNEI3RjlDNTQyMTgzQjYz
NDAwMUNFQkEwIC8qIFdvcmtsZXRDb25zb2xlQ2xpZW50LmNwcCAqLywKKwkJCQk0QjdGOUM1MTIx
ODNCNUU1MDAxQ0VCQTAgLyogV29ya2xldENvbnNvbGVDbGllbnQuaCAqLywKKwkJCQk0QkRFQTMy
NjIxN0ZFMkZBMDA1MkRGQ0QgLyogV29ya2xldEdsb2JhbFNjb3BlLmNwcCAqLywKKwkJCQk0QkRF
QTMyNDIxN0ZFMkU0MDA1MkRGQ0QgLyogV29ya2xldEdsb2JhbFNjb3BlLmggKi8sCisJCQkJNEJE
RUEzMkEyMTgwMTA3MjAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxTY29wZS5pZGwgKi8sCisJCQkJ
NEJERUEzMjkyMTgwMDQwQzAwNTJERkNEIC8qIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcCAq
LywKKwkJCQk0QkRFQTMyNzIxODAwM0Y3MDA1MkRGQ0QgLyogV29ya2xldFNjcmlwdENvbnRyb2xs
ZXIuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gd29ya2xldHM7CisJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOworCQl9OwogCQk0RDNCMDBBMDIxNUQ1QzBGMDA3NkI5ODMgLyogbWVkaWFyZWNvcmRl
ciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yNDQwOSw2
ICsyNDQ0Nyw4IEBACiAJCQkJQkNCRkI1M0IwRENEMjlDRjAwMTlCM0U1IC8qIEpTV2luZG93UHJv
eHkuaCAqLywKIAkJCQlFMUMzNkQzMjBFQjBBMDk0MDA3NDEwQkMgLyogSlNXb3JrZXJHbG9iYWxT
Y29wZUJhc2UuY3BwICovLAogCQkJCUUxQzM2RDMzMEVCMEEwOTQwMDc0MTBCQyAvKiBKU1dvcmtl
ckdsb2JhbFNjb3BlQmFzZS5oICovLAorCQkJCTRCREVBMzJEMjE4MDM0MDUwMDUyREZDRCAvKiBK
U1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwICovLAorCQkJCTRCREVBMzJCMjE4MDMzRUIwMDUy
REZDRCAvKiBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuaCAqLywKIAkJCQk3MDlBMDFGRDFFM0Qw
QkNDMDA2QjBENEMgLyogTW9kdWxlRmV0Y2hGYWlsdXJlS2luZC5oICovLAogCQkJCTQxQjQ1OUVE
MUY1NUVCQzcwMDAwRjZGRCAvKiBSZWFkYWJsZVN0cmVhbS5jcHAgKi8sCiAJCQkJNDFCNDU5REEx
RjRDQURCOTAwMDBGNkZEIC8qIFJlYWRhYmxlU3RyZWFtLmggKi8sCkBAIC0yNDQ0OSwxMiArMjQ0
ODksMTIgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTdDRDM0NDFCMUYzMkRFMzAwMDBEQ0Q0OSAv
KiBDYWNoZWQgQXR0cmlidXRlcyB3LyBJbnZhbGlkYXRpb24gKi8sCiAJCQkJN0MzRDhFRTQxRTA4
QkFCRTAwMjNCMDg0IC8qIEdDIC8gV3JhcHBpbmcgT25seSAqLywKLQkJCQk0QjZCNUNCRTIxNjQz
NEZCMDA2MDM4MTcgLyogSlNDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZUN1c3RvbS5jcHAgKi8s
CiAJCQkJOUJDNUY5REYxRDVBQUY2QTAwMkI3NDlEIC8qIEpTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5
Q3VzdG9tLmNwcCAqLywKIAkJCQlCQ0Q5QzI1RTBDMTdBQTY3MDA1QzkwQTIgLyogSlNET01XaW5k
b3dDdXN0b20uY3BwICovLAogCQkJCTY1MkZCQkJCMERFMjdDQjYwMDAxRDM4NiAvKiBKU0RPTVdp
bmRvd0N1c3RvbS5oICovLAogCQkJCUJDNTgyM0Y0MEMwQTk4REYwMDUzRjFCNSAvKiBKU0hUTUxF
bGVtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlCQ0UxQzQzRjBEOTgzMEY0MDAzQjAyRjIgLyogSlNM
b2NhdGlvbkN1c3RvbS5jcHAgKi8sCisJCQkJNEI2QjVDQkUyMTY0MzRGQjAwNjAzODE3IC8qIEpT
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwICovLAogCQkJCTQxOEMzOTVEMUM4RjBB
QUIwMDUxQzhBMyAvKiBKU1JlYWRhYmxlU3RyZWFtU291cmNlQ3VzdG9tLmNwcCAqLywKIAkJCQk0
NkJDQkJCRTIwODUwMDVCMDA3MTA2MzggLyogSlNSZW1vdGVET01XaW5kb3dDdXN0b20uY3BwICov
LAogCQkJKTsKQEAgLTI2MDUyLDkgKzI2MDkyLDYgQEAKIAkJCQk0QjVCREQ5OTIxNjU4OEU1MDBE
RDQyNjIgLyogQ1NTUGFpbnRDYWxsYmFjay5pZGwgKi8sCiAJCQkJNEI2RTg3NkIyMTc2RDhBMTAw
NDIwRTVFIC8qIENTU1BhaW50SW1hZ2VWYWx1ZS5jcHAgKi8sCiAJCQkJNEI2RTg3NjgyMTc2RDY5
MjAwNDIwRTVFIC8qIENTU1BhaW50SW1hZ2VWYWx1ZS5oICovLAotCQkJCTRCNkI1Q0MxMjE2NDM5
Q0YwMDYwMzgxNyAvKiBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAgKi8sCi0JCQkJNEI2
QjVDQkYyMTY0Mzg2NDAwNjAzODE3IC8qIENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmggKi8s
Ci0JCQkJNEI2QjVDQzMyMTY0M0E4RTAwNjAzODE3IC8qIENTU1BhaW50V29ya2xldEdsb2JhbFNj
b3BlLmlkbCAqLywKIAkJCQk5NDE4Mjc4QzFEOENBRTk1MDA0OTI3NjQgLyogQ1NTUGVuZGluZ1N1
YnN0aXR1dGlvblZhbHVlLmNwcCAqLywKIAkJCQk5NDE4Mjc4RDFEOENBRTk1MDA0OTI3NjQgLyog
Q1NTUGVuZGluZ1N1YnN0aXR1dGlvblZhbHVlLmggKi8sCiAJCQkJQTgwRTZDREIwQTE5ODlDQTAw
N0ZCOEM1IC8qIENTU1ByaW1pdGl2ZVZhbHVlLmNwcCAqLywKQEAgLTI4MDU1LDcgKzI4MDkyLDYg
QEAKIAkJCQlBODBFNkQwMDBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTUGFnZVJ1bGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTRCNUJERDlCMjE2NThBMTUwMERENDI2MiAvKiBDU1NQYWludENhbGxiYWNr
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0QjZFODc2OTIxNzZENjkyMDA0MjBFNUUgLyogQ1NTUGFp
bnRJbWFnZVZhbHVlLmggaW4gSGVhZGVycyAqLywKLQkJCQk0QjZCNUNDMDIxNjQzODY0MDA2MDM4
MTcgLyogQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk0
NkQzNzJFMUQ2Q0IyOTQwMDc3MDg0RiAvKiBDU1NQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUU0QTc5OTUyMjBFRTRCMTQwMEMxOTU2OCAvKiBDU1NQYXJzZXJDb250ZXh0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5NDlDNzcwMTFENkUxRDk4MDBDMERFNEYgLyogQ1NTUGFyc2VyRmFzdFBhdGhz
LmggaW4gSGVhZGVycyAqLywKQEAgLTI5NzU4LDYgKzI5Nzk0LDcgQEAKIAkJCQlFMUMzNjJFRjBF
QUYyQUE5MDA3NDEwQkMgLyogSlNXb3JrZXJMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTEyNzFBNTgwRUVFQ0RFNDAwRjYxMjEzIC8qIEpTV29ya2VyTmF2aWdhdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MUYxNzUwNjFGMzU4QkY3MDBDNzQ5NTAgLyogSlNXb3JrZXJUeXBlLmggaW4g
SGVhZGVycyAqLywKKwkJCQk0QkRFQTMyQzIxODAzM0VCMDA1MkRGQ0QgLyogSlNXb3JrbGV0R2xv
YmFsU2NvcGVCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzRDOTZERDFBRDQ0ODM1MDAzNjVB
NjAgLyogSlNXcml0YWJsZVN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM1OENCNzAxQzUz
Mjc3NTAwRTBDMkQ4IC8qIEpTWE1MRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMzQ4
QkQ0MERCN0Y4MDQwMDRBQkFCOSAvKiBKU1hNTEh0dHBSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywK
QEAgLTMwMTQ0LDYgKzMwMTgxLDcgQEAKIAkJCQkwODg1MDY3RjExREEwNDVCMDAxODJCOTggLyog
UGFpbnRJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODg1MDY4MDExREEwNDVCMDAxODJCOTgg
LyogUGFpbnRQaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEIxRTEzRUIyMTc5MzdCMzAwNDJD
Rjk4IC8qIFBhaW50UmVuZGVyaW5nQ29udGV4dDJELmggaW4gSGVhZGVycyAqLywKKwkJCQk0QjZC
NUNDMDIxNjQzODY0MDA2MDM4MTcgLyogUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4MEU2Q0ZCMEExOTg5Q0EwMDdGQjhDNSAvKiBQYWlyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRDMxNjBBMzEyQjAyNkY3MDBDMUEzNTkgLyogUGFubmVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRDMxNjAxQTEyQjAyNjc2MDBDMUEzNTkgLyogUGFubmVyTm9kZS5oIGluIEhl
YWRlcnMgKi8sCkBAIC0zMTU2Miw2ICszMTYwMCwxMCBAQAogCQkJCTk3QUFCRDJEMTRGQTA5RDUw
MDc0NTdBRSAvKiBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTU0QTBDNjgxREI4MDdEOTAwMTdBOTBCIC8qIFdvcmtlclRvUGFnZUZyb250ZW5k
Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGMTc0RkUxRjM1ODk5MjAwQzc0OTUwIC8q
IFdvcmtlclR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTRCREVBMzIwMjE3RUM1NUYwMDUyREZD
RCAvKiBXb3JrbGV0LmggaW4gSGVhZGVycyAqLywKKwkJCQk0QjdGOUM1MjIxODNCNUU1MDAxQ0VC
QTAgLyogV29ya2xldENvbnNvbGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTRCREVBMzI1
MjE3RkUyRTQwMDUyREZDRCAvKiBXb3JrbGV0R2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTRCREVBMzI4MjE4MDAzRjcwMDUyREZDRCAvKiBXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMjQwOTlFNjQ5MjAwNTZFNTgxIC8qIFdyYXBDb250
ZW50c0luRHVtbXlTcGFuQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE2RTZGRTkxQkJE
MTJFNTAwMEE2MDUzIC8qIFdyaXRhYmxlU3RyZWFtQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxNkU2RkU4MUJCRDEyREYwMDBBNjA1MyAvKiBXcml0YWJsZVN0cmVhbUludGVybmFsc0J1
aWx0aW5zLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZUN1c3RvbS5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5ZmEzNDVhNWUzOGYzOWYzYzFkZWRjZDUz
YjZmYTM3Mzg1NTEzYjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NQYWludFdvcmtsZXRHbG9iYWxT
Y29wZUN1c3RvbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzMgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJKU0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCi0KLSNpZiBFTkFCTEUo
Q1NTX1BBSU5USU5HX0FQSSkKLQotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiSlND
U1NQYWludENhbGxiYWNrLmgiCi0jaW5jbHVkZSAiSlNET01Db252ZXJ0Q2FsbGJhY2tzLmgiCi0j
aW5jbHVkZSAiSlNET01Db252ZXJ0U2VxdWVuY2VzLmgiCi0jaW5jbHVkZSA8d3RmL1NldEZvclNj
b3BlLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLXN0
YXRpYyBKU1ZhbHVlIHRocm93SW52YWxpZE1vZGlmaWNhdGlvbkVycm9yKEV4ZWNTdGF0ZSYgc3Rh
dGUsIFRocm93U2NvcGUmIHNjb3BlLCBBU0NJSUxpdGVyYWwgbWVzc2FnZSkKLXsKLSAgICBzY29w
ZS5hc3NlcnROb0V4Y2VwdGlvbigpOwotICAgIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUs
IGNyZWF0ZURPTUV4Y2VwdGlvbigmc3RhdGUsIEludmFsaWRNb2RpZmljYXRpb25FcnJvciwgbWVz
c2FnZSkpOwotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCi12b2lkIEpTQ1NTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGU6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKEpTQzo6U2xvdFZpc2l0
b3ImIHZpc2l0b3IpCi17Ci0gICAgZm9yIChhdXRvJiByZWdpc3RlcmVkIDogd3JhcHBlZCgpLnBh
aW50RGVmaW5pdGlvbk1hcCgpLnZhbHVlcygpKQotICAgICAgICByZWdpc3RlcmVkLT5wYWludENh
bGxiYWNrLT52aXNpdEpTRnVuY3Rpb24odmlzaXRvcik7Ci19Ci0KLS8vIGh0dHBzOi8vZHJhZnRz
LmNzcy1ob3VkaW5pLm9yZy9jc3MtcGFpbnQtYXBpLyNyZWdpc3RlcmluZy1jdXN0b20tcGFpbnQK
LUpTVmFsdWUgSlNDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6cmVnaXN0ZXJQYWludChFeGVj
U3RhdGUmIHN0YXRlKQotewotICAgIHVzaW5nIFBhaW50RGVmaW5pdGlvbiA9IENTU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb247Ci0KLSAgICBDU1NQYWludFdvcmtsZXRH
bG9iYWxTY29wZSYgd29ya2xldEdsb2JhbFNjb3BlID0gd3JhcHBlZCgpOwotICAgIFZNJiB2bSA9
IHN0YXRlLnZtKCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwot
Ci0gICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDIpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3IoJnN0YXRlKSk7Ci0KLSAgICBBdG9taWNTdHJpbmcgbmFtZShzdGF0ZS51bmNoZWNr
ZWRBcmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT50b0F0b21pY1N0cmluZygmc3RhdGUpKTsK
LSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwotICAgIEpTVmFsdWUg
Y29uc3RydWN0b3JWYWx1ZSA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpOwotICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7Ci0KLSAgICBpZiAobmFtZS5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCAiVGhlIGZp
cnN0IGFyZ3VtZW50IG11c3Qgbm90IGJlIHRoZSBlbXB0eSBzdHJpbmciX3MpOwotCi0gICAgYXV0
byYgcGFpbnREZWZpbml0aW9uTWFwID0gd29ya2xldEdsb2JhbFNjb3BlLnBhaW50RGVmaW5pdGlv
bk1hcCgpOwotCi0gICAgaWYgKHBhaW50RGVmaW5pdGlvbk1hcC5jb250YWlucyhuYW1lKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93SW52YWxpZE1vZGlmaWNhdGlvbkVycm9yKHN0YXRlLCBzY29wZSwg
IlRoaXMgbmFtZSBoYXMgYWxyZWFkeSBiZWVuIHJlZ2lzdGVyZWQiX3MpOwotCi0gICAgVmVjdG9y
PFN0cmluZz4gaW5wdXRQcm9wZXJ0aWVzOwotCi0gICAgSlNWYWx1ZSBpbnB1dFByb3BlcnRpZXNJ
dGVyYWJsZVZhbHVlID0gY29uc3RydWN0b3JWYWx1ZS5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZ2bSwgImlucHV0UHJvcGVydGllcyIpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwotCi0gICAgaWYgKCFpbnB1dFByb3BlcnRpZXNJdGVyYWJs
ZVZhbHVlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIGlucHV0UHJvcGVydGllcyA9IGNvbnZlcnQ8
SURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj4oc3RhdGUsIGlucHV0UHJvcGVydGllc0l0ZXJhYmxl
VmFsdWUpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7Ci0KLSAg
ICAvLyBGSVhNRTogVmFsaWRhdGUgaW5wdXQgcHJvcGVydGllcyBoZXJlIChzdGVwIDcpLgotCi0g
ICAgVmVjdG9yPFN0cmluZz4gaW5wdXRBcmd1bWVudHM7Ci0KLSAgICBKU1ZhbHVlIGlucHV0QXJn
dW1lbnRzSXRlcmFibGVWYWx1ZSA9IGNvbnN0cnVjdG9yVmFsdWUuZ2V0KCZzdGF0ZSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmdm0sICJpbnB1dEFyZ3VtZW50cyIpKTsKLSAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwotCi0gICAgaWYgKCFpbnB1dEFyZ3VtZW50c0l0
ZXJhYmxlVmFsdWUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgaW5wdXRBcmd1bWVudHMgPSBjb252
ZXJ0PElETFNlcXVlbmNlPElETERPTVN0cmluZz4+KHN0YXRlLCBpbnB1dEFyZ3VtZW50c0l0ZXJh
YmxlVmFsdWUpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7Ci0K
LSAgICAvLyBGSVhNRTogUGFyc2Ugc3ludGF4IGZvciBpbnB1dEFyZ3VtZW50cyBoZXJlIChzdGVw
cyAxMSBhbmQgMTIpLgotCi0gICAgSlNWYWx1ZSBjb250ZXh0T3B0aW9uc1ZhbHVlID0gY29uc3Ry
dWN0b3JWYWx1ZS5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImNvbnRl
eHRPcHRpb25zIikpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7
Ci0gICAgVU5VU0VEX1BBUkFNKGNvbnRleHRPcHRpb25zVmFsdWUpOwotCi0gICAgLy8gRklYTUU6
IENvbnZlcnQgdG8gUGFpbnRSZW5kZXJpbmdDb250ZXh0MkRTZXR0aW5ncyBoZXJlIChzdGVwIDE0
KS4KLQotICAgIGlmICghY29uc3RydWN0b3JWYWx1ZS5pc0NvbnN0cnVjdG9yKHZtKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsICJUaGUgc2Vjb25kIGFyZ3Vt
ZW50IG11c3QgYmUgYSBjb25zdHJ1Y3RvciJfcyk7Ci0KLSAgICBKU1ZhbHVlIHByb3RvdHlwZVZh
bHVlID0gY29uc3RydWN0b3JWYWx1ZS5nZXQoJnN0YXRlLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90
b3R5cGUpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7Ci0KLSAg
ICBpZiAoIXByb3RvdHlwZVZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcigmc3RhdGUsIHNjb3BlLCAiVGhlIHNlY29uZCBhcmd1bWVudCBtdXN0IGhhdmUgYSBw
cm90b3R5cGUgdGhhdCBpcyBhbiBvYmplY3QiX3MpOwotCi0gICAgSlNWYWx1ZSBwYWludFZhbHVl
ID0gcHJvdG90eXBlVmFsdWUuZ2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0s
ICJwYWludCIpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwot
Ci0gICAgaWYgKHBhaW50VmFsdWUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsICJUaGUgY2xhc3MgbXVzdCBoYXZlIGEgcGFpbnQgbWV0
aG9kIl9zKTsKLQotICAgIFJlZlB0cjxKU0NTU1BhaW50Q2FsbGJhY2s+IHBhaW50ID0gY29udmVy
dDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTQ1NTUGFpbnRDYWxsYmFjaz4+KHN0YXRlLCBwYWludFZh
bHVlLCAqZ2xvYmFsT2JqZWN0KCkpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpT
VmFsdWUoKSk7Ci0KLSAgICBhdXRvIHBhaW50RGVmaW5pdGlvbiA9IHN0ZDo6dW5pcXVlX3B0cjxQ
YWludERlZmluaXRpb24+KG5ldyBQYWludERlZmluaXRpb24geyBuYW1lLCBwYWludC5yZWxlYXNl
Tm9uTnVsbCgpLCBpbnB1dFByb3BlcnRpZXMsIGlucHV0QXJndW1lbnRzIH0pOwotICAgIHBhaW50
RGVmaW5pdGlvbk1hcC5hZGQobmFtZSwgV1RGTW92ZShwYWludERlZmluaXRpb24pKTsKLQotICAg
IC8vIEZJWE1FOiBjb25zdHJ1Y3QgZG9jdW1lbnREZWZpbml0aW9uIChzdGVwIDIyKS4KLQotICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCi19Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAppbmRleCBlYmIyZjYxZGRjYzMy
NWEwMWRjNTI0YjJiNTJlYjhiMTE0MTQzMDU4Li43ZGRhMjU4NmVmN2IzNWM3NTZiMWIwMjM5ZjFj
MWY3NjE2ZGUzMTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01H
bG9iYWxPYmplY3QuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiSlNSZWFkYWJsZVN0
cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuaCIKICNpbmNsdWRlICJKU1JlbW90ZURPTVdpbmRvdy5o
IgogI2luY2x1ZGUgIkpTV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJKU1dvcmtsZXRH
bG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIlJlamVjdGVkUHJvbWlzZVRyYWNrZXIuaCIKICNpbmNs
dWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlZENsb25l
LmgiCkBAIC0xOTQsNiArMTk1LDEwIEBAIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIEpTRE9NR2xv
YmFsT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgaWYgKGluaGVyaXRzPEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlPih2bSgp
KSkKICAgICAgICAgcmV0dXJuIGpzQ2FzdDxjb25zdCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZSo+
KHRoaXMpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisjaWYgRU5BQkxFKENTU19QQUlOVElO
R19BUEkpCisgICAgaWYgKGluaGVyaXRzPEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZT4odm0oKSkp
CisgICAgICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlKj4o
dGhpcyktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyNlbmRpZgogICAgIGRhdGFMb2coIlVu
ZXhwZWN0ZWQgZ2xvYmFsIG9iamVjdDogIiwgSlNWYWx1ZSh0aGlzKSwgIlxuIik7CiAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQYWludFdvcmtsZXRHbG9i
YWxTY29wZUN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWE4ZjhhYmMxOTBjMDQyNDRiODcxODQ1NGE5
YzY1ODRmOTI2ZGE2MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwCkBAIC0wLDAgKzEsMTMzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKworI2lm
IEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNs
dWRlICJKU0NTU1BhaW50Q2FsbGJhY2suaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnRDYWxsYmFj
a3MuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnRTZXF1ZW5jZXMuaCIKKyNpbmNsdWRlIDx3dGYv
U2V0Rm9yU2NvcGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNwYWNlIEpT
QzsKKworc3RhdGljIEpTVmFsdWUgdGhyb3dJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3IoRXhlY1N0
YXRlJiBzdGF0ZSwgVGhyb3dTY29wZSYgc2NvcGUsIEFTQ0lJTGl0ZXJhbCBtZXNzYWdlKQorewor
ICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CisgICAgdGhyb3dFeGNlcHRpb24oJnN0YXRl
LCBzY29wZSwgY3JlYXRlRE9NRXhjZXB0aW9uKCZzdGF0ZSwgSW52YWxpZE1vZGlmaWNhdGlvbkVy
cm9yLCBtZXNzYWdlKSk7CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKK3ZvaWQgSlNQ
YWludFdvcmtsZXRHbG9iYWxTY29wZTo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oSlNDOjpTbG90
VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBmb3IgKGF1dG8mIHJlZ2lzdGVyZWQgOiB3cmFwcGVk
KCkucGFpbnREZWZpbml0aW9uTWFwKCkudmFsdWVzKCkpCisgICAgICAgIHJlZ2lzdGVyZWQtPnBh
aW50Q2FsbGJhY2stPnZpc2l0SlNGdW5jdGlvbih2aXNpdG9yKTsKK30KKworLy8gaHR0cHM6Ly9k
cmFmdHMuY3NzLWhvdWRpbmkub3JnL2Nzcy1wYWludC1hcGkvI3JlZ2lzdGVyaW5nLWN1c3RvbS1w
YWludAorSlNWYWx1ZSBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlOjpyZWdpc3RlclBhaW50KEV4
ZWNTdGF0ZSYgc3RhdGUpCit7CisgICAgdXNpbmcgUGFpbnREZWZpbml0aW9uID0gUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGU6OlBhaW50RGVmaW5pdGlvbjsKKworICAgIFBhaW50V29ya2xldEdsb2Jh
bFNjb3BlJiB3b3JrbGV0R2xvYmFsU2NvcGUgPSB3cmFwcGVkKCk7CisgICAgVk0mIHZtID0gc3Rh
dGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMikpCisgICAgICAgIHJldHVy
biB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcigmc3RhdGUpKTsKKworICAgIEF0b21pY1N0cmluZyBuYW1lKHN0YXRlLnVuY2hlY2tlZEFy
Z3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnRvQXRvbWljU3RyaW5nKCZzdGF0ZSkpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CisgICAgSlNWYWx1ZSBjb25z
dHJ1Y3RvclZhbHVlID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSk7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKKworICAgIGlmIChuYW1lLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsICJUaGUgZmlyc3Qg
YXJndW1lbnQgbXVzdCBub3QgYmUgdGhlIGVtcHR5IHN0cmluZyJfcyk7CisKKyAgICBhdXRvJiBw
YWludERlZmluaXRpb25NYXAgPSB3b3JrbGV0R2xvYmFsU2NvcGUucGFpbnREZWZpbml0aW9uTWFw
KCk7CisKKyAgICBpZiAocGFpbnREZWZpbml0aW9uTWFwLmNvbnRhaW5zKG5hbWUpKQorICAgICAg
ICByZXR1cm4gdGhyb3dJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Ioc3RhdGUsIHNjb3BlLCAiVGhp
cyBuYW1lIGhhcyBhbHJlYWR5IGJlZW4gcmVnaXN0ZXJlZCJfcyk7CisKKyAgICBWZWN0b3I8U3Ry
aW5nPiBpbnB1dFByb3BlcnRpZXM7CisKKyAgICBKU1ZhbHVlIGlucHV0UHJvcGVydGllc0l0ZXJh
YmxlVmFsdWUgPSBjb25zdHJ1Y3RvclZhbHVlLmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoJnZtLCAiaW5wdXRQcm9wZXJ0aWVzIikpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIEpTVmFsdWUoKSk7CisKKyAgICBpZiAoIWlucHV0UHJvcGVydGllc0l0ZXJhYmxlVmFs
dWUuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgaW5wdXRQcm9wZXJ0aWVzID0gY29udmVydDxJRExT
ZXF1ZW5jZTxJRExET01TdHJpbmc+PihzdGF0ZSwgaW5wdXRQcm9wZXJ0aWVzSXRlcmFibGVWYWx1
ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKKworICAgIC8v
IEZJWE1FOiBWYWxpZGF0ZSBpbnB1dCBwcm9wZXJ0aWVzIGhlcmUgKHN0ZXAgNykuCisKKyAgICBW
ZWN0b3I8U3RyaW5nPiBpbnB1dEFyZ3VtZW50czsKKworICAgIEpTVmFsdWUgaW5wdXRBcmd1bWVu
dHNJdGVyYWJsZVZhbHVlID0gY29uc3RydWN0b3JWYWx1ZS5nZXQoJnN0YXRlLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKCZ2bSwgImlucHV0QXJndW1lbnRzIikpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CisKKyAgICBpZiAoIWlucHV0QXJndW1lbnRzSXRlcmFi
bGVWYWx1ZS5pc1VuZGVmaW5lZCgpKQorICAgICAgICBpbnB1dEFyZ3VtZW50cyA9IGNvbnZlcnQ8
SURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj4oc3RhdGUsIGlucHV0QXJndW1lbnRzSXRlcmFibGVW
YWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKKworICAg
IC8vIEZJWE1FOiBQYXJzZSBzeW50YXggZm9yIGlucHV0QXJndW1lbnRzIGhlcmUgKHN0ZXBzIDEx
IGFuZCAxMikuCisKKyAgICBKU1ZhbHVlIGNvbnRleHRPcHRpb25zVmFsdWUgPSBjb25zdHJ1Y3Rv
clZhbHVlLmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiY29udGV4dE9w
dGlvbnMiKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKKyAg
ICBVTlVTRURfUEFSQU0oY29udGV4dE9wdGlvbnNWYWx1ZSk7CisKKyAgICAvLyBGSVhNRTogQ29u
dmVydCB0byBQYWludFJlbmRlcmluZ0NvbnRleHQyRFNldHRpbmdzIGhlcmUgKHN0ZXAgMTQpLgor
CisgICAgaWYgKCFjb25zdHJ1Y3RvclZhbHVlLmlzQ29uc3RydWN0b3Iodm0pKQorICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgIlRoZSBzZWNvbmQgYXJndW1lbnQg
bXVzdCBiZSBhIGNvbnN0cnVjdG9yIl9zKTsKKworICAgIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUg
PSBjb25zdHJ1Y3RvclZhbHVlLmdldCgmc3RhdGUsIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlw
ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKKworICAgIGlm
ICghcHJvdG90eXBlVmFsdWUuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKCZzdGF0ZSwgc2NvcGUsICJUaGUgc2Vjb25kIGFyZ3VtZW50IG11c3QgaGF2ZSBhIHByb3Rv
dHlwZSB0aGF0IGlzIGFuIG9iamVjdCJfcyk7CisKKyAgICBKU1ZhbHVlIHBhaW50VmFsdWUgPSBw
cm90b3R5cGVWYWx1ZS5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInBh
aW50IikpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CisKKyAg
ICBpZiAocGFpbnRWYWx1ZS5pc1VuZGVmaW5lZCgpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoJnN0YXRlLCBzY29wZSwgIlRoZSBjbGFzcyBtdXN0IGhhdmUgYSBwYWludCBtZXRob2Qi
X3MpOworCisgICAgUmVmUHRyPEpTQ1NTUGFpbnRDYWxsYmFjaz4gcGFpbnQgPSBjb252ZXJ0PElE
TENhbGxiYWNrRnVuY3Rpb248SlNDU1NQYWludENhbGxiYWNrPj4oc3RhdGUsIHBhaW50VmFsdWUs
ICpnbG9iYWxPYmplY3QoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1
ZSgpKTsKKworICAgIGF1dG8gcGFpbnREZWZpbml0aW9uID0gc3RkOjp1bmlxdWVfcHRyPFBhaW50
RGVmaW5pdGlvbj4obmV3IFBhaW50RGVmaW5pdGlvbiB7IG5hbWUsIHBhaW50LnJlbGVhc2VOb25O
dWxsKCksIGlucHV0UHJvcGVydGllcywgaW5wdXRBcmd1bWVudHMgfSk7CisgICAgcGFpbnREZWZp
bml0aW9uTWFwLmFkZChuYW1lLCBXVEZNb3ZlKHBhaW50RGVmaW5pdGlvbikpOworCisgICAgLy8g
RklYTUU6IGNvbnN0cnVjdCBkb2N1bWVudERlZmluaXRpb24gKHN0ZXAgMjIpLgorCisgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTgxNzdmM2MxYWI2NDEzYzU0ZjliNTBhMGY0NTlhZTVkZmE3OWM3YgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFz
ZS5jcHAKQEAgLTAsMCArMSwxNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTV29ya2xl
dEdsb2JhbFNjb3BlQmFzZS5oIgorCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisKKyNp
bmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKKyNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdFRh
c2suaCIKKyNpbmNsdWRlICJKU1dvcmtsZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmts
ZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTQ0pTVmFsdWVJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL0xhbmd1YWdlLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK2NvbnN0IENsYXNz
SW5mbyBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnNfaW5mbyA9IHsgIldvcmtsZXRHbG9iYWxT
Y29wZSIsICZKU0RPTUdsb2JhbE9iamVjdDo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZSkgfTsKKworY29uc3QgR2xv
YmFsT2JqZWN0TWV0aG9kVGFibGUgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzX2dsb2JhbE9i
amVjdE1ldGhvZFRhYmxlID0geworICAgICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLAorICAgICZz
aG91bGRJbnRlcnJ1cHRTY3JpcHQsCisgICAgJmphdmFTY3JpcHRSdW50aW1lRmxhZ3MsCisgICAg
bnVsbHB0ciwgLy8gcXVldWVUYXNrVG9FdmVudExvb3AKKyAgICAmc2hvdWxkSW50ZXJydXB0U2Ny
aXB0QmVmb3JlVGltZW91dCwKKyAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJJbXBvcnRNb2R1
bGUKKyAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJSZXNvbHZlCisgICAgbnVsbHB0ciwgLy8g
bW9kdWxlTG9hZGVyRmV0Y2gKKyAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJDcmVhdGVJbXBv
cnRNZXRhUHJvcGVydGllcworICAgIG51bGxwdHIsIC8vIG1vZHVsZUxvYWRlckV2YWx1YXRlCisg
ICAgJnByb21pc2VSZWplY3Rpb25UcmFja2VyLAorICAgICZkZWZhdWx0TGFuZ3VhZ2UsCisgICAg
bnVsbHB0ciwgLy8gY29tcGlsZVN0cmVhbWluZworICAgIG51bGxwdHIsIC8vIGluc3RhbnRpYXRl
U3RyZWFtaW5nCit9OworCitKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OkpTV29ya2xldEdsb2Jh
bFNjb3BlQmFzZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRy
PFdvcmtsZXRHbG9iYWxTY29wZT4mJiBpbXBsKQorICAgIDogSlNET01HbG9iYWxPYmplY3Qodm0s
IHN0cnVjdHVyZSwgbm9ybWFsV29ybGQodm0pLCAmc19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSkK
KyAgICAsIG1fd3JhcHBlZChXVEZNb3ZlKGltcGwpKQoreworfQorCit2b2lkIEpTV29ya2xldEds
b2JhbFNjb3BlQmFzZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1Byb3h5KiBwcm94eSkKK3sK
KyAgICBtX3Byb3h5LnNldCh2bSwgdGhpcywgcHJveHkpOworCisgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0sIG1fcHJveHkuZ2V0KCkpOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygp
KSk7Cit9CisKK3ZvaWQgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpjbGVhckRPTUd1YXJkZWRP
YmplY3RzKCkKK3sKKyAgICBhdXRvIGd1YXJkZWRPYmplY3RzID0gbV9ndWFyZGVkT2JqZWN0czsK
KyAgICBmb3IgKGF1dG8mIGd1YXJkZWQgOiBndWFyZGVkT2JqZWN0cykKKyAgICAgICAgZ3VhcmRl
ZC0+Y2xlYXIoKTsKK30KKwordm9pZCBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1dvcmts
ZXRHbG9iYWxTY29wZUJhc2UqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNXb3JrbGV0R2xvYmFsU2Nv
cGVCYXNlKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0
LCBpbmZvKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7
CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9wcm94eSk7Cit9CisKK3ZvaWQgSlNX
b3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBzdGF0
aWNfY2FzdDxKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UqPihjZWxsKS0+SlNXb3JrbGV0R2xvYmFs
U2NvcGVCYXNlOjp+SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlKCk7Cit9CisKK1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd3JhcHBlZC5nZXQoKTsKK30KKworYm9vbCBK
U1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnN1cHBvcnRzUmljaFNvdXJjZUluZm8oY29uc3QgSlNH
bG9iYWxPYmplY3QqIG9iamVjdCkKK3sKKyAgICByZXR1cm4gSlNHbG9iYWxPYmplY3Q6OnN1cHBv
cnRzUmljaFNvdXJjZUluZm8ob2JqZWN0KTsKK30KKworYm9vbCBKU1dvcmtsZXRHbG9iYWxTY29w
ZUJhc2U6OnNob3VsZEludGVycnVwdFNjcmlwdChjb25zdCBKU0dsb2JhbE9iamVjdCogb2JqZWN0
KQoreworICAgIHJldHVybiBKU0dsb2JhbE9iamVjdDo6c2hvdWxkSW50ZXJydXB0U2NyaXB0KG9i
amVjdCk7Cit9CisKK2Jvb2wgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzaG91bGRJbnRlcnJ1
cHRTY3JpcHRCZWZvcmVUaW1lb3V0KGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvYmplY3QpCit7Cisg
ICAgcmV0dXJuIEpTR2xvYmFsT2JqZWN0OjpzaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1l
b3V0KG9iamVjdCk7Cit9CisKK1J1bnRpbWVGbGFncyBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6
OmphdmFTY3JpcHRSdW50aW1lRmxhZ3MoY29uc3QgSlNHbG9iYWxPYmplY3QqIG9iamVjdCkKK3sK
KyAgICBjb25zdCBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
Y29uc3QgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlKj4ob2JqZWN0KTsKKyAgICByZXR1cm4gdGhp
c09iamVjdC0+bV93cmFwcGVkLT5qc1J1bnRpbWVGbGFncygpOworfQorCitKU1ZhbHVlIHRvSlMo
RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCosIFdvcmtsZXRHbG9iYWxTY29wZSYg
d29ya2xldEdsb2JhbFNjb3BlKQoreworICAgIHJldHVybiB0b0pTKGV4ZWMsIHdvcmtsZXRHbG9i
YWxTY29wZSk7Cit9CisKK0pTVmFsdWUgdG9KUyhFeGVjU3RhdGUqLCBXb3JrbGV0R2xvYmFsU2Nv
cGUmIHdvcmtsZXRHbG9iYWxTY29wZSkKK3sKKyAgICBXb3JrbGV0U2NyaXB0Q29udHJvbGxlciog
c2NyaXB0ID0gd29ya2xldEdsb2JhbFNjb3BlLnNjcmlwdCgpOworICAgIGlmICghc2NyaXB0KQor
ICAgICAgICByZXR1cm4ganNOdWxsKCk7CisgICAgSlNXb3JrbGV0R2xvYmFsU2NvcGUqIGNvbnRl
eHRXcmFwcGVyID0gc2NyaXB0LT53b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKCk7CisgICAgQVNT
RVJUKGNvbnRleHRXcmFwcGVyKTsKKyAgICByZXR1cm4gY29udGV4dFdyYXBwZXItPnByb3h5KCk7
Cit9CisKK0pTV29ya2xldEdsb2JhbFNjb3BlKiB0b0pTV29ya2xldEdsb2JhbFNjb3BlKFZNJiB2
bSwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvID0gYXNPYmpl
Y3QodmFsdWUpLT5jbGFzc0luZm8odm0pOworCisgICAgaWYgKGNsYXNzSW5mbyA9PSBKU1Byb3h5
OjppbmZvKCkpCisgICAgICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTV29ya2xldEdsb2JhbFNj
b3BlKj4odm0sIGpzQ2FzdDxKU1Byb3h5Kj4oYXNPYmplY3QodmFsdWUpKS0+dGFyZ2V0KCkpOwor
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFs
U2NvcGVCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxT
Y29wZUJhc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNTU4MjdiOThkM2RjYmNlNjQ1ZWJlYzU2ODM1YjBkMzEz
MmRhNzMwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
b3JrbGV0R2xvYmFsU2NvcGVCYXNlLmgKQEAgLTAsMCArMSw4NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShDU1NfUEFJTlRJTkdfQVBJKQorCisjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIK
KyNpbmNsdWRlICJKU0RPTVdyYXBwZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBKU1dvcmtsZXRHbG9iYWxTY29wZTsKK2NsYXNzIFdvcmtsZXRHbG9iYWxTY29wZTsKKworY2xh
c3MgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlIDogcHVibGljIEpTRE9NR2xvYmFsT2JqZWN0IHsK
KyAgICB0eXBlZGVmIEpTRE9NR2xvYmFsT2JqZWN0IEJhc2U7CitwdWJsaWM6CisgICAgc3RhdGlj
IHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAg
V29ya2xldEdsb2JhbFNjb3BlJiB3cmFwcGVkKCkgY29uc3QgeyByZXR1cm4gKm1fd3JhcHBlZDsg
fQorICAgIEpTQzo6SlNQcm94eSogcHJveHkoKSBjb25zdCB7IEFTU0VSVChtX3Byb3h5KTsgcmV0
dXJuIG1fcHJveHkuZ2V0KCk7IH0KKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CisKKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEpTQzo6
U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJ
bmZvKEpTQzo6R2xvYmFsT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAg
IH0KKworICAgIHN0YXRpYyBjb25zdCBKU0M6Okdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIHNfZ2xv
YmFsT2JqZWN0TWV0aG9kVGFibGU7CisKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c1JpY2hTb3Vy
Y2VJbmZvKGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgYm9vbCBzaG91
bGRJbnRlcnJ1cHRTY3JpcHQoY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHN0YXRp
YyBib29sIHNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQoY29uc3QgSlNDOjpKU0ds
b2JhbE9iamVjdCopOworICAgIHN0YXRpYyBKU0M6OlJ1bnRpbWVGbGFncyBqYXZhU2NyaXB0UnVu
dGltZUZsYWdzKGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgdm9pZCBx
dWV1ZVRhc2tUb0V2ZW50TG9vcChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgUmVmPEpTQzo6TWljcm90
YXNrPiYmKTsKKworICAgIHZvaWQgY2xlYXJET01HdWFyZGVkT2JqZWN0cygpOworCitwcm90ZWN0
ZWQ6CisgICAgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlKEpTQzo6Vk0mLCBKU0M6OlN0cnVjdHVy
ZSosIFJlZlB0cjxXb3JrbGV0R2xvYmFsU2NvcGU+JiYpOworICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oSlNDOjpWTSYsIEpTQzo6SlNQcm94eSopOworCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGls
ZHJlbihKU0M6OkpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKTsKKworcHJpdmF0ZToKKyAgICBS
ZWZQdHI8V29ya2xldEdsb2JhbFNjb3BlPiBtX3dyYXBwZWQ7CisgICAgSlNDOjpXcml0ZUJhcnJp
ZXI8SlNDOjpKU1Byb3h5PiBtX3Byb3h5OworfTsKKworLy8gUmV0dXJucyBhIEpTV29ya2xldEds
b2JhbFNjb3BlIG9yIGpzTnVsbCgpCisvLyBBbHdheXMgaWdub3JlcyB0aGUgZXhlY1N0YXRlIGFu
ZCBwYXNzZWQgZ2xvYmFsT2JqZWN0LCBXb3JrbGV0R2xvYmFsU2NvcGUgaXMgaXRzZWxmIGEgZ2xv
YmFsT2JqZWN0IGFuZCB3aWxsIGFsd2F5cyB1c2UgaXRzIG93biBwcm90b3R5cGUgY2hhaW4uCitK
U0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgV29y
a2xldEdsb2JhbFNjb3BlJik7CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFdvcmtsZXRHbG9iYWxT
Y29wZSogc2NvcGUpIHsgcmV0dXJuIHNjb3BlID8gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsICpz
Y29wZSkgOiBKU0M6OmpzTnVsbCgpOyB9CitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0
ZSosIFdvcmtsZXRHbG9iYWxTY29wZSYpOworaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBXb3JrbGV0R2xvYmFsU2NvcGUqIHNjb3BlKSB7IHJldHVybiBzY29w
ZSA/IHRvSlMoZXhlYywgKnNjb3BlKSA6IEpTQzo6anNOdWxsKCk7IH0KKworSlNXb3JrbGV0R2xv
YmFsU2NvcGUqIHRvSlNXb3JrbGV0R2xvYmFsU2NvcGUoSlNDOjpWTSYsIEpTQzo6SlNWYWx1ZSk7
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdFN0YXRlLmNwcAppbmRleCBlZWU4MzljYzQyNjRmYmU0YTI5ZGZiOTkxYjVmZGU1
MGQ2MGJhYjFjLi5hMWJhMTQ1MjgzNGQ4Y2EzY2U2YWY0NzcxMWU5NzBiMzg4Y2MxYjA3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwCkBAIC0zNSwxMSArMzUs
MTQgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93QmFzZS5oIgog
I2luY2x1ZGUgIkpTV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJKU1dvcmtsZXRHbG9i
YWxTY29wZS5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAj
aW5jbHVkZSAiV29ya2VyU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIldvcmtsZXRHbG9i
YWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvQ2FsbEZyYW1lLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNHbG9iYWxPYmplY3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmdJbmxpbmVz
Lmg+CkBAIC05NSw5ICs5OCwxNiBAQCBKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbVBhZ2Uo
RE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgUGFnZSogcGFnZSkKICAgICByZXR1cm4gcGFnZSA/IHBh
Z2UtPm1haW5GcmFtZSgpLnNjcmlwdCgpLmdsb2JhbE9iamVjdCh3b3JsZCktPmdsb2JhbEV4ZWMo
KSA6IG51bGxwdHI7CiB9CiAKLUpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tV29ya2VyR2xv
YmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlckdsb2JhbFNjb3BlKQorSlNDOjpFeGVj
U3RhdGUqIGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZShXb3JrZXJHbG9iYWxTY29wZSYg
d29ya2VyR2xvYmFsU2NvcGUpCiB7Ci0gICAgcmV0dXJuIHdvcmtlckdsb2JhbFNjb3BlLT5zY3Jp
cHQoKS0+d29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKCktPmdsb2JhbEV4ZWMoKTsKKyAgICByZXR1
cm4gd29ya2VyR2xvYmFsU2NvcGUuc2NyaXB0KCktPndvcmtlckdsb2JhbFNjb3BlV3JhcHBlcigp
LT5nbG9iYWxFeGVjKCk7CiB9CiAKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKK0pTQzo6
RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tV29ya2xldEdsb2JhbFNjb3BlKFdvcmtsZXRHbG9iYWxT
Y29wZSYgd29ya2xldEdsb2JhbFNjb3BlKQoreworICAgIHJldHVybiB3b3JrbGV0R2xvYmFsU2Nv
cGUuc2NyaXB0KCktPndvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIoKS0+Z2xvYmFsRXhlYygpOwor
fQorI2VuZGlmCisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdFN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCmlu
ZGV4IDc0NDIxZmQ5NWJhMTc3NTZlYjg5YzAwNDI2YzMzZmI1NDU0OTgzOTAuLjE1Mzg0YTcxMWYz
NTZjZWU0NzhjYTk5ZTI1NTViMWVlYTI0ODJhZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0U3RhdGUuaApAQCAtNDQsNiArNDQsOSBAQCBjbGFzcyBOb2RlOwogY2xhc3MgUGFn
ZTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBXb3JrZXJHbG9iYWxTY29w
ZTsKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKK2NsYXNzIFdvcmtsZXRHbG9iYWxTY29w
ZTsKKyNlbmRpZgogCiBET01XaW5kb3cqIGRvbVdpbmRvd0Zyb21FeGVjU3RhdGUoSlNDOjpFeGVj
U3RhdGUqKTsKIEZyYW1lKiBmcmFtZUZyb21FeGVjU3RhdGUoSlNDOjpFeGVjU3RhdGUqKTsKQEAg
LTUzLDYgKzU2LDkgQEAgSlNDOjpFeGVjU3RhdGUqIG1haW5Xb3JsZEV4ZWNTdGF0ZShGcmFtZSop
OwogCiBKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbU5vZGUoRE9NV3JhcHBlcldvcmxkJiwg
Tm9kZSopOwogV0VCQ09SRV9FWFBPUlQgSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZUZyb21QYWdl
KERPTVdyYXBwZXJXb3JsZCYsIFBhZ2UqKTsKLUpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9t
V29ya2VyR2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUqKTsKK0pTQzo6RXhlY1N0YXRlKiBl
eGVjU3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUmKTsKKyNpZiBF
TkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKK0pTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tV29y
a2xldEdsb2JhbFNjb3BlKFdvcmtsZXRHbG9iYWxTY29wZSYpOworI2VuZGlmCiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dl
YkNvcmVCdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVC
dWlsdGluTmFtZXMuaAppbmRleCAxYzkzODU5ZWNjMTY4NzRjMGMwN2UzNzNiMjk3M2M0MjUwNWRl
YTgwLi4yOTJmZDk3OTI0NDlkMzc3ZDI3NWMyODI0YmUxNTJkY2E2ZmQ2OTFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCkBAIC01MSw3
ICs1MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhDcmVkZW50aWFsKSBcCiAg
ICAgbWFjcm8oQ3JlZGVudGlhbHNDb250YWluZXIpIFwKICAgICBtYWNybyhDU1NBbmltYXRpb24p
IFwKLSAgICBtYWNybyhDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSkgXAogICAgIG1hY3JvKENT
U1RyYW5zaXRpb24pIFwKICAgICBtYWNybyhDdXN0b21FbGVtZW50UmVnaXN0cnkpIFwKICAgICBt
YWNybyhEYXRhYmFzZSkgXApAQCAtMTIzLDYgKzEyMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBtYWNybyhTUUxSZXN1bHRTZXQpIFwKICAgICBtYWNybyhTUUxSZXN1bHRTZXRSb3dMaXN0
KSBcCiAgICAgbWFjcm8oU1FMVHJhbnNhY3Rpb24pIFwKKyAgICBtYWNybyhQYWludFdvcmtsZXRH
bG9iYWxTY29wZSkgXAogICAgIG1hY3JvKFBlcmZvcm1hbmNlRW50cnkpIFwKICAgICBtYWNybyhQ
ZXJmb3JtYW5jZUVudHJ5TGlzdCkgXAogICAgIG1hY3JvKFBlcmZvcm1hbmNlTWFyaykgXApAQCAt
MjEwLDYgKzIxMCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhXZWJLaXRNZWRp
YUtleXMpIFwKICAgICBtYWNybyhXZWJTb2NrZXQpIFwKICAgICBtYWNybyhXaW5kb3dDbGllbnQp
IFwKKyAgICBtYWNybyhXb3JrbGV0KSBcCisgICAgbWFjcm8oV29ya2xldEdsb2JhbFNjb3BlKSBc
CiAgICAgbWFjcm8oV3JpdGFibGVTdHJlYW0pIFwKICAgICBtYWNybyhYTUxIdHRwUmVxdWVzdCkg
XAogICAgIG1hY3JvKGFwcGVuZEZyb21KUykgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCA0OGZjZTdiYzE2YTg4MGQ2M2Y0
MzJhMDE4ZjFmZWUyZjY3YmY1YmRjLi45YmRkZGVkMzAxNjcxZmI0NDc5NWIzMzJlZmZlMTJlYTAz
NWE4MzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQpAQCAtNDk3LDcgKzQ5Nyw3IEBAIHN1YiBHZXRDdXN0b21Jc1JlYWNoYWJs
ZQogc3ViIElzRE9NR2xvYmFsT2JqZWN0CiB7CiAgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0Owot
ICAgIHJldHVybiAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIGVxICJET01XaW5kb3ciIHx8ICRpbnRl
cmZhY2UtPnR5cGUtPm5hbWUgZXEgIlJlbW90ZURPTVdpbmRvdyIgfHwgJGNvZGVHZW5lcmF0b3It
PkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrZXJHbG9iYWxTY29wZSIpIHx8ICRp
bnRlcmZhY2UtPnR5cGUtPm5hbWUgZXEgIlRlc3RHbG9iYWxPYmplY3QiOworICAgIHJldHVybiAk
aW50ZXJmYWNlLT50eXBlLT5uYW1lIGVxICJET01XaW5kb3ciIHx8ICRpbnRlcmZhY2UtPnR5cGUt
Pm5hbWUgZXEgIlJlbW90ZURPTVdpbmRvdyIgfHwgJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50
ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrZXJHbG9iYWxTY29wZSIpIHx8ICRjb2RlR2VuZXJhdG9y
LT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiV29ya2xldEdsb2JhbFNjb3BlIikgfHwg
JGludGVyZmFjZS0+dHlwZS0+bmFtZSBlcSAiVGVzdEdsb2JhbE9iamVjdCI7CiB9CiAKIHN1YiBT
aG91bGRVc2VHbG9iYWxPYmplY3RQcm90b3R5cGUKQEAgLTUwNiw2ICs1MDYsNyBAQCBzdWIgU2hv
dWxkVXNlR2xvYmFsT2JqZWN0UHJvdG90eXBlCiAKICAgICAjIEZvciB3b3JrZXJzLCB0aGUgZ2xv
YmFsIG9iamVjdCBpcyBhIERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLgogICAgIHJldHVybiAw
IGlmICRpbnRlcmZhY2UtPnR5cGUtPm5hbWUgZXEgIldvcmtlckdsb2JhbFNjb3BlIjsKKyAgICBy
ZXR1cm4gMCBpZiAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIGVxICJXb3JrbGV0R2xvYmFsU2NvcGUi
OwogCiAgICAgcmV0dXJuIElzRE9NR2xvYmFsT2JqZWN0KCRpbnRlcmZhY2UpOwogfQpAQCAtMjUz
Nyw3ICsyNTM4LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0sIHByb3h5KTtcbiIpOwogICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICByZXR1cm4gcHRyO1xuIik7CiAgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgfVxuXG4iKTsKLSAgICB9IGVsc2lmICgkY29k
ZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldvcmtlckdsb2JhbFNj
b3BlIikpIHsKKyAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2Uo
JGludGVyZmFjZSwgIldvcmtlckdsb2JhbFNjb3BlIikgfHwgJGNvZGVHZW5lcmF0b3ItPkluaGVy
aXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrbGV0R2xvYmFsU2NvcGUiKSkgewogICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyAkY2xhc3NOYW1lKiBjcmVhdGUoSlND
OjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZjwkaW1wbFR5cGU+JiYgaW1w
bCwgSlNDOjpKU1Byb3h5KiBwcm94eSlcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiICAgIHtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICAkY2xh
c3NOYW1lKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPCRjbGFzc05hbWU+
KHZtLmhlYXApKSAke2NsYXNzTmFtZX0odm0sIHN0cnVjdHVyZSwgV1RGTW92ZShpbXBsKSk7XG4i
KTsKQEAgLTI4NDUsNyArMjg0Niw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICMgQ29uc3Ry
dWN0b3IKICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIgfHwgJGludGVyZmFj
ZU5hbWUgZXEgIlJlbW90ZURPTVdpbmRvdyIpIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIiAgICAkY2xhc3NOYW1lKEpTQzo6Vk0mLCBKU0M6OlN0cnVjdHVyZSosIFJlZjwkaW1wbFR5
cGU+JiYsIEpTV2luZG93UHJveHkqKTtcbiIpOwotICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9y
LT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiV29ya2VyR2xvYmFsU2NvcGUiKSkgewor
ICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNl
LCAiV29ya2VyR2xvYmFsU2NvcGUiKSB8fCAkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZh
Y2UoJGludGVyZmFjZSwgIldvcmtsZXRHbG9iYWxTY29wZSIpKSB7CiAgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgJGNsYXNzTmFtZShKU0M6OlZNJiwgSlNDOjpTdHJ1Y3R1cmUqLCBS
ZWY8JGltcGxUeXBlPiYmKTtcbiIpOwogICAgIH0gZWxzaWYgKCFOZWVkc0ltcGxlbWVudGF0aW9u
Q2xhc3MoJGludGVyZmFjZSkpIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAk
Y2xhc3NOYW1lKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmKTtcblxuIik7CkBA
IC0yODU1LDcgKzI4NTYsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAgIGlmICgkaW50ZXJm
YWNlTmFtZSBlcSAiRE9NV2luZG93IiB8fCAkaW50ZXJmYWNlTmFtZSBlcSAiUmVtb3RlRE9NV2lu
ZG93IikgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oSlNDOjpWTSYsIEpTV2luZG93UHJveHkqKTtcbiIpOwotICAgIH0gZWxzaWYgKCRjb2Rl
R2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiV29ya2VyR2xvYmFsU2Nv
cGUiKSkgeworICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgk
aW50ZXJmYWNlLCAiV29ya2VyR2xvYmFsU2NvcGUiKSB8fCAkY29kZUdlbmVyYXRvci0+SW5oZXJp
dHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldvcmtsZXRHbG9iYWxTY29wZSIpKSB7CiAgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiwg
SlNDOjpKU1Byb3h5Kik7XG4iKTsKICAgICB9IGVsc2UgewogICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpO1xuIik7CkBAIC0zNjYy
LDYgKzM2NjMsOCBAQCBzdWIgR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmdG
b3JFeHBvc2VkCiAgICAgICAgIHB1c2goQCRjb25qdW5jdHMsICJqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPigiIC4gJGdsb2JhbE9iamVjdFB0ciAuICIpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPmlzRG9jdW1lbnQoKSIpOwogICAgIH0gZWxzaWYgKCRleHBvc2VkIGVxICJXb3JrZXIiKSB7
CiAgICAgICAgIHB1c2goQCRjb25qdW5jdHMsICJqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigi
IC4gJGdsb2JhbE9iamVjdFB0ciAuICIpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzV29y
a2VyR2xvYmFsU2NvcGUoKSIpOworICAgIH0gZWxzaWYgKCRleHBvc2VkIGVxICJXb3JrbGV0Iikg
eworICAgICAgICBwdXNoKEAkY29uanVuY3RzLCAianNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
IiAuICRnbG9iYWxPYmplY3RQdHIgLiAiKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1dv
cmtsZXRHbG9iYWxTY29wZSgpIik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgYXNzZXJ0KCJVbnJl
Y29nbml6ZWQgdmFsdWUgJyIgLiBEdW1wZXIoJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0V4cG9zZWR9KSAuICInIGZvciB0aGUgRXhwb3NlZCBleHRlbmRlZCBhdHRyaWJ1dGUgb24gJyIg
LiByZWYoJGNvbnRleHQpIC4gIicuIik7CiAgICAgfQpAQCAtNDI1Miw3ICs0MjU1LDcgQEAgc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
OiAkcGFyZW50Q2xhc3NOYW1lKHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUoaW1wbCksIHByb3h5KVxu
Iik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAifVxuXG4iKTsKLSAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SW5oZXJp
dHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldvcmtlckdsb2JhbFNjb3BlIikpIHsKKyAgICB9IGVs
c2lmICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldvcmtl
ckdsb2JhbFNjb3BlIikgfHwgJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRl
cmZhY2UsICJXb3JrbGV0R2xvYmFsU2NvcGUiKSkgewogICAgICAgICBBZGRJbmNsdWRlc0Zvcklt
cGxlbWVudGF0aW9uVHlwZUluSW1wbCgkaW50ZXJmYWNlTmFtZSk7CiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiJHtjbGFzc05hbWV9OjokY2xhc3NOYW1lKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIFJlZjwkaW1wbFR5cGU+JiYgaW1wbClcbiIpOwogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICA6ICRwYXJlbnRDbGFzc05hbWUodm0sIHN0cnVjdHVyZSwgV1RGTW92ZShp
bXBsKSlcbiIpOwpAQCAtNDI3Myw3ICs0Mjc2LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7Y2xhc3NOYW1lfTo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBKU1dpbmRvd1Byb3h5KiBwcm94eSlcbiIpOwogICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgcHJveHkpO1xuXG4iKTsKLSAgICB9IGVsc2lmICgkY29k
ZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldvcmtlckdsb2JhbFNj
b3BlIikpIHsKKyAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2Uo
JGludGVyZmFjZSwgIldvcmtlckdsb2JhbFNjb3BlIikgfHwgJGNvZGVHZW5lcmF0b3ItPkluaGVy
aXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrbGV0R2xvYmFsU2NvcGUiKSkgewogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtjbGFzc05hbWV9OjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIEpTUHJveHkqIHByb3h5KVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
e1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKHZtLCBwcm94eSk7XG5cbiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbAppbmRleCAzZTA1YzdiNDk2ODJiZWU2NGY2ODk4YjRk
ZjQ0ODQyNTEzNDM4YjUxLi40NmNkM2I4ZjljYTljMTFhYTUxZmJkOWZhODc2MGZhN2IwZmQ5MzM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3Mt
aWRscy5wbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3Mt
aWRscy5wbApAQCAtMzYsNiArMzYsOCBAQCBteSAkd2luZG93Q29uc3RydWN0b3JzRmlsZTsKIG15
ICR3b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGU7CiBteSAkZGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlOwogbXkgJHNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZUNvbnN0cnVjdG9yc0ZpbGU7CitteSAkd29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmls
ZTsKK215ICRwYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGU7CiBteSAkc3Vw
cGxlbWVudGFsTWFrZWZpbGVEZXBzOwogCiBHZXRPcHRpb25zKCdkZWZpbmVzPXMnID0+IFwkZGVm
aW5lcywKQEAgLTQ2LDYgKzQ4LDggQEAgR2V0T3B0aW9ucygnZGVmaW5lcz1zJyA9PiBcJGRlZmlu
ZXMsCiAgICAgICAgICAgICd3b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGU9cycgPT4g
XCR3b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUsCiAgICAgICAgICAgICdkZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGU9cycgPT4gXCRkZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUsCiAgICAgICAgICAgICdzZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlPXMnID0+IFwkc2VydmljZVdvcmtlckdsb2JhbFNj
b3BlQ29uc3RydWN0b3JzRmlsZSwKKyAgICAgICAgICAgJ3dvcmtsZXRHbG9iYWxTY29wZUNvbnN0
cnVjdG9yc0ZpbGU9cycgPT4gXCR3b3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlLAor
ICAgICAgICAgICAncGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlPXMnID0+
IFwkcGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlLAogICAgICAgICAgICAn
c3VwcGxlbWVudGFsTWFrZWZpbGVEZXBzPXMnID0+IFwkc3VwcGxlbWVudGFsTWFrZWZpbGVEZXBz
KTsKIAogZGllKCdNdXN0IHNwZWNpZnkgI2RlZmluZSBtYWNyb3MgdXNpbmcgLS1kZWZpbmVzLicp
IHVubGVzcyBkZWZpbmVkKCRkZWZpbmVzKTsKQEAgLTU0LDYgKzU4LDggQEAgZGllKCdNdXN0IHNw
ZWNpZnkgYW4gb3V0cHV0IGZpbGUgdXNpbmcgLS13aW5kb3dDb25zdHJ1Y3RvcnNGaWxlLicpIHVu
bGVzcyBkZWZpbmUKIGRpZSgnTXVzdCBzcGVjaWZ5IGFuIG91dHB1dCBmaWxlIHVzaW5nIC0td29y
a2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlLicpIHVubGVzcyBkZWZpbmVkKCR3b3JrZXJH
bG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOwogZGllKCdNdXN0IHNwZWNpZnkgYW4gb3V0cHV0
IGZpbGUgdXNpbmcgLS1kZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUu
JykgdW5sZXNzIGRlZmluZWQoJGRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3Jz
RmlsZSk7CiBkaWUoJ011c3Qgc3BlY2lmeSBhbiBvdXRwdXQgZmlsZSB1c2luZyAtLXNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUuJykgdW5sZXNzIGRlZmluZWQoJHNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOworZGllKCdNdXN0IHNwZWNpZnkg
YW4gb3V0cHV0IGZpbGUgdXNpbmcgLS13b3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxl
LicpIHVubGVzcyBkZWZpbmVkKCR3b3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlKTsK
K2RpZSgnTXVzdCBzcGVjaWZ5IGFuIG91dHB1dCBmaWxlIHVzaW5nIC0tcGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlLicpIHVubGVzcyBkZWZpbmVkKCRwYWludFdvcmtsZXRH
bG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOwogZGllKCdNdXN0IHNwZWNpZnkgdGhlIGZpbGUg
bGlzdGluZyBhbGwgSURMcyB1c2luZyAtLWlkbEZpbGVzTGlzdC4nKSB1bmxlc3MgZGVmaW5lZCgk
aWRsRmlsZXNMaXN0KTsKIAogJHN1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlID0gQ3lnd2luUGF0
aElmTmVlZGVkKCRzdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZSk7CkBAIC02MSw2ICs2Nyw4IEBA
ICR3aW5kb3dDb25zdHJ1Y3RvcnNGaWxlID0gQ3lnd2luUGF0aElmTmVlZGVkKCR3aW5kb3dDb25z
dHJ1Y3RvcnNGaWxlKTsKICR3b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgPSBDeWd3
aW5QYXRoSWZOZWVkZWQoJHdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSk7CiAkZGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlID0gQ3lnd2luUGF0aElmTmVl
ZGVkKCRkZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOwogJHNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgPSBDeWd3aW5QYXRoSWZOZWVkZWQo
JHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOworJHdvcmtsZXRHbG9i
YWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgPSBDeWd3aW5QYXRoSWZOZWVkZWQoJHdvcmtsZXRHbG9i
YWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOworJHBhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3JzRmlsZSA9IEN5Z3dpblBhdGhJZk5lZWRlZCgkcGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVD
b25zdHJ1Y3RvcnNGaWxlKTsKICRzdXBwbGVtZW50YWxNYWtlZmlsZURlcHMgPSBDeWd3aW5QYXRo
SWZOZWVkZWQoJHN1cHBsZW1lbnRhbE1ha2VmaWxlRGVwcyk7CiAKIG9wZW4gRkgsICI8ICRpZGxG
aWxlc0xpc3QiIG9yIGRpZSAiQ2Fubm90IG9wZW4gJGlkbEZpbGVzTGlzdFxuIjsKQEAgLTgwLDYg
Kzg4LDggQEAgbXkgJHdpbmRvd0NvbnN0cnVjdG9yc0NvZGUgPSAiIjsKIG15ICR3b3JrZXJHbG9i
YWxTY29wZUNvbnN0cnVjdG9yc0NvZGUgPSAiIjsKIG15ICRkZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZUNvbnN0cnVjdG9yc0NvZGUgPSAiIjsKIG15ICRzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVD
b25zdHJ1Y3RvcnNDb2RlID0gIiI7CitteSAkd29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3Jz
Q29kZSA9ICIiOworbXkgJHBhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzQ29kZSA9
ICIiOwogCiAjIEdldCByaWQgb2YgZHVwbGljYXRlcyBpbiBpZGxGaWxlcyBhcnJheS4KIG15ICVp
ZGxGaWxlSGFzaCA9IG1hcCB7ICRfLCAxIH0gQGlkbEZpbGVzOwpAQCAtMTQzLDYgKzE1MywxMCBA
QCBmb3JlYWNoIG15ICRpZGxGaWxlIChzb3J0IGtleXMgJWlkbEZpbGVIYXNoKSB7CiAgICAgICAg
ICAgICAgICAgICAgICRkZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0NvZGUg
Lj0gJGF0dHJpYnV0ZUNvZGU7CiAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGdsb2JhbENvbnRl
eHQgZXEgIlNlcnZpY2VXb3JrZXIiKSB7CiAgICAgICAgICAgICAgICAgICAgICRzZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNDb2RlIC49ICRhdHRyaWJ1dGVDb2RlOworICAgICAg
ICAgICAgICAgIH0gZWxzaWYgKCRnbG9iYWxDb250ZXh0IGVxICJXb3JrbGV0IikgeworICAgICAg
ICAgICAgICAgICAgICAkd29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzQ29kZSAuPSAkYXR0
cmlidXRlQ29kZTsKKyAgICAgICAgICAgICAgICB9IGVsc2lmICgkZ2xvYmFsQ29udGV4dCBlcSAi
UGFpbnRXb3JrbGV0IikgeworICAgICAgICAgICAgICAgICAgICAkcGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGVDb25zdHJ1Y3RvcnNDb2RlIC49ICRhdHRyaWJ1dGVDb2RlOwogICAgICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIGRpZSAiVW5zdXBwb3J0ZWQgZ2xvYmFsIGNv
bnRleHQgJyRnbG9iYWxDb250ZXh0JyB1c2VkIGluIFtFeHBvc2VkXSBhdCAkaWRsRmlsZSI7CiAg
ICAgICAgICAgICAgICAgfQpAQCAtMTU3LDYgKzE3MSw4IEBAIEdlbmVyYXRlUGFydGlhbEludGVy
ZmFjZSgiRE9NV2luZG93IiwgJHdpbmRvd0NvbnN0cnVjdG9yc0NvZGUsICR3aW5kb3dDb25zdHJ1
Y3RvCiBHZW5lcmF0ZVBhcnRpYWxJbnRlcmZhY2UoIldvcmtlckdsb2JhbFNjb3BlIiwgJHdvcmtl
ckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzQ29kZSwgJHdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0
b3JzRmlsZSk7CiBHZW5lcmF0ZVBhcnRpYWxJbnRlcmZhY2UoIkRlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlIiwgJGRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzQ29kZSwgJGRl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSk7CiBHZW5lcmF0ZVBhcnRp
YWxJbnRlcmZhY2UoIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSIsICRzZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGVDb25zdHJ1Y3RvcnNDb2RlLCAkc2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3JzRmlsZSk7CitHZW5lcmF0ZVBhcnRpYWxJbnRlcmZhY2UoIldvcmtsZXRHbG9iYWxTY29w
ZSIsICR3b3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNDb2RlLCAkd29ya2xldEdsb2JhbFNj
b3BlQ29uc3RydWN0b3JzRmlsZSk7CitHZW5lcmF0ZVBhcnRpYWxJbnRlcmZhY2UoIlBhaW50V29y
a2xldEdsb2JhbFNjb3BlIiwgJHBhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzQ29k
ZSwgJHBhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSk7CiAKICMgUmVzb2x2
ZXMgcGFydGlhbCBpbnRlcmZhY2VzIGFuZCBpbXBsZW1lbnRzIGRlcGVuZGVuY2llcy4KIGZvcmVh
Y2ggbXkgJGlkbEZpbGUgKHNvcnQga2V5cyAlc3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludEltYWdlVmFsdWUuY3BwCmluZGV4IGE2OTBlNDFkNzY3
MWRlYTAzNTMyMWZhZmU3YjdmYTk3MTFhYmRhNTIuLjYxNjQxMzU4NmNmNjc2NDk3YjFhMjNlNjAw
MWMyNjU2YzBlN2M2ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludElt
YWdlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludEltYWdlVmFsdWUu
Y3BwCkBAIC0yOSw4ICsyOSw4IEBACiAKICNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKIAot
I2luY2x1ZGUgIkNTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiQ3VzdG9t
UGFpbnRJbWFnZS5oIgorI2luY2x1ZGUgIlBhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5j
bHVkZSAiUmVuZGVyRWxlbWVudC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aD4KIApAQCAtNTAsOCArNTAsMTAgQEAgUmVmUHRyPEltYWdlPiBDU1NQYWludEltYWdlVmFsdWU6
OmltYWdlKFJlbmRlckVsZW1lbnQmIHJlbmRlckVsZW1lbnQsIGNvbnN0IEZsb2EKIHsKICAgICBp
ZiAoc2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8mIHNl
bGVjdGVkR2xvYmFsU2NvcGUgPSByZW5kZXJFbGVtZW50LmRvY3VtZW50KCkuZW5zdXJlQ1NTUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGUoKTsKLSAgICBhdXRvKiByZWdpc3RyYXRpb24gPSBzZWxlY3Rl
ZEdsb2JhbFNjb3BlLnBhaW50RGVmaW5pdGlvbk1hcCgpLmdldChtX25hbWUpOworICAgIGF1dG8q
IHNlbGVjdGVkR2xvYmFsU2NvcGUgPSByZW5kZXJFbGVtZW50LmRvY3VtZW50KCkuZ2V0Q1NTUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGUoKTsKKyAgICBpZiAoIXNlbGVjdGVkR2xvYmFsU2NvcGUpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8qIHJlZ2lzdHJhdGlvbiA9IHNlbGVjdGVk
R2xvYmFsU2NvcGUtPnBhaW50RGVmaW5pdGlvbk1hcCgpLmdldChtX25hbWUpOwogCiAgICAgaWYg
KCFyZWdpc3RyYXRpb24pCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGVkOTczY2QzOGQ2OGU0M2NjNTI4NWM1ODEwNGIyNWRkYjZlMTBjMjgu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDU0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ1NTUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUuaCIKLQotI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLVJlZjxDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZT4gQ1NTUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGU6OmNyZWF0ZSgpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGUoKSk7Ci19Ci0KLUNTU1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
OjpDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSgpCi17Ci19Ci0KLWRvdWJsZSBDU1NQYWludFdv
cmtsZXRHbG9iYWxTY29wZTo6ZGV2aWNlUGl4ZWxSYXRpbygpCi17Ci0gICAgcmV0dXJuIDEuMDsK
LX0KLQotRXhjZXB0aW9uT3I8dm9pZD4gQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZFJl
Z2lzdGVyZWRQYWludCgpCi17Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50V29ya2xl
dEdsb2JhbFNjb3BlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzYjBkOWQ4ZjNm
MDIzN2UyNzkyZmNlZjdlNDc3ZmU1OGM2MmEzMDguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50V29ya2xldEds
b2JhbFNjb3BlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoQ1NTX1BBSU5USU5HX0FQSSkKLQotI2luY2x1ZGUgIkNTU1BhaW50Q2FsbGJhY2suaCIKLSNp
bmNsdWRlICJFeGNlcHRpb25Pci5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFj
ZSBKU0MgewotCi1jbGFzcyBKU1ZhbHVlOwotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1jbGFzcyBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlPiB7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZT4gY3JlYXRlKCk7Ci0KLSAgICBF
eGNlcHRpb25Pcjx2b2lkPiBhZGRSZWdpc3RlcmVkUGFpbnQoKTsKLSAgICBkb3VibGUgZGV2aWNl
UGl4ZWxSYXRpbygpOwotCi0gICAgc3RydWN0IFBhaW50RGVmaW5pdGlvbiB7Ci0gICAgICAgIGNv
bnN0IEF0b21pY1N0cmluZyBuYW1lOwotICAgICAgICBjb25zdCBSZWY8Q1NTUGFpbnRDYWxsYmFj
az4gcGFpbnRDYWxsYmFjazsKLSAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4gaW5wdXRQcm9w
ZXJ0aWVzOwotICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiBpbnB1dEFyZ3VtZW50czsKLSAg
ICB9OwotCi0gICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxQYWludERlZmluaXRp
b24+PiYgcGFpbnREZWZpbml0aW9uTWFwKCkgeyByZXR1cm4gbV9wYWludERlZmluaXRpb25NYXA7
IH0KLQotcHJpdmF0ZToKLSAgICBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSgpOwotCi0gICAg
SGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxQYWludERlZmluaXRpb24+PiBtX3BhaW50
RGVmaW5pdGlvbk1hcDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLSNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5pZGwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1MzZjMGE0MTM5NWMwYTFhMDg0ZmExZjdlYjVh
NmMyYmE3MmE2MWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmlkbAorKysg
L2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0qIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0qCi0qIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSogYXJlIG1ldDoKLSogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0qICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0qCi0qIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0qIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0qIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0qIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotKi8KLQotWwotICAg
IEVuYWJsZWRBdFJ1bnRpbWU9Q1NTUGFpbnRpbmdBUEksCi0gICAgQ29uZGl0aW9uYWw9Q1NTX1BB
SU5USU5HX0FQSSwKLSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAotICAgIEpTQ3VzdG9t
TWFya0Z1bmN0aW9uLAotICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdAotXSBpbnRlcmZhY2Ug
Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUgewotICAgIFtDdXN0b20sIE1heVRocm93RXhjZXB0
aW9uXSB2b2lkIHJlZ2lzdGVyUGFpbnQoRE9NU3RyaW5nIG5hbWUsIEZ1bmN0aW9uIHBhaW50Q3Rv
cik7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgZGV2aWNlUGl4
ZWxSYXRpbzsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRX
b3JrbGV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuY3BwCmlu
ZGV4IDEyMDY4MWI4ZDc2MTM0NmRhNzJhY2M1YTBiMjI2OWUxNDA3MzU4OWIuLmRjZWI3ZWU5YjYw
NDkwZGMwMTgxZTVjNmYxODY1ZDAyY2JjZjJhY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9ET01DU1NQYWludFdvcmtsZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01D
U1NQYWludFdvcmtsZXQuY3BwCkBAIC0yOCwxNiArMjgsMTcgQEAKIAogI2lmIEVOQUJMRShDU1Nf
UEFJTlRJTkdfQVBJKQogCi0jaW5jbHVkZSAiQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIK
ICNpbmNsdWRlICJET01DU1NOYW1lc3BhY2UuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2lu
Y2x1ZGUgIldvcmtsZXQuaCIKKwogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlJiBET01DU1NQ
YWludFdvcmtsZXQ6OmVuc3VyZVBhaW50V29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50JiBkb2N1
bWVudCkKK1dvcmtsZXQmIERPTUNTU1BhaW50V29ya2xldDo6ZW5zdXJlUGFpbnRXb3JrbGV0KERv
Y3VtZW50JiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gZG9jdW1lbnQuZW5zdXJlQ1NTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUoKTsKKyAgICByZXR1cm4gZG9jdW1lbnQuZW5zdXJlQ1NTUGFpbnRX
b3JrbGV0KCk7CiB9CiAKIERPTUNTU1BhaW50V29ya2xldCogRE9NQ1NTUGFpbnRXb3JrbGV0Ojpm
cm9tKERPTUNTU05hbWVzcGFjZSYgY3NzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0RPTUNTU1BhaW50V29ya2xldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29y
a2xldC5oCmluZGV4IGVlNWVmYjExZDE5YmI2MmYzOGU1NmUxMGU1ZDYxNjNjYzlkOGZiM2YuLmEy
Y2IzNzNmNmEwMzQxM2QxMjFiNDAxNDM0YmZkOWVmOTlhOTc2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmgKQEAgLTM1LDE0ICszNSwxNCBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKLWNsYXNzIENTU1BhaW50V29ya2xldEdsb2JhbFNj
b3BlOworY2xhc3MgV29ya2xldDsKIGNsYXNzIERPTUNTU05hbWVzcGFjZTsKIAogY2xhc3MgRE9N
Q1NTUGFpbnRXb3JrbGV0IGZpbmFsIDogcHVibGljIFN1cHBsZW1lbnQ8RE9NQ1NTTmFtZXNwYWNl
PiB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgRE9NQ1NTUGFpbnRXb3JrbGV0KERPTUNTU05hbWVz
cGFjZSYpIHsgfQogCi0gICAgc3RhdGljIENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlJiBlbnN1
cmVQYWludFdvcmtsZXRHbG9iYWxTY29wZShEb2N1bWVudCYpOworICAgIHN0YXRpYyBXb3JrbGV0
JiBlbnN1cmVQYWludFdvcmtsZXQoRG9jdW1lbnQmKTsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMg
RE9NQ1NTUGFpbnRXb3JrbGV0KiBmcm9tKERPTUNTU05hbWVzcGFjZSYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmlkbAppbmRleCAxOTBjZGI0NWVjNzUzZGViYmU5NmY4
ZDgzMzgxM2Y0NDYzNWFlOGMzLi5hYTU5ZTVlZTJkZTkxODFkMzA0N2ZlMzQ4MDRmZTUyN2EyNmY3
NDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0Lmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmlkbApAQCAtMjcs
NiArMjcsNSBAQAogICAgIEVuYWJsZWRBdFJ1bnRpbWU9Q1NTUGFpbnRpbmdBUEksCiAgICAgQ29u
ZGl0aW9uYWw9Q1NTX1BBSU5USU5HX0FQSSwKIF0gcGFydGlhbCBpbnRlcmZhY2UgRE9NQ1NTTmFt
ZXNwYWNlIHsKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBub3QgYWN0dWFsbHkgcGFydCBvZiB0aGUg
c3BlYywgYW5kIHNob3VsZCBiZSByZXBsYWNlZCB3aGVuIHdvcmtsZXRzIGFyZSBpbXBsZW1lbnRl
ZAotICAgIFtJbXBsZW1lbnRlZEFzPWVuc3VyZVBhaW50V29ya2xldEdsb2JhbFNjb3BlLENhbGxX
aXRoPURvY3VtZW50XSBzdGF0aWMgcmVhZG9ubHkgYXR0cmlidXRlIENTU1BhaW50V29ya2xldEds
b2JhbFNjb3BlIHBhaW50V29ya2xldEdsb2JhbFNjb3BlOworICAgIFtJbXBsZW1lbnRlZEFzPWVu
c3VyZVBhaW50V29ya2xldCxDYWxsV2l0aD1Eb2N1bWVudF0gc3RhdGljIHJlYWRvbmx5IGF0dHJp
YnV0ZSBXb3JrbGV0IHBhaW50V29ya2xldDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRl
eCA3YjQ4MDhiZTZhMzg2NzUxMDA4MGMwYmE0MDJjMTcxZjFlNTgwMzA4Li4xNjY0M2VkMTljNzA5
MjIxMjc3M2EwZTMwM2JkZGUyZDdhZTg3NjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAg
LTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJDREFUQVNlY3Rpb24uaCIKICNpbmNsdWRlICJDU1NB
bmltYXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiQ1NTRm9udFNlbGVjdG9yLmgiCi0jaW5j
bHVkZSAiQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJDU1NTdHlsZURl
Y2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVTaGVldC5oIgogI2luY2x1ZGUgIkNhY2hl
ZENTU1N0eWxlU2hlZXQuaCIKQEAgLTE0MCw2ICsxMzksNyBAQAogI2luY2x1ZGUgIlBhZ2VDb25z
b2xlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiUGFnZVRyYW5z
aXRpb25FdmVudC5oIgorI2luY2x1ZGUgIlBhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1Mb2NhbGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgpAQCAtMjE3LDYgKzIxNyw3IEBA
CiAjaW5jbHVkZSAiV2ViQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiV2hlZWxFdmVudC5oIgogI2lu
Y2x1ZGUgIldpbmRvd0ZlYXR1cmVzLmgiCisjaW5jbHVkZSAiV29ya2xldC5oIgogI2luY2x1ZGUg
IlhNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAiWE1MRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRl
ICJYTUxOU05hbWVzLmgiCkBAIC04Mzc3LDExICs4Mzc4LDE2IEBAIHZvaWQgRG9jdW1lbnQ6OmZy
YW1lV2FzRGlzY29ubmVjdGVkRnJvbU93bmVyKCkKIH0KIAogI2lmIEVOQUJMRShDU1NfUEFJTlRJ
TkdfQVBJKQotQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUmIERvY3VtZW50OjplbnN1cmVDU1NQ
YWludFdvcmtsZXRHbG9iYWxTY29wZSgpCitXb3JrbGV0JiBEb2N1bWVudDo6ZW5zdXJlQ1NTUGFp
bnRXb3JrbGV0KCkKIHsKLSAgICBpZiAoIW1fQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUpCi0g
ICAgICAgIG1fQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUgPSBDU1NQYWludFdvcmtsZXRHbG9i
YWxTY29wZTo6Y3JlYXRlKCk7Ci0gICAgcmV0dXJuICptX0NTU1BhaW50V29ya2xldEdsb2JhbFNj
b3BlOworICAgIGlmICghbV9DU1NQYWludFdvcmtsZXQpCisgICAgICAgIG1fQ1NTUGFpbnRXb3Jr
bGV0ID0gV29ya2xldDo6Y3JlYXRlKCk7CisgICAgcmV0dXJuICptX0NTU1BhaW50V29ya2xldDsK
K30KKwordm9pZCBEb2N1bWVudDo6c2V0Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoUmVmPFBh
aW50V29ya2xldEdsb2JhbFNjb3BlPiYmIHNjb3BlKQoreworICAgIG1fY3NzUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUgPSBXVEZNb3ZlKHNjb3BlKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCmluZGV4IDg1NDJjMTU1NjcxN2YyN2I2MDg5MDdkMmQxNGVlMTRjZGEyNDhmZDguLjRiNDYy
MzM0M2ZjZGUwYjRiMmI0OTk3YjRhMzQzMGJkZTFlOWJjNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CkBAIC04OCw3ICs4OCw2IEBAIGNsYXNzIEF0dHI7CiBjbGFzcyBDREFUQVNlY3Rpb247CiBjbGFz
cyBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOwogY2xhc3MgQ1NTRm9udFNlbGVjdG9yOwotY2xhc3Mg
Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU7CiBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uOwog
Y2xhc3MgQ1NTU3R5bGVTaGVldDsKIGNsYXNzIENhY2hlZENTU1N0eWxlU2hlZXQ7CkBAIC0xNTQs
NiArMTUzLDcgQEAgY2xhc3MgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0czsKIGNsYXNzIE5v
ZGVGaWx0ZXI7CiBjbGFzcyBOb2RlSXRlcmF0b3I7CiBjbGFzcyBQYWdlOworY2xhc3MgUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGU7CiBjbGFzcyBQbGF0Zm9ybU1vdXNlRXZlbnQ7CiBjbGFzcyBQcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb247CiBjbGFzcyBRdWFsaWZpZWROYW1lOwpAQCAtMTk0LDYgKzE5NCw3
IEBAIGNsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dDsKIGNsYXNzIFdlYkdQVVJlbmRlcmluZ0Nv
bnRleHQ7CiBjbGFzcyBXZWJNZXRhbFJlbmRlcmluZ0NvbnRleHQ7CiBjbGFzcyBXaW5kb3dQcm94
eTsKK2NsYXNzIFdvcmtsZXQ7CiBjbGFzcyBYUGF0aEV2YWx1YXRvcjsKIGNsYXNzIFhQYXRoRXhw
cmVzc2lvbjsKIGNsYXNzIFhQYXRoTlNSZXNvbHZlcjsKQEAgLTEzNTAsNiArMTM1MSwxMCBAQCBw
dWJsaWM6CiAgICAgLy8gQ2FsbGVycyBzaG91bGQgdHJ5IHRvIGNyZWF0ZSB0aGUgQ29uc29sZU1l
c3NhZ2UgdGhlbXNlbHZlcy4KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZENvbnNvbGVNZXNz
YWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1
bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyID0gMCkgZmluYWw7CiAKKyAgICAvLyBUaGUg
Zm9sbG93aW5nIGFkZE1lc3NhZ2UgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZC4KKyAgICAvLyBDYWxs
ZXJzIHNob3VsZCB0cnkgdG8gY3JlYXRlIHRoZSBDb25zb2xlTWVzc2FnZSB0aGVtc2VsdmVzLgor
ICAgIHZvaWQgYWRkTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIHVuc2lnbmVkIGxpbmVOdW1i
ZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0
YWNrPiYmLCBKU0M6OkV4ZWNTdGF0ZSogPSBudWxscHRyLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJ
ZGVudGlmaWVyID0gMCkgZmluYWw7CisKICAgICBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmln
aW4oKSBjb25zdCB7IHJldHVybiAqU2VjdXJpdHlDb250ZXh0OjpzZWN1cml0eU9yaWdpbigpOyB9
CiAgICAgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRv
cERvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKTsgfQogCkBAIC0xNTE3LDcgKzE1MjIsOSBAQCBw
dWJsaWM6CiAgICAgYm9vbCByZWdpc3RlckNTU1Byb3BlcnR5KENTU1JlZ2lzdGVyZWRDdXN0b21Q
cm9wZXJ0eSYmKTsKIAogI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQotICAgIENTU1BhaW50
V29ya2xldEdsb2JhbFNjb3BlJiBlbnN1cmVDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSgpOwor
ICAgIFdvcmtsZXQmIGVuc3VyZUNTU1BhaW50V29ya2xldCgpOworICAgIFBhaW50V29ya2xldEds
b2JhbFNjb3BlKiBnZXRDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSgpIHsgcmV0dXJuIG1fY3Nz
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuZ2V0KCk7IH0KKyAgICB2b2lkIHNldENTU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlKFJlZjxQYWludFdvcmtsZXRHbG9iYWxTY29wZT4mJik7CiAjZW5kaWYK
IAogICAgIHZvaWQgc2V0QXNSdW5uaW5nVXNlclNjcmlwdHMoKSB7IG1faXNSdW5uaW5nVXNlclNj
cmlwdHMgPSB0cnVlOyB9CkBAIC0xNTcwLDEwICsxNTc3LDYgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBmaW5hbCB7IHJlZigpOyB9CiAgICAgdm9pZCBk
ZXJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KIAotICAgIC8v
IFRoZSBmb2xsb3dpbmcgYWRkTWVzc2FnZSBmdW5jdGlvbiBpcyBkZXByZWNhdGVkLgotICAgIC8v
IENhbGxlcnMgc2hvdWxkIHRyeSB0byBjcmVhdGUgdGhlIENvbnNvbGVNZXNzYWdlIHRoZW1zZWx2
ZXMuCi0gICAgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgdW5zaWduZWQgbGlu
ZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRD
YWxsU3RhY2s+JiYsIEpTQzo6RXhlY1N0YXRlKiA9IG51bGxwdHIsIHVuc2lnbmVkIGxvbmcgcmVx
dWVzdElkZW50aWZpZXIgPSAwKSBmaW5hbDsKLQogICAgIFNlY29uZHMgbWluaW11bURPTVRpbWVy
SW50ZXJ2YWwoKSBjb25zdCBmaW5hbDsKIAogICAgIFNlY29uZHMgZG9tVGltZXJBbGlnbm1lbnRJ
bnRlcnZhbChib29sIGhhc1JlYWNoZWRNYXhOZXN0aW5nTGV2ZWwpIGNvbnN0IGZpbmFsOwpAQCAt
MjA2MCw3ICsyMDYzLDggQEAgcHJpdmF0ZToKICAgICBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVy
dHlTZXQgbV9DU1NSZWdpc3RlcmVkUHJvcGVydHlTZXQ7CiAKICNpZiBFTkFCTEUoQ1NTX1BBSU5U
SU5HX0FQSSkKLSAgICBSZWZQdHI8Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+IG1fQ1NTUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGU7CisgICAgUmVmUHRyPFdvcmtsZXQ+IG1fQ1NTUGFpbnRXb3Jr
bGV0OworICAgIFJlZlB0cjxQYWludFdvcmtsZXRHbG9iYWxTY29wZT4gbV9jc3NQYWludFdvcmts
ZXRHbG9iYWxTY29wZTsKICNlbmRpZgogCiAgICAgYm9vbCBtX2lzUnVubmluZ1VzZXJTY3JpcHRz
IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZh
Y3RvcnkuaW4gYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCmluZGV4
IDYwYWIxYTU4Mjg4YmU5OWEyOTdlZTkyM2I4ODk0MGYxOTNmNmY1NWYuLjc4YTIyYjMxNmE0YzQ2
ODBiMWQ3YzIyNzRhY2I2YWI3ZmQ1NjQ4YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudFRhcmdldEZhY3RvcnkuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFy
Z2V0RmFjdG9yeS5pbgpAQCAtNTIsNiArNTIsNyBAQCBXZWJBbmltYXRpb24KIFdlYktpdE1lZGlh
S2V5U2Vzc2lvbiBjb25kaXRpb25hbD1MRUdBQ1lfRU5DUllQVEVEX01FRElBCiBXZWJTb2NrZXQK
IFdvcmtlcgorV29ya2xldEdsb2JhbFNjb3BlIGNvbmRpdGlvbmFsPUNTU19QQUlOVElOR19BUEkK
IFhNTEh0dHBSZXF1ZXN0CiBYTUxIdHRwUmVxdWVzdFVwbG9hZAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXggYmE1YzM2MzI0YmM4MzQwMGU0
NGI4YzljMTViMTU1ZTU4MzcwY2ZiZi4uNjk4MmM4NWM4ZTRiYTFiZWE2NTI0ZDBiOWUyMDljYzM1
ZjNjNzE4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0
LmNwcApAQCAtNTQsNiArNTQsOCBAQAogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAj
aW5jbHVkZSAiV29ya2VyTmF2aWdhdG9yLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCisj
aW5jbHVkZSAiV29ya2xldEdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29ya2xldFNjcmlwdENv
bnRyb2xsZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9DYXRjaFNjb3BlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvRXhjZXB0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNQcm9taXNlLmg+CkBAIC00NzYsOCArNDc4LDE0IEBAIEpTQzo6Vk0mIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OnZtKCkKIHsKICAgICBpZiAoaXM8RG9jdW1lbnQ+KCp0aGlzKSkKICAgICAg
ICAgcmV0dXJuIGNvbW1vblZNKCk7CisgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPigqdGhp
cykpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpLnNj
cmlwdCgpLT52bSgpOworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorICAgIGlmIChpczxX
b3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlzKSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFdvcmts
ZXRHbG9iYWxTY29wZT4oKnRoaXMpLnNjcmlwdCgpLT52bSgpOworI2VuZGlmCiAKLSAgICByZXR1
cm4gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCp0aGlzKS5zY3JpcHQoKS0+dm0oKTsKKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAogUmVqZWN0ZWRQcm9taXNlVHJhY2tlciYgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6ZW5zdXJlUmVqZWN0ZWRQcm9taXNlVHJhY2tlclNsb3coKQpA
QCAtNTE5LDggKzUyNywxOSBAQCBKU0M6OkV4ZWNTdGF0ZSogU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6ZXhlY1N0YXRlKCkKICAgICAgICAgcmV0dXJuIGV4ZWNTdGF0ZUZyb21QYWdlKG1haW5UaHJl
YWROb3JtYWxXb3JsZCgpLCBkb2N1bWVudC5wYWdlKCkpOwogICAgIH0KIAotICAgIFdvcmtlckds
b2JhbFNjb3BlKiB3b3JrZXJHbG9iYWxTY29wZSA9IHN0YXRpY19jYXN0PFdvcmtlckdsb2JhbFNj
b3BlKj4odGhpcyk7Ci0gICAgcmV0dXJuIGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZSh3
b3JrZXJHbG9iYWxTY29wZSk7CisgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykp
IHsKKyAgICAgICAgV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlID0gZG93bmNh
c3Q8V29ya2VyR2xvYmFsU2NvcGU+KCp0aGlzKTsKKyAgICAgICAgcmV0dXJuIGV4ZWNTdGF0ZUZy
b21Xb3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSk7CisgICAgfQorI2lmIEVOQUJM
RShDU1NfUEFJTlRJTkdfQVBJKQorICAgIGlmIChpczxXb3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlz
KSkgeworICAgICAgICBXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtsZXRHbG9iYWxTY29wZSA9IGRv
d25jYXN0PFdvcmtsZXRHbG9iYWxTY29wZT4oKnRoaXMpOworICAgICAgICByZXR1cm4gZXhlY1N0
YXRlRnJvbVdvcmtsZXRHbG9iYWxTY29wZSh3b3JrbGV0R2xvYmFsU2NvcGUpOworICAgIH0KKyNl
bmRpZgorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKIFN0cmluZyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpkb21haW5Gb3JDYWNoZVBhcnRpdGlv
bigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApp
bmRleCAyYjY0NzVlNjI3ZGNlZmQ1ZGRiNjQzNGUxNTE1NTQ2NWU1NWM0N2U0Li43ODU5MDQ1ODIz
YjdjNjMwNTBhZTAxZjFhNjQ1YmFkMzBiMmRjNzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTg5LDYgKzg5LDcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCBib29sIGlzRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgYm9vbCBpc1dvcmtlckdsb2JhbFNjb3BlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgaXNXb3JrbGV0R2xvYmFsU2NvcGUoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogCiAgICAgdmlydHVhbCBib29sIGlzQ29udGV4dFRocmVhZCgpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNv
bnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29y
a2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggY2FjMDYyNTY5OWE0MThi
ODkwZDNkMTEzZDNjNDkyN2JkZTZmZWM5ZC4uYjIwY2JiYzk1MDcwMjgxMWI2NTg5YWMxZGZiZDU3
MzM5MTkzZDMzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93
b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKQEAgLTYwLDcgKzYwLDcg
QEAgSW5qZWN0ZWRTY3JpcHQgV29ya2VyRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JF
dmFsKEVycm9yU3RyaW5nJiBlcnJvclN0cmkKICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0
KCk7CiAgICAgfQogCi0gICAgSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlID0gZXhlY1N0YXRl
RnJvbVdvcmtlckdsb2JhbFNjb3BlKCZtX3dvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBKU0M6OkV4
ZWNTdGF0ZSogc2NyaXB0U3RhdGUgPSBleGVjU3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUobV93
b3JrZXJHbG9iYWxTY29wZSk7CiAgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0TWFuYWdlcigpLmlu
amVjdGVkU2NyaXB0Rm9yKHNjcmlwdFN0YXRlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5j
cHAKaW5kZXggOWNjNjlkMTcyNGNkYWQxOGY5OGUzZDNiMzJmMjk2OGE1NTRlMDY3ZC4uOGMzMjE0
ODdjNjg1ZmQzNGZhZWFhNzU1MGM5OGEyMjkwODc1ZDMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdl
bnQuY3BwCkBAIC02NSw3ICs2NSw3IEBAIEluamVjdGVkU2NyaXB0IFdvcmtlclJ1bnRpbWVBZ2Vu
dDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nJiBlcnJvclN0cmluCiAgICAgICAg
IHJldHVybiBJbmplY3RlZFNjcmlwdCgpOwogICAgIH0KIAotICAgIEpTQzo6RXhlY1N0YXRlKiBz
Y3JpcHRTdGF0ZSA9IGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZSgmbV93b3JrZXJHbG9i
YWxTY29wZSk7CisgICAgSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlID0gZXhlY1N0YXRlRnJv
bVdvcmtlckdsb2JhbFNjb3BlKG1fd29ya2VyR2xvYmFsU2NvcGUpOwogICAgIHJldHVybiBpbmpl
Y3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50
SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJ
bWFnZS5jcHAKaW5kZXggZDJlNDJjMGM5ZTYxOTlmNTI3NDI5MTY3MGYxN2EwNmU5ZGU4MjBmYi4u
MTVhYTkyNGMyYjYxNzFlNTM1MGMxMDFkNDQwYmU2YzNjY2E1MGM5MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHAKQEAg
LTM3LDcgKzM3LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DdXN0b21QYWludEltYWdl
OjpDdXN0b21QYWludEltYWdlKGNvbnN0IENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWlu
dERlZmluaXRpb24mIGRlZmluaXRpb24sIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKK0N1c3RvbVBh
aW50SW1hZ2U6OkN1c3RvbVBhaW50SW1hZ2UoY29uc3QgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6
OlBhaW50RGVmaW5pdGlvbiYgZGVmaW5pdGlvbiwgY29uc3QgRmxvYXRTaXplJiBzaXplKQogICAg
IDogbV9wYWludENhbGxiYWNrKGRlZmluaXRpb24ucGFpbnRDYWxsYmFjay5nZXQoKSkKIHsKICAg
ICBzZXRDb250YWluZXJTaXplKHNpemUpOwpAQCAtNjMsNyArNjMsNiBAQCBJbWFnZURyYXdSZXN1
bHQgQ3VzdG9tUGFpbnRJbWFnZTo6ZG9DdXN0b21QYWludChHcmFwaGljc0NvbnRleHQmIGRlc3RD
b250ZXh0LCBjbwogICAgIGlmIChyZXN1bHQudHlwZSgpICE9IENhbGxiYWNrUmVzdWx0VHlwZTo6
U3VjY2VzcykKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKIAot
ICAgIFVOVVNFRF9QQVJBTShkZXN0Q29udGV4dCk7CiAgICAgYXV0byBpbWFnZSA9IGNhbnZhcy0+
Y29waWVkSW1hZ2UoKTsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3
UmVzdWx0OjpEaWROb3RoaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5oCmluZGV4IDAzYWIyYTg4ODY4M2EzZjUzODcxZGFjNWI1
MWY4OTE5ZGE0YzRkZDIuLmViNmE4MWJhZTI0ZDExN2UwY2QzNDg4ZGM0N2E3NmU2MmIwNDIwY2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50
SW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWlu
dEltYWdlLmgKQEAgLTI3LDggKzI3LDggQEAKIAogI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJ
KQogCi0jaW5jbHVkZSAiQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJH
ZW5lcmF0ZWRJbWFnZS5oIgorI2luY2x1ZGUgIlBhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBJbWFnZUJ1ZmZl
cjsKIAogY2xhc3MgQ3VzdG9tUGFpbnRJbWFnZSBmaW5hbCA6IHB1YmxpYyBHZW5lcmF0ZWRJbWFn
ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDdXN0b21QYWludEltYWdlPiBjcmVhdGUoY29u
c3QgQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OlBhaW50RGVmaW5pdGlvbiYgZGVmaW5pdGlv
biwgY29uc3QgRmxvYXRTaXplJiBzaXplKQorICAgIHN0YXRpYyBSZWY8Q3VzdG9tUGFpbnRJbWFn
ZT4gY3JlYXRlKGNvbnN0IFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb24m
IGRlZmluaXRpb24sIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKICAgICB7CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEN1c3RvbVBhaW50SW1hZ2UoZGVmaW5pdGlvbiwgc2l6ZSkpOwogICAg
IH0KQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNDdXN0b21QYWludEltYWdl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiBwcml2YXRlOgotICAgIEN1c3Rv
bVBhaW50SW1hZ2UoY29uc3QgQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OlBhaW50RGVmaW5p
dGlvbiYsIGNvbnN0IEZsb2F0U2l6ZSYpOworICAgIEN1c3RvbVBhaW50SW1hZ2UoY29uc3QgUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGU6OlBhaW50RGVmaW5pdGlvbiYsIGNvbnN0IEZsb2F0U2l6ZSYp
OwogCiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRvQ3VzdG9tUGFpbnQoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRTaXplJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRz
L1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMDEzYjRhYjk1YWEzNDdlZTlh
OWEwZTk0YTBhMzJiNzQyMjM2MzIyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBAIC0wLDAgKzEsNTUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKworI2lmIEVOQUJM
RShDU1NfUEFJTlRJTkdfQVBJKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxQYWludFdv
cmtsZXRHbG9iYWxTY29wZT4gUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OmNyZWF0ZShXZWFrUHRy
PERvY3VtZW50PiYmIGRvY3VtZW50LCBTY3JpcHRTb3VyY2VDb2RlJiYgY29kZSkKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBQYWludFdvcmtsZXRHbG9iYWxTY29wZShXVEZNb3ZlKGRvY3Vt
ZW50KSwgV1RGTW92ZShjb2RlKSkpOworfQorCitQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6UGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGUoV2Vha1B0cjxEb2N1bWVudD4mJiBkb2N1bWVudCwgU2NyaXB0
U291cmNlQ29kZSYmIGNvZGUpCisgICAgOiBXb3JrbGV0R2xvYmFsU2NvcGUoV1RGTW92ZShkb2N1
bWVudCksIFdURk1vdmUoY29kZSkpCit7Cit9CisKK2RvdWJsZSBQYWludFdvcmtsZXRHbG9iYWxT
Y29wZTo6ZGV2aWNlUGl4ZWxSYXRpbygpCit7CisgICAgcmV0dXJuIDEuMDsKK30KKworRXhjZXB0
aW9uT3I8dm9pZD4gUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZFJlZ2lzdGVyZWRQYWludCgp
Cit7CisgICAgcmV0dXJuIHsgfTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjgyYzIxMDNkN2EzNjQ3Yjc4MTY3MDlkNGNlOTRhNzY5MDlmODEzZGYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRH
bG9iYWxTY29wZS5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShDU1NfUEFJTlRJ
TkdfQVBJKQorCisjaW5jbHVkZSAiQ1NTUGFpbnRDYWxsYmFjay5oIgorI2luY2x1ZGUgIldvcmts
ZXRHbG9iYWxTY29wZS5oIgorCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEpTVmFsdWU7CisKK30g
Ly8gbmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBhaW50V29y
a2xldEdsb2JhbFNjb3BlIDogcHVibGljIFdvcmtsZXRHbG9iYWxTY29wZSB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFJlZjxQYWludFdvcmtsZXRHbG9iYWxTY29wZT4gY3JlYXRlKFdlYWtQdHI8RG9j
dW1lbnQ+JiYsIFNjcmlwdFNvdXJjZUNvZGUmJik7CisKKyAgICBib29sIGlzUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisKKyAgICBFeGNlcHRp
b25Pcjx2b2lkPiBhZGRSZWdpc3RlcmVkUGFpbnQoKTsKKyAgICBkb3VibGUgZGV2aWNlUGl4ZWxS
YXRpbygpOworCisgICAgc3RydWN0IFBhaW50RGVmaW5pdGlvbiB7CisgICAgICAgIGNvbnN0IEF0
b21pY1N0cmluZyBuYW1lOworICAgICAgICBjb25zdCBSZWY8Q1NTUGFpbnRDYWxsYmFjaz4gcGFp
bnRDYWxsYmFjazsKKyAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4gaW5wdXRQcm9wZXJ0aWVz
OworICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiBpbnB1dEFyZ3VtZW50czsKKyAgICB9Owor
CisgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxQYWludERlZmluaXRpb24+PiYg
cGFpbnREZWZpbml0aW9uTWFwKCkgeyByZXR1cm4gbV9wYWludERlZmluaXRpb25NYXA7IH0KKwor
cHJpdmF0ZToKKyAgICBQYWludFdvcmtsZXRHbG9iYWxTY29wZShXZWFrUHRyPERvY3VtZW50PiYm
LCBTY3JpcHRTb3VyY2VDb2RlJiYpOworCisgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVl
X3B0cjxQYWludERlZmluaXRpb24+PiBtX3BhaW50RGVmaW5pdGlvbk1hcDsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaWRsIGIvU291cmNlL1dlYkNvcmUvd29ya2xl
dHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1NDljY2YwNDNiZTA0
ZGI2OTFkZWQ3ZjYwYzRlZTVlYTdhY2NkYjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5pZGwKQEAgLTAsMCArMSwzOSBA
QAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisqLworCitbCisgICAgRXhwb3NlZD1QYWludFdvcmtsZXQsCisg
ICAgRW5hYmxlZEF0UnVudGltZT1DU1NQYWludGluZ0FQSSwKKyAgICBDb25kaXRpb25hbD1DU1Nf
UEFJTlRJTkdfQVBJLAorICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uLAorICAgIEpTR2VuZXJhdGVU
b05hdGl2ZU9iamVjdCwKKyAgICBJbXBsaWNpdFRoaXMsCisgICAgSXNJbW11dGFibGVQcm90b3R5
cGVFeG90aWNPYmplY3QsCisgICAgSXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3RPblBy
b3RvdHlwZSwKKyAgICBHbG9iYWw9KFdvcmtsZXQsUGFpbnRXb3JrbGV0KSwKK10gaW50ZXJmYWNl
IFBhaW50V29ya2xldEdsb2JhbFNjb3BlIDogV29ya2xldEdsb2JhbFNjb3BlIHsKKyAgICBbQ3Vz
dG9tLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCByZWdpc3RlclBhaW50KERPTVN0cmluZyBuYW1l
LCBGdW5jdGlvbiBwYWludEN0b3IpOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3RyaWN0
ZWQgZG91YmxlIGRldmljZVBpeGVsUmF0aW87Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2xldHMvV29ya2xldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43N2ZhYzVlNTBiYWVmMTk1OTY5ZTk4ODc3M2ZmZDQwYjc4NDE0NGMz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5jcHAK
QEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXb3JrbGV0LmgiCisKKyNpZiBF
TkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVk
ZSAiUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2Rl
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFdvcmtsZXQ+IFdvcmtsZXQ6OmNyZWF0
ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV29ya2xldCgpKTsKK30KKworCitXb3Jr
bGV0OjpXb3JrbGV0KCkKK3sKK30KKwordm9pZCBXb3JrbGV0OjphZGRNb2R1bGUoRG9jdW1lbnQm
IGRvY3VtZW50LCBTdHJpbmcgbW9kdWxlVVJMKQoreworICAgIGF1dG8gY29udGV4dCA9IFBhaW50
V29ya2xldEdsb2JhbFNjb3BlOjpjcmVhdGUobWFrZVdlYWtQdHIoZG9jdW1lbnQpLCBTY3JpcHRT
b3VyY2VDb2RlKG1vZHVsZVVSTCkpOworICAgIGNvbnRleHQtPmV2YWx1YXRlKCk7CisgICAgZG9j
dW1lbnQuc2V0Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoV1RGTW92ZShjb250ZXh0KSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3Jr
bGV0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNjEzZjQ5NDcwNDQ0ZWJmNDdhOTRkNGRmNzA2NzRlYjcwZGNkMmI5
NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQuaApA
QCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgRG9jdW1lbnQ7CisKK2NsYXNzIFdvcmtsZXQgOiBwdWJs
aWMgUmVmQ291bnRlZDxXb3JrbGV0PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxXb3JrbGV0
PiBjcmVhdGUoKTsKKyAgICAKKyAgICB2b2lkIGFkZE1vZHVsZShEb2N1bWVudCYsIFN0cmluZyBt
b2R1bGVVUkwpOworCitwcm90ZWN0ZWQ6CisgICAgV29ya2xldCgpOworCit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmts
ZXRzL1dvcmtsZXQuaWRsIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5pZGwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTc0Y2M5MTM4MDBiNzllZTcwYTVjNDQ2NzllZjE1ZmU3ZWM4NDlmYQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQuaWRsCkBAIC0wLDAg
KzEsMzMgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworWworICAgIEVuYWJsZWRBdFJ1bnRpbWU9
Q1NTUGFpbnRpbmdBUEksCisgICAgQ29uZGl0aW9uYWw9Q1NTX1BBSU5USU5HX0FQSSwKKyAgICBJ
bXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAorICAgIEdsb2JhbD1Xb3JrbGV0LAorXSBpbnRlcmZh
Y2UgV29ya2xldCB7CisgICAgW0NhbGxXaXRoPURvY3VtZW50XSB2b2lkIGFkZE1vZHVsZShVU1ZT
dHJpbmcgbW9kdWxlVVJMLyosIG9wdGlvbmFsIFdvcmtsZXRPcHRpb25zIG9wdGlvbnMqLyk7Cit9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldENvbnNvbGVDbGll
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjg5NTA2YjllMzkzMTM0Y2VjMzM2MzZjYTY2ZjFjNWRjMjRiODgxODIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNs
aWVudC5jcHAKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJXb3JrbGV0Q29uc29sZUNsaWVudC5oIgorCisjaWYgRU5BQkxFKENTU19Q
QUlOVElOR19BUEkpCisKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlTWVzc2FnZS5oPgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1NjcmlwdEFyZ3VtZW50cy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Nj
cmlwdENhbGxTdGFjay5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdENhbGxTdGFj
a0ZhY3RvcnkuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNwYWNlIEluc3Bl
Y3RvcjsKKworV29ya2xldENvbnNvbGVDbGllbnQ6OldvcmtsZXRDb25zb2xlQ2xpZW50KFdvcmts
ZXRHbG9iYWxTY29wZSYgd29ya2xldEdsb2JhbFNjb3BlKQorICAgIDogbV93b3JrbGV0R2xvYmFs
U2NvcGUod29ya2xldEdsb2JhbFNjb3BlKQoreworfQorCitXb3JrbGV0Q29uc29sZUNsaWVudDo6
fldvcmtsZXRDb25zb2xlQ2xpZW50KCkgPSBkZWZhdWx0OworCit2b2lkIFdvcmtsZXRDb25zb2xl
Q2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdl
TGV2ZWwgbGV2ZWwsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRB
cmd1bWVudHM+JiYgYXJndW1lbnRzKQoreworICAgIFN0cmluZyBtZXNzYWdlVGV4dDsKKyAgICBh
cmd1bWVudHMtPmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyhtZXNzYWdlVGV4dCk7CisgICAgYXV0
byBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihN
ZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2FnZVRleHQsIFdURk1v
dmUoYXJndW1lbnRzKSwgZXhlYyk7CisgICAgbV93b3JrbGV0R2xvYmFsU2NvcGUuYWRkQ29uc29s
ZU1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7Cit9CisKK3ZvaWQgV29ya2xldENvbnNvbGVDbGll
bnQ6OmNvdW50KEpTQzo6RXhlY1N0YXRlKiwgUmVmPFNjcmlwdEFyZ3VtZW50cz4mJikgeyB9CisK
K3ZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6OnRpbWUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBT
dHJpbmcmKSB7IH0KK3ZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6OnRpbWVFbmQoSlNDOjpFeGVj
U3RhdGUqLCBjb25zdCBTdHJpbmcmKSB7IH0KKwordm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6
cHJvZmlsZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpIHsgfQordm9pZCBXb3JrbGV0
Q29uc29sZUNsaWVudDo6cHJvZmlsZUVuZChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYp
IHsgfQorCit2b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50Ojp0YWtlSGVhcFNuYXBzaG90KEpTQzo6
RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJikgeyB9Cit2b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50
Ojp0aW1lU3RhbXAoSlNDOjpFeGVjU3RhdGUqLCBSZWY8U2NyaXB0QXJndW1lbnRzPiYmKSB7IH0K
Kwordm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6cmVjb3JkKEpTQzo6RXhlY1N0YXRlKiwgUmVm
PFNjcmlwdEFyZ3VtZW50cz4mJikgeyB9Cit2b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50OjpyZWNv
cmRFbmQoSlNDOjpFeGVjU3RhdGUqLCBSZWY8U2NyaXB0QXJndW1lbnRzPiYmKSB7IH0KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMv
V29ya2xldENvbnNvbGVDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MGUyNzRlZjczZDEyM2RmZTc4Nzgw
OTJhOGZhMzUxNjk0Mzg1NDQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKworI2luY2x1
ZGUgIldvcmtsZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNv
bGVDbGllbnQuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgSlNDIHsK
K2NsYXNzIEV4ZWNTdGF0ZTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXb3Jr
bGV0Q29uc29sZUNsaWVudCBmaW5hbCA6IHB1YmxpYyBKU0M6OkNvbnNvbGVDbGllbnQgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFdvcmtsZXRD
b25zb2xlQ2xpZW50KFdvcmtsZXRHbG9iYWxTY29wZSYpOworICAgIHZpcnR1YWwgfldvcmtsZXRD
b25zb2xlQ2xpZW50KCk7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIG1lc3NhZ2VXaXRoVHlwZUFu
ZExldmVsKE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIEpTQzo6RXhlY1N0YXRlKiwgUmVmPElu
c3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvdW50KEpT
Qzo6RXhlY1N0YXRlKiwgUmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHByb2ZpbGUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHRpdGxl
KSBvdmVycmlkZTsKKyAgICB2b2lkIHByb2ZpbGVFbmQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBT
dHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKKyAgICB2b2lkIHRha2VIZWFwU25hcHNob3QoSlNDOjpF
eGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKKyAgICB2b2lkIHRpbWUo
SlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKKyAgICB2b2lk
IHRpbWVFbmQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsK
KyAgICB2b2lkIHRpbWVTdGFtcChKU0M6OkV4ZWNTdGF0ZSosIFJlZjxJbnNwZWN0b3I6OlNjcmlw
dEFyZ3VtZW50cz4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCByZWNvcmQoSlNDOjpFeGVjU3RhdGUq
LCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYpIG92ZXJyaWRlOworICAgIHZvaWQg
cmVjb3JkRW5kKEpTQzo6RXhlY1N0YXRlKiwgUmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRz
PiYmKSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBXb3JrbGV0R2xvYmFsU2NvcGUmIG1fd29y
a2xldEdsb2JhbFNjb3BlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43MjViNmQzNzlhNGFlODA5MjVkZmQzYmUwMTkwMTJjNjg5ODlkZGJkCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcApA
QCAtMCwwICsxLDEyNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV29ya2xldEdsb2JhbFNj
b3BlLmgiCisKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKworI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaCIKKyNpbmNsdWRlICJKU1dvcmtsZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIlBh
Z2VDb25zb2xlQ2xpZW50LmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5Qb2xpY3kuaCIKKyNp
bmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgi
CisKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FeGNlcHRpb24uaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0xvY2suaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxs
U3RhY2suaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNwYWNlIEluc3BlY3Rv
cjsKKworV29ya2xldEdsb2JhbFNjb3BlOjpXb3JrbGV0R2xvYmFsU2NvcGUoV2Vha1B0cjxEb2N1
bWVudD4mJiBkb2N1bWVudCwgU2NyaXB0U291cmNlQ29kZSYmIGNvZGUpCisgICAgOiBtX3Nlc3Np
b25JRChkb2N1bWVudC0+c2Vzc2lvbklEKCkpCisgICAgLCBtX3NjcmlwdChzdGQ6Om1ha2VfdW5p
cXVlPFdvcmtsZXRTY3JpcHRDb250cm9sbGVyPih0aGlzKSkKKyAgICAsIG1fZXZlbnRRdWV1ZSgq
dGhpcykKKyAgICAsIG1fdG9wT3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKSkK
KyAgICAsIG1fZG9jdW1lbnQoV1RGTW92ZShkb2N1bWVudCkpCisgICAgLCBtX2NvZGUoV1RGTW92
ZShjb2RlKSkKK3sKKyAgICBBU1NFUlQobV9kb2N1bWVudCk7CisgICAgRnJhbWUqIGZyYW1lID0g
bV9kb2N1bWVudC0+ZnJhbWUoKTsKKyAgICBtX2pzUnVudGltZUZsYWdzID0gKGZyYW1lID8gZnJh
bWUtPnNldHRpbmdzKCkuamF2YVNjcmlwdFJ1bnRpbWVGbGFncygpIDogSlNDOjpSdW50aW1lRmxh
Z3MoKSk7CisgICAgQVNTRVJUKG1fZG9jdW1lbnQtPnBhZ2UoKSk7CisKKyAgICBzZXRTZWN1cml0
eU9yaWdpblBvbGljeShTZWN1cml0eU9yaWdpblBvbGljeTo6Y3JlYXRlKG1fZG9jdW1lbnQtPnNl
Y3VyaXR5T3JpZ2luKCkpKTsKKyAgICBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3koc3RkOjptYWtl
X3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IGNvZGUudXJsKCkgfSwgKnRoaXMp
KTsKK30KKworV29ya2xldEdsb2JhbFNjb3BlOjp+V29ya2xldEdsb2JhbFNjb3BlKCkKK3sKKyAg
ICByZW1vdmVGcm9tQ29udGV4dHNNYXAoKTsKKyAgICBtX3NjcmlwdC0+d29ya2xldEdsb2JhbFNj
b3BlV3JhcHBlcigpLT5zZXRDb25zb2xlQ2xpZW50KG51bGxwdHIpOworfQorCit2b2lkIFdvcmts
ZXRHbG9iYWxTY29wZTo6ZXZhbHVhdGUoKQoreworICAgIG1fc2NyaXB0LT5ldmFsdWF0ZShtX2Nv
ZGUpOworfQorCitib29sIFdvcmtsZXRHbG9iYWxTY29wZTo6aXNKU0V4ZWN1dGlvbkZvcmJpZGRl
bigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2NyaXB0LT5pc0V4ZWN1dGlvbkZvcmJpZGRlbigp
OworfQorCit2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6ZGlzYWJsZUV2YWwoY29uc3QgU3RyaW5n
JiBlcnJvck1lc3NhZ2UpCit7CisgICAgbV9zY3JpcHQtPmRpc2FibGVFdmFsKGVycm9yTWVzc2Fn
ZSk7Cit9CisKK3ZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpkaXNhYmxlV2ViQXNzZW1ibHkoY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCit7CisgICAgbV9zY3JpcHQtPmRpc2FibGVXZWJBc3Nl
bWJseShlcnJvck1lc3NhZ2UpOworfQorCitVUkwgV29ya2xldEdsb2JhbFNjb3BlOjpjb21wbGV0
ZVVSTChjb25zdCBTdHJpbmcmIHVybCkgY29uc3QKK3sKKyAgICAvLyBBbHdheXMgcmV0dXJuIGEg
bnVsbCBVUkwgd2hlbiBwYXNzZWQgYSBudWxsIHN0cmluZy4KKyAgICAvLyBGSVhNRTogU2hvdWxk
IHdlIGNoYW5nZSB0aGUgVVJMIGNvbnN0cnVjdG9yIHRvIGhhdmUgdGhpcyBiZWhhdmlvcj8KKyAg
ICBpZiAodXJsLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gVVJMKCk7CisgICAgLy8gQWx3YXlz
IHVzZSBVVEYtOCBpbiBXb3JrZXJzLgorICAgIHJldHVybiBVUkwobV9jb2RlLnVybCgpLCB1cmwp
OworfQorCit2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6bG9nRXhjZXB0aW9uVG9Db25zb2xlKGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgaW50IGxp
bmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+JiYgc3Rh
Y2spCit7CisgICAgQVNTRVJUKG1fZG9jdW1lbnQpOworICAgIG1fZG9jdW1lbnQtPmxvZ0V4Y2Vw
dGlvblRvQ29uc29sZShlcnJvck1lc3NhZ2UsIHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1u
TnVtYmVyLCBXVEZNb3ZlKHN0YWNrKSk7Cit9CisKK3ZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjph
ZGRDb25zb2xlTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2Fn
ZT4mJiBtZXNzYWdlKQoreworICAgIEFTU0VSVChtX2RvY3VtZW50KTsKKyAgICBtX2RvY3VtZW50
LT5hZGRDb25zb2xlTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpKTsKK30KKwordm9pZCBXb3JrbGV0
R2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNz
YWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbG9uZyByZXF1
ZXN0SWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQobV9kb2N1bWVudCk7CisgICAgbV9kb2N1bWVu
dC0+YWRkQ29uc29sZU1lc3NhZ2Uoc291cmNlLCBsZXZlbCwgbWVzc2FnZSwgcmVxdWVzdElkZW50
aWZpZXIpOworfQorCit2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6YWRkTWVzc2FnZShNZXNzYWdl
U291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2VU
ZXh0LCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWdu
ZWQgY29sdW1uTnVtYmVyLCBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiYmIGNhbGxTdGFjaywgSlND
OjpFeGVjU3RhdGUqIHN0YXRlLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQorewor
ICAgIEFTU0VSVChtX2RvY3VtZW50KTsKKyAgICBtX2RvY3VtZW50LT5hZGRNZXNzYWdlKHNvdXJj
ZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
ciwgV1RGTW92ZShjYWxsU3RhY2spLCBzdGF0ZSwgcmVxdWVzdElkZW50aWZpZXIpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMv
V29ya2xldEdsb2JhbFNjb3BlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDUzMGQwMTI0OGMzMDQzZTBlNTNlM2I1
NDc3MTVjZGJjNGM3N2QzNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmts
ZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5oCkBAIC0wLDAgKzEsMTM0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKENTU19QQUlOVElOR19BUEkpCisKKyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2lu
Y2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IgorI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKKyNpbmNsdWRlICJTdXBwbGVtZW50YWJs
ZS5oIgorI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgIldvcmtlckV2ZW50UXVldWUuaCIKKwor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVNZXNzYWdlLmg+CisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvUnVudGltZUZsYWdzLmg+CisjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgor
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFdv
cmtsZXRTY3JpcHRDb250cm9sbGVyOworY2xhc3MgU2NyaXB0U291cmNlQ29kZTsKKworY2xhc3Mg
V29ya2xldEdsb2JhbFNjb3BlIDogcHVibGljIFJlZkNvdW50ZWQ8V29ya2xldEdsb2JhbFNjb3Bl
PiwgcHVibGljIFN1cHBsZW1lbnRhYmxlPFdvcmtsZXRHbG9iYWxTY29wZT4sIHB1YmxpYyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSB7Citw
dWJsaWM6CisgICAgdmlydHVhbCB+V29ya2xldEdsb2JhbFNjb3BlKCk7CisKKyAgICB2aXJ0dWFs
IGJvb2wgaXNQYWludFdvcmtsZXRHbG9iYWxTY29wZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CisKKyAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29kZS51cmwo
KTsgfQorICAgIFN0cmluZyBvcmlnaW4oKSBjb25zdCBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOyByZXR1cm4gIiI7IH0KKyAgICBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIoKSBjb25zdCB7
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisKKyNpZiBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkKKyAgICBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSog
aWRiQ29ubmVjdGlvblByb3h5KCkgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJu
IG51bGxwdHI7IH0KKyNlbmRpZgorCisgICAgdm9pZCBwb3N0VGFzayhUYXNrJiYpIGZpbmFsIHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKworICAgIHZvaWQgZXZhbHVhdGUoKTsKKworICAgIHVz
aW5nIFJlZkNvdW50ZWQ6OnJlZjsKKyAgICB1c2luZyBSZWZDb3VudGVkOjpkZXJlZjsKKworICAg
IFdvcmtsZXRTY3JpcHRDb250cm9sbGVyKiBzY3JpcHQoKSB7IHJldHVybiBtX3NjcmlwdC5nZXQo
KTsgfQorCisgICAgdm9pZCBhZGRDb25zb2xlTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVj
dG9yOjpDb25zb2xlTWVzc2FnZT4mJikgZmluYWw7CisKKyAgICBib29sIGlzSlNFeGVjdXRpb25G
b3JiaWRkZW4oKSBjb25zdCBmaW5hbDsKKyAgICBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luKCkg
Y29uc3QgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIG1fdG9wT3JpZ2luLmdl
dCgpOyB9CisKKyAgICBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIoKSBmaW5hbCB7IEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gbnVsbHB0cjsgfQorCisgICAgYm9vbCBpc0NvbnRl
eHRUaHJlYWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBpc1NlY3Vy
ZUNvbnRleHQoKSBjb25zdCBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFs
c2U7IH0KKworICAgIEpTQzo6UnVudGltZUZsYWdzIGpzUnVudGltZUZsYWdzKCkgY29uc3QgeyBy
ZXR1cm4gbV9qc1J1bnRpbWVGbGFnczsgfQorCitwcm90ZWN0ZWQ6CisgICAgV29ya2xldEdsb2Jh
bFNjb3BlKFdlYWtQdHI8RG9jdW1lbnQ+JiYsIFNjcmlwdFNvdXJjZUNvZGUmJik7CisKK3ByaXZh
dGU6CisgICAgdm9pZCByZWZTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgZmluYWwgeyByZWYoKTsg
fQorICAgIHZvaWQgZGVyZWZTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgZmluYWwgeyBkZXJlZigp
OyB9CisKKyAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQorICAgIHZv
aWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQorCisgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIGNvbnN0X2Nhc3Q8V29ya2xldEdsb2JhbFNjb3BlKj4odGhpcyk7IH0KKyAgICBFdmVudFRh
cmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IFdvcmtsZXRHbG9iYWxTY29wZUV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQorCisgICAgYm9v
bCBpc1dvcmtsZXRHbG9iYWxTY29wZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKwor
ICAgIHZvaWQgbG9nRXhjZXB0aW9uVG9Db25zb2xlKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
LCBjb25zdCBTdHJpbmcmLCBpbnQsIGludCwgUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0
YWNrPiYmKSBmaW5hbDsKKyAgICB2b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2Fn
ZUxldmVsLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCwgdW5zaWduZWQs
IFJlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFjaz4mJiwgSlNDOjpFeGVjU3RhdGUqLCB1
bnNpZ25lZCBsb25nKSBmaW5hbDsKKyAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VT
b3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgbG9uZykgZmluYWw7
CisKKyAgICBFdmVudFRhcmdldCogZXJyb3JFdmVudFRhcmdldCgpIGZpbmFsIHsgcmV0dXJuIHRo
aXM7IH0KKyAgICBFdmVudFF1ZXVlJiBldmVudFF1ZXVlKCkgY29uc3QgZmluYWwgeyBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgcmV0dXJuIG1fZXZlbnRRdWV1ZTsgfQorCisjaWYgRU5BQkxFKFNVQlRM
RV9DUllQVE8pCisgICAgYm9vbCB3cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYs
IFZlY3Rvcjx1aW50OF90PiYpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBm
YWxzZTsgfQorICAgIGJvb2wgdW53cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYs
IFZlY3Rvcjx1aW50OF90PiYpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBm
YWxzZTsgfQorI2VuZGlmCisgICAgVVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYpIGNvbnN0
IGZpbmFsOworICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fc2Vzc2lvbklEOyB9CisgICAgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBVUkwmKSBjb25z
dCBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gIiI7IH0KKyAgICB2b2lkIGRp
c2FibGVFdmFsKGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgZGlzYWJsZVdlYkFzc2Vt
Ymx5KGNvbnN0IFN0cmluZyYpIGZpbmFsOworCisgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9u
SUQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdvcmtsZXRTY3JpcHRDb250cm9sbGVyPiBtX3Njcmlw
dDsKKworICAgIC8vIEZJWE1FOiBOb25lIG9mIHRoZXNlIGFyZSBpbXBsZW1lbnRlZCBwcm9wZXJs
eSwgdGhpcyBqdXN0IHNhdGlzZmllcyB0aGUgY29tcGlsZXIuCisgICAgbXV0YWJsZSBXb3JrZXJF
dmVudFF1ZXVlIG1fZXZlbnRRdWV1ZTsKKyAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IG1fdG9wT3Jp
Z2luOworICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CisKKyAgICBKU0M6OlJ1bnRpbWVGbGFncyBt
X2pzUnVudGltZUZsYWdzOworICAgIFdlYWtQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CisKKyAg
ICBTY3JpcHRTb3VyY2VDb2RlIG1fY29kZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2Nv
cGUpCitzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkgeyByZXR1cm4gY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpOyB9
CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3NTlmMGNlMWQx
NmY4NjkxODYwMTI3NzZmMGRiMTZiNjFiYWE0NzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaWRsCkBAIC0wLDAgKzEsMzcgQEAK
Ky8qCisqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorKi8KKworWworICAgIEN1c3RvbVByb3h5VG9KU09iamVjdCwKKyAg
ICBFeHBvc2VkPVdvcmtsZXQsCisgICAgRW5hYmxlZEF0UnVudGltZT1DU1NQYWludGluZ0FQSSwK
KyAgICBDb25kaXRpb25hbD1DU1NfUEFJTlRJTkdfQVBJLAorICAgIEpTTGVnYWN5UGFyZW50PUpT
V29ya2xldEdsb2JhbFNjb3BlQmFzZSwKKyAgICBJbXBsaWNpdFRoaXMsCisgICAgSXNJbW11dGFi
bGVQcm90b3R5cGVFeG90aWNPYmplY3QsCisgICAgSXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNP
YmplY3RPblByb3RvdHlwZSwKKyAgICBHbG9iYWw9V29ya2xldCwKK10gaW50ZXJmYWNlIFdvcmts
ZXRHbG9iYWxTY29wZSA6IEV2ZW50VGFyZ2V0IHsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWE4Y2Mz
Y2Q4ZmQ4NGI3ZDc3M2U3ZWQ5MjU1MzYyN2JhYWY0OGY1MwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMCww
ICsxLDE5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5o
IgorCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisKKyNpbmNsdWRlICJKU0RPTUJpbmRp
bmcuaCIKKyNpbmNsdWRlICJKU0V2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiSlNFeGVjU3RhdGUu
aCIKKyNpbmNsdWRlICJKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiU2Ny
aXB0U291cmNlQ29kZS5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKKyNpbmNs
dWRlICJXb3JrbGV0Q29uc29sZUNsaWVudC5oIgorCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
Q29tcGxldGlvbi5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0V4Y2VwdGlvbi5oPgorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0V4Y2VwdGlvbkhlbHBlcnMuaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0xvY2suaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9taXNlRGVmZXJyZWRUaW1l
ci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworV29ya2xldFNjcmlwdENvbnRy
b2xsZXI6OldvcmtsZXRTY3JpcHRDb250cm9sbGVyKFdvcmtsZXRHbG9iYWxTY29wZSogd29ya2xl
dEdsb2JhbFNjb3BlKQorICAgIDogbV92bShWTTo6Y3JlYXRlKCkpCisgICAgLCBtX3dvcmtsZXRH
bG9iYWxTY29wZSh3b3JrbGV0R2xvYmFsU2NvcGUpCisgICAgLCBtX3dvcmtsZXRHbG9iYWxTY29w
ZVdyYXBwZXIoKm1fdm0pCit7CisgICAgbV92bS0+aGVhcC5hY3F1aXJlQWNjZXNzKCk7IC8vIEl0
J3Mgbm90IGNsZWFyIHRoYXQgd2UgaGF2ZSBnb29kIGRpc2NpcGxpbmUgZm9yIGhlYXAgYWNjZXNz
LCBzbyB0dXJuIGl0IG9uIHBlcm1hbmVudGx5LgorICAgIEpTVk1DbGllbnREYXRhOjppbml0Tm9y
bWFsV29ybGQobV92bS5nZXQoKSk7Cit9CisKK1dvcmtsZXRTY3JpcHRDb250cm9sbGVyOjp+V29y
a2xldFNjcmlwdENvbnRyb2xsZXIoKQoreworICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKCkpOwor
ICAgIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci5jbGVhcigpOworICAgIG1fdm0gPSBudWxs
cHRyOworICAgIGlmIChtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpIHsKKyAgICAgICAgbV93
b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5jbGVhckRPTUd1YXJkZWRPYmplY3RzKCk7CisgICAg
ICAgIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+c2V0Q29uc29sZUNsaWVudChudWxscHRy
KTsKKyAgICAgICAgbV9jb25zb2xlQ2xpZW50ID0gbnVsbHB0cjsKKyAgICB9Cit9CisKK3ZvaWQg
V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmZvcmJpZEV4ZWN1dGlvbigpCit7CisgICAgQVNTRVJU
KG1fd29ya2xldEdsb2JhbFNjb3BlLT5pc0NvbnRleHRUaHJlYWQoKSk7CisgICAgbV9leGVjdXRp
b25Gb3JiaWRkZW4gPSB0cnVlOworfQorCitib29sIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpp
c0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fd29ya2xldEdsb2Jh
bFNjb3BlLT5pc0NvbnRleHRUaHJlYWQoKSk7CisgICAgcmV0dXJuIG1fZXhlY3V0aW9uRm9yYmlk
ZGVuOworfQorCit2b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpkaXNhYmxlRXZhbChjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKK3sKKyAgICBpbml0U2NyaXB0SWZOZWVkZWQoKTsKKyAg
ICBKU0xvY2tIb2xkZXIgbG9jayB7IHZtKCkgfTsKKworICAgIG1fd29ya2xldEdsb2JhbFNjb3Bl
V3JhcHBlci0+c2V0RXZhbEVuYWJsZWQoZmFsc2UsIGVycm9yTWVzc2FnZSk7Cit9CisKK3ZvaWQg
V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmRpc2FibGVXZWJBc3NlbWJseShjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSkKK3sKKyAgICBpbml0U2NyaXB0SWZOZWVkZWQoKTsKKyAgICBKU0xvY2tI
b2xkZXIgbG9jayB7IHZtKCkgfTsKKworICAgIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+
c2V0V2ViQXNzZW1ibHlFbmFibGVkKGZhbHNlLCBlcnJvck1lc3NhZ2UpOworfQorCisKK3RlbXBs
YXRlPHR5cGVuYW1lIEpTR2xvYmFsU2NvcGVQcm90b3R5cGUsIHR5cGVuYW1lIEpTR2xvYmFsU2Nv
cGUsIHR5cGVuYW1lIEdsb2JhbFNjb3BlPgordm9pZCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6
aW5pdFNjcmlwdFdpdGhTdWJjbGFzcygpCit7CisgICAgQVNTRVJUKCFtX3dvcmtsZXRHbG9iYWxT
Y29wZVdyYXBwZXIpOworCisgICAgSlNMb2NrSG9sZGVyIGxvY2sobV92bS5nZXQoKSk7CisKKyAg
ICAvLyBFeHBsaWNpdGx5IHByb3RlY3QgdGhlIGdsb2JhbCBvYmplY3QncyBwcm90b3R5cGUgc28g
aXQgaXNuJ3QgY29sbGVjdGVkCisgICAgLy8gd2hlbiB3ZSBhbGxvY2F0ZSB0aGUgZ2xvYmFsIG9i
amVjdC4gKE9uY2UgdGhlIGdsb2JhbCBvYmplY3QgaXMgZnVsbHkKKyAgICAvLyBjb25zdHJ1Y3Rl
ZCwgaXQgY2FuIG1hcmsgaXRzIG93biBwcm90b3R5cGUuKQorICAgIFN0cnVjdHVyZSogY29udGV4
dFByb3RvdHlwZVN0cnVjdHVyZSA9IEpTR2xvYmFsU2NvcGVQcm90b3R5cGU6OmNyZWF0ZVN0cnVj
dHVyZSgqbV92bSwgbnVsbHB0ciwganNOdWxsKCkpOworICAgIFN0cm9uZzxKU0dsb2JhbFNjb3Bl
UHJvdG90eXBlPiBjb250ZXh0UHJvdG90eXBlKCptX3ZtLCBKU0dsb2JhbFNjb3BlUHJvdG90eXBl
OjpjcmVhdGUoKm1fdm0sIG51bGxwdHIsIGNvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUpKTsKKyAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEpTR2xvYmFsU2NvcGU6OmNyZWF0ZVN0cnVjdHVyZSgq
bV92bSwgbnVsbHB0ciwgY29udGV4dFByb3RvdHlwZS5nZXQoKSk7CisgICAgYXV0byogcHJveHlT
dHJ1Y3R1cmUgPSBKU1Byb3h5OjpjcmVhdGVTdHJ1Y3R1cmUoKm1fdm0sIG51bGxwdHIsIGpzTnVs
bCgpLCBQdXJlRm9yd2FyZGluZ1Byb3h5VHlwZSk7CisgICAgYXV0byogcHJveHkgPSBKU1Byb3h5
OjpjcmVhdGUoKm1fdm0sIHByb3h5U3RydWN0dXJlKTsKKworICAgIG1fd29ya2xldEdsb2JhbFNj
b3BlV3JhcHBlci5zZXQoKm1fdm0sIEpTR2xvYmFsU2NvcGU6OmNyZWF0ZSgqbV92bSwgc3RydWN0
dXJlLCBzdGF0aWNfY2FzdDxHbG9iYWxTY29wZSY+KCptX3dvcmtsZXRHbG9iYWxTY29wZSksIHBy
b3h5KSk7CisgICAgY29udGV4dFByb3RvdHlwZVN0cnVjdHVyZS0+c2V0R2xvYmFsT2JqZWN0KCpt
X3ZtLCBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpOworICAgIEFTU0VSVChzdHJ1
Y3R1cmUtPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcik7Cisg
ICAgQVNTRVJUKG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+c3RydWN0dXJlKCptX3ZtKS0+
Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKTsKKyAgICBjb250
ZXh0UHJvdG90eXBlLT5zdHJ1Y3R1cmUoKm1fdm0pLT5zZXRHbG9iYWxPYmplY3QoKm1fdm0sIG1f
d29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7CisgICAgY29udGV4dFByb3RvdHlwZS0+
c3RydWN0dXJlKCptX3ZtKS0+c2V0UHJvdG90eXBlV2l0aG91dFRyYW5zaXRpb24oKm1fdm0sIEpT
R2xvYmFsU2NvcGU6OnByb3RvdHlwZSgqbV92bSwgKm1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBl
ci5nZXQoKSkpOworCisgICAgcHJveHktPnNldFRhcmdldCgqbV92bSwgbV93b3JrbGV0R2xvYmFs
U2NvcGVXcmFwcGVyLmdldCgpKTsKKyAgICBwcm94eS0+c3RydWN0dXJlKCptX3ZtKS0+c2V0R2xv
YmFsT2JqZWN0KCptX3ZtLCBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpOworCisg
ICAgQVNTRVJUKG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+Z2xvYmFsT2JqZWN0KCkgPT0g
bV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKTsKKyAgICBBU1NFUlQoYXNPYmplY3QobV93b3Jr
bGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5nZXRQcm90b3R5cGVEaXJlY3QoKm1fdm0pKS0+Z2xvYmFs
T2JqZWN0KCkgPT0gbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKTsKKworICAgIG1fY29uc29s
ZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V29ya2xldENvbnNvbGVDbGllbnQ+KCptX3dvcmts
ZXRHbG9iYWxTY29wZSk7CisgICAgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5zZXRDb25z
b2xlQ2xpZW50KG1fY29uc29sZUNsaWVudC5nZXQoKSk7Cit9CisKK3ZvaWQgV29ya2xldFNjcmlw
dENvbnRyb2xsZXI6OmluaXRTY3JpcHQoKQoreworICAgIGlmIChtX3dvcmtsZXRHbG9iYWxTY29w
ZS0+aXNQYWludFdvcmtsZXRHbG9iYWxTY29wZSgpKSB7CisgICAgICAgIGluaXRTY3JpcHRXaXRo
U3ViY2xhc3M8SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZVByb3RvdHlwZSwgSlNQYWludFdvcmts
ZXRHbG9iYWxTY29wZSwgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+KCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBXb3JrbGV0
U2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNl
Q29kZSwgU3RyaW5nKiByZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2UpCit7CisgICAgaWYgKGlzRXhl
Y3V0aW9uRm9yYmlkZGVuKCkpCisgICAgICAgIHJldHVybjsKKworICAgIE5ha2VkUHRyPEpTQzo6
RXhjZXB0aW9uPiBleGNlcHRpb247CisgICAgZXZhbHVhdGUoc291cmNlQ29kZSwgZXhjZXB0aW9u
LCByZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2UpOworICAgIGlmIChleGNlcHRpb24pIHsKKyAgICAg
ICAgSlNMb2NrSG9sZGVyIGxvY2sodm0oKSk7CisgICAgICAgIHJlcG9ydEV4Y2VwdGlvbihtX3dv
cmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbEV4ZWMoKSwgZXhjZXB0aW9uKTsKKyAgICB9
Cit9CisKK3ZvaWQgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlw
dFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJu
ZWRFeGNlcHRpb24sIFN0cmluZyogcmV0dXJuZWRFeGNlcHRpb25NZXNzYWdlKQoreworICAgIGlm
IChpc0V4ZWN1dGlvbkZvcmJpZGRlbigpKQorICAgICAgICByZXR1cm47CisKKyAgICBpbml0U2Ny
aXB0SWZOZWVkZWQoKTsKKworICAgIGF1dG8mIHN0YXRlID0gKm1fd29ya2xldEdsb2JhbFNjb3Bl
V3JhcHBlci0+Z2xvYmFsRXhlYygpOworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgSlNM
b2NrSG9sZGVyIGxvY2sgeyB2bSB9OworCisgICAgSlNFeGVjU3RhdGU6OnByb2ZpbGVkRXZhbHVh
dGUoJnN0YXRlLCBKU0M6OlByb2ZpbGluZ1JlYXNvbjo6T3RoZXIsIHNvdXJjZUNvZGUuanNTb3Vy
Y2VDb2RlKCksIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+Z2xvYmFsVGhpcygpLCByZXR1
cm5lZEV4Y2VwdGlvbik7CisKKyAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pIHsKKyAgICAgICAg
Ly8gVGhpcyBGSVhNRSBpcyBmcm9tIGluIFdvcmtlclNjcmlwdENvbnRyb2xsZXIuCisgICAgICAg
IGlmICgvKm1fd29ya2xldEdsb2JhbFNjb3BlLT5jYW5JbmNsdWRlRXJyb3JEZXRhaWxzKHNvdXJj
ZUNvZGUuY2FjaGVkU2NyaXB0KCksIHNvdXJjZUNvZGUudXJsKCkuc3RyaW5nKCkpKi8gdHJ1ZSkg
eworICAgICAgICAgICAgLy8gRklYTUU6IEl0J3Mgbm90IGdyZWF0IHRoYXQgdGhpcyBjYW4gcnVu
IGFyYml0cmFyeSBjb2RlIHRvIHN0cmluZy1pZnkgdGhlIHZhbHVlIG9mIHRoZSBleGNlcHRpb24u
CisgICAgICAgICAgICAvLyBEbyB3ZSBuZWVkIHRvIGRvIGFueXRoaW5nIHRvIGhhbmRsZSB0aGF0
IHByb3Blcmx5LCBpZiBpdCwgc2F5LCByYWlzZXMgYW5vdGhlciBleGNlcHRpb24/CisgICAgICAg
ICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb25NZXNzYWdlKQorICAgICAgICAgICAgICAgICpyZXR1
cm5lZEV4Y2VwdGlvbk1lc3NhZ2UgPSByZXR1cm5lZEV4Y2VwdGlvbi0+dmFsdWUoKS50b1dURlN0
cmluZygmc3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gT3ZlcndyaXRl
IHRoZSBkZXRhaWxlZCBlcnJvciB3aXRoIGEgZ2VuZXJpYyBlcnJvci4KKyAgICAgICAgICAgIFN0
cmluZyBnZW5lcmljRXJyb3JNZXNzYWdlIHsgIlNjcmlwdCBlcnJvci4iX3MgfTsKKyAgICAgICAg
ICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2UpCisgICAgICAgICAgICAgICAgKnJldHVy
bmVkRXhjZXB0aW9uTWVzc2FnZSA9IGdlbmVyaWNFcnJvck1lc3NhZ2U7CisgICAgICAgICAgICBy
ZXR1cm5lZEV4Y2VwdGlvbiA9IEpTQzo6RXhjZXB0aW9uOjpjcmVhdGUodm0sIGNyZWF0ZUVycm9y
KCZzdGF0ZSwgZ2VuZXJpY0Vycm9yTWVzc2FnZSkpOworICAgICAgICB9CisgICAgfQorfQorCit2
b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpzZXRFeGNlcHRpb24oSlNDOjpFeGNlcHRpb24q
IGV4Y2VwdGlvbikKK3sKKyAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IG1fd29ya2xldEdsb2Jh
bFNjb3BlV3JhcHBlci0+Z2xvYmFsRXhlYygpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIHRocm93RXhjZXB0
aW9uKGV4ZWMsIHNjb3BlLCBleGNlcHRpb24pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3Jp
cHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29u
dHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhNTc4YmJmOWFiMzIxYzk3MDE0NGViOGZjZTM4YmVlNTM2
NWU4N2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0
U2NyaXB0Q29udHJvbGxlci5oCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShDU1Nf
UEFJTlRJTkdfQVBJKQorCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGVidWdnZXIuaD4KKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1J1bkxvb3BUaW1lci5oPgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1N0cm9uZy5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8
d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvTmFrZWRQdHIuaD4KKworbmFtZXNwYWNlIEpTQyB7
CitjbGFzcyBWTTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBKU1dvcmtsZXRH
bG9iYWxTY29wZTsKK2NsYXNzIFNjcmlwdFNvdXJjZUNvZGU7CitjbGFzcyBXb3JrbGV0Q29uc29s
ZUNsaWVudDsKK2NsYXNzIFdvcmtsZXRHbG9iYWxTY29wZTsKK2NsYXNzIFdvcmtsZXRDb25zb2xl
Q2xpZW50OworCitjbGFzcyBXb3JrbGV0U2NyaXB0Q29udHJvbGxlciB7CisgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoV29ya2xldFNjcmlwdENvbnRyb2xsZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKK3B1YmxpYzoKKyAgICBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcihXb3JrbGV0R2xvYmFs
U2NvcGUqKTsKKyAgICB+V29ya2xldFNjcmlwdENvbnRyb2xsZXIoKTsKKworICAgIEpTV29ya2xl
dEdsb2JhbFNjb3BlKiB3b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKCkKKyAgICB7CisgICAgICAg
IGluaXRTY3JpcHRJZk5lZWRlZCgpOworICAgICAgICByZXR1cm4gbV93b3JrbGV0R2xvYmFsU2Nv
cGVXcmFwcGVyLmdldCgpOworICAgIH0KKworICAgIHZvaWQgZm9yYmlkRXhlY3V0aW9uKCk7Cisg
ICAgYm9vbCBpc0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0OworCisgICAgdm9pZCBkaXNhYmxl
RXZhbChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CisgICAgdm9pZCBkaXNhYmxlV2ViQXNz
ZW1ibHkoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOworCisgICAgdm9pZCBldmFsdWF0ZShj
b25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgU3RyaW5nKiByZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2Ug
PSBudWxscHRyKTsKKyAgICB2b2lkIGV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBO
YWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uLCBTdHJpbmcqIHJldHVy
bmVkRXhjZXB0aW9uTWVzc2FnZSA9IG51bGxwdHIpOworCisgICAgdm9pZCBzZXRFeGNlcHRpb24o
SlNDOjpFeGNlcHRpb24qKTsKKworICAgIEpTQzo6Vk0mIHZtKCkgeyByZXR1cm4gKm1fdm07IH0K
KworcHJpdmF0ZToKKyAgICB2b2lkIGluaXRTY3JpcHRJZk5lZWRlZCgpCisgICAgeworICAgICAg
ICBpZiAoIW1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcikKKyAgICAgICAgICAgIGluaXRTY3Jp
cHQoKTsKKyAgICB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0U2NyaXB0KCk7CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBKU0dsb2JhbFNjb3BlUHJvdG90eXBlLCB0eXBlbmFtZSBKU0ds
b2JhbFNjb3BlLCB0eXBlbmFtZSBHbG9iYWxTY29wZT4KKyAgICB2b2lkIGluaXRTY3JpcHRXaXRo
U3ViY2xhc3MoKTsKKworICAgIGJvb2wgbV9leGVjdXRpb25Gb3JiaWRkZW4geyBmYWxzZSB9Owor
ICAgIFJlZlB0cjxKU0M6OlZNPiBtX3ZtOworICAgIFdvcmtsZXRHbG9iYWxTY29wZSogbV93b3Jr
bGV0R2xvYmFsU2NvcGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdvcmtsZXRDb25zb2xlQ2xpZW50
PiBtX2NvbnNvbGVDbGllbnQ7CisgICAgSlNDOjpTdHJvbmc8SlNXb3JrbGV0R2xvYmFsU2NvcGU+
IG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDFiNTgwZDk0OTAxMWY0NjQxM2JkYzYzZjg0ODk0NzYyMDcyNDA1
NGMuLmZhOTlmNTlmMWExN2Y2OWM5NWNhYWJmZDNmNzU3YWQzODZiNjdjMTQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNCBAQAorMjAxOC0xMC0yNiAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgQWRkIG5ldyBnbG9iYWwgb2JqZWN0IGFuZCBwcmVsaW1pbmFy
eSBXb3JrbGV0cyBzdXBwb3J0IGZvciBDU1MgcGFpbnRpbmcgYXBpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA5NzkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgdGVzdCBoYXJuZXNzIGZv
ciB3b3JrbGV0IHRlc3RzLCBzaW5jZSB0aGV5IGRvIG5vdCBoYXZlIGFjY2VzcyB0byB0aGUgZG9t
LgorCisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L2Jhc2ljLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvYmFzaWMuaHRtbDoKKyAgICAgICAgKiBm
YXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVnaXN0ZXJQYWludEJpbmRpbmdzLWV4cGVjdGVkLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzLWN1c3RvbS1wYWludC9yZWdpc3RlclBhaW50Qmlu
ZGluZ3MtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvY3NzLWN1c3RvbS1w
YWludC9yZWdpc3RlclBhaW50QmluZGluZ3MuaHRtbDoKKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0
b20tcGFpbnQvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLXdvcmtsZXQuanM6IEFkZGVkLgorICAgICAg
ICAoZm9ybWF0X3ZhbHVlKToKKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzeW5jLmltcG9ydFdvcmtsZXQp
OgorICAgICAgICAqIGZhc3QvY3NzLWN1c3RvbS1wYWludC93b3JrbGV0LWV4cGVjdGVkLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzLWN1c3RvbS1wYWludC93b3JrbGV0Lmh0bWw6IEFk
ZGVkLgorCiAyMDE4LTEwLTI2ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjM3NDc5IGFuZCByMjM3NDg0
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2Jhc2ljLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9iYXNpYy1leHBl
Y3RlZC50eHQKaW5kZXggZWFhMTc0M2U0Mzk5MDBiZmQ3M2IwYzE5MTZlM2QyZWNlZTZkNGI1Ni4u
MDIwNTlmOTgzNWUyMzZhYTVlOTkyOTU1MTQ5MTczYjVkNzUyNTVhOSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2Jhc2ljLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYmFzaWMtZXhwZWN0ZWQudHh0CkBAIC0x
LDEwICsxLDMgQEAKIAotUEFTUyB0ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBydW5zIAotUEFTUyB0
ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBydW5zIHdpdGhvdXQgaW5wdXRQcm9wZXJ0aWVzIAotUEFT
UyB0ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBydW5zIHdpdGggaW5wdXRBcmd1bWVudHMgCi1QQVNT
IHRlc3QgdGhhdCByZWdpc3RlclBhaW50IHJ1bnMgd2l0aCBjb250ZXh0T3B0aW9ucyAKLVBBU1Mg
dGVzdCB0aGF0IHJlZ2lzdGVyUGFpbnQgcnVucyB3aXRoIHByZWRlZmluZWQgY2xhc3MgCi1QQVNT
IHRlc3QgdGhhdCByZWdpc3RlclBhaW50IGFjY2VwdHMgb25seSBhIHN0cmluZyBhbmQgYSBjbGFz
cyBjb25zdHJ1Y3RvciAKIFBBU1MgdGVzdCB0aGF0IHRlc3QgZGl2IGhhcyBwYWludCgpIHZhbHVl
IAotUEFTUyB0ZXN0IHRoYXQgdGVzdCBkaXYgcGFpbnQgY2FsbGJhY2sgZ2V0cyBjYWxsZWQgCiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9iYXNpYy5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2Jhc2ljLmh0bWwKaW5kZXggM2Y0
ZGMzYTJkMDJlZjIxYTJlOTcyZDRjOGI0ZjJmYWU4YzM4OTQ1OC4uNGM4YjBjZjUyZTE2ZDVjOGYw
Mjg3OGUyY2Y3NTc5NTM0MGUyOGY5NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mt
Y3VzdG9tLXBhaW50L2Jhc2ljLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9t
LXBhaW50L2Jhc2ljLmh0bWwKQEAgLTE2LDcwICsxNiw3IEBACiA8ZGl2IGlkPSJwYWludCI+PC9k
aXY+CiAKIDxzY3JpcHQ+Ci10ZXN0KGZ1bmN0aW9uKCkgewotICBDU1MucGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUucmVnaXN0ZXJQYWludCgndGVzdDEnLCBjbGFzcyB7Ci0gICAgc3RhdGljIGdldCBp
bnB1dFByb3BlcnRpZXMoKSB7IHJldHVybiBbIi0tdGVzdCJdOyB9Ci0gICAgcGFpbnQoKSB7IH0K
LSAgfSk7Ci19LCAndGVzdCB0aGF0IHJlZ2lzdGVyUGFpbnQgcnVucycpOwotCi10ZXN0KGZ1bmN0
aW9uKCkgewotICBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgndGVz
dDInLCBjbGFzcyB7Ci0gICAgcGFpbnQoKSB7IH0KLSAgfSk7Ci19LCAndGVzdCB0aGF0IHJlZ2lz
dGVyUGFpbnQgcnVucyB3aXRob3V0IGlucHV0UHJvcGVydGllcycpOwotCi10ZXN0KGZ1bmN0aW9u
KCkgewotICBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgndGVzdDMn
LCBjbGFzcyB7Ci0gICAgc3RhdGljIGdldCBpbnB1dEFyZ3VtZW50cygpIHsgcmV0dXJuIFsiPGxl
bmd0aD4iXTsgfQotICAgIHBhaW50KCkgeyB9Ci0gIH0pOwotfSwgJ3Rlc3QgdGhhdCByZWdpc3Rl
clBhaW50IHJ1bnMgd2l0aCBpbnB1dEFyZ3VtZW50cycpOwotCi10ZXN0KGZ1bmN0aW9uKCkgewot
ICBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgndGVzdDQnLCBjbGFz
cyB7Ci0gICAgc3RhdGljIGdldCBjb250ZXh0T3B0aW9ucygpIHsgcmV0dXJuIHsgYWxwaGE6IHRy
dWUgfTsgfQotICAgIHBhaW50KCkgeyB9Ci0gIH0pOwotfSwgJ3Rlc3QgdGhhdCByZWdpc3RlclBh
aW50IHJ1bnMgd2l0aCBjb250ZXh0T3B0aW9ucycpOwotCi1jbGFzcyBNeVBhaW50IHsKLSAgcGFp
bnQoKSB7IH0KLX0KLQotdGVzdChmdW5jdGlvbigpIHsKLSAgQ1NTLnBhaW50V29ya2xldEdsb2Jh
bFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3Q1JywgTXlQYWludCk7Ci0gIGFzc2VydF90aHJvd3Mo
eyduYW1lJzogJ0ludmFsaWRNb2RpZmljYXRpb25FcnJvcid9LCAoKSA9PiBDU1MucGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgndGVzdDUnLCBNeVBhaW50KSk7Ci0gIENTUy5w
YWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCd0ZXN0NicsIGNsYXNzIGV4dGVu
ZHMgTXlQYWludCB7IH0pOwotfSwgJ3Rlc3QgdGhhdCByZWdpc3RlclBhaW50IHJ1bnMgd2l0aCBw
cmVkZWZpbmVkIGNsYXNzJyk7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gIGFzc2VydF90aHJvd3Mo
eyduYW1lJzogJ0ludmFsaWRNb2RpZmljYXRpb25FcnJvcid9LCAoKSA9PiBDU1MucGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgndGVzdDYnLCAndGVzdCcpKTsKLSAgYXNzZXJ0
X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5yZWdpc3RlclBhaW50KCd0ZXN0NycpKTsKLSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9y
KCksICgpID0+IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCd0ZXN0
OCcsIFtdKSk7Ci0gIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBDU1MucGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgndGVzdDknLCB7fSkpOwotICBhc3Nl
cnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gQ1NTLnBhaW50V29ya2xldEdsb2JhbFNj
b3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3QxMCcsIDUpKTsKLSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlw
ZUVycm9yKCksICgpID0+IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50
KCcnLCA1KSk7Ci19LCAndGVzdCB0aGF0IHJlZ2lzdGVyUGFpbnQgYWNjZXB0cyBvbmx5IGEgc3Ry
aW5nIGFuZCBhIGNsYXNzIGNvbnN0cnVjdG9yJyk7Ci0KIHRlc3QoZnVuY3Rpb24oKSB7CiAgIGFz
c2VydF9lcXVhbHMoZ2V0Q29tcHV0ZWRTdHlsZShwYWludCkuZ2V0UHJvcGVydHlWYWx1ZSgiYmFj
a2dyb3VuZC1pbWFnZSIpLCAicGFpbnQobXktcGFpbnQpIik7CiB9LCAndGVzdCB0aGF0IHRlc3Qg
ZGl2IGhhcyBwYWludCgpIHZhbHVlJyk7Ci0KLWxldCBwYWludF9jYWxsZWRfdGVzdCA9IGFzeW5j
X3Rlc3QoJ3Rlc3QgdGhhdCB0ZXN0IGRpdiBwYWludCBjYWxsYmFjayBnZXRzIGNhbGxlZCcpOwot
cGFpbnRfY2FsbGVkX3Rlc3Quc3RlcChmdW5jdGlvbigpIHsKLSAgQ1NTLnBhaW50V29ya2xldEds
b2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ215LXBhaW50JywgY2xhc3MgewotICAgIHBhaW50KGN0
eCwgZ2VvbSwgcHJvcGVydGllcykgewotICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKysp
ewotICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDY7IGorKyl7Ci0gICAgICAgICAgY3R4LmZp
bGxTdHlsZSA9ICdyZ2IoJyArIE1hdGguZmxvb3IoMjU1IC0gNDIuNSAqIGkpICsgJywnICsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGguZmxvb3IoMjU1IC0gNDIuNSAqIGopICsgJyww
KSc7Ci0gICAgICAgICAgY3R4LmZpbGxSZWN0KGogKiAyNSwgaSAqIDI1LCAyNSwgMjUpOwotICAg
ICAgICB9Ci0gICAgICB9Ci0gICAgICBwYWludF9jYWxsZWRfdGVzdC5kb25lKCk7Ci0gICAgfQot
ICB9KTsKLX0pOwotCiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3Nz
LWN1c3RvbS1wYWludC9yZWdpc3RlclBhaW50QmluZGluZ3MtZXhwZWN0ZWQuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9yZWdpc3RlclBhaW50QmluZGluZ3MtZXhwZWN0
ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40YjQyYjYyZGExM2VkYTgxOTYxMGIzMTk3YjRlNDVhNTQ3M2Jk
Y2YzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50
L3JlZ2lzdGVyUGFpbnRCaW5kaW5ncy1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTYgQEAKKzwh
RE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFsOkNTU1Bh
aW50aW5nQVBJRW5hYmxlZD10cnVlIF0gLS0+CisKKzxjYW52YXMgaWQ9InBhaW50IiB3aWR0aD0i
MTUwcHgiIGhlaWdodD0iMTUwcHgiID48L2NhbnZhcz4KKworPHNjcmlwdCBpZD0iY29kZSI+Cit2
YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhaW50Jyk7Cit2YXIgY3R4ID0g
Y2FudmFzLmdldENvbnRleHQoJzJkJyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKXsK
KyAgZm9yICh2YXIgaiA9IDA7IGogPCA2OyBqKyspeworICAgIGN0eC5maWxsU3R5bGUgPSAncmdi
KCcgKyBNYXRoLmZsb29yKDI1NSAtIDQyLjUgKiBpKSArICcsJyArCisgICAgICAgICAgICAgICAg
ICAgICBNYXRoLmZsb29yKDI1NSAtIDQyLjUgKiBqKSArICcsMCknOworICAgIGN0eC5maWxsUmVj
dChqICogMjUsIGkgKiAyNSwgMjUsIDI1KTsKKyAgfQorfQorPC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVnaXN0ZXJQYWludEJpbmRpbmdz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9yZWdpc3Rl
clBhaW50QmluZGluZ3MtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAzMDE0MzE1MmJkODZjOWRiMGQ5NzI5MjQyMmQ1YjhhZjg4YTUxMDZmLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1
c3RvbS1wYWludC9yZWdpc3RlclBhaW50QmluZGluZ3MtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251
bGwKQEAgLTEsMTMgKzAsMCBAQAotCi1QQVNTIHJlZ2lzdGVyUGFpbnQgbXVzdCBiZSBhIG1ldGhv
ZCAKLVBBU1MgbXVzdCBnZXQgInByb3RvdHlwZSIgcHJvcGVydHkgb2YgdGhlIGNvbnN0cnVjdG9y
IAotUEFTUyBtdXN0IHJldGhyb3cgYW4gZXhjZXB0aW9uIHRocm93biB3aGlsZSBnZXR0aW5nICJp
bnB1dFByb3BlcnRpZXMiIHByb3BlcnR5IG9mIHRoZSBjb25zdHJ1Y3RvciAKLVBBU1MgbXVzdCBy
ZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgZ2V0dGluZyAicHJvdG90eXBlIiBwcm9w
ZXJ0eSBvZiB0aGUgY29uc3RydWN0b3IgCi1QQVNTIG11c3QgdGhyb3cgd2hlbiAicHJvdG90eXBl
IiBwcm9wZXJ0eSBvZiB0aGUgY29uc3RydWN0b3IgaXMgbm90IGFuIG9iamVjdCAKLVBBU1MgbXVz
dCBnZXQgcGFpbnQgY2FsbGJhY2sgb2YgdGhlIGNvbnN0cnVjdG9yIHByb3RvdHlwZSAKLVBBU1Mg
bXVzdCByZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgZ2V0dGluZyBwYWludCBjYWxs
YmFjayBvbiB0aGUgY29uc3RydWN0b3IgcHJvdG90eXBlIAotUEFTUyBtdXN0IHJldGhyb3cgYW4g
ZXhjZXB0aW9uIHRocm93biB3aGlsZSBjb252ZXJ0aW5nIHBhaW50IGNhbGxiYWNrIHZhbHVlIHRv
IEZ1bmN0aW9uIGNhbGxiYWNrIHR5cGUgCi1QQVNTIG11c3QgcmV0aHJvdyBhbiBleGNlcHRpb24g
dGhyb3duIHdoaWxlIGNvbnZlcnRpbmcgdGhlIHZhbHVlIG9mIGlucHV0QXJndW1lbnRzIHRvIHNl
cXVlbmNlPERPTVN0cmluZz4gCi1QQVNTIG11c3QgcmV0aHJvdyBhbiBleGNlcHRpb24gdGhyb3du
IHdoaWxlIGl0ZXJhdGluZyBvdmVyIGlucHV0QXJndW1lbnRzIHRvIHNlcXVlbmNlPERPTVN0cmlu
Zz4gCi1QQVNTIG11c3QgcmV0aHJvdyBhbiBleGNlcHRpb24gdGhyb3duIHdoaWxlIHJldHJpZXZp
bmcgU3ltYm9sLml0ZXJhdG9yIG9uIGlucHV0QXJndW1lbnRzIAotCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVnaXN0ZXJQYWludEJpbmRpbmdzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVnaXN0ZXJQYWludEJpbmRpbmdz
Lmh0bWwKaW5kZXggZGM5MDJjNGNkNjU5MTBkNWIxOGNhZTE1NGVmMzM4Y2E5ODk4YmNkYy4uZmMx
M2ViOWJhNDU2NTM5Yzk0ZjRmNjI2Mjg0NTFjZGQ4NDVmMzRiNyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3JlZ2lzdGVyUGFpbnRCaW5kaW5ncy5odG1sCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9yZWdpc3RlclBhaW50QmluZGlu
Z3MuaHRtbApAQCAtMiwxNyArMiw2NCBAQAogPG1ldGEgbmFtZT0iYXV0aG9yIiB0aXRsZT0iSnVz
dGluIE1pY2hhdWQiIGhyZWY9Im1haWx0bzpqdXN0aW5fbWljaGF1ZEB3ZWJraXQub3JnIj4KIDxt
ZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0icmVnaXN0ZXJQYWludCBhY2Nlc3NlcyBhcmd1bWVu
dHMgaW4gdGhlIGNvcnJlY3Qgb3JkZXIiPgogPGxpbmsgcmVsPSJoZWxwIiBjb250ZW50PSJodHRw
czovL2RyYWZ0cy5jc3MtaG91ZGluaS5vcmcvY3NzLXBhaW50LWFwaS0xLyI+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorCis8
c3R5bGU+CisgICNwYWludCB7CisgICAgYmFja2dyb3VuZC1pbWFnZTogcGFpbnQobXktcGFpbnQp
OworICAgIHdpZHRoOiAxNTBweDsKKyAgICBoZWlnaHQ6IDE1MHB4OworICB9Cis8L3N0eWxlPgor
Cis8ZGl2IGlkPSJwYWludCI+PC9kaXY+CisKKzxzY3JpcHQgaWQ9ImNvZGUiIHR5cGU9InRleHQv
d29ya2xldCI+CiBjbGFzcyBNeVBhaW50IHsKICAgcGFpbnQoKSB7IH0KIH0KIAotdGVzdChmdW5j
dGlvbiAoKSB7Ci0gICAgYXNzZXJ0X3RydWUoJ3JlZ2lzdGVyUGFpbnQnIGluIENTUy5wYWludFdv
cmtsZXRHbG9iYWxTY29wZS5fX3Byb3RvX18sICcicmVnaXN0ZXJQYWludCIgZXhpc3RzIG9uIHBy
b3RvdHlwZScpOwotICAgIGFzc2VydF90cnVlKCdyZWdpc3RlclBhaW50JyBpbiBDU1MucGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUsICcicmVnaXN0ZXJQYWludCIgZXhpc3RzIG9uIHdpbmRvdycpOwot
fSwgJ3JlZ2lzdGVyUGFpbnQgbXVzdCBiZSBhIG1ldGhvZCcpOwordGVzdChmdW5jdGlvbigpIHsK
KyAgcmVnaXN0ZXJQYWludCgnYmFzaWMxJywgY2xhc3MgeworICAgIHN0YXRpYyBnZXQgaW5wdXRQ
cm9wZXJ0aWVzKCkgeyByZXR1cm4gWyItLXRlc3QiXTsgfQorICAgIHBhaW50KCkgeyB9CisgIH0p
OworfSwgJ3Rlc3QgdGhhdCByZWdpc3RlclBhaW50IHJ1bnMnKTsKKwordGVzdChmdW5jdGlvbigp
IHsKKyAgcmVnaXN0ZXJQYWludCgnYmFzaWMyJywgY2xhc3MgeworICAgIHBhaW50KCkgeyB9Cisg
IH0pOworfSwgJ3Rlc3QgdGhhdCByZWdpc3RlclBhaW50IHJ1bnMgd2l0aG91dCBpbnB1dFByb3Bl
cnRpZXMnKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgcmVnaXN0ZXJQYWludCgnYmFzaWMzJywg
Y2xhc3MgeworICAgIHN0YXRpYyBnZXQgaW5wdXRBcmd1bWVudHMoKSB7IHJldHVybiBbIjxsZW5n
dGg+Il07IH0KKyAgICBwYWludCgpIHsgfQorICB9KTsKK30sICd0ZXN0IHRoYXQgcmVnaXN0ZXJQ
YWludCBydW5zIHdpdGggaW5wdXRBcmd1bWVudHMnKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAg
cmVnaXN0ZXJQYWludCgnYmFzaWM0JywgY2xhc3MgeworICAgIHN0YXRpYyBnZXQgY29udGV4dE9w
dGlvbnMoKSB7IHJldHVybiB7IGFscGhhOiB0cnVlIH07IH0KKyAgICBwYWludCgpIHsgfQorICB9
KTsKK30sICd0ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBydW5zIHdpdGggY29udGV4dE9wdGlvbnMn
KTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgcmVnaXN0ZXJQYWludCgnYmFzaWM1JywgTXlQYWlu
dCk7CisgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ0ludmFsaWRNb2RpZmljYXRpb25FcnJvcid9
LCAoKSA9PiByZWdpc3RlclBhaW50KCdiYXNpYzUnLCBNeVBhaW50KSk7CisgIHJlZ2lzdGVyUGFp
bnQoJ2Jhc2ljNicsIGNsYXNzIGV4dGVuZHMgTXlQYWludCB7IH0pOworfSwgJ3Rlc3QgdGhhdCBy
ZWdpc3RlclBhaW50IHJ1bnMgd2l0aCBwcmVkZWZpbmVkIGNsYXNzJyk7CisKK3Rlc3QoZnVuY3Rp
b24oKSB7CisgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ0ludmFsaWRNb2RpZmljYXRpb25FcnJv
cid9LCAoKSA9PiByZWdpc3RlclBhaW50KCdiYXNpYzYnLCAndGVzdCcpKTsKKyAgYXNzZXJ0X3Ro
cm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHJlZ2lzdGVyUGFpbnQoJ2Jhc2ljOCcpKTsKKyAg
YXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHJlZ2lzdGVyUGFpbnQoJ2Jhc2lj
OScsIFtdKSk7CisgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiByZWdpc3Rl
clBhaW50KCdiYXNpYzEwJywge30pKTsKKyAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCks
ICgpID0+IHJlZ2lzdGVyUGFpbnQoJ2Jhc2ljMTEnLCA1KSk7CisgIGFzc2VydF90aHJvd3MobmV3
IFR5cGVFcnJvcigpLCAoKSA9PiByZWdpc3RlclBhaW50KCcnLCA1KSk7Cit9LCAndGVzdCB0aGF0
IHJlZ2lzdGVyUGFpbnQgYWNjZXB0cyBvbmx5IGEgc3RyaW5nIGFuZCBhIGNsYXNzIGNvbnN0cnVj
dG9yJyk7CiAKIHRlc3QoZnVuY3Rpb24gKCkgewogICAgIGNvbnN0IGNhbGxzID0gW107CkBAIC0y
Miw3ICs2OSw3IEBAIHRlc3QoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgcmV0dXJuIHRhcmdl
dFtuYW1lXTsKICAgICAgICAgfQogICAgIH0pOwotICAgIENTUy5wYWludFdvcmtsZXRHbG9iYWxT
Y29wZS5yZWdpc3RlclBhaW50KCd0ZXN0LXByb3RvJywgcHJveHkpOworICAgIHJlZ2lzdGVyUGFp
bnQoJ3Rlc3QtcHJvdG8nLCBwcm94eSk7CiAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjYWxscywg
WyJpbnB1dFByb3BlcnRpZXMiLCAiaW5wdXRBcmd1bWVudHMiLCAiY29udGV4dE9wdGlvbnMiLCAi
cHJvdG90eXBlIl0pOwogfSwgJ211c3QgZ2V0ICJwcm90b3R5cGUiIHByb3BlcnR5IG9mIHRoZSBj
b25zdHJ1Y3RvcicpOwogCkBAIC0zNiw3ICs4Myw3IEBAIHRlc3QoZnVuY3Rpb24gKCkgewogICAg
ICAgICAgICAgcmV0dXJuIHRhcmdldFtuYW1lXTsKICAgICAgICAgfQogICAgIH0pOwotICAgIGFz
c2VydF90aHJvd3MoeyduYW1lJzogJ2V4cGVjdGVkRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBDU1Mu
cGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgndGVzdC1yZXRocm93LWlucHV0
UHJvcGVydGllczAnLCBwcm94eSk7IH0pOworICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ2V4
cGVjdGVkRXJyb3InfSwgZnVuY3Rpb24gKCkgeyByZWdpc3RlclBhaW50KCd0ZXN0LXJldGhyb3ct
aW5wdXRQcm9wZXJ0aWVzMCcsIHByb3h5KTsgfSk7CiB9LCAnbXVzdCByZXRocm93IGFuIGV4Y2Vw
dGlvbiB0aHJvd24gd2hpbGUgZ2V0dGluZyAiaW5wdXRQcm9wZXJ0aWVzIiBwcm9wZXJ0eSBvZiB0
aGUgY29uc3RydWN0b3InKTsKIAogdGVzdChmdW5jdGlvbiAoKSB7CkBAIC00OSw3ICs5Niw3IEBA
IHRlc3QoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgcmV0dXJuIHRhcmdldFtuYW1lXTsKICAg
ICAgICAgfQogICAgIH0pOwotICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ2V4cGVjdGVkRXJy
b3InfSwgZnVuY3Rpb24gKCkgeyBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQ
YWludCgndGVzdC1yZXRocm93LXByb3RvJywgcHJveHkpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dz
KHsnbmFtZSc6ICdleHBlY3RlZEVycm9yJ30sIGZ1bmN0aW9uICgpIHsgcmVnaXN0ZXJQYWludCgn
dGVzdC1yZXRocm93LXByb3RvJywgcHJveHkpOyB9KTsKIH0sICdtdXN0IHJldGhyb3cgYW4gZXhj
ZXB0aW9uIHRocm93biB3aGlsZSBnZXR0aW5nICJwcm90b3R5cGUiIHByb3BlcnR5IG9mIHRoZSBj
b25zdHJ1Y3RvcicpOwogCiB0ZXN0KGZ1bmN0aW9uICgpIHsKQEAgLTYzLDE2ICsxMTAsMTYgQEAg
dGVzdChmdW5jdGlvbiAoKSB7CiAgICAgfSk7CiAKICAgICByZXR1cm5lZFZhbHVlID0gbnVsbDsK
LSAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBD
U1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgndGVzdC1yZXRocm93LXBy
b3RvLW5vb2JqMScsIHByb3h5KTsgfSwKKyAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBl
RXJyb3InfSwgZnVuY3Rpb24gKCkgeyByZWdpc3RlclBhaW50KCd0ZXN0LXJldGhyb3ctcHJvdG8t
bm9vYmoxJywgcHJveHkpOyB9LAogICAgICAgICAnbXVzdCB0aHJvdyB3aGVuICJwcm90b3R5cGUi
IHByb3BlcnR5IG9mIHRoZSBjb25zdHJ1Y3RvciBpcyBudWxsJyk7CiAgICAgcmV0dXJuZWRWYWx1
ZSA9IHVuZGVmaW5lZDsKLSAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwg
ZnVuY3Rpb24gKCkgeyBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgn
dGVzdC1yZXRocm93LXByb3RvLW5vb2JqMicsIHByb3h5KTsgfSwKKyAgICBhc3NlcnRfdGhyb3dz
KHsnbmFtZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyByZWdpc3RlclBhaW50KCd0ZXN0
LXJldGhyb3ctcHJvdG8tbm9vYmoyJywgcHJveHkpOyB9LAogICAgICAgICAnbXVzdCB0aHJvdyB3
aGVuICJwcm90b3R5cGUiIHByb3BlcnR5IG9mIHRoZSBjb25zdHJ1Y3RvciBpcyB1bmRlZmluZWQn
KTsKICAgICByZXR1cm5lZFZhbHVlID0gJ2hlbGxvJzsKLSAgICBhc3NlcnRfdGhyb3dzKHsnbmFt
ZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUucmVnaXN0ZXJQYWludCgndGVzdC1yZXRocm93LXByb3RvLW5vb2JqMycsIHByb3h5KTs7IH0s
CisgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsg
cmVnaXN0ZXJQYWludCgndGVzdC1yZXRocm93LXByb3RvLW5vb2JqMycsIHByb3h5KTs7IH0sCiAg
ICAgICAgICdtdXN0IHRocm93IHdoZW4gInByb3RvdHlwZSIgcHJvcGVydHkgb2YgdGhlIGNvbnN0
cnVjdG9yIGlzIGEgc3RyaW5nJyk7CiAgICAgcmV0dXJuZWRWYWx1ZSA9IDE7Ci0gICAgYXNzZXJ0
X3Rocm93cyh7J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgQ1NTLnBhaW50V29y
a2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3QtcmV0aHJvdy1wcm90by1ub29iajQn
LCBwcm94eSk7OyB9LAorICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1R5cGVFcnJvcid9LCBm
dW5jdGlvbiAoKSB7IHJlZ2lzdGVyUGFpbnQoJ3Rlc3QtcmV0aHJvdy1wcm90by1ub29iajQnLCBw
cm94eSk7OyB9LAogICAgICAgICAnbXVzdCB0aHJvdyB3aGVuICJwcm90b3R5cGUiIHByb3BlcnR5
IG9mIHRoZSBjb25zdHJ1Y3RvciBpcyBhIG51bWJlcicpOwogCiB9LCAnbXVzdCB0aHJvdyB3aGVu
ICJwcm90b3R5cGUiIHByb3BlcnR5IG9mIHRoZSBjb25zdHJ1Y3RvciBpcyBub3QgYW4gb2JqZWN0
Jyk7CkBAIC04Nyw3ICsxMzQsNyBAQCB0ZXN0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIHJl
dHVybiB0YXJnZXRbbmFtZV07CiAgICAgICAgIH0KICAgICB9KTsKLSAgICBDU1MucGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgnY2FsbGJhY2tzJywgY29uc3RydWN0b3IpOwor
ICAgIHJlZ2lzdGVyUGFpbnQoJ2NhbGxiYWNrcycsIGNvbnN0cnVjdG9yKTsKICAgICBhc3NlcnRf
YXJyYXlfZXF1YWxzKGNhbGxzLCBbJ3BhaW50J10pOwogfSwgJ211c3QgZ2V0IHBhaW50IGNhbGxi
YWNrIG9mIHRoZSBjb25zdHJ1Y3RvciBwcm90b3R5cGUnKTsKIApAQCAtMTAyLDcgKzE0OSw3IEBA
IHRlc3QoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgcmV0dXJuIHRhcmdldFtuYW1lXTsKICAg
ICAgICAgfQogICAgIH0pOwotICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ2V4cGVjdGVkRXJy
b3InfSwgZnVuY3Rpb24gKCkgeyBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQ
YWludCgnY2FsbGJhY2tzLXRocm93JywgY29uc3RydWN0b3IpOyB9KTsKKyAgICBhc3NlcnRfdGhy
b3dzKHsnbmFtZSc6ICdleHBlY3RlZEVycm9yJ30sIGZ1bmN0aW9uICgpIHsgcmVnaXN0ZXJQYWlu
dCgnY2FsbGJhY2tzLXRocm93JywgY29uc3RydWN0b3IpOyB9KTsKICAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKGNhbGxzLCBbJ3BhaW50J10pOwogfSwgJ211c3QgcmV0aHJvdyBhbiBleGNlcHRpb24g
dGhyb3duIHdoaWxlIGdldHRpbmcgcGFpbnQgY2FsbGJhY2sgb24gdGhlIGNvbnN0cnVjdG9yIHBy
b3RvdHlwZScpOwogCkBAIC0xMTcsNyArMTY0LDcgQEAgdGVzdChmdW5jdGlvbiAoKSB7CiAgICAg
ICAgICAgICByZXR1cm4gdGFyZ2V0W25hbWVdOwogICAgICAgICB9CiAgICAgfSk7Ci0gICAgYXNz
ZXJ0X3Rocm93cyh7J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgQ1NTLnBhaW50
V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ2NhbGxiYWNrcy10aHJvdzInLCBjb25z
dHJ1Y3Rvcik7IH0pOworICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1R5cGVFcnJvcid9LCBm
dW5jdGlvbiAoKSB7IHJlZ2lzdGVyUGFpbnQoJ2NhbGxiYWNrcy10aHJvdzInLCBjb25zdHJ1Y3Rv
cik7IH0pOwogICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2FsbHMsIFsncGFpbnQnXSk7CiB9LCAn
bXVzdCByZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgY29udmVydGluZyBwYWludCBj
YWxsYmFjayB2YWx1ZSB0byBGdW5jdGlvbiBjYWxsYmFjayB0eXBlJyk7CiAKQEAgLTEzMSw3ICsx
NzgsNyBAQCB0ZXN0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICByZXR1cm4gdGFyZ2V0W25hbWVd
OwogICAgICAgfQogICB9KTsKLSAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnVHlwZUVycm9yJ30s
IGZ1bmN0aW9uICgpIHsgQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQo
J3NlcXVlbmNlLXRocm93JywgcHJveHkpOyB9KTsKKyAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAn
VHlwZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgcmVnaXN0ZXJQYWludCgnc2VxdWVuY2UtdGhyb3cn
LCBwcm94eSk7IH0pOwogICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNhbGxzLCBbImlucHV0UHJvcGVy
dGllcyIsICJpbnB1dEFyZ3VtZW50cyJdKTsKIH0sICdtdXN0IHJldGhyb3cgYW4gZXhjZXB0aW9u
IHRocm93biB3aGlsZSBjb252ZXJ0aW5nIHRoZSB2YWx1ZSBvZiBpbnB1dEFyZ3VtZW50cyB0byBz
ZXF1ZW5jZTxET01TdHJpbmc+Jyk7CiAKQEAgLTE0MSwxMiArMTg4LDM2IEBAIHRlc3QoZnVuY3Rp
b24gKCkgewogICAgICAgICB5aWVsZCAnPGxlbmd0aD4nOwogICAgICAgICB0aHJvdyB7bmFtZTog
J1NvbWVFcnJvcid9OwogICAgIH19OwotICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1NvbWVF
cnJvcid9LCBmdW5jdGlvbiAoKSB7IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3Rl
clBhaW50KCdzZXF1ZW5jZS10aHJvdzInLCBjb25zdHJ1Y3Rvcik7IH0pOworICAgIGFzc2VydF90
aHJvd3MoeyduYW1lJzogJ1NvbWVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IHJlZ2lzdGVyUGFpbnQo
J3NlcXVlbmNlLXRocm93MicsIGNvbnN0cnVjdG9yKTsgfSk7CiB9LCAnbXVzdCByZXRocm93IGFu
IGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgaXRlcmF0aW5nIG92ZXIgaW5wdXRBcmd1bWVudHMgdG8g
c2VxdWVuY2U8RE9NU3RyaW5nPicpOwogCiB0ZXN0KGZ1bmN0aW9uICgpIHsKICAgICBjb25zdCBj
b25zdHJ1Y3RvciA9IGZ1bmN0aW9uICgpIHt9CiAgICAgY29uc3RydWN0b3IuaW5wdXRBcmd1bWVu
dHMgPSB7W1N5bWJvbC5pdGVyYXRvcl06IDF9OwotICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzog
J1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5y
ZWdpc3RlclBhaW50KCdzeW1ib2wtaXRlcmF0b3ItdGhyb3cyJywgY29uc3RydWN0b3IpOyB9KTsK
KyAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBy
ZWdpc3RlclBhaW50KCdzeW1ib2wtaXRlcmF0b3ItdGhyb3cyJywgY29uc3RydWN0b3IpOyB9KTsK
IH0sICdtdXN0IHJldGhyb3cgYW4gZXhjZXB0aW9uIHRocm93biB3aGlsZSByZXRyaWV2aW5nIFN5
bWJvbC5pdGVyYXRvciBvbiBpbnB1dEFyZ3VtZW50cycpOworCithc3NlcnRfdHJ1ZShQYWludFdv
cmtsZXRHbG9iYWxTY29wZS5oYXNSdW5BVGVzdCk7CitpZiAoUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUuZXJyb3JzKSB7CisgIGNvbnNvbGUubG9nKCJUaGUgZm9sbG93aW5nICgiICsgUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUuZXJyb3JzLmxlbmd0aCArICIpIHRlc3RzIGZhaWxlZDogIikKKyAgY29u
c29sZS5sb2coSlNPTi5zdHJpbmdpZnkoUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuZXJyb3JzKSk7
CisgIGFzc2VydF90cnVlKGZhbHNlKTsKK30KKworY2xhc3MgTXlQYWludDIgeworICBwYWludChj
dHgsIGdlb20sIHByb3BlcnRpZXMpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKyl7
CisgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDY7IGorKyl7CisgICAgICAgIGN0eC5maWxsU3R5
bGUgPSAncmdiKCcgKyBNYXRoLmZsb29yKDI1NSAtIDQyLjUgKiBpKSArICcsJyArCisgICAgICAg
ICAgICAgICAgICAgICAgICAgTWF0aC5mbG9vcigyNTUgLSA0Mi41ICogaikgKyAnLDApJzsKKyAg
ICAgICAgY3R4LmZpbGxSZWN0KGogKiAyNSwgaSAqIDI1LCAyNSwgMjUpOworICAgICAgfQorICAg
IH0KKyAgfQorfQorcmVnaXN0ZXJQYWludCgnbXktcGFpbnQnLCBNeVBhaW50Mik7Cis8L3Njcmlw
dD4KKworPHNjcmlwdD4KKyAgaW1wb3J0V29ya2xldChDU1MucGFpbnRXb3JrbGV0LCBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnY29kZScpLnRleHRDb250ZW50KTsKIDwvc2NyaXB0PgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Jlc291cmNlcy90ZXN0aGFy
bmVzcy13b3JrbGV0LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Jlc291
cmNlcy90ZXN0aGFybmVzcy13b3JrbGV0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ1YzNlNzRlZTZjMTMxNDE5
YzE2ODllZTg5ZDAxYTQxYWE3MDJlY2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLXdvcmtsZXQuanMKQEAg
LTAsMCArMSw3MzkgQEAKKy8vIFRoZXNlIGFyZSBoZWxwZXJzIHRvIGJlIGV2YWx1YXRlZCBpbnNp
ZGUgYSB3b3JrbGV0CisvLyBUaGV5IGFyZSBtb3N0bHkgZnJvbSB0aGUgd3B0IHRlc3RoYXJuZXNz
LmpzLgorCisvKgorICogQ29udmVydCBhIHZhbHVlIHRvIGEgbmljZSwgaHVtYW4tcmVhZGFibGUg
c3RyaW5nCisgKi8KK2Z1bmN0aW9uIGZvcm1hdF92YWx1ZSh2YWwsIHNlZW4pCit7CisgICAgaWYg
KCFzZWVuKSB7CisgICAgICAgIHNlZW4gPSBbXTsKKyAgICB9CisgICAgaWYgKHR5cGVvZiB2YWwg
PT09ICJvYmplY3QiICYmIHZhbCAhPT0gbnVsbCkgeworICAgICAgICBpZiAoc2Vlbi5pbmRleE9m
KHZhbCkgPj0gMCkgeworICAgICAgICAgICAgcmV0dXJuICJbLi4uXSI7CisgICAgICAgIH0KKyAg
ICAgICAgc2Vlbi5wdXNoKHZhbCk7CisgICAgfQorICAgIGlmIChBcnJheS5pc0FycmF5KHZhbCkp
IHsKKyAgICAgICAgcmV0dXJuICJbIiArIHZhbC5tYXAoZnVuY3Rpb24oeCkge3JldHVybiBmb3Jt
YXRfdmFsdWUoeCwgc2Vlbik7fSkuam9pbigiLCAiKSArICJdIjsKKyAgICB9CisKKyAgICBzd2l0
Y2ggKHR5cGVvZiB2YWwpIHsKKyAgICBjYXNlICJzdHJpbmciOgorICAgICAgICB2YWwgPSB2YWwu
cmVwbGFjZSgiXFwiLCAiXFxcXCIpOworICAgICAgICBmb3IgKHZhciBwIGluIHJlcGxhY2VtZW50
cykgeworICAgICAgICAgICAgdmFyIHJlcGxhY2UgPSAiXFwiICsgcmVwbGFjZW1lbnRzW3BdOwor
ICAgICAgICAgICAgdmFsID0gdmFsLnJlcGxhY2UoUmVnRXhwKFN0cmluZy5mcm9tQ2hhckNvZGUo
cCksICJnIiksIHJlcGxhY2UpOworICAgICAgICB9CisgICAgICAgIHJldHVybiAnIicgKyB2YWwu
cmVwbGFjZSgvIi9nLCAnXFwiJykgKyAnIic7CisgICAgY2FzZSAiYm9vbGVhbiI6CisgICAgY2Fz
ZSAidW5kZWZpbmVkIjoKKyAgICAgICAgcmV0dXJuIFN0cmluZyh2YWwpOworICAgIGNhc2UgIm51
bWJlciI6CisgICAgICAgIC8vIEluIEphdmFTY3JpcHQsIC0wID09PSAwIGFuZCBTdHJpbmcoLTAp
ID09ICIwIiwgc28gd2UgaGF2ZSB0bworICAgICAgICAvLyBzcGVjaWFsLWNhc2UuCisgICAgICAg
IGlmICh2YWwgPT09IC0wICYmIDEvdmFsID09PSAtSW5maW5pdHkpIHsKKyAgICAgICAgICAgIHJl
dHVybiAiLTAiOworICAgICAgICB9CisgICAgICAgIHJldHVybiBTdHJpbmcodmFsKTsKKyAgICBj
YXNlICJvYmplY3QiOgorICAgICAgICBpZiAodmFsID09PSBudWxsKSB7CisgICAgICAgICAgICBy
ZXR1cm4gIm51bGwiOworICAgICAgICB9CisKKyAgICAgICAgLy8gU3BlY2lhbC1jYXNlIE5vZGUg
b2JqZWN0cywgc2luY2UgdGhvc2UgY29tZSB1cCBhIGxvdCBpbiBteSB0ZXN0cy4gIEkKKyAgICAg
ICAgLy8gaWdub3JlIG5hbWVzcGFjZXMuCisgICAgICAgIGlmIChpc19ub2RlKHZhbCkpIHsKKyAg
ICAgICAgICAgIHN3aXRjaCAodmFsLm5vZGVUeXBlKSB7CisgICAgICAgICAgICBjYXNlIE5vZGUu
RUxFTUVOVF9OT0RFOgorICAgICAgICAgICAgICAgIHZhciByZXQgPSAiPCIgKyB2YWwubG9jYWxO
YW1lOworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsLmF0dHJpYnV0ZXMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0ICs9ICIgIiArIHZhbC5hdHRy
aWJ1dGVzW2ldLm5hbWUgKyAnPSInICsgdmFsLmF0dHJpYnV0ZXNbaV0udmFsdWUgKyAnIic7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldCArPSAiPiIgKyB2YWwuaW5uZXJI
VE1MICsgIjwvIiArIHZhbC5sb2NhbE5hbWUgKyAiPiI7CisgICAgICAgICAgICAgICAgcmV0dXJu
ICJFbGVtZW50IG5vZGUgIiArIHRydW5jYXRlKHJldCwgNjApOworICAgICAgICAgICAgY2FzZSBO
b2RlLlRFWFRfTk9ERToKKyAgICAgICAgICAgICAgICByZXR1cm4gJ1RleHQgbm9kZSAiJyArIHRy
dW5jYXRlKHZhbC5kYXRhLCA2MCkgKyAnIic7CisgICAgICAgICAgICBjYXNlIE5vZGUuUFJPQ0VT
U0lOR19JTlNUUlVDVElPTl9OT0RFOgorICAgICAgICAgICAgICAgIHJldHVybiAiUHJvY2Vzc2lu
Z0luc3RydWN0aW9uIG5vZGUgd2l0aCB0YXJnZXQgIiArIGZvcm1hdF92YWx1ZSh0cnVuY2F0ZSh2
YWwudGFyZ2V0LCA2MCkpICsgIiBhbmQgZGF0YSAiICsgZm9ybWF0X3ZhbHVlKHRydW5jYXRlKHZh
bC5kYXRhLCA2MCkpOworICAgICAgICAgICAgY2FzZSBOb2RlLkNPTU1FTlRfTk9ERToKKyAgICAg
ICAgICAgICAgICByZXR1cm4gIkNvbW1lbnQgbm9kZSA8IS0tIiArIHRydW5jYXRlKHZhbC5kYXRh
LCA2MCkgKyAiLS0+IjsKKyAgICAgICAgICAgIGNhc2UgTm9kZS5ET0NVTUVOVF9OT0RFOgorICAg
ICAgICAgICAgICAgIHJldHVybiAiRG9jdW1lbnQgbm9kZSB3aXRoICIgKyB2YWwuY2hpbGROb2Rl
cy5sZW5ndGggKyAodmFsLmNoaWxkTm9kZXMubGVuZ3RoID09IDEgPyAiIGNoaWxkIiA6ICIgY2hp
bGRyZW4iKTsKKyAgICAgICAgICAgIGNhc2UgTm9kZS5ET0NVTUVOVF9UWVBFX05PREU6CisgICAg
ICAgICAgICAgICAgcmV0dXJuICJEb2N1bWVudFR5cGUgbm9kZSI7CisgICAgICAgICAgICBjYXNl
IE5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERToKKyAgICAgICAgICAgICAgICByZXR1cm4gIkRv
Y3VtZW50RnJhZ21lbnQgbm9kZSB3aXRoICIgKyB2YWwuY2hpbGROb2Rlcy5sZW5ndGggKyAodmFs
LmNoaWxkTm9kZXMubGVuZ3RoID09IDEgPyAiIGNoaWxkIiA6ICIgY2hpbGRyZW4iKTsKKyAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuICJOb2RlIG9iamVjdCBvZiB1
bmtub3duIHR5cGUiOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAvKiBmYWxscyB0
aHJvdWdoICovCisgICAgZGVmYXVsdDoKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJldHVy
biB0eXBlb2YgdmFsICsgJyAiJyArIHRydW5jYXRlKFN0cmluZyh2YWwpLCAxMDAwKSArICciJzsK
KyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICByZXR1cm4gKCJbc3RyaW5naWZ5aW5n
IG9iamVjdCB0aHJldyAiICsgU3RyaW5nKGUpICsKKyAgICAgICAgICAgICAgICAgICAgIiB3aXRo
IHR5cGUgIiArIFN0cmluZyh0eXBlb2YgZSkgKyAiXSIpOworICAgICAgICB9CisgICAgfQorfQor
CitmdW5jdGlvbiBpc19zaW5nbGVfbm9kZSh0ZW1wbGF0ZSkKK3sKKyAgICByZXR1cm4gdHlwZW9m
IHRlbXBsYXRlWzBdID09PSAic3RyaW5nIjsKK30KKworZnVuY3Rpb24gc3Vic3RpdHV0ZSh0ZW1w
bGF0ZSwgc3Vic3RpdHV0aW9ucykKK3sKKyAgICBpZiAodHlwZW9mIHRlbXBsYXRlID09PSAiZnVu
Y3Rpb24iKSB7CisgICAgICAgIHZhciByZXBsYWNlbWVudCA9IHRlbXBsYXRlKHN1YnN0aXR1dGlv
bnMpOworICAgICAgICBpZiAoIXJlcGxhY2VtZW50KSB7CisgICAgICAgICAgICByZXR1cm4gbnVs
bDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBzdWJzdGl0dXRlKHJlcGxhY2VtZW50LCBz
dWJzdGl0dXRpb25zKTsKKyAgICB9CisKKyAgICBpZiAoaXNfc2luZ2xlX25vZGUodGVtcGxhdGUp
KSB7CisgICAgICAgIHJldHVybiBzdWJzdGl0dXRlX3NpbmdsZSh0ZW1wbGF0ZSwgc3Vic3RpdHV0
aW9ucyk7CisgICAgfQorCisgICAgcmV0dXJuIGZpbHRlcihtYXAodGVtcGxhdGUsIGZ1bmN0aW9u
KHgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1YnN0aXR1dGUoeCwgc3Vi
c3RpdHV0aW9ucyk7CisgICAgICAgICAgICAgICAgICAgICAgfSksIGZ1bmN0aW9uKHgpIHtyZXR1
cm4geCAhPT0gbnVsbDt9KTsKK30KKworZnVuY3Rpb24gc3Vic3RpdHV0ZV9zaW5nbGUodGVtcGxh
dGUsIHN1YnN0aXR1dGlvbnMpCit7CisgICAgdmFyIHN1YnN0aXR1dGlvbl9yZSA9IC9cJFx7KFte
IH1dKilcfS9nOworCisgICAgZnVuY3Rpb24gZG9fc3Vic3RpdHV0aW9uKGlucHV0KSB7CisgICAg
ICAgIHZhciBjb21wb25lbnRzID0gaW5wdXQuc3BsaXQoc3Vic3RpdHV0aW9uX3JlKTsKKyAgICAg
ICAgdmFyIHJ2ID0gW107CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29tcG9uZW50cy5s
ZW5ndGg7IGkgKz0gMikgeworICAgICAgICAgICAgcnYucHVzaChjb21wb25lbnRzW2ldKTsKKyAg
ICAgICAgICAgIGlmIChjb21wb25lbnRzW2kgKyAxXSkgeworICAgICAgICAgICAgICAgIHJ2LnB1
c2goU3RyaW5nKHN1YnN0aXR1dGlvbnNbY29tcG9uZW50c1tpICsgMV1dKSk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJ2OworICAgIH0KKworICAgIGZ1bmN0aW9u
IHN1YnN0aXR1dGVfYXR0cnMoYXR0cnMsIHJ2KQorICAgIHsKKyAgICAgICAgcnZbMV0gPSB7fTsK
KyAgICAgICAgZm9yICh2YXIgbmFtZSBpbiB0ZW1wbGF0ZVsxXSkgeworICAgICAgICAgICAgaWYg
KGF0dHJzLmhhc093blByb3BlcnR5KG5hbWUpKSB7CisgICAgICAgICAgICAgICAgdmFyIG5ld19u
YW1lID0gZG9fc3Vic3RpdHV0aW9uKG5hbWUpLmpvaW4oIiIpOworICAgICAgICAgICAgICAgIHZh
ciBuZXdfdmFsdWUgPSBkb19zdWJzdGl0dXRpb24oYXR0cnNbbmFtZV0pLmpvaW4oIiIpOworICAg
ICAgICAgICAgICAgIHJ2WzFdW25ld19uYW1lXSA9IG5ld192YWx1ZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIHN1YnN0aXR1dGVfY2hpbGRyZW4oY2hp
bGRyZW4sIHJ2KQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5s
ZW5ndGg7IGkrKykgeworICAgICAgICAgICAgaWYgKGNoaWxkcmVuW2ldIGluc3RhbmNlb2YgT2Jq
ZWN0KSB7CisgICAgICAgICAgICAgICAgdmFyIHJlcGxhY2VtZW50ID0gc3Vic3RpdHV0ZShjaGls
ZHJlbltpXSwgc3Vic3RpdHV0aW9ucyk7CisgICAgICAgICAgICAgICAgaWYgKHJlcGxhY2VtZW50
ICE9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChpc19zaW5nbGVfbm9kZShyZXBs
YWNlbWVudCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJ2LnB1c2gocmVwbGFjZW1lbnQp
OworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAg
ZXh0ZW5kKHJ2LCByZXBsYWNlbWVudCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGV4dGVuZChy
diwgZG9fc3Vic3RpdHV0aW9uKFN0cmluZyhjaGlsZHJlbltpXSkpKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICByZXR1cm4gcnY7CisgICAgfQorCisgICAgdmFyIHJ2ID0gW107
CisgICAgcnYucHVzaChkb19zdWJzdGl0dXRpb24oU3RyaW5nKHRlbXBsYXRlWzBdKSkuam9pbigi
IikpOworCisgICAgaWYgKHRlbXBsYXRlWzBdID09PSAie3RleHR9IikgeworICAgICAgICBzdWJz
dGl0dXRlX2NoaWxkcmVuKHRlbXBsYXRlLnNsaWNlKDEpLCBydik7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgc3Vic3RpdHV0ZV9hdHRycyh0ZW1wbGF0ZVsxXSwgcnYpOworICAgICAgICBzdWJzdGl0
dXRlX2NoaWxkcmVuKHRlbXBsYXRlLnNsaWNlKDIpLCBydik7CisgICAgfQorCisgICAgcmV0dXJu
IHJ2OworfQorCitmdW5jdGlvbiBhc3NlcnQoZXhwZWN0ZWRfdHJ1ZSwgZnVuY3Rpb25fbmFtZSwg
ZGVzY3JpcHRpb24sIGVycm9yLCBzdWJzdGl0dXRpb25zKQoreworICAgIGlmIChleHBlY3RlZF90
cnVlICE9PSB0cnVlKSB7CisgICAgICAgIHZhciBtc2cgPSBtYWtlX21lc3NhZ2UoZnVuY3Rpb25f
bmFtZSwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3Is
IHN1YnN0aXR1dGlvbnMpOworICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRXJyb3IobXNnKTsK
KyAgICB9Cit9CisKK2Z1bmN0aW9uIEFzc2VydGlvbkVycm9yKG1lc3NhZ2UpCit7CisgICAgdGhp
cy5tZXNzYWdlID0gbWVzc2FnZTsKKyAgICB0aGlzLnN0YWNrID0gdGhpcy5nZXRfc3RhY2soKTsK
K30KKworQXNzZXJ0aW9uRXJyb3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShFcnJvci5wcm90
b3R5cGUpOworCitBc3NlcnRpb25FcnJvci5wcm90b3R5cGUuZ2V0X3N0YWNrID0gZnVuY3Rpb24o
KSB7CisgICAgdmFyIHN0YWNrID0gbmV3IEVycm9yKCkuc3RhY2s7CisgICAgLy8gSUUxMSBkb2Vz
IG5vdCBpbml0aWFsaXplICdFcnJvci5zdGFjaycgdW50aWwgdGhlIG9iamVjdCBpcyB0aHJvd24u
CisgICAgaWYgKCFzdGFjaykgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCk7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIHN0YWNrID0gZS5z
dGFjazsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vICdFcnJvci5zdGFjaycgaXMgbm90IHN1
cHBvcnRlZCBpbiBhbGwgYnJvd3NlcnMvdmVyc2lvbnMKKyAgICBpZiAoIXN0YWNrKSB7CisgICAg
ICAgIHJldHVybiAiKFN0YWNrIHRyYWNlIHVuYXZhaWxhYmxlKSI7CisgICAgfQorCisgICAgdmFy
IGxpbmVzID0gc3RhY2suc3BsaXQoIlxuIik7CisKKyAgICAvLyBDcmVhdGUgYSBwYXR0ZXJuIHRv
IG1hdGNoIHN0YWNrIGZyYW1lcyBvcmlnaW5hdGluZyB3aXRoaW4gdGVzdGhhcm5lc3MuanMuICBU
aGVzZSBpbmNsdWRlIHRoZQorICAgIC8vIHNjcmlwdCBVUkwsIGZvbGxvd2VkIGJ5IHRoZSBsaW5l
L2NvbCAoZS5nLiwgJy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanM6MTIwOjIxJykuCisgICAgLy8g
RXNjYXBlIHRoZSBVUkwgcGVyIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzU2
MTQ5My9pcy10aGVyZS1hLXJlZ2V4cC1lc2NhcGUtZnVuY3Rpb24taW4tamF2YXNjcmlwdAorICAg
IC8vIGluIGNhc2UgaXQgY29udGFpbnMgUmVnRXhwIGNoYXJhY3RlcnMuCisgICAgdmFyIHNjcmlw
dF91cmwgPSBnZXRfc2NyaXB0X3VybCgpOworICAgIHZhciByZV90ZXh0ID0gc2NyaXB0X3VybCA/
IHNjcmlwdF91cmwucmVwbGFjZSgvWy1cL1xcXiQqKz8uKCl8W1xde31dL2csICdcXCQmJykgOiAi
XFxidGVzdGhhcm5lc3MuanMiOworICAgIHZhciByZSA9IG5ldyBSZWdFeHAocmVfdGV4dCArICI6
XFxkKzpcXGQrIik7CisKKyAgICAvLyBTb21lIGJyb3dzZXJzIGluY2x1ZGUgYSBwcmVhbWJsZSB0
aGF0IHNwZWNpZmllcyB0aGUgdHlwZSBvZiB0aGUgZXJyb3Igb2JqZWN0LiAgU2tpcCB0aGlzIGJ5
CisgICAgLy8gYWR2YW5jaW5nIHVudGlsIHdlIGZpbmQgdGhlIGZpcnN0IHN0YWNrIGZyYW1lIG9y
aWdpbmF0aW5nIGZyb20gdGVzdGhhcm5lc3MuanMuCisgICAgdmFyIGkgPSAwOworICAgIHdoaWxl
ICghcmUudGVzdChsaW5lc1tpXSkgJiYgaSA8IGxpbmVzLmxlbmd0aCkgeworICAgICAgICBpKys7
CisgICAgfQorCisgICAgLy8gVGhlbiBza2lwIHRoZSB0b3AgZnJhbWVzIG9yaWdpbmF0aW5nIGZy
b20gdGVzdGhhcm5lc3MuanMgdG8gYmVnaW4gdGhlIHN0YWNrIGF0IHRoZSB0ZXN0IGNvZGUuCisg
ICAgd2hpbGUgKHJlLnRlc3QobGluZXNbaV0pICYmIGkgPCBsaW5lcy5sZW5ndGgpIHsKKyAgICAg
ICAgaSsrOworICAgIH0KKworICAgIC8vIFBhcmFub2lkIGNoZWNrIHRoYXQgd2UgZGlkbid0IHNr
aXAgYWxsIGZyYW1lcy4gIElmIHNvLCByZXR1cm4gdGhlIG9yaWdpbmFsIHN0YWNrIHVubW9kaWZp
ZWQuCisgICAgaWYgKGkgPj0gbGluZXMubGVuZ3RoKSB7CisgICAgICAgIHJldHVybiBzdGFjazsK
KyAgICB9CisKKyAgICByZXR1cm4gbGluZXMuc2xpY2UoaSkuam9pbigiXG4iKTsKK30KKworZnVu
Y3Rpb24gbWFrZV9tZXNzYWdlKGZ1bmN0aW9uX25hbWUsIGRlc2NyaXB0aW9uLCBlcnJvciwgc3Vi
c3RpdHV0aW9ucykKK3sKKyAgICBmb3IgKHZhciBwIGluIHN1YnN0aXR1dGlvbnMpIHsKKyAgICAg
ICAgaWYgKHN1YnN0aXR1dGlvbnMuaGFzT3duUHJvcGVydHkocCkpIHsKKyAgICAgICAgICAgIHN1
YnN0aXR1dGlvbnNbcF0gPSBmb3JtYXRfdmFsdWUoc3Vic3RpdHV0aW9uc1twXSk7CisgICAgICAg
IH0KKyAgICB9CisgICAgdmFyIG5vZGVfZm9ybSA9IHN1YnN0aXR1dGUoWyJ7dGV4dH0iLCAiJHtm
dW5jdGlvbl9uYW1lfTogJHtkZXNjcmlwdGlvbn0iICsgZXJyb3JdLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1lcmdlKHtmdW5jdGlvbl9uYW1lOmZ1bmN0aW9uX25hbWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOihkZXNjcmlwdGlv
bj9kZXNjcmlwdGlvbiArICIgIjoiIil9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdWJzdGl0dXRpb25zKSk7CisgICAgcmV0dXJuIG5vZGVfZm9ybS5zbGljZSgxKS5q
b2luKCIiKTsKK30KKworZnVuY3Rpb24gZmlsdGVyKGFycmF5LCBjYWxsYWJsZSwgdGhpc09iaikg
eworICAgIHZhciBydiA9IFtdOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3Ro
OyBpKyspIHsKKyAgICAgICAgaWYgKGFycmF5Lmhhc093blByb3BlcnR5KGkpKSB7CisgICAgICAg
ICAgICB2YXIgcGFzcyA9IGNhbGxhYmxlLmNhbGwodGhpc09iaiwgYXJyYXlbaV0sIGksIGFycmF5
KTsKKyAgICAgICAgICAgIGlmIChwYXNzKSB7CisgICAgICAgICAgICAgICAgcnYucHVzaChhcnJh
eVtpXSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJ2Owor
fQorCitmdW5jdGlvbiBtYXAoYXJyYXksIGNhbGxhYmxlLCB0aGlzT2JqKQoreworICAgIHZhciBy
diA9IFtdOworICAgIHJ2Lmxlbmd0aCA9IGFycmF5Lmxlbmd0aDsKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmIChhcnJheS5oYXNPd25Qcm9w
ZXJ0eShpKSkgeworICAgICAgICAgICAgcnZbaV0gPSBjYWxsYWJsZS5jYWxsKHRoaXNPYmosIGFy
cmF5W2ldLCBpLCBhcnJheSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJ2OworfQor
CitmdW5jdGlvbiBmb3JFYWNoKGFycmF5LCBjYWxsYmFjaywgdGhpc09iaikKK3sKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmIChhcnJheS5o
YXNPd25Qcm9wZXJ0eShpKSkgeworICAgICAgICAgICAgY2FsbGJhY2suY2FsbCh0aGlzT2JqLCBh
cnJheVtpXSwgaSwgYXJyYXkpOworICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiBtZXJn
ZShhLGIpCit7CisgICAgdmFyIHJ2ID0ge307CisgICAgdmFyIHA7CisgICAgZm9yIChwIGluIGEp
IHsKKyAgICAgICAgcnZbcF0gPSBhW3BdOworICAgIH0KKyAgICBmb3IgKHAgaW4gYikgeworICAg
ICAgICBydltwXSA9IGJbcF07CisgICAgfQorICAgIHJldHVybiBydjsKK30KKworZnVuY3Rpb24g
c2FtZV92YWx1ZSh4LCB5KSB7CisgICAgaWYgKHkgIT09IHkpIHsKKyAgICAgICAgLy9OYU4gY2Fz
ZQorICAgICAgICByZXR1cm4geCAhPT0geDsKKyAgICB9CisgICAgaWYgKHggPT09IDAgJiYgeSA9
PT0gMCkgeworICAgICAgICAvL0Rpc3Rpbmd1aXNoICswIGFuZCAtMAorICAgICAgICByZXR1cm4g
MS94ID09PSAxL3k7CisgICAgfQorICAgIHJldHVybiB4ID09PSB5OworfQorCitmdW5jdGlvbiBh
c3NlcnRfZXF1YWxzKGFjdHVhbCwgZXhwZWN0ZWQsIGRlc2NyaXB0aW9uKQoreworICAgICAvKgor
ICAgICAgKiBUZXN0IGlmIHR3byBwcmltaXRpdmVzIGFyZSBlcXVhbCBvciB0d28gb2JqZWN0cwor
ICAgICAgKiBhcmUgdGhlIHNhbWUgb2JqZWN0CisgICAgICAqLworICAgIGlmICh0eXBlb2YgYWN0
dWFsICE9IHR5cGVvZiBleHBlY3RlZCkgeworICAgICAgICBhc3NlcnQoZmFsc2UsICJhc3NlcnRf
ZXF1YWxzIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkICgi
ICsgdHlwZW9mIGV4cGVjdGVkICsgIikgJHtleHBlY3RlZH0gYnV0IGdvdCAoIiArIHR5cGVvZiBh
Y3R1YWwgKyAiKSAke2FjdHVhbH0iLAorICAgICAgICAgICAgICAgICAgICAgIHtleHBlY3RlZDpl
eHBlY3RlZCwgYWN0dWFsOmFjdHVhbH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGFz
c2VydChzYW1lX3ZhbHVlKGFjdHVhbCwgZXhwZWN0ZWQpLCAiYXNzZXJ0X2VxdWFscyIsIGRlc2Ny
aXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0
ZWQgJHtleHBlY3RlZH0gYnV0IGdvdCAke2FjdHVhbH0iLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7ZXhwZWN0ZWQ6ZXhwZWN0ZWQsIGFjdHVhbDphY3R1YWx9KTsK
K30KKworZnVuY3Rpb24gYXNzZXJ0X25vdF9lcXVhbHMoYWN0dWFsLCBleHBlY3RlZCwgZGVzY3Jp
cHRpb24pCit7CisgICAgIC8qCisgICAgICAqIFRlc3QgaWYgdHdvIHByaW1pdGl2ZXMgYXJlIHVu
ZXF1YWwgb3IgdHdvIG9iamVjdHMKKyAgICAgICogYXJlIGRpZmZlcmVudCBvYmplY3RzCisgICAg
ICAqLworICAgIGFzc2VydCghc2FtZV92YWx1ZShhY3R1YWwsIGV4cGVjdGVkKSwgImFzc2VydF9u
b3RfZXF1YWxzIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiZ290IGRpc2FsbG93ZWQgdmFsdWUgJHthY3R1YWx9IiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHthY3R1YWw6YWN0dWFsfSk7Cit9CisKK2Z1
bmN0aW9uIGFzc2VydF9pbl9hcnJheShhY3R1YWwsIGV4cGVjdGVkLCBkZXNjcmlwdGlvbikKK3sK
KyAgICBhc3NlcnQoZXhwZWN0ZWQuaW5kZXhPZihhY3R1YWwpICE9IC0xLCAiYXNzZXJ0X2luX2Fy
cmF5IiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgInZhbHVlICR7YWN0dWFsfSBub3QgaW4gYXJyYXkgJHtleHBlY3RlZH0iLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHthY3R1YWw6YWN0dWFsLCBleHBl
Y3RlZDpleHBlY3RlZH0pOworfQorCitmdW5jdGlvbiBhc3NlcnRfb2JqZWN0X2VxdWFscyhhY3R1
YWwsIGV4cGVjdGVkLCBkZXNjcmlwdGlvbikKK3sKKyAgICAgLy9UaGlzIG5lZWRzIHRvIGJlIGlt
cHJvdmVkIGEgZ3JlYXQgZGVhbAorICAgICBmdW5jdGlvbiBjaGVja19lcXVhbChhY3R1YWwsIGV4
cGVjdGVkLCBzdGFjaykKKyAgICAgeworICAgICAgICAgc3RhY2sucHVzaChhY3R1YWwpOworCisg
ICAgICAgICB2YXIgcDsKKyAgICAgICAgIGZvciAocCBpbiBhY3R1YWwpIHsKKyAgICAgICAgICAg
ICBhc3NlcnQoZXhwZWN0ZWQuaGFzT3duUHJvcGVydHkocCksICJhc3NlcnRfb2JqZWN0X2VxdWFs
cyIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgInVuZXhwZWN0ZWQgcHJvcGVydHkgJHtwfSIsIHtwOnB9KTsKKworICAgICAgICAg
ICAgIGlmICh0eXBlb2YgYWN0dWFsW3BdID09PSAib2JqZWN0IiAmJiBhY3R1YWxbcF0gIT09IG51
bGwpIHsKKyAgICAgICAgICAgICAgICAgaWYgKHN0YWNrLmluZGV4T2YoYWN0dWFsW3BdKSA9PT0g
LTEpIHsKKyAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2VxdWFsKGFjdHVhbFtwXSwgZXhwZWN0
ZWRbcF0sIHN0YWNrKTsKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgIGFzc2VydChzYW1lX3ZhbHVlKGFjdHVhbFtwXSwgZXhwZWN0ZWRb
cF0pLCAiYXNzZXJ0X29iamVjdF9lcXVhbHMiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcm9wZXJ0eSAke3B9IGV4cGVj
dGVkICR7ZXhwZWN0ZWR9IGdvdCAke2FjdHVhbH0iLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAge3A6cCwgZXhwZWN0ZWQ6ZXhwZWN0ZWQsIGFjdHVh
bDphY3R1YWx9KTsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9CisgICAgICAgICBmb3IgKHAg
aW4gZXhwZWN0ZWQpIHsKKyAgICAgICAgICAgICBhc3NlcnQoYWN0dWFsLmhhc093blByb3BlcnR5
KHApLAorICAgICAgICAgICAgICAgICAgICAiYXNzZXJ0X29iamVjdF9lcXVhbHMiLCBkZXNjcmlw
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIHByb3BlcnR5ICR7cH0gbWlzc2lu
ZyIsIHtwOnB9KTsKKyAgICAgICAgIH0KKyAgICAgICAgIHN0YWNrLnBvcCgpOworICAgICB9Cisg
ICAgIGNoZWNrX2VxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIFtdKTsKK30KKworZnVuY3Rpb24gYXNz
ZXJ0X2FycmF5X2VxdWFscyhhY3R1YWwsIGV4cGVjdGVkLCBkZXNjcmlwdGlvbikKK3sKKyAgICBh
c3NlcnQoYWN0dWFsLmxlbmd0aCA9PT0gZXhwZWN0ZWQubGVuZ3RoLAorICAgICAgICAgICAiYXNz
ZXJ0X2FycmF5X2VxdWFscyIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAibGVuZ3RocyBkaWZm
ZXIsIGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGdvdCAke2FjdHVhbH0iLAorICAgICAgICAgICB7ZXhw
ZWN0ZWQ6ZXhwZWN0ZWQubGVuZ3RoLCBhY3R1YWw6YWN0dWFsLmxlbmd0aH0pOworCisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBhY3R1YWwubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgYXNzZXJ0KGFj
dHVhbC5oYXNPd25Qcm9wZXJ0eShpKSA9PT0gZXhwZWN0ZWQuaGFzT3duUHJvcGVydHkoaSksCisg
ICAgICAgICAgICAgICAiYXNzZXJ0X2FycmF5X2VxdWFscyIsIGRlc2NyaXB0aW9uLAorICAgICAg
ICAgICAgICAgInByb3BlcnR5ICR7aX0sIHByb3BlcnR5IGV4cGVjdGVkIHRvIGJlICR7ZXhwZWN0
ZWR9IGJ1dCB3YXMgJHthY3R1YWx9IiwKKyAgICAgICAgICAgICAgIHtpOmksIGV4cGVjdGVkOmV4
cGVjdGVkLmhhc093blByb3BlcnR5KGkpID8gInByZXNlbnQiIDogIm1pc3NpbmciLAorICAgICAg
ICAgICAgICAgYWN0dWFsOmFjdHVhbC5oYXNPd25Qcm9wZXJ0eShpKSA/ICJwcmVzZW50IiA6ICJt
aXNzaW5nIn0pOworICAgICAgICBhc3NlcnQoc2FtZV92YWx1ZShleHBlY3RlZFtpXSwgYWN0dWFs
W2ldKSwKKyAgICAgICAgICAgICAgICJhc3NlcnRfYXJyYXlfZXF1YWxzIiwgZGVzY3JpcHRpb24s
CisgICAgICAgICAgICAgICAicHJvcGVydHkgJHtpfSwgZXhwZWN0ZWQgJHtleHBlY3RlZH0gYnV0
IGdvdCAke2FjdHVhbH0iLAorICAgICAgICAgICAgICAge2k6aSwgZXhwZWN0ZWQ6ZXhwZWN0ZWRb
aV0sIGFjdHVhbDphY3R1YWxbaV19KTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9hcHBy
b3hfZXF1YWxzKGFjdHVhbCwgZXhwZWN0ZWQsIGVwc2lsb24sIGRlc2NyaXB0aW9uKQoreworICAg
IC8qCisgICAgICogVGVzdCBpZiB0d28gcHJpbWl0aXZlIG51bWJlcnMgYXJlIGVxdWFsIHdpdGhp
bmcgKy8tIGVwc2lsb24KKyAgICAgKi8KKyAgICBhc3NlcnQodHlwZW9mIGFjdHVhbCA9PT0gIm51
bWJlciIsCisgICAgICAgICAgICJhc3NlcnRfYXBwcm94X2VxdWFscyIsIGRlc2NyaXB0aW9uLAor
ICAgICAgICAgICAiZXhwZWN0ZWQgYSBudW1iZXIgYnV0IGdvdCBhICR7dHlwZV9hY3R1YWx9IiwK
KyAgICAgICAgICAge3R5cGVfYWN0dWFsOnR5cGVvZiBhY3R1YWx9KTsKKworICAgIGFzc2VydChN
YXRoLmFicyhhY3R1YWwgLSBleHBlY3RlZCkgPD0gZXBzaWxvbiwKKyAgICAgICAgICAgImFzc2Vy
dF9hcHByb3hfZXF1YWxzIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICJleHBlY3RlZCAke2V4
cGVjdGVkfSArLy0gJHtlcHNpbG9ufSBidXQgZ290ICR7YWN0dWFsfSIsCisgICAgICAgICAgIHtl
eHBlY3RlZDpleHBlY3RlZCwgYWN0dWFsOmFjdHVhbCwgZXBzaWxvbjplcHNpbG9ufSk7Cit9CisK
K2Z1bmN0aW9uIGFzc2VydF9sZXNzX3RoYW4oYWN0dWFsLCBleHBlY3RlZCwgZGVzY3JpcHRpb24p
Cit7CisgICAgLyoKKyAgICAgKiBUZXN0IGlmIGEgcHJpbWl0aXZlIG51bWJlciBpcyBsZXNzIHRo
YW4gYW5vdGhlcgorICAgICAqLworICAgIGFzc2VydCh0eXBlb2YgYWN0dWFsID09PSAibnVtYmVy
IiwKKyAgICAgICAgICAgImFzc2VydF9sZXNzX3RoYW4iLCBkZXNjcmlwdGlvbiwKKyAgICAgICAg
ICAgImV4cGVjdGVkIGEgbnVtYmVyIGJ1dCBnb3QgYSAke3R5cGVfYWN0dWFsfSIsCisgICAgICAg
ICAgIHt0eXBlX2FjdHVhbDp0eXBlb2YgYWN0dWFsfSk7CisKKyAgICBhc3NlcnQoYWN0dWFsIDwg
ZXhwZWN0ZWQsCisgICAgICAgICAgICJhc3NlcnRfbGVzc190aGFuIiwgZGVzY3JpcHRpb24sCisg
ICAgICAgICAgICJleHBlY3RlZCBhIG51bWJlciBsZXNzIHRoYW4gJHtleHBlY3RlZH0gYnV0IGdv
dCAke2FjdHVhbH0iLAorICAgICAgICAgICB7ZXhwZWN0ZWQ6ZXhwZWN0ZWQsIGFjdHVhbDphY3R1
YWx9KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X2dyZWF0ZXJfdGhhbihhY3R1YWwsIGV4cGVjdGVk
LCBkZXNjcmlwdGlvbikKK3sKKyAgICAvKgorICAgICAqIFRlc3QgaWYgYSBwcmltaXRpdmUgbnVt
YmVyIGlzIGdyZWF0ZXIgdGhhbiBhbm90aGVyCisgICAgICovCisgICAgYXNzZXJ0KHR5cGVvZiBh
Y3R1YWwgPT09ICJudW1iZXIiLAorICAgICAgICAgICAiYXNzZXJ0X2dyZWF0ZXJfdGhhbiIsIGRl
c2NyaXB0aW9uLAorICAgICAgICAgICAiZXhwZWN0ZWQgYSBudW1iZXIgYnV0IGdvdCBhICR7dHlw
ZV9hY3R1YWx9IiwKKyAgICAgICAgICAge3R5cGVfYWN0dWFsOnR5cGVvZiBhY3R1YWx9KTsKKwor
ICAgIGFzc2VydChhY3R1YWwgPiBleHBlY3RlZCwKKyAgICAgICAgICAgImFzc2VydF9ncmVhdGVy
X3RoYW4iLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgImV4cGVjdGVkIGEgbnVtYmVyIGdyZWF0
ZXIgdGhhbiAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfSIsCisgICAgICAgICAgIHtleHBl
Y3RlZDpleHBlY3RlZCwgYWN0dWFsOmFjdHVhbH0pOworfQorCitmdW5jdGlvbiBhc3NlcnRfYmV0
d2Vlbl9leGNsdXNpdmUoYWN0dWFsLCBsb3dlciwgdXBwZXIsIGRlc2NyaXB0aW9uKQoreworICAg
IC8qCisgICAgICogVGVzdCBpZiBhIHByaW1pdGl2ZSBudW1iZXIgaXMgYmV0d2VlbiB0d28gb3Ro
ZXJzCisgICAgICovCisgICAgYXNzZXJ0KHR5cGVvZiBhY3R1YWwgPT09ICJudW1iZXIiLAorICAg
ICAgICAgICAiYXNzZXJ0X2JldHdlZW5fZXhjbHVzaXZlIiwgZGVzY3JpcHRpb24sCisgICAgICAg
ICAgICJleHBlY3RlZCBhIG51bWJlciBidXQgZ290IGEgJHt0eXBlX2FjdHVhbH0iLAorICAgICAg
ICAgICB7dHlwZV9hY3R1YWw6dHlwZW9mIGFjdHVhbH0pOworCisgICAgYXNzZXJ0KGFjdHVhbCA+
IGxvd2VyICYmIGFjdHVhbCA8IHVwcGVyLAorICAgICAgICAgICAiYXNzZXJ0X2JldHdlZW5fZXhj
bHVzaXZlIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICJleHBlY3RlZCBhIG51bWJlciBncmVh
dGVyIHRoYW4gJHtsb3dlcn0gIiArCisgICAgICAgICAgICJhbmQgbGVzcyB0aGFuICR7dXBwZXJ9
IGJ1dCBnb3QgJHthY3R1YWx9IiwKKyAgICAgICAgICAge2xvd2VyOmxvd2VyLCB1cHBlcjp1cHBl
ciwgYWN0dWFsOmFjdHVhbH0pOworfQorCitmdW5jdGlvbiBhc3NlcnRfbGVzc190aGFuX2VxdWFs
KGFjdHVhbCwgZXhwZWN0ZWQsIGRlc2NyaXB0aW9uKQoreworICAgIC8qCisgICAgICogVGVzdCBp
ZiBhIHByaW1pdGl2ZSBudW1iZXIgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGFub3RoZXIKKyAg
ICAgKi8KKyAgICBhc3NlcnQodHlwZW9mIGFjdHVhbCA9PT0gIm51bWJlciIsCisgICAgICAgICAg
ICJhc3NlcnRfbGVzc190aGFuX2VxdWFsIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICJleHBl
Y3RlZCBhIG51bWJlciBidXQgZ290IGEgJHt0eXBlX2FjdHVhbH0iLAorICAgICAgICAgICB7dHlw
ZV9hY3R1YWw6dHlwZW9mIGFjdHVhbH0pOworCisgICAgYXNzZXJ0KGFjdHVhbCA8PSBleHBlY3Rl
ZCwKKyAgICAgICAgICAgImFzc2VydF9sZXNzX3RoYW5fZXF1YWwiLCBkZXNjcmlwdGlvbiwKKyAg
ICAgICAgICAgImV4cGVjdGVkIGEgbnVtYmVyIGxlc3MgdGhhbiBvciBlcXVhbCB0byAke2V4cGVj
dGVkfSBidXQgZ290ICR7YWN0dWFsfSIsCisgICAgICAgICAgIHtleHBlY3RlZDpleHBlY3RlZCwg
YWN0dWFsOmFjdHVhbH0pOworfQorCitmdW5jdGlvbiBhc3NlcnRfZ3JlYXRlcl90aGFuX2VxdWFs
KGFjdHVhbCwgZXhwZWN0ZWQsIGRlc2NyaXB0aW9uKQoreworICAgIC8qCisgICAgICogVGVzdCBp
ZiBhIHByaW1pdGl2ZSBudW1iZXIgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGFub3RoZXIK
KyAgICAgKi8KKyAgICBhc3NlcnQodHlwZW9mIGFjdHVhbCA9PT0gIm51bWJlciIsCisgICAgICAg
ICAgICJhc3NlcnRfZ3JlYXRlcl90aGFuX2VxdWFsIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAg
ICJleHBlY3RlZCBhIG51bWJlciBidXQgZ290IGEgJHt0eXBlX2FjdHVhbH0iLAorICAgICAgICAg
ICB7dHlwZV9hY3R1YWw6dHlwZW9mIGFjdHVhbH0pOworCisgICAgYXNzZXJ0KGFjdHVhbCA+PSBl
eHBlY3RlZCwKKyAgICAgICAgICAgImFzc2VydF9ncmVhdGVyX3RoYW5fZXF1YWwiLCBkZXNjcmlw
dGlvbiwKKyAgICAgICAgICAgImV4cGVjdGVkIGEgbnVtYmVyIGdyZWF0ZXIgdGhhbiBvciBlcXVh
bCB0byAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfSIsCisgICAgICAgICAgIHtleHBlY3Rl
ZDpleHBlY3RlZCwgYWN0dWFsOmFjdHVhbH0pOworfQorCitmdW5jdGlvbiBhc3NlcnRfYmV0d2Vl
bl9pbmNsdXNpdmUoYWN0dWFsLCBsb3dlciwgdXBwZXIsIGRlc2NyaXB0aW9uKQoreworICAgIC8q
CisgICAgICogVGVzdCBpZiBhIHByaW1pdGl2ZSBudW1iZXIgaXMgYmV0d2VlbiB0byB0d28gb3Ro
ZXJzIG9yIGVxdWFsIHRvIGVpdGhlciBvZiB0aGVtCisgICAgICovCisgICAgYXNzZXJ0KHR5cGVv
ZiBhY3R1YWwgPT09ICJudW1iZXIiLAorICAgICAgICAgICAiYXNzZXJ0X2JldHdlZW5faW5jbHVz
aXZlIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICJleHBlY3RlZCBhIG51bWJlciBidXQgZ290
IGEgJHt0eXBlX2FjdHVhbH0iLAorICAgICAgICAgICB7dHlwZV9hY3R1YWw6dHlwZW9mIGFjdHVh
bH0pOworCisgICAgYXNzZXJ0KGFjdHVhbCA+PSBsb3dlciAmJiBhY3R1YWwgPD0gdXBwZXIsCisg
ICAgICAgICAgICJhc3NlcnRfYmV0d2Vlbl9pbmNsdXNpdmUiLCBkZXNjcmlwdGlvbiwKKyAgICAg
ICAgICAgImV4cGVjdGVkIGEgbnVtYmVyIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAke2xvd2Vy
fSAiICsKKyAgICAgICAgICAgImFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJHt1cHBlcn0gYnV0
IGdvdCAke2FjdHVhbH0iLAorICAgICAgICAgICB7bG93ZXI6bG93ZXIsIHVwcGVyOnVwcGVyLCBh
Y3R1YWw6YWN0dWFsfSk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF90aHJvd3MoY29kZSwgZnVuYywg
ZGVzY3JpcHRpb24pCit7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYy5jYWxsKHRoaXMpOworICAg
ICAgICBhc3NlcnQoZmFsc2UsICJhc3NlcnRfdGhyb3dzIiwgZGVzY3JpcHRpb24sCisgICAgICAg
ICAgICAgICAiJHtmdW5jfSBkaWQgbm90IHRocm93Iiwge2Z1bmM6ZnVuY30pOworICAgIH0gY2F0
Y2ggKGUpIHsKKyAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBBc3NlcnRpb25FcnJvcikgeworICAg
ICAgICAgICAgdGhyb3cgZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY29kZSA9PT0gbnVsbCkg
eworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmICh0eXBlb2YgY29k
ZSA9PT0gIm9iamVjdCIpIHsKKyAgICAgICAgICAgIGFzc2VydCh0eXBlb2YgZSA9PSAib2JqZWN0
IiAmJiAibmFtZSIgaW4gZSAmJiBlLm5hbWUgPT0gY29kZS5uYW1lLAorICAgICAgICAgICAgICAg
ICAgICJhc3NlcnRfdGhyb3dzIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgIiR7
ZnVuY30gdGhyZXcgJHthY3R1YWx9ICgke2FjdHVhbF9uYW1lfSkgZXhwZWN0ZWQgJHtleHBlY3Rl
ZH0gKCR7ZXhwZWN0ZWRfbmFtZX0pIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
e2Z1bmM6ZnVuYywgYWN0dWFsOmUsIGFjdHVhbF9uYW1lOmUubmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkOmNvZGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBleHBlY3RlZF9uYW1lOmNvZGUubmFtZX0pOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgdmFyIGNvZGVfbmFtZV9tYXAgPSB7CisgICAgICAgICAg
ICBJTkRFWF9TSVpFX0VSUjogJ0luZGV4U2l6ZUVycm9yJywKKyAgICAgICAgICAgIEhJRVJBUkNI
WV9SRVFVRVNUX0VSUjogJ0hpZXJhcmNoeVJlcXVlc3RFcnJvcicsCisgICAgICAgICAgICBXUk9O
R19ET0NVTUVOVF9FUlI6ICdXcm9uZ0RvY3VtZW50RXJyb3InLAorICAgICAgICAgICAgSU5WQUxJ
RF9DSEFSQUNURVJfRVJSOiAnSW52YWxpZENoYXJhY3RlckVycm9yJywKKyAgICAgICAgICAgIE5P
X01PRElGSUNBVElPTl9BTExPV0VEX0VSUjogJ05vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yJywK
KyAgICAgICAgICAgIE5PVF9GT1VORF9FUlI6ICdOb3RGb3VuZEVycm9yJywKKyAgICAgICAgICAg
IE5PVF9TVVBQT1JURURfRVJSOiAnTm90U3VwcG9ydGVkRXJyb3InLAorICAgICAgICAgICAgSU5V
U0VfQVRUUklCVVRFX0VSUjogJ0luVXNlQXR0cmlidXRlRXJyb3InLAorICAgICAgICAgICAgSU5W
QUxJRF9TVEFURV9FUlI6ICdJbnZhbGlkU3RhdGVFcnJvcicsCisgICAgICAgICAgICBTWU5UQVhf
RVJSOiAnU3ludGF4RXJyb3InLAorICAgICAgICAgICAgSU5WQUxJRF9NT0RJRklDQVRJT05fRVJS
OiAnSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yJywKKyAgICAgICAgICAgIE5BTUVTUEFDRV9FUlI6
ICdOYW1lc3BhY2VFcnJvcicsCisgICAgICAgICAgICBJTlZBTElEX0FDQ0VTU19FUlI6ICdJbnZh
bGlkQWNjZXNzRXJyb3InLAorICAgICAgICAgICAgVFlQRV9NSVNNQVRDSF9FUlI6ICdUeXBlTWlz
bWF0Y2hFcnJvcicsCisgICAgICAgICAgICBTRUNVUklUWV9FUlI6ICdTZWN1cml0eUVycm9yJywK
KyAgICAgICAgICAgIE5FVFdPUktfRVJSOiAnTmV0d29ya0Vycm9yJywKKyAgICAgICAgICAgIEFC
T1JUX0VSUjogJ0Fib3J0RXJyb3InLAorICAgICAgICAgICAgVVJMX01JU01BVENIX0VSUjogJ1VS
TE1pc21hdGNoRXJyb3InLAorICAgICAgICAgICAgUVVPVEFfRVhDRUVERURfRVJSOiAnUXVvdGFF
eGNlZWRlZEVycm9yJywKKyAgICAgICAgICAgIFRJTUVPVVRfRVJSOiAnVGltZW91dEVycm9yJywK
KyAgICAgICAgICAgIElOVkFMSURfTk9ERV9UWVBFX0VSUjogJ0ludmFsaWROb2RlVHlwZUVycm9y
JywKKyAgICAgICAgICAgIERBVEFfQ0xPTkVfRVJSOiAnRGF0YUNsb25lRXJyb3InCisgICAgICAg
IH07CisKKyAgICAgICAgdmFyIG5hbWUgPSBjb2RlIGluIGNvZGVfbmFtZV9tYXAgPyBjb2RlX25h
bWVfbWFwW2NvZGVdIDogY29kZTsKKworICAgICAgICB2YXIgbmFtZV9jb2RlX21hcCA9IHsKKyAg
ICAgICAgICAgIEluZGV4U2l6ZUVycm9yOiAxLAorICAgICAgICAgICAgSGllcmFyY2h5UmVxdWVz
dEVycm9yOiAzLAorICAgICAgICAgICAgV3JvbmdEb2N1bWVudEVycm9yOiA0LAorICAgICAgICAg
ICAgSW52YWxpZENoYXJhY3RlckVycm9yOiA1LAorICAgICAgICAgICAgTm9Nb2RpZmljYXRpb25B
bGxvd2VkRXJyb3I6IDcsCisgICAgICAgICAgICBOb3RGb3VuZEVycm9yOiA4LAorICAgICAgICAg
ICAgTm90U3VwcG9ydGVkRXJyb3I6IDksCisgICAgICAgICAgICBJblVzZUF0dHJpYnV0ZUVycm9y
OiAxMCwKKyAgICAgICAgICAgIEludmFsaWRTdGF0ZUVycm9yOiAxMSwKKyAgICAgICAgICAgIFN5
bnRheEVycm9yOiAxMiwKKyAgICAgICAgICAgIEludmFsaWRNb2RpZmljYXRpb25FcnJvcjogMTMs
CisgICAgICAgICAgICBOYW1lc3BhY2VFcnJvcjogMTQsCisgICAgICAgICAgICBJbnZhbGlkQWNj
ZXNzRXJyb3I6IDE1LAorICAgICAgICAgICAgVHlwZU1pc21hdGNoRXJyb3I6IDE3LAorICAgICAg
ICAgICAgU2VjdXJpdHlFcnJvcjogMTgsCisgICAgICAgICAgICBOZXR3b3JrRXJyb3I6IDE5LAor
ICAgICAgICAgICAgQWJvcnRFcnJvcjogMjAsCisgICAgICAgICAgICBVUkxNaXNtYXRjaEVycm9y
OiAyMSwKKyAgICAgICAgICAgIFF1b3RhRXhjZWVkZWRFcnJvcjogMjIsCisgICAgICAgICAgICBU
aW1lb3V0RXJyb3I6IDIzLAorICAgICAgICAgICAgSW52YWxpZE5vZGVUeXBlRXJyb3I6IDI0LAor
ICAgICAgICAgICAgRGF0YUNsb25lRXJyb3I6IDI1LAorCisgICAgICAgICAgICBFbmNvZGluZ0Vy
cm9yOiAwLAorICAgICAgICAgICAgTm90UmVhZGFibGVFcnJvcjogMCwKKyAgICAgICAgICAgIFVu
a25vd25FcnJvcjogMCwKKyAgICAgICAgICAgIENvbnN0cmFpbnRFcnJvcjogMCwKKyAgICAgICAg
ICAgIERhdGFFcnJvcjogMCwKKyAgICAgICAgICAgIFRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcjog
MCwKKyAgICAgICAgICAgIFJlYWRPbmx5RXJyb3I6IDAsCisgICAgICAgICAgICBWZXJzaW9uRXJy
b3I6IDAsCisgICAgICAgICAgICBPcGVyYXRpb25FcnJvcjogMCwKKyAgICAgICAgICAgIE5vdEFs
bG93ZWRFcnJvcjogMAorICAgICAgICB9OworCisgICAgICAgIGlmICghKG5hbWUgaW4gbmFtZV9j
b2RlX21hcCkpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25FcnJvcignVGVzdCBi
dWc6IHVucmVjb2duaXplZCBET01FeGNlcHRpb24gY29kZSAiJyArIGNvZGUgKyAnIiBwYXNzZWQg
dG8gYXNzZXJ0X3Rocm93cygpJyk7CisgICAgICAgIH0KKworICAgICAgICB2YXIgcmVxdWlyZWRf
cHJvcHMgPSB7IGNvZGU6IG5hbWVfY29kZV9tYXBbbmFtZV0gfTsKKworICAgICAgICBpZiAocmVx
dWlyZWRfcHJvcHMuY29kZSA9PT0gMCB8fAorICAgICAgICAgICAodHlwZW9mIGUgPT0gIm9iamVj
dCIgJiYKKyAgICAgICAgICAgICJuYW1lIiBpbiBlICYmCisgICAgICAgICAgICBlLm5hbWUgIT09
IGUubmFtZS50b1VwcGVyQ2FzZSgpICYmCisgICAgICAgICAgICBlLm5hbWUgIT09ICJET01FeGNl
cHRpb24iKSkgeworICAgICAgICAgICAgLy8gTmV3IHN0eWxlIGV4Y2VwdGlvbjogYWxzbyB0ZXN0
IHRoZSBuYW1lIHByb3BlcnR5LgorICAgICAgICAgICAgcmVxdWlyZWRfcHJvcHMubmFtZSA9IG5h
bWU7CisgICAgICAgIH0KKworICAgICAgICAvL1dlJ2QgbGlrZSB0byB0ZXN0IHRoYXQgZSBpbnN0
YW5jZW9mIHRoZSBhcHByb3ByaWF0ZSBpbnRlcmZhY2UsCisgICAgICAgIC8vYnV0IHdlIGNhbid0
LCBiZWNhdXNlIHdlIGRvbid0IGtub3cgd2hhdCB3aW5kb3cgaXQgd2FzIGNyZWF0ZWQKKyAgICAg
ICAgLy9pbi4gIEl0IG1pZ2h0IGJlIGFuIGluc3RhbmNlb2YgdGhlIGFwcHJvcHJpYXRlIGludGVy
ZmFjZSBvbiBzb21lCisgICAgICAgIC8vdW5rbm93biBvdGhlciB3aW5kb3cuICBUT0RPOiBXb3Jr
IGFyb3VuZCB0aGlzIHNvbWVob3c/CisKKyAgICAgICAgYXNzZXJ0KHR5cGVvZiBlID09ICJvYmpl
Y3QiLAorICAgICAgICAgICAgICAgImFzc2VydF90aHJvd3MiLCBkZXNjcmlwdGlvbiwKKyAgICAg
ICAgICAgICAgICIke2Z1bmN9IHRocmV3ICR7ZX0gd2l0aCB0eXBlICR7dHlwZX0sIG5vdCBhbiBv
YmplY3QiLAorICAgICAgICAgICAgICAge2Z1bmM6ZnVuYywgZTplLCB0eXBlOnR5cGVvZiBlfSk7
CisKKyAgICAgICAgZm9yICh2YXIgcHJvcCBpbiByZXF1aXJlZF9wcm9wcykgeworICAgICAgICAg
ICAgYXNzZXJ0KHR5cGVvZiBlID09ICJvYmplY3QiICYmIHByb3AgaW4gZSAmJiBlW3Byb3BdID09
IHJlcXVpcmVkX3Byb3BzW3Byb3BdLAorICAgICAgICAgICAgICAgICAgICJhc3NlcnRfdGhyb3dz
IiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgIiR7ZnVuY30gdGhyZXcgJHtlfSB0
aGF0IGlzIG5vdCBhIERPTUV4Y2VwdGlvbiAiICsgY29kZSArICI6IHByb3BlcnR5ICR7cHJvcH0g
aXMgZXF1YWwgdG8gJHthY3R1YWx9LCBleHBlY3RlZCAke2V4cGVjdGVkfSIsCisgICAgICAgICAg
ICAgICAgICAge2Z1bmM6ZnVuYywgZTplLCBwcm9wOnByb3AsIGFjdHVhbDplW3Byb3BdLCBleHBl
Y3RlZDpyZXF1aXJlZF9wcm9wc1twcm9wXX0pOworICAgICAgICB9CisgICAgfQorfQorCisvKgor
ICogUmV0dXJuIHRydWUgaWYgb2JqZWN0IGlzIHByb2JhYmx5IGEgTm9kZSBvYmplY3QuCisgKi8K
K2Z1bmN0aW9uIGlzX25vZGUob2JqZWN0KQoreworICAgIC8vIEkgdXNlIGR1Y2stdHlwaW5nIGlu
c3RlYWQgb2YgaW5zdGFuY2VvZiwgYmVjYXVzZQorICAgIC8vIGluc3RhbmNlb2YgZG9lc24ndCB3
b3JrIGlmIHRoZSBub2RlIGlzIGZyb20gYW5vdGhlciB3aW5kb3cgKGxpa2UgYW4KKyAgICAvLyBp
ZnJhbWUncyBjb250ZW50V2luZG93KToKKyAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9CdWdzL1B1
YmxpYy9zaG93X2J1Zy5jZ2k/aWQ9MTIyOTUKKyAgICB0cnkgeworICAgICAgICB2YXIgaGFzX25v
ZGVfcHJvcGVydGllcyA9ICgibm9kZVR5cGUiIGluIG9iamVjdCAmJgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAibm9kZU5hbWUiIGluIG9iamVjdCAmJgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAibm9kZVZhbHVlIiBpbiBvYmplY3QgJiYKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImNoaWxkTm9kZXMiIGluIG9iamVjdCk7CisgICAg
fSBjYXRjaCAoZSkgeworICAgICAgICAvLyBXZSdyZSBwcm9iYWJseSBjcm9zcy1vcmlnaW4sIHdo
aWNoIG1lYW5zIHdlIGFyZW4ndCBhIG5vZGUKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIGlmIChoYXNfbm9kZV9wcm9wZXJ0aWVzKSB7CisgICAgICAgIHRyeSB7CisgICAgICAg
ICAgICBvYmplY3Qubm9kZVR5cGU7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAg
IC8vIFRoZSBvYmplY3QgaXMgcHJvYmFibHkgTm9kZS5wcm90b3R5cGUgb3IgYW5vdGhlciBwcm90
b3R5cGUKKyAgICAgICAgICAgIC8vIG9iamVjdCB0aGF0IGluaGVyaXRzIGZyb20gaXQsIGFuZCBu
b3QgYSBOb2RlIGluc3RhbmNlLgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3Zh
ciByZXBsYWNlbWVudHMgPSB7CisgICAgIjAiOiAiMCIsCisgICAgIjEiOiAieDAxIiwKKyAgICAi
MiI6ICJ4MDIiLAorICAgICIzIjogIngwMyIsCisgICAgIjQiOiAieDA0IiwKKyAgICAiNSI6ICJ4
MDUiLAorICAgICI2IjogIngwNiIsCisgICAgIjciOiAieDA3IiwKKyAgICAiOCI6ICJiIiwKKyAg
ICAiOSI6ICJ0IiwKKyAgICAiMTAiOiAibiIsCisgICAgIjExIjogInYiLAorICAgICIxMiI6ICJm
IiwKKyAgICAiMTMiOiAiciIsCisgICAgIjE0IjogIngwZSIsCisgICAgIjE1IjogIngwZiIsCisg
ICAgIjE2IjogIngxMCIsCisgICAgIjE3IjogIngxMSIsCisgICAgIjE4IjogIngxMiIsCisgICAg
IjE5IjogIngxMyIsCisgICAgIjIwIjogIngxNCIsCisgICAgIjIxIjogIngxNSIsCisgICAgIjIy
IjogIngxNiIsCisgICAgIjIzIjogIngxNyIsCisgICAgIjI0IjogIngxOCIsCisgICAgIjI1Ijog
IngxOSIsCisgICAgIjI2IjogIngxYSIsCisgICAgIjI3IjogIngxYiIsCisgICAgIjI4IjogIngx
YyIsCisgICAgIjI5IjogIngxZCIsCisgICAgIjMwIjogIngxZSIsCisgICAgIjMxIjogIngxZiIs
CisgICAgIjB4ZmZmZCI6ICJ1ZmZmZCIsCisgICAgIjB4ZmZmZSI6ICJ1ZmZmZSIsCisgICAgIjB4
ZmZmZiI6ICJ1ZmZmZiIsCit9OworCitmdW5jdGlvbiBleHRlbmQoYXJyYXksIGl0ZW1zKQorewor
ICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGFycmF5LCBpdGVtcyk7Cit9CisKK2Z1bmN0
aW9uIGdldF9zY3JpcHRfdXJsKCkKK3sKKyAgICByZXR1cm4gIi8iOworfQorCisvKgorICogUmV0
dXJuIGEgc3RyaW5nIHRydW5jYXRlZCB0byB0aGUgZ2l2ZW4gbGVuZ3RoLCB3aXRoIC4uLiBhZGRl
ZCBhdCB0aGUgZW5kCisgKiBpZiBpdCB3YXMgbG9uZ2VyLgorICovCitmdW5jdGlvbiB0cnVuY2F0
ZShzLCBsZW4pCit7CisgICAgaWYgKHMubGVuZ3RoID4gbGVuKSB7CisgICAgICAgIHJldHVybiBz
LnN1YnN0cmluZygwLCBsZW4gLSAzKSArICIuLi4iOworICAgIH0KKyAgICByZXR1cm4gczsKK30K
KworZnVuY3Rpb24gYXNzZXJ0X3RydWUoYWN0dWFsLCBkZXNjcmlwdGlvbikKK3sKKyAgICBhc3Nl
cnQoYWN0dWFsID09PSB0cnVlLCAiYXNzZXJ0X3RydWUiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgdHJ1ZSBnb3QgJHthY3R1YWx9Iiwge2FjdHVh
bDphY3R1YWx9KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X2ZhbHNlKGFjdHVhbCwgZGVzY3JpcHRp
b24pCit7CisgICAgYXNzZXJ0KGFjdHVhbCA9PT0gZmFsc2UsICJhc3NlcnRfZmFsc2UiLCBkZXNj
cmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIGZhbHNlIGdv
dCAke2FjdHVhbH0iLCB7YWN0dWFsOmFjdHVhbH0pOworfQorCitmdW5jdGlvbiB0ZXN0KHRzdCwg
bmFtZSkgeworICB0cnkgeworICAgIHRzdCgpOworICB9IGNhdGNoIChlKSB7CisgICAgaWYgKCFQ
YWludFdvcmtsZXRHbG9iYWxTY29wZS5lcnJvcnMpCisgICAgICBQYWludFdvcmtsZXRHbG9iYWxT
Y29wZS5lcnJvcnMgPSBbXTsKKyAgICAgIFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmVycm9ycy5w
dXNoKHsgbmFtZTogbmFtZSwgZXJyb3I6IGUubWVzc2FnZSB9KTsKKyAgfQorICBQYWludFdvcmts
ZXRHbG9iYWxTY29wZS5oYXNSdW5BVGVzdCA9IHRydWU7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIGIvTGF5
b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xYjEzZDQzMjkwZjgzNGQwZjlhNjk5MzA1MDBhNjdhYzE1YmY1ZWRmCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcwpAQCAtMCwwICsxLDIzIEBACitpZiAod2luZG93LnRlc3RSdW5uZXIp
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCisvLyBJbXBvcnRzIGNvZGUgaW50byBhIHdv
cmtsZXQsIHdpdGggc29tZSBoZWxwZXJzLgorYXN5bmMgZnVuY3Rpb24gaW1wb3J0V29ya2xldCh3
b3JrbGV0LCBjb2RlKSB7CisgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goInJlc291cmNl
cy90ZXN0aGFybmVzcy13b3JrbGV0LmpzIik7CisgIGNvbnN0IGZpbmFsQ29kZSA9IChhd2FpdCBy
ZXNwb25zZS50ZXh0KCkpICsgY29kZTsKKworICBsZXQgdXJsOworICAvLyBGSVhNRTogVGhpcyBp
cyB0ZW1wb3JhcnksIHVudGlsIHdlIHN1cHBvcnQgbG9hZGluZyBzY3JpcHRzIGJ5IHVybAorICBp
ZiAod2luZG93LmNocm9tZSkgeworICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbZmluYWxDb2Rl
XSwge3R5cGU6ICd0ZXh0L2phdmFzY3JpcHQnfSk7CisgICAgdXJsID0gVVJMLmNyZWF0ZU9iamVj
dFVSTChibG9iKTsKKyAgfSBlbHNlIHsKKyAgICB1cmwgPSBmaW5hbENvZGU7CisgIH0KKworICB3
b3JrbGV0LmFkZE1vZHVsZSh1cmwpOworICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cisg
ICAgfSwgMzAwMCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1
c3RvbS1wYWludC93b3JrbGV0LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1j
dXN0b20tcGFpbnQvd29ya2xldC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiNDJiNjJkYTEz
ZWRhODE5NjEwYjMxOTdiNGU0NWE1NDczYmRjZjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvd29ya2xldC1leHBlY3RlZC5odG1sCkBAIC0wLDAg
KzEsMTYgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhwZXJp
bWVudGFsOkNTU1BhaW50aW5nQVBJRW5hYmxlZD10cnVlIF0gLS0+CisKKzxjYW52YXMgaWQ9InBh
aW50IiB3aWR0aD0iMTUwcHgiIGhlaWdodD0iMTUwcHgiID48L2NhbnZhcz4KKworPHNjcmlwdCBp
ZD0iY29kZSI+Cit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhaW50Jyk7
Cit2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7CisKK2ZvciAodmFyIGkgPSAwOyBp
IDwgNjsgaSsrKXsKKyAgZm9yICh2YXIgaiA9IDA7IGogPCA2OyBqKyspeworICAgIGN0eC5maWxs
U3R5bGUgPSAncmdiKCcgKyBNYXRoLmZsb29yKDI1NSAtIDQyLjUgKiBpKSArICcsJyArCisgICAg
ICAgICAgICAgICAgICAgICBNYXRoLmZsb29yKDI1NSAtIDQyLjUgKiBqKSArICcsMCknOworICAg
IGN0eC5maWxsUmVjdChqICogMjUsIGkgKiAyNSwgMjUsIDI1KTsKKyAgfQorfQorPC9zY3JpcHQ+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvd29ya2xldC5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3dvcmtsZXQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yY2ZmOTM1Njg1MzQyMDRhMmFhMGNjNmU4ZDllODk0NDAxMmUyZTY1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3dvcmtsZXQuaHRt
bApAQCAtMCwwICsxLDQyIEBACis8IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5l
ciBbIGV4cGVyaW1lbnRhbDpDU1NQYWludGluZ0FQSUVuYWJsZWQ9dHJ1ZSBdIC0tPgorPG1ldGEg
bmFtZT0iYXV0aG9yIiB0aXRsZT0iSnVzdGluIE1pY2hhdWQiIGhyZWY9Im1haWx0bzpqdXN0aW5f
bWljaGF1ZEB3ZWJraXQub3JnIj4KKzxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0iVGVzdCB3
b3JrbGV0IGFkZE1vZHVsZSBhbmQgZ2xvYmFsIG9iamVjdCI+Cis8bGluayByZWw9ImhlbHAiIGNv
bnRlbnQ9Imh0dHBzOi8vZHJhZnRzLmNzcy1ob3VkaW5pLm9yZy9jc3MtcGFpbnQtYXBpLTEvIj4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorCis8c3R5
bGU+CisgICNwYWludCB7CisgICAgYmFja2dyb3VuZC1pbWFnZTogcGFpbnQobXktcGFpbnQpOwor
ICAgIHdpZHRoOiAxNTBweDsKKyAgICBoZWlnaHQ6IDE1MHB4OworICB9Cis8L3N0eWxlPgorCis8
ZGl2IGlkPSJwYWludCI+PC9kaXY+CisKKzxzY3JpcHQgaWQ9ImNvZGUiIHR5cGU9InRleHQvd29y
a2xldCI+CitjbGFzcyBNeVBhaW50IHsKKyAgcGFpbnQoY3R4LCBnZW9tLCBwcm9wZXJ0aWVzKSB7
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspeworICAgICAgZm9yICh2YXIgaiA9IDA7
IGogPCA2OyBqKyspeworICAgICAgICBjdHguZmlsbFN0eWxlID0gJ3JnYignICsgTWF0aC5mbG9v
cigyNTUgLSA0Mi41ICogaSkgKyAnLCcgKworICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGgu
Zmxvb3IoMjU1IC0gNDIuNSAqIGopICsgJywwKSc7CisgICAgICAgIGN0eC5maWxsUmVjdChqICog
MjUsIGkgKiAyNSwgMjUsIDI1KTsKKyAgICAgIH0KKyAgICB9CisgICAgY29uc29sZS5sb2coIkhl
bGxvIGZyb20gcGFpbnQgY2FsbGJhY2shIik7CisgICAgYXNzZXJ0X2dyZWF0ZXJfdGhhbihldmFs
KCJkZXZpY2VQaXhlbFJhdGlvIiksIDApOworICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1Jl
ZmVyZW5jZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgZXZhbCgid2luZG93Iik7IH0pOworCisgICAg
Y29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsgY29uc29s
ZS5sb2coIkluIHByb21pc2UiKTsgcmVzb2x2ZSgpIH0pOworICAgIHByb21pc2UudGhlbigoKSA9
PiBjb25zb2xlLmxvZygiUHJvbWlzZSB3YXMgcmVzb2x2ZWQiKSk7CisgIH0KK30KK2NvbnNvbGUu
bG9nKCJIZWxsbyBmcm9tIHBhaW50IHdvcmtsZXQhIik7CityZWdpc3RlclBhaW50KCdteS1wYWlu
dCcsIE15UGFpbnQpOworY29uc29sZS5sb2coV2luZG93KTsgLy8gdGVzdCB0aGF0IHVuY2F1Z2h0
IGV4Y2VwdGlvbnMgZG8gbm90IGFmZmVjdCByZWdpc3RlcmVkIHBhaW50IGNhbGxiYWNrcworPC9z
Y3JpcHQ+CisKKzxzY3JpcHQ+CitpbXBvcnRXb3JrbGV0KENTUy5wYWludFdvcmtsZXQsIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdjb2RlJykudGV4dENvbnRlbnQpOworPC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353311</attachid>
            <date>2018-10-29 12:57:26 -0700</date>
            <delta_ts>2018-10-29 13:16:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190979-20181029125725.patch</filename>
            <type>text/plain</type>
            <size>181629</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjQ4NmIwMmU1NmRmOTIz
MGM2MTUyMTYzZWI3MmZkYzA0OTBmMzgxNS4uY2RlYzcwMThjNzcwZjk2NzczYjEzOTNhMWMzZTVm
ZjE5YjI0YzMyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MyBAQAorMjAxOC0xMC0yNiAgSnVz
dGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIG5l
dyBnbG9iYWwgb2JqZWN0IGFuZCBwcmVsaW1pbmFyeSBXb3JrbGV0cyBzdXBwb3J0IGZvciBDU1Mg
cGFpbnRpbmcgYXBpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTA5NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUZXN0OiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvd29ya2xldC5odG1sCisKKyAgICAgICAg
QWRkIGEgbmV3IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgYW5kIGdsb2JhbCBvYmplY3QgdG8gcnVu
IHdvcmtsZXRzIGluLiBUaGlzIGlzIG1vc3RseSBjb3B5K3Bhc3RlCisgICAgICAgIGZyb20gV29y
a2VycywgYnV0IHdpdGhvdXQgYW55IG9mIHRoZSB0aHJlYWRpbmcuIFdvcmtsZXQuYWRkTW9kdWxl
IGRvZXMgbm90IHlldCBzdXBwb3J0IGxvYWRpbmcgc2NyaXB0cworICAgICAgICBvciBkb2luZyBj
cm9zcyBvcmlnaW4gY2hlY2tpbmcuIFRoZXJlIGFyZSBxdWl0ZSBhIGZldyBwYXJ0cyBvZiB0aGUg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCBhcGkgdGhhdCBhcmUKKyAgICAgICAgbGVmdCBhcyBBU1NF
UlRfTk9UX1JFQUNIRUQoKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2Jq
ZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0IGNvbnN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20u
Y3BwLgorICAgICAgICAoV2ViQ29yZTo6SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6dmlzaXRB
ZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNQYWludFdvcmtsZXRHbG9i
YWxTY29wZTo6cmVnaXN0ZXJQYWludCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrbGV0
R2xvYmFsU2NvcGVCYXNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtsZXRH
bG9iYWxTY29wZUJhc2U6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZSk6CisgICAgICAgIChXZWJD
b3JlOjpKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6Y2xlYXJET01HdWFyZGVkT2JqZWN0
cyk6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnZpc2l0Q2hp
bGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpkZXN0
cm95KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtsZXRHbG9i
YWxTY29wZUJhc2U6OnN1cHBvcnRzUmljaFNvdXJjZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6
SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzaG91bGRJbnRlcnJ1cHRTY3JpcHQpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzaG91bGRJbnRlcnJ1cHRTY3Jp
cHRCZWZvcmVUaW1lb3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3Bl
QmFzZTo6amF2YVNjcmlwdFJ1bnRpbWVGbGFncyk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToK
KyAgICAgICAgKFdlYkNvcmU6OnRvSlNXb3JrbGV0R2xvYmFsU2NvcGUpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6d3JhcHBlZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnByb3h5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6Y3JlYXRlU3RydWN0dXJlKToK
KyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFN0
YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29w
ZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjU3RhdGVGcm9tV29ya2xldEdsb2JhbFNjb3BlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKElzRE9NR2xvYmFsT2JqZWN0KToKKyAgICAgICAg
KFNob3VsZFVzZUdsb2JhbE9iamVjdFByb3RvdHlwZSk6CisgICAgICAgIChHZW5lcmF0ZUhlYWRl
cik6CisgICAgICAgIChHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZ0ZvckV4
cG9zZWQpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGw6CisgICAgICAgICogY3NzL0NTU1BhaW50
SW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYWludEltYWdlVmFsdWU6Omlt
YWdlKToKKyAgICAgICAgKiBjc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRPTUNTU1BhaW50V29ya2xldDo6ZW5zdXJlUGFpbnRXb3JrbGV0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTUNTU1BhaW50V29ya2xldDo6ZW5zdXJlUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9ET01DU1NQYWludFdvcmtsZXQuaDoKKyAgICAg
ICAgKiBjc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmlkbDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVuc3VyZUNTU1BhaW50V29ya2xldCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVuc3VyZUNTU1BhaW50V29ya2xldEds
b2JhbFNjb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpnZXRDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSk6CisgICAg
ICAgICogZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbjoKKyAgICAgICAgKiBkb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0Ojp2bSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpleGVj
U3RhdGUpOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojppc1dvcmtsZXRHbG9iYWxTY29wZSBj
b25zdCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dlckFnZW50OjppbmplY3Rl
ZFNjcmlwdEZvckV2YWwpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtl
clJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1lQWdlbnQ6
OmluamVjdGVkU2NyaXB0Rm9yRXZhbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3Vz
dG9tUGFpbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludEltYWdlOjpD
dXN0b21QYWludEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50SW1hZ2U6OmRv
Q3VzdG9tUGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1h
Z2UuaDoKKyAgICAgICAgKiB3b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHA6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5j
cHAuCisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludFdvcmtsZXRH
bG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6
ZGV2aWNlUGl4ZWxSYXRpbyk6CisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxT
Y29wZTo6YWRkUmVnaXN0ZXJlZFBhaW50KToKKyAgICAgICAgKiB3b3JrbGV0cy9QYWludFdvcmts
ZXRHbG9iYWxTY29wZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50
V29ya2xldEdsb2JhbFNjb3BlLmguCisgICAgICAgICogd29ya2xldHMvUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUuaWRsLgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXQuY3BwOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
LgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtsZXQ6OldvcmtsZXQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldDo6YWRkTW9kdWxl
KToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwLgorICAgICAgICAqIHdvcmts
ZXRzL1dvcmtsZXQuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUuaWRsLgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRDb25zb2xl
Q2xpZW50LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93
b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0
Q29uc29sZUNsaWVudDo6V29ya2xldENvbnNvbGVDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2xldENvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtsZXRDb25zb2xlQ2xpZW50Ojpjb3VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrbGV0Q29uc29sZUNsaWVudDo6dGltZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0
Q29uc29sZUNsaWVudDo6dGltZUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29s
ZUNsaWVudDo6cHJvZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29sZUNsaWVu
dDo6cHJvZmlsZUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29sZUNsaWVudDo6
dGFrZUhlYXBTbmFwc2hvdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29sZUNsaWVu
dDo6dGltZVN0YW1wKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRDb25zb2xlQ2xpZW50Ojpy
ZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldENvbnNvbGVDbGllbnQ6OnJlY29yZEVu
ZCk6CisgICAgICAgICogd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuaDogQWRkZWQuCisg
ICAgICAgICogd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxTY29wZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6On5Xb3JrbGV0R2xvYmFsU2NvcGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpldmFsdWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmlzSlNFeGVjdXRpb25Gb3JiaWRkZW4gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpkaXNhYmxlRXZhbCk6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmRpc2FibGVXZWJBc3NlbWJs
eSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmNvbXBsZXRlVVJMIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6bG9nRXhjZXB0aW9u
VG9Db25zb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29u
c29sZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjphZGRN
ZXNzYWdlKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmlzUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpp
ZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6
c2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6anNSdW50aW1l
RmxhZ3MgY29uc3QpOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3Jr
bGV0R2xvYmFsU2NvcGUuaWRsOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlLmlkbC4KKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0U2Ny
aXB0Q29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlw
dENvbnRyb2xsZXI6OldvcmtsZXRTY3JpcHRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjp+V29ya2xldFNjcmlwdENvbnRyb2xsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmZvcmJpZEV4ZWN1dGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6aXNFeGVjdXRpb25G
b3JiaWRkZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xs
ZXI6OmRpc2FibGVFdmFsKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRTY3JpcHRDb250cm9s
bGVyOjpkaXNhYmxlV2ViQXNzZW1ibHkpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlw
dENvbnRyb2xsZXI6OmluaXRTY3JpcHRXaXRoU3ViY2xhc3MpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtsZXRTY3JpcHRDb250cm9sbGVyOjpzZXRFeGNlcHRpb24pOgorICAgICAgICAqIHdvcmtsZXRz
L1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V29y
a2xldFNjcmlwdENvbnRyb2xsZXI6OndvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OnZtKToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0SWZOZWVkZWQpOgorCiAyMDE4
LTEwLTI2ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjM3NDU4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRl
eCAxMjliNmM1NDkzMmY5ZTRlODg0NjZkY2Y5MThjYmQ2ZTE3NDY0MmQ1Li43MzE2OTdkNjBjN2M1
YTgwOTI5MzdjNGRlYWUyN2EzMDVmN2VjZjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTQz
LDYgKzE0Myw3IEBAIHNldChXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJD
T1JFX0RJUn0vd29ya2Vycy9zZXJ2aWNlIgogICAgICIke1dFQkNPUkVfRElSfS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dCIKICAgICAiJHtXRUJDT1JFX0RJUn0vd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ciIKKyAgICAiJHtXRUJDT1JFX0RJUn0vd29ya2xldHMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3ht
bCIKICAgICAiJHtXRUJDT1JFX0RJUn0veG1sL3BhcnNlciIKICAgICAiJHtERVJJVkVEX1NPVVJD
RVNfV0VCQ09SRV9ESVJ9IgpAQCAtNTM3LDcgKzUzOCw2IEBAIHNldChXZWJDb3JlX05PTl9TVkdf
SURMX0ZJTEVTCiAgICAgY3NzL0NTU01lZGlhUnVsZS5pZGwKICAgICBjc3MvQ1NTTmFtZXNwYWNl
UnVsZS5pZGwKICAgICBjc3MvQ1NTUGFpbnRDYWxsYmFjay5pZGwKLSAgICBjc3MvQ1NTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUuaWRsCiAgICAgY3NzL0NTU1BhZ2VSdWxlLmlkbAogICAgIGNzcy9D
U1NSdWxlLmlkbAogICAgIGNzcy9DU1NSdWxlTGlzdC5pZGwKQEAgLTkwNiw2ICs5MDYsMTAgQEAg
c2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICB3b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlclVwZGF0ZVZpYUNhY2hlLmlkbAogICAgIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyV2luZG93Q2xpZW50LmlkbAogCisgICAgd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUuaWRsCisgICAgd29ya2xldHMvV29ya2xldC5pZGwKKyAgICB3b3JrbGV0cy9Xb3JrbGV0R2xv
YmFsU2NvcGUuaWRsCisKICAgICB4bWwvRE9NUGFyc2VyLmlkbAogICAgIHhtbC9YTUxIdHRwUmVx
dWVzdC5pZGwKICAgICB4bWwvWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5pZGwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDY2MzkwZDQ5ZmIzOWQ2YzRiMmM0NzYyNjA1ZDI2MDVm
YjJiNWIxMGQuLmVmYmU5MzU0NzMxMmExN2Q2MTU2ZjVhZDU5OTFhYjBiNWYxN2E1NjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtODYsNiArODYsNyBAQCBWUEFUSCA9IFwKICAg
ICAkKFdlYkNvcmUpL3dlYnNvY2tldHMgXAogICAgICQoV2ViQ29yZSkvd29ya2VycyBcCiAgICAg
JChXZWJDb3JlKS93b3JrZXJzL3NlcnZpY2UgXAorICAgICQoV2ViQ29yZSkvd29ya2xldHMgXAog
ICAgICQoV2ViQ29yZSkveG1sIFwKICMKIApAQCAtNDUyLDcgKzQ1Myw2IEBAIEpTX0JJTkRJTkdf
SURMUyA9IFwKICAgICAkKFdlYkNvcmUpL2Nzcy9DU1NOYW1lc3BhY2VSdWxlLmlkbCBcCiAgICAg
JChXZWJDb3JlKS9jc3MvQ1NTUGFnZVJ1bGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9DU1NQ
YWludENhbGxiYWNrLmlkbCBcCi0gICAgJChXZWJDb3JlKS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9DU1NSdWxlLmlkbCBcCiAgICAgJChX
ZWJDb3JlKS9jc3MvQ1NTUnVsZUxpc3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9DU1NTdHls
ZURlY2xhcmF0aW9uLmlkbCBcCkBAIC0xMDI0LDYgKzEwMjQsOSBAQCBKU19CSU5ESU5HX0lETFMg
PSBcCiAgICAgJChXZWJDb3JlKS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbi5pZGwgXAogICAgICQoV2ViQ29yZSkvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJV
cGRhdGVWaWFDYWNoZS5pZGwgXAogICAgICQoV2ViQ29yZSkvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJXaW5kb3dDbGllbnQuaWRsIFwKKwkkKFdlYkNvcmUpL3dvcmtsZXRzL1BhaW50V29y
a2xldEdsb2JhbFNjb3BlLmlkbCBcCisgICAgJChXZWJDb3JlKS93b3JrbGV0cy9Xb3JrbGV0Lmlk
bCBcCisJJChXZWJDb3JlKS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaWRsIFwKICAgICAk
KFdlYkNvcmUpL3htbC9ET01QYXJzZXIuaWRsIFwKICAgICAkKFdlYkNvcmUpL3htbC9YTUxIdHRw
UmVxdWVzdC5pZGwgXAogICAgICQoV2ViQ29yZSkveG1sL1hNTEh0dHBSZXF1ZXN0RXZlbnRUYXJn
ZXQuaWRsIFwKQEAgLTExNTYsNiArMTE1OSw3IEBAIGFsbCA6IFwKICAgICAkKFNVUFBMRU1FTlRB
TF9ERVBFTkRFTkNZX0ZJTEUpIFwKICAgICAkKFdJTkRPV19DT05TVFJVQ1RPUlNfRklMRSkgXAog
ICAgICQoV09SS0VSR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUpIFwKKwkkKFdPUktMRVRH
TE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSkgXAogICAgICQoSlNfRE9NX0hFQURFUlMpIFwK
ICAgICAkKFdFQl9ET01fSEVBREVSUykgXAogICAgIFwKQEAgLTE1MDQsNiArMTUwOCw3IEBAIElE
TF9JTkNMVURFUyA9IFwKICAgICAkKFdlYkNvcmUpL3N2ZyBcCiAgICAgJChXZWJDb3JlKS90ZXN0
aW5nIFwKICAgICAkKFdlYkNvcmUpL3dvcmtlcnMgXAorICAgICQoV2ViQ29yZSkvd29ya2xldHMg
XAogICAgICQoV2ViQ29yZSkveG1sCiAKIElETF9DT01NT05fQVJHUyA9ICQoSURMX0lOQ0xVREVT
OiU9LS1pbmNsdWRlICUpIC0td3JpdGUtZGVwZW5kZW5jaWVzIC0tb3V0cHV0RGlyIC4KQEAgLTE1
MTYsNiArMTUyMSw4IEBAIFdJTkRPV19DT05TVFJVQ1RPUlNfRklMRSA9IC4vRE9NV2luZG93Q29u
c3RydWN0b3JzLmlkbAogV09SS0VSR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUgPSAuL1dv
cmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbAogREVESUNBVEVEV09SS0VSR0xPQkFMU0NP
UEVfQ09OU1RSVUNUT1JTX0ZJTEUgPSAuL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3JzLmlkbAogU0VSVklDRVdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFID0g
Li9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCitXT1JLTEVUR0xPQkFM
U0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUgPSAuL1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9y
cy5pZGwKK1BBSU5UV09SS0xFVEdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFID0gLi9QYWlu
dFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKIElETF9GSUxFU19UTVAgPSAuL2lk
bF9maWxlcy50bXAKIElETF9BVFRSSUJVVEVTX0ZJTEUgPSAkKFdlYkNvcmUpL2JpbmRpbmdzL3Nj
cmlwdHMvSURMQXR0cmlidXRlcy5qc29uCiAKQEAgLTE1MjgsMTAgKzE1MzUsMTAgQEAgZW5kZWYK
IAogJChTVVBQTEVNRU5UQUxfTUFLRUZJTEVfREVQUykgOiAkKFBSRVBST0NFU1NfSURMU19TQ1JJ
UFRTKSAkKEpTX0JJTkRJTkdfSURMUykgJChQTEFURk9STV9GRUFUVVJFX0RFRklORVMpIERlcml2
ZWRTb3VyY2VzLm1ha2UKIAkkKGZvcmVhY2ggZiwkKEpTX0JJTkRJTkdfSURMUyksQGVjaG8gJChm
KT4+JChJRExfRklMRVNfVE1QKSQoTkwpKQotCSQoUEVSTCkgJChXZWJDb3JlKS9iaW5kaW5ncy9z
Y3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbCAtLWRlZmluZXMgIiQoRkVBVFVSRV9BTkRfUExBVEZP
Uk1fREVGSU5FUykgJChBRERJVElPTkFMX0lETF9ERUZJTkVTKSBMQU5HVUFHRV9KQVZBU0NSSVBU
IiAtLWlkbEZpbGVzTGlzdCAkKElETF9GSUxFU19UTVApIC0tc3VwcGxlbWVudGFsRGVwZW5kZW5j
eUZpbGUgJChTVVBQTEVNRU5UQUxfREVQRU5ERU5DWV9GSUxFKSAtLXdpbmRvd0NvbnN0cnVjdG9y
c0ZpbGUgJChXSU5ET1dfQ09OU1RSVUNUT1JTX0ZJTEUpIC0td29ya2VyR2xvYmFsU2NvcGVDb25z
dHJ1Y3RvcnNGaWxlICQoV09SS0VSR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUpIC0tZGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlICQoREVESUNBVEVEV09SS0VS
R0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUpIC0tc2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
Q29uc3RydWN0b3JzRmlsZSAkKFNFUlZJQ0VXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNf
RklMRSkgLS1zdXBwbGVtZW50YWxNYWtlZmlsZURlcHMgJEAKKwkkKFBFUkwpICQoV2ViQ29yZSkv
YmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGwgLS1kZWZpbmVzICIkKEZFQVRVUkVf
QU5EX1BMQVRGT1JNX0RFRklORVMpICQoQURESVRJT05BTF9JRExfREVGSU5FUykgTEFOR1VBR0Vf
SkFWQVNDUklQVCIgLS1pZGxGaWxlc0xpc3QgJChJRExfRklMRVNfVE1QKSAtLXN1cHBsZW1lbnRh
bERlcGVuZGVuY3lGaWxlICQoU1VQUExFTUVOVEFMX0RFUEVOREVOQ1lfRklMRSkgLS13aW5kb3dD
b25zdHJ1Y3RvcnNGaWxlICQoV0lORE9XX0NPTlNUUlVDVE9SU19GSUxFKSAtLXdvcmtlckdsb2Jh
bFNjb3BlQ29uc3RydWN0b3JzRmlsZSAkKFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19G
SUxFKSAtLWRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSAkKERFRElD
QVRFRFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFKSAtLXNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgJChTRVJWSUNFV09SS0VSR0xPQkFMU0NPUEVfQ09O
U1RSVUNUT1JTX0ZJTEUpIC0td29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSAkKFdP
UktMRVRHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSkgLS1wYWludFdvcmtsZXRHbG9iYWxT
Y29wZUNvbnN0cnVjdG9yc0ZpbGUgJChQQUlOVFdPUktMRVRHTE9CQUxTQ09QRV9DT05TVFJVQ1RP
UlNfRklMRSkgLS1zdXBwbGVtZW50YWxNYWtlZmlsZURlcHMgJEAKIAkkKERFTEVURSkgJChJRExf
RklMRVNfVE1QKQogCi1KUyUuY3BwIEpTJS5oIDogJS5pZGwgJChKU19CSU5ESU5HU19TQ1JJUFRT
KSAkKElETF9BVFRSSUJVVEVTX0ZJTEUpICQoV0lORE9XX0NPTlNUUlVDVE9SU19GSUxFKSAkKFdP
UktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFKSAkKFBMQVRGT1JNX0ZFQVRVUkVfREVG
SU5FUykKK0pTJS5jcHAgSlMlLmggOiAlLmlkbCAkKEpTX0JJTkRJTkdTX1NDUklQVFMpICQoSURM
X0FUVFJJQlVURVNfRklMRSkgJChXSU5ET1dfQ09OU1RSVUNUT1JTX0ZJTEUpICQoV09SS0VSR0xP
QkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUpICQoV09SS0xFVEdMT0JBTFNDT1BFX0NPTlNUUlVD
VE9SU19GSUxFKSAkKFBMQVRGT1JNX0ZFQVRVUkVfREVGSU5FUykKIAkkKFBFUkwpICQoV2ViQ29y
ZSkvYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbCAkKElETF9DT01NT05fQVJH
UykgLS1kZWZpbmVzICIkKEZFQVRVUkVfQU5EX1BMQVRGT1JNX0RFRklORVMpICQoQURESVRJT05B
TF9JRExfREVGSU5FUykgTEFOR1VBR0VfSkFWQVNDUklQVCIgLS1nZW5lcmF0b3IgSlMgLS1pZGxB
dHRyaWJ1dGVzRmlsZSAkKElETF9BVFRSSUJVVEVTX0ZJTEUpIC0tc3VwcGxlbWVudGFsRGVwZW5k
ZW5jeUZpbGUgJChTVVBQTEVNRU5UQUxfREVQRU5ERU5DWV9GSUxFKSAkPAogCiAtaW5jbHVkZSAk
KFNVUFBMRU1FTlRBTF9NQUtFRklMRV9ERVBTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBhZWI2NjJlYjJm
MDBlMGMyYmRjZWI1YzdhYTFmZTU0MGIwYzFiYjdjLi4xMWI2YzAyNGFkYTBkMWI1MDgwMjBjNTQ4
ODJiY2MyNDhhZDY1MTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMzg1LDcgKzM4NSw3IEBAIGJpbmRp
bmdzL2pzL0pTRE9NQ29udmVydFN0cmluZ3MuY3BwCiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRX
ZWJHTC5jcHAKIGJpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuY3BwCiBiaW5kaW5ncy9qcy9KU0Rl
cHJlY2F0ZWRDU1NPTVZhbHVlQ3VzdG9tLmNwcAotYmluZGluZ3MvanMvSlNDU1NQYWludFdvcmts
ZXRHbG9iYWxTY29wZUN1c3RvbS5jcHAKK2JpbmRpbmdzL2pzL0pTUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGVDdXN0b20uY3BwCiBiaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAKIGJpbmRpbmdz
L2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcAogYmluZGluZ3MvanMvSlND
dXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcApAQCAtNDc4LDYgKzQ3OCw3IEBAIGJpbmRpbmdzL2pz
L0pTV2luZG93UHJveHkuY3BwCiBiaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5j
cHAKIGJpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwCiBiaW5kaW5ncy9q
cy9KU1dvcmtlck5hdmlnYXRvckN1c3RvbS5jcHAKK2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2Jh
bFNjb3BlQmFzZS5jcHAKIGJpbmRpbmdzL2pzL0pTWE1MRG9jdW1lbnRDdXN0b20uY3BwCiBiaW5k
aW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAogYmluZGluZ3MvanMvSlNYUGF0aE5T
UmVzb2x2ZXJDdXN0b20uY3BwCkBAIC02MTMsNyArNjE0LDYgQEAgY3NzL0NTU05hbWVkSW1hZ2VW
YWx1ZS5jcHAKIGNzcy9DU1NOYW1lc3BhY2VSdWxlLmNwcAogY3NzL0NTU1BhZ2VSdWxlLmNwcAog
Y3NzL0NTU1BhaW50SW1hZ2VWYWx1ZS5jcHAKLWNzcy9DU1NQYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5jcHAKIGNzcy9DU1NQZW5kaW5nU3Vic3RpdHV0aW9uVmFsdWUuY3BwCiBjc3MvQ1NTUHJpbWl0
aXZlVmFsdWUuY3BwCiBjc3MvQ1NTUHJvcGVydHkuY3BwCkBAIC0yMzcxLDYgKzIzNzEsMTIgQEAg
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKIHdvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAogd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKIAord29ya2xldHMvV29ya2xldC5jcHAK
K3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcAord29ya2xldHMvV29ya2xldEdsb2Jh
bFNjb3BlLmNwcAord29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCit3b3JrbGV0
cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKKwogeG1sL0RPTVBhcnNlci5jcHAKIHhtbC9O
YXRpdmVYUGF0aE5TUmVzb2x2ZXIuY3BwCiB4bWwvWE1MRXJyb3JzLmNwcApAQCAtMjQ4MCw3ICsy
NDg2LDkgQEAgSlNDU1NLZXlmcmFtZXNSdWxlLmNwcAogSlNDU1NNZWRpYVJ1bGUuY3BwCiBKU0NT
U05hbWVzcGFjZVJ1bGUuY3BwCiBKU0NTU1BhaW50Q2FsbGJhY2suY3BwCi1KU0NTU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlLmNwcAorSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKK0pTV29y
a2xldC5jcHAKK0pTV29ya2xldEdsb2JhbFNjb3BlLmNwcAogSlNDU1NQYWdlUnVsZS5jcHAKIEpT
Q1NTUnVsZS5jcHAKIEpTQ1NTUnVsZUxpc3QuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmMyZDcxZWZjNzcxNTdkZGUzZDM0
NGYyYWZlNDc5NjczNjE0NmE4My4uYWJiMDQyZThjNDE4MzA5ZGNkZjhhZGIxM2YxODc4Yzg5Yzdi
YTQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTM1MiwxNCArMTM1MiwxOSBAQAogCQk0QjM0ODA5NDBFRUY1MEQ0MDBBQzFC
NDEgLyogSW1hZ2VTb3VyY2VDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEIzNDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0cuaCAq
LzsgfTsKIAkJNEI1QkREOUIyMTY1OEExNTAwREQ0MjYyIC8qIENTU1BhaW50Q2FsbGJhY2suaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCNUJERDlBMjE2
NThBMTUwMERENDI2MiAvKiBDU1NQYWludENhbGxiYWNrLmggKi87IH07CiAJCTRCNkI1Q0JEMjE2
NDBFRkYwMDYwMzgxNyAvKiBET01DU1NQYWludFdvcmtsZXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCNkI1Q0I4MjE2M0VDMDcwMDYwMzgxNyAvKiBE
T01DU1NQYWludFdvcmtsZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwotCQk0QjZCNUNDMDIxNjQzODY0MDA2MDM4MTcgLyogQ1NTUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDRCNkI1Q0JGMjE2NDM4NjQwMDYwMzgxNyAvKiBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5oICovOyB9OworCQk0QjZCNUNDMDIxNjQzODY0MDA2MDM4MTcgLyogUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRCNkI1Q0JGMjE2NDM4NjQwMDYwMzgxNyAvKiBQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oICov
OyB9OwogCQk0QjZFODc2OTIxNzZENjkyMDA0MjBFNUUgLyogQ1NTUGFpbnRJbWFnZVZhbHVlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjZFODc2ODIx
NzZENjkyMDA0MjBFNUUgLyogQ1NTUGFpbnRJbWFnZVZhbHVlLmggKi87IH07CiAJCTRCNkZBNkY0
MEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCNkZBNkYyMEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFy
dFJlcGxhY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0QjdBRTQ5MzIxNzdCNTZGMDBDNTk5NTkgLyogQ3VzdG9tUGFpbnRJbWFnZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI3QUU0OTIyMTc3QjU2
RjAwQzU5OTU5IC8qIEN1c3RvbVBhaW50SW1hZ2UuaCAqLzsgfTsKKwkJNEI3RjlDNTIyMTgzQjVF
NTAwMUNFQkEwIC8qIFdvcmtsZXRDb25zb2xlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjdGOUM1MTIxODNCNUU1MDAxQ0VCQTAgLyogV29y
a2xldENvbnNvbGVDbGllbnQuaCAqLzsgfTsKIAkJNEJBRTk1QjEwQjJGQTlDRTAwQUVEOEEwIC8q
IEVkaXRvckRlbGV0ZUFjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEJBRTk1QjAwQjJGQTlDRTAwQUVEOEEwIC8qIEVkaXRvckRlbGV0ZUFjdGlv
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRC
REEzRkZFMjE1MUI2RjUwMEZENjYwNCAvKiBET01DU1NDdXN0b21Qcm9wZXJ0eURlc2NyaXB0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCREEzRkY4
MjE1MUI2RjIwMEZENjYwNCAvKiBET01DU1NDdXN0b21Qcm9wZXJ0eURlc2NyaXB0b3IuaCAqLzsg
fTsKIAkJNEJEQTNGRkYyMTUxQjZGNTAwRkQ2NjA0IC8qIERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJv
cGVydHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRC
REEzRkY5MjE1MUI2RjMwMEZENjYwNCAvKiBET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5Lmgg
Ki87IH07CiAJCTRCREE0MDAxMjE1MUI2RjUwMEZENjYwNCAvKiBDU1NSZWdpc3RlcmVkQ3VzdG9t
UHJvcGVydHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRCREEzRkZCMjE1MUI2RjQwMEZENjYwNCAvKiBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0QkRF
QTMyMDIxN0VDNTVGMDA1MkRGQ0QgLyogV29ya2xldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJERUEzMUYyMTdFQzU1RjAwNTJERkNEIC8qIFdvcmts
ZXQuaCAqLzsgfTsKKwkJNEJERUEzMjUyMTdGRTJFNDAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxT
Y29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJE
RUEzMjQyMTdGRTJFNDAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxTY29wZS5oICovOyB9OworCQk0
QkRFQTMyODIxODAwM0Y3MDA1MkRGQ0QgLyogV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCREVBMzI3MjE4MDAz
RjcwMDUyREZDRCAvKiBXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oICovOyB9OworCQk0QkRFQTMy
QzIxODAzM0VCMDA1MkRGQ0QgLyogSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QkRFQTMyQjIxODAzM0VCMDA1
MkRGQ0QgLyogSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmggKi87IH07CiAJCTREM0IwMEFCMjE1
RDY5QTcwMDc2Qjk4MyAvKiBNZWRpYVJlY29yZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RDNCMDBBOTIxNUQ2OUE3MDA3NkI5ODMgLyogTWVkaWFS
ZWNvcmRlci5oICovOyB9OwogCQk0RDNCMDBBRjIxNUQ2QTY5MDA3NkI5ODMgLyogQmxvYkV2ZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RDNCMDBB
RDIxNUQ2QTY5MDA3NkI5ODMgLyogQmxvYkV2ZW50LmggKi87IH07CiAJCTREQjcxMzBEMjE2RUNC
NEQwMDk2QTRERCAvKiBNZWRpYVJlY29yZGVyRXJyb3JFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNERCNzEzMEMyMTZFQzJCRDAwOTZBNEREIC8q
IE1lZGlhUmVjb3JkZXJFcnJvckV2ZW50LmggKi87IH07CkBAIC03OTAxLDE2ICs3OTA2LDE4IEBA
CiAJCTRCNkI1Q0I2MjE2M0RDMUEwMDYwMzgxNyAvKiBET01DU1NQYWludFdvcmtsZXQuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IERPTUNTU1BhaW50V29ya2xldC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTRCNkI1Q0I4MjE2M0VDMDcwMDYwMzgxNyAvKiBET01DU1NQYWludFdvcmtsZXQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRE9NQ1NTUGFpbnRXb3JrbGV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTRCNkI1Q0I5MjE2M0VEMzIwMDYwMzgxNyAvKiBET01DU1NQYWludFdvcmtsZXQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRE9NQ1NTUGFpbnRXb3JrbGV0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNEI2QjVDQkUyMTY0MzRGQjAwNjAzODE3IC8qIEpTQ1NTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDU1NQYWludFdv
cmtsZXRHbG9iYWxTY29wZUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTRCNkI1Q0JGMjE2NDM4NjQwMDYwMzgxNyAvKiBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk0QjZCNUNDMTIxNjQzOUNGMDA2MDM4MTcgLyogQ1NTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0QjZCNUNDMzIx
NjQzQThFMDA2MDM4MTcgLyogQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENT
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNEI2QjVDQkUyMTY0MzRGQjAwNjAzODE3IC8qIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZUN1
c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRCNkI1Q0JGMjE2NDM4NjQw
MDYwMzgxNyAvKiBQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QjZC
NUNDMTIxNjQzOUNGMDA2MDM4MTcgLyogUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0QjZCNUNDMzIxNjQzQThFMDA2MDM4MTcgLyogUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI2RTg3NjgyMTc2RDY5MjAwNDIwRTVFIC8qIENTU1Bh
aW50SW1hZ2VWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NQYWludEltYWdlVmFsdWUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI2RTg3NkIyMTc2RDhBMTAwNDIwRTVFIC8qIENT
U1BhaW50SW1hZ2VWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NQYWludEltYWdlVmFs
dWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QjZGQTZGMjBDMzlFNDhDMDAw
ODcwMTEgLyogU21hcnRSZXBsYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNtYXJ0UmVwbGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QjZGQTZGNjBD
MzlFNEExMDAwODcwMTEgLyogU21hcnRSZXBsYWNlQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU21hcnRSZXBsYWNlQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0QjdBRTQ5MjIxNzdCNTZGMDBDNTk5NTkgLyogQ3VzdG9tUGFpbnRJbWFnZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDdXN0b21QYWludEltYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTRCN0FFNDk1MjE3N0I2M0UwMEM1OTk1OSAvKiBDdXN0b21QYWludEltYWdlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEN1c3RvbVBhaW50SW1hZ2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0QjdGOUM1MTIxODNCNUU1MDAxQ0VCQTAgLyogV29ya2xldENvbnNv
bGVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2xldENvbnNvbGVDbGllbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEI3RjlDNTQyMTgzQjYzNDAwMUNFQkEwIC8qIFdvcmts
ZXRDb25zb2xlQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtsZXRDb25zb2xlQ2xp
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEJBRTk1QjAwQjJGQTlDRTAw
QUVEOEEwIC8qIEVkaXRvckRlbGV0ZUFjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBFZGl0b3JEZWxldGVBY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNEJEQTNGRjUyMTUxQjZGMDAwRkQ2NjA0IC8qIERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVy
dHkuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVy
dHkuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QkRBM0ZGNzIxNTFCNkYxMDBG
RDY2MDQgLyogRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc5MTgsNiArNzkyNSwxNiBAQAogCQk0QkRB
M0ZGOTIxNTFCNkYzMDBGRDY2MDQgLyogRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01DU1NSZWdpc3RlckN1c3RvbVByb3Bl
cnR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCREEzRkZBMjE1MUI2RjMwMEZE
NjYwNCAvKiBET01DU1NDdXN0b21Qcm9wZXJ0eURlc2NyaXB0b3IuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IERPTUNTU0N1c3RvbVByb3BlcnR5RGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTRCREEzRkZCMjE1MUI2RjQwMEZENjYwNCAvKiBDU1NSZWdpc3Rl
cmVkQ3VzdG9tUHJvcGVydHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NT
UmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTRCREVBMzFDMjE3RUJDRjUwMDUyREZDRCAvKiBXb3JrbGV0LmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXb3JrbGV0Lmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEJERUEzMUYyMTdFQzU1RjAwNTJERkNE
IC8qIFdvcmtsZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2xldC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0QkRFQTMyMzIxN0VDOTZBMDA1MkRGQ0QgLyogV29ya2xldC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXb3JrbGV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNEJERUEzMjQyMTdGRTJFNDAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxTY29wZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXb3JrbGV0R2xvYmFsU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNEJERUEzMjYyMTdGRTJGQTAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxTY29wZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrbGV0R2xvYmFsU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0QkRFQTMyNzIxODAwM0Y3MDA1MkRGQ0QgLyogV29ya2xldFNjcmlw
dENvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEJERUEzMjkyMTgwMDQwQzAwNTJERkNEIC8q
IFdvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtsZXRT
Y3JpcHRDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEJERUEz
MkEyMTgwMTA3MjAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxTY29wZS5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV29ya2xl
dEdsb2JhbFNjb3BlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEJERUEzMkIy
MTgwMzNFQjAwNTJERkNEIC8qIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNEJERUEzMkQyMTgwMzQwNTAwNTJERkNEIC8qIEpTV29ya2xldEdsb2JhbFNjb3BlQmFz
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RDNCMDBBNDIxNUQ2MTA0MDA3NkI5ODMgLyog
TWVkaWFSZWNvcmRlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTWVkaWFSZWNvcmRlci5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTREM0IwMEE2MjE1RDY0NUIwMDc2Qjk4
MyAvKiBCbG9iRXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEJsb2JFdmVudC5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTREM0IwMEE4MjE1RDY5QTYwMDc2Qjk4MyAv
KiBNZWRpYVJlY29yZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE1lZGlhUmVjb3JkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU4MDEs
NiArMTU4MTgsNyBAQAogCQkJCUIyMjI3N0NBMEQwMEJGMUUwMDcxQjc4MiAvKiBzdmcgKi8sCiAJ
CQkJNDE3REE0Q0QxMzczNDIwNDAwN0M1N0ZCIC8qIHRlc3RpbmcgKi8sCiAJCQkJMkU0MzQ2MzEw
RjU0NkE2ODAwQjBGMUJBIC8qIHdvcmtlcnMgKi8sCisJCQkJNEJERUEzMTgyMTdFQkI4ODAwNTJE
RkNEIC8qIHdvcmtsZXRzICovLAogCQkJCUUxRjA0MjQzMDk4MzkzODkwMDY2OTRFQSAvKiB4bWwg
Ki8sCiAJCQkJNjU2NTgwRUMwOUQxMkIyMDAwMEU2MUQ3IC8qIERlcml2ZWQgU291cmNlcyAqLywK
IAkJCQkwODlDMTY2NUZFODQxMTU4QzAyQUFDMDcgLyogUmVzb3VyY2VzICovLApAQCAtMTgwMzYs
NiArMTgwNTQsMjYgQEAKIAkJCXBhdGggPSBhbmltYXRpb247CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwogCQl9OworCQk0QkRFQTMxODIxN0VCQjg4MDA1MkRGQ0QgLyogd29ya2xldHMgKi8g
PSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTRCNkI1Q0MxMjE2
NDM5Q0YwMDYwMzgxNyAvKiBQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAgKi8sCisJCQkJNEI2
QjVDQkYyMTY0Mzg2NDAwNjAzODE3IC8qIFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmggKi8sCisJ
CQkJNEI2QjVDQzMyMTY0M0E4RTAwNjAzODE3IC8qIFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmlk
bCAqLywKKwkJCQk0QkRFQTMyMzIxN0VDOTZBMDA1MkRGQ0QgLyogV29ya2xldC5jcHAgKi8sCisJ
CQkJNEJERUEzMUYyMTdFQzU1RjAwNTJERkNEIC8qIFdvcmtsZXQuaCAqLywKKwkJCQk0QkRFQTMx
QzIxN0VCQ0Y1MDA1MkRGQ0QgLyogV29ya2xldC5pZGwgKi8sCisJCQkJNEI3RjlDNTQyMTgzQjYz
NDAwMUNFQkEwIC8qIFdvcmtsZXRDb25zb2xlQ2xpZW50LmNwcCAqLywKKwkJCQk0QjdGOUM1MTIx
ODNCNUU1MDAxQ0VCQTAgLyogV29ya2xldENvbnNvbGVDbGllbnQuaCAqLywKKwkJCQk0QkRFQTMy
NjIxN0ZFMkZBMDA1MkRGQ0QgLyogV29ya2xldEdsb2JhbFNjb3BlLmNwcCAqLywKKwkJCQk0QkRF
QTMyNDIxN0ZFMkU0MDA1MkRGQ0QgLyogV29ya2xldEdsb2JhbFNjb3BlLmggKi8sCisJCQkJNEJE
RUEzMkEyMTgwMTA3MjAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxTY29wZS5pZGwgKi8sCisJCQkJ
NEJERUEzMjkyMTgwMDQwQzAwNTJERkNEIC8qIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcCAq
LywKKwkJCQk0QkRFQTMyNzIxODAwM0Y3MDA1MkRGQ0QgLyogV29ya2xldFNjcmlwdENvbnRyb2xs
ZXIuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gd29ya2xldHM7CisJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOworCQl9OwogCQk0RDNCMDBBMDIxNUQ1QzBGMDA3NkI5ODMgLyogbWVkaWFyZWNvcmRl
ciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yNDQwOSw2
ICsyNDQ0Nyw4IEBACiAJCQkJQkNCRkI1M0IwRENEMjlDRjAwMTlCM0U1IC8qIEpTV2luZG93UHJv
eHkuaCAqLywKIAkJCQlFMUMzNkQzMjBFQjBBMDk0MDA3NDEwQkMgLyogSlNXb3JrZXJHbG9iYWxT
Y29wZUJhc2UuY3BwICovLAogCQkJCUUxQzM2RDMzMEVCMEEwOTQwMDc0MTBCQyAvKiBKU1dvcmtl
ckdsb2JhbFNjb3BlQmFzZS5oICovLAorCQkJCTRCREVBMzJEMjE4MDM0MDUwMDUyREZDRCAvKiBK
U1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwICovLAorCQkJCTRCREVBMzJCMjE4MDMzRUIwMDUy
REZDRCAvKiBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuaCAqLywKIAkJCQk3MDlBMDFGRDFFM0Qw
QkNDMDA2QjBENEMgLyogTW9kdWxlRmV0Y2hGYWlsdXJlS2luZC5oICovLAogCQkJCTQxQjQ1OUVE
MUY1NUVCQzcwMDAwRjZGRCAvKiBSZWFkYWJsZVN0cmVhbS5jcHAgKi8sCiAJCQkJNDFCNDU5REEx
RjRDQURCOTAwMDBGNkZEIC8qIFJlYWRhYmxlU3RyZWFtLmggKi8sCkBAIC0yNDQ0OSwxMiArMjQ0
ODksMTIgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTdDRDM0NDFCMUYzMkRFMzAwMDBEQ0Q0OSAv
KiBDYWNoZWQgQXR0cmlidXRlcyB3LyBJbnZhbGlkYXRpb24gKi8sCiAJCQkJN0MzRDhFRTQxRTA4
QkFCRTAwMjNCMDg0IC8qIEdDIC8gV3JhcHBpbmcgT25seSAqLywKLQkJCQk0QjZCNUNCRTIxNjQz
NEZCMDA2MDM4MTcgLyogSlNDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZUN1c3RvbS5jcHAgKi8s
CiAJCQkJOUJDNUY5REYxRDVBQUY2QTAwMkI3NDlEIC8qIEpTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5
Q3VzdG9tLmNwcCAqLywKIAkJCQlCQ0Q5QzI1RTBDMTdBQTY3MDA1QzkwQTIgLyogSlNET01XaW5k
b3dDdXN0b20uY3BwICovLAogCQkJCTY1MkZCQkJCMERFMjdDQjYwMDAxRDM4NiAvKiBKU0RPTVdp
bmRvd0N1c3RvbS5oICovLAogCQkJCUJDNTgyM0Y0MEMwQTk4REYwMDUzRjFCNSAvKiBKU0hUTUxF
bGVtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlCQ0UxQzQzRjBEOTgzMEY0MDAzQjAyRjIgLyogSlNM
b2NhdGlvbkN1c3RvbS5jcHAgKi8sCisJCQkJNEI2QjVDQkUyMTY0MzRGQjAwNjAzODE3IC8qIEpT
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwICovLAogCQkJCTQxOEMzOTVEMUM4RjBB
QUIwMDUxQzhBMyAvKiBKU1JlYWRhYmxlU3RyZWFtU291cmNlQ3VzdG9tLmNwcCAqLywKIAkJCQk0
NkJDQkJCRTIwODUwMDVCMDA3MTA2MzggLyogSlNSZW1vdGVET01XaW5kb3dDdXN0b20uY3BwICov
LAogCQkJKTsKQEAgLTI2MDUyLDkgKzI2MDkyLDYgQEAKIAkJCQk0QjVCREQ5OTIxNjU4OEU1MDBE
RDQyNjIgLyogQ1NTUGFpbnRDYWxsYmFjay5pZGwgKi8sCiAJCQkJNEI2RTg3NkIyMTc2RDhBMTAw
NDIwRTVFIC8qIENTU1BhaW50SW1hZ2VWYWx1ZS5jcHAgKi8sCiAJCQkJNEI2RTg3NjgyMTc2RDY5
MjAwNDIwRTVFIC8qIENTU1BhaW50SW1hZ2VWYWx1ZS5oICovLAotCQkJCTRCNkI1Q0MxMjE2NDM5
Q0YwMDYwMzgxNyAvKiBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAgKi8sCi0JCQkJNEI2
QjVDQkYyMTY0Mzg2NDAwNjAzODE3IC8qIENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmggKi8s
Ci0JCQkJNEI2QjVDQzMyMTY0M0E4RTAwNjAzODE3IC8qIENTU1BhaW50V29ya2xldEdsb2JhbFNj
b3BlLmlkbCAqLywKIAkJCQk5NDE4Mjc4QzFEOENBRTk1MDA0OTI3NjQgLyogQ1NTUGVuZGluZ1N1
YnN0aXR1dGlvblZhbHVlLmNwcCAqLywKIAkJCQk5NDE4Mjc4RDFEOENBRTk1MDA0OTI3NjQgLyog
Q1NTUGVuZGluZ1N1YnN0aXR1dGlvblZhbHVlLmggKi8sCiAJCQkJQTgwRTZDREIwQTE5ODlDQTAw
N0ZCOEM1IC8qIENTU1ByaW1pdGl2ZVZhbHVlLmNwcCAqLywKQEAgLTI4MDU1LDcgKzI4MDkyLDYg
QEAKIAkJCQlBODBFNkQwMDBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTUGFnZVJ1bGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTRCNUJERDlCMjE2NThBMTUwMERENDI2MiAvKiBDU1NQYWludENhbGxiYWNr
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0QjZFODc2OTIxNzZENjkyMDA0MjBFNUUgLyogQ1NTUGFp
bnRJbWFnZVZhbHVlLmggaW4gSGVhZGVycyAqLywKLQkJCQk0QjZCNUNDMDIxNjQzODY0MDA2MDM4
MTcgLyogQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk0
NkQzNzJFMUQ2Q0IyOTQwMDc3MDg0RiAvKiBDU1NQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUU0QTc5OTUyMjBFRTRCMTQwMEMxOTU2OCAvKiBDU1NQYXJzZXJDb250ZXh0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5NDlDNzcwMTFENkUxRDk4MDBDMERFNEYgLyogQ1NTUGFyc2VyRmFzdFBhdGhz
LmggaW4gSGVhZGVycyAqLywKQEAgLTI5NzU4LDYgKzI5Nzk0LDcgQEAKIAkJCQlFMUMzNjJFRjBF
QUYyQUE5MDA3NDEwQkMgLyogSlNXb3JrZXJMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTEyNzFBNTgwRUVFQ0RFNDAwRjYxMjEzIC8qIEpTV29ya2VyTmF2aWdhdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MUYxNzUwNjFGMzU4QkY3MDBDNzQ5NTAgLyogSlNXb3JrZXJUeXBlLmggaW4g
SGVhZGVycyAqLywKKwkJCQk0QkRFQTMyQzIxODAzM0VCMDA1MkRGQ0QgLyogSlNXb3JrbGV0R2xv
YmFsU2NvcGVCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzRDOTZERDFBRDQ0ODM1MDAzNjVB
NjAgLyogSlNXcml0YWJsZVN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM1OENCNzAxQzUz
Mjc3NTAwRTBDMkQ4IC8qIEpTWE1MRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMzQ4
QkQ0MERCN0Y4MDQwMDRBQkFCOSAvKiBKU1hNTEh0dHBSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywK
QEAgLTMwMTQ0LDYgKzMwMTgxLDcgQEAKIAkJCQkwODg1MDY3RjExREEwNDVCMDAxODJCOTggLyog
UGFpbnRJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODg1MDY4MDExREEwNDVCMDAxODJCOTgg
LyogUGFpbnRQaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEIxRTEzRUIyMTc5MzdCMzAwNDJD
Rjk4IC8qIFBhaW50UmVuZGVyaW5nQ29udGV4dDJELmggaW4gSGVhZGVycyAqLywKKwkJCQk0QjZC
NUNDMDIxNjQzODY0MDA2MDM4MTcgLyogUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4MEU2Q0ZCMEExOTg5Q0EwMDdGQjhDNSAvKiBQYWlyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRDMxNjBBMzEyQjAyNkY3MDBDMUEzNTkgLyogUGFubmVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRDMxNjAxQTEyQjAyNjc2MDBDMUEzNTkgLyogUGFubmVyTm9kZS5oIGluIEhl
YWRlcnMgKi8sCkBAIC0zMTU2Miw2ICszMTYwMCwxMCBAQAogCQkJCTk3QUFCRDJEMTRGQTA5RDUw
MDc0NTdBRSAvKiBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTU0QTBDNjgxREI4MDdEOTAwMTdBOTBCIC8qIFdvcmtlclRvUGFnZUZyb250ZW5k
Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGMTc0RkUxRjM1ODk5MjAwQzc0OTUwIC8q
IFdvcmtlclR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTRCREVBMzIwMjE3RUM1NUYwMDUyREZD
RCAvKiBXb3JrbGV0LmggaW4gSGVhZGVycyAqLywKKwkJCQk0QjdGOUM1MjIxODNCNUU1MDAxQ0VC
QTAgLyogV29ya2xldENvbnNvbGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTRCREVBMzI1
MjE3RkUyRTQwMDUyREZDRCAvKiBXb3JrbGV0R2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTRCREVBMzI4MjE4MDAzRjcwMDUyREZDRCAvKiBXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMjQwOTlFNjQ5MjAwNTZFNTgxIC8qIFdyYXBDb250
ZW50c0luRHVtbXlTcGFuQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE2RTZGRTkxQkJE
MTJFNTAwMEE2MDUzIC8qIFdyaXRhYmxlU3RyZWFtQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxNkU2RkU4MUJCRDEyREYwMDBBNjA1MyAvKiBXcml0YWJsZVN0cmVhbUludGVybmFsc0J1
aWx0aW5zLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZUN1c3RvbS5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5ZmEzNDVhNWUzOGYzOWYzYzFkZWRjZDUz
YjZmYTM3Mzg1NTEzYjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NQYWludFdvcmtsZXRHbG9iYWxT
Y29wZUN1c3RvbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzMgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJKU0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCi0KLSNpZiBFTkFCTEUo
Q1NTX1BBSU5USU5HX0FQSSkKLQotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiSlND
U1NQYWludENhbGxiYWNrLmgiCi0jaW5jbHVkZSAiSlNET01Db252ZXJ0Q2FsbGJhY2tzLmgiCi0j
aW5jbHVkZSAiSlNET01Db252ZXJ0U2VxdWVuY2VzLmgiCi0jaW5jbHVkZSA8d3RmL1NldEZvclNj
b3BlLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLXN0
YXRpYyBKU1ZhbHVlIHRocm93SW52YWxpZE1vZGlmaWNhdGlvbkVycm9yKEV4ZWNTdGF0ZSYgc3Rh
dGUsIFRocm93U2NvcGUmIHNjb3BlLCBBU0NJSUxpdGVyYWwgbWVzc2FnZSkKLXsKLSAgICBzY29w
ZS5hc3NlcnROb0V4Y2VwdGlvbigpOwotICAgIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUs
IGNyZWF0ZURPTUV4Y2VwdGlvbigmc3RhdGUsIEludmFsaWRNb2RpZmljYXRpb25FcnJvciwgbWVz
c2FnZSkpOwotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCi12b2lkIEpTQ1NTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGU6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKEpTQzo6U2xvdFZpc2l0
b3ImIHZpc2l0b3IpCi17Ci0gICAgZm9yIChhdXRvJiByZWdpc3RlcmVkIDogd3JhcHBlZCgpLnBh
aW50RGVmaW5pdGlvbk1hcCgpLnZhbHVlcygpKQotICAgICAgICByZWdpc3RlcmVkLT5wYWludENh
bGxiYWNrLT52aXNpdEpTRnVuY3Rpb24odmlzaXRvcik7Ci19Ci0KLS8vIGh0dHBzOi8vZHJhZnRz
LmNzcy1ob3VkaW5pLm9yZy9jc3MtcGFpbnQtYXBpLyNyZWdpc3RlcmluZy1jdXN0b20tcGFpbnQK
LUpTVmFsdWUgSlNDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6cmVnaXN0ZXJQYWludChFeGVj
U3RhdGUmIHN0YXRlKQotewotICAgIHVzaW5nIFBhaW50RGVmaW5pdGlvbiA9IENTU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb247Ci0KLSAgICBDU1NQYWludFdvcmtsZXRH
bG9iYWxTY29wZSYgd29ya2xldEdsb2JhbFNjb3BlID0gd3JhcHBlZCgpOwotICAgIFZNJiB2bSA9
IHN0YXRlLnZtKCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwot
Ci0gICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDIpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3IoJnN0YXRlKSk7Ci0KLSAgICBBdG9taWNTdHJpbmcgbmFtZShzdGF0ZS51bmNoZWNr
ZWRBcmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT50b0F0b21pY1N0cmluZygmc3RhdGUpKTsK
LSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwotICAgIEpTVmFsdWUg
Y29uc3RydWN0b3JWYWx1ZSA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpOwotICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7Ci0KLSAgICBpZiAobmFtZS5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCAiVGhlIGZp
cnN0IGFyZ3VtZW50IG11c3Qgbm90IGJlIHRoZSBlbXB0eSBzdHJpbmciX3MpOwotCi0gICAgYXV0
byYgcGFpbnREZWZpbml0aW9uTWFwID0gd29ya2xldEdsb2JhbFNjb3BlLnBhaW50RGVmaW5pdGlv
bk1hcCgpOwotCi0gICAgaWYgKHBhaW50RGVmaW5pdGlvbk1hcC5jb250YWlucyhuYW1lKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93SW52YWxpZE1vZGlmaWNhdGlvbkVycm9yKHN0YXRlLCBzY29wZSwg
IlRoaXMgbmFtZSBoYXMgYWxyZWFkeSBiZWVuIHJlZ2lzdGVyZWQiX3MpOwotCi0gICAgVmVjdG9y
PFN0cmluZz4gaW5wdXRQcm9wZXJ0aWVzOwotCi0gICAgSlNWYWx1ZSBpbnB1dFByb3BlcnRpZXNJ
dGVyYWJsZVZhbHVlID0gY29uc3RydWN0b3JWYWx1ZS5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZ2bSwgImlucHV0UHJvcGVydGllcyIpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwotCi0gICAgaWYgKCFpbnB1dFByb3BlcnRpZXNJdGVyYWJs
ZVZhbHVlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIGlucHV0UHJvcGVydGllcyA9IGNvbnZlcnQ8
SURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj4oc3RhdGUsIGlucHV0UHJvcGVydGllc0l0ZXJhYmxl
VmFsdWUpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7Ci0KLSAg
ICAvLyBGSVhNRTogVmFsaWRhdGUgaW5wdXQgcHJvcGVydGllcyBoZXJlIChzdGVwIDcpLgotCi0g
ICAgVmVjdG9yPFN0cmluZz4gaW5wdXRBcmd1bWVudHM7Ci0KLSAgICBKU1ZhbHVlIGlucHV0QXJn
dW1lbnRzSXRlcmFibGVWYWx1ZSA9IGNvbnN0cnVjdG9yVmFsdWUuZ2V0KCZzdGF0ZSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmdm0sICJpbnB1dEFyZ3VtZW50cyIpKTsKLSAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwotCi0gICAgaWYgKCFpbnB1dEFyZ3VtZW50c0l0
ZXJhYmxlVmFsdWUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgaW5wdXRBcmd1bWVudHMgPSBjb252
ZXJ0PElETFNlcXVlbmNlPElETERPTVN0cmluZz4+KHN0YXRlLCBpbnB1dEFyZ3VtZW50c0l0ZXJh
YmxlVmFsdWUpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7Ci0K
LSAgICAvLyBGSVhNRTogUGFyc2Ugc3ludGF4IGZvciBpbnB1dEFyZ3VtZW50cyBoZXJlIChzdGVw
cyAxMSBhbmQgMTIpLgotCi0gICAgSlNWYWx1ZSBjb250ZXh0T3B0aW9uc1ZhbHVlID0gY29uc3Ry
dWN0b3JWYWx1ZS5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImNvbnRl
eHRPcHRpb25zIikpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7
Ci0gICAgVU5VU0VEX1BBUkFNKGNvbnRleHRPcHRpb25zVmFsdWUpOwotCi0gICAgLy8gRklYTUU6
IENvbnZlcnQgdG8gUGFpbnRSZW5kZXJpbmdDb250ZXh0MkRTZXR0aW5ncyBoZXJlIChzdGVwIDE0
KS4KLQotICAgIGlmICghY29uc3RydWN0b3JWYWx1ZS5pc0NvbnN0cnVjdG9yKHZtKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsICJUaGUgc2Vjb25kIGFyZ3Vt
ZW50IG11c3QgYmUgYSBjb25zdHJ1Y3RvciJfcyk7Ci0KLSAgICBKU1ZhbHVlIHByb3RvdHlwZVZh
bHVlID0gY29uc3RydWN0b3JWYWx1ZS5nZXQoJnN0YXRlLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90
b3R5cGUpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7Ci0KLSAg
ICBpZiAoIXByb3RvdHlwZVZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcigmc3RhdGUsIHNjb3BlLCAiVGhlIHNlY29uZCBhcmd1bWVudCBtdXN0IGhhdmUgYSBw
cm90b3R5cGUgdGhhdCBpcyBhbiBvYmplY3QiX3MpOwotCi0gICAgSlNWYWx1ZSBwYWludFZhbHVl
ID0gcHJvdG90eXBlVmFsdWUuZ2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0s
ICJwYWludCIpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwot
Ci0gICAgaWYgKHBhaW50VmFsdWUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsICJUaGUgY2xhc3MgbXVzdCBoYXZlIGEgcGFpbnQgbWV0
aG9kIl9zKTsKLQotICAgIFJlZlB0cjxKU0NTU1BhaW50Q2FsbGJhY2s+IHBhaW50ID0gY29udmVy
dDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTQ1NTUGFpbnRDYWxsYmFjaz4+KHN0YXRlLCBwYWludFZh
bHVlLCAqZ2xvYmFsT2JqZWN0KCkpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpT
VmFsdWUoKSk7Ci0KLSAgICBhdXRvIHBhaW50RGVmaW5pdGlvbiA9IHN0ZDo6dW5pcXVlX3B0cjxQ
YWludERlZmluaXRpb24+KG5ldyBQYWludERlZmluaXRpb24geyBuYW1lLCBwYWludC5yZWxlYXNl
Tm9uTnVsbCgpLCBpbnB1dFByb3BlcnRpZXMsIGlucHV0QXJndW1lbnRzIH0pOwotICAgIHBhaW50
RGVmaW5pdGlvbk1hcC5hZGQobmFtZSwgV1RGTW92ZShwYWludERlZmluaXRpb24pKTsKLQotICAg
IC8vIEZJWE1FOiBjb25zdHJ1Y3QgZG9jdW1lbnREZWZpbml0aW9uIChzdGVwIDIyKS4KLQotICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCi19Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAppbmRleCBlYmIyZjYxZGRjYzMy
NWEwMWRjNTI0YjJiNTJlYjhiMTE0MTQzMDU4Li43ZGRhMjU4NmVmN2IzNWM3NTZiMWIwMjM5ZjFj
MWY3NjE2ZGUzMTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01H
bG9iYWxPYmplY3QuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiSlNSZWFkYWJsZVN0
cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuaCIKICNpbmNsdWRlICJKU1JlbW90ZURPTVdpbmRvdy5o
IgogI2luY2x1ZGUgIkpTV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJKU1dvcmtsZXRH
bG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIlJlamVjdGVkUHJvbWlzZVRyYWNrZXIuaCIKICNpbmNs
dWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlZENsb25l
LmgiCkBAIC0xOTQsNiArMTk1LDEwIEBAIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIEpTRE9NR2xv
YmFsT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgaWYgKGluaGVyaXRzPEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlPih2bSgp
KSkKICAgICAgICAgcmV0dXJuIGpzQ2FzdDxjb25zdCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZSo+
KHRoaXMpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisjaWYgRU5BQkxFKENTU19QQUlOVElO
R19BUEkpCisgICAgaWYgKGluaGVyaXRzPEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZT4odm0oKSkp
CisgICAgICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlKj4o
dGhpcyktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyNlbmRpZgogICAgIGRhdGFMb2coIlVu
ZXhwZWN0ZWQgZ2xvYmFsIG9iamVjdDogIiwgSlNWYWx1ZSh0aGlzKSwgIlxuIik7CiAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQYWludFdvcmtsZXRHbG9i
YWxTY29wZUN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWE4ZjhhYmMxOTBjMDQyNDRiODcxODQ1NGE5
YzY1ODRmOTI2ZGE2MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwCkBAIC0wLDAgKzEsMTMzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKworI2lm
IEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNs
dWRlICJKU0NTU1BhaW50Q2FsbGJhY2suaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnRDYWxsYmFj
a3MuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnRTZXF1ZW5jZXMuaCIKKyNpbmNsdWRlIDx3dGYv
U2V0Rm9yU2NvcGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNwYWNlIEpT
QzsKKworc3RhdGljIEpTVmFsdWUgdGhyb3dJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3IoRXhlY1N0
YXRlJiBzdGF0ZSwgVGhyb3dTY29wZSYgc2NvcGUsIEFTQ0lJTGl0ZXJhbCBtZXNzYWdlKQorewor
ICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CisgICAgdGhyb3dFeGNlcHRpb24oJnN0YXRl
LCBzY29wZSwgY3JlYXRlRE9NRXhjZXB0aW9uKCZzdGF0ZSwgSW52YWxpZE1vZGlmaWNhdGlvbkVy
cm9yLCBtZXNzYWdlKSk7CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKK3ZvaWQgSlNQ
YWludFdvcmtsZXRHbG9iYWxTY29wZTo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oSlNDOjpTbG90
VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBmb3IgKGF1dG8mIHJlZ2lzdGVyZWQgOiB3cmFwcGVk
KCkucGFpbnREZWZpbml0aW9uTWFwKCkudmFsdWVzKCkpCisgICAgICAgIHJlZ2lzdGVyZWQtPnBh
aW50Q2FsbGJhY2stPnZpc2l0SlNGdW5jdGlvbih2aXNpdG9yKTsKK30KKworLy8gaHR0cHM6Ly9k
cmFmdHMuY3NzLWhvdWRpbmkub3JnL2Nzcy1wYWludC1hcGkvI3JlZ2lzdGVyaW5nLWN1c3RvbS1w
YWludAorSlNWYWx1ZSBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlOjpyZWdpc3RlclBhaW50KEV4
ZWNTdGF0ZSYgc3RhdGUpCit7CisgICAgdXNpbmcgUGFpbnREZWZpbml0aW9uID0gUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGU6OlBhaW50RGVmaW5pdGlvbjsKKworICAgIFBhaW50V29ya2xldEdsb2Jh
bFNjb3BlJiB3b3JrbGV0R2xvYmFsU2NvcGUgPSB3cmFwcGVkKCk7CisgICAgVk0mIHZtID0gc3Rh
dGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMikpCisgICAgICAgIHJldHVy
biB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcigmc3RhdGUpKTsKKworICAgIEF0b21pY1N0cmluZyBuYW1lKHN0YXRlLnVuY2hlY2tlZEFy
Z3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnRvQXRvbWljU3RyaW5nKCZzdGF0ZSkpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CisgICAgSlNWYWx1ZSBjb25z
dHJ1Y3RvclZhbHVlID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSk7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKKworICAgIGlmIChuYW1lLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsICJUaGUgZmlyc3Qg
YXJndW1lbnQgbXVzdCBub3QgYmUgdGhlIGVtcHR5IHN0cmluZyJfcyk7CisKKyAgICBhdXRvJiBw
YWludERlZmluaXRpb25NYXAgPSB3b3JrbGV0R2xvYmFsU2NvcGUucGFpbnREZWZpbml0aW9uTWFw
KCk7CisKKyAgICBpZiAocGFpbnREZWZpbml0aW9uTWFwLmNvbnRhaW5zKG5hbWUpKQorICAgICAg
ICByZXR1cm4gdGhyb3dJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Ioc3RhdGUsIHNjb3BlLCAiVGhp
cyBuYW1lIGhhcyBhbHJlYWR5IGJlZW4gcmVnaXN0ZXJlZCJfcyk7CisKKyAgICBWZWN0b3I8U3Ry
aW5nPiBpbnB1dFByb3BlcnRpZXM7CisKKyAgICBKU1ZhbHVlIGlucHV0UHJvcGVydGllc0l0ZXJh
YmxlVmFsdWUgPSBjb25zdHJ1Y3RvclZhbHVlLmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoJnZtLCAiaW5wdXRQcm9wZXJ0aWVzIikpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIEpTVmFsdWUoKSk7CisKKyAgICBpZiAoIWlucHV0UHJvcGVydGllc0l0ZXJhYmxlVmFs
dWUuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgaW5wdXRQcm9wZXJ0aWVzID0gY29udmVydDxJRExT
ZXF1ZW5jZTxJRExET01TdHJpbmc+PihzdGF0ZSwgaW5wdXRQcm9wZXJ0aWVzSXRlcmFibGVWYWx1
ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKKworICAgIC8v
IEZJWE1FOiBWYWxpZGF0ZSBpbnB1dCBwcm9wZXJ0aWVzIGhlcmUgKHN0ZXAgNykuCisKKyAgICBW
ZWN0b3I8U3RyaW5nPiBpbnB1dEFyZ3VtZW50czsKKworICAgIEpTVmFsdWUgaW5wdXRBcmd1bWVu
dHNJdGVyYWJsZVZhbHVlID0gY29uc3RydWN0b3JWYWx1ZS5nZXQoJnN0YXRlLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKCZ2bSwgImlucHV0QXJndW1lbnRzIikpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CisKKyAgICBpZiAoIWlucHV0QXJndW1lbnRzSXRlcmFi
bGVWYWx1ZS5pc1VuZGVmaW5lZCgpKQorICAgICAgICBpbnB1dEFyZ3VtZW50cyA9IGNvbnZlcnQ8
SURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj4oc3RhdGUsIGlucHV0QXJndW1lbnRzSXRlcmFibGVW
YWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKKworICAg
IC8vIEZJWE1FOiBQYXJzZSBzeW50YXggZm9yIGlucHV0QXJndW1lbnRzIGhlcmUgKHN0ZXBzIDEx
IGFuZCAxMikuCisKKyAgICBKU1ZhbHVlIGNvbnRleHRPcHRpb25zVmFsdWUgPSBjb25zdHJ1Y3Rv
clZhbHVlLmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiY29udGV4dE9w
dGlvbnMiKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKKyAg
ICBVTlVTRURfUEFSQU0oY29udGV4dE9wdGlvbnNWYWx1ZSk7CisKKyAgICAvLyBGSVhNRTogQ29u
dmVydCB0byBQYWludFJlbmRlcmluZ0NvbnRleHQyRFNldHRpbmdzIGhlcmUgKHN0ZXAgMTQpLgor
CisgICAgaWYgKCFjb25zdHJ1Y3RvclZhbHVlLmlzQ29uc3RydWN0b3Iodm0pKQorICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgIlRoZSBzZWNvbmQgYXJndW1lbnQg
bXVzdCBiZSBhIGNvbnN0cnVjdG9yIl9zKTsKKworICAgIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUg
PSBjb25zdHJ1Y3RvclZhbHVlLmdldCgmc3RhdGUsIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlw
ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKKworICAgIGlm
ICghcHJvdG90eXBlVmFsdWUuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKCZzdGF0ZSwgc2NvcGUsICJUaGUgc2Vjb25kIGFyZ3VtZW50IG11c3QgaGF2ZSBhIHByb3Rv
dHlwZSB0aGF0IGlzIGFuIG9iamVjdCJfcyk7CisKKyAgICBKU1ZhbHVlIHBhaW50VmFsdWUgPSBw
cm90b3R5cGVWYWx1ZS5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInBh
aW50IikpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CisKKyAg
ICBpZiAocGFpbnRWYWx1ZS5pc1VuZGVmaW5lZCgpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoJnN0YXRlLCBzY29wZSwgIlRoZSBjbGFzcyBtdXN0IGhhdmUgYSBwYWludCBtZXRob2Qi
X3MpOworCisgICAgUmVmUHRyPEpTQ1NTUGFpbnRDYWxsYmFjaz4gcGFpbnQgPSBjb252ZXJ0PElE
TENhbGxiYWNrRnVuY3Rpb248SlNDU1NQYWludENhbGxiYWNrPj4oc3RhdGUsIHBhaW50VmFsdWUs
ICpnbG9iYWxPYmplY3QoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1
ZSgpKTsKKworICAgIGF1dG8gcGFpbnREZWZpbml0aW9uID0gc3RkOjp1bmlxdWVfcHRyPFBhaW50
RGVmaW5pdGlvbj4obmV3IFBhaW50RGVmaW5pdGlvbiB7IG5hbWUsIHBhaW50LnJlbGVhc2VOb25O
dWxsKCksIGlucHV0UHJvcGVydGllcywgaW5wdXRBcmd1bWVudHMgfSk7CisgICAgcGFpbnREZWZp
bml0aW9uTWFwLmFkZChuYW1lLCBXVEZNb3ZlKHBhaW50RGVmaW5pdGlvbikpOworCisgICAgLy8g
RklYTUU6IGNvbnN0cnVjdCBkb2N1bWVudERlZmluaXRpb24gKHN0ZXAgMjIpLgorCisgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTgxNzdmM2MxYWI2NDEzYzU0ZjliNTBhMGY0NTlhZTVkZmE3OWM3YgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFz
ZS5jcHAKQEAgLTAsMCArMSwxNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTV29ya2xl
dEdsb2JhbFNjb3BlQmFzZS5oIgorCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisKKyNp
bmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKKyNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdFRh
c2suaCIKKyNpbmNsdWRlICJKU1dvcmtsZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmts
ZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTQ0pTVmFsdWVJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL0xhbmd1YWdlLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK2NvbnN0IENsYXNz
SW5mbyBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnNfaW5mbyA9IHsgIldvcmtsZXRHbG9iYWxT
Y29wZSIsICZKU0RPTUdsb2JhbE9iamVjdDo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZSkgfTsKKworY29uc3QgR2xv
YmFsT2JqZWN0TWV0aG9kVGFibGUgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzX2dsb2JhbE9i
amVjdE1ldGhvZFRhYmxlID0geworICAgICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLAorICAgICZz
aG91bGRJbnRlcnJ1cHRTY3JpcHQsCisgICAgJmphdmFTY3JpcHRSdW50aW1lRmxhZ3MsCisgICAg
bnVsbHB0ciwgLy8gcXVldWVUYXNrVG9FdmVudExvb3AKKyAgICAmc2hvdWxkSW50ZXJydXB0U2Ny
aXB0QmVmb3JlVGltZW91dCwKKyAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJJbXBvcnRNb2R1
bGUKKyAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJSZXNvbHZlCisgICAgbnVsbHB0ciwgLy8g
bW9kdWxlTG9hZGVyRmV0Y2gKKyAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJDcmVhdGVJbXBv
cnRNZXRhUHJvcGVydGllcworICAgIG51bGxwdHIsIC8vIG1vZHVsZUxvYWRlckV2YWx1YXRlCisg
ICAgJnByb21pc2VSZWplY3Rpb25UcmFja2VyLAorICAgICZkZWZhdWx0TGFuZ3VhZ2UsCisgICAg
bnVsbHB0ciwgLy8gY29tcGlsZVN0cmVhbWluZworICAgIG51bGxwdHIsIC8vIGluc3RhbnRpYXRl
U3RyZWFtaW5nCit9OworCitKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OkpTV29ya2xldEdsb2Jh
bFNjb3BlQmFzZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRy
PFdvcmtsZXRHbG9iYWxTY29wZT4mJiBpbXBsKQorICAgIDogSlNET01HbG9iYWxPYmplY3Qodm0s
IHN0cnVjdHVyZSwgbm9ybWFsV29ybGQodm0pLCAmc19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSkK
KyAgICAsIG1fd3JhcHBlZChXVEZNb3ZlKGltcGwpKQoreworfQorCit2b2lkIEpTV29ya2xldEds
b2JhbFNjb3BlQmFzZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1Byb3h5KiBwcm94eSkKK3sK
KyAgICBtX3Byb3h5LnNldCh2bSwgdGhpcywgcHJveHkpOworCisgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0sIG1fcHJveHkuZ2V0KCkpOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygp
KSk7Cit9CisKK3ZvaWQgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpjbGVhckRPTUd1YXJkZWRP
YmplY3RzKCkKK3sKKyAgICBhdXRvIGd1YXJkZWRPYmplY3RzID0gbV9ndWFyZGVkT2JqZWN0czsK
KyAgICBmb3IgKGF1dG8mIGd1YXJkZWQgOiBndWFyZGVkT2JqZWN0cykKKyAgICAgICAgZ3VhcmRl
ZC0+Y2xlYXIoKTsKK30KKwordm9pZCBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1dvcmts
ZXRHbG9iYWxTY29wZUJhc2UqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNXb3JrbGV0R2xvYmFsU2Nv
cGVCYXNlKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0
LCBpbmZvKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7
CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9wcm94eSk7Cit9CisKK3ZvaWQgSlNX
b3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBzdGF0
aWNfY2FzdDxKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UqPihjZWxsKS0+SlNXb3JrbGV0R2xvYmFs
U2NvcGVCYXNlOjp+SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlKCk7Cit9CisKK1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd3JhcHBlZC5nZXQoKTsKK30KKworYm9vbCBK
U1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnN1cHBvcnRzUmljaFNvdXJjZUluZm8oY29uc3QgSlNH
bG9iYWxPYmplY3QqIG9iamVjdCkKK3sKKyAgICByZXR1cm4gSlNHbG9iYWxPYmplY3Q6OnN1cHBv
cnRzUmljaFNvdXJjZUluZm8ob2JqZWN0KTsKK30KKworYm9vbCBKU1dvcmtsZXRHbG9iYWxTY29w
ZUJhc2U6OnNob3VsZEludGVycnVwdFNjcmlwdChjb25zdCBKU0dsb2JhbE9iamVjdCogb2JqZWN0
KQoreworICAgIHJldHVybiBKU0dsb2JhbE9iamVjdDo6c2hvdWxkSW50ZXJydXB0U2NyaXB0KG9i
amVjdCk7Cit9CisKK2Jvb2wgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzaG91bGRJbnRlcnJ1
cHRTY3JpcHRCZWZvcmVUaW1lb3V0KGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvYmplY3QpCit7Cisg
ICAgcmV0dXJuIEpTR2xvYmFsT2JqZWN0OjpzaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1l
b3V0KG9iamVjdCk7Cit9CisKK1J1bnRpbWVGbGFncyBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6
OmphdmFTY3JpcHRSdW50aW1lRmxhZ3MoY29uc3QgSlNHbG9iYWxPYmplY3QqIG9iamVjdCkKK3sK
KyAgICBjb25zdCBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
Y29uc3QgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlKj4ob2JqZWN0KTsKKyAgICByZXR1cm4gdGhp
c09iamVjdC0+bV93cmFwcGVkLT5qc1J1bnRpbWVGbGFncygpOworfQorCitKU1ZhbHVlIHRvSlMo
RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCosIFdvcmtsZXRHbG9iYWxTY29wZSYg
d29ya2xldEdsb2JhbFNjb3BlKQoreworICAgIHJldHVybiB0b0pTKGV4ZWMsIHdvcmtsZXRHbG9i
YWxTY29wZSk7Cit9CisKK0pTVmFsdWUgdG9KUyhFeGVjU3RhdGUqLCBXb3JrbGV0R2xvYmFsU2Nv
cGUmIHdvcmtsZXRHbG9iYWxTY29wZSkKK3sKKyAgICBXb3JrbGV0U2NyaXB0Q29udHJvbGxlciog
c2NyaXB0ID0gd29ya2xldEdsb2JhbFNjb3BlLnNjcmlwdCgpOworICAgIGlmICghc2NyaXB0KQor
ICAgICAgICByZXR1cm4ganNOdWxsKCk7CisgICAgSlNXb3JrbGV0R2xvYmFsU2NvcGUqIGNvbnRl
eHRXcmFwcGVyID0gc2NyaXB0LT53b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKCk7CisgICAgQVNT
RVJUKGNvbnRleHRXcmFwcGVyKTsKKyAgICByZXR1cm4gY29udGV4dFdyYXBwZXItPnByb3h5KCk7
Cit9CisKK0pTV29ya2xldEdsb2JhbFNjb3BlKiB0b0pTV29ya2xldEdsb2JhbFNjb3BlKFZNJiB2
bSwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvID0gYXNPYmpl
Y3QodmFsdWUpLT5jbGFzc0luZm8odm0pOworCisgICAgaWYgKGNsYXNzSW5mbyA9PSBKU1Byb3h5
OjppbmZvKCkpCisgICAgICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTV29ya2xldEdsb2JhbFNj
b3BlKj4odm0sIGpzQ2FzdDxKU1Byb3h5Kj4oYXNPYmplY3QodmFsdWUpKS0+dGFyZ2V0KCkpOwor
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFs
U2NvcGVCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxT
Y29wZUJhc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNTU4MjdiOThkM2RjYmNlNjQ1ZWJlYzU2ODM1YjBkMzEz
MmRhNzMwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
b3JrbGV0R2xvYmFsU2NvcGVCYXNlLmgKQEAgLTAsMCArMSw4NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShDU1NfUEFJTlRJTkdfQVBJKQorCisjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIK
KyNpbmNsdWRlICJKU0RPTVdyYXBwZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBKU1dvcmtsZXRHbG9iYWxTY29wZTsKK2NsYXNzIFdvcmtsZXRHbG9iYWxTY29wZTsKKworY2xh
c3MgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlIDogcHVibGljIEpTRE9NR2xvYmFsT2JqZWN0IHsK
KyAgICB0eXBlZGVmIEpTRE9NR2xvYmFsT2JqZWN0IEJhc2U7CitwdWJsaWM6CisgICAgc3RhdGlj
IHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAg
V29ya2xldEdsb2JhbFNjb3BlJiB3cmFwcGVkKCkgY29uc3QgeyByZXR1cm4gKm1fd3JhcHBlZDsg
fQorICAgIEpTQzo6SlNQcm94eSogcHJveHkoKSBjb25zdCB7IEFTU0VSVChtX3Byb3h5KTsgcmV0
dXJuIG1fcHJveHkuZ2V0KCk7IH0KKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CisKKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEpTQzo6
U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJ
bmZvKEpTQzo6R2xvYmFsT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAg
IH0KKworICAgIHN0YXRpYyBjb25zdCBKU0M6Okdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIHNfZ2xv
YmFsT2JqZWN0TWV0aG9kVGFibGU7CisKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c1JpY2hTb3Vy
Y2VJbmZvKGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgYm9vbCBzaG91
bGRJbnRlcnJ1cHRTY3JpcHQoY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHN0YXRp
YyBib29sIHNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQoY29uc3QgSlNDOjpKU0ds
b2JhbE9iamVjdCopOworICAgIHN0YXRpYyBKU0M6OlJ1bnRpbWVGbGFncyBqYXZhU2NyaXB0UnVu
dGltZUZsYWdzKGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgdm9pZCBx
dWV1ZVRhc2tUb0V2ZW50TG9vcChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgUmVmPEpTQzo6TWljcm90
YXNrPiYmKTsKKworICAgIHZvaWQgY2xlYXJET01HdWFyZGVkT2JqZWN0cygpOworCitwcm90ZWN0
ZWQ6CisgICAgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlKEpTQzo6Vk0mLCBKU0M6OlN0cnVjdHVy
ZSosIFJlZlB0cjxXb3JrbGV0R2xvYmFsU2NvcGU+JiYpOworICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oSlNDOjpWTSYsIEpTQzo6SlNQcm94eSopOworCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGls
ZHJlbihKU0M6OkpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKTsKKworcHJpdmF0ZToKKyAgICBS
ZWZQdHI8V29ya2xldEdsb2JhbFNjb3BlPiBtX3dyYXBwZWQ7CisgICAgSlNDOjpXcml0ZUJhcnJp
ZXI8SlNDOjpKU1Byb3h5PiBtX3Byb3h5OworfTsKKworLy8gUmV0dXJucyBhIEpTV29ya2xldEds
b2JhbFNjb3BlIG9yIGpzTnVsbCgpCisvLyBBbHdheXMgaWdub3JlcyB0aGUgZXhlY1N0YXRlIGFu
ZCBwYXNzZWQgZ2xvYmFsT2JqZWN0LCBXb3JrbGV0R2xvYmFsU2NvcGUgaXMgaXRzZWxmIGEgZ2xv
YmFsT2JqZWN0IGFuZCB3aWxsIGFsd2F5cyB1c2UgaXRzIG93biBwcm90b3R5cGUgY2hhaW4uCitK
U0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgV29y
a2xldEdsb2JhbFNjb3BlJik7CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFdvcmtsZXRHbG9iYWxT
Y29wZSogc2NvcGUpIHsgcmV0dXJuIHNjb3BlID8gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsICpz
Y29wZSkgOiBKU0M6OmpzTnVsbCgpOyB9CitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0
ZSosIFdvcmtsZXRHbG9iYWxTY29wZSYpOworaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBXb3JrbGV0R2xvYmFsU2NvcGUqIHNjb3BlKSB7IHJldHVybiBzY29w
ZSA/IHRvSlMoZXhlYywgKnNjb3BlKSA6IEpTQzo6anNOdWxsKCk7IH0KKworSlNXb3JrbGV0R2xv
YmFsU2NvcGUqIHRvSlNXb3JrbGV0R2xvYmFsU2NvcGUoSlNDOjpWTSYsIEpTQzo6SlNWYWx1ZSk7
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdFN0YXRlLmNwcAppbmRleCBlZWU4MzljYzQyNjRmYmU0YTI5ZGZiOTkxYjVmZGU1
MGQ2MGJhYjFjLi5hMWJhMTQ1MjgzNGQ4Y2EzY2U2YWY0NzcxMWU5NzBiMzg4Y2MxYjA3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwCkBAIC0zNSwxMSArMzUs
MTQgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93QmFzZS5oIgog
I2luY2x1ZGUgIkpTV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJKU1dvcmtsZXRHbG9i
YWxTY29wZS5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAj
aW5jbHVkZSAiV29ya2VyU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIldvcmtsZXRHbG9i
YWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvQ2FsbEZyYW1lLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNHbG9iYWxPYmplY3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmdJbmxpbmVz
Lmg+CkBAIC05NSw5ICs5OCwxNiBAQCBKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbVBhZ2Uo
RE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgUGFnZSogcGFnZSkKICAgICByZXR1cm4gcGFnZSA/IHBh
Z2UtPm1haW5GcmFtZSgpLnNjcmlwdCgpLmdsb2JhbE9iamVjdCh3b3JsZCktPmdsb2JhbEV4ZWMo
KSA6IG51bGxwdHI7CiB9CiAKLUpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tV29ya2VyR2xv
YmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlckdsb2JhbFNjb3BlKQorSlNDOjpFeGVj
U3RhdGUqIGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZShXb3JrZXJHbG9iYWxTY29wZSYg
d29ya2VyR2xvYmFsU2NvcGUpCiB7Ci0gICAgcmV0dXJuIHdvcmtlckdsb2JhbFNjb3BlLT5zY3Jp
cHQoKS0+d29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKCktPmdsb2JhbEV4ZWMoKTsKKyAgICByZXR1
cm4gd29ya2VyR2xvYmFsU2NvcGUuc2NyaXB0KCktPndvcmtlckdsb2JhbFNjb3BlV3JhcHBlcigp
LT5nbG9iYWxFeGVjKCk7CiB9CiAKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKK0pTQzo6
RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tV29ya2xldEdsb2JhbFNjb3BlKFdvcmtsZXRHbG9iYWxT
Y29wZSYgd29ya2xldEdsb2JhbFNjb3BlKQoreworICAgIHJldHVybiB3b3JrbGV0R2xvYmFsU2Nv
cGUuc2NyaXB0KCktPndvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIoKS0+Z2xvYmFsRXhlYygpOwor
fQorI2VuZGlmCisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdFN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCmlu
ZGV4IDc0NDIxZmQ5NWJhMTc3NTZlYjg5YzAwNDI2YzMzZmI1NDU0OTgzOTAuLjE1Mzg0YTcxMWYz
NTZjZWU0NzhjYTk5ZTI1NTViMWVlYTI0ODJhZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0U3RhdGUuaApAQCAtNDQsNiArNDQsOSBAQCBjbGFzcyBOb2RlOwogY2xhc3MgUGFn
ZTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBXb3JrZXJHbG9iYWxTY29w
ZTsKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKK2NsYXNzIFdvcmtsZXRHbG9iYWxTY29w
ZTsKKyNlbmRpZgogCiBET01XaW5kb3cqIGRvbVdpbmRvd0Zyb21FeGVjU3RhdGUoSlNDOjpFeGVj
U3RhdGUqKTsKIEZyYW1lKiBmcmFtZUZyb21FeGVjU3RhdGUoSlNDOjpFeGVjU3RhdGUqKTsKQEAg
LTUzLDYgKzU2LDkgQEAgSlNDOjpFeGVjU3RhdGUqIG1haW5Xb3JsZEV4ZWNTdGF0ZShGcmFtZSop
OwogCiBKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbU5vZGUoRE9NV3JhcHBlcldvcmxkJiwg
Tm9kZSopOwogV0VCQ09SRV9FWFBPUlQgSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZUZyb21QYWdl
KERPTVdyYXBwZXJXb3JsZCYsIFBhZ2UqKTsKLUpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9t
V29ya2VyR2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUqKTsKK0pTQzo6RXhlY1N0YXRlKiBl
eGVjU3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUmKTsKKyNpZiBF
TkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKK0pTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tV29y
a2xldEdsb2JhbFNjb3BlKFdvcmtsZXRHbG9iYWxTY29wZSYpOworI2VuZGlmCiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dl
YkNvcmVCdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVC
dWlsdGluTmFtZXMuaAppbmRleCAxYzkzODU5ZWNjMTY4NzRjMGMwN2UzNzNiMjk3M2M0MjUwNWRl
YTgwLi4yOTJmZDk3OTI0NDlkMzc3ZDI3NWMyODI0YmUxNTJkY2E2ZmQ2OTFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCkBAIC01MSw3
ICs1MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhDcmVkZW50aWFsKSBcCiAg
ICAgbWFjcm8oQ3JlZGVudGlhbHNDb250YWluZXIpIFwKICAgICBtYWNybyhDU1NBbmltYXRpb24p
IFwKLSAgICBtYWNybyhDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSkgXAogICAgIG1hY3JvKENT
U1RyYW5zaXRpb24pIFwKICAgICBtYWNybyhDdXN0b21FbGVtZW50UmVnaXN0cnkpIFwKICAgICBt
YWNybyhEYXRhYmFzZSkgXApAQCAtMTIzLDYgKzEyMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBtYWNybyhTUUxSZXN1bHRTZXQpIFwKICAgICBtYWNybyhTUUxSZXN1bHRTZXRSb3dMaXN0
KSBcCiAgICAgbWFjcm8oU1FMVHJhbnNhY3Rpb24pIFwKKyAgICBtYWNybyhQYWludFdvcmtsZXRH
bG9iYWxTY29wZSkgXAogICAgIG1hY3JvKFBlcmZvcm1hbmNlRW50cnkpIFwKICAgICBtYWNybyhQ
ZXJmb3JtYW5jZUVudHJ5TGlzdCkgXAogICAgIG1hY3JvKFBlcmZvcm1hbmNlTWFyaykgXApAQCAt
MjEwLDYgKzIxMCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhXZWJLaXRNZWRp
YUtleXMpIFwKICAgICBtYWNybyhXZWJTb2NrZXQpIFwKICAgICBtYWNybyhXaW5kb3dDbGllbnQp
IFwKKyAgICBtYWNybyhXb3JrbGV0KSBcCisgICAgbWFjcm8oV29ya2xldEdsb2JhbFNjb3BlKSBc
CiAgICAgbWFjcm8oV3JpdGFibGVTdHJlYW0pIFwKICAgICBtYWNybyhYTUxIdHRwUmVxdWVzdCkg
XAogICAgIG1hY3JvKGFwcGVuZEZyb21KUykgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCA0OGZjZTdiYzE2YTg4MGQ2M2Y0
MzJhMDE4ZjFmZWUyZjY3YmY1YmRjLi45YmRkZGVkMzAxNjcxZmI0NDc5NWIzMzJlZmZlMTJlYTAz
NWE4MzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQpAQCAtNDk3LDcgKzQ5Nyw3IEBAIHN1YiBHZXRDdXN0b21Jc1JlYWNoYWJs
ZQogc3ViIElzRE9NR2xvYmFsT2JqZWN0CiB7CiAgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0Owot
ICAgIHJldHVybiAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIGVxICJET01XaW5kb3ciIHx8ICRpbnRl
cmZhY2UtPnR5cGUtPm5hbWUgZXEgIlJlbW90ZURPTVdpbmRvdyIgfHwgJGNvZGVHZW5lcmF0b3It
PkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrZXJHbG9iYWxTY29wZSIpIHx8ICRp
bnRlcmZhY2UtPnR5cGUtPm5hbWUgZXEgIlRlc3RHbG9iYWxPYmplY3QiOworICAgIHJldHVybiAk
aW50ZXJmYWNlLT50eXBlLT5uYW1lIGVxICJET01XaW5kb3ciIHx8ICRpbnRlcmZhY2UtPnR5cGUt
Pm5hbWUgZXEgIlJlbW90ZURPTVdpbmRvdyIgfHwgJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50
ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrZXJHbG9iYWxTY29wZSIpIHx8ICRjb2RlR2VuZXJhdG9y
LT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiV29ya2xldEdsb2JhbFNjb3BlIikgfHwg
JGludGVyZmFjZS0+dHlwZS0+bmFtZSBlcSAiVGVzdEdsb2JhbE9iamVjdCI7CiB9CiAKIHN1YiBT
aG91bGRVc2VHbG9iYWxPYmplY3RQcm90b3R5cGUKQEAgLTUwNiw2ICs1MDYsNyBAQCBzdWIgU2hv
dWxkVXNlR2xvYmFsT2JqZWN0UHJvdG90eXBlCiAKICAgICAjIEZvciB3b3JrZXJzLCB0aGUgZ2xv
YmFsIG9iamVjdCBpcyBhIERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLgogICAgIHJldHVybiAw
IGlmICRpbnRlcmZhY2UtPnR5cGUtPm5hbWUgZXEgIldvcmtlckdsb2JhbFNjb3BlIjsKKyAgICBy
ZXR1cm4gMCBpZiAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIGVxICJXb3JrbGV0R2xvYmFsU2NvcGUi
OwogCiAgICAgcmV0dXJuIElzRE9NR2xvYmFsT2JqZWN0KCRpbnRlcmZhY2UpOwogfQpAQCAtMjUz
Nyw3ICsyNTM4LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0sIHByb3h5KTtcbiIpOwogICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICByZXR1cm4gcHRyO1xuIik7CiAgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgfVxuXG4iKTsKLSAgICB9IGVsc2lmICgkY29k
ZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldvcmtlckdsb2JhbFNj
b3BlIikpIHsKKyAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2Uo
JGludGVyZmFjZSwgIldvcmtlckdsb2JhbFNjb3BlIikgfHwgJGNvZGVHZW5lcmF0b3ItPkluaGVy
aXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrbGV0R2xvYmFsU2NvcGUiKSkgewogICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyAkY2xhc3NOYW1lKiBjcmVhdGUoSlND
OjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZjwkaW1wbFR5cGU+JiYgaW1w
bCwgSlNDOjpKU1Byb3h5KiBwcm94eSlcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiICAgIHtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICAkY2xh
c3NOYW1lKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPCRjbGFzc05hbWU+
KHZtLmhlYXApKSAke2NsYXNzTmFtZX0odm0sIHN0cnVjdHVyZSwgV1RGTW92ZShpbXBsKSk7XG4i
KTsKQEAgLTI4NDUsNyArMjg0Niw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICMgQ29uc3Ry
dWN0b3IKICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIgfHwgJGludGVyZmFj
ZU5hbWUgZXEgIlJlbW90ZURPTVdpbmRvdyIpIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIiAgICAkY2xhc3NOYW1lKEpTQzo6Vk0mLCBKU0M6OlN0cnVjdHVyZSosIFJlZjwkaW1wbFR5
cGU+JiYsIEpTV2luZG93UHJveHkqKTtcbiIpOwotICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9y
LT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiV29ya2VyR2xvYmFsU2NvcGUiKSkgewor
ICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNl
LCAiV29ya2VyR2xvYmFsU2NvcGUiKSB8fCAkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZh
Y2UoJGludGVyZmFjZSwgIldvcmtsZXRHbG9iYWxTY29wZSIpKSB7CiAgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgJGNsYXNzTmFtZShKU0M6OlZNJiwgSlNDOjpTdHJ1Y3R1cmUqLCBS
ZWY8JGltcGxUeXBlPiYmKTtcbiIpOwogICAgIH0gZWxzaWYgKCFOZWVkc0ltcGxlbWVudGF0aW9u
Q2xhc3MoJGludGVyZmFjZSkpIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAk
Y2xhc3NOYW1lKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmKTtcblxuIik7CkBA
IC0yODU1LDcgKzI4NTYsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAgIGlmICgkaW50ZXJm
YWNlTmFtZSBlcSAiRE9NV2luZG93IiB8fCAkaW50ZXJmYWNlTmFtZSBlcSAiUmVtb3RlRE9NV2lu
ZG93IikgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oSlNDOjpWTSYsIEpTV2luZG93UHJveHkqKTtcbiIpOwotICAgIH0gZWxzaWYgKCRjb2Rl
R2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiV29ya2VyR2xvYmFsU2Nv
cGUiKSkgeworICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgk
aW50ZXJmYWNlLCAiV29ya2VyR2xvYmFsU2NvcGUiKSB8fCAkY29kZUdlbmVyYXRvci0+SW5oZXJp
dHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldvcmtsZXRHbG9iYWxTY29wZSIpKSB7CiAgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiwg
SlNDOjpKU1Byb3h5Kik7XG4iKTsKICAgICB9IGVsc2UgewogICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpO1xuIik7CkBAIC0zNjYy
LDYgKzM2NjMsOCBAQCBzdWIgR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmdG
b3JFeHBvc2VkCiAgICAgICAgIHB1c2goQCRjb25qdW5jdHMsICJqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPigiIC4gJGdsb2JhbE9iamVjdFB0ciAuICIpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPmlzRG9jdW1lbnQoKSIpOwogICAgIH0gZWxzaWYgKCRleHBvc2VkIGVxICJXb3JrZXIiKSB7
CiAgICAgICAgIHB1c2goQCRjb25qdW5jdHMsICJqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigi
IC4gJGdsb2JhbE9iamVjdFB0ciAuICIpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzV29y
a2VyR2xvYmFsU2NvcGUoKSIpOworICAgIH0gZWxzaWYgKCRleHBvc2VkIGVxICJXb3JrbGV0Iikg
eworICAgICAgICBwdXNoKEAkY29uanVuY3RzLCAianNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
IiAuICRnbG9iYWxPYmplY3RQdHIgLiAiKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1dv
cmtsZXRHbG9iYWxTY29wZSgpIik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgYXNzZXJ0KCJVbnJl
Y29nbml6ZWQgdmFsdWUgJyIgLiBEdW1wZXIoJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0V4cG9zZWR9KSAuICInIGZvciB0aGUgRXhwb3NlZCBleHRlbmRlZCBhdHRyaWJ1dGUgb24gJyIg
LiByZWYoJGNvbnRleHQpIC4gIicuIik7CiAgICAgfQpAQCAtNDI1Miw3ICs0MjU1LDcgQEAgc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
OiAkcGFyZW50Q2xhc3NOYW1lKHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUoaW1wbCksIHByb3h5KVxu
Iik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAifVxuXG4iKTsKLSAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SW5oZXJp
dHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldvcmtlckdsb2JhbFNjb3BlIikpIHsKKyAgICB9IGVs
c2lmICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldvcmtl
ckdsb2JhbFNjb3BlIikgfHwgJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRl
cmZhY2UsICJXb3JrbGV0R2xvYmFsU2NvcGUiKSkgewogICAgICAgICBBZGRJbmNsdWRlc0Zvcklt
cGxlbWVudGF0aW9uVHlwZUluSW1wbCgkaW50ZXJmYWNlTmFtZSk7CiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiJHtjbGFzc05hbWV9OjokY2xhc3NOYW1lKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIFJlZjwkaW1wbFR5cGU+JiYgaW1wbClcbiIpOwogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICA6ICRwYXJlbnRDbGFzc05hbWUodm0sIHN0cnVjdHVyZSwgV1RGTW92ZShp
bXBsKSlcbiIpOwpAQCAtNDI3Myw3ICs0Mjc2LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7Y2xhc3NOYW1lfTo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBKU1dpbmRvd1Byb3h5KiBwcm94eSlcbiIpOwogICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgcHJveHkpO1xuXG4iKTsKLSAgICB9IGVsc2lmICgkY29k
ZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldvcmtlckdsb2JhbFNj
b3BlIikpIHsKKyAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2Uo
JGludGVyZmFjZSwgIldvcmtlckdsb2JhbFNjb3BlIikgfHwgJGNvZGVHZW5lcmF0b3ItPkluaGVy
aXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrbGV0R2xvYmFsU2NvcGUiKSkgewogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtjbGFzc05hbWV9OjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIEpTUHJveHkqIHByb3h5KVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
e1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKHZtLCBwcm94eSk7XG5cbiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbAppbmRleCAzZTA1YzdiNDk2ODJiZWU2NGY2ODk4YjRk
ZjQ0ODQyNTEzNDM4YjUxLi40NmNkM2I4ZjljYTljMTFhYTUxZmJkOWZhODc2MGZhN2IwZmQ5MzM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3Mt
aWRscy5wbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3Mt
aWRscy5wbApAQCAtMzYsNiArMzYsOCBAQCBteSAkd2luZG93Q29uc3RydWN0b3JzRmlsZTsKIG15
ICR3b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGU7CiBteSAkZGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlOwogbXkgJHNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZUNvbnN0cnVjdG9yc0ZpbGU7CitteSAkd29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmls
ZTsKK215ICRwYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGU7CiBteSAkc3Vw
cGxlbWVudGFsTWFrZWZpbGVEZXBzOwogCiBHZXRPcHRpb25zKCdkZWZpbmVzPXMnID0+IFwkZGVm
aW5lcywKQEAgLTQ2LDYgKzQ4LDggQEAgR2V0T3B0aW9ucygnZGVmaW5lcz1zJyA9PiBcJGRlZmlu
ZXMsCiAgICAgICAgICAgICd3b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGU9cycgPT4g
XCR3b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUsCiAgICAgICAgICAgICdkZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGU9cycgPT4gXCRkZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUsCiAgICAgICAgICAgICdzZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlPXMnID0+IFwkc2VydmljZVdvcmtlckdsb2JhbFNj
b3BlQ29uc3RydWN0b3JzRmlsZSwKKyAgICAgICAgICAgJ3dvcmtsZXRHbG9iYWxTY29wZUNvbnN0
cnVjdG9yc0ZpbGU9cycgPT4gXCR3b3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlLAor
ICAgICAgICAgICAncGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlPXMnID0+
IFwkcGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlLAogICAgICAgICAgICAn
c3VwcGxlbWVudGFsTWFrZWZpbGVEZXBzPXMnID0+IFwkc3VwcGxlbWVudGFsTWFrZWZpbGVEZXBz
KTsKIAogZGllKCdNdXN0IHNwZWNpZnkgI2RlZmluZSBtYWNyb3MgdXNpbmcgLS1kZWZpbmVzLicp
IHVubGVzcyBkZWZpbmVkKCRkZWZpbmVzKTsKQEAgLTU0LDYgKzU4LDggQEAgZGllKCdNdXN0IHNw
ZWNpZnkgYW4gb3V0cHV0IGZpbGUgdXNpbmcgLS13aW5kb3dDb25zdHJ1Y3RvcnNGaWxlLicpIHVu
bGVzcyBkZWZpbmUKIGRpZSgnTXVzdCBzcGVjaWZ5IGFuIG91dHB1dCBmaWxlIHVzaW5nIC0td29y
a2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlLicpIHVubGVzcyBkZWZpbmVkKCR3b3JrZXJH
bG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOwogZGllKCdNdXN0IHNwZWNpZnkgYW4gb3V0cHV0
IGZpbGUgdXNpbmcgLS1kZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUu
JykgdW5sZXNzIGRlZmluZWQoJGRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3Jz
RmlsZSk7CiBkaWUoJ011c3Qgc3BlY2lmeSBhbiBvdXRwdXQgZmlsZSB1c2luZyAtLXNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUuJykgdW5sZXNzIGRlZmluZWQoJHNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOworZGllKCdNdXN0IHNwZWNpZnkg
YW4gb3V0cHV0IGZpbGUgdXNpbmcgLS13b3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxl
LicpIHVubGVzcyBkZWZpbmVkKCR3b3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlKTsK
K2RpZSgnTXVzdCBzcGVjaWZ5IGFuIG91dHB1dCBmaWxlIHVzaW5nIC0tcGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlLicpIHVubGVzcyBkZWZpbmVkKCRwYWludFdvcmtsZXRH
bG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOwogZGllKCdNdXN0IHNwZWNpZnkgdGhlIGZpbGUg
bGlzdGluZyBhbGwgSURMcyB1c2luZyAtLWlkbEZpbGVzTGlzdC4nKSB1bmxlc3MgZGVmaW5lZCgk
aWRsRmlsZXNMaXN0KTsKIAogJHN1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlID0gQ3lnd2luUGF0
aElmTmVlZGVkKCRzdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZSk7CkBAIC02MSw2ICs2Nyw4IEBA
ICR3aW5kb3dDb25zdHJ1Y3RvcnNGaWxlID0gQ3lnd2luUGF0aElmTmVlZGVkKCR3aW5kb3dDb25z
dHJ1Y3RvcnNGaWxlKTsKICR3b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgPSBDeWd3
aW5QYXRoSWZOZWVkZWQoJHdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSk7CiAkZGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlID0gQ3lnd2luUGF0aElmTmVl
ZGVkKCRkZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOwogJHNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgPSBDeWd3aW5QYXRoSWZOZWVkZWQo
JHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOworJHdvcmtsZXRHbG9i
YWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgPSBDeWd3aW5QYXRoSWZOZWVkZWQoJHdvcmtsZXRHbG9i
YWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOworJHBhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3JzRmlsZSA9IEN5Z3dpblBhdGhJZk5lZWRlZCgkcGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVD
b25zdHJ1Y3RvcnNGaWxlKTsKICRzdXBwbGVtZW50YWxNYWtlZmlsZURlcHMgPSBDeWd3aW5QYXRo
SWZOZWVkZWQoJHN1cHBsZW1lbnRhbE1ha2VmaWxlRGVwcyk7CiAKIG9wZW4gRkgsICI8ICRpZGxG
aWxlc0xpc3QiIG9yIGRpZSAiQ2Fubm90IG9wZW4gJGlkbEZpbGVzTGlzdFxuIjsKQEAgLTgwLDYg
Kzg4LDggQEAgbXkgJHdpbmRvd0NvbnN0cnVjdG9yc0NvZGUgPSAiIjsKIG15ICR3b3JrZXJHbG9i
YWxTY29wZUNvbnN0cnVjdG9yc0NvZGUgPSAiIjsKIG15ICRkZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZUNvbnN0cnVjdG9yc0NvZGUgPSAiIjsKIG15ICRzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVD
b25zdHJ1Y3RvcnNDb2RlID0gIiI7CitteSAkd29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3Jz
Q29kZSA9ICIiOworbXkgJHBhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzQ29kZSA9
ICIiOwogCiAjIEdldCByaWQgb2YgZHVwbGljYXRlcyBpbiBpZGxGaWxlcyBhcnJheS4KIG15ICVp
ZGxGaWxlSGFzaCA9IG1hcCB7ICRfLCAxIH0gQGlkbEZpbGVzOwpAQCAtMTQzLDYgKzE1MywxMCBA
QCBmb3JlYWNoIG15ICRpZGxGaWxlIChzb3J0IGtleXMgJWlkbEZpbGVIYXNoKSB7CiAgICAgICAg
ICAgICAgICAgICAgICRkZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0NvZGUg
Lj0gJGF0dHJpYnV0ZUNvZGU7CiAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGdsb2JhbENvbnRl
eHQgZXEgIlNlcnZpY2VXb3JrZXIiKSB7CiAgICAgICAgICAgICAgICAgICAgICRzZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNDb2RlIC49ICRhdHRyaWJ1dGVDb2RlOworICAgICAg
ICAgICAgICAgIH0gZWxzaWYgKCRnbG9iYWxDb250ZXh0IGVxICJXb3JrbGV0IikgeworICAgICAg
ICAgICAgICAgICAgICAkd29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzQ29kZSAuPSAkYXR0
cmlidXRlQ29kZTsKKyAgICAgICAgICAgICAgICB9IGVsc2lmICgkZ2xvYmFsQ29udGV4dCBlcSAi
UGFpbnRXb3JrbGV0IikgeworICAgICAgICAgICAgICAgICAgICAkcGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGVDb25zdHJ1Y3RvcnNDb2RlIC49ICRhdHRyaWJ1dGVDb2RlOwogICAgICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIGRpZSAiVW5zdXBwb3J0ZWQgZ2xvYmFsIGNv
bnRleHQgJyRnbG9iYWxDb250ZXh0JyB1c2VkIGluIFtFeHBvc2VkXSBhdCAkaWRsRmlsZSI7CiAg
ICAgICAgICAgICAgICAgfQpAQCAtMTU3LDYgKzE3MSw4IEBAIEdlbmVyYXRlUGFydGlhbEludGVy
ZmFjZSgiRE9NV2luZG93IiwgJHdpbmRvd0NvbnN0cnVjdG9yc0NvZGUsICR3aW5kb3dDb25zdHJ1
Y3RvCiBHZW5lcmF0ZVBhcnRpYWxJbnRlcmZhY2UoIldvcmtlckdsb2JhbFNjb3BlIiwgJHdvcmtl
ckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzQ29kZSwgJHdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0
b3JzRmlsZSk7CiBHZW5lcmF0ZVBhcnRpYWxJbnRlcmZhY2UoIkRlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlIiwgJGRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzQ29kZSwgJGRl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSk7CiBHZW5lcmF0ZVBhcnRp
YWxJbnRlcmZhY2UoIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSIsICRzZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGVDb25zdHJ1Y3RvcnNDb2RlLCAkc2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3JzRmlsZSk7CitHZW5lcmF0ZVBhcnRpYWxJbnRlcmZhY2UoIldvcmtsZXRHbG9iYWxTY29w
ZSIsICR3b3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNDb2RlLCAkd29ya2xldEdsb2JhbFNj
b3BlQ29uc3RydWN0b3JzRmlsZSk7CitHZW5lcmF0ZVBhcnRpYWxJbnRlcmZhY2UoIlBhaW50V29y
a2xldEdsb2JhbFNjb3BlIiwgJHBhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzQ29k
ZSwgJHBhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSk7CiAKICMgUmVzb2x2
ZXMgcGFydGlhbCBpbnRlcmZhY2VzIGFuZCBpbXBsZW1lbnRzIGRlcGVuZGVuY2llcy4KIGZvcmVh
Y2ggbXkgJGlkbEZpbGUgKHNvcnQga2V5cyAlc3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludEltYWdlVmFsdWUuY3BwCmluZGV4IGE2OTBlNDFkNzY3
MWRlYTAzNTMyMWZhZmU3YjdmYTk3MTFhYmRhNTIuLjYxNjQxMzU4NmNmNjc2NDk3YjFhMjNlNjAw
MWMyNjU2YzBlN2M2ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludElt
YWdlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludEltYWdlVmFsdWUu
Y3BwCkBAIC0yOSw4ICsyOSw4IEBACiAKICNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKIAot
I2luY2x1ZGUgIkNTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiQ3VzdG9t
UGFpbnRJbWFnZS5oIgorI2luY2x1ZGUgIlBhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5j
bHVkZSAiUmVuZGVyRWxlbWVudC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aD4KIApAQCAtNTAsOCArNTAsMTAgQEAgUmVmUHRyPEltYWdlPiBDU1NQYWludEltYWdlVmFsdWU6
OmltYWdlKFJlbmRlckVsZW1lbnQmIHJlbmRlckVsZW1lbnQsIGNvbnN0IEZsb2EKIHsKICAgICBp
ZiAoc2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8mIHNl
bGVjdGVkR2xvYmFsU2NvcGUgPSByZW5kZXJFbGVtZW50LmRvY3VtZW50KCkuZW5zdXJlQ1NTUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGUoKTsKLSAgICBhdXRvKiByZWdpc3RyYXRpb24gPSBzZWxlY3Rl
ZEdsb2JhbFNjb3BlLnBhaW50RGVmaW5pdGlvbk1hcCgpLmdldChtX25hbWUpOworICAgIGF1dG8q
IHNlbGVjdGVkR2xvYmFsU2NvcGUgPSByZW5kZXJFbGVtZW50LmRvY3VtZW50KCkuZ2V0Q1NTUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGUoKTsKKyAgICBpZiAoIXNlbGVjdGVkR2xvYmFsU2NvcGUpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8qIHJlZ2lzdHJhdGlvbiA9IHNlbGVjdGVk
R2xvYmFsU2NvcGUtPnBhaW50RGVmaW5pdGlvbk1hcCgpLmdldChtX25hbWUpOwogCiAgICAgaWYg
KCFyZWdpc3RyYXRpb24pCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGVkOTczY2QzOGQ2OGU0M2NjNTI4NWM1ODEwNGIyNWRkYjZlMTBjMjgu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDU0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ1NTUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUuaCIKLQotI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLVJlZjxDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZT4gQ1NTUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGU6OmNyZWF0ZSgpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGUoKSk7Ci19Ci0KLUNTU1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
OjpDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSgpCi17Ci19Ci0KLWRvdWJsZSBDU1NQYWludFdv
cmtsZXRHbG9iYWxTY29wZTo6ZGV2aWNlUGl4ZWxSYXRpbygpCi17Ci0gICAgcmV0dXJuIDEuMDsK
LX0KLQotRXhjZXB0aW9uT3I8dm9pZD4gQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZFJl
Z2lzdGVyZWRQYWludCgpCi17Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50V29ya2xl
dEdsb2JhbFNjb3BlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzYjBkOWQ4ZjNm
MDIzN2UyNzkyZmNlZjdlNDc3ZmU1OGM2MmEzMDguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50V29ya2xldEds
b2JhbFNjb3BlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoQ1NTX1BBSU5USU5HX0FQSSkKLQotI2luY2x1ZGUgIkNTU1BhaW50Q2FsbGJhY2suaCIKLSNp
bmNsdWRlICJFeGNlcHRpb25Pci5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFj
ZSBKU0MgewotCi1jbGFzcyBKU1ZhbHVlOwotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1jbGFzcyBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlPiB7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZT4gY3JlYXRlKCk7Ci0KLSAgICBF
eGNlcHRpb25Pcjx2b2lkPiBhZGRSZWdpc3RlcmVkUGFpbnQoKTsKLSAgICBkb3VibGUgZGV2aWNl
UGl4ZWxSYXRpbygpOwotCi0gICAgc3RydWN0IFBhaW50RGVmaW5pdGlvbiB7Ci0gICAgICAgIGNv
bnN0IEF0b21pY1N0cmluZyBuYW1lOwotICAgICAgICBjb25zdCBSZWY8Q1NTUGFpbnRDYWxsYmFj
az4gcGFpbnRDYWxsYmFjazsKLSAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4gaW5wdXRQcm9w
ZXJ0aWVzOwotICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiBpbnB1dEFyZ3VtZW50czsKLSAg
ICB9OwotCi0gICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxQYWludERlZmluaXRp
b24+PiYgcGFpbnREZWZpbml0aW9uTWFwKCkgeyByZXR1cm4gbV9wYWludERlZmluaXRpb25NYXA7
IH0KLQotcHJpdmF0ZToKLSAgICBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSgpOwotCi0gICAg
SGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxQYWludERlZmluaXRpb24+PiBtX3BhaW50
RGVmaW5pdGlvbk1hcDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLSNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5pZGwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1MzZjMGE0MTM5NWMwYTFhMDg0ZmExZjdlYjVh
NmMyYmE3MmE2MWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmlkbAorKysg
L2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0qIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0qCi0qIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSogYXJlIG1ldDoKLSogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0qICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0qCi0qIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0qIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0qIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0qIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotKi8KLQotWwotICAg
IEVuYWJsZWRBdFJ1bnRpbWU9Q1NTUGFpbnRpbmdBUEksCi0gICAgQ29uZGl0aW9uYWw9Q1NTX1BB
SU5USU5HX0FQSSwKLSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAotICAgIEpTQ3VzdG9t
TWFya0Z1bmN0aW9uLAotICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdAotXSBpbnRlcmZhY2Ug
Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUgewotICAgIFtDdXN0b20sIE1heVRocm93RXhjZXB0
aW9uXSB2b2lkIHJlZ2lzdGVyUGFpbnQoRE9NU3RyaW5nIG5hbWUsIEZ1bmN0aW9uIHBhaW50Q3Rv
cik7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgZGV2aWNlUGl4
ZWxSYXRpbzsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRX
b3JrbGV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuY3BwCmlu
ZGV4IDEyMDY4MWI4ZDc2MTM0NmRhNzJhY2M1YTBiMjI2OWUxNDA3MzU4OWIuLmRjZWI3ZWU5YjYw
NDkwZGMwMTgxZTVjNmYxODY1ZDAyY2JjZjJhY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9ET01DU1NQYWludFdvcmtsZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01D
U1NQYWludFdvcmtsZXQuY3BwCkBAIC0yOCwxNiArMjgsMTcgQEAKIAogI2lmIEVOQUJMRShDU1Nf
UEFJTlRJTkdfQVBJKQogCi0jaW5jbHVkZSAiQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIK
ICNpbmNsdWRlICJET01DU1NOYW1lc3BhY2UuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2lu
Y2x1ZGUgIldvcmtsZXQuaCIKKwogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlJiBET01DU1NQ
YWludFdvcmtsZXQ6OmVuc3VyZVBhaW50V29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50JiBkb2N1
bWVudCkKK1dvcmtsZXQmIERPTUNTU1BhaW50V29ya2xldDo6ZW5zdXJlUGFpbnRXb3JrbGV0KERv
Y3VtZW50JiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gZG9jdW1lbnQuZW5zdXJlQ1NTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUoKTsKKyAgICByZXR1cm4gZG9jdW1lbnQuZW5zdXJlQ1NTUGFpbnRX
b3JrbGV0KCk7CiB9CiAKIERPTUNTU1BhaW50V29ya2xldCogRE9NQ1NTUGFpbnRXb3JrbGV0Ojpm
cm9tKERPTUNTU05hbWVzcGFjZSYgY3NzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0RPTUNTU1BhaW50V29ya2xldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29y
a2xldC5oCmluZGV4IGVlNWVmYjExZDE5YmI2MmYzOGU1NmUxMGU1ZDYxNjNjYzlkOGZiM2YuLmEy
Y2IzNzNmNmEwMzQxM2QxMjFiNDAxNDM0YmZkOWVmOTlhOTc2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmgKQEAgLTM1LDE0ICszNSwxNCBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKLWNsYXNzIENTU1BhaW50V29ya2xldEdsb2JhbFNj
b3BlOworY2xhc3MgV29ya2xldDsKIGNsYXNzIERPTUNTU05hbWVzcGFjZTsKIAogY2xhc3MgRE9N
Q1NTUGFpbnRXb3JrbGV0IGZpbmFsIDogcHVibGljIFN1cHBsZW1lbnQ8RE9NQ1NTTmFtZXNwYWNl
PiB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgRE9NQ1NTUGFpbnRXb3JrbGV0KERPTUNTU05hbWVz
cGFjZSYpIHsgfQogCi0gICAgc3RhdGljIENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlJiBlbnN1
cmVQYWludFdvcmtsZXRHbG9iYWxTY29wZShEb2N1bWVudCYpOworICAgIHN0YXRpYyBXb3JrbGV0
JiBlbnN1cmVQYWludFdvcmtsZXQoRG9jdW1lbnQmKTsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMg
RE9NQ1NTUGFpbnRXb3JrbGV0KiBmcm9tKERPTUNTU05hbWVzcGFjZSYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmlkbAppbmRleCAxOTBjZGI0NWVjNzUzZGViYmU5NmY4
ZDgzMzgxM2Y0NDYzNWFlOGMzLi5hYTU5ZTVlZTJkZTkxODFkMzA0N2ZlMzQ4MDRmZTUyN2EyNmY3
NDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0Lmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmlkbApAQCAtMjcs
NiArMjcsNSBAQAogICAgIEVuYWJsZWRBdFJ1bnRpbWU9Q1NTUGFpbnRpbmdBUEksCiAgICAgQ29u
ZGl0aW9uYWw9Q1NTX1BBSU5USU5HX0FQSSwKIF0gcGFydGlhbCBpbnRlcmZhY2UgRE9NQ1NTTmFt
ZXNwYWNlIHsKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBub3QgYWN0dWFsbHkgcGFydCBvZiB0aGUg
c3BlYywgYW5kIHNob3VsZCBiZSByZXBsYWNlZCB3aGVuIHdvcmtsZXRzIGFyZSBpbXBsZW1lbnRl
ZAotICAgIFtJbXBsZW1lbnRlZEFzPWVuc3VyZVBhaW50V29ya2xldEdsb2JhbFNjb3BlLENhbGxX
aXRoPURvY3VtZW50XSBzdGF0aWMgcmVhZG9ubHkgYXR0cmlidXRlIENTU1BhaW50V29ya2xldEds
b2JhbFNjb3BlIHBhaW50V29ya2xldEdsb2JhbFNjb3BlOworICAgIFtJbXBsZW1lbnRlZEFzPWVu
c3VyZVBhaW50V29ya2xldCxDYWxsV2l0aD1Eb2N1bWVudF0gc3RhdGljIHJlYWRvbmx5IGF0dHJp
YnV0ZSBXb3JrbGV0IHBhaW50V29ya2xldDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRl
eCA3YjQ4MDhiZTZhMzg2NzUxMDA4MGMwYmE0MDJjMTcxZjFlNTgwMzA4Li4xNjY0M2VkMTljNzA5
MjIxMjc3M2EwZTMwM2JkZGUyZDdhZTg3NjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAg
LTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJDREFUQVNlY3Rpb24uaCIKICNpbmNsdWRlICJDU1NB
bmltYXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiQ1NTRm9udFNlbGVjdG9yLmgiCi0jaW5j
bHVkZSAiQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJDU1NTdHlsZURl
Y2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVTaGVldC5oIgogI2luY2x1ZGUgIkNhY2hl
ZENTU1N0eWxlU2hlZXQuaCIKQEAgLTE0MCw2ICsxMzksNyBAQAogI2luY2x1ZGUgIlBhZ2VDb25z
b2xlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiUGFnZVRyYW5z
aXRpb25FdmVudC5oIgorI2luY2x1ZGUgIlBhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1Mb2NhbGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgpAQCAtMjE3LDYgKzIxNyw3IEBA
CiAjaW5jbHVkZSAiV2ViQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiV2hlZWxFdmVudC5oIgogI2lu
Y2x1ZGUgIldpbmRvd0ZlYXR1cmVzLmgiCisjaW5jbHVkZSAiV29ya2xldC5oIgogI2luY2x1ZGUg
IlhNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAiWE1MRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRl
ICJYTUxOU05hbWVzLmgiCkBAIC04Mzc3LDExICs4Mzc4LDE2IEBAIHZvaWQgRG9jdW1lbnQ6OmZy
YW1lV2FzRGlzY29ubmVjdGVkRnJvbU93bmVyKCkKIH0KIAogI2lmIEVOQUJMRShDU1NfUEFJTlRJ
TkdfQVBJKQotQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUmIERvY3VtZW50OjplbnN1cmVDU1NQ
YWludFdvcmtsZXRHbG9iYWxTY29wZSgpCitXb3JrbGV0JiBEb2N1bWVudDo6ZW5zdXJlQ1NTUGFp
bnRXb3JrbGV0KCkKIHsKLSAgICBpZiAoIW1fQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUpCi0g
ICAgICAgIG1fQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUgPSBDU1NQYWludFdvcmtsZXRHbG9i
YWxTY29wZTo6Y3JlYXRlKCk7Ci0gICAgcmV0dXJuICptX0NTU1BhaW50V29ya2xldEdsb2JhbFNj
b3BlOworICAgIGlmICghbV9DU1NQYWludFdvcmtsZXQpCisgICAgICAgIG1fQ1NTUGFpbnRXb3Jr
bGV0ID0gV29ya2xldDo6Y3JlYXRlKCk7CisgICAgcmV0dXJuICptX0NTU1BhaW50V29ya2xldDsK
K30KKwordm9pZCBEb2N1bWVudDo6c2V0Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoUmVmPFBh
aW50V29ya2xldEdsb2JhbFNjb3BlPiYmIHNjb3BlKQoreworICAgIG1fY3NzUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUgPSBXVEZNb3ZlKHNjb3BlKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCmluZGV4IDg1NDJjMTU1NjcxN2YyN2I2MDg5MDdkMmQxNGVlMTRjZGEyNDhmZDguLjRiNDYy
MzM0M2ZjZGUwYjRiMmI0OTk3YjRhMzQzMGJkZTFlOWJjNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CkBAIC04OCw3ICs4OCw2IEBAIGNsYXNzIEF0dHI7CiBjbGFzcyBDREFUQVNlY3Rpb247CiBjbGFz
cyBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOwogY2xhc3MgQ1NTRm9udFNlbGVjdG9yOwotY2xhc3Mg
Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU7CiBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uOwog
Y2xhc3MgQ1NTU3R5bGVTaGVldDsKIGNsYXNzIENhY2hlZENTU1N0eWxlU2hlZXQ7CkBAIC0xNTQs
NiArMTUzLDcgQEAgY2xhc3MgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0czsKIGNsYXNzIE5v
ZGVGaWx0ZXI7CiBjbGFzcyBOb2RlSXRlcmF0b3I7CiBjbGFzcyBQYWdlOworY2xhc3MgUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGU7CiBjbGFzcyBQbGF0Zm9ybU1vdXNlRXZlbnQ7CiBjbGFzcyBQcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb247CiBjbGFzcyBRdWFsaWZpZWROYW1lOwpAQCAtMTk0LDYgKzE5NCw3
IEBAIGNsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dDsKIGNsYXNzIFdlYkdQVVJlbmRlcmluZ0Nv
bnRleHQ7CiBjbGFzcyBXZWJNZXRhbFJlbmRlcmluZ0NvbnRleHQ7CiBjbGFzcyBXaW5kb3dQcm94
eTsKK2NsYXNzIFdvcmtsZXQ7CiBjbGFzcyBYUGF0aEV2YWx1YXRvcjsKIGNsYXNzIFhQYXRoRXhw
cmVzc2lvbjsKIGNsYXNzIFhQYXRoTlNSZXNvbHZlcjsKQEAgLTEzNTAsNiArMTM1MSwxMCBAQCBw
dWJsaWM6CiAgICAgLy8gQ2FsbGVycyBzaG91bGQgdHJ5IHRvIGNyZWF0ZSB0aGUgQ29uc29sZU1l
c3NhZ2UgdGhlbXNlbHZlcy4KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZENvbnNvbGVNZXNz
YWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1
bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyID0gMCkgZmluYWw7CiAKKyAgICAvLyBUaGUg
Zm9sbG93aW5nIGFkZE1lc3NhZ2UgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZC4KKyAgICAvLyBDYWxs
ZXJzIHNob3VsZCB0cnkgdG8gY3JlYXRlIHRoZSBDb25zb2xlTWVzc2FnZSB0aGVtc2VsdmVzLgor
ICAgIHZvaWQgYWRkTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIHVuc2lnbmVkIGxpbmVOdW1i
ZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0
YWNrPiYmLCBKU0M6OkV4ZWNTdGF0ZSogPSBudWxscHRyLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJ
ZGVudGlmaWVyID0gMCkgZmluYWw7CisKICAgICBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmln
aW4oKSBjb25zdCB7IHJldHVybiAqU2VjdXJpdHlDb250ZXh0OjpzZWN1cml0eU9yaWdpbigpOyB9
CiAgICAgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRv
cERvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKTsgfQogCkBAIC0xNTE3LDcgKzE1MjIsOSBAQCBw
dWJsaWM6CiAgICAgYm9vbCByZWdpc3RlckNTU1Byb3BlcnR5KENTU1JlZ2lzdGVyZWRDdXN0b21Q
cm9wZXJ0eSYmKTsKIAogI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQotICAgIENTU1BhaW50
V29ya2xldEdsb2JhbFNjb3BlJiBlbnN1cmVDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSgpOwor
ICAgIFdvcmtsZXQmIGVuc3VyZUNTU1BhaW50V29ya2xldCgpOworICAgIFBhaW50V29ya2xldEds
b2JhbFNjb3BlKiBnZXRDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSgpIHsgcmV0dXJuIG1fY3Nz
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuZ2V0KCk7IH0KKyAgICB2b2lkIHNldENTU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlKFJlZjxQYWludFdvcmtsZXRHbG9iYWxTY29wZT4mJik7CiAjZW5kaWYK
IAogICAgIHZvaWQgc2V0QXNSdW5uaW5nVXNlclNjcmlwdHMoKSB7IG1faXNSdW5uaW5nVXNlclNj
cmlwdHMgPSB0cnVlOyB9CkBAIC0xNTcwLDEwICsxNTc3LDYgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBmaW5hbCB7IHJlZigpOyB9CiAgICAgdm9pZCBk
ZXJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KIAotICAgIC8v
IFRoZSBmb2xsb3dpbmcgYWRkTWVzc2FnZSBmdW5jdGlvbiBpcyBkZXByZWNhdGVkLgotICAgIC8v
IENhbGxlcnMgc2hvdWxkIHRyeSB0byBjcmVhdGUgdGhlIENvbnNvbGVNZXNzYWdlIHRoZW1zZWx2
ZXMuCi0gICAgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgdW5zaWduZWQgbGlu
ZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRD
YWxsU3RhY2s+JiYsIEpTQzo6RXhlY1N0YXRlKiA9IG51bGxwdHIsIHVuc2lnbmVkIGxvbmcgcmVx
dWVzdElkZW50aWZpZXIgPSAwKSBmaW5hbDsKLQogICAgIFNlY29uZHMgbWluaW11bURPTVRpbWVy
SW50ZXJ2YWwoKSBjb25zdCBmaW5hbDsKIAogICAgIFNlY29uZHMgZG9tVGltZXJBbGlnbm1lbnRJ
bnRlcnZhbChib29sIGhhc1JlYWNoZWRNYXhOZXN0aW5nTGV2ZWwpIGNvbnN0IGZpbmFsOwpAQCAt
MjA2MCw3ICsyMDYzLDggQEAgcHJpdmF0ZToKICAgICBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVy
dHlTZXQgbV9DU1NSZWdpc3RlcmVkUHJvcGVydHlTZXQ7CiAKICNpZiBFTkFCTEUoQ1NTX1BBSU5U
SU5HX0FQSSkKLSAgICBSZWZQdHI8Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+IG1fQ1NTUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGU7CisgICAgUmVmUHRyPFdvcmtsZXQ+IG1fQ1NTUGFpbnRXb3Jr
bGV0OworICAgIFJlZlB0cjxQYWludFdvcmtsZXRHbG9iYWxTY29wZT4gbV9jc3NQYWludFdvcmts
ZXRHbG9iYWxTY29wZTsKICNlbmRpZgogCiAgICAgYm9vbCBtX2lzUnVubmluZ1VzZXJTY3JpcHRz
IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZh
Y3RvcnkuaW4gYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCmluZGV4
IDYwYWIxYTU4Mjg4YmU5OWEyOTdlZTkyM2I4ODk0MGYxOTNmNmY1NWYuLjc4YTIyYjMxNmE0YzQ2
ODBiMWQ3YzIyNzRhY2I2YWI3ZmQ1NjQ4YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudFRhcmdldEZhY3RvcnkuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFy
Z2V0RmFjdG9yeS5pbgpAQCAtNTIsNiArNTIsNyBAQCBXZWJBbmltYXRpb24KIFdlYktpdE1lZGlh
S2V5U2Vzc2lvbiBjb25kaXRpb25hbD1MRUdBQ1lfRU5DUllQVEVEX01FRElBCiBXZWJTb2NrZXQK
IFdvcmtlcgorV29ya2xldEdsb2JhbFNjb3BlIGNvbmRpdGlvbmFsPUNTU19QQUlOVElOR19BUEkK
IFhNTEh0dHBSZXF1ZXN0CiBYTUxIdHRwUmVxdWVzdFVwbG9hZAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXggYmE1YzM2MzI0YmM4MzQwMGU0
NGI4YzljMTViMTU1ZTU4MzcwY2ZiZi4uZWVlMzhiNWJiYWYyYzkzYjRhNWFmMmY4MmQ5M2NhNTEw
ZWNkMTM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0
LmNwcApAQCAtNTQsNiArNTQsOCBAQAogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAj
aW5jbHVkZSAiV29ya2VyTmF2aWdhdG9yLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCisj
aW5jbHVkZSAiV29ya2xldEdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29ya2xldFNjcmlwdENv
bnRyb2xsZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9DYXRjaFNjb3BlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvRXhjZXB0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNQcm9taXNlLmg+CkBAIC00NzYsOCArNDc4LDE1IEBAIEpTQzo6Vk0mIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OnZtKCkKIHsKICAgICBpZiAoaXM8RG9jdW1lbnQ+KCp0aGlzKSkKICAgICAg
ICAgcmV0dXJuIGNvbW1vblZNKCk7CisgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPigqdGhp
cykpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpLnNj
cmlwdCgpLT52bSgpOworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorICAgIGlmIChpczxX
b3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlzKSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFdvcmts
ZXRHbG9iYWxTY29wZT4oKnRoaXMpLnNjcmlwdCgpLT52bSgpOworI2VuZGlmCiAKLSAgICByZXR1
cm4gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCp0aGlzKS5zY3JpcHQoKS0+dm0oKTsKKyAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBjb21tb25WTSgpOwog
fQogCiBSZWplY3RlZFByb21pc2VUcmFja2VyJiBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjplbnN1
cmVSZWplY3RlZFByb21pc2VUcmFja2VyU2xvdygpCkBAIC01MTksOCArNTI4LDE5IEBAIEpTQzo6
RXhlY1N0YXRlKiBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpleGVjU3RhdGUoKQogICAgICAgICBy
ZXR1cm4gZXhlY1N0YXRlRnJvbVBhZ2UobWFpblRocmVhZE5vcm1hbFdvcmxkKCksIGRvY3VtZW50
LnBhZ2UoKSk7CiAgICAgfQogCi0gICAgV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlckdsb2JhbFNj
b3BlID0gc3RhdGljX2Nhc3Q8V29ya2VyR2xvYmFsU2NvcGUqPih0aGlzKTsKLSAgICByZXR1cm4g
ZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBp
ZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KCp0aGlzKSkgeworICAgICAgICBXb3JrZXJHbG9iYWxT
Y29wZSYgd29ya2VyR2xvYmFsU2NvcGUgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKnRo
aXMpOworICAgICAgICByZXR1cm4gZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3BlKHdvcmtl
ckdsb2JhbFNjb3BlKTsKKyAgICB9CisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisgICAg
aWYgKGlzPFdvcmtsZXRHbG9iYWxTY29wZT4oKnRoaXMpKSB7CisgICAgICAgIFdvcmtsZXRHbG9i
YWxTY29wZSYgd29ya2xldEdsb2JhbFNjb3BlID0gZG93bmNhc3Q8V29ya2xldEdsb2JhbFNjb3Bl
PigqdGhpcyk7CisgICAgICAgIHJldHVybiBleGVjU3RhdGVGcm9tV29ya2xldEdsb2JhbFNjb3Bl
KHdvcmtsZXRHbG9iYWxTY29wZSk7CisgICAgfQorI2VuZGlmCisKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogU3RyaW5nIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OmRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4IDJiNjQ3NWU2MjdkY2VmZDVkZGI2
NDM0ZTE1MTU1NDY1ZTU1YzQ3ZTQuLjc4NTkwNDU4MjNiN2M2MzA1MGFlMDFmMWE2NDViYWQzMGIy
ZGM3OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApA
QCAtODksNiArODksNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNEb2N1bWVudCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzV29ya2VyR2xvYmFs
U2NvcGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1dvcmts
ZXRHbG9iYWxTY29wZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIGJv
b2wgaXNDb250ZXh0VGhyZWFkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwg
Ym9vbCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dl
ckFnZW50LmNwcAppbmRleCBjYWMwNjI1Njk5YTQxOGI4OTBkM2QxMTNkM2M0OTI3YmRlNmZlYzlk
Li5iMjBjYmJjOTUwNzAyODExYjY1ODlhYzFkZmJkNTczMzkxOTNkMzM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJE
ZWJ1Z2dlckFnZW50LmNwcApAQCAtNjAsNyArNjAsNyBAQCBJbmplY3RlZFNjcmlwdCBXb3JrZXJE
ZWJ1Z2dlckFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aQogICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKICAgICB9CiAKLSAgICBKU0M6OkV4
ZWNTdGF0ZSogc2NyaXB0U3RhdGUgPSBleGVjU3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUoJm1f
d29ya2VyR2xvYmFsU2NvcGUpOworICAgIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSA9IGV4
ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZShtX3dvcmtlckdsb2JhbFNjb3BlKTsKICAgICBy
ZXR1cm4gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3Rh
dGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dv
cmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmNwcAppbmRleCA5Y2M2OWQxNzI0Y2RhZDE4
Zjk4ZTNkM2IzMmYyOTY4YTU1NGUwNjdkLi44YzMyMTQ4N2M2ODVmZDM0ZmFlYWE3NTUwYzk4YTIy
OTA4NzVkMzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dv
cmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAKQEAgLTY1LDcgKzY1LDcgQEAg
SW5qZWN0ZWRTY3JpcHQgV29ya2VyUnVudGltZUFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwo
RXJyb3JTdHJpbmcmIGVycm9yU3RyaW4KICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KCk7
CiAgICAgfQogCi0gICAgSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlID0gZXhlY1N0YXRlRnJv
bVdvcmtlckdsb2JhbFNjb3BlKCZtX3dvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBKU0M6OkV4ZWNT
dGF0ZSogc2NyaXB0U3RhdGUgPSBleGVjU3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUobV93b3Jr
ZXJHbG9iYWxTY29wZSk7CiAgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0TWFuYWdlcigpLmluamVj
dGVkU2NyaXB0Rm9yKHNjcmlwdFN0YXRlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmNwcAppbmRleCBkMmU0MmMwYzll
NjE5OWY1Mjc0MjkxNjcwZjE3YTA2ZTlkZTgyMGZiLi4xNWFhOTI0YzJiNjE3MWU1MzUwYzEwMWQ0
NDBiZTZjM2NjYTUwYzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9DdXN0b21QYWludEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9DdXN0b21QYWludEltYWdlLmNwcApAQCAtMzcsNyArMzcsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLUN1c3RvbVBhaW50SW1hZ2U6OkN1c3RvbVBhaW50SW1hZ2UoY29uc3Qg
Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OlBhaW50RGVmaW5pdGlvbiYgZGVmaW5pdGlvbiwg
Y29uc3QgRmxvYXRTaXplJiBzaXplKQorQ3VzdG9tUGFpbnRJbWFnZTo6Q3VzdG9tUGFpbnRJbWFn
ZShjb25zdCBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6UGFpbnREZWZpbml0aW9uJiBkZWZpbml0
aW9uLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCiAgICAgOiBtX3BhaW50Q2FsbGJhY2soZGVmaW5p
dGlvbi5wYWludENhbGxiYWNrLmdldCgpKQogewogICAgIHNldENvbnRhaW5lclNpemUoc2l6ZSk7
CkBAIC02Myw3ICs2Myw2IEBAIEltYWdlRHJhd1Jlc3VsdCBDdXN0b21QYWludEltYWdlOjpkb0N1
c3RvbVBhaW50KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvCiAgICAgaWYgKHJlc3Vs
dC50eXBlKCkgIT0gQ2FsbGJhY2tSZXN1bHRUeXBlOjpTdWNjZXNzKQogICAgICAgICByZXR1cm4g
SW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwogCi0gICAgVU5VU0VEX1BBUkFNKGRlc3RDb250
ZXh0KTsKICAgICBhdXRvIGltYWdlID0gY2FudmFzLT5jb3BpZWRJbWFnZSgpOwogICAgIGlmICgh
aW1hZ2UpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmgK
aW5kZXggMDNhYjJhODg4NjgzYTNmNTM4NzFkYWM1YjUxZjg5MTlkYTRjNGRkMi4uZWI2YTgxYmFl
MjRkMTE3ZTBjZDM0ODhkYzQ3YTc2ZTYyYjA0MjBjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuaApAQCAtMjcsOCArMjcsOCBA
QAogCiAjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCiAKLSNpbmNsdWRlICJDU1NQYWludFdv
cmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIkdlbmVyYXRlZEltYWdlLmgiCisjaW5jbHVk
ZSAiUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC0zNiw3ICszNiw3IEBAIGNsYXNzIEltYWdlQnVmZmVyOwogCiBjbGFzcyBDdXN0b21QYWludElt
YWdlIGZpbmFsIDogcHVibGljIEdlbmVyYXRlZEltYWdlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPEN1c3RvbVBhaW50SW1hZ2U+IGNyZWF0ZShjb25zdCBDU1NQYWludFdvcmtsZXRHbG9iYWxT
Y29wZTo6UGFpbnREZWZpbml0aW9uJiBkZWZpbml0aW9uLCBjb25zdCBGbG9hdFNpemUmIHNpemUp
CisgICAgc3RhdGljIFJlZjxDdXN0b21QYWludEltYWdlPiBjcmVhdGUoY29uc3QgUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGU6OlBhaW50RGVmaW5pdGlvbiYgZGVmaW5pdGlvbiwgY29uc3QgRmxvYXRT
aXplJiBzaXplKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ3VzdG9tUGFp
bnRJbWFnZShkZWZpbml0aW9uLCBzaXplKSk7CiAgICAgfQpAQCAtNDUsNyArNDUsNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBpc0N1c3RvbVBhaW50SW1hZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CiAKIHByaXZhdGU6Ci0gICAgQ3VzdG9tUGFpbnRJbWFnZShjb25zdCBDU1NQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZTo6UGFpbnREZWZpbml0aW9uJiwgY29uc3QgRmxvYXRTaXplJik7
CisgICAgQ3VzdG9tUGFpbnRJbWFnZShjb25zdCBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6UGFp
bnREZWZpbml0aW9uJiwgY29uc3QgRmxvYXRTaXplJik7CiAKICAgICBJbWFnZURyYXdSZXN1bHQg
ZG9DdXN0b21QYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUmKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjIwMTNiNGFiOTVhYTM0N2VlOWE5YTBlOTRhMGEzMmI3NDIyMzYzMjIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9i
YWxTY29wZS5jcHAKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQYWludFdv
cmtsZXRHbG9iYWxTY29wZS5oIgorCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFBhaW50V29ya2xldEdsb2JhbFNjb3BlPiBQYWludFdv
cmtsZXRHbG9iYWxTY29wZTo6Y3JlYXRlKFdlYWtQdHI8RG9jdW1lbnQ+JiYgZG9jdW1lbnQsIFNj
cmlwdFNvdXJjZUNvZGUmJiBjb2RlKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBhaW50
V29ya2xldEdsb2JhbFNjb3BlKFdURk1vdmUoZG9jdW1lbnQpLCBXVEZNb3ZlKGNvZGUpKSk7Cit9
CisKK1BhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludFdvcmtsZXRHbG9iYWxTY29wZShXZWFr
UHRyPERvY3VtZW50PiYmIGRvY3VtZW50LCBTY3JpcHRTb3VyY2VDb2RlJiYgY29kZSkKKyAgICA6
IFdvcmtsZXRHbG9iYWxTY29wZShXVEZNb3ZlKGRvY3VtZW50KSwgV1RGTW92ZShjb2RlKSkKK3sK
K30KKworZG91YmxlIFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpkZXZpY2VQaXhlbFJhdGlvKCkK
K3sKKyAgICByZXR1cm4gMS4wOworfQorCitFeGNlcHRpb25Pcjx2b2lkPiBQYWludFdvcmtsZXRH
bG9iYWxTY29wZTo6YWRkUmVnaXN0ZXJlZFBhaW50KCkKK3sKKyAgICByZXR1cm4geyB9OworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODJjMjEwM2Q3
YTM2NDdiNzgxNjcwOWQ0Y2U5NGE3NjkwOWY4MTNkZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgKQEAgLTAsMCArMSw2
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisKKyNpbmNsdWRlICJDU1NQ
YWludENhbGxiYWNrLmgiCisjaW5jbHVkZSAiV29ya2xldEdsb2JhbFNjb3BlLmgiCisKK25hbWVz
cGFjZSBKU0MgeworY2xhc3MgSlNWYWx1ZTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUgOiBwdWJsaWMg
V29ya2xldEdsb2JhbFNjb3BlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFBhaW50V29ya2xl
dEdsb2JhbFNjb3BlPiBjcmVhdGUoV2Vha1B0cjxEb2N1bWVudD4mJiwgU2NyaXB0U291cmNlQ29k
ZSYmKTsKKworICAgIGJvb2wgaXNQYWludFdvcmtsZXRHbG9iYWxTY29wZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIHRydWU7IH0KKworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGFkZFJlZ2lzdGVyZWRQ
YWludCgpOworICAgIGRvdWJsZSBkZXZpY2VQaXhlbFJhdGlvKCk7CisKKyAgICBzdHJ1Y3QgUGFp
bnREZWZpbml0aW9uIHsKKyAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nIG5hbWU7CisgICAgICAg
IGNvbnN0IFJlZjxDU1NQYWludENhbGxiYWNrPiBwYWludENhbGxiYWNrOworICAgICAgICBjb25z
dCBWZWN0b3I8U3RyaW5nPiBpbnB1dFByb3BlcnRpZXM7CisgICAgICAgIGNvbnN0IFZlY3RvcjxT
dHJpbmc+IGlucHV0QXJndW1lbnRzOworICAgIH07CisKKyAgICBIYXNoTWFwPFN0cmluZywgc3Rk
Ojp1bmlxdWVfcHRyPFBhaW50RGVmaW5pdGlvbj4+JiBwYWludERlZmluaXRpb25NYXAoKSB7IHJl
dHVybiBtX3BhaW50RGVmaW5pdGlvbk1hcDsgfQorCitwcml2YXRlOgorICAgIFBhaW50V29ya2xl
dEdsb2JhbFNjb3BlKFdlYWtQdHI8RG9jdW1lbnQ+JiYsIFNjcmlwdFNvdXJjZUNvZGUmJik7CisK
KyAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFBhaW50RGVmaW5pdGlvbj4+IG1f
cGFpbnREZWZpbml0aW9uTWFwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxT
Y29wZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYTU0OWNjZjA0M2JlMDRkYjY5MWRlZDdmNjBjNGVlNWVhN2FjY2Ri
NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xl
dEdsb2JhbFNjb3BlLmlkbApAQCAtMCwwICsxLDM5IEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisK
K1sKKyAgICBFeHBvc2VkPVBhaW50V29ya2xldCwKKyAgICBFbmFibGVkQXRSdW50aW1lPUNTU1Bh
aW50aW5nQVBJLAorICAgIENvbmRpdGlvbmFsPUNTU19QQUlOVElOR19BUEksCisgICAgSlNDdXN0
b21NYXJrRnVuY3Rpb24sCisgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAorICAgIEltcGxp
Y2l0VGhpcywKKyAgICBJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdCwKKyAgICBJc0lt
bXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdE9uUHJvdG90eXBlLAorICAgIEdsb2JhbD0oV29y
a2xldCxQYWludFdvcmtsZXQpLAorXSBpbnRlcmZhY2UgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUg
OiBXb3JrbGV0R2xvYmFsU2NvcGUgeworICAgIFtDdXN0b20sIE1heVRocm93RXhjZXB0aW9uXSB2
b2lkIHJlZ2lzdGVyUGFpbnQoRE9NU3RyaW5nIG5hbWUsIEZ1bmN0aW9uIHBhaW50Q3Rvcik7Cisg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgZGV2aWNlUGl4ZWxSYXRp
bzsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3ZmFjNWU1
MGJhZWYxOTU5NjllOTg4NzczZmZkNDBiNzg0MTQ0YzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmNwcApAQCAtMCwwICsxLDU2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIldvcmtsZXQuaCIKKworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQor
CisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJQYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5oIgorI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitSZWY8V29ya2xldD4gV29ya2xldDo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBXb3JrbGV0KCkpOworfQorCisKK1dvcmtsZXQ6OldvcmtsZXQoKQoreworfQorCit2
b2lkIFdvcmtsZXQ6OmFkZE1vZHVsZShEb2N1bWVudCYgZG9jdW1lbnQsIFN0cmluZyBtb2R1bGVV
UkwpCit7CisgICAgYXV0byBjb250ZXh0ID0gUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OmNyZWF0
ZShtYWtlV2Vha1B0cihkb2N1bWVudCksIFNjcmlwdFNvdXJjZUNvZGUobW9kdWxlVVJMKSk7Cisg
ICAgY29udGV4dC0+ZXZhbHVhdGUoKTsKKyAgICBkb2N1bWVudC5zZXRDU1NQYWludFdvcmtsZXRH
bG9iYWxTY29wZShXVEZNb3ZlKGNvbnRleHQpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQu
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MTNmNDk0
NzA0NDRlYmY0N2E5NGQ0ZGY3MDY3NGViNzBkY2QyYjk1Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBE
b2N1bWVudDsKKworY2xhc3MgV29ya2xldCA6IHB1YmxpYyBSZWZDb3VudGVkPFdvcmtsZXQ+IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdvcmtsZXQ+IGNyZWF0ZSgpOworICAgIAorICAgIHZv
aWQgYWRkTW9kdWxlKERvY3VtZW50JiwgU3RyaW5nIG1vZHVsZVVSTCk7CisKK3Byb3RlY3RlZDoK
KyAgICBXb3JrbGV0KCk7CisKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNzRjYzkxMzgwMGI3OWVl
NzBhNWM0NDY3OWVmMTVmZTdlYzg0OWZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2xldHMvV29ya2xldC5pZGwKQEAgLTAsMCArMSwzMyBAQAorLyoKKyogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisqLworCitbCisgICAgRW5hYmxlZEF0UnVudGltZT1DU1NQYWludGluZ0FQSSwKKyAgICBDb25k
aXRpb25hbD1DU1NfUEFJTlRJTkdfQVBJLAorICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUs
CisgICAgR2xvYmFsPVdvcmtsZXQsCitdIGludGVyZmFjZSBXb3JrbGV0IHsKKyAgICBbQ2FsbFdp
dGg9RG9jdW1lbnRdIHZvaWQgYWRkTW9kdWxlKFVTVlN0cmluZyBtb2R1bGVVUkwvKiwgb3B0aW9u
YWwgV29ya2xldE9wdGlvbnMgb3B0aW9ucyovKTsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODk1MDZiOWUzOTMx
MzRjZWMzMzYzNmNhNjZmMWM1ZGMyNGI4ODE4MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcApAQCAtMCwwICsxLDcwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldvcmtsZXRDb25z
b2xlQ2xpZW50LmgiCisKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKworI2luY2x1ZGUg
Ikluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Nv
bnNvbGVNZXNzYWdlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0QXJndW1lbnRz
Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0Q2FsbFN0YWNrLmg+CisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCitXb3JrbGV0Q29uc29sZUNs
aWVudDo6V29ya2xldENvbnNvbGVDbGllbnQoV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrbGV0R2xv
YmFsU2NvcGUpCisgICAgOiBtX3dvcmtsZXRHbG9iYWxTY29wZSh3b3JrbGV0R2xvYmFsU2NvcGUp
Cit7Cit9CisKK1dvcmtsZXRDb25zb2xlQ2xpZW50Ojp+V29ya2xldENvbnNvbGVDbGllbnQoKSA9
IGRlZmF1bHQ7CisKK3ZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFu
ZExldmVsKE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMsIFJlZjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4mJiBhcmd1bWVudHMpCit7
CisgICAgU3RyaW5nIG1lc3NhZ2VUZXh0OworICAgIGFyZ3VtZW50cy0+Z2V0Rmlyc3RBcmd1bWVu
dEFzU3RyaW5nKG1lc3NhZ2VUZXh0KTsKKyAgICBhdXRvIG1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5p
cXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEks
IHR5cGUsIGxldmVsLCBtZXNzYWdlVGV4dCwgV1RGTW92ZShhcmd1bWVudHMpLCBleGVjKTsKKyAg
ICBtX3dvcmtsZXRHbG9iYWxTY29wZS5hZGRDb25zb2xlTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2Up
KTsKK30KKwordm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6Y291bnQoSlNDOjpFeGVjU3RhdGUq
LCBSZWY8U2NyaXB0QXJndW1lbnRzPiYmKSB7IH0KKwordm9pZCBXb3JrbGV0Q29uc29sZUNsaWVu
dDo6dGltZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpIHsgfQordm9pZCBXb3JrbGV0
Q29uc29sZUNsaWVudDo6dGltZUVuZChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpIHsg
fQorCit2b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50Ojpwcm9maWxlKEpTQzo6RXhlY1N0YXRlKiwg
Y29uc3QgU3RyaW5nJikgeyB9Cit2b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50Ojpwcm9maWxlRW5k
KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJikgeyB9CisKK3ZvaWQgV29ya2xldENvbnNv
bGVDbGllbnQ6OnRha2VIZWFwU25hcHNob3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcm
KSB7IH0KK3ZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6OnRpbWVTdGFtcChKU0M6OkV4ZWNTdGF0
ZSosIFJlZjxTY3JpcHRBcmd1bWVudHM+JiYpIHsgfQorCit2b2lkIFdvcmtsZXRDb25zb2xlQ2xp
ZW50OjpyZWNvcmQoSlNDOjpFeGVjU3RhdGUqLCBSZWY8U2NyaXB0QXJndW1lbnRzPiYmKSB7IH0K
K3ZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6OnJlY29yZEVuZChKU0M6OkV4ZWNTdGF0ZSosIFJl
ZjxTY3JpcHRBcmd1bWVudHM+JiYpIHsgfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjcwZTI3NGVmNzNkMTIzZGZlNzg3ODA5MmE4ZmEzNTE2OTQzODU0NDYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVu
dC5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShDU1NfUEFJTlRJTkdfQVBJKQorCisjaW5jbHVkZSAiV29ya2xldEdsb2JhbFNjb3BlLmgi
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29sZUNsaWVudC5oPgorI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgRXhlY1N0YXRlOworfQorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdvcmtsZXRDb25zb2xlQ2xpZW50IGZpbmFsIDog
cHVibGljIEpTQzo6Q29uc29sZUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CitwdWJsaWM6CisgICAgZXhwbGljaXQgV29ya2xldENvbnNvbGVDbGllbnQoV29ya2xldEdsb2Jh
bFNjb3BlJik7CisgICAgdmlydHVhbCB+V29ya2xldENvbnNvbGVDbGllbnQoKTsKKworcHJvdGVj
dGVkOgorICAgIHZvaWQgbWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwoTWVzc2FnZVR5cGUsIE1lc3Nh
Z2VMZXZlbCwgSlNDOjpFeGVjU3RhdGUqLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+
JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY291bnQoSlNDOjpFeGVjU3RhdGUqLCBSZWY8SW5zcGVj
dG9yOjpTY3JpcHRBcmd1bWVudHM+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgcHJvZmlsZShKU0M6
OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOworICAgIHZvaWQgcHJv
ZmlsZUVuZChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOwor
ICAgIHZvaWQgdGFrZUhlYXBTbmFwc2hvdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYg
dGl0bGUpIG92ZXJyaWRlOworICAgIHZvaWQgdGltZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0
cmluZyYgdGl0bGUpIG92ZXJyaWRlOworICAgIHZvaWQgdGltZUVuZChKU0M6OkV4ZWNTdGF0ZSos
IGNvbnN0IFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOworICAgIHZvaWQgdGltZVN0YW1wKEpTQzo6
RXhlY1N0YXRlKiwgUmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmKSBvdmVycmlkZTsK
KyAgICB2b2lkIHJlY29yZChKU0M6OkV4ZWNTdGF0ZSosIFJlZjxJbnNwZWN0b3I6OlNjcmlwdEFy
Z3VtZW50cz4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCByZWNvcmRFbmQoSlNDOjpFeGVjU3RhdGUq
LCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYpIG92ZXJyaWRlOworCitwcml2YXRl
OgorICAgIFdvcmtsZXRHbG9iYWxTY29wZSYgbV93b3JrbGV0R2xvYmFsU2NvcGU7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0
cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyNWI2ZDM3OWE0YWU4MDkyNWRm
ZDNiZTAxOTAxMmM2ODk4OWRkYmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBAIC0wLDAgKzEsMTI2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKworI2lmIEVOQUJMRShDU1Nf
UEFJTlRJTkdfQVBJKQorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5o
IgorI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgorI2luY2x1ZGUgIkpTV29y
a2xldEdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiUGFnZUNvbnNvbGVDbGllbnQuaCIKKyNpbmNs
dWRlICJTZWN1cml0eU9yaWdpblBvbGljeS5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5j
bHVkZSAiV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIKKworI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0V4Y2VwdGlvbi5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5oPgorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdENhbGxTdGFjay5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCitXb3JrbGV0R2xvYmFsU2NvcGU6
OldvcmtsZXRHbG9iYWxTY29wZShXZWFrUHRyPERvY3VtZW50PiYmIGRvY3VtZW50LCBTY3JpcHRT
b3VyY2VDb2RlJiYgY29kZSkKKyAgICA6IG1fc2Vzc2lvbklEKGRvY3VtZW50LT5zZXNzaW9uSUQo
KSkKKyAgICAsIG1fc2NyaXB0KHN0ZDo6bWFrZV91bmlxdWU8V29ya2xldFNjcmlwdENvbnRyb2xs
ZXI+KHRoaXMpKQorICAgICwgbV9ldmVudFF1ZXVlKCp0aGlzKQorICAgICwgbV90b3BPcmlnaW4o
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZVVuaXF1ZSgpKQorICAgICwgbV9kb2N1bWVudChXVEZNb3Zl
KGRvY3VtZW50KSkKKyAgICAsIG1fY29kZShXVEZNb3ZlKGNvZGUpKQoreworICAgIEFTU0VSVCht
X2RvY3VtZW50KTsKKyAgICBGcmFtZSogZnJhbWUgPSBtX2RvY3VtZW50LT5mcmFtZSgpOworICAg
IG1fanNSdW50aW1lRmxhZ3MgPSAoZnJhbWUgPyBmcmFtZS0+c2V0dGluZ3MoKS5qYXZhU2NyaXB0
UnVudGltZUZsYWdzKCkgOiBKU0M6OlJ1bnRpbWVGbGFncygpKTsKKyAgICBBU1NFUlQobV9kb2N1
bWVudC0+cGFnZSgpKTsKKworICAgIHNldFNlY3VyaXR5T3JpZ2luUG9saWN5KFNlY3VyaXR5T3Jp
Z2luUG9saWN5OjpjcmVhdGUobV9kb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSkpOworICAgIHNl
dENvbnRlbnRTZWN1cml0eVBvbGljeShzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRTZWN1cml0eVBv
bGljeT4oVVJMIHsgY29kZS51cmwoKSB9LCAqdGhpcykpOworfQorCitXb3JrbGV0R2xvYmFsU2Nv
cGU6On5Xb3JrbGV0R2xvYmFsU2NvcGUoKQoreworICAgIHJlbW92ZUZyb21Db250ZXh0c01hcCgp
OworICAgIG1fc2NyaXB0LT53b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKCktPnNldENvbnNvbGVD
bGllbnQobnVsbHB0cik7Cit9CisKK3ZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpldmFsdWF0ZSgp
Cit7CisgICAgbV9zY3JpcHQtPmV2YWx1YXRlKG1fY29kZSk7Cit9CisKK2Jvb2wgV29ya2xldEds
b2JhbFNjb3BlOjppc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9zY3JpcHQtPmlzRXhlY3V0aW9uRm9yYmlkZGVuKCk7Cit9CisKK3ZvaWQgV29ya2xldEdsb2Jh
bFNjb3BlOjpkaXNhYmxlRXZhbChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKK3sKKyAgICBt
X3NjcmlwdC0+ZGlzYWJsZUV2YWwoZXJyb3JNZXNzYWdlKTsKK30KKwordm9pZCBXb3JrbGV0R2xv
YmFsU2NvcGU6OmRpc2FibGVXZWJBc3NlbWJseShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkK
K3sKKyAgICBtX3NjcmlwdC0+ZGlzYWJsZVdlYkFzc2VtYmx5KGVycm9yTWVzc2FnZSk7Cit9CisK
K1VSTCBXb3JrbGV0R2xvYmFsU2NvcGU6OmNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJsKSBj
b25zdAoreworICAgIC8vIEFsd2F5cyByZXR1cm4gYSBudWxsIFVSTCB3aGVuIHBhc3NlZCBhIG51
bGwgc3RyaW5nLgorICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgY2hhbmdlIHRoZSBVUkwgY29uc3Ry
dWN0b3IgdG8gaGF2ZSB0aGlzIGJlaGF2aW9yPworICAgIGlmICh1cmwuaXNOdWxsKCkpCisgICAg
ICAgIHJldHVybiBVUkwoKTsKKyAgICAvLyBBbHdheXMgdXNlIFVURi04IGluIFdvcmtlcnMuCisg
ICAgcmV0dXJuIFVSTChtX2NvZGUudXJsKCksIHVybCk7Cit9CisKK3ZvaWQgV29ya2xldEdsb2Jh
bFNjb3BlOjpsb2dFeGNlcHRpb25Ub0NvbnNvbGUoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2Us
IGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4mJiBzdGFjaykKK3sKKyAgICBBU1NFUlQobV9kb2N1
bWVudCk7CisgICAgbV9kb2N1bWVudC0+bG9nRXhjZXB0aW9uVG9Db25zb2xlKGVycm9yTWVzc2Fn
ZSwgc291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFdURk1vdmUoc3RhY2spKTsK
K30KKwordm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6dW5p
cXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiYmIG1lc3NhZ2UpCit7CisgICAgQVNT
RVJUKG1fZG9jdW1lbnQpOworICAgIG1fZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKFdURk1v
dmUobWVzc2FnZSkpOworfQorCit2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1l
c3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQoreworICAgIEFT
U0VSVChtX2RvY3VtZW50KTsKKyAgICBtX2RvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShzb3Vy
Y2UsIGxldmVsLCBtZXNzYWdlLCByZXF1ZXN0SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV29ya2xl
dEdsb2JhbFNjb3BlOjphZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2
ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZVRleHQsIGNvbnN0IFN0cmluZyYgc291cmNl
VVJMLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIFJlZlB0cjxT
Y3JpcHRDYWxsU3RhY2s+JiYgY2FsbFN0YWNrLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHVuc2ln
bmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCit7CisgICAgQVNTRVJUKG1fZG9jdW1lbnQpOwor
ICAgIG1fZG9jdW1lbnQtPmFkZE1lc3NhZ2Uoc291cmNlLCBsZXZlbCwgbWVzc2FnZVRleHQsIHNv
dXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBXVEZNb3ZlKGNhbGxTdGFjayksIHN0
YXRlLCByZXF1ZXN0SWRlbnRpZmllcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNj
b3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40NTMwZDAxMjQ4YzMwNDNlMGU1M2UzYjU0NzcxNWNkYmM0Yzc3ZDM1Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmgK
QEAgLTAsMCArMSwxMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkK
KworI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKKyNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiU2NyaXB0U291cmNl
Q29kZS5oIgorI2luY2x1ZGUgIlN1cHBsZW1lbnRhYmxlLmgiCisjaW5jbHVkZSAiVVJMLmgiCisj
aW5jbHVkZSAiV29ya2VyRXZlbnRRdWV1ZS5oIgorCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
Q29uc29sZU1lc3NhZ2UuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SdW50aW1lRmxhZ3Mu
aD4KKyNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgV29ya2xldFNjcmlwdENvbnRyb2xsZXI7Citj
bGFzcyBTY3JpcHRTb3VyY2VDb2RlOworCitjbGFzcyBXb3JrbGV0R2xvYmFsU2NvcGUgOiBwdWJs
aWMgUmVmQ291bnRlZDxXb3JrbGV0R2xvYmFsU2NvcGU+LCBwdWJsaWMgU3VwcGxlbWVudGFibGU8
V29ya2xldEdsb2JhbFNjb3BlPiwgcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHB1Ymxp
YyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5Xb3Jr
bGV0R2xvYmFsU2NvcGUoKTsKKworICAgIHZpcnR1YWwgYm9vbCBpc1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIGNvbnN0IFVSTCYgdXJsKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9jb2RlLnVybCgpOyB9CisgICAgU3RyaW5nIG9yaWdpbigp
IGNvbnN0IGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAiIjsgfQorICAgIGNv
bnN0IFN0cmluZyYgaWRlbnRpZmllcigpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJl
dHVybiBtX2lkZW50aWZpZXI7IH0KKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorICAg
IElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiBpZGJDb25uZWN0aW9uUHJveHkoKSBmaW5h
bCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCisKKyAg
ICB2b2lkIHBvc3RUYXNrKFRhc2smJikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQor
CisgICAgdm9pZCBldmFsdWF0ZSgpOworCisgICAgdXNpbmcgUmVmQ291bnRlZDo6cmVmOworICAg
IHVzaW5nIFJlZkNvdW50ZWQ6OmRlcmVmOworCisgICAgV29ya2xldFNjcmlwdENvbnRyb2xsZXIq
IHNjcmlwdCgpIHsgcmV0dXJuIG1fc2NyaXB0LmdldCgpOyB9CisKKyAgICB2b2lkIGFkZENvbnNv
bGVNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiYmKSBm
aW5hbDsKKworICAgIGJvb2wgaXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0IGZpbmFsOwor
ICAgIFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4oKSBjb25zdCBmaW5hbCB7IEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyByZXR1cm4gbV90b3BPcmlnaW4uZ2V0KCk7IH0KKworICAgIFNvY2tldFByb3Zp
ZGVyKiBzb2NrZXRQcm92aWRlcigpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVy
biBudWxscHRyOyB9CisKKyAgICBib29sIGlzQ29udGV4dFRocmVhZCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlzU2VjdXJlQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBmYWxzZTsgfQorCisgICAgSlNDOjpSdW50aW1l
RmxhZ3MganNSdW50aW1lRmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX2pzUnVudGltZUZsYWdzOyB9
CisKK3Byb3RlY3RlZDoKKyAgICBXb3JrbGV0R2xvYmFsU2NvcGUoV2Vha1B0cjxEb2N1bWVudD4m
JiwgU2NyaXB0U291cmNlQ29kZSYmKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHJlZlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBmaW5hbCB7IHJlZigpOyB9CisgICAgdm9pZCBkZXJlZlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KKworICAgIHZvaWQgcmVmRXZlbnRU
YXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9CisgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgZmlu
YWwgeyBkZXJlZigpOyB9CisKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gY29uc3RfY2FzdDxXb3JrbGV0R2xv
YmFsU2NvcGUqPih0aGlzKTsgfQorICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0
SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gV29ya2xldEdsb2JhbFNjb3BlRXZlbnRU
YXJnZXRJbnRlcmZhY2VUeXBlOyB9CisKKyAgICBib29sIGlzV29ya2xldEdsb2JhbFNjb3BlKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgdm9pZCBsb2dFeGNlcHRpb25Ub0Nv
bnNvbGUoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGNvbnN0IFN0cmluZyYsIGludCwgaW50
LCBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s+JiYpIGZpbmFsOworICAgIHZvaWQg
YWRkTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIHVuc2lnbmVkLCB1bnNpZ25lZCwgUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0
Q2FsbFN0YWNrPiYmLCBKU0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIGxvbmcpIGZpbmFsOworICAg
IHZvaWQgYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25z
dCBTdHJpbmcmLCB1bnNpZ25lZCBsb25nKSBmaW5hbDsKKworICAgIEV2ZW50VGFyZ2V0KiBlcnJv
ckV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZXR1cm4gdGhpczsgfQorICAgIEV2ZW50UXVldWUmIGV2
ZW50UXVldWUoKSBjb25zdCBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gbV9l
dmVudFF1ZXVlOyB9CisKKyNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKKyAgICBib29sIHdyYXBD
cnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgVmVjdG9yPHVpbnQ4X3Q+JikgZmluYWwg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCB1bndyYXBD
cnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgVmVjdG9yPHVpbnQ4X3Q+JikgZmluYWwg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CisjZW5kaWYKKyAgICBVUkwg
Y29tcGxldGVVUkwoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7CisgICAgUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KKyAgICBT
dHJpbmcgdXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0IGZpbmFsIHsgQVNTRVJUX05PVF9SRUFD
SEVEKCk7IHJldHVybiAiIjsgfQorICAgIHZvaWQgZGlzYWJsZUV2YWwoY29uc3QgU3RyaW5nJikg
ZmluYWw7CisgICAgdm9pZCBkaXNhYmxlV2ViQXNzZW1ibHkoY29uc3QgU3RyaW5nJikgZmluYWw7
CisKKyAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
V29ya2xldFNjcmlwdENvbnRyb2xsZXI+IG1fc2NyaXB0OworCisgICAgLy8gRklYTUU6IE5vbmUg
b2YgdGhlc2UgYXJlIGltcGxlbWVudGVkIHByb3Blcmx5LCB0aGlzIGp1c3Qgc2F0aXNmaWVzIHRo
ZSBjb21waWxlci4KKyAgICBtdXRhYmxlIFdvcmtlckV2ZW50UXVldWUgbV9ldmVudFF1ZXVlOwor
ICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gbV90b3BPcmlnaW47CisgICAgU3RyaW5nIG1faWRlbnRp
ZmllcjsKKworICAgIEpTQzo6UnVudGltZUZsYWdzIG1fanNSdW50aW1lRmxhZ3M7CisgICAgV2Vh
a1B0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKKworICAgIFNjcmlwdFNvdXJjZUNvZGUgbV9jb2Rl
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0JFR0lOKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZSkKK3N0YXRpYyBib29sIGlzVHlwZShj
b25zdCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7IHJldHVybiBj
b250ZXh0LmlzV29ya2xldEdsb2JhbFNjb3BlKCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
RU5EKCkKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xl
dEdsb2JhbFNjb3BlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxT
Y29wZS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDc1OWYwY2UxZDE2Zjg2OTE4NjAxMjc3NmYwZGIxNmI2MWJh
YTQ3OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRH
bG9iYWxTY29wZS5pZGwKQEAgLTAsMCArMSwzNyBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCitb
CisgICAgQ3VzdG9tUHJveHlUb0pTT2JqZWN0LAorICAgIEV4cG9zZWQ9V29ya2xldCwKKyAgICBF
bmFibGVkQXRSdW50aW1lPUNTU1BhaW50aW5nQVBJLAorICAgIENvbmRpdGlvbmFsPUNTU19QQUlO
VElOR19BUEksCisgICAgSlNMZWdhY3lQYXJlbnQ9SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLAor
ICAgIEltcGxpY2l0VGhpcywKKyAgICBJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdCwK
KyAgICBJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdE9uUHJvdG90eXBlLAorICAgIEds
b2JhbD1Xb3JrbGV0LAorXSBpbnRlcmZhY2UgV29ya2xldEdsb2JhbFNjb3BlIDogRXZlbnRUYXJn
ZXQgeworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3Jp
cHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRD
b250cm9sbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YThjYzNjZDhmZDg0YjdkNzczZTdlZDkyNTUzNjI3
YmFhZjQ4ZjUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29y
a2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0wLDAgKzEsMTk1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCisKKyNpZiBFTkFCTEUoQ1NTX1BBSU5U
SU5HX0FQSSkKKworI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIkpTRXZlbnRU
YXJnZXQuaCIKKyNpbmNsdWRlICJKU0V4ZWNTdGF0ZS5oIgorI2luY2x1ZGUgIkpTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCisjaW5jbHVk
ZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgorI2luY2x1ZGUgIldvcmtsZXRDb25zb2xlQ2xpZW50
LmgiCisKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db21wbGV0aW9uLmg+CisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvRXhjZXB0aW9uLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRXhj
ZXB0aW9uSGVscGVycy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dDQWN0aXZpdHlDYWxs
YmFjay5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5oPgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1Byb21pc2VEZWZlcnJlZFRpbWVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvU3Ryb25nSW5saW5lcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1l
c3BhY2UgSlNDOworCitXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6V29ya2xldFNjcmlwdENvbnRy
b2xsZXIoV29ya2xldEdsb2JhbFNjb3BlKiB3b3JrbGV0R2xvYmFsU2NvcGUpCisgICAgOiBtX3Zt
KFZNOjpjcmVhdGUoKSkKKyAgICAsIG1fd29ya2xldEdsb2JhbFNjb3BlKHdvcmtsZXRHbG9iYWxT
Y29wZSkKKyAgICAsIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcigqbV92bSkKK3sKKyAgICBt
X3ZtLT5oZWFwLmFjcXVpcmVBY2Nlc3MoKTsgLy8gSXQncyBub3QgY2xlYXIgdGhhdCB3ZSBoYXZl
IGdvb2QgZGlzY2lwbGluZSBmb3IgaGVhcCBhY2Nlc3MsIHNvIHR1cm4gaXQgb24gcGVybWFuZW50
bHkuCisgICAgSlNWTUNsaWVudERhdGE6OmluaXROb3JtYWxXb3JsZChtX3ZtLmdldCgpKTsKK30K
KworV29ya2xldFNjcmlwdENvbnRyb2xsZXI6On5Xb3JrbGV0U2NyaXB0Q29udHJvbGxlcigpCit7
CisgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0oKSk7CisgICAgbV93b3JrbGV0R2xvYmFsU2NvcGVX
cmFwcGVyLmNsZWFyKCk7CisgICAgbV92bSA9IG51bGxwdHI7CisgICAgaWYgKG1fd29ya2xldEds
b2JhbFNjb3BlV3JhcHBlcikgeworICAgICAgICBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIt
PmNsZWFyRE9NR3VhcmRlZE9iamVjdHMoKTsKKyAgICAgICAgbV93b3JrbGV0R2xvYmFsU2NvcGVX
cmFwcGVyLT5zZXRDb25zb2xlQ2xpZW50KG51bGxwdHIpOworICAgICAgICBtX2NvbnNvbGVDbGll
bnQgPSBudWxscHRyOworICAgIH0KK30KKwordm9pZCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6
Zm9yYmlkRXhlY3V0aW9uKCkKK3sKKyAgICBBU1NFUlQobV93b3JrbGV0R2xvYmFsU2NvcGUtPmlz
Q29udGV4dFRocmVhZCgpKTsKKyAgICBtX2V4ZWN1dGlvbkZvcmJpZGRlbiA9IHRydWU7Cit9CisK
K2Jvb2wgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmlzRXhlY3V0aW9uRm9yYmlkZGVuKCkgY29u
c3QKK3sKKyAgICBBU1NFUlQobV93b3JrbGV0R2xvYmFsU2NvcGUtPmlzQ29udGV4dFRocmVhZCgp
KTsKKyAgICByZXR1cm4gbV9leGVjdXRpb25Gb3JiaWRkZW47Cit9CisKK3ZvaWQgV29ya2xldFNj
cmlwdENvbnRyb2xsZXI6OmRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQor
eworICAgIGluaXRTY3JpcHRJZk5lZWRlZCgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrIHsgdm0o
KSB9OworCisgICAgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5zZXRFdmFsRW5hYmxlZChm
YWxzZSwgZXJyb3JNZXNzYWdlKTsKK30KKwordm9pZCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6
ZGlzYWJsZVdlYkFzc2VtYmx5KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQoreworICAgIGlu
aXRTY3JpcHRJZk5lZWRlZCgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrIHsgdm0oKSB9OworCisg
ICAgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5zZXRXZWJBc3NlbWJseUVuYWJsZWQoZmFs
c2UsIGVycm9yTWVzc2FnZSk7Cit9CisKKwordGVtcGxhdGU8dHlwZW5hbWUgSlNHbG9iYWxTY29w
ZVByb3RvdHlwZSwgdHlwZW5hbWUgSlNHbG9iYWxTY29wZSwgdHlwZW5hbWUgR2xvYmFsU2NvcGU+
Cit2b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0V2l0aFN1YmNsYXNzKCkK
K3sKKyAgICBBU1NFUlQoIW1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcik7CisKKyAgICBKU0xv
Y2tIb2xkZXIgbG9jayhtX3ZtLmdldCgpKTsKKworICAgIC8vIEV4cGxpY2l0bHkgcHJvdGVjdCB0
aGUgZ2xvYmFsIG9iamVjdCdzIHByb3RvdHlwZSBzbyBpdCBpc24ndCBjb2xsZWN0ZWQKKyAgICAv
LyB3aGVuIHdlIGFsbG9jYXRlIHRoZSBnbG9iYWwgb2JqZWN0LiAoT25jZSB0aGUgZ2xvYmFsIG9i
amVjdCBpcyBmdWxseQorICAgIC8vIGNvbnN0cnVjdGVkLCBpdCBjYW4gbWFyayBpdHMgb3duIHBy
b3RvdHlwZS4pCisgICAgU3RydWN0dXJlKiBjb250ZXh0UHJvdG90eXBlU3RydWN0dXJlID0gSlNH
bG9iYWxTY29wZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKCptX3ZtLCBudWxscHRyLCBqc051
bGwoKSk7CisgICAgU3Ryb25nPEpTR2xvYmFsU2NvcGVQcm90b3R5cGU+IGNvbnRleHRQcm90b3R5
cGUoKm1fdm0sIEpTR2xvYmFsU2NvcGVQcm90b3R5cGU6OmNyZWF0ZSgqbV92bSwgbnVsbHB0ciwg
Y29udGV4dFByb3RvdHlwZVN0cnVjdHVyZSkpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
SlNHbG9iYWxTY29wZTo6Y3JlYXRlU3RydWN0dXJlKCptX3ZtLCBudWxscHRyLCBjb250ZXh0UHJv
dG90eXBlLmdldCgpKTsKKyAgICBhdXRvKiBwcm94eVN0cnVjdHVyZSA9IEpTUHJveHk6OmNyZWF0
ZVN0cnVjdHVyZSgqbV92bSwgbnVsbHB0ciwganNOdWxsKCksIFB1cmVGb3J3YXJkaW5nUHJveHlU
eXBlKTsKKyAgICBhdXRvKiBwcm94eSA9IEpTUHJveHk6OmNyZWF0ZSgqbV92bSwgcHJveHlTdHJ1
Y3R1cmUpOworCisgICAgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLnNldCgqbV92bSwgSlNH
bG9iYWxTY29wZTo6Y3JlYXRlKCptX3ZtLCBzdHJ1Y3R1cmUsIHN0YXRpY19jYXN0PEdsb2JhbFNj
b3BlJj4oKm1fd29ya2xldEdsb2JhbFNjb3BlKSwgcHJveHkpKTsKKyAgICBjb250ZXh0UHJvdG90
eXBlU3RydWN0dXJlLT5zZXRHbG9iYWxPYmplY3QoKm1fdm0sIG1fd29ya2xldEdsb2JhbFNjb3Bl
V3JhcHBlci5nZXQoKSk7CisgICAgQVNTRVJUKHN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCkgPT0g
bV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKTsKKyAgICBBU1NFUlQobV93b3JrbGV0R2xvYmFs
U2NvcGVXcmFwcGVyLT5zdHJ1Y3R1cmUoKm1fdm0pLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmts
ZXRHbG9iYWxTY29wZVdyYXBwZXIpOworICAgIGNvbnRleHRQcm90b3R5cGUtPnN0cnVjdHVyZSgq
bV92bSktPnNldEdsb2JhbE9iamVjdCgqbV92bSwgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVy
LmdldCgpKTsKKyAgICBjb250ZXh0UHJvdG90eXBlLT5zdHJ1Y3R1cmUoKm1fdm0pLT5zZXRQcm90
b3R5cGVXaXRob3V0VHJhbnNpdGlvbigqbV92bSwgSlNHbG9iYWxTY29wZTo6cHJvdG90eXBlKCpt
X3ZtLCAqbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKSk7CisKKyAgICBwcm94eS0+
c2V0VGFyZ2V0KCptX3ZtLCBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpOworICAg
IHByb3h5LT5zdHJ1Y3R1cmUoKm1fdm0pLT5zZXRHbG9iYWxPYmplY3QoKm1fdm0sIG1fd29ya2xl
dEdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7CisKKyAgICBBU1NFUlQobV93b3JrbGV0R2xvYmFs
U2NvcGVXcmFwcGVyLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBw
ZXIpOworICAgIEFTU0VSVChhc09iamVjdChtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPmdl
dFByb3RvdHlwZURpcmVjdCgqbV92bSkpLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtsZXRHbG9i
YWxTY29wZVdyYXBwZXIpOworCisgICAgbV9jb25zb2xlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxXb3JrbGV0Q29uc29sZUNsaWVudD4oKm1fd29ya2xldEdsb2JhbFNjb3BlKTsKKyAgICBtX3dv
cmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPnNldENvbnNvbGVDbGllbnQobV9jb25zb2xlQ2xpZW50
LmdldCgpKTsKK30KKwordm9pZCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdCgp
Cit7CisgICAgaWYgKG1fd29ya2xldEdsb2JhbFNjb3BlLT5pc1BhaW50V29ya2xldEdsb2JhbFNj
b3BlKCkpIHsKKyAgICAgICAgaW5pdFNjcmlwdFdpdGhTdWJjbGFzczxKU1BhaW50V29ya2xldEds
b2JhbFNjb3BlUHJvdG90eXBlLCBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLCBQYWludFdvcmts
ZXRHbG9iYWxTY29wZT4oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworfQorCit2b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0
ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBTdHJpbmcqIHJldHVybmVkRXhj
ZXB0aW9uTWVzc2FnZSkKK3sKKyAgICBpZiAoaXNFeGVjdXRpb25Gb3JiaWRkZW4oKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IGV4Y2VwdGlvbjsKKyAg
ICBldmFsdWF0ZShzb3VyY2VDb2RlLCBleGNlcHRpb24sIHJldHVybmVkRXhjZXB0aW9uTWVzc2Fn
ZSk7CisgICAgaWYgKGV4Y2VwdGlvbikgeworICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSgp
KTsKKyAgICAgICAgcmVwb3J0RXhjZXB0aW9uKG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+
Z2xvYmFsRXhlYygpLCBleGNlcHRpb24pOworICAgIH0KK30KKwordm9pZCBXb3JrbGV0U2NyaXB0
Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwg
TmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbiwgU3RyaW5nKiByZXR1
cm5lZEV4Y2VwdGlvbk1lc3NhZ2UpCit7CisgICAgaWYgKGlzRXhlY3V0aW9uRm9yYmlkZGVuKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIGluaXRTY3JpcHRJZk5lZWRlZCgpOworCisgICAgYXV0
byYgc3RhdGUgPSAqbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxFeGVjKCk7Cisg
ICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9jayB7IHZtIH07CisK
KyAgICBKU0V4ZWNTdGF0ZTo6cHJvZmlsZWRFdmFsdWF0ZSgmc3RhdGUsIEpTQzo6UHJvZmlsaW5n
UmVhc29uOjpPdGhlciwgc291cmNlQ29kZS5qc1NvdXJjZUNvZGUoKSwgbV93b3JrbGV0R2xvYmFs
U2NvcGVXcmFwcGVyLT5nbG9iYWxUaGlzKCksIHJldHVybmVkRXhjZXB0aW9uKTsKKworICAgIGlm
IChyZXR1cm5lZEV4Y2VwdGlvbikgeworICAgICAgICAvLyBUaGlzIEZJWE1FIGlzIGZyb20gaW4g
V29ya2VyU2NyaXB0Q29udHJvbGxlci4KKyAgICAgICAgaWYgKC8qbV93b3JrbGV0R2xvYmFsU2Nv
cGUtPmNhbkluY2x1ZGVFcnJvckRldGFpbHMoc291cmNlQ29kZS5jYWNoZWRTY3JpcHQoKSwgc291
cmNlQ29kZS51cmwoKS5zdHJpbmcoKSkqLyB0cnVlKSB7CisgICAgICAgICAgICAvLyBGSVhNRTog
SXQncyBub3QgZ3JlYXQgdGhhdCB0aGlzIGNhbiBydW4gYXJiaXRyYXJ5IGNvZGUgdG8gc3RyaW5n
LWlmeSB0aGUgdmFsdWUgb2YgdGhlIGV4Y2VwdGlvbi4KKyAgICAgICAgICAgIC8vIERvIHdlIG5l
ZWQgdG8gZG8gYW55dGhpbmcgdG8gaGFuZGxlIHRoYXQgcHJvcGVybHksIGlmIGl0LCBzYXksIHJh
aXNlcyBhbm90aGVyIGV4Y2VwdGlvbj8KKyAgICAgICAgICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlv
bk1lc3NhZ2UpCisgICAgICAgICAgICAgICAgKnJldHVybmVkRXhjZXB0aW9uTWVzc2FnZSA9IHJl
dHVybmVkRXhjZXB0aW9uLT52YWx1ZSgpLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAvLyBPdmVyd3JpdGUgdGhlIGRldGFpbGVkIGVycm9yIHdpdGgg
YSBnZW5lcmljIGVycm9yLgorICAgICAgICAgICAgU3RyaW5nIGdlbmVyaWNFcnJvck1lc3NhZ2Ug
eyAiU2NyaXB0IGVycm9yLiJfcyB9OworICAgICAgICAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9u
TWVzc2FnZSkKKyAgICAgICAgICAgICAgICAqcmV0dXJuZWRFeGNlcHRpb25NZXNzYWdlID0gZ2Vu
ZXJpY0Vycm9yTWVzc2FnZTsKKyAgICAgICAgICAgIHJldHVybmVkRXhjZXB0aW9uID0gSlNDOjpF
eGNlcHRpb246OmNyZWF0ZSh2bSwgY3JlYXRlRXJyb3IoJnN0YXRlLCBnZW5lcmljRXJyb3JNZXNz
YWdlKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgV29ya2xldFNjcmlwdENvbnRyb2xs
ZXI6OnNldEV4Y2VwdGlvbihKU0M6OkV4Y2VwdGlvbiogZXhjZXB0aW9uKQoreworICAgIEpTQzo6
RXhlY1N0YXRlKiBleGVjID0gbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxFeGVj
KCk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGV4Y2VwdGlv
bik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmE1
NzhiYmY5YWIzMjFjOTcwMTQ0ZWI4ZmNlMzhiZWU1MzY1ZTg3ZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgKQEAgLTAs
MCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisKKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9EZWJ1Z2dlci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
UnVuTG9vcFRpbWVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nLmg+CisjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0
Zi9OYWtlZFB0ci5oPgorCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIFZNOworfQorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIEpTV29ya2xldEdsb2JhbFNjb3BlOworY2xhc3MgU2NyaXB0
U291cmNlQ29kZTsKK2NsYXNzIFdvcmtsZXRDb25zb2xlQ2xpZW50OworY2xhc3MgV29ya2xldEds
b2JhbFNjb3BlOworY2xhc3MgV29ya2xldENvbnNvbGVDbGllbnQ7CisKK2NsYXNzIFdvcmtsZXRT
Y3JpcHRDb250cm9sbGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXb3JrbGV0U2NyaXB0
Q29udHJvbGxlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFdvcmts
ZXRTY3JpcHRDb250cm9sbGVyKFdvcmtsZXRHbG9iYWxTY29wZSopOworICAgIH5Xb3JrbGV0U2Ny
aXB0Q29udHJvbGxlcigpOworCisgICAgSlNXb3JrbGV0R2xvYmFsU2NvcGUqIHdvcmtsZXRHbG9i
YWxTY29wZVdyYXBwZXIoKQorICAgIHsKKyAgICAgICAgaW5pdFNjcmlwdElmTmVlZGVkKCk7Cisg
ICAgICAgIHJldHVybiBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCk7CisgICAgfQor
CisgICAgdm9pZCBmb3JiaWRFeGVjdXRpb24oKTsKKyAgICBib29sIGlzRXhlY3V0aW9uRm9yYmlk
ZGVuKCkgY29uc3Q7CisKKyAgICB2b2lkIGRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JN
ZXNzYWdlKTsKKyAgICB2b2lkIGRpc2FibGVXZWJBc3NlbWJseShjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSk7CisKKyAgICB2b2lkIGV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBT
dHJpbmcqIHJldHVybmVkRXhjZXB0aW9uTWVzc2FnZSA9IG51bGxwdHIpOworICAgIHZvaWQgZXZh
bHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYg
cmV0dXJuZWRFeGNlcHRpb24sIFN0cmluZyogcmV0dXJuZWRFeGNlcHRpb25NZXNzYWdlID0gbnVs
bHB0cik7CisKKyAgICB2b2lkIHNldEV4Y2VwdGlvbihKU0M6OkV4Y2VwdGlvbiopOworCisgICAg
SlNDOjpWTSYgdm0oKSB7IHJldHVybiAqbV92bTsgfQorCitwcml2YXRlOgorICAgIHZvaWQgaW5p
dFNjcmlwdElmTmVlZGVkKCkKKyAgICB7CisgICAgICAgIGlmICghbV93b3JrbGV0R2xvYmFsU2Nv
cGVXcmFwcGVyKQorICAgICAgICAgICAgaW5pdFNjcmlwdCgpOworICAgIH0KKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGluaXRTY3JpcHQoKTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEpTR2xv
YmFsU2NvcGVQcm90b3R5cGUsIHR5cGVuYW1lIEpTR2xvYmFsU2NvcGUsIHR5cGVuYW1lIEdsb2Jh
bFNjb3BlPgorICAgIHZvaWQgaW5pdFNjcmlwdFdpdGhTdWJjbGFzcygpOworCisgICAgYm9vbCBt
X2V4ZWN1dGlvbkZvcmJpZGRlbiB7IGZhbHNlIH07CisgICAgUmVmUHRyPEpTQzo6Vk0+IG1fdm07
CisgICAgV29ya2xldEdsb2JhbFNjb3BlKiBtX3dvcmtsZXRHbG9iYWxTY29wZTsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8V29ya2xldENvbnNvbGVDbGllbnQ+IG1fY29uc29sZUNsaWVudDsKKyAgICBK
U0M6OlN0cm9uZzxKU1dvcmtsZXRHbG9iYWxTY29wZT4gbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFw
cGVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorI2VuZGlmCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMWI1ODBk
OTQ5MDExZjQ2NDEzYmRjNjNmODQ4OTQ3NjIwNzI0MDU0Yy4uZmE5OWY1OWYxYTE3ZjY5Yzk1Y2Fh
YmZkM2Y3NTdhZDM4NmI2N2MxNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE4LTEwLTI2ICBK
dXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
bmV3IGdsb2JhbCBvYmplY3QgYW5kIHByZWxpbWluYXJ5IFdvcmtsZXRzIHN1cHBvcnQgZm9yIENT
UyBwYWludGluZyBhcGkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5MDk3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBhIG5ldyB0ZXN0IGhhcm5lc3MgZm9yIHdvcmtsZXQgdGVzdHMsIHNpbmNlIHRo
ZXkgZG8gbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBkb20uCisKKyAgICAgICAgKiBmYXN0L2Nzcy1j
dXN0b20tcGFpbnQvYmFzaWMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvY3NzLWN1c3Rv
bS1wYWludC9iYXNpYy5odG1sOgorICAgICAgICAqIGZhc3QvY3NzLWN1c3RvbS1wYWludC9yZWdp
c3RlclBhaW50QmluZGluZ3MtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9j
c3MtY3VzdG9tLXBhaW50L3JlZ2lzdGVyUGFpbnRCaW5kaW5ncy1leHBlY3RlZC50eHQ6IFJlbW92
ZWQuCisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L3JlZ2lzdGVyUGFpbnRCaW5kaW5n
cy5odG1sOgorICAgICAgICAqIGZhc3QvY3NzLWN1c3RvbS1wYWludC9yZXNvdXJjZXMvdGVzdGhh
cm5lc3Mtd29ya2xldC5qczogQWRkZWQuCisgICAgICAgIChmb3JtYXRfdmFsdWUpOgorICAgICAg
ICAqIGZhc3QvY3NzLWN1c3RvbS1wYWludC9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanM6IEFkZGVk
LgorICAgICAgICAoYXN5bmMuaW1wb3J0V29ya2xldCk6CisgICAgICAgICogZmFzdC9jc3MtY3Vz
dG9tLXBhaW50L3dvcmtsZXQtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9j
c3MtY3VzdG9tLXBhaW50L3dvcmtsZXQuaHRtbDogQWRkZWQuCisKIDIwMTgtMTAtMjYgIENvbW1p
dCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHJvbGxpbmcgb3V0IHIyMzc0NzkgYW5kIHIyMzc0ODQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYmFzaWMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MtY3VzdG9tLXBhaW50L2Jhc2ljLWV4cGVjdGVkLnR4dAppbmRleCBlYWExNzQzZTQz
OTkwMGJmZDczYjBjMTkxNmUzZDJlY2VlNmQ0YjU2Li4wMjA1OWY5ODM1ZTIzNmFhNWU5OTI5NTUx
NDkxNzNiNWQ3NTI1NWE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20t
cGFpbnQvYmFzaWMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3Rv
bS1wYWludC9iYXNpYy1leHBlY3RlZC50eHQKQEAgLTEsMTAgKzEsMyBAQAogCi1QQVNTIHRlc3Qg
dGhhdCByZWdpc3RlclBhaW50IHJ1bnMgCi1QQVNTIHRlc3QgdGhhdCByZWdpc3RlclBhaW50IHJ1
bnMgd2l0aG91dCBpbnB1dFByb3BlcnRpZXMgCi1QQVNTIHRlc3QgdGhhdCByZWdpc3RlclBhaW50
IHJ1bnMgd2l0aCBpbnB1dEFyZ3VtZW50cyAKLVBBU1MgdGVzdCB0aGF0IHJlZ2lzdGVyUGFpbnQg
cnVucyB3aXRoIGNvbnRleHRPcHRpb25zIAotUEFTUyB0ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBy
dW5zIHdpdGggcHJlZGVmaW5lZCBjbGFzcyAKLVBBU1MgdGVzdCB0aGF0IHJlZ2lzdGVyUGFpbnQg
YWNjZXB0cyBvbmx5IGEgc3RyaW5nIGFuZCBhIGNsYXNzIGNvbnN0cnVjdG9yIAogUEFTUyB0ZXN0
IHRoYXQgdGVzdCBkaXYgaGFzIHBhaW50KCkgdmFsdWUgCi1QQVNTIHRlc3QgdGhhdCB0ZXN0IGRp
diBwYWludCBjYWxsYmFjayBnZXRzIGNhbGxlZCAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MtY3VzdG9tLXBhaW50L2Jhc2ljLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1j
dXN0b20tcGFpbnQvYmFzaWMuaHRtbAppbmRleCAzZjRkYzNhMmQwMmVmMjFhMmU5NzJkNGM4YjRm
MmZhZThjMzg5NDU4Li40YzhiMGNmNTJlMTZkNWM4ZjAyODc4ZTJjZjc1Nzk1MzQwZTI4Zjk2IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYmFzaWMuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYmFzaWMuaHRtbApAQCAtMTYs
NzAgKzE2LDcgQEAKIDxkaXYgaWQ9InBhaW50Ij48L2Rpdj4KIAogPHNjcmlwdD4KLXRlc3QoZnVu
Y3Rpb24oKSB7Ci0gIENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCd0
ZXN0MScsIGNsYXNzIHsKLSAgICBzdGF0aWMgZ2V0IGlucHV0UHJvcGVydGllcygpIHsgcmV0dXJu
IFsiLS10ZXN0Il07IH0KLSAgICBwYWludCgpIHsgfQotICB9KTsKLX0sICd0ZXN0IHRoYXQgcmVn
aXN0ZXJQYWludCBydW5zJyk7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gIENTUy5wYWludFdvcmts
ZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCd0ZXN0MicsIGNsYXNzIHsKLSAgICBwYWludCgp
IHsgfQotICB9KTsKLX0sICd0ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBydW5zIHdpdGhvdXQgaW5w
dXRQcm9wZXJ0aWVzJyk7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gIENTUy5wYWludFdvcmtsZXRH
bG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCd0ZXN0MycsIGNsYXNzIHsKLSAgICBzdGF0aWMgZ2V0
IGlucHV0QXJndW1lbnRzKCkgeyByZXR1cm4gWyI8bGVuZ3RoPiJdOyB9Ci0gICAgcGFpbnQoKSB7
IH0KLSAgfSk7Ci19LCAndGVzdCB0aGF0IHJlZ2lzdGVyUGFpbnQgcnVucyB3aXRoIGlucHV0QXJn
dW1lbnRzJyk7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gIENTUy5wYWludFdvcmtsZXRHbG9iYWxT
Y29wZS5yZWdpc3RlclBhaW50KCd0ZXN0NCcsIGNsYXNzIHsKLSAgICBzdGF0aWMgZ2V0IGNvbnRl
eHRPcHRpb25zKCkgeyByZXR1cm4geyBhbHBoYTogdHJ1ZSB9OyB9Ci0gICAgcGFpbnQoKSB7IH0K
LSAgfSk7Ci19LCAndGVzdCB0aGF0IHJlZ2lzdGVyUGFpbnQgcnVucyB3aXRoIGNvbnRleHRPcHRp
b25zJyk7Ci0KLWNsYXNzIE15UGFpbnQgewotICBwYWludCgpIHsgfQotfQotCi10ZXN0KGZ1bmN0
aW9uKCkgewotICBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgndGVz
dDUnLCBNeVBhaW50KTsKLSAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnSW52YWxpZE1vZGlmaWNh
dGlvbkVycm9yJ30sICgpID0+IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBh
aW50KCd0ZXN0NScsIE15UGFpbnQpKTsKLSAgQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJl
Z2lzdGVyUGFpbnQoJ3Rlc3Q2JywgY2xhc3MgZXh0ZW5kcyBNeVBhaW50IHsgfSk7Ci19LCAndGVz
dCB0aGF0IHJlZ2lzdGVyUGFpbnQgcnVucyB3aXRoIHByZWRlZmluZWQgY2xhc3MnKTsKLQotdGVz
dChmdW5jdGlvbigpIHsKLSAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnSW52YWxpZE1vZGlmaWNh
dGlvbkVycm9yJ30sICgpID0+IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBh
aW50KCd0ZXN0NicsICd0ZXN0JykpOwotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwg
KCkgPT4gQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3Q3Jykp
OwotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gQ1NTLnBhaW50V29ya2xl
dEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3Q4JywgW10pKTsKLSAgYXNzZXJ0X3Rocm93
cyhuZXcgVHlwZUVycm9yKCksICgpID0+IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdp
c3RlclBhaW50KCd0ZXN0OScsIHt9KSk7Ci0gIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigp
LCAoKSA9PiBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgndGVzdDEw
JywgNSkpOwotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gQ1NTLnBhaW50
V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJycsIDUpKTsKLX0sICd0ZXN0IHRoYXQg
cmVnaXN0ZXJQYWludCBhY2NlcHRzIG9ubHkgYSBzdHJpbmcgYW5kIGEgY2xhc3MgY29uc3RydWN0
b3InKTsKLQogdGVzdChmdW5jdGlvbigpIHsKICAgYXNzZXJ0X2VxdWFscyhnZXRDb21wdXRlZFN0
eWxlKHBhaW50KS5nZXRQcm9wZXJ0eVZhbHVlKCJiYWNrZ3JvdW5kLWltYWdlIiksICJwYWludCht
eS1wYWludCkiKTsKIH0sICd0ZXN0IHRoYXQgdGVzdCBkaXYgaGFzIHBhaW50KCkgdmFsdWUnKTsK
LQotbGV0IHBhaW50X2NhbGxlZF90ZXN0ID0gYXN5bmNfdGVzdCgndGVzdCB0aGF0IHRlc3QgZGl2
IHBhaW50IGNhbGxiYWNrIGdldHMgY2FsbGVkJyk7Ci1wYWludF9jYWxsZWRfdGVzdC5zdGVwKGZ1
bmN0aW9uKCkgewotICBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgn
bXktcGFpbnQnLCBjbGFzcyB7Ci0gICAgcGFpbnQoY3R4LCBnZW9tLCBwcm9wZXJ0aWVzKSB7Ci0g
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKyl7Ci0gICAgICAgIGZvciAodmFyIGogPSAw
OyBqIDwgNjsgaisrKXsKLSAgICAgICAgICBjdHguZmlsbFN0eWxlID0gJ3JnYignICsgTWF0aC5m
bG9vcigyNTUgLSA0Mi41ICogaSkgKyAnLCcgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
TWF0aC5mbG9vcigyNTUgLSA0Mi41ICogaikgKyAnLDApJzsKLSAgICAgICAgICBjdHguZmlsbFJl
Y3QoaiAqIDI1LCBpICogMjUsIDI1LCAyNSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIHBh
aW50X2NhbGxlZF90ZXN0LmRvbmUoKTsKLSAgICB9Ci0gIH0pOwotfSk7Ci0KIDwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3JlZ2lzdGVyUGFp
bnRCaW5kaW5ncy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBh
aW50L3JlZ2lzdGVyUGFpbnRCaW5kaW5ncy1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiNDJi
NjJkYTEzZWRhODE5NjEwYjMxOTdiNGU0NWE1NDczYmRjZjMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVnaXN0ZXJQYWludEJpbmRpbmdzLWV4
cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxNiBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQt
dGVzdC1ydW5uZXIgWyBleHBlcmltZW50YWw6Q1NTUGFpbnRpbmdBUElFbmFibGVkPXRydWUgXSAt
LT4KKworPGNhbnZhcyBpZD0icGFpbnQiIHdpZHRoPSIxNTBweCIgaGVpZ2h0PSIxNTBweCIgPjwv
Y2FudmFzPgorCis8c2NyaXB0IGlkPSJjb2RlIj4KK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgncGFpbnQnKTsKK3ZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTsK
KworZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspeworICBmb3IgKHZhciBqID0gMDsgaiA8IDY7
IGorKyl7CisgICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2IoJyArIE1hdGguZmxvb3IoMjU1IC0gNDIu
NSAqIGkpICsgJywnICsKKyAgICAgICAgICAgICAgICAgICAgIE1hdGguZmxvb3IoMjU1IC0gNDIu
NSAqIGopICsgJywwKSc7CisgICAgY3R4LmZpbGxSZWN0KGogKiAyNSwgaSAqIDI1LCAyNSwgMjUp
OworICB9Cit9Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1
c3RvbS1wYWludC9yZWdpc3RlclBhaW50QmluZGluZ3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3JlZ2lzdGVyUGFpbnRCaW5kaW5ncy1leHBlY3RlZC50
eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwMTQzMTUyYmQ4NmM5ZGIwZDk3Mjky
NDIyZDViOGFmODhhNTEwNmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3JlZ2lzdGVyUGFpbnRC
aW5kaW5ncy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi0KLVBB
U1MgcmVnaXN0ZXJQYWludCBtdXN0IGJlIGEgbWV0aG9kIAotUEFTUyBtdXN0IGdldCAicHJvdG90
eXBlIiBwcm9wZXJ0eSBvZiB0aGUgY29uc3RydWN0b3IgCi1QQVNTIG11c3QgcmV0aHJvdyBhbiBl
eGNlcHRpb24gdGhyb3duIHdoaWxlIGdldHRpbmcgImlucHV0UHJvcGVydGllcyIgcHJvcGVydHkg
b2YgdGhlIGNvbnN0cnVjdG9yIAotUEFTUyBtdXN0IHJldGhyb3cgYW4gZXhjZXB0aW9uIHRocm93
biB3aGlsZSBnZXR0aW5nICJwcm90b3R5cGUiIHByb3BlcnR5IG9mIHRoZSBjb25zdHJ1Y3RvciAK
LVBBU1MgbXVzdCB0aHJvdyB3aGVuICJwcm90b3R5cGUiIHByb3BlcnR5IG9mIHRoZSBjb25zdHJ1
Y3RvciBpcyBub3QgYW4gb2JqZWN0IAotUEFTUyBtdXN0IGdldCBwYWludCBjYWxsYmFjayBvZiB0
aGUgY29uc3RydWN0b3IgcHJvdG90eXBlIAotUEFTUyBtdXN0IHJldGhyb3cgYW4gZXhjZXB0aW9u
IHRocm93biB3aGlsZSBnZXR0aW5nIHBhaW50IGNhbGxiYWNrIG9uIHRoZSBjb25zdHJ1Y3RvciBw
cm90b3R5cGUgCi1QQVNTIG11c3QgcmV0aHJvdyBhbiBleGNlcHRpb24gdGhyb3duIHdoaWxlIGNv
bnZlcnRpbmcgcGFpbnQgY2FsbGJhY2sgdmFsdWUgdG8gRnVuY3Rpb24gY2FsbGJhY2sgdHlwZSAK
LVBBU1MgbXVzdCByZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgY29udmVydGluZyB0
aGUgdmFsdWUgb2YgaW5wdXRBcmd1bWVudHMgdG8gc2VxdWVuY2U8RE9NU3RyaW5nPiAKLVBBU1Mg
bXVzdCByZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgaXRlcmF0aW5nIG92ZXIgaW5w
dXRBcmd1bWVudHMgdG8gc2VxdWVuY2U8RE9NU3RyaW5nPiAKLVBBU1MgbXVzdCByZXRocm93IGFu
IGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgcmV0cmlldmluZyBTeW1ib2wuaXRlcmF0b3Igb24gaW5w
dXRBcmd1bWVudHMgCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1w
YWludC9yZWdpc3RlclBhaW50QmluZGluZ3MuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1
c3RvbS1wYWludC9yZWdpc3RlclBhaW50QmluZGluZ3MuaHRtbAppbmRleCBkYzkwMmM0Y2Q2NTkx
MGQ1YjE4Y2FlMTU0ZWYzMzhjYTk4OThiY2RjLi5mYzEzZWI5YmE0NTY1MzljOTRmNGY2MjYyODQ1
MWNkZDg0NWYzNGI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFp
bnQvcmVnaXN0ZXJQYWludEJpbmRpbmdzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mt
Y3VzdG9tLXBhaW50L3JlZ2lzdGVyUGFpbnRCaW5kaW5ncy5odG1sCkBAIC0yLDE3ICsyLDY0IEBA
CiA8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxlPSJKdXN0aW4gTWljaGF1ZCIgaHJlZj0ibWFpbHRv
Omp1c3Rpbl9taWNoYXVkQHdlYmtpdC5vcmciPgogPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50
PSJyZWdpc3RlclBhaW50IGFjY2Vzc2VzIGFyZ3VtZW50cyBpbiB0aGUgY29ycmVjdCBvcmRlciI+
CiA8bGluayByZWw9ImhlbHAiIGNvbnRlbnQ9Imh0dHBzOi8vZHJhZnRzLmNzcy1ob3VkaW5pLm9y
Zy9jc3MtcGFpbnQtYXBpLTEvIj4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFy
bmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisKKzxzdHlsZT4KKyAgI3BhaW50IHsKKyAgICBi
YWNrZ3JvdW5kLWltYWdlOiBwYWludChteS1wYWludCk7CisgICAgd2lkdGg6IDE1MHB4OworICAg
IGhlaWdodDogMTUwcHg7CisgIH0KKzwvc3R5bGU+CisKKzxkaXYgaWQ9InBhaW50Ij48L2Rpdj4K
KworPHNjcmlwdCBpZD0iY29kZSIgdHlwZT0idGV4dC93b3JrbGV0Ij4KIGNsYXNzIE15UGFpbnQg
ewogICBwYWludCgpIHsgfQogfQogCi10ZXN0KGZ1bmN0aW9uICgpIHsKLSAgICBhc3NlcnRfdHJ1
ZSgncmVnaXN0ZXJQYWludCcgaW4gQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLl9fcHJvdG9f
XywgJyJyZWdpc3RlclBhaW50IiBleGlzdHMgb24gcHJvdG90eXBlJyk7Ci0gICAgYXNzZXJ0X3Ry
dWUoJ3JlZ2lzdGVyUGFpbnQnIGluIENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZSwgJyJyZWdp
c3RlclBhaW50IiBleGlzdHMgb24gd2luZG93Jyk7Ci19LCAncmVnaXN0ZXJQYWludCBtdXN0IGJl
IGEgbWV0aG9kJyk7Cit0ZXN0KGZ1bmN0aW9uKCkgeworICByZWdpc3RlclBhaW50KCdiYXNpYzEn
LCBjbGFzcyB7CisgICAgc3RhdGljIGdldCBpbnB1dFByb3BlcnRpZXMoKSB7IHJldHVybiBbIi0t
dGVzdCJdOyB9CisgICAgcGFpbnQoKSB7IH0KKyAgfSk7Cit9LCAndGVzdCB0aGF0IHJlZ2lzdGVy
UGFpbnQgcnVucycpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICByZWdpc3RlclBhaW50KCdiYXNp
YzInLCBjbGFzcyB7CisgICAgcGFpbnQoKSB7IH0KKyAgfSk7Cit9LCAndGVzdCB0aGF0IHJlZ2lz
dGVyUGFpbnQgcnVucyB3aXRob3V0IGlucHV0UHJvcGVydGllcycpOworCit0ZXN0KGZ1bmN0aW9u
KCkgeworICByZWdpc3RlclBhaW50KCdiYXNpYzMnLCBjbGFzcyB7CisgICAgc3RhdGljIGdldCBp
bnB1dEFyZ3VtZW50cygpIHsgcmV0dXJuIFsiPGxlbmd0aD4iXTsgfQorICAgIHBhaW50KCkgeyB9
CisgIH0pOworfSwgJ3Rlc3QgdGhhdCByZWdpc3RlclBhaW50IHJ1bnMgd2l0aCBpbnB1dEFyZ3Vt
ZW50cycpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICByZWdpc3RlclBhaW50KCdiYXNpYzQnLCBj
bGFzcyB7CisgICAgc3RhdGljIGdldCBjb250ZXh0T3B0aW9ucygpIHsgcmV0dXJuIHsgYWxwaGE6
IHRydWUgfTsgfQorICAgIHBhaW50KCkgeyB9CisgIH0pOworfSwgJ3Rlc3QgdGhhdCByZWdpc3Rl
clBhaW50IHJ1bnMgd2l0aCBjb250ZXh0T3B0aW9ucycpOworCit0ZXN0KGZ1bmN0aW9uKCkgewor
ICByZWdpc3RlclBhaW50KCdiYXNpYzUnLCBNeVBhaW50KTsKKyAgYXNzZXJ0X3Rocm93cyh7J25h
bWUnOiAnSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yJ30sICgpID0+IHJlZ2lzdGVyUGFpbnQoJ2Jh
c2ljNScsIE15UGFpbnQpKTsKKyAgcmVnaXN0ZXJQYWludCgnYmFzaWM2JywgY2xhc3MgZXh0ZW5k
cyBNeVBhaW50IHsgfSk7Cit9LCAndGVzdCB0aGF0IHJlZ2lzdGVyUGFpbnQgcnVucyB3aXRoIHBy
ZWRlZmluZWQgY2xhc3MnKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgYXNzZXJ0X3Rocm93cyh7
J25hbWUnOiAnSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yJ30sICgpID0+IHJlZ2lzdGVyUGFpbnQo
J2Jhc2ljNicsICd0ZXN0JykpOworICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkg
PT4gcmVnaXN0ZXJQYWludCgnYmFzaWM4JykpOworICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJy
b3IoKSwgKCkgPT4gcmVnaXN0ZXJQYWludCgnYmFzaWM5JywgW10pKTsKKyAgYXNzZXJ0X3Rocm93
cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHJlZ2lzdGVyUGFpbnQoJ2Jhc2ljMTAnLCB7fSkpOwor
ICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gcmVnaXN0ZXJQYWludCgnYmFz
aWMxMScsIDUpKTsKKyAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHJlZ2lz
dGVyUGFpbnQoJycsIDUpKTsKK30sICd0ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBhY2NlcHRzIG9u
bHkgYSBzdHJpbmcgYW5kIGEgY2xhc3MgY29uc3RydWN0b3InKTsKIAogdGVzdChmdW5jdGlvbiAo
KSB7CiAgICAgY29uc3QgY2FsbHMgPSBbXTsKQEAgLTIyLDcgKzY5LDcgQEAgdGVzdChmdW5jdGlv
biAoKSB7CiAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0W25hbWVdOwogICAgICAgICB9CiAgICAg
fSk7Ci0gICAgQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3Qt
cHJvdG8nLCBwcm94eSk7CisgICAgcmVnaXN0ZXJQYWludCgndGVzdC1wcm90bycsIHByb3h5KTsK
ICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNhbGxzLCBbImlucHV0UHJvcGVydGllcyIsICJpbnB1
dEFyZ3VtZW50cyIsICJjb250ZXh0T3B0aW9ucyIsICJwcm90b3R5cGUiXSk7CiB9LCAnbXVzdCBn
ZXQgInByb3RvdHlwZSIgcHJvcGVydHkgb2YgdGhlIGNvbnN0cnVjdG9yJyk7CiAKQEAgLTM2LDcg
KzgzLDcgQEAgdGVzdChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0W25h
bWVdOwogICAgICAgICB9CiAgICAgfSk7Ci0gICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnZXhw
ZWN0ZWRFcnJvcid9LCBmdW5jdGlvbiAoKSB7IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5y
ZWdpc3RlclBhaW50KCd0ZXN0LXJldGhyb3ctaW5wdXRQcm9wZXJ0aWVzMCcsIHByb3h5KTsgfSk7
CisgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnZXhwZWN0ZWRFcnJvcid9LCBmdW5jdGlvbiAo
KSB7IHJlZ2lzdGVyUGFpbnQoJ3Rlc3QtcmV0aHJvdy1pbnB1dFByb3BlcnRpZXMwJywgcHJveHkp
OyB9KTsKIH0sICdtdXN0IHJldGhyb3cgYW4gZXhjZXB0aW9uIHRocm93biB3aGlsZSBnZXR0aW5n
ICJpbnB1dFByb3BlcnRpZXMiIHByb3BlcnR5IG9mIHRoZSBjb25zdHJ1Y3RvcicpOwogCiB0ZXN0
KGZ1bmN0aW9uICgpIHsKQEAgLTQ5LDcgKzk2LDcgQEAgdGVzdChmdW5jdGlvbiAoKSB7CiAgICAg
ICAgICAgICByZXR1cm4gdGFyZ2V0W25hbWVdOwogICAgICAgICB9CiAgICAgfSk7Ci0gICAgYXNz
ZXJ0X3Rocm93cyh7J25hbWUnOiAnZXhwZWN0ZWRFcnJvcid9LCBmdW5jdGlvbiAoKSB7IENTUy5w
YWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCd0ZXN0LXJldGhyb3ctcHJvdG8n
LCBwcm94eSk7IH0pOworICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ2V4cGVjdGVkRXJyb3In
fSwgZnVuY3Rpb24gKCkgeyByZWdpc3RlclBhaW50KCd0ZXN0LXJldGhyb3ctcHJvdG8nLCBwcm94
eSk7IH0pOwogfSwgJ211c3QgcmV0aHJvdyBhbiBleGNlcHRpb24gdGhyb3duIHdoaWxlIGdldHRp
bmcgInByb3RvdHlwZSIgcHJvcGVydHkgb2YgdGhlIGNvbnN0cnVjdG9yJyk7CiAKIHRlc3QoZnVu
Y3Rpb24gKCkgewpAQCAtNjMsMTYgKzExMCwxNiBAQCB0ZXN0KGZ1bmN0aW9uICgpIHsKICAgICB9
KTsKIAogICAgIHJldHVybmVkVmFsdWUgPSBudWxsOwotICAgIGFzc2VydF90aHJvd3MoeyduYW1l
JzogJ1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5yZWdpc3RlclBhaW50KCd0ZXN0LXJldGhyb3ctcHJvdG8tbm9vYmoxJywgcHJveHkpOyB9LAor
ICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IHJl
Z2lzdGVyUGFpbnQoJ3Rlc3QtcmV0aHJvdy1wcm90by1ub29iajEnLCBwcm94eSk7IH0sCiAgICAg
ICAgICdtdXN0IHRocm93IHdoZW4gInByb3RvdHlwZSIgcHJvcGVydHkgb2YgdGhlIGNvbnN0cnVj
dG9yIGlzIG51bGwnKTsKICAgICByZXR1cm5lZFZhbHVlID0gdW5kZWZpbmVkOwotICAgIGFzc2Vy
dF90aHJvd3MoeyduYW1lJzogJ1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IENTUy5wYWludFdv
cmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCd0ZXN0LXJldGhyb3ctcHJvdG8tbm9vYmoy
JywgcHJveHkpOyB9LAorICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1R5cGVFcnJvcid9LCBm
dW5jdGlvbiAoKSB7IHJlZ2lzdGVyUGFpbnQoJ3Rlc3QtcmV0aHJvdy1wcm90by1ub29iajInLCBw
cm94eSk7IH0sCiAgICAgICAgICdtdXN0IHRocm93IHdoZW4gInByb3RvdHlwZSIgcHJvcGVydHkg
b2YgdGhlIGNvbnN0cnVjdG9yIGlzIHVuZGVmaW5lZCcpOwogICAgIHJldHVybmVkVmFsdWUgPSAn
aGVsbG8nOwotICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1R5cGVFcnJvcid9LCBmdW5jdGlv
biAoKSB7IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCd0ZXN0LXJl
dGhyb3ctcHJvdG8tbm9vYmozJywgcHJveHkpOzsgfSwKKyAgICBhc3NlcnRfdGhyb3dzKHsnbmFt
ZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyByZWdpc3RlclBhaW50KCd0ZXN0LXJldGhy
b3ctcHJvdG8tbm9vYmozJywgcHJveHkpOzsgfSwKICAgICAgICAgJ211c3QgdGhyb3cgd2hlbiAi
cHJvdG90eXBlIiBwcm9wZXJ0eSBvZiB0aGUgY29uc3RydWN0b3IgaXMgYSBzdHJpbmcnKTsKICAg
ICByZXR1cm5lZFZhbHVlID0gMTsKLSAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJy
b3InfSwgZnVuY3Rpb24gKCkgeyBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQ
YWludCgndGVzdC1yZXRocm93LXByb3RvLW5vb2JqNCcsIHByb3h5KTs7IH0sCisgICAgYXNzZXJ0
X3Rocm93cyh7J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgcmVnaXN0ZXJQYWlu
dCgndGVzdC1yZXRocm93LXByb3RvLW5vb2JqNCcsIHByb3h5KTs7IH0sCiAgICAgICAgICdtdXN0
IHRocm93IHdoZW4gInByb3RvdHlwZSIgcHJvcGVydHkgb2YgdGhlIGNvbnN0cnVjdG9yIGlzIGEg
bnVtYmVyJyk7CiAKIH0sICdtdXN0IHRocm93IHdoZW4gInByb3RvdHlwZSIgcHJvcGVydHkgb2Yg
dGhlIGNvbnN0cnVjdG9yIGlzIG5vdCBhbiBvYmplY3QnKTsKQEAgLTg3LDcgKzEzNCw3IEBAIHRl
c3QoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgcmV0dXJuIHRhcmdldFtuYW1lXTsKICAgICAg
ICAgfQogICAgIH0pOwotICAgIENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBh
aW50KCdjYWxsYmFja3MnLCBjb25zdHJ1Y3Rvcik7CisgICAgcmVnaXN0ZXJQYWludCgnY2FsbGJh
Y2tzJywgY29uc3RydWN0b3IpOwogICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2FsbHMsIFsncGFp
bnQnXSk7CiB9LCAnbXVzdCBnZXQgcGFpbnQgY2FsbGJhY2sgb2YgdGhlIGNvbnN0cnVjdG9yIHBy
b3RvdHlwZScpOwogCkBAIC0xMDIsNyArMTQ5LDcgQEAgdGVzdChmdW5jdGlvbiAoKSB7CiAgICAg
ICAgICAgICByZXR1cm4gdGFyZ2V0W25hbWVdOwogICAgICAgICB9CiAgICAgfSk7Ci0gICAgYXNz
ZXJ0X3Rocm93cyh7J25hbWUnOiAnZXhwZWN0ZWRFcnJvcid9LCBmdW5jdGlvbiAoKSB7IENTUy5w
YWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCdjYWxsYmFja3MtdGhyb3cnLCBj
b25zdHJ1Y3Rvcik7IH0pOworICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ2V4cGVjdGVkRXJy
b3InfSwgZnVuY3Rpb24gKCkgeyByZWdpc3RlclBhaW50KCdjYWxsYmFja3MtdGhyb3cnLCBjb25z
dHJ1Y3Rvcik7IH0pOwogICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2FsbHMsIFsncGFpbnQnXSk7
CiB9LCAnbXVzdCByZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgZ2V0dGluZyBwYWlu
dCBjYWxsYmFjayBvbiB0aGUgY29uc3RydWN0b3IgcHJvdG90eXBlJyk7CiAKQEAgLTExNyw3ICsx
NjQsNyBAQCB0ZXN0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIHJldHVybiB0YXJnZXRbbmFt
ZV07CiAgICAgICAgIH0KICAgICB9KTsKLSAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBl
RXJyb3InfSwgZnVuY3Rpb24gKCkgeyBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0
ZXJQYWludCgnY2FsbGJhY2tzLXRocm93MicsIGNvbnN0cnVjdG9yKTsgfSk7CisgICAgYXNzZXJ0
X3Rocm93cyh7J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgcmVnaXN0ZXJQYWlu
dCgnY2FsbGJhY2tzLXRocm93MicsIGNvbnN0cnVjdG9yKTsgfSk7CiAgICAgYXNzZXJ0X2FycmF5
X2VxdWFscyhjYWxscywgWydwYWludCddKTsKIH0sICdtdXN0IHJldGhyb3cgYW4gZXhjZXB0aW9u
IHRocm93biB3aGlsZSBjb252ZXJ0aW5nIHBhaW50IGNhbGxiYWNrIHZhbHVlIHRvIEZ1bmN0aW9u
IGNhbGxiYWNrIHR5cGUnKTsKIApAQCAtMTMxLDcgKzE3OCw3IEBAIHRlc3QoZnVuY3Rpb24gKCkg
ewogICAgICAgICAgIHJldHVybiB0YXJnZXRbbmFtZV07CiAgICAgICB9CiAgIH0pOwotICBhc3Nl
cnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBDU1MucGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgnc2VxdWVuY2UtdGhyb3cnLCBwcm94eSk7
IH0pOworICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkg
eyByZWdpc3RlclBhaW50KCdzZXF1ZW5jZS10aHJvdycsIHByb3h5KTsgfSk7CiAgIGFzc2VydF9h
cnJheV9lcXVhbHMoY2FsbHMsIFsiaW5wdXRQcm9wZXJ0aWVzIiwgImlucHV0QXJndW1lbnRzIl0p
OwogfSwgJ211c3QgcmV0aHJvdyBhbiBleGNlcHRpb24gdGhyb3duIHdoaWxlIGNvbnZlcnRpbmcg
dGhlIHZhbHVlIG9mIGlucHV0QXJndW1lbnRzIHRvIHNlcXVlbmNlPERPTVN0cmluZz4nKTsKIApA
QCAtMTQxLDEyICsxODgsMzYgQEAgdGVzdChmdW5jdGlvbiAoKSB7CiAgICAgICAgIHlpZWxkICc8
bGVuZ3RoPic7CiAgICAgICAgIHRocm93IHtuYW1lOiAnU29tZUVycm9yJ307CiAgICAgfX07Ci0g
ICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnU29tZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgQ1NT
LnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3NlcXVlbmNlLXRocm93Mics
IGNvbnN0cnVjdG9yKTsgfSk7CisgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnU29tZUVycm9y
J30sIGZ1bmN0aW9uICgpIHsgcmVnaXN0ZXJQYWludCgnc2VxdWVuY2UtdGhyb3cyJywgY29uc3Ry
dWN0b3IpOyB9KTsKIH0sICdtdXN0IHJldGhyb3cgYW4gZXhjZXB0aW9uIHRocm93biB3aGlsZSBp
dGVyYXRpbmcgb3ZlciBpbnB1dEFyZ3VtZW50cyB0byBzZXF1ZW5jZTxET01TdHJpbmc+Jyk7CiAK
IHRlc3QoZnVuY3Rpb24gKCkgewogICAgIGNvbnN0IGNvbnN0cnVjdG9yID0gZnVuY3Rpb24gKCkg
e30KICAgICBjb25zdHJ1Y3Rvci5pbnB1dEFyZ3VtZW50cyA9IHtbU3ltYm9sLml0ZXJhdG9yXTog
MX07Ci0gICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9uICgp
IHsgQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3N5bWJvbC1pdGVy
YXRvci10aHJvdzInLCBjb25zdHJ1Y3Rvcik7IH0pOworICAgIGFzc2VydF90aHJvd3MoeyduYW1l
JzogJ1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IHJlZ2lzdGVyUGFpbnQoJ3N5bWJvbC1pdGVy
YXRvci10aHJvdzInLCBjb25zdHJ1Y3Rvcik7IH0pOwogfSwgJ211c3QgcmV0aHJvdyBhbiBleGNl
cHRpb24gdGhyb3duIHdoaWxlIHJldHJpZXZpbmcgU3ltYm9sLml0ZXJhdG9yIG9uIGlucHV0QXJn
dW1lbnRzJyk7CisKK2Fzc2VydF90cnVlKFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmhhc1J1bkFU
ZXN0KTsKK2lmIChQYWludFdvcmtsZXRHbG9iYWxTY29wZS5lcnJvcnMpIHsKKyAgY29uc29sZS5s
b2coIlRoZSBmb2xsb3dpbmcgKCIgKyBQYWludFdvcmtsZXRHbG9iYWxTY29wZS5lcnJvcnMubGVu
Z3RoICsgIikgdGVzdHMgZmFpbGVkOiAiKQorICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShQ
YWludFdvcmtsZXRHbG9iYWxTY29wZS5lcnJvcnMpKTsKKyAgYXNzZXJ0X3RydWUoZmFsc2UpOwor
fQorCitjbGFzcyBNeVBhaW50MiB7CisgIHBhaW50KGN0eCwgZ2VvbSwgcHJvcGVydGllcykgewor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKXsKKyAgICAgIGZvciAodmFyIGogPSAwOyBq
IDwgNjsgaisrKXsKKyAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2IoJyArIE1hdGguZmxvb3Io
MjU1IC0gNDIuNSAqIGkpICsgJywnICsKKyAgICAgICAgICAgICAgICAgICAgICAgICBNYXRoLmZs
b29yKDI1NSAtIDQyLjUgKiBqKSArICcsMCknOworICAgICAgICBjdHguZmlsbFJlY3QoaiAqIDI1
LCBpICogMjUsIDI1LCAyNSk7CisgICAgICB9CisgICAgfQorICB9Cit9CityZWdpc3RlclBhaW50
KCdteS1wYWludCcsIE15UGFpbnQyKTsKKzwvc2NyaXB0PgorCis8c2NyaXB0PgorICBpbXBvcnRX
b3JrbGV0KENTUy5wYWludFdvcmtsZXQsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2RlJyku
dGV4dENvbnRlbnQpOwogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy1jdXN0b20tcGFpbnQvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLXdvcmtsZXQuanMgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLXdvcmtsZXQu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDVjM2U3NGVlNmMxMzE0MTljMTY4OWVlODlkMDFhNDFhYTcwMmVjYwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9yZXNv
dXJjZXMvdGVzdGhhcm5lc3Mtd29ya2xldC5qcwpAQCAtMCwwICsxLDczOSBAQAorLy8gVGhlc2Ug
YXJlIGhlbHBlcnMgdG8gYmUgZXZhbHVhdGVkIGluc2lkZSBhIHdvcmtsZXQKKy8vIFRoZXkgYXJl
IG1vc3RseSBmcm9tIHRoZSB3cHQgdGVzdGhhcm5lc3MuanMuCisKKy8qCisgKiBDb252ZXJ0IGEg
dmFsdWUgdG8gYSBuaWNlLCBodW1hbi1yZWFkYWJsZSBzdHJpbmcKKyAqLworZnVuY3Rpb24gZm9y
bWF0X3ZhbHVlKHZhbCwgc2VlbikKK3sKKyAgICBpZiAoIXNlZW4pIHsKKyAgICAgICAgc2VlbiA9
IFtdOworICAgIH0KKyAgICBpZiAodHlwZW9mIHZhbCA9PT0gIm9iamVjdCIgJiYgdmFsICE9PSBu
dWxsKSB7CisgICAgICAgIGlmIChzZWVuLmluZGV4T2YodmFsKSA+PSAwKSB7CisgICAgICAgICAg
ICByZXR1cm4gIlsuLi5dIjsKKyAgICAgICAgfQorICAgICAgICBzZWVuLnB1c2godmFsKTsKKyAg
ICB9CisgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsKSkgeworICAgICAgICByZXR1cm4gIlsiICsg
dmFsLm1hcChmdW5jdGlvbih4KSB7cmV0dXJuIGZvcm1hdF92YWx1ZSh4LCBzZWVuKTt9KS5qb2lu
KCIsICIpICsgIl0iOworICAgIH0KKworICAgIHN3aXRjaCAodHlwZW9mIHZhbCkgeworICAgIGNh
c2UgInN0cmluZyI6CisgICAgICAgIHZhbCA9IHZhbC5yZXBsYWNlKCJcXCIsICJcXFxcIik7Cisg
ICAgICAgIGZvciAodmFyIHAgaW4gcmVwbGFjZW1lbnRzKSB7CisgICAgICAgICAgICB2YXIgcmVw
bGFjZSA9ICJcXCIgKyByZXBsYWNlbWVudHNbcF07CisgICAgICAgICAgICB2YWwgPSB2YWwucmVw
bGFjZShSZWdFeHAoU3RyaW5nLmZyb21DaGFyQ29kZShwKSwgImciKSwgcmVwbGFjZSk7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuICciJyArIHZhbC5yZXBsYWNlKC8iL2csICdcXCInKSArICci
JzsKKyAgICBjYXNlICJib29sZWFuIjoKKyAgICBjYXNlICJ1bmRlZmluZWQiOgorICAgICAgICBy
ZXR1cm4gU3RyaW5nKHZhbCk7CisgICAgY2FzZSAibnVtYmVyIjoKKyAgICAgICAgLy8gSW4gSmF2
YVNjcmlwdCwgLTAgPT09IDAgYW5kIFN0cmluZygtMCkgPT0gIjAiLCBzbyB3ZSBoYXZlIHRvCisg
ICAgICAgIC8vIHNwZWNpYWwtY2FzZS4KKyAgICAgICAgaWYgKHZhbCA9PT0gLTAgJiYgMS92YWwg
PT09IC1JbmZpbml0eSkgeworICAgICAgICAgICAgcmV0dXJuICItMCI7CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIFN0cmluZyh2YWwpOworICAgIGNhc2UgIm9iamVjdCI6CisgICAgICAgIGlm
ICh2YWwgPT09IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiAibnVsbCI7CisgICAgICAgIH0K
KworICAgICAgICAvLyBTcGVjaWFsLWNhc2UgTm9kZSBvYmplY3RzLCBzaW5jZSB0aG9zZSBjb21l
IHVwIGEgbG90IGluIG15IHRlc3RzLiAgSQorICAgICAgICAvLyBpZ25vcmUgbmFtZXNwYWNlcy4K
KyAgICAgICAgaWYgKGlzX25vZGUodmFsKSkgeworICAgICAgICAgICAgc3dpdGNoICh2YWwubm9k
ZVR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgTm9kZS5FTEVNRU5UX05PREU6CisgICAgICAgICAg
ICAgICAgdmFyIHJldCA9ICI8IiArIHZhbC5sb2NhbE5hbWU7CisgICAgICAgICAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCB2YWwuYXR0cmlidXRlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAg
ICAgICAgICAgICByZXQgKz0gIiAiICsgdmFsLmF0dHJpYnV0ZXNbaV0ubmFtZSArICc9IicgKyB2
YWwuYXR0cmlidXRlc1tpXS52YWx1ZSArICciJzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgcmV0ICs9ICI+IiArIHZhbC5pbm5lckhUTUwgKyAiPC8iICsgdmFsLmxvY2FsTmFt
ZSArICI+IjsKKyAgICAgICAgICAgICAgICByZXR1cm4gIkVsZW1lbnQgbm9kZSAiICsgdHJ1bmNh
dGUocmV0LCA2MCk7CisgICAgICAgICAgICBjYXNlIE5vZGUuVEVYVF9OT0RFOgorICAgICAgICAg
ICAgICAgIHJldHVybiAnVGV4dCBub2RlICInICsgdHJ1bmNhdGUodmFsLmRhdGEsIDYwKSArICci
JzsKKyAgICAgICAgICAgIGNhc2UgTm9kZS5QUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU6Cisg
ICAgICAgICAgICAgICAgcmV0dXJuICJQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gbm9kZSB3aXRoIHRh
cmdldCAiICsgZm9ybWF0X3ZhbHVlKHRydW5jYXRlKHZhbC50YXJnZXQsIDYwKSkgKyAiIGFuZCBk
YXRhICIgKyBmb3JtYXRfdmFsdWUodHJ1bmNhdGUodmFsLmRhdGEsIDYwKSk7CisgICAgICAgICAg
ICBjYXNlIE5vZGUuQ09NTUVOVF9OT0RFOgorICAgICAgICAgICAgICAgIHJldHVybiAiQ29tbWVu
dCBub2RlIDwhLS0iICsgdHJ1bmNhdGUodmFsLmRhdGEsIDYwKSArICItLT4iOworICAgICAgICAg
ICAgY2FzZSBOb2RlLkRPQ1VNRU5UX05PREU6CisgICAgICAgICAgICAgICAgcmV0dXJuICJEb2N1
bWVudCBub2RlIHdpdGggIiArIHZhbC5jaGlsZE5vZGVzLmxlbmd0aCArICh2YWwuY2hpbGROb2Rl
cy5sZW5ndGggPT0gMSA/ICIgY2hpbGQiIDogIiBjaGlsZHJlbiIpOworICAgICAgICAgICAgY2Fz
ZSBOb2RlLkRPQ1VNRU5UX1RZUEVfTk9ERToKKyAgICAgICAgICAgICAgICByZXR1cm4gIkRvY3Vt
ZW50VHlwZSBub2RlIjsKKyAgICAgICAgICAgIGNhc2UgTm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9O
T0RFOgorICAgICAgICAgICAgICAgIHJldHVybiAiRG9jdW1lbnRGcmFnbWVudCBub2RlIHdpdGgg
IiArIHZhbC5jaGlsZE5vZGVzLmxlbmd0aCArICh2YWwuY2hpbGROb2Rlcy5sZW5ndGggPT0gMSA/
ICIgY2hpbGQiIDogIiBjaGlsZHJlbiIpOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgICAgICByZXR1cm4gIk5vZGUgb2JqZWN0IG9mIHVua25vd24gdHlwZSI7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgIC8qIGZhbGxzIHRocm91Z2ggKi8KKyAgICBkZWZhdWx0Ogor
ICAgICAgICB0cnkgeworICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWwgKyAnICInICsgdHJ1
bmNhdGUoU3RyaW5nKHZhbCksIDEwMDApICsgJyInOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAg
ICAgICAgICAgIHJldHVybiAoIltzdHJpbmdpZnlpbmcgb2JqZWN0IHRocmV3ICIgKyBTdHJpbmco
ZSkgKworICAgICAgICAgICAgICAgICAgICAiIHdpdGggdHlwZSAiICsgU3RyaW5nKHR5cGVvZiBl
KSArICJdIik7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIGlzX3NpbmdsZV9ub2Rl
KHRlbXBsYXRlKQoreworICAgIHJldHVybiB0eXBlb2YgdGVtcGxhdGVbMF0gPT09ICJzdHJpbmci
OworfQorCitmdW5jdGlvbiBzdWJzdGl0dXRlKHRlbXBsYXRlLCBzdWJzdGl0dXRpb25zKQorewor
ICAgIGlmICh0eXBlb2YgdGVtcGxhdGUgPT09ICJmdW5jdGlvbiIpIHsKKyAgICAgICAgdmFyIHJl
cGxhY2VtZW50ID0gdGVtcGxhdGUoc3Vic3RpdHV0aW9ucyk7CisgICAgICAgIGlmICghcmVwbGFj
ZW1lbnQpIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAg
cmV0dXJuIHN1YnN0aXR1dGUocmVwbGFjZW1lbnQsIHN1YnN0aXR1dGlvbnMpOworICAgIH0KKwor
ICAgIGlmIChpc19zaW5nbGVfbm9kZSh0ZW1wbGF0ZSkpIHsKKyAgICAgICAgcmV0dXJuIHN1YnN0
aXR1dGVfc2luZ2xlKHRlbXBsYXRlLCBzdWJzdGl0dXRpb25zKTsKKyAgICB9CisKKyAgICByZXR1
cm4gZmlsdGVyKG1hcCh0ZW1wbGF0ZSwgZnVuY3Rpb24oeCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gc3Vic3RpdHV0ZSh4LCBzdWJzdGl0dXRpb25zKTsKKyAgICAgICAgICAg
ICAgICAgICAgICB9KSwgZnVuY3Rpb24oeCkge3JldHVybiB4ICE9PSBudWxsO30pOworfQorCitm
dW5jdGlvbiBzdWJzdGl0dXRlX3NpbmdsZSh0ZW1wbGF0ZSwgc3Vic3RpdHV0aW9ucykKK3sKKyAg
ICB2YXIgc3Vic3RpdHV0aW9uX3JlID0gL1wkXHsoW14gfV0qKVx9L2c7CisKKyAgICBmdW5jdGlv
biBkb19zdWJzdGl0dXRpb24oaW5wdXQpIHsKKyAgICAgICAgdmFyIGNvbXBvbmVudHMgPSBpbnB1
dC5zcGxpdChzdWJzdGl0dXRpb25fcmUpOworICAgICAgICB2YXIgcnYgPSBbXTsKKyAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBjb21wb25lbnRzLmxlbmd0aDsgaSArPSAyKSB7CisgICAgICAg
ICAgICBydi5wdXNoKGNvbXBvbmVudHNbaV0pOworICAgICAgICAgICAgaWYgKGNvbXBvbmVudHNb
aSArIDFdKSB7CisgICAgICAgICAgICAgICAgcnYucHVzaChTdHJpbmcoc3Vic3RpdHV0aW9uc1tj
b21wb25lbnRzW2kgKyAxXV0pKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gcnY7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3Vic3RpdHV0ZV9hdHRycyhhdHRycywg
cnYpCisgICAgeworICAgICAgICBydlsxXSA9IHt9OworICAgICAgICBmb3IgKHZhciBuYW1lIGlu
IHRlbXBsYXRlWzFdKSB7CisgICAgICAgICAgICBpZiAoYXR0cnMuaGFzT3duUHJvcGVydHkobmFt
ZSkpIHsKKyAgICAgICAgICAgICAgICB2YXIgbmV3X25hbWUgPSBkb19zdWJzdGl0dXRpb24obmFt
ZSkuam9pbigiIik7CisgICAgICAgICAgICAgICAgdmFyIG5ld192YWx1ZSA9IGRvX3N1YnN0aXR1
dGlvbihhdHRyc1tuYW1lXSkuam9pbigiIik7CisgICAgICAgICAgICAgICAgcnZbMV1bbmV3X25h
bWVdID0gbmV3X3ZhbHVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAg
ZnVuY3Rpb24gc3Vic3RpdHV0ZV9jaGlsZHJlbihjaGlsZHJlbiwgcnYpCisgICAgeworICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAg
ICBpZiAoY2hpbGRyZW5baV0gaW5zdGFuY2VvZiBPYmplY3QpIHsKKyAgICAgICAgICAgICAgICB2
YXIgcmVwbGFjZW1lbnQgPSBzdWJzdGl0dXRlKGNoaWxkcmVuW2ldLCBzdWJzdGl0dXRpb25zKTsK
KyAgICAgICAgICAgICAgICBpZiAocmVwbGFjZW1lbnQgIT09IG51bGwpIHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGlzX3NpbmdsZV9ub2RlKHJlcGxhY2VtZW50KSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgcnYucHVzaChyZXBsYWNlbWVudCk7CisgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBleHRlbmQocnYsIHJlcGxhY2VtZW50KTsK
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgZXh0ZW5kKHJ2LCBkb19zdWJzdGl0dXRpb24oU3RyaW5n
KGNoaWxkcmVuW2ldKSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVy
biBydjsKKyAgICB9CisKKyAgICB2YXIgcnYgPSBbXTsKKyAgICBydi5wdXNoKGRvX3N1YnN0aXR1
dGlvbihTdHJpbmcodGVtcGxhdGVbMF0pKS5qb2luKCIiKSk7CisKKyAgICBpZiAodGVtcGxhdGVb
MF0gPT09ICJ7dGV4dH0iKSB7CisgICAgICAgIHN1YnN0aXR1dGVfY2hpbGRyZW4odGVtcGxhdGUu
c2xpY2UoMSksIHJ2KTsKKyAgICB9IGVsc2UgeworICAgICAgICBzdWJzdGl0dXRlX2F0dHJzKHRl
bXBsYXRlWzFdLCBydik7CisgICAgICAgIHN1YnN0aXR1dGVfY2hpbGRyZW4odGVtcGxhdGUuc2xp
Y2UoMiksIHJ2KTsKKyAgICB9CisKKyAgICByZXR1cm4gcnY7Cit9CisKK2Z1bmN0aW9uIGFzc2Vy
dChleHBlY3RlZF90cnVlLCBmdW5jdGlvbl9uYW1lLCBkZXNjcmlwdGlvbiwgZXJyb3IsIHN1YnN0
aXR1dGlvbnMpCit7CisgICAgaWYgKGV4cGVjdGVkX3RydWUgIT09IHRydWUpIHsKKyAgICAgICAg
dmFyIG1zZyA9IG1ha2VfbWVzc2FnZShmdW5jdGlvbl9uYW1lLCBkZXNjcmlwdGlvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgc3Vic3RpdHV0aW9ucyk7CisgICAgICAg
IHRocm93IG5ldyBBc3NlcnRpb25FcnJvcihtc2cpOworICAgIH0KK30KKworZnVuY3Rpb24gQXNz
ZXJ0aW9uRXJyb3IobWVzc2FnZSkKK3sKKyAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlOworICAg
IHRoaXMuc3RhY2sgPSB0aGlzLmdldF9zdGFjaygpOworfQorCitBc3NlcnRpb25FcnJvci5wcm90
b3R5cGUgPSBPYmplY3QuY3JlYXRlKEVycm9yLnByb3RvdHlwZSk7CisKK0Fzc2VydGlvbkVycm9y
LnByb3RvdHlwZS5nZXRfc3RhY2sgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgc3RhY2sgPSBuZXcg
RXJyb3IoKS5zdGFjazsKKyAgICAvLyBJRTExIGRvZXMgbm90IGluaXRpYWxpemUgJ0Vycm9yLnN0
YWNrJyB1bnRpbCB0aGUgb2JqZWN0IGlzIHRocm93bi4KKyAgICBpZiAoIXN0YWNrKSB7CisgICAg
ICAgIHRyeSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsKKyAgICAgICAgfSBjYXRj
aCAoZSkgeworICAgICAgICAgICAgc3RhY2sgPSBlLnN0YWNrOworICAgICAgICB9CisgICAgfQor
CisgICAgLy8gJ0Vycm9yLnN0YWNrJyBpcyBub3Qgc3VwcG9ydGVkIGluIGFsbCBicm93c2Vycy92
ZXJzaW9ucworICAgIGlmICghc3RhY2spIHsKKyAgICAgICAgcmV0dXJuICIoU3RhY2sgdHJhY2Ug
dW5hdmFpbGFibGUpIjsKKyAgICB9CisKKyAgICB2YXIgbGluZXMgPSBzdGFjay5zcGxpdCgiXG4i
KTsKKworICAgIC8vIENyZWF0ZSBhIHBhdHRlcm4gdG8gbWF0Y2ggc3RhY2sgZnJhbWVzIG9yaWdp
bmF0aW5nIHdpdGhpbiB0ZXN0aGFybmVzcy5qcy4gIFRoZXNlIGluY2x1ZGUgdGhlCisgICAgLy8g
c2NyaXB0IFVSTCwgZm9sbG93ZWQgYnkgdGhlIGxpbmUvY29sIChlLmcuLCAnL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qczoxMjA6MjEnKS4KKyAgICAvLyBFc2NhcGUgdGhlIFVSTCBwZXIgaHR0cDov
L3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zNTYxNDkzL2lzLXRoZXJlLWEtcmVnZXhwLWVz
Y2FwZS1mdW5jdGlvbi1pbi1qYXZhc2NyaXB0CisgICAgLy8gaW4gY2FzZSBpdCBjb250YWlucyBS
ZWdFeHAgY2hhcmFjdGVycy4KKyAgICB2YXIgc2NyaXB0X3VybCA9IGdldF9zY3JpcHRfdXJsKCk7
CisgICAgdmFyIHJlX3RleHQgPSBzY3JpcHRfdXJsID8gc2NyaXB0X3VybC5yZXBsYWNlKC9bLVwv
XFxeJCorPy4oKXxbXF17fV0vZywgJ1xcJCYnKSA6ICJcXGJ0ZXN0aGFybmVzcy5qcyI7CisgICAg
dmFyIHJlID0gbmV3IFJlZ0V4cChyZV90ZXh0ICsgIjpcXGQrOlxcZCsiKTsKKworICAgIC8vIFNv
bWUgYnJvd3NlcnMgaW5jbHVkZSBhIHByZWFtYmxlIHRoYXQgc3BlY2lmaWVzIHRoZSB0eXBlIG9m
IHRoZSBlcnJvciBvYmplY3QuICBTa2lwIHRoaXMgYnkKKyAgICAvLyBhZHZhbmNpbmcgdW50aWwg
d2UgZmluZCB0aGUgZmlyc3Qgc3RhY2sgZnJhbWUgb3JpZ2luYXRpbmcgZnJvbSB0ZXN0aGFybmVz
cy5qcy4KKyAgICB2YXIgaSA9IDA7CisgICAgd2hpbGUgKCFyZS50ZXN0KGxpbmVzW2ldKSAmJiBp
IDwgbGluZXMubGVuZ3RoKSB7CisgICAgICAgIGkrKzsKKyAgICB9CisKKyAgICAvLyBUaGVuIHNr
aXAgdGhlIHRvcCBmcmFtZXMgb3JpZ2luYXRpbmcgZnJvbSB0ZXN0aGFybmVzcy5qcyB0byBiZWdp
biB0aGUgc3RhY2sgYXQgdGhlIHRlc3QgY29kZS4KKyAgICB3aGlsZSAocmUudGVzdChsaW5lc1tp
XSkgJiYgaSA8IGxpbmVzLmxlbmd0aCkgeworICAgICAgICBpKys7CisgICAgfQorCisgICAgLy8g
UGFyYW5vaWQgY2hlY2sgdGhhdCB3ZSBkaWRuJ3Qgc2tpcCBhbGwgZnJhbWVzLiAgSWYgc28sIHJl
dHVybiB0aGUgb3JpZ2luYWwgc3RhY2sgdW5tb2RpZmllZC4KKyAgICBpZiAoaSA+PSBsaW5lcy5s
ZW5ndGgpIHsKKyAgICAgICAgcmV0dXJuIHN0YWNrOworICAgIH0KKworICAgIHJldHVybiBsaW5l
cy5zbGljZShpKS5qb2luKCJcbiIpOworfQorCitmdW5jdGlvbiBtYWtlX21lc3NhZ2UoZnVuY3Rp
b25fbmFtZSwgZGVzY3JpcHRpb24sIGVycm9yLCBzdWJzdGl0dXRpb25zKQoreworICAgIGZvciAo
dmFyIHAgaW4gc3Vic3RpdHV0aW9ucykgeworICAgICAgICBpZiAoc3Vic3RpdHV0aW9ucy5oYXNP
d25Qcm9wZXJ0eShwKSkgeworICAgICAgICAgICAgc3Vic3RpdHV0aW9uc1twXSA9IGZvcm1hdF92
YWx1ZShzdWJzdGl0dXRpb25zW3BdKTsKKyAgICAgICAgfQorICAgIH0KKyAgICB2YXIgbm9kZV9m
b3JtID0gc3Vic3RpdHV0ZShbInt0ZXh0fSIsICIke2Z1bmN0aW9uX25hbWV9OiAke2Rlc2NyaXB0
aW9ufSIgKyBlcnJvcl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2Uoe2Z1
bmN0aW9uX25hbWU6ZnVuY3Rpb25fbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGVzY3JpcHRpb246KGRlc2NyaXB0aW9uP2Rlc2NyaXB0aW9uICsgIiAiOiIiKX0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnN0aXR1dGlvbnMpKTsK
KyAgICByZXR1cm4gbm9kZV9mb3JtLnNsaWNlKDEpLmpvaW4oIiIpOworfQorCitmdW5jdGlvbiBm
aWx0ZXIoYXJyYXksIGNhbGxhYmxlLCB0aGlzT2JqKSB7CisgICAgdmFyIHJ2ID0gW107CisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykgeworICAgICAgICBpZiAoYXJy
YXkuaGFzT3duUHJvcGVydHkoaSkpIHsKKyAgICAgICAgICAgIHZhciBwYXNzID0gY2FsbGFibGUu
Y2FsbCh0aGlzT2JqLCBhcnJheVtpXSwgaSwgYXJyYXkpOworICAgICAgICAgICAgaWYgKHBhc3Mp
IHsKKyAgICAgICAgICAgICAgICBydi5wdXNoKGFycmF5W2ldKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcnY7Cit9CisKK2Z1bmN0aW9uIG1hcChhcnJheSwg
Y2FsbGFibGUsIHRoaXNPYmopCit7CisgICAgdmFyIHJ2ID0gW107CisgICAgcnYubGVuZ3RoID0g
YXJyYXkubGVuZ3RoOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKysp
IHsKKyAgICAgICAgaWYgKGFycmF5Lmhhc093blByb3BlcnR5KGkpKSB7CisgICAgICAgICAgICBy
dltpXSA9IGNhbGxhYmxlLmNhbGwodGhpc09iaiwgYXJyYXlbaV0sIGksIGFycmF5KTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICByZXR1cm4gcnY7Cit9CisKK2Z1bmN0aW9uIGZvckVhY2goYXJyYXks
IGNhbGxiYWNrLCB0aGlzT2JqKQoreworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVu
Z3RoOyBpKyspIHsKKyAgICAgICAgaWYgKGFycmF5Lmhhc093blByb3BlcnR5KGkpKSB7CisgICAg
ICAgICAgICBjYWxsYmFjay5jYWxsKHRoaXNPYmosIGFycmF5W2ldLCBpLCBhcnJheSk7CisgICAg
ICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIG1lcmdlKGEsYikKK3sKKyAgICB2YXIgcnYgPSB7
fTsKKyAgICB2YXIgcDsKKyAgICBmb3IgKHAgaW4gYSkgeworICAgICAgICBydltwXSA9IGFbcF07
CisgICAgfQorICAgIGZvciAocCBpbiBiKSB7CisgICAgICAgIHJ2W3BdID0gYltwXTsKKyAgICB9
CisgICAgcmV0dXJuIHJ2OworfQorCitmdW5jdGlvbiBzYW1lX3ZhbHVlKHgsIHkpIHsKKyAgICBp
ZiAoeSAhPT0geSkgeworICAgICAgICAvL05hTiBjYXNlCisgICAgICAgIHJldHVybiB4ICE9PSB4
OworICAgIH0KKyAgICBpZiAoeCA9PT0gMCAmJiB5ID09PSAwKSB7CisgICAgICAgIC8vRGlzdGlu
Z3Vpc2ggKzAgYW5kIC0wCisgICAgICAgIHJldHVybiAxL3ggPT09IDEveTsKKyAgICB9CisgICAg
cmV0dXJuIHggPT09IHk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9lcXVhbHMoYWN0dWFsLCBleHBl
Y3RlZCwgZGVzY3JpcHRpb24pCit7CisgICAgIC8qCisgICAgICAqIFRlc3QgaWYgdHdvIHByaW1p
dGl2ZXMgYXJlIGVxdWFsIG9yIHR3byBvYmplY3RzCisgICAgICAqIGFyZSB0aGUgc2FtZSBvYmpl
Y3QKKyAgICAgICovCisgICAgaWYgKHR5cGVvZiBhY3R1YWwgIT0gdHlwZW9mIGV4cGVjdGVkKSB7
CisgICAgICAgIGFzc2VydChmYWxzZSwgImFzc2VydF9lcXVhbHMiLCBkZXNjcmlwdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgKCIgKyB0eXBlb2YgZXhwZWN0ZWQgKyAiKSAk
e2V4cGVjdGVkfSBidXQgZ290ICgiICsgdHlwZW9mIGFjdHVhbCArICIpICR7YWN0dWFsfSIsCisg
ICAgICAgICAgICAgICAgICAgICAge2V4cGVjdGVkOmV4cGVjdGVkLCBhY3R1YWw6YWN0dWFsfSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXNzZXJ0KHNhbWVfdmFsdWUoYWN0dWFsLCBl
eHBlY3RlZCksICJhc3NlcnRfZXF1YWxzIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCAke2V4cGVjdGVkfSBidXQgZ290ICR7
YWN0dWFsfSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtleHBl
Y3RlZDpleHBlY3RlZCwgYWN0dWFsOmFjdHVhbH0pOworfQorCitmdW5jdGlvbiBhc3NlcnRfbm90
X2VxdWFscyhhY3R1YWwsIGV4cGVjdGVkLCBkZXNjcmlwdGlvbikKK3sKKyAgICAgLyoKKyAgICAg
ICogVGVzdCBpZiB0d28gcHJpbWl0aXZlcyBhcmUgdW5lcXVhbCBvciB0d28gb2JqZWN0cworICAg
ICAgKiBhcmUgZGlmZmVyZW50IG9iamVjdHMKKyAgICAgICovCisgICAgYXNzZXJ0KCFzYW1lX3Zh
bHVlKGFjdHVhbCwgZXhwZWN0ZWQpLCAiYXNzZXJ0X25vdF9lcXVhbHMiLCBkZXNjcmlwdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnb3QgZGlzYWxsb3dl
ZCB2YWx1ZSAke2FjdHVhbH0iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAge2FjdHVhbDphY3R1YWx9KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X2luX2FycmF5KGFj
dHVhbCwgZXhwZWN0ZWQsIGRlc2NyaXB0aW9uKQoreworICAgIGFzc2VydChleHBlY3RlZC5pbmRl
eE9mKGFjdHVhbCkgIT0gLTEsICJhc3NlcnRfaW5fYXJyYXkiLCBkZXNjcmlwdGlvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUgJHthY3R1YWx9IG5v
dCBpbiBhcnJheSAke2V4cGVjdGVkfSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAge2FjdHVhbDphY3R1YWwsIGV4cGVjdGVkOmV4cGVjdGVkfSk7Cit9CisKK2Z1
bmN0aW9uIGFzc2VydF9vYmplY3RfZXF1YWxzKGFjdHVhbCwgZXhwZWN0ZWQsIGRlc2NyaXB0aW9u
KQoreworICAgICAvL1RoaXMgbmVlZHMgdG8gYmUgaW1wcm92ZWQgYSBncmVhdCBkZWFsCisgICAg
IGZ1bmN0aW9uIGNoZWNrX2VxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIHN0YWNrKQorICAgICB7Cisg
ICAgICAgICBzdGFjay5wdXNoKGFjdHVhbCk7CisKKyAgICAgICAgIHZhciBwOworICAgICAgICAg
Zm9yIChwIGluIGFjdHVhbCkgeworICAgICAgICAgICAgIGFzc2VydChleHBlY3RlZC5oYXNPd25Q
cm9wZXJ0eShwKSwgImFzc2VydF9vYmplY3RfZXF1YWxzIiwgZGVzY3JpcHRpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5leHBlY3RlZCBwcm9w
ZXJ0eSAke3B9Iiwge3A6cH0pOworCisgICAgICAgICAgICAgaWYgKHR5cGVvZiBhY3R1YWxbcF0g
PT09ICJvYmplY3QiICYmIGFjdHVhbFtwXSAhPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICBp
ZiAoc3RhY2suaW5kZXhPZihhY3R1YWxbcF0pID09PSAtMSkgeworICAgICAgICAgICAgICAgICAg
ICAgY2hlY2tfZXF1YWwoYWN0dWFsW3BdLCBleHBlY3RlZFtwXSwgc3RhY2spOworICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgYXNzZXJ0
KHNhbWVfdmFsdWUoYWN0dWFsW3BdLCBleHBlY3RlZFtwXSksICJhc3NlcnRfb2JqZWN0X2VxdWFs
cyIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgInByb3BlcnR5ICR7cH0gZXhwZWN0ZWQgJHtleHBlY3RlZH0gZ290ICR7YWN0
dWFsfSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB7cDpwLCBleHBlY3RlZDpleHBlY3RlZCwgYWN0dWFsOmFjdHVhbH0pOworICAgICAgICAgICAg
IH0KKyAgICAgICAgIH0KKyAgICAgICAgIGZvciAocCBpbiBleHBlY3RlZCkgeworICAgICAgICAg
ICAgIGFzc2VydChhY3R1YWwuaGFzT3duUHJvcGVydHkocCksCisgICAgICAgICAgICAgICAgICAg
ICJhc3NlcnRfb2JqZWN0X2VxdWFscyIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAiZXhwZWN0ZWQgcHJvcGVydHkgJHtwfSBtaXNzaW5nIiwge3A6cH0pOworICAgICAgICAgfQor
ICAgICAgICAgc3RhY2sucG9wKCk7CisgICAgIH0KKyAgICAgY2hlY2tfZXF1YWwoYWN0dWFsLCBl
eHBlY3RlZCwgW10pOworfQorCitmdW5jdGlvbiBhc3NlcnRfYXJyYXlfZXF1YWxzKGFjdHVhbCwg
ZXhwZWN0ZWQsIGRlc2NyaXB0aW9uKQoreworICAgIGFzc2VydChhY3R1YWwubGVuZ3RoID09PSBl
eHBlY3RlZC5sZW5ndGgsCisgICAgICAgICAgICJhc3NlcnRfYXJyYXlfZXF1YWxzIiwgZGVzY3Jp
cHRpb24sCisgICAgICAgICAgICJsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgJHtleHBlY3RlZH0g
Z290ICR7YWN0dWFsfSIsCisgICAgICAgICAgIHtleHBlY3RlZDpleHBlY3RlZC5sZW5ndGgsIGFj
dHVhbDphY3R1YWwubGVuZ3RofSk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFjdHVhbC5s
ZW5ndGg7IGkrKykgeworICAgICAgICBhc3NlcnQoYWN0dWFsLmhhc093blByb3BlcnR5KGkpID09
PSBleHBlY3RlZC5oYXNPd25Qcm9wZXJ0eShpKSwKKyAgICAgICAgICAgICAgICJhc3NlcnRfYXJy
YXlfZXF1YWxzIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAicHJvcGVydHkgJHtpfSwg
cHJvcGVydHkgZXhwZWN0ZWQgdG8gYmUgJHtleHBlY3RlZH0gYnV0IHdhcyAke2FjdHVhbH0iLAor
ICAgICAgICAgICAgICAge2k6aSwgZXhwZWN0ZWQ6ZXhwZWN0ZWQuaGFzT3duUHJvcGVydHkoaSkg
PyAicHJlc2VudCIgOiAibWlzc2luZyIsCisgICAgICAgICAgICAgICBhY3R1YWw6YWN0dWFsLmhh
c093blByb3BlcnR5KGkpID8gInByZXNlbnQiIDogIm1pc3NpbmcifSk7CisgICAgICAgIGFzc2Vy
dChzYW1lX3ZhbHVlKGV4cGVjdGVkW2ldLCBhY3R1YWxbaV0pLAorICAgICAgICAgICAgICAgImFz
c2VydF9hcnJheV9lcXVhbHMiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICJwcm9wZXJ0
eSAke2l9LCBleHBlY3RlZCAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfSIsCisgICAgICAg
ICAgICAgICB7aTppLCBleHBlY3RlZDpleHBlY3RlZFtpXSwgYWN0dWFsOmFjdHVhbFtpXX0pOwor
ICAgIH0KK30KKworZnVuY3Rpb24gYXNzZXJ0X2FwcHJveF9lcXVhbHMoYWN0dWFsLCBleHBlY3Rl
ZCwgZXBzaWxvbiwgZGVzY3JpcHRpb24pCit7CisgICAgLyoKKyAgICAgKiBUZXN0IGlmIHR3byBw
cmltaXRpdmUgbnVtYmVycyBhcmUgZXF1YWwgd2l0aGluZyArLy0gZXBzaWxvbgorICAgICAqLwor
ICAgIGFzc2VydCh0eXBlb2YgYWN0dWFsID09PSAibnVtYmVyIiwKKyAgICAgICAgICAgImFzc2Vy
dF9hcHByb3hfZXF1YWxzIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICJleHBlY3RlZCBhIG51
bWJlciBidXQgZ290IGEgJHt0eXBlX2FjdHVhbH0iLAorICAgICAgICAgICB7dHlwZV9hY3R1YWw6
dHlwZW9mIGFjdHVhbH0pOworCisgICAgYXNzZXJ0KE1hdGguYWJzKGFjdHVhbCAtIGV4cGVjdGVk
KSA8PSBlcHNpbG9uLAorICAgICAgICAgICAiYXNzZXJ0X2FwcHJveF9lcXVhbHMiLCBkZXNjcmlw
dGlvbiwKKyAgICAgICAgICAgImV4cGVjdGVkICR7ZXhwZWN0ZWR9ICsvLSAke2Vwc2lsb259IGJ1
dCBnb3QgJHthY3R1YWx9IiwKKyAgICAgICAgICAge2V4cGVjdGVkOmV4cGVjdGVkLCBhY3R1YWw6
YWN0dWFsLCBlcHNpbG9uOmVwc2lsb259KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X2xlc3NfdGhh
bihhY3R1YWwsIGV4cGVjdGVkLCBkZXNjcmlwdGlvbikKK3sKKyAgICAvKgorICAgICAqIFRlc3Qg
aWYgYSBwcmltaXRpdmUgbnVtYmVyIGlzIGxlc3MgdGhhbiBhbm90aGVyCisgICAgICovCisgICAg
YXNzZXJ0KHR5cGVvZiBhY3R1YWwgPT09ICJudW1iZXIiLAorICAgICAgICAgICAiYXNzZXJ0X2xl
c3NfdGhhbiIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAiZXhwZWN0ZWQgYSBudW1iZXIgYnV0
IGdvdCBhICR7dHlwZV9hY3R1YWx9IiwKKyAgICAgICAgICAge3R5cGVfYWN0dWFsOnR5cGVvZiBh
Y3R1YWx9KTsKKworICAgIGFzc2VydChhY3R1YWwgPCBleHBlY3RlZCwKKyAgICAgICAgICAgImFz
c2VydF9sZXNzX3RoYW4iLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgImV4cGVjdGVkIGEgbnVt
YmVyIGxlc3MgdGhhbiAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfSIsCisgICAgICAgICAg
IHtleHBlY3RlZDpleHBlY3RlZCwgYWN0dWFsOmFjdHVhbH0pOworfQorCitmdW5jdGlvbiBhc3Nl
cnRfZ3JlYXRlcl90aGFuKGFjdHVhbCwgZXhwZWN0ZWQsIGRlc2NyaXB0aW9uKQoreworICAgIC8q
CisgICAgICogVGVzdCBpZiBhIHByaW1pdGl2ZSBudW1iZXIgaXMgZ3JlYXRlciB0aGFuIGFub3Ro
ZXIKKyAgICAgKi8KKyAgICBhc3NlcnQodHlwZW9mIGFjdHVhbCA9PT0gIm51bWJlciIsCisgICAg
ICAgICAgICJhc3NlcnRfZ3JlYXRlcl90aGFuIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICJl
eHBlY3RlZCBhIG51bWJlciBidXQgZ290IGEgJHt0eXBlX2FjdHVhbH0iLAorICAgICAgICAgICB7
dHlwZV9hY3R1YWw6dHlwZW9mIGFjdHVhbH0pOworCisgICAgYXNzZXJ0KGFjdHVhbCA+IGV4cGVj
dGVkLAorICAgICAgICAgICAiYXNzZXJ0X2dyZWF0ZXJfdGhhbiIsIGRlc2NyaXB0aW9uLAorICAg
ICAgICAgICAiZXhwZWN0ZWQgYSBudW1iZXIgZ3JlYXRlciB0aGFuICR7ZXhwZWN0ZWR9IGJ1dCBn
b3QgJHthY3R1YWx9IiwKKyAgICAgICAgICAge2V4cGVjdGVkOmV4cGVjdGVkLCBhY3R1YWw6YWN0
dWFsfSk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9iZXR3ZWVuX2V4Y2x1c2l2ZShhY3R1YWwsIGxv
d2VyLCB1cHBlciwgZGVzY3JpcHRpb24pCit7CisgICAgLyoKKyAgICAgKiBUZXN0IGlmIGEgcHJp
bWl0aXZlIG51bWJlciBpcyBiZXR3ZWVuIHR3byBvdGhlcnMKKyAgICAgKi8KKyAgICBhc3NlcnQo
dHlwZW9mIGFjdHVhbCA9PT0gIm51bWJlciIsCisgICAgICAgICAgICJhc3NlcnRfYmV0d2Vlbl9l
eGNsdXNpdmUiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgImV4cGVjdGVkIGEgbnVtYmVyIGJ1
dCBnb3QgYSAke3R5cGVfYWN0dWFsfSIsCisgICAgICAgICAgIHt0eXBlX2FjdHVhbDp0eXBlb2Yg
YWN0dWFsfSk7CisKKyAgICBhc3NlcnQoYWN0dWFsID4gbG93ZXIgJiYgYWN0dWFsIDwgdXBwZXIs
CisgICAgICAgICAgICJhc3NlcnRfYmV0d2Vlbl9leGNsdXNpdmUiLCBkZXNjcmlwdGlvbiwKKyAg
ICAgICAgICAgImV4cGVjdGVkIGEgbnVtYmVyIGdyZWF0ZXIgdGhhbiAke2xvd2VyfSAiICsKKyAg
ICAgICAgICAgImFuZCBsZXNzIHRoYW4gJHt1cHBlcn0gYnV0IGdvdCAke2FjdHVhbH0iLAorICAg
ICAgICAgICB7bG93ZXI6bG93ZXIsIHVwcGVyOnVwcGVyLCBhY3R1YWw6YWN0dWFsfSk7Cit9CisK
K2Z1bmN0aW9uIGFzc2VydF9sZXNzX3RoYW5fZXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgZGVzY3Jp
cHRpb24pCit7CisgICAgLyoKKyAgICAgKiBUZXN0IGlmIGEgcHJpbWl0aXZlIG51bWJlciBpcyBs
ZXNzIHRoYW4gb3IgZXF1YWwgdG8gYW5vdGhlcgorICAgICAqLworICAgIGFzc2VydCh0eXBlb2Yg
YWN0dWFsID09PSAibnVtYmVyIiwKKyAgICAgICAgICAgImFzc2VydF9sZXNzX3RoYW5fZXF1YWwi
LCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgImV4cGVjdGVkIGEgbnVtYmVyIGJ1dCBnb3QgYSAk
e3R5cGVfYWN0dWFsfSIsCisgICAgICAgICAgIHt0eXBlX2FjdHVhbDp0eXBlb2YgYWN0dWFsfSk7
CisKKyAgICBhc3NlcnQoYWN0dWFsIDw9IGV4cGVjdGVkLAorICAgICAgICAgICAiYXNzZXJ0X2xl
c3NfdGhhbl9lcXVhbCIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAiZXhwZWN0ZWQgYSBudW1i
ZXIgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9IiwK
KyAgICAgICAgICAge2V4cGVjdGVkOmV4cGVjdGVkLCBhY3R1YWw6YWN0dWFsfSk7Cit9CisKK2Z1
bmN0aW9uIGFzc2VydF9ncmVhdGVyX3RoYW5fZXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgZGVzY3Jp
cHRpb24pCit7CisgICAgLyoKKyAgICAgKiBUZXN0IGlmIGEgcHJpbWl0aXZlIG51bWJlciBpcyBn
cmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYW5vdGhlcgorICAgICAqLworICAgIGFzc2VydCh0eXBl
b2YgYWN0dWFsID09PSAibnVtYmVyIiwKKyAgICAgICAgICAgImFzc2VydF9ncmVhdGVyX3RoYW5f
ZXF1YWwiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgImV4cGVjdGVkIGEgbnVtYmVyIGJ1dCBn
b3QgYSAke3R5cGVfYWN0dWFsfSIsCisgICAgICAgICAgIHt0eXBlX2FjdHVhbDp0eXBlb2YgYWN0
dWFsfSk7CisKKyAgICBhc3NlcnQoYWN0dWFsID49IGV4cGVjdGVkLAorICAgICAgICAgICAiYXNz
ZXJ0X2dyZWF0ZXJfdGhhbl9lcXVhbCIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAiZXhwZWN0
ZWQgYSBudW1iZXIgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICR7ZXhwZWN0ZWR9IGJ1dCBnb3Qg
JHthY3R1YWx9IiwKKyAgICAgICAgICAge2V4cGVjdGVkOmV4cGVjdGVkLCBhY3R1YWw6YWN0dWFs
fSk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9iZXR3ZWVuX2luY2x1c2l2ZShhY3R1YWwsIGxvd2Vy
LCB1cHBlciwgZGVzY3JpcHRpb24pCit7CisgICAgLyoKKyAgICAgKiBUZXN0IGlmIGEgcHJpbWl0
aXZlIG51bWJlciBpcyBiZXR3ZWVuIHRvIHR3byBvdGhlcnMgb3IgZXF1YWwgdG8gZWl0aGVyIG9m
IHRoZW0KKyAgICAgKi8KKyAgICBhc3NlcnQodHlwZW9mIGFjdHVhbCA9PT0gIm51bWJlciIsCisg
ICAgICAgICAgICJhc3NlcnRfYmV0d2Vlbl9pbmNsdXNpdmUiLCBkZXNjcmlwdGlvbiwKKyAgICAg
ICAgICAgImV4cGVjdGVkIGEgbnVtYmVyIGJ1dCBnb3QgYSAke3R5cGVfYWN0dWFsfSIsCisgICAg
ICAgICAgIHt0eXBlX2FjdHVhbDp0eXBlb2YgYWN0dWFsfSk7CisKKyAgICBhc3NlcnQoYWN0dWFs
ID49IGxvd2VyICYmIGFjdHVhbCA8PSB1cHBlciwKKyAgICAgICAgICAgImFzc2VydF9iZXR3ZWVu
X2luY2x1c2l2ZSIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAiZXhwZWN0ZWQgYSBudW1iZXIg
Z3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICR7bG93ZXJ9ICIgKworICAgICAgICAgICAiYW5kIGxl
c3MgdGhhbiBvciBlcXVhbCB0byAke3VwcGVyfSBidXQgZ290ICR7YWN0dWFsfSIsCisgICAgICAg
ICAgIHtsb3dlcjpsb3dlciwgdXBwZXI6dXBwZXIsIGFjdHVhbDphY3R1YWx9KTsKK30KKworZnVu
Y3Rpb24gYXNzZXJ0X3Rocm93cyhjb2RlLCBmdW5jLCBkZXNjcmlwdGlvbikKK3sKKyAgICB0cnkg
eworICAgICAgICBmdW5jLmNhbGwodGhpcyk7CisgICAgICAgIGFzc2VydChmYWxzZSwgImFzc2Vy
dF90aHJvd3MiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICIke2Z1bmN9IGRpZCBub3Qg
dGhyb3ciLCB7ZnVuYzpmdW5jfSk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBpZiAoZSBp
bnN0YW5jZW9mIEFzc2VydGlvbkVycm9yKSB7CisgICAgICAgICAgICB0aHJvdyBlOworICAgICAg
ICB9CisgICAgICAgIGlmIChjb2RlID09PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKHR5cGVvZiBjb2RlID09PSAib2JqZWN0IikgeworICAgICAg
ICAgICAgYXNzZXJ0KHR5cGVvZiBlID09ICJvYmplY3QiICYmICJuYW1lIiBpbiBlICYmIGUubmFt
ZSA9PSBjb2RlLm5hbWUsCisgICAgICAgICAgICAgICAgICAgImFzc2VydF90aHJvd3MiLCBkZXNj
cmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAiJHtmdW5jfSB0aHJldyAke2FjdHVhbH0gKCR7
YWN0dWFsX25hbWV9KSBleHBlY3RlZCAke2V4cGVjdGVkfSAoJHtleHBlY3RlZF9uYW1lfSkiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZnVuYzpmdW5jLCBhY3R1YWw6ZSwgYWN0
dWFsX25hbWU6ZS5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0
ZWQ6Y29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX25hbWU6
Y29kZS5uYW1lfSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB2
YXIgY29kZV9uYW1lX21hcCA9IHsKKyAgICAgICAgICAgIElOREVYX1NJWkVfRVJSOiAnSW5kZXhT
aXplRXJyb3InLAorICAgICAgICAgICAgSElFUkFSQ0hZX1JFUVVFU1RfRVJSOiAnSGllcmFyY2h5
UmVxdWVzdEVycm9yJywKKyAgICAgICAgICAgIFdST05HX0RPQ1VNRU5UX0VSUjogJ1dyb25nRG9j
dW1lbnRFcnJvcicsCisgICAgICAgICAgICBJTlZBTElEX0NIQVJBQ1RFUl9FUlI6ICdJbnZhbGlk
Q2hhcmFjdGVyRXJyb3InLAorICAgICAgICAgICAgTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJS
OiAnTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3InLAorICAgICAgICAgICAgTk9UX0ZPVU5EX0VS
UjogJ05vdEZvdW5kRXJyb3InLAorICAgICAgICAgICAgTk9UX1NVUFBPUlRFRF9FUlI6ICdOb3RT
dXBwb3J0ZWRFcnJvcicsCisgICAgICAgICAgICBJTlVTRV9BVFRSSUJVVEVfRVJSOiAnSW5Vc2VB
dHRyaWJ1dGVFcnJvcicsCisgICAgICAgICAgICBJTlZBTElEX1NUQVRFX0VSUjogJ0ludmFsaWRT
dGF0ZUVycm9yJywKKyAgICAgICAgICAgIFNZTlRBWF9FUlI6ICdTeW50YXhFcnJvcicsCisgICAg
ICAgICAgICBJTlZBTElEX01PRElGSUNBVElPTl9FUlI6ICdJbnZhbGlkTW9kaWZpY2F0aW9uRXJy
b3InLAorICAgICAgICAgICAgTkFNRVNQQUNFX0VSUjogJ05hbWVzcGFjZUVycm9yJywKKyAgICAg
ICAgICAgIElOVkFMSURfQUNDRVNTX0VSUjogJ0ludmFsaWRBY2Nlc3NFcnJvcicsCisgICAgICAg
ICAgICBUWVBFX01JU01BVENIX0VSUjogJ1R5cGVNaXNtYXRjaEVycm9yJywKKyAgICAgICAgICAg
IFNFQ1VSSVRZX0VSUjogJ1NlY3VyaXR5RXJyb3InLAorICAgICAgICAgICAgTkVUV09SS19FUlI6
ICdOZXR3b3JrRXJyb3InLAorICAgICAgICAgICAgQUJPUlRfRVJSOiAnQWJvcnRFcnJvcicsCisg
ICAgICAgICAgICBVUkxfTUlTTUFUQ0hfRVJSOiAnVVJMTWlzbWF0Y2hFcnJvcicsCisgICAgICAg
ICAgICBRVU9UQV9FWENFRURFRF9FUlI6ICdRdW90YUV4Y2VlZGVkRXJyb3InLAorICAgICAgICAg
ICAgVElNRU9VVF9FUlI6ICdUaW1lb3V0RXJyb3InLAorICAgICAgICAgICAgSU5WQUxJRF9OT0RF
X1RZUEVfRVJSOiAnSW52YWxpZE5vZGVUeXBlRXJyb3InLAorICAgICAgICAgICAgREFUQV9DTE9O
RV9FUlI6ICdEYXRhQ2xvbmVFcnJvcicKKyAgICAgICAgfTsKKworICAgICAgICB2YXIgbmFtZSA9
IGNvZGUgaW4gY29kZV9uYW1lX21hcCA/IGNvZGVfbmFtZV9tYXBbY29kZV0gOiBjb2RlOworCisg
ICAgICAgIHZhciBuYW1lX2NvZGVfbWFwID0geworICAgICAgICAgICAgSW5kZXhTaXplRXJyb3I6
IDEsCisgICAgICAgICAgICBIaWVyYXJjaHlSZXF1ZXN0RXJyb3I6IDMsCisgICAgICAgICAgICBX
cm9uZ0RvY3VtZW50RXJyb3I6IDQsCisgICAgICAgICAgICBJbnZhbGlkQ2hhcmFjdGVyRXJyb3I6
IDUsCisgICAgICAgICAgICBOb01vZGlmaWNhdGlvbkFsbG93ZWRFcnJvcjogNywKKyAgICAgICAg
ICAgIE5vdEZvdW5kRXJyb3I6IDgsCisgICAgICAgICAgICBOb3RTdXBwb3J0ZWRFcnJvcjogOSwK
KyAgICAgICAgICAgIEluVXNlQXR0cmlidXRlRXJyb3I6IDEwLAorICAgICAgICAgICAgSW52YWxp
ZFN0YXRlRXJyb3I6IDExLAorICAgICAgICAgICAgU3ludGF4RXJyb3I6IDEyLAorICAgICAgICAg
ICAgSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yOiAxMywKKyAgICAgICAgICAgIE5hbWVzcGFjZUVy
cm9yOiAxNCwKKyAgICAgICAgICAgIEludmFsaWRBY2Nlc3NFcnJvcjogMTUsCisgICAgICAgICAg
ICBUeXBlTWlzbWF0Y2hFcnJvcjogMTcsCisgICAgICAgICAgICBTZWN1cml0eUVycm9yOiAxOCwK
KyAgICAgICAgICAgIE5ldHdvcmtFcnJvcjogMTksCisgICAgICAgICAgICBBYm9ydEVycm9yOiAy
MCwKKyAgICAgICAgICAgIFVSTE1pc21hdGNoRXJyb3I6IDIxLAorICAgICAgICAgICAgUXVvdGFF
eGNlZWRlZEVycm9yOiAyMiwKKyAgICAgICAgICAgIFRpbWVvdXRFcnJvcjogMjMsCisgICAgICAg
ICAgICBJbnZhbGlkTm9kZVR5cGVFcnJvcjogMjQsCisgICAgICAgICAgICBEYXRhQ2xvbmVFcnJv
cjogMjUsCisKKyAgICAgICAgICAgIEVuY29kaW5nRXJyb3I6IDAsCisgICAgICAgICAgICBOb3RS
ZWFkYWJsZUVycm9yOiAwLAorICAgICAgICAgICAgVW5rbm93bkVycm9yOiAwLAorICAgICAgICAg
ICAgQ29uc3RyYWludEVycm9yOiAwLAorICAgICAgICAgICAgRGF0YUVycm9yOiAwLAorICAgICAg
ICAgICAgVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yOiAwLAorICAgICAgICAgICAgUmVhZE9ubHlF
cnJvcjogMCwKKyAgICAgICAgICAgIFZlcnNpb25FcnJvcjogMCwKKyAgICAgICAgICAgIE9wZXJh
dGlvbkVycm9yOiAwLAorICAgICAgICAgICAgTm90QWxsb3dlZEVycm9yOiAwCisgICAgICAgIH07
CisKKyAgICAgICAgaWYgKCEobmFtZSBpbiBuYW1lX2NvZGVfbWFwKSkgeworICAgICAgICAgICAg
dGhyb3cgbmV3IEFzc2VydGlvbkVycm9yKCdUZXN0IGJ1ZzogdW5yZWNvZ25pemVkIERPTUV4Y2Vw
dGlvbiBjb2RlICInICsgY29kZSArICciIHBhc3NlZCB0byBhc3NlcnRfdGhyb3dzKCknKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHZhciByZXF1aXJlZF9wcm9wcyA9IHsgY29kZTogbmFtZV9jb2Rl
X21hcFtuYW1lXSB9OworCisgICAgICAgIGlmIChyZXF1aXJlZF9wcm9wcy5jb2RlID09PSAwIHx8
CisgICAgICAgICAgICh0eXBlb2YgZSA9PSAib2JqZWN0IiAmJgorICAgICAgICAgICAgIm5hbWUi
IGluIGUgJiYKKyAgICAgICAgICAgIGUubmFtZSAhPT0gZS5uYW1lLnRvVXBwZXJDYXNlKCkgJiYK
KyAgICAgICAgICAgIGUubmFtZSAhPT0gIkRPTUV4Y2VwdGlvbiIpKSB7CisgICAgICAgICAgICAv
LyBOZXcgc3R5bGUgZXhjZXB0aW9uOiBhbHNvIHRlc3QgdGhlIG5hbWUgcHJvcGVydHkuCisgICAg
ICAgICAgICByZXF1aXJlZF9wcm9wcy5uYW1lID0gbmFtZTsKKyAgICAgICAgfQorCisgICAgICAg
IC8vV2UnZCBsaWtlIHRvIHRlc3QgdGhhdCBlIGluc3RhbmNlb2YgdGhlIGFwcHJvcHJpYXRlIGlu
dGVyZmFjZSwKKyAgICAgICAgLy9idXQgd2UgY2FuJ3QsIGJlY2F1c2Ugd2UgZG9uJ3Qga25vdyB3
aGF0IHdpbmRvdyBpdCB3YXMgY3JlYXRlZAorICAgICAgICAvL2luLiAgSXQgbWlnaHQgYmUgYW4g
aW5zdGFuY2VvZiB0aGUgYXBwcm9wcmlhdGUgaW50ZXJmYWNlIG9uIHNvbWUKKyAgICAgICAgLy91
bmtub3duIG90aGVyIHdpbmRvdy4gIFRPRE86IFdvcmsgYXJvdW5kIHRoaXMgc29tZWhvdz8KKwor
ICAgICAgICBhc3NlcnQodHlwZW9mIGUgPT0gIm9iamVjdCIsCisgICAgICAgICAgICAgICAiYXNz
ZXJ0X3Rocm93cyIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgIiR7ZnVuY30gdGhyZXcg
JHtlfSB3aXRoIHR5cGUgJHt0eXBlfSwgbm90IGFuIG9iamVjdCIsCisgICAgICAgICAgICAgICB7
ZnVuYzpmdW5jLCBlOmUsIHR5cGU6dHlwZW9mIGV9KTsKKworICAgICAgICBmb3IgKHZhciBwcm9w
IGluIHJlcXVpcmVkX3Byb3BzKSB7CisgICAgICAgICAgICBhc3NlcnQodHlwZW9mIGUgPT0gIm9i
amVjdCIgJiYgcHJvcCBpbiBlICYmIGVbcHJvcF0gPT0gcmVxdWlyZWRfcHJvcHNbcHJvcF0sCisg
ICAgICAgICAgICAgICAgICAgImFzc2VydF90aHJvd3MiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAiJHtmdW5jfSB0aHJldyAke2V9IHRoYXQgaXMgbm90IGEgRE9NRXhjZXB0aW9u
ICIgKyBjb2RlICsgIjogcHJvcGVydHkgJHtwcm9wfSBpcyBlcXVhbCB0byAke2FjdHVhbH0sIGV4
cGVjdGVkICR7ZXhwZWN0ZWR9IiwKKyAgICAgICAgICAgICAgICAgICB7ZnVuYzpmdW5jLCBlOmUs
IHByb3A6cHJvcCwgYWN0dWFsOmVbcHJvcF0sIGV4cGVjdGVkOnJlcXVpcmVkX3Byb3BzW3Byb3Bd
fSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8qCisgKiBSZXR1cm4gdHJ1ZSBpZiBvYmplY3Qg
aXMgcHJvYmFibHkgYSBOb2RlIG9iamVjdC4KKyAqLworZnVuY3Rpb24gaXNfbm9kZShvYmplY3Qp
Cit7CisgICAgLy8gSSB1c2UgZHVjay10eXBpbmcgaW5zdGVhZCBvZiBpbnN0YW5jZW9mLCBiZWNh
dXNlCisgICAgLy8gaW5zdGFuY2VvZiBkb2Vzbid0IHdvcmsgaWYgdGhlIG5vZGUgaXMgZnJvbSBh
bm90aGVyIHdpbmRvdyAobGlrZSBhbgorICAgIC8vIGlmcmFtZSdzIGNvbnRlbnRXaW5kb3cpOgor
ICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL0J1Z3MvUHVibGljL3Nob3dfYnVnLmNnaT9pZD0xMjI5
NQorICAgIHRyeSB7CisgICAgICAgIHZhciBoYXNfbm9kZV9wcm9wZXJ0aWVzID0gKCJub2RlVHlw
ZSIgaW4gb2JqZWN0ICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub2Rl
TmFtZSIgaW4gb2JqZWN0ICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJu
b2RlVmFsdWUiIGluIG9iamVjdCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiY2hpbGROb2RlcyIgaW4gb2JqZWN0KTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIC8v
IFdlJ3JlIHByb2JhYmx5IGNyb3NzLW9yaWdpbiwgd2hpY2ggbWVhbnMgd2UgYXJlbid0IGEgbm9k
ZQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKGhhc19ub2RlX3Byb3Bl
cnRpZXMpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG9iamVjdC5ub2RlVHlwZTsKKyAg
ICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgLy8gVGhlIG9iamVjdCBpcyBwcm9iYWJs
eSBOb2RlLnByb3RvdHlwZSBvciBhbm90aGVyIHByb3RvdHlwZQorICAgICAgICAgICAgLy8gb2Jq
ZWN0IHRoYXQgaW5oZXJpdHMgZnJvbSBpdCwgYW5kIG5vdCBhIE5vZGUgaW5zdGFuY2UuCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordmFyIHJlcGxhY2VtZW50cyA9IHsKKyAgICAi
MCI6ICIwIiwKKyAgICAiMSI6ICJ4MDEiLAorICAgICIyIjogIngwMiIsCisgICAgIjMiOiAieDAz
IiwKKyAgICAiNCI6ICJ4MDQiLAorICAgICI1IjogIngwNSIsCisgICAgIjYiOiAieDA2IiwKKyAg
ICAiNyI6ICJ4MDciLAorICAgICI4IjogImIiLAorICAgICI5IjogInQiLAorICAgICIxMCI6ICJu
IiwKKyAgICAiMTEiOiAidiIsCisgICAgIjEyIjogImYiLAorICAgICIxMyI6ICJyIiwKKyAgICAi
MTQiOiAieDBlIiwKKyAgICAiMTUiOiAieDBmIiwKKyAgICAiMTYiOiAieDEwIiwKKyAgICAiMTci
OiAieDExIiwKKyAgICAiMTgiOiAieDEyIiwKKyAgICAiMTkiOiAieDEzIiwKKyAgICAiMjAiOiAi
eDE0IiwKKyAgICAiMjEiOiAieDE1IiwKKyAgICAiMjIiOiAieDE2IiwKKyAgICAiMjMiOiAieDE3
IiwKKyAgICAiMjQiOiAieDE4IiwKKyAgICAiMjUiOiAieDE5IiwKKyAgICAiMjYiOiAieDFhIiwK
KyAgICAiMjciOiAieDFiIiwKKyAgICAiMjgiOiAieDFjIiwKKyAgICAiMjkiOiAieDFkIiwKKyAg
ICAiMzAiOiAieDFlIiwKKyAgICAiMzEiOiAieDFmIiwKKyAgICAiMHhmZmZkIjogInVmZmZkIiwK
KyAgICAiMHhmZmZlIjogInVmZmZlIiwKKyAgICAiMHhmZmZmIjogInVmZmZmIiwKK307CisKK2Z1
bmN0aW9uIGV4dGVuZChhcnJheSwgaXRlbXMpCit7CisgICAgQXJyYXkucHJvdG90eXBlLnB1c2gu
YXBwbHkoYXJyYXksIGl0ZW1zKTsKK30KKworZnVuY3Rpb24gZ2V0X3NjcmlwdF91cmwoKQorewor
ICAgIHJldHVybiAiLyI7Cit9CisKKy8qCisgKiBSZXR1cm4gYSBzdHJpbmcgdHJ1bmNhdGVkIHRv
IHRoZSBnaXZlbiBsZW5ndGgsIHdpdGggLi4uIGFkZGVkIGF0IHRoZSBlbmQKKyAqIGlmIGl0IHdh
cyBsb25nZXIuCisgKi8KK2Z1bmN0aW9uIHRydW5jYXRlKHMsIGxlbikKK3sKKyAgICBpZiAocy5s
ZW5ndGggPiBsZW4pIHsKKyAgICAgICAgcmV0dXJuIHMuc3Vic3RyaW5nKDAsIGxlbiAtIDMpICsg
Ii4uLiI7CisgICAgfQorICAgIHJldHVybiBzOworfQorCitmdW5jdGlvbiBhc3NlcnRfdHJ1ZShh
Y3R1YWwsIGRlc2NyaXB0aW9uKQoreworICAgIGFzc2VydChhY3R1YWwgPT09IHRydWUsICJhc3Nl
cnRfdHJ1ZSIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBl
Y3RlZCB0cnVlIGdvdCAke2FjdHVhbH0iLCB7YWN0dWFsOmFjdHVhbH0pOworfQorCitmdW5jdGlv
biBhc3NlcnRfZmFsc2UoYWN0dWFsLCBkZXNjcmlwdGlvbikKK3sKKyAgICBhc3NlcnQoYWN0dWFs
ID09PSBmYWxzZSwgImFzc2VydF9mYWxzZSIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiZXhwZWN0ZWQgZmFsc2UgZ290ICR7YWN0dWFsfSIsIHthY3R1YWw6YWN0
dWFsfSk7Cit9CisKK2Z1bmN0aW9uIHRlc3QodHN0LCBuYW1lKSB7CisgIHRyeSB7CisgICAgdHN0
KCk7CisgIH0gY2F0Y2ggKGUpIHsKKyAgICBpZiAoIVBhaW50V29ya2xldEdsb2JhbFNjb3BlLmVy
cm9ycykKKyAgICAgIFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmVycm9ycyA9IFtdOworICAgICAg
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuZXJyb3JzLnB1c2goeyBuYW1lOiBuYW1lLCBlcnJvcjog
ZS5tZXNzYWdlIH0pOworICB9CisgIFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmhhc1J1bkFUZXN0
ID0gdHJ1ZTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWlu
dC9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20t
cGFpbnQvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFiMTNkNDMyOTBmODM0
ZDBmOWE2OTkzMDUwMGE2N2FjMTViZjVlZGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzCkBAIC0wLDAg
KzEsMjMgQEAKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CisKKy8vIEltcG9ydHMgY29kZSBpbnRvIGEgd29ya2xldCwgd2l0aCBzb21lIGhlbHBlcnMu
Cithc3luYyBmdW5jdGlvbiBpbXBvcnRXb3JrbGV0KHdvcmtsZXQsIGNvZGUpIHsKKyAgY29uc3Qg
cmVzcG9uc2UgPSBhd2FpdCBmZXRjaCgicmVzb3VyY2VzL3Rlc3RoYXJuZXNzLXdvcmtsZXQuanMi
KTsKKyAgY29uc3QgZmluYWxDb2RlID0gKGF3YWl0IHJlc3BvbnNlLnRleHQoKSkgKyBjb2RlOwor
CisgIGxldCB1cmw7CisgIC8vIEZJWE1FOiBUaGlzIGlzIHRlbXBvcmFyeSwgdW50aWwgd2Ugc3Vw
cG9ydCBsb2FkaW5nIHNjcmlwdHMgYnkgdXJsCisgIGlmICh3aW5kb3cuY2hyb21lKSB7CisgICAg
Y29uc3QgYmxvYiA9IG5ldyBCbG9iKFtmaW5hbENvZGVdLCB7dHlwZTogJ3RleHQvamF2YXNjcmlw
dCd9KTsKKyAgICB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpOworICB9IGVsc2Ugewor
ICAgIHVybCA9IGZpbmFsQ29kZTsKKyAgfQorCisgIHdvcmtsZXQuYWRkTW9kdWxlKHVybCk7Cisg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Cisg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9LCAzMDAwKTsKKyAgfQorfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3dvcmtsZXQtZXhwZWN0
ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC93b3JrbGV0LWV4cGVj
dGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGI0MmI2MmRhMTNlZGE4MTk2MTBiMzE5N2I0ZTQ1YTU0NzNi
ZGNmMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWlu
dC93b3JrbGV0LWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxNiBAQAorPCFET0NUWVBFIGh0bWw+
PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBleHBlcmltZW50YWw6Q1NTUGFpbnRpbmdBUElFbmFi
bGVkPXRydWUgXSAtLT4KKworPGNhbnZhcyBpZD0icGFpbnQiIHdpZHRoPSIxNTBweCIgaGVpZ2h0
PSIxNTBweCIgPjwvY2FudmFzPgorCis8c2NyaXB0IGlkPSJjb2RlIj4KK3ZhciBjYW52YXMgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFpbnQnKTsKK3ZhciBjdHggPSBjYW52YXMuZ2V0Q29u
dGV4dCgnMmQnKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspeworICBmb3IgKHZhciBq
ID0gMDsgaiA8IDY7IGorKyl7CisgICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2IoJyArIE1hdGguZmxv
b3IoMjU1IC0gNDIuNSAqIGkpICsgJywnICsKKyAgICAgICAgICAgICAgICAgICAgIE1hdGguZmxv
b3IoMjU1IC0gNDIuNSAqIGopICsgJywwKSc7CisgICAgY3R4LmZpbGxSZWN0KGogKiAyNSwgaSAq
IDI1LCAyNSwgMjUpOworICB9Cit9Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvY3NzLWN1c3RvbS1wYWludC93b3JrbGV0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy1jdXN0b20tcGFpbnQvd29ya2xldC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjZmY5MzU2ODUzNDIwNGEy
YWEwY2M2ZThkOWU4OTQ0MDEyZTJlNjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy1jdXN0b20tcGFpbnQvd29ya2xldC5odG1sCkBAIC0wLDAgKzEsNDIgQEAKKzwhRE9D
VFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFsOkNTU1BhaW50
aW5nQVBJRW5hYmxlZD10cnVlIF0gLS0+Cis8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxlPSJKdXN0
aW4gTWljaGF1ZCIgaHJlZj0ibWFpbHRvOmp1c3Rpbl9taWNoYXVkQHdlYmtpdC5vcmciPgorPG1l
dGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJUZXN0IHdvcmtsZXQgYWRkTW9kdWxlIGFuZCBnbG9i
YWwgb2JqZWN0Ij4KKzxsaW5rIHJlbD0iaGVscCIgY29udGVudD0iaHR0cHM6Ly9kcmFmdHMuY3Nz
LWhvdWRpbmkub3JnL2Nzcy1wYWludC1hcGktMS8iPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisKKzxzdHlsZT4KKyAgI3BhaW50IHsKKyAgICBiYWNr
Z3JvdW5kLWltYWdlOiBwYWludChteS1wYWludCk7CisgICAgd2lkdGg6IDE1MHB4OworICAgIGhl
aWdodDogMTUwcHg7CisgIH0KKzwvc3R5bGU+CisKKzxkaXYgaWQ9InBhaW50Ij48L2Rpdj4KKwor
PHNjcmlwdCBpZD0iY29kZSIgdHlwZT0idGV4dC93b3JrbGV0Ij4KK2NsYXNzIE15UGFpbnQgewor
ICBwYWludChjdHgsIGdlb20sIHByb3BlcnRpZXMpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDY7IGkrKyl7CisgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDY7IGorKyl7CisgICAgICAgIGN0
eC5maWxsU3R5bGUgPSAncmdiKCcgKyBNYXRoLmZsb29yKDI1NSAtIDQyLjUgKiBpKSArICcsJyAr
CisgICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5mbG9vcigyNTUgLSA0Mi41ICogaikgKyAn
LDApJzsKKyAgICAgICAgY3R4LmZpbGxSZWN0KGogKiAyNSwgaSAqIDI1LCAyNSwgMjUpOworICAg
ICAgfQorICAgIH0KKyAgICBjb25zb2xlLmxvZygiSGVsbG8gZnJvbSBwYWludCBjYWxsYmFjayEi
KTsKKyAgICBhc3NlcnRfZ3JlYXRlcl90aGFuKGV2YWwoImRldmljZVBpeGVsUmF0aW8iKSwgMCk7
CisgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnUmVmZXJlbmNlRXJyb3InfSwgZnVuY3Rpb24g
KCkgeyBldmFsKCJ3aW5kb3ciKTsgfSk7CisKKyAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21p
c2UoKHJlc29sdmUsIHJlamVjdCkgPT4geyBjb25zb2xlLmxvZygiSW4gcHJvbWlzZSIpOyByZXNv
bHZlKCkgfSk7CisgICAgcHJvbWlzZS50aGVuKCgpID0+IGNvbnNvbGUubG9nKCJQcm9taXNlIHdh
cyByZXNvbHZlZCIpKTsKKyAgfQorfQorY29uc29sZS5sb2coIkhlbGxvIGZyb20gcGFpbnQgd29y
a2xldCEiKTsKK3JlZ2lzdGVyUGFpbnQoJ215LXBhaW50JywgTXlQYWludCk7Citjb25zb2xlLmxv
ZyhXaW5kb3cpOyAvLyB0ZXN0IHRoYXQgdW5jYXVnaHQgZXhjZXB0aW9ucyBkbyBub3QgYWZmZWN0
IHJlZ2lzdGVyZWQgcGFpbnQgY2FsbGJhY2tzCis8L3NjcmlwdD4KKworPHNjcmlwdD4KK2ltcG9y
dFdvcmtsZXQoQ1NTLnBhaW50V29ya2xldCwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvZGUn
KS50ZXh0Q29udGVudCk7Cis8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353315</attachid>
            <date>2018-10-29 13:16:49 -0700</date>
            <delta_ts>2018-10-29 13:26:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190979-20181029131648.patch</filename>
            <type>text/plain</type>
            <size>183008</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjQ4NmIwMmU1NmRmOTIz
MGM2MTUyMTYzZWI3MmZkYzA0OTBmMzgxNS4uY2RlYzcwMThjNzcwZjk2NzczYjEzOTNhMWMzZTVm
ZjE5YjI0YzMyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MyBAQAorMjAxOC0xMC0yNiAgSnVz
dGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIG5l
dyBnbG9iYWwgb2JqZWN0IGFuZCBwcmVsaW1pbmFyeSBXb3JrbGV0cyBzdXBwb3J0IGZvciBDU1Mg
cGFpbnRpbmcgYXBpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTA5NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUZXN0OiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvd29ya2xldC5odG1sCisKKyAgICAgICAg
QWRkIGEgbmV3IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgYW5kIGdsb2JhbCBvYmplY3QgdG8gcnVu
IHdvcmtsZXRzIGluLiBUaGlzIGlzIG1vc3RseSBjb3B5K3Bhc3RlCisgICAgICAgIGZyb20gV29y
a2VycywgYnV0IHdpdGhvdXQgYW55IG9mIHRoZSB0aHJlYWRpbmcuIFdvcmtsZXQuYWRkTW9kdWxl
IGRvZXMgbm90IHlldCBzdXBwb3J0IGxvYWRpbmcgc2NyaXB0cworICAgICAgICBvciBkb2luZyBj
cm9zcyBvcmlnaW4gY2hlY2tpbmcuIFRoZXJlIGFyZSBxdWl0ZSBhIGZldyBwYXJ0cyBvZiB0aGUg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCBhcGkgdGhhdCBhcmUKKyAgICAgICAgbGVmdCBhcyBBU1NF
UlRfTk9UX1JFQUNIRUQoKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2Jq
ZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0IGNvbnN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20u
Y3BwLgorICAgICAgICAoV2ViQ29yZTo6SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6dmlzaXRB
ZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNQYWludFdvcmtsZXRHbG9i
YWxTY29wZTo6cmVnaXN0ZXJQYWludCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrbGV0
R2xvYmFsU2NvcGVCYXNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtsZXRH
bG9iYWxTY29wZUJhc2U6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZSk6CisgICAgICAgIChXZWJD
b3JlOjpKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6Y2xlYXJET01HdWFyZGVkT2JqZWN0
cyk6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnZpc2l0Q2hp
bGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpkZXN0
cm95KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtsZXRHbG9i
YWxTY29wZUJhc2U6OnN1cHBvcnRzUmljaFNvdXJjZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6
SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzaG91bGRJbnRlcnJ1cHRTY3JpcHQpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzaG91bGRJbnRlcnJ1cHRTY3Jp
cHRCZWZvcmVUaW1lb3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3Bl
QmFzZTo6amF2YVNjcmlwdFJ1bnRpbWVGbGFncyk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToK
KyAgICAgICAgKFdlYkNvcmU6OnRvSlNXb3JrbGV0R2xvYmFsU2NvcGUpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6d3JhcHBlZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnByb3h5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6Y3JlYXRlU3RydWN0dXJlKToK
KyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFN0
YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29w
ZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjU3RhdGVGcm9tV29ya2xldEdsb2JhbFNjb3BlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKElzRE9NR2xvYmFsT2JqZWN0KToKKyAgICAgICAg
KFNob3VsZFVzZUdsb2JhbE9iamVjdFByb3RvdHlwZSk6CisgICAgICAgIChHZW5lcmF0ZUhlYWRl
cik6CisgICAgICAgIChHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZ0ZvckV4
cG9zZWQpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGw6CisgICAgICAgICogY3NzL0NTU1BhaW50
SW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYWludEltYWdlVmFsdWU6Omlt
YWdlKToKKyAgICAgICAgKiBjc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRPTUNTU1BhaW50V29ya2xldDo6ZW5zdXJlUGFpbnRXb3JrbGV0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTUNTU1BhaW50V29ya2xldDo6ZW5zdXJlUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9ET01DU1NQYWludFdvcmtsZXQuaDoKKyAgICAg
ICAgKiBjc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmlkbDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVuc3VyZUNTU1BhaW50V29ya2xldCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVuc3VyZUNTU1BhaW50V29ya2xldEds
b2JhbFNjb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpnZXRDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSk6CisgICAg
ICAgICogZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbjoKKyAgICAgICAgKiBkb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0Ojp2bSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpleGVj
U3RhdGUpOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojppc1dvcmtsZXRHbG9iYWxTY29wZSBj
b25zdCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dlckFnZW50OjppbmplY3Rl
ZFNjcmlwdEZvckV2YWwpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtl
clJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1lQWdlbnQ6
OmluamVjdGVkU2NyaXB0Rm9yRXZhbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3Vz
dG9tUGFpbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludEltYWdlOjpD
dXN0b21QYWludEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50SW1hZ2U6OmRv
Q3VzdG9tUGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1h
Z2UuaDoKKyAgICAgICAgKiB3b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHA6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5j
cHAuCisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludFdvcmtsZXRH
bG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6
ZGV2aWNlUGl4ZWxSYXRpbyk6CisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxT
Y29wZTo6YWRkUmVnaXN0ZXJlZFBhaW50KToKKyAgICAgICAgKiB3b3JrbGV0cy9QYWludFdvcmts
ZXRHbG9iYWxTY29wZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50
V29ya2xldEdsb2JhbFNjb3BlLmguCisgICAgICAgICogd29ya2xldHMvUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUuaWRsLgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXQuY3BwOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
LgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtsZXQ6OldvcmtsZXQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldDo6YWRkTW9kdWxl
KToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwLgorICAgICAgICAqIHdvcmts
ZXRzL1dvcmtsZXQuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUuaWRsLgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRDb25zb2xl
Q2xpZW50LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93
b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0
Q29uc29sZUNsaWVudDo6V29ya2xldENvbnNvbGVDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2xldENvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtsZXRDb25zb2xlQ2xpZW50Ojpjb3VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrbGV0Q29uc29sZUNsaWVudDo6dGltZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0
Q29uc29sZUNsaWVudDo6dGltZUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29s
ZUNsaWVudDo6cHJvZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29sZUNsaWVu
dDo6cHJvZmlsZUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29sZUNsaWVudDo6
dGFrZUhlYXBTbmFwc2hvdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29sZUNsaWVu
dDo6dGltZVN0YW1wKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRDb25zb2xlQ2xpZW50Ojpy
ZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldENvbnNvbGVDbGllbnQ6OnJlY29yZEVu
ZCk6CisgICAgICAgICogd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuaDogQWRkZWQuCisg
ICAgICAgICogd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxTY29wZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6On5Xb3JrbGV0R2xvYmFsU2NvcGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpldmFsdWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmlzSlNFeGVjdXRpb25Gb3JiaWRkZW4gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpkaXNhYmxlRXZhbCk6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmRpc2FibGVXZWJBc3NlbWJs
eSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmNvbXBsZXRlVVJMIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6bG9nRXhjZXB0aW9u
VG9Db25zb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29u
c29sZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjphZGRN
ZXNzYWdlKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmlzUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpp
ZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6
c2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6anNSdW50aW1l
RmxhZ3MgY29uc3QpOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3Jr
bGV0R2xvYmFsU2NvcGUuaWRsOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlLmlkbC4KKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0U2Ny
aXB0Q29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlw
dENvbnRyb2xsZXI6OldvcmtsZXRTY3JpcHRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjp+V29ya2xldFNjcmlwdENvbnRyb2xsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmZvcmJpZEV4ZWN1dGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6aXNFeGVjdXRpb25G
b3JiaWRkZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xs
ZXI6OmRpc2FibGVFdmFsKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRTY3JpcHRDb250cm9s
bGVyOjpkaXNhYmxlV2ViQXNzZW1ibHkpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlw
dENvbnRyb2xsZXI6OmluaXRTY3JpcHRXaXRoU3ViY2xhc3MpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtsZXRTY3JpcHRDb250cm9sbGVyOjpzZXRFeGNlcHRpb24pOgorICAgICAgICAqIHdvcmtsZXRz
L1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V29y
a2xldFNjcmlwdENvbnRyb2xsZXI6OndvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OnZtKToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0SWZOZWVkZWQpOgorCiAyMDE4
LTEwLTI2ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjM3NDU4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRl
eCAxMjliNmM1NDkzMmY5ZTRlODg0NjZkY2Y5MThjYmQ2ZTE3NDY0MmQ1Li4xMTJhMmYxZTVjMjhl
MTI4ZmJiY2JlMTMyZWI5ZDc0MTkwZmEzNzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTQz
LDYgKzE0Myw3IEBAIHNldChXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJD
T1JFX0RJUn0vd29ya2Vycy9zZXJ2aWNlIgogICAgICIke1dFQkNPUkVfRElSfS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dCIKICAgICAiJHtXRUJDT1JFX0RJUn0vd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ciIKKyAgICAiJHtXRUJDT1JFX0RJUn0vd29ya2xldHMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3ht
bCIKICAgICAiJHtXRUJDT1JFX0RJUn0veG1sL3BhcnNlciIKICAgICAiJHtERVJJVkVEX1NPVVJD
RVNfV0VCQ09SRV9ESVJ9IgpAQCAtNTM3LDcgKzUzOCw2IEBAIHNldChXZWJDb3JlX05PTl9TVkdf
SURMX0ZJTEVTCiAgICAgY3NzL0NTU01lZGlhUnVsZS5pZGwKICAgICBjc3MvQ1NTTmFtZXNwYWNl
UnVsZS5pZGwKICAgICBjc3MvQ1NTUGFpbnRDYWxsYmFjay5pZGwKLSAgICBjc3MvQ1NTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUuaWRsCiAgICAgY3NzL0NTU1BhZ2VSdWxlLmlkbAogICAgIGNzcy9D
U1NSdWxlLmlkbAogICAgIGNzcy9DU1NSdWxlTGlzdC5pZGwKQEAgLTkwNiw2ICs5MDYsMTAgQEAg
c2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICB3b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlclVwZGF0ZVZpYUNhY2hlLmlkbAogICAgIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyV2luZG93Q2xpZW50LmlkbAogCisgICAgd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUuaWRsCisgICAgd29ya2xldHMvV29ya2xldC5pZGwKKyAgICB3b3JrbGV0cy9Xb3JrbGV0R2xv
YmFsU2NvcGUuaWRsCisKICAgICB4bWwvRE9NUGFyc2VyLmlkbAogICAgIHhtbC9YTUxIdHRwUmVx
dWVzdC5pZGwKICAgICB4bWwvWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5pZGwKQEAgLTE2ODQs
NiArMTY4OCw4IEBAIHNldChXSU5ET1dfQ09OU1RSVUNUT1JTX0ZJTEUgJHtERVJJVkVEX1NPVVJD
RVNfV0VCQ09SRV9ESVJ9L0RPTVdpbmRvd0NvbnN0cnVjdG9yCiBzZXQoV09SS0VSR0xPQkFMU0NP
UEVfQ09OU1RSVUNUT1JTX0ZJTEUgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L1dvcmtl
ckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCkKIHNldChERURJQ0FURURXT1JLRVJHTE9CQUxT
Q09QRV9DT05TVFJVQ1RPUlNfRklMRSAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsKQogc2V0KFNFUlZJQ0VXT1JL
RVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSAke0RFUklWRURfU09VUkNFU19XRUJDT1JF
X0RJUn0vU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCkKK3NldChXT1JL
TEVUR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09S
RV9ESVJ9L1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwpCitzZXQoUEFJTlRXT1JL
TEVUR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09S
RV9ESVJ9L1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCkKIAogV0VCS0lU
X0ZSQU1FV09SS19ERUNMQVJFKFdlYkNvcmUpCiBXRUJLSVRfSU5DTFVERV9DT05GSUdfRklMRVNf
SUZfRVhJU1RTKCkKQEAgLTE4NjQsNiArMTg3MCw4IEBAIEdFTkVSQVRFX0JJTkRJTkdTKFdlYkNv
cmVCaW5kaW5ncwogICAgICAgICAtLXdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSAk
e1dPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFfQogICAgICAgICAtLWRlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSAke0RFRElDQVRFRFdPUktFUkdMT0JB
TFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFfQogICAgICAgICAtLXNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZUNvbnN0cnVjdG9yc0ZpbGUgJHtTRVJWSUNFV09SS0VSR0xPQkFMU0NPUEVfQ09OU1RSVUNU
T1JTX0ZJTEV9KQorICAgICAgICAtLXdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUg
JHtXT1JLTEVUR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEV9CisgICAgICAgIC0tcGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlICR7UEFJTlRXT1JLTEVUR0xPQkFMU0NP
UEVfQ09OU1RSVUNUT1JTX0ZJTEV9CiAKIEdFTkVSQVRFX0JJTkRJTkdTKFdlYkNvcmVUZXN0U3Vw
cG9ydEJpbmRpbmdzCiAgICAgT1VUUFVUX1NPVVJDRSBXZWJDb3JlVGVzdFN1cHBvcnRfU09VUkNF
UwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNjYzOTBkNDlmYjM5ZDZjNGIyYzQ3
NjI2MDVkMjYwNWZiMmI1YjEwZC4uZWZiZTkzNTQ3MzEyYTE3ZDYxNTZmNWFkNTk5MWFiMGI1ZjE3
YTU2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC04Niw2ICs4Niw3IEBAIFZQ
QVRIID0gXAogICAgICQoV2ViQ29yZSkvd2Vic29ja2V0cyBcCiAgICAgJChXZWJDb3JlKS93b3Jr
ZXJzIFwKICAgICAkKFdlYkNvcmUpL3dvcmtlcnMvc2VydmljZSBcCisgICAgJChXZWJDb3JlKS93
b3JrbGV0cyBcCiAgICAgJChXZWJDb3JlKS94bWwgXAogIwogCkBAIC00NTIsNyArNDUzLDYgQEAg
SlNfQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvY3NzL0NTU05hbWVzcGFjZVJ1bGUu
aWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9DU1NQYWdlUnVsZS5pZGwgXAogICAgICQoV2ViQ29y
ZSkvY3NzL0NTU1BhaW50Q2FsbGJhY2suaWRsIFwKLSAgICAkKFdlYkNvcmUpL2Nzcy9DU1NQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5pZGwgXAogICAgICQoV2ViQ29yZSkvY3NzL0NTU1J1bGUuaWRs
IFwKICAgICAkKFdlYkNvcmUpL2Nzcy9DU1NSdWxlTGlzdC5pZGwgXAogICAgICQoV2ViQ29yZSkv
Y3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaWRsIFwKQEAgLTEwMjQsNiArMTAyNCw5IEBAIEpTX0JJ
TkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uLmlkbCBcCiAgICAgJChXZWJDb3JlKS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlLmlkbCBcCiAgICAgJChXZWJDb3JlKS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5pZGwgXAorCSQoV2ViQ29yZSkvd29ya2xl
dHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaWRsIFwKKyAgICAkKFdlYkNvcmUpL3dvcmtsZXRz
L1dvcmtsZXQuaWRsIFwKKwkkKFdlYkNvcmUpL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5p
ZGwgXAogICAgICQoV2ViQ29yZSkveG1sL0RPTVBhcnNlci5pZGwgXAogICAgICQoV2ViQ29yZSkv
eG1sL1hNTEh0dHBSZXF1ZXN0LmlkbCBcCiAgICAgJChXZWJDb3JlKS94bWwvWE1MSHR0cFJlcXVl
c3RFdmVudFRhcmdldC5pZGwgXApAQCAtMTE1Niw2ICsxMTU5LDcgQEAgYWxsIDogXAogICAgICQo
U1VQUExFTUVOVEFMX0RFUEVOREVOQ1lfRklMRSkgXAogICAgICQoV0lORE9XX0NPTlNUUlVDVE9S
U19GSUxFKSBcCiAgICAgJChXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSkgXAor
CSQoV09SS0xFVEdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFKSBcCiAgICAgJChKU19ET01f
SEVBREVSUykgXAogICAgICQoV0VCX0RPTV9IRUFERVJTKSBcCiAgICAgXApAQCAtMTUwNCw2ICsx
NTA4LDcgQEAgSURMX0lOQ0xVREVTID0gXAogICAgICQoV2ViQ29yZSkvc3ZnIFwKICAgICAkKFdl
YkNvcmUpL3Rlc3RpbmcgXAogICAgICQoV2ViQ29yZSkvd29ya2VycyBcCisgICAgJChXZWJDb3Jl
KS93b3JrbGV0cyBcCiAgICAgJChXZWJDb3JlKS94bWwKIAogSURMX0NPTU1PTl9BUkdTID0gJChJ
RExfSU5DTFVERVM6JT0tLWluY2x1ZGUgJSkgLS13cml0ZS1kZXBlbmRlbmNpZXMgLS1vdXRwdXRE
aXIgLgpAQCAtMTUxNiw2ICsxNTIxLDggQEAgV0lORE9XX0NPTlNUUlVDVE9SU19GSUxFID0gLi9E
T01XaW5kb3dDb25zdHJ1Y3RvcnMuaWRsCiBXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNf
RklMRSA9IC4vV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCiBERURJQ0FURURXT1JL
RVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSA9IC4vRGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGVDb25zdHJ1Y3RvcnMuaWRsCiBTRVJWSUNFV09SS0VSR0xPQkFMU0NPUEVfQ09OU1RSVUNU
T1JTX0ZJTEUgPSAuL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKK1dP
UktMRVRHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSA9IC4vV29ya2xldEdsb2JhbFNjb3Bl
Q29uc3RydWN0b3JzLmlkbAorUEFJTlRXT1JLTEVUR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJ
TEUgPSAuL1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbAogSURMX0ZJTEVT
X1RNUCA9IC4vaWRsX2ZpbGVzLnRtcAogSURMX0FUVFJJQlVURVNfRklMRSA9ICQoV2ViQ29yZSkv
YmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24KIApAQCAtMTUyOCwxMCArMTUzNSwx
MCBAQCBlbmRlZgogCiAkKFNVUFBMRU1FTlRBTF9NQUtFRklMRV9ERVBTKSA6ICQoUFJFUFJPQ0VT
U19JRExTX1NDUklQVFMpICQoSlNfQklORElOR19JRExTKSAkKFBMQVRGT1JNX0ZFQVRVUkVfREVG
SU5FUykgRGVyaXZlZFNvdXJjZXMubWFrZQogCSQoZm9yZWFjaCBmLCQoSlNfQklORElOR19JRExT
KSxAZWNobyAkKGYpPj4kKElETF9GSUxFU19UTVApJChOTCkpCi0JJChQRVJMKSAkKFdlYkNvcmUp
L2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsIC0tZGVmaW5lcyAiJChGRUFUVVJF
X0FORF9QTEFURk9STV9ERUZJTkVTKSAkKEFERElUSU9OQUxfSURMX0RFRklORVMpIExBTkdVQUdF
X0pBVkFTQ1JJUFQiIC0taWRsRmlsZXNMaXN0ICQoSURMX0ZJTEVTX1RNUCkgLS1zdXBwbGVtZW50
YWxEZXBlbmRlbmN5RmlsZSAkKFNVUFBMRU1FTlRBTF9ERVBFTkRFTkNZX0ZJTEUpIC0td2luZG93
Q29uc3RydWN0b3JzRmlsZSAkKFdJTkRPV19DT05TVFJVQ1RPUlNfRklMRSkgLS13b3JrZXJHbG9i
YWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgJChXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNf
RklMRSkgLS1kZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgJChERURJ
Q0FURURXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSkgLS1zZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlICQoU0VSVklDRVdPUktFUkdMT0JBTFNDT1BFX0NP
TlNUUlVDVE9SU19GSUxFKSAtLXN1cHBsZW1lbnRhbE1ha2VmaWxlRGVwcyAkQAorCSQoUEVSTCkg
JChXZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbCAtLWRlZmluZXMg
IiQoRkVBVFVSRV9BTkRfUExBVEZPUk1fREVGSU5FUykgJChBRERJVElPTkFMX0lETF9ERUZJTkVT
KSBMQU5HVUFHRV9KQVZBU0NSSVBUIiAtLWlkbEZpbGVzTGlzdCAkKElETF9GSUxFU19UTVApIC0t
c3VwcGxlbWVudGFsRGVwZW5kZW5jeUZpbGUgJChTVVBQTEVNRU5UQUxfREVQRU5ERU5DWV9GSUxF
KSAtLXdpbmRvd0NvbnN0cnVjdG9yc0ZpbGUgJChXSU5ET1dfQ09OU1RSVUNUT1JTX0ZJTEUpIC0t
d29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlICQoV09SS0VSR0xPQkFMU0NPUEVfQ09O
U1RSVUNUT1JTX0ZJTEUpIC0tZGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNG
aWxlICQoREVESUNBVEVEV09SS0VSR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUpIC0tc2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSAkKFNFUlZJQ0VXT1JLRVJHTE9C
QUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSkgLS13b3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3Rv
cnNGaWxlICQoV09SS0xFVEdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFKSAtLXBhaW50V29y
a2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSAkKFBBSU5UV09SS0xFVEdMT0JBTFNDT1BF
X0NPTlNUUlVDVE9SU19GSUxFKSAtLXN1cHBsZW1lbnRhbE1ha2VmaWxlRGVwcyAkQAogCSQoREVM
RVRFKSAkKElETF9GSUxFU19UTVApCiAKLUpTJS5jcHAgSlMlLmggOiAlLmlkbCAkKEpTX0JJTkRJ
TkdTX1NDUklQVFMpICQoSURMX0FUVFJJQlVURVNfRklMRSkgJChXSU5ET1dfQ09OU1RSVUNUT1JT
X0ZJTEUpICQoV09SS0VSR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUpICQoUExBVEZPUk1f
RkVBVFVSRV9ERUZJTkVTKQorSlMlLmNwcCBKUyUuaCA6ICUuaWRsICQoSlNfQklORElOR1NfU0NS
SVBUUykgJChJRExfQVRUUklCVVRFU19GSUxFKSAkKFdJTkRPV19DT05TVFJVQ1RPUlNfRklMRSkg
JChXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSkgJChXT1JLTEVUR0xPQkFMU0NP
UEVfQ09OU1RSVUNUT1JTX0ZJTEUpICQoUExBVEZPUk1fRkVBVFVSRV9ERUZJTkVTKQogCSQoUEVS
TCkgJChXZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsICQoSURM
X0NPTU1PTl9BUkdTKSAtLWRlZmluZXMgIiQoRkVBVFVSRV9BTkRfUExBVEZPUk1fREVGSU5FUykg
JChBRERJVElPTkFMX0lETF9ERUZJTkVTKSBMQU5HVUFHRV9KQVZBU0NSSVBUIiAtLWdlbmVyYXRv
ciBKUyAtLWlkbEF0dHJpYnV0ZXNGaWxlICQoSURMX0FUVFJJQlVURVNfRklMRSkgLS1zdXBwbGVt
ZW50YWxEZXBlbmRlbmN5RmlsZSAkKFNVUFBMRU1FTlRBTF9ERVBFTkRFTkNZX0ZJTEUpICQ8CiAK
IC1pbmNsdWRlICQoU1VQUExFTUVOVEFMX01BS0VGSUxFX0RFUFMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4
IGFlYjY2MmViMmYwMGUwYzJiZGNlYjVjN2FhMWZlNTQwYjBjMWJiN2MuLjExYjZjMDI0YWRhMGQx
YjUwODAyMGM1NDg4MmJjYzI0OGFkNjUxM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0zODUsNyArMzg1
LDcgQEAgYmluZGluZ3MvanMvSlNET01Db252ZXJ0U3RyaW5ncy5jcHAKIGJpbmRpbmdzL2pzL0pT
RE9NQ29udmVydFdlYkdMLmNwcAogYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5jcHAKIGJpbmRp
bmdzL2pzL0pTRGVwcmVjYXRlZENTU09NVmFsdWVDdXN0b20uY3BwCi1iaW5kaW5ncy9qcy9KU0NT
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcAorYmluZGluZ3MvanMvSlNQYWludFdv
cmtsZXRHbG9iYWxTY29wZUN1c3RvbS5jcHAKIGJpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmNw
cAogYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwCiBiaW5k
aW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwCkBAIC00NzgsNiArNDc4LDcgQEAg
YmluZGluZ3MvanMvSlNXaW5kb3dQcm94eS5jcHAKIGJpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFs
U2NvcGVCYXNlLmNwcAogYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAK
IGJpbmRpbmdzL2pzL0pTV29ya2VyTmF2aWdhdG9yQ3VzdG9tLmNwcAorYmluZGluZ3MvanMvSlNX
b3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcAogYmluZGluZ3MvanMvSlNYTUxEb2N1bWVudEN1c3Rv
bS5jcHAKIGJpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCiBiaW5kaW5ncy9q
cy9KU1hQYXRoTlNSZXNvbHZlckN1c3RvbS5jcHAKQEAgLTYxMyw3ICs2MTQsNiBAQCBjc3MvQ1NT
TmFtZWRJbWFnZVZhbHVlLmNwcAogY3NzL0NTU05hbWVzcGFjZVJ1bGUuY3BwCiBjc3MvQ1NTUGFn
ZVJ1bGUuY3BwCiBjc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmNwcAotY3NzL0NTU1BhaW50V29ya2xl
dEdsb2JhbFNjb3BlLmNwcAogY3NzL0NTU1BlbmRpbmdTdWJzdGl0dXRpb25WYWx1ZS5jcHAKIGNz
cy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKIGNzcy9DU1NQcm9wZXJ0eS5jcHAKQEAgLTIzNzEsNiAr
MjM3MSwxMiBAQCB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmNw
cAogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3Bw
CiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcAogCit3b3JrbGV0cy9X
b3JrbGV0LmNwcAord29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuY3BwCit3b3JrbGV0cy9X
b3JrbGV0R2xvYmFsU2NvcGUuY3BwCit3b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5j
cHAKK3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAorCiB4bWwvRE9NUGFyc2Vy
LmNwcAogeG1sL05hdGl2ZVhQYXRoTlNSZXNvbHZlci5jcHAKIHhtbC9YTUxFcnJvcnMuY3BwCkBA
IC0yNDgwLDcgKzI0ODYsOSBAQCBKU0NTU0tleWZyYW1lc1J1bGUuY3BwCiBKU0NTU01lZGlhUnVs
ZS5jcHAKIEpTQ1NTTmFtZXNwYWNlUnVsZS5jcHAKIEpTQ1NTUGFpbnRDYWxsYmFjay5jcHAKLUpT
Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCitKU1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
LmNwcAorSlNXb3JrbGV0LmNwcAorSlNXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCiBKU0NTU1BhZ2VS
dWxlLmNwcAogSlNDU1NSdWxlLmNwcAogSlNDU1NSdWxlTGlzdC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2YzJkNzFlZmM3
NzE1N2RkZTNkMzQ0ZjJhZmU0Nzk2NzM2MTQ2YTgzLi5hYmIwNDJlOGM0MTgzMDlkY2RmOGFkYjEz
ZjE4NzhjODljN2JhNDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzUyLDE0ICsxMzUyLDE5IEBACiAJCTRCMzQ4MDk0MEVF
RjUwRDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNHLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjM0ODA5MjBFRUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VT
b3VyY2VDRy5oICovOyB9OwogCQk0QjVCREQ5QjIxNjU4QTE1MDBERDQyNjIgLyogQ1NTUGFpbnRD
YWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NEI1QkREOUEyMTY1OEExNTAwREQ0MjYyIC8qIENTU1BhaW50Q2FsbGJhY2suaCAqLzsgfTsKIAkJ
NEI2QjVDQkQyMTY0MEVGRjAwNjAzODE3IC8qIERPTUNTU1BhaW50V29ya2xldC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI2QjVDQjgyMTYzRUMwNzAw
NjAzODE3IC8qIERPTUNTU1BhaW50V29ya2xldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTRCNkI1Q0MwMjE2NDM4NjQwMDYwMzgxNyAvKiBDU1NQ
YWludFdvcmtsZXRHbG9iYWxTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNEI2QjVDQkYyMTY0Mzg2NDAwNjAzODE3IC8qIENTU1BhaW50V29ya2xl
dEdsb2JhbFNjb3BlLmggKi87IH07CisJCTRCNkI1Q0MwMjE2NDM4NjQwMDYwMzgxNyAvKiBQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEI2QjVDQkYyMTY0Mzg2NDAwNjAzODE3IC8qIFBhaW50V29ya2xldEdsb2Jh
bFNjb3BlLmggKi87IH07CiAJCTRCNkU4NzY5MjE3NkQ2OTIwMDQyMEU1RSAvKiBDU1NQYWludElt
YWdlVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRCNkU4NzY4MjE3NkQ2OTIwMDQyMEU1RSAvKiBDU1NQYWludEltYWdlVmFsdWUuaCAqLzsgfTsK
IAkJNEI2RkE2RjQwQzM5RTQ4QzAwMDg3MDExIC8qIFNtYXJ0UmVwbGFjZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI2RkE2RjIwQzM5RTQ4QzAwMDg3
MDExIC8qIFNtYXJ0UmVwbGFjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTRCN0FFNDkzMjE3N0I1NkYwMEM1OTk1OSAvKiBDdXN0b21QYWludElt
YWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjdB
RTQ5MjIxNzdCNTZGMDBDNTk5NTkgLyogQ3VzdG9tUGFpbnRJbWFnZS5oICovOyB9OworCQk0QjdG
OUM1MjIxODNCNUU1MDAxQ0VCQTAgLyogV29ya2xldENvbnNvbGVDbGllbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCN0Y5QzUxMjE4M0I1RTUwMDFD
RUJBMCAvKiBXb3JrbGV0Q29uc29sZUNsaWVudC5oICovOyB9OwogCQk0QkFFOTVCMTBCMkZBOUNF
MDBBRUQ4QTAgLyogRWRpdG9yRGVsZXRlQWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QkFFOTVCMDBCMkZBOUNFMDBBRUQ4QTAgLyogRWRpdG9y
RGVsZXRlQWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNEJEQTNGRkUyMTUxQjZGNTAwRkQ2NjA0IC8qIERPTUNTU0N1c3RvbVByb3BlcnR5
RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNEJEQTNGRjgyMTUxQjZGMjAwRkQ2NjA0IC8qIERPTUNTU0N1c3RvbVByb3BlcnR5RGVzY3Jp
cHRvci5oICovOyB9OwogCQk0QkRBM0ZGRjIxNTFCNkY1MDBGRDY2MDQgLyogRE9NQ1NTUmVnaXN0
ZXJDdXN0b21Qcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNEJEQTNGRjkyMTUxQjZGMzAwRkQ2NjA0IC8qIERPTUNTU1JlZ2lzdGVyQ3VzdG9t
UHJvcGVydHkuaCAqLzsgfTsKIAkJNEJEQTQwMDEyMTUxQjZGNTAwRkQ2NjA0IC8qIENTU1JlZ2lz
dGVyZWRDdXN0b21Qcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEJEQTNGRkIyMTUxQjZGNDAwRkQ2NjA0IC8qIENTU1JlZ2lzdGVyZWRDdXN0
b21Qcm9wZXJ0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTRCREVBMzIwMjE3RUM1NUYwMDUyREZDRCAvKiBXb3JrbGV0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QkRFQTMxRjIxN0VDNTVGMDA1MkRG
Q0QgLyogV29ya2xldC5oICovOyB9OworCQk0QkRFQTMyNTIxN0ZFMkU0MDA1MkRGQ0QgLyogV29y
a2xldEdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0QkRFQTMyNDIxN0ZFMkU0MDA1MkRGQ0QgLyogV29ya2xldEdsb2JhbFNjb3BlLmgg
Ki87IH07CisJCTRCREVBMzI4MjE4MDAzRjcwMDUyREZDRCAvKiBXb3JrbGV0U2NyaXB0Q29udHJv
bGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJE
RUEzMjcyMTgwMDNGNzAwNTJERkNEIC8qIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyLmggKi87IH07
CisJCTRCREVBMzJDMjE4MDMzRUIwMDUyREZDRCAvKiBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCREVBMzJC
MjE4MDMzRUIwMDUyREZDRCAvKiBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuaCAqLzsgfTsKIAkJ
NEQzQjAwQUIyMTVENjlBNzAwNzZCOTgzIC8qIE1lZGlhUmVjb3JkZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDREM0IwMEE5MjE1RDY5QTcwMDc2Qjk4
MyAvKiBNZWRpYVJlY29yZGVyLmggKi87IH07CiAJCTREM0IwMEFGMjE1RDZBNjkwMDc2Qjk4MyAv
KiBCbG9iRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDREM0IwMEFEMjE1RDZBNjkwMDc2Qjk4MyAvKiBCbG9iRXZlbnQuaCAqLzsgfTsKIAkJNERC
NzEzMEQyMTZFQ0I0RDAwOTZBNEREIC8qIE1lZGlhUmVjb3JkZXJFcnJvckV2ZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0REI3MTMwQzIxNkVDMkJE
MDA5NkE0REQgLyogTWVkaWFSZWNvcmRlckVycm9yRXZlbnQuaCAqLzsgfTsKQEAgLTc5MDEsMTYg
Kzc5MDYsMTggQEAKIAkJNEI2QjVDQjYyMTYzREMxQTAwNjAzODE3IC8qIERPTUNTU1BhaW50V29y
a2xldC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gRE9NQ1NTUGFpbnRXb3JrbGV0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNEI2QjVDQjgyMTYzRUMwNzAwNjAzODE3IC8qIERPTUNTU1BhaW50V29ya2xl
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBET01DU1NQYWludFdvcmtsZXQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNEI2QjVDQjkyMTYzRUQzMjAwNjAzODE3IC8qIERPTUNTU1BhaW50V29y
a2xldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01DU1NQYWludFdvcmtsZXQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0QjZCNUNCRTIxNjQzNEZCMDA2MDM4MTcgLyogSlND
U1NQYWludFdvcmtsZXRHbG9iYWxTY29wZUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNEI2QjVDQkYyMTY0Mzg2NDAwNjAzODE3IC8qIENTU1BhaW50V29ya2xldEds
b2JhbFNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTRCNkI1Q0MxMjE2NDM5Q0YwMDYwMzgxNyAv
KiBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NQ
YWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTRCNkI1Q0MzMjE2NDNBOEUwMDYwMzgxNyAvKiBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0QjZCNUNCRTIxNjQzNEZCMDA2MDM4MTcgLyogSlNQYWludFdvcmtsZXRH
bG9iYWxTY29wZUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1BhaW50V29ya2xldEds
b2JhbFNjb3BlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEI2QjVD
QkYyMTY0Mzg2NDAwNjAzODE3IC8qIFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTRCNkI1Q0MxMjE2NDM5Q0YwMDYwMzgxNyAvKiBQYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRCNkI1Q0MzMjE2NDNBOEUwMDYwMzgxNyAvKiBQ
YWludFdvcmtsZXRHbG9iYWxTY29wZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QjZFODc2ODIxNzZENjkyMDA0MjBF
NUUgLyogQ1NTUGFpbnRJbWFnZVZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU1BhaW50SW1hZ2VW
YWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QjZFODc2QjIxNzZEOEExMDA0
MjBFNUUgLyogQ1NTUGFpbnRJbWFnZVZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU1Bh
aW50SW1hZ2VWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCNkZBNkYy
MEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU21hcnRSZXBsYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTRCNkZBNkY2MEMzOUU0QTEwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2VDRi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTbWFydFJlcGxhY2VDRi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCN0FFNDkyMjE3N0I1NkYwMEM1OTk1OSAvKiBDdXN0b21Q
YWludEltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEN1c3RvbVBhaW50SW1hZ2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI3QUU0OTUyMTc3QjYzRTAwQzU5OTU5IC8qIEN1c3RvbVBh
aW50SW1hZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3VzdG9tUGFpbnRJbWFnZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRCN0Y5QzUxMjE4M0I1RTUwMDFDRUJBMCAvKiBX
b3JrbGV0Q29uc29sZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrbGV0Q29uc29sZUNsaWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QjdGOUM1NDIxODNCNjM0MDAxQ0VC
QTAgLyogV29ya2xldENvbnNvbGVDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2xl
dENvbnNvbGVDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QkFFOTVC
MDBCMkZBOUNFMDBBRUQ4QTAgLyogRWRpdG9yRGVsZXRlQWN0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEVkaXRvckRlbGV0ZUFjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0QkRBM0ZGNTIxNTFCNkYwMDBGRDY2MDQgLyogRE9NQ1NTUmVnaXN0ZXJD
dXN0b21Qcm9wZXJ0eS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRE9NQ1NTUmVnaXN0ZXJD
dXN0b21Qcm9wZXJ0eS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCREEzRkY3
MjE1MUI2RjEwMEZENjYwNCAvKiBET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJv
cGVydHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzkxOCw2ICs3OTI1LDE2
IEBACiAJCTRCREEzRkY5MjE1MUI2RjMwMEZENjYwNCAvKiBET01DU1NSZWdpc3RlckN1c3RvbVBy
b3BlcnR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUNTU1JlZ2lzdGVy
Q3VzdG9tUHJvcGVydHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEJEQTNGRkEy
MTUxQjZGMzAwRkQ2NjA0IC8qIERPTUNTU0N1c3RvbVByb3BlcnR5RGVzY3JpcHRvci5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gRE9NQ1NTQ3VzdG9tUHJvcGVydHlEZXNjcmlwdG9yLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEJEQTNGRkIyMTUxQjZGNDAwRkQ2NjA0IC8q
IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNEJERUEzMUMyMTdFQkNGNTAwNTJERkNEIC8qIFdvcmtsZXQuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFdvcmtsZXQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QkRFQTMxRjIxN0VD
NTVGMDA1MkRGQ0QgLyogV29ya2xldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrbGV0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRCREVBMzIzMjE3RUM5NkEwMDUyREZDRCAvKiBXb3Jr
bGV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtsZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0QkRFQTMyNDIxN0ZFMkU0MDA1MkRGQ0QgLyogV29ya2xldEdsb2JhbFNj
b3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtsZXRHbG9iYWxTY29wZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0QkRFQTMyNjIxN0ZFMkZBMDA1MkRGQ0QgLyogV29ya2xldEdsb2Jh
bFNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtsZXRHbG9iYWxTY29wZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRCREVBMzI3MjE4MDAzRjcwMDUyREZDRCAvKiBX
b3JrbGV0U2NyaXB0Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrbGV0U2NyaXB0Q29u
dHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QkRFQTMyOTIxODAwNDBD
MDA1MkRGQ0QgLyogV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0QkRFQTMyQTIxODAxMDcyMDA1MkRGQ0QgLyogV29ya2xldEdsb2JhbFNjb3BlLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBXb3JrbGV0R2xvYmFsU2NvcGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0QkRFQTMyQjIxODAzM0VCMDA1MkRGQ0QgLyogSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0QkRFQTMyRDIxODAzNDA1MDA1MkRGQ0QgLyogSlNXb3JrbGV0R2xv
YmFsU2NvcGVCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV29ya2xldEdsb2JhbFNjb3Bl
QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTREM0IwMEE0MjE1RDYxMDQw
MDc2Qjk4MyAvKiBNZWRpYVJlY29yZGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRp
YVJlY29yZGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEQzQjAwQTYyMTVE
NjQ1QjAwNzZCOTgzIC8qIEJsb2JFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQmxv
YkV2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEQzQjAwQTgyMTVENjlB
NjAwNzZCOTgzIC8qIE1lZGlhUmVjb3JkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTWVkaWFSZWNvcmRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xNTgwMSw2ICsxNTgxOCw3IEBACiAJCQkJQjIyMjc3Q0EwRDAwQkYxRTAwNzFCNzgyIC8q
IHN2ZyAqLywKIAkJCQk0MTdEQTRDRDEzNzM0MjA0MDA3QzU3RkIgLyogdGVzdGluZyAqLywKIAkJ
CQkyRTQzNDYzMTBGNTQ2QTY4MDBCMEYxQkEgLyogd29ya2VycyAqLywKKwkJCQk0QkRFQTMxODIx
N0VCQjg4MDA1MkRGQ0QgLyogd29ya2xldHMgKi8sCiAJCQkJRTFGMDQyNDMwOTgzOTM4OTAwNjY5
NEVBIC8qIHhtbCAqLywKIAkJCQk2NTY1ODBFQzA5RDEyQjIwMDAwRTYxRDcgLyogRGVyaXZlZCBT
b3VyY2VzICovLAogCQkJCTA4OUMxNjY1RkU4NDExNThDMDJBQUMwNyAvKiBSZXNvdXJjZXMgKi8s
CkBAIC0xODAzNiw2ICsxODA1NCwyNiBAQAogCQkJcGF0aCA9IGFuaW1hdGlvbjsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTRCREVBMzE4MjE3RUJCODgwMDUyREZDRCAvKiB3
b3JrbGV0cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJ
NEI2QjVDQzEyMTY0MzlDRjAwNjAzODE3IC8qIFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcCAq
LywKKwkJCQk0QjZCNUNCRjIxNjQzODY0MDA2MDM4MTcgLyogUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUuaCAqLywKKwkJCQk0QjZCNUNDMzIxNjQzQThFMDA2MDM4MTcgLyogUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuaWRsICovLAorCQkJCTRCREVBMzIzMjE3RUM5NkEwMDUyREZDRCAvKiBXb3JrbGV0
LmNwcCAqLywKKwkJCQk0QkRFQTMxRjIxN0VDNTVGMDA1MkRGQ0QgLyogV29ya2xldC5oICovLAor
CQkJCTRCREVBMzFDMjE3RUJDRjUwMDUyREZDRCAvKiBXb3JrbGV0LmlkbCAqLywKKwkJCQk0QjdG
OUM1NDIxODNCNjM0MDAxQ0VCQTAgLyogV29ya2xldENvbnNvbGVDbGllbnQuY3BwICovLAorCQkJ
CTRCN0Y5QzUxMjE4M0I1RTUwMDFDRUJBMCAvKiBXb3JrbGV0Q29uc29sZUNsaWVudC5oICovLAor
CQkJCTRCREVBMzI2MjE3RkUyRkEwMDUyREZDRCAvKiBXb3JrbGV0R2xvYmFsU2NvcGUuY3BwICov
LAorCQkJCTRCREVBMzI0MjE3RkUyRTQwMDUyREZDRCAvKiBXb3JrbGV0R2xvYmFsU2NvcGUuaCAq
LywKKwkJCQk0QkRFQTMyQTIxODAxMDcyMDA1MkRGQ0QgLyogV29ya2xldEdsb2JhbFNjb3BlLmlk
bCAqLywKKwkJCQk0QkRFQTMyOTIxODAwNDBDMDA1MkRGQ0QgLyogV29ya2xldFNjcmlwdENvbnRy
b2xsZXIuY3BwICovLAorCQkJCTRCREVBMzI3MjE4MDAzRjcwMDUyREZDRCAvKiBXb3JrbGV0U2Ny
aXB0Q29udHJvbGxlci5oICovLAorCQkJKTsKKwkJCXBhdGggPSB3b3JrbGV0czsKKwkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTREM0IwMEEwMjE1RDVDMEYwMDc2Qjk4MyAvKiBt
ZWRpYXJlY29yZGVyICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
QEAgLTI0NDA5LDYgKzI0NDQ3LDggQEAKIAkJCQlCQ0JGQjUzQjBEQ0QyOUNGMDAxOUIzRTUgLyog
SlNXaW5kb3dQcm94eS5oICovLAogCQkJCUUxQzM2RDMyMEVCMEEwOTQwMDc0MTBCQyAvKiBKU1dv
cmtlckdsb2JhbFNjb3BlQmFzZS5jcHAgKi8sCiAJCQkJRTFDMzZEMzMwRUIwQTA5NDAwNzQxMEJD
IC8qIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmggKi8sCisJCQkJNEJERUEzMkQyMTgwMzQwNTAw
NTJERkNEIC8qIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5jcHAgKi8sCisJCQkJNEJERUEzMkIy
MTgwMzNFQjAwNTJERkNEIC8qIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5oICovLAogCQkJCTcw
OUEwMUZEMUUzRDBCQ0MwMDZCMEQ0QyAvKiBNb2R1bGVGZXRjaEZhaWx1cmVLaW5kLmggKi8sCiAJ
CQkJNDFCNDU5RUQxRjU1RUJDNzAwMDBGNkZEIC8qIFJlYWRhYmxlU3RyZWFtLmNwcCAqLywKIAkJ
CQk0MUI0NTlEQTFGNENBREI5MDAwMEY2RkQgLyogUmVhZGFibGVTdHJlYW0uaCAqLywKQEAgLTI0
NDQ5LDEyICsyNDQ4OSwxMiBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJN0NEMzQ0MUIxRjMyREUz
MDAwMERDRDQ5IC8qIENhY2hlZCBBdHRyaWJ1dGVzIHcvIEludmFsaWRhdGlvbiAqLywKIAkJCQk3
QzNEOEVFNDFFMDhCQUJFMDAyM0IwODQgLyogR0MgLyBXcmFwcGluZyBPbmx5ICovLAotCQkJCTRC
NkI1Q0JFMjE2NDM0RkIwMDYwMzgxNyAvKiBKU0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3Vz
dG9tLmNwcCAqLywKIAkJCQk5QkM1RjlERjFENUFBRjZBMDAyQjc0OUQgLyogSlNDdXN0b21FbGVt
ZW50UmVnaXN0cnlDdXN0b20uY3BwICovLAogCQkJCUJDRDlDMjVFMEMxN0FBNjcwMDVDOTBBMiAv
KiBKU0RPTVdpbmRvd0N1c3RvbS5jcHAgKi8sCiAJCQkJNjUyRkJCQkIwREUyN0NCNjAwMDFEMzg2
IC8qIEpTRE9NV2luZG93Q3VzdG9tLmggKi8sCiAJCQkJQkM1ODIzRjQwQzBBOThERjAwNTNGMUI1
IC8qIEpTSFRNTEVsZW1lbnRDdXN0b20uY3BwICovLAogCQkJCUJDRTFDNDNGMEQ5ODMwRjQwMDNC
MDJGMiAvKiBKU0xvY2F0aW9uQ3VzdG9tLmNwcCAqLywKKwkJCQk0QjZCNUNCRTIxNjQzNEZCMDA2
MDM4MTcgLyogSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZUN1c3RvbS5jcHAgKi8sCiAJCQkJNDE4
QzM5NUQxQzhGMEFBQjAwNTFDOEEzIC8qIEpTUmVhZGFibGVTdHJlYW1Tb3VyY2VDdXN0b20uY3Bw
ICovLAogCQkJCTQ2QkNCQkJFMjA4NTAwNUIwMDcxMDYzOCAvKiBKU1JlbW90ZURPTVdpbmRvd0N1
c3RvbS5jcHAgKi8sCiAJCQkpOwpAQCAtMjYwNTIsOSArMjYwOTIsNiBAQAogCQkJCTRCNUJERDk5
MjE2NTg4RTUwMERENDI2MiAvKiBDU1NQYWludENhbGxiYWNrLmlkbCAqLywKIAkJCQk0QjZFODc2
QjIxNzZEOEExMDA0MjBFNUUgLyogQ1NTUGFpbnRJbWFnZVZhbHVlLmNwcCAqLywKIAkJCQk0QjZF
ODc2ODIxNzZENjkyMDA0MjBFNUUgLyogQ1NTUGFpbnRJbWFnZVZhbHVlLmggKi8sCi0JCQkJNEI2
QjVDQzEyMTY0MzlDRjAwNjAzODE3IC8qIENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcCAq
LywKLQkJCQk0QjZCNUNCRjIxNjQzODY0MDA2MDM4MTcgLyogQ1NTUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUuaCAqLywKLQkJCQk0QjZCNUNDMzIxNjQzQThFMDA2MDM4MTcgLyogQ1NTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUuaWRsICovLAogCQkJCTk0MTgyNzhDMUQ4Q0FFOTUwMDQ5Mjc2NCAvKiBD
U1NQZW5kaW5nU3Vic3RpdHV0aW9uVmFsdWUuY3BwICovLAogCQkJCTk0MTgyNzhEMUQ4Q0FFOTUw
MDQ5Mjc2NCAvKiBDU1NQZW5kaW5nU3Vic3RpdHV0aW9uVmFsdWUuaCAqLywKIAkJCQlBODBFNkNE
QjBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTUHJpbWl0aXZlVmFsdWUuY3BwICovLApAQCAtMjgwNTUs
NyArMjgwOTIsNiBAQAogCQkJCUE4MEU2RDAwMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NQYWdlUnVs
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEI1QkREOUIyMTY1OEExNTAwREQ0MjYyIC8qIENTU1Bh
aW50Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTRCNkU4NzY5MjE3NkQ2OTIwMDQyMEU1
RSAvKiBDU1NQYWludEltYWdlVmFsdWUuaCBpbiBIZWFkZXJzICovLAotCQkJCTRCNkI1Q0MwMjE2
NDM4NjQwMDYwMzgxNyAvKiBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTQ2RDM3MkUxRDZDQjI5NDAwNzcwODRGIC8qIENTU1BhcnNlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTRBNzk5NTIyMEVFNEIxNDAwQzE5NTY4IC8qIENTU1BhcnNlckNvbnRleHQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTk0OUM3NzAxMUQ2RTFEOTgwMEMwREU0RiAvKiBDU1NQYXJz
ZXJGYXN0UGF0aHMuaCBpbiBIZWFkZXJzICovLApAQCAtMjk3NTgsNiArMjk3OTQsNyBAQAogCQkJ
CUUxQzM2MkVGMEVBRjJBQTkwMDc0MTBCQyAvKiBKU1dvcmtlckxvY2F0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFMTI3MUE1ODBFRUVDREU0MDBGNjEyMTMgLyogSlNXb3JrZXJOYXZpZ2F0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCTUxRjE3NTA2MUYzNThCRjcwMEM3NDk1MCAvKiBKU1dvcmtl
clR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTRCREVBMzJDMjE4MDMzRUIwMDUyREZDRCAvKiBK
U1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDNEM5NkREMUFE
NDQ4MzUwMDM2NUE2MCAvKiBKU1dyaXRhYmxlU3RyZWFtLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
MzU4Q0I3MDFDNTMyNzc1MDBFMEMyRDggLyogSlNYTUxEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMzNDhCRDQwREI3RjgwNDAwNEFCQUI5IC8qIEpTWE1MSHR0cFJlcXVlc3QuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzAxNDQsNiArMzAxODEsNyBAQAogCQkJCTA4ODUwNjdGMTFEQTA0NUIw
MDE4MkI5OCAvKiBQYWludEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTA4ODUwNjgwMTFEQTA0
NUIwMDE4MkI5OCAvKiBQYWludFBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0QjFFMTNFQjIx
NzkzN0IzMDA0MkNGOTggLyogUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuaCBpbiBIZWFkZXJzICov
LAorCQkJCTRCNkI1Q0MwMjE2NDM4NjQwMDYwMzgxNyAvKiBQYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZDRkIwQTE5ODlDQTAwN0ZCOEM1IC8qIFBhaXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MEEzMTJCMDI2RjcwMEMxQTM1OSAvKiBQYW5uZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDFBMTJCMDI2NzYwMEMxQTM1OSAvKiBQYW5uZXJO
b2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTMxNTYyLDYgKzMxNjAwLDEwIEBACiAJCQkJOTdBQUJE
MkQxNEZBMDlENTAwNzQ1N0FFIC8qIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNTRBMEM2ODFEQjgwN0Q5MDAxN0E5MEIgLyogV29ya2VyVG9Q
YWdlRnJvbnRlbmRDaGFubmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUYxNzRGRTFGMzU4OTky
MDBDNzQ5NTAgLyogV29ya2VyVHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNEJERUEzMjAyMTdF
QzU1RjAwNTJERkNEIC8qIFdvcmtsZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTRCN0Y5QzUyMjE4
M0I1RTUwMDFDRUJBMCAvKiBXb3JrbGV0Q29uc29sZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNEJERUEzMjUyMTdGRTJFNDAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxTY29wZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNEJERUEzMjgyMTgwMDNGNzAwNTJERkNEIC8qIFdvcmtsZXRTY3JpcHRD
b250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUyNDA5OUU2NDkyMDA1NkU1ODEg
LyogV3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MTZFNkZFOTFCQkQxMkU1MDAwQTYwNTMgLyogV3JpdGFibGVTdHJlYW1CdWlsdGlucy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDE2RTZGRTgxQkJEMTJERjAwMEE2MDUzIC8qIFdyaXRhYmxlU3RyZWFt
SW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZUN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
Q3VzdG9tLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjlmYTM0NWE1ZTM4ZjM5
ZjNjMWRlZGNkNTNiNmZhMzczODU1MTNiNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkpTQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKLQot
I2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQotCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNp
bmNsdWRlICJKU0NTU1BhaW50Q2FsbGJhY2suaCIKLSNpbmNsdWRlICJKU0RPTUNvbnZlcnRDYWxs
YmFja3MuaCIKLSNpbmNsdWRlICJKU0RPTUNvbnZlcnRTZXF1ZW5jZXMuaCIKLSNpbmNsdWRlIDx3
dGYvU2V0Rm9yU2NvcGUuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotdXNpbmcgbmFtZXNwYWNl
IEpTQzsKLQotc3RhdGljIEpTVmFsdWUgdGhyb3dJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3IoRXhl
Y1N0YXRlJiBzdGF0ZSwgVGhyb3dTY29wZSYgc2NvcGUsIEFTQ0lJTGl0ZXJhbCBtZXNzYWdlKQot
ewotICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7Ci0gICAgdGhyb3dFeGNlcHRpb24oJnN0
YXRlLCBzY29wZSwgY3JlYXRlRE9NRXhjZXB0aW9uKCZzdGF0ZSwgSW52YWxpZE1vZGlmaWNhdGlv
bkVycm9yLCBtZXNzYWdlKSk7Ci0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KLXZvaWQg
SlNDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oSlND
OjpTbG90VmlzaXRvciYgdmlzaXRvcikKLXsKLSAgICBmb3IgKGF1dG8mIHJlZ2lzdGVyZWQgOiB3
cmFwcGVkKCkucGFpbnREZWZpbml0aW9uTWFwKCkudmFsdWVzKCkpCi0gICAgICAgIHJlZ2lzdGVy
ZWQtPnBhaW50Q2FsbGJhY2stPnZpc2l0SlNGdW5jdGlvbih2aXNpdG9yKTsKLX0KLQotLy8gaHR0
cHM6Ly9kcmFmdHMuY3NzLWhvdWRpbmkub3JnL2Nzcy1wYWludC1hcGkvI3JlZ2lzdGVyaW5nLWN1
c3RvbS1wYWludAotSlNWYWx1ZSBKU0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlOjpyZWdpc3Rl
clBhaW50KEV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0gICAgdXNpbmcgUGFpbnREZWZpbml0aW9uID0g
Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OlBhaW50RGVmaW5pdGlvbjsKLQotICAgIENTU1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlJiB3b3JrbGV0R2xvYmFsU2NvcGUgPSB3cmFwcGVkKCk7Ci0g
ICAgVk0mIHZtID0gc3RhdGUudm0oKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7Ci0KLSAgICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMikp
Ci0gICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKLQotICAgIEF0b21pY1N0cmluZyBuYW1lKHN0
YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnRvQXRvbWljU3RyaW5n
KCZzdGF0ZSkpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7Ci0g
ICAgSlNWYWx1ZSBjb25zdHJ1Y3RvclZhbHVlID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSk7
Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKLQotICAgIGlmIChu
YW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2Nv
cGUsICJUaGUgZmlyc3QgYXJndW1lbnQgbXVzdCBub3QgYmUgdGhlIGVtcHR5IHN0cmluZyJfcyk7
Ci0KLSAgICBhdXRvJiBwYWludERlZmluaXRpb25NYXAgPSB3b3JrbGV0R2xvYmFsU2NvcGUucGFp
bnREZWZpbml0aW9uTWFwKCk7Ci0KLSAgICBpZiAocGFpbnREZWZpbml0aW9uTWFwLmNvbnRhaW5z
KG5hbWUpKQotICAgICAgICByZXR1cm4gdGhyb3dJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Ioc3Rh
dGUsIHNjb3BlLCAiVGhpcyBuYW1lIGhhcyBhbHJlYWR5IGJlZW4gcmVnaXN0ZXJlZCJfcyk7Ci0K
LSAgICBWZWN0b3I8U3RyaW5nPiBpbnB1dFByb3BlcnRpZXM7Ci0KLSAgICBKU1ZhbHVlIGlucHV0
UHJvcGVydGllc0l0ZXJhYmxlVmFsdWUgPSBjb25zdHJ1Y3RvclZhbHVlLmdldCgmc3RhdGUsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiaW5wdXRQcm9wZXJ0aWVzIikpOwotICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7Ci0KLSAgICBpZiAoIWlucHV0UHJvcGVy
dGllc0l0ZXJhYmxlVmFsdWUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgaW5wdXRQcm9wZXJ0aWVz
ID0gY29udmVydDxJRExTZXF1ZW5jZTxJRExET01TdHJpbmc+PihzdGF0ZSwgaW5wdXRQcm9wZXJ0
aWVzSXRlcmFibGVWYWx1ZSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1
ZSgpKTsKLQotICAgIC8vIEZJWE1FOiBWYWxpZGF0ZSBpbnB1dCBwcm9wZXJ0aWVzIGhlcmUgKHN0
ZXAgNykuCi0KLSAgICBWZWN0b3I8U3RyaW5nPiBpbnB1dEFyZ3VtZW50czsKLQotICAgIEpTVmFs
dWUgaW5wdXRBcmd1bWVudHNJdGVyYWJsZVZhbHVlID0gY29uc3RydWN0b3JWYWx1ZS5nZXQoJnN0
YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImlucHV0QXJndW1lbnRzIikpOwotICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7Ci0KLSAgICBpZiAoIWlucHV0
QXJndW1lbnRzSXRlcmFibGVWYWx1ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICBpbnB1dEFyZ3Vt
ZW50cyA9IGNvbnZlcnQ8SURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj4oc3RhdGUsIGlucHV0QXJn
dW1lbnRzSXRlcmFibGVWYWx1ZSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNW
YWx1ZSgpKTsKLQotICAgIC8vIEZJWE1FOiBQYXJzZSBzeW50YXggZm9yIGlucHV0QXJndW1lbnRz
IGhlcmUgKHN0ZXBzIDExIGFuZCAxMikuCi0KLSAgICBKU1ZhbHVlIGNvbnRleHRPcHRpb25zVmFs
dWUgPSBjb25zdHJ1Y3RvclZhbHVlLmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
JnZtLCAiY29udGV4dE9wdGlvbnMiKSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
SlNWYWx1ZSgpKTsKLSAgICBVTlVTRURfUEFSQU0oY29udGV4dE9wdGlvbnNWYWx1ZSk7Ci0KLSAg
ICAvLyBGSVhNRTogQ29udmVydCB0byBQYWludFJlbmRlcmluZ0NvbnRleHQyRFNldHRpbmdzIGhl
cmUgKHN0ZXAgMTQpLgotCi0gICAgaWYgKCFjb25zdHJ1Y3RvclZhbHVlLmlzQ29uc3RydWN0b3Io
dm0pKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgIlRoZSBz
ZWNvbmQgYXJndW1lbnQgbXVzdCBiZSBhIGNvbnN0cnVjdG9yIl9zKTsKLQotICAgIEpTVmFsdWUg
cHJvdG90eXBlVmFsdWUgPSBjb25zdHJ1Y3RvclZhbHVlLmdldCgmc3RhdGUsIHZtLnByb3BlcnR5
TmFtZXMtPnByb3RvdHlwZSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1
ZSgpKTsKLQotICAgIGlmICghcHJvdG90eXBlVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsICJUaGUgc2Vjb25kIGFyZ3VtZW50IG11
c3QgaGF2ZSBhIHByb3RvdHlwZSB0aGF0IGlzIGFuIG9iamVjdCJfcyk7Ci0KLSAgICBKU1ZhbHVl
IHBhaW50VmFsdWUgPSBwcm90b3R5cGVWYWx1ZS5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKCZ2bSwgInBhaW50IikpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpT
VmFsdWUoKSk7Ci0KLSAgICBpZiAocGFpbnRWYWx1ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgIlRoZSBjbGFzcyBtdXN0IGhhdmUg
YSBwYWludCBtZXRob2QiX3MpOwotCi0gICAgUmVmUHRyPEpTQ1NTUGFpbnRDYWxsYmFjaz4gcGFp
bnQgPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNDU1NQYWludENhbGxiYWNrPj4oc3Rh
dGUsIHBhaW50VmFsdWUsICpnbG9iYWxPYmplY3QoKSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgSlNWYWx1ZSgpKTsKLQotICAgIGF1dG8gcGFpbnREZWZpbml0aW9uID0gc3RkOjp1
bmlxdWVfcHRyPFBhaW50RGVmaW5pdGlvbj4obmV3IFBhaW50RGVmaW5pdGlvbiB7IG5hbWUsIHBh
aW50LnJlbGVhc2VOb25OdWxsKCksIGlucHV0UHJvcGVydGllcywgaW5wdXRBcmd1bWVudHMgfSk7
Ci0gICAgcGFpbnREZWZpbml0aW9uTWFwLmFkZChuYW1lLCBXVEZNb3ZlKHBhaW50RGVmaW5pdGlv
bikpOwotCi0gICAgLy8gRklYTUU6IGNvbnN0cnVjdCBkb2N1bWVudERlZmluaXRpb24gKHN0ZXAg
MjIpLgotCi0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KLX0KLSNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCmluZGV4IGVi
YjJmNjFkZGNjMzI1YTAxZGM1MjRiMmI1MmViOGIxMTQxNDMwNTguLjdkZGEyNTg2ZWY3YjM1Yzc1
NmIxYjAyMzlmMWMxZjc2MTZkZTMxMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJK
U1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5oIgogI2luY2x1ZGUgIkpTUmVtb3Rl
RE9NV2luZG93LmgiCiAjaW5jbHVkZSAiSlNXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUg
IkpTV29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiUmVqZWN0ZWRQcm9taXNlVHJhY2tl
ci5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTdHJ1
Y3R1cmVkQ2xvbmUuaCIKQEAgLTE5NCw2ICsxOTUsMTAgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogSlNET01HbG9iYWxPYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoaW5oZXJpdHM8SlNXb3JrZXJHbG9iYWxTY29w
ZUJhc2U+KHZtKCkpKQogICAgICAgICByZXR1cm4ganNDYXN0PGNvbnN0IEpTV29ya2VyR2xvYmFs
U2NvcGVCYXNlKj4odGhpcyktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyNpZiBFTkFCTEUo
Q1NTX1BBSU5USU5HX0FQSSkKKyAgICBpZiAoaW5oZXJpdHM8SlNXb3JrbGV0R2xvYmFsU2NvcGVC
YXNlPih2bSgpKSkKKyAgICAgICAgcmV0dXJuIGpzQ2FzdDxjb25zdCBKU1dvcmtsZXRHbG9iYWxT
Y29wZUJhc2UqPih0aGlzKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworI2VuZGlmCiAgICAg
ZGF0YUxvZygiVW5leHBlY3RlZCBnbG9iYWwgb2JqZWN0OiAiLCBKU1ZhbHVlKHRoaXMpLCAiXG4i
KTsKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQYWludFdvcmtsZXRH
bG9iYWxTY29wZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BhaW50
V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYThmOGFiYzE5MGMwNDI0
NGI4NzE4NDU0YTljNjU4NGY5MjZkYTYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZUN1c3RvbS5jcHAKQEAgLTAs
MCArMSwxMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNQYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5oIgorCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisKKyNpbmNsdWRlICJEb2N1bWVu
dC5oIgorI2luY2x1ZGUgIkpTQ1NTUGFpbnRDYWxsYmFjay5oIgorI2luY2x1ZGUgIkpTRE9NQ29u
dmVydENhbGxiYWNrcy5oIgorI2luY2x1ZGUgIkpTRE9NQ29udmVydFNlcXVlbmNlcy5oIgorI2lu
Y2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBu
YW1lc3BhY2UgSlNDOworCitzdGF0aWMgSlNWYWx1ZSB0aHJvd0ludmFsaWRNb2RpZmljYXRpb25F
cnJvcihFeGVjU3RhdGUmIHN0YXRlLCBUaHJvd1Njb3BlJiBzY29wZSwgQVNDSUlMaXRlcmFsIG1l
c3NhZ2UpCit7CisgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKKyAgICB0aHJvd0V4Y2Vw
dGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVET01FeGNlcHRpb24oJnN0YXRlLCBJbnZhbGlkTW9k
aWZpY2F0aW9uRXJyb3IsIG1lc3NhZ2UpKTsKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30K
Kwordm9pZCBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJl
bihKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIGZvciAoYXV0byYgcmVnaXN0ZXJl
ZCA6IHdyYXBwZWQoKS5wYWludERlZmluaXRpb25NYXAoKS52YWx1ZXMoKSkKKyAgICAgICAgcmVn
aXN0ZXJlZC0+cGFpbnRDYWxsYmFjay0+dmlzaXRKU0Z1bmN0aW9uKHZpc2l0b3IpOworfQorCisv
LyBodHRwczovL2RyYWZ0cy5jc3MtaG91ZGluaS5vcmcvY3NzLXBhaW50LWFwaS8jcmVnaXN0ZXJp
bmctY3VzdG9tLXBhaW50CitKU1ZhbHVlIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lz
dGVyUGFpbnQoRXhlY1N0YXRlJiBzdGF0ZSkKK3sKKyAgICB1c2luZyBQYWludERlZmluaXRpb24g
PSBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6UGFpbnREZWZpbml0aW9uOworCisgICAgUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtsZXRHbG9iYWxTY29wZSA9IHdyYXBwZWQoKTsKKyAgICBW
TSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAyKSkKKyAg
ICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworCisgICAgQXRvbWljU3RyaW5nIG5hbWUoc3RhdGUu
dW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJpbmcoJnN0YXRlKS0+dG9BdG9taWNTdHJpbmcoJnN0
YXRlKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKKyAgICBK
U1ZhbHVlIGNvbnN0cnVjdG9yVmFsdWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOworCisgICAgaWYgKG5hbWUu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwg
IlRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IG5vdCBiZSB0aGUgZW1wdHkgc3RyaW5nIl9zKTsKKwor
ICAgIGF1dG8mIHBhaW50RGVmaW5pdGlvbk1hcCA9IHdvcmtsZXRHbG9iYWxTY29wZS5wYWludERl
ZmluaXRpb25NYXAoKTsKKworICAgIGlmIChwYWludERlZmluaXRpb25NYXAuY29udGFpbnMobmFt
ZSkpCisgICAgICAgIHJldHVybiB0aHJvd0ludmFsaWRNb2RpZmljYXRpb25FcnJvcihzdGF0ZSwg
c2NvcGUsICJUaGlzIG5hbWUgaGFzIGFscmVhZHkgYmVlbiByZWdpc3RlcmVkIl9zKTsKKworICAg
IFZlY3RvcjxTdHJpbmc+IGlucHV0UHJvcGVydGllczsKKworICAgIEpTVmFsdWUgaW5wdXRQcm9w
ZXJ0aWVzSXRlcmFibGVWYWx1ZSA9IGNvbnN0cnVjdG9yVmFsdWUuZ2V0KCZzdGF0ZSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmdm0sICJpbnB1dFByb3BlcnRpZXMiKSk7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKKworICAgIGlmICghaW5wdXRQcm9wZXJ0aWVz
SXRlcmFibGVWYWx1ZS5pc1VuZGVmaW5lZCgpKQorICAgICAgICBpbnB1dFByb3BlcnRpZXMgPSBj
b252ZXJ0PElETFNlcXVlbmNlPElETERPTVN0cmluZz4+KHN0YXRlLCBpbnB1dFByb3BlcnRpZXNJ
dGVyYWJsZVZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkp
OworCisgICAgLy8gRklYTUU6IFZhbGlkYXRlIGlucHV0IHByb3BlcnRpZXMgaGVyZSAoc3RlcCA3
KS4KKworICAgIFZlY3RvcjxTdHJpbmc+IGlucHV0QXJndW1lbnRzOworCisgICAgSlNWYWx1ZSBp
bnB1dEFyZ3VtZW50c0l0ZXJhYmxlVmFsdWUgPSBjb25zdHJ1Y3RvclZhbHVlLmdldCgmc3RhdGUs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiaW5wdXRBcmd1bWVudHMiKSk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKKworICAgIGlmICghaW5wdXRBcmd1
bWVudHNJdGVyYWJsZVZhbHVlLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIGlucHV0QXJndW1lbnRz
ID0gY29udmVydDxJRExTZXF1ZW5jZTxJRExET01TdHJpbmc+PihzdGF0ZSwgaW5wdXRBcmd1bWVu
dHNJdGVyYWJsZVZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVl
KCkpOworCisgICAgLy8gRklYTUU6IFBhcnNlIHN5bnRheCBmb3IgaW5wdXRBcmd1bWVudHMgaGVy
ZSAoc3RlcHMgMTEgYW5kIDEyKS4KKworICAgIEpTVmFsdWUgY29udGV4dE9wdGlvbnNWYWx1ZSA9
IGNvbnN0cnVjdG9yVmFsdWUuZ2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0s
ICJjb250ZXh0T3B0aW9ucyIpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1Zh
bHVlKCkpOworICAgIFVOVVNFRF9QQVJBTShjb250ZXh0T3B0aW9uc1ZhbHVlKTsKKworICAgIC8v
IEZJWE1FOiBDb252ZXJ0IHRvIFBhaW50UmVuZGVyaW5nQ29udGV4dDJEU2V0dGluZ3MgaGVyZSAo
c3RlcCAxNCkuCisKKyAgICBpZiAoIWNvbnN0cnVjdG9yVmFsdWUuaXNDb25zdHJ1Y3Rvcih2bSkp
CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCAiVGhlIHNlY29u
ZCBhcmd1bWVudCBtdXN0IGJlIGEgY29uc3RydWN0b3IiX3MpOworCisgICAgSlNWYWx1ZSBwcm90
b3R5cGVWYWx1ZSA9IGNvbnN0cnVjdG9yVmFsdWUuZ2V0KCZzdGF0ZSwgdm0ucHJvcGVydHlOYW1l
cy0+cHJvdG90eXBlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkp
OworCisgICAgaWYgKCFwcm90b3R5cGVWYWx1ZS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgIlRoZSBzZWNvbmQgYXJndW1lbnQgbXVzdCBo
YXZlIGEgcHJvdG90eXBlIHRoYXQgaXMgYW4gb2JqZWN0Il9zKTsKKworICAgIEpTVmFsdWUgcGFp
bnRWYWx1ZSA9IHByb3RvdHlwZVZhbHVlLmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoJnZtLCAicGFpbnQiKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1
ZSgpKTsKKworICAgIGlmIChwYWludFZhbHVlLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCAiVGhlIGNsYXNzIG11c3QgaGF2ZSBhIHBh
aW50IG1ldGhvZCJfcyk7CisKKyAgICBSZWZQdHI8SlNDU1NQYWludENhbGxiYWNrPiBwYWludCA9
IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU0NTU1BhaW50Q2FsbGJhY2s+PihzdGF0ZSwg
cGFpbnRWYWx1ZSwgKmdsb2JhbE9iamVjdCgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBKU1ZhbHVlKCkpOworCisgICAgYXV0byBwYWludERlZmluaXRpb24gPSBzdGQ6OnVuaXF1
ZV9wdHI8UGFpbnREZWZpbml0aW9uPihuZXcgUGFpbnREZWZpbml0aW9uIHsgbmFtZSwgcGFpbnQu
cmVsZWFzZU5vbk51bGwoKSwgaW5wdXRQcm9wZXJ0aWVzLCBpbnB1dEFyZ3VtZW50cyB9KTsKKyAg
ICBwYWludERlZmluaXRpb25NYXAuYWRkKG5hbWUsIFdURk1vdmUocGFpbnREZWZpbml0aW9uKSk7
CisKKyAgICAvLyBGSVhNRTogY29uc3RydWN0IGRvY3VtZW50RGVmaW5pdGlvbiAoc3RlcCAyMiku
CisKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKworfQorI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hODE3N2YzYzFhYjY0MTNjNTRmOWI1MGEwZjQ1OWFlNWRmYTc5YzdiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xv
YmFsU2NvcGVCYXNlLmNwcApAQCAtMCwwICsxLDE1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmgiCisKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5H
X0FQSSkKKworI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgorI2luY2x1ZGUgIkpTRE9NR2xv
YmFsT2JqZWN0VGFzay5oIgorI2luY2x1ZGUgIkpTV29ya2xldEdsb2JhbFNjb3BlLmgiCisjaW5j
bHVkZSAiV29ya2xldEdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29ya2xldFNjcmlwdENvbnRy
b2xsZXIuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1ZUlubGluZXMuaD4KKyNpbmNsdWRlIDx3dGYvTGFu
Z3VhZ2UuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNwYWNlIEpTQzsKKwor
Y29uc3QgQ2xhc3NJbmZvIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6c19pbmZvID0geyAiV29y
a2xldEdsb2JhbFNjb3BlIiwgJkpTRE9NR2xvYmFsT2JqZWN0OjpzX2luZm8sIG51bGxwdHIsIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlKSB9Owor
Citjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6
OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7CisgICAgJnN1cHBvcnRzUmljaFNvdXJjZUlu
Zm8sCisgICAgJnNob3VsZEludGVycnVwdFNjcmlwdCwKKyAgICAmamF2YVNjcmlwdFJ1bnRpbWVG
bGFncywKKyAgICBudWxscHRyLCAvLyBxdWV1ZVRhc2tUb0V2ZW50TG9vcAorICAgICZzaG91bGRJ
bnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0LAorICAgIG51bGxwdHIsIC8vIG1vZHVsZUxvYWRl
ckltcG9ydE1vZHVsZQorICAgIG51bGxwdHIsIC8vIG1vZHVsZUxvYWRlclJlc29sdmUKKyAgICBu
dWxscHRyLCAvLyBtb2R1bGVMb2FkZXJGZXRjaAorICAgIG51bGxwdHIsIC8vIG1vZHVsZUxvYWRl
ckNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVzCisgICAgbnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVy
RXZhbHVhdGUKKyAgICAmcHJvbWlzZVJlamVjdGlvblRyYWNrZXIsCisgICAgJmRlZmF1bHRMYW5n
dWFnZSwKKyAgICBudWxscHRyLCAvLyBjb21waWxlU3RyZWFtaW5nCisgICAgbnVsbHB0ciwgLy8g
aW5zdGFudGlhdGVTdHJlYW1pbmcKK307CisKK0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6SlNX
b3JrbGV0R2xvYmFsU2NvcGVCYXNlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0
dXJlLCBSZWZQdHI8V29ya2xldEdsb2JhbFNjb3BlPiYmIGltcGwpCisgICAgOiBKU0RPTUdsb2Jh
bE9iamVjdCh2bSwgc3RydWN0dXJlLCBub3JtYWxXb3JsZCh2bSksICZzX2dsb2JhbE9iamVjdE1l
dGhvZFRhYmxlKQorICAgICwgbV93cmFwcGVkKFdURk1vdmUoaW1wbCkpCit7Cit9CisKK3ZvaWQg
SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTUHJveHkq
IHByb3h5KQoreworICAgIG1fcHJveHkuc2V0KHZtLCB0aGlzLCBwcm94eSk7CisKKyAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSwgbV9wcm94eS5nZXQoKSk7CisgICAgQVNTRVJUKGluaGVyaXRz
KHZtLCBpbmZvKCkpKTsKK30KKwordm9pZCBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OmNsZWFy
RE9NR3VhcmRlZE9iamVjdHMoKQoreworICAgIGF1dG8gZ3VhcmRlZE9iamVjdHMgPSBtX2d1YXJk
ZWRPYmplY3RzOworICAgIGZvciAoYXV0byYgZ3VhcmRlZCA6IGd1YXJkZWRPYmplY3RzKQorICAg
ICAgICBndWFyZGVkLT5jbGVhcigpOworfQorCit2b2lkIEpTV29ya2xldEdsb2JhbFNjb3BlQmFz
ZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorewor
ICAgIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1dvcmts
ZXRHbG9iYWxTY29wZUJhc2UqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0
LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3Byb3h5KTsKK30K
Kwordm9pZCBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQor
eworICAgIHN0YXRpY19jYXN0PEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZSo+KGNlbGwpLT5KU1dv
cmtsZXRHbG9iYWxTY29wZUJhc2U6On5KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UoKTsKK30KKwor
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93cmFwcGVkLmdldCgpOwor
fQorCitib29sIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6c3VwcG9ydHNSaWNoU291cmNlSW5m
byhjb25zdCBKU0dsb2JhbE9iamVjdCogb2JqZWN0KQoreworICAgIHJldHVybiBKU0dsb2JhbE9i
amVjdDo6c3VwcG9ydHNSaWNoU291cmNlSW5mbyhvYmplY3QpOworfQorCitib29sIEpTV29ya2xl
dEdsb2JhbFNjb3BlQmFzZTo6c2hvdWxkSW50ZXJydXB0U2NyaXB0KGNvbnN0IEpTR2xvYmFsT2Jq
ZWN0KiBvYmplY3QpCit7CisgICAgcmV0dXJuIEpTR2xvYmFsT2JqZWN0OjpzaG91bGRJbnRlcnJ1
cHRTY3JpcHQob2JqZWN0KTsKK30KKworYm9vbCBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnNo
b3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQoY29uc3QgSlNHbG9iYWxPYmplY3QqIG9i
amVjdCkKK3sKKyAgICByZXR1cm4gSlNHbG9iYWxPYmplY3Q6OnNob3VsZEludGVycnVwdFNjcmlw
dEJlZm9yZVRpbWVvdXQob2JqZWN0KTsKK30KKworUnVudGltZUZsYWdzIEpTV29ya2xldEdsb2Jh
bFNjb3BlQmFzZTo6amF2YVNjcmlwdFJ1bnRpbWVGbGFncyhjb25zdCBKU0dsb2JhbE9iamVjdCog
b2JqZWN0KQoreworICAgIGNvbnN0IEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZSogdGhpc09iamVj
dCA9IGpzQ2FzdDxjb25zdCBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UqPihvYmplY3QpOworICAg
IHJldHVybiB0aGlzT2JqZWN0LT5tX3dyYXBwZWQtPmpzUnVudGltZUZsYWdzKCk7Cit9CisKK0pT
VmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiwgV29ya2xldEds
b2JhbFNjb3BlJiB3b3JrbGV0R2xvYmFsU2NvcGUpCit7CisgICAgcmV0dXJuIHRvSlMoZXhlYywg
d29ya2xldEdsb2JhbFNjb3BlKTsKK30KKworSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSosIFdvcmts
ZXRHbG9iYWxTY29wZSYgd29ya2xldEdsb2JhbFNjb3BlKQoreworICAgIFdvcmtsZXRTY3JpcHRD
b250cm9sbGVyKiBzY3JpcHQgPSB3b3JrbGV0R2xvYmFsU2NvcGUuc2NyaXB0KCk7CisgICAgaWYg
KCFzY3JpcHQpCisgICAgICAgIHJldHVybiBqc051bGwoKTsKKyAgICBKU1dvcmtsZXRHbG9iYWxT
Y29wZSogY29udGV4dFdyYXBwZXIgPSBzY3JpcHQtPndvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIo
KTsKKyAgICBBU1NFUlQoY29udGV4dFdyYXBwZXIpOworICAgIHJldHVybiBjb250ZXh0V3JhcHBl
ci0+cHJveHkoKTsKK30KKworSlNXb3JrbGV0R2xvYmFsU2NvcGUqIHRvSlNXb3JrbGV0R2xvYmFs
U2NvcGUoVk0mIHZtLCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGlmICghdmFsdWUuaXNPYmplY3Qo
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0lu
Zm8gPSBhc09iamVjdCh2YWx1ZSktPmNsYXNzSW5mbyh2bSk7CisKKyAgICBpZiAoY2xhc3NJbmZv
ID09IEpTUHJveHk6OmluZm8oKSkKKyAgICAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNXb3Jr
bGV0R2xvYmFsU2NvcGUqPih2bSwganNDYXN0PEpTUHJveHkqPihhc09iamVjdCh2YWx1ZSkpLT50
YXJnZXQoKSk7CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dv
cmtsZXRHbG9iYWxTY29wZUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29y
a2xldEdsb2JhbFNjb3BlQmFzZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM1NTgyN2I5OGQzZGNiY2U2NDVlYmVj
NTY4MzViMGQzMTMyZGE3MzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuaApAQCAtMCwwICsxLDg1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisKKyNpbmNsdWRlICJKU0RPTUdsb2Jh
bE9iamVjdC5oIgorI2luY2x1ZGUgIkpTRE9NV3JhcHBlci5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIEpTV29ya2xldEdsb2JhbFNjb3BlOworY2xhc3MgV29ya2xldEdsb2JhbFNj
b3BlOworCitjbGFzcyBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UgOiBwdWJsaWMgSlNET01HbG9i
YWxPYmplY3QgeworICAgIHR5cGVkZWYgSlNET01HbG9iYWxPYmplY3QgQmFzZTsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CisKKyAgICBERUNMQVJFX0lO
Rk87CisKKyAgICBXb3JrbGV0R2xvYmFsU2NvcGUmIHdyYXBwZWQoKSBjb25zdCB7IHJldHVybiAq
bV93cmFwcGVkOyB9CisgICAgSlNDOjpKU1Byb3h5KiBwcm94eSgpIGNvbnN0IHsgQVNTRVJUKG1f
cHJveHkpOyByZXR1cm4gbV9wcm94eS5nZXQoKTsgfQorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKKworICAgIHN0YXRpYyBKU0M6OlN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICBy
ZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUs
IEpTQzo6VHlwZUluZm8oSlNDOjpHbG9iYWxPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGlu
Zm8oKSk7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IEpTQzo6R2xvYmFsT2JqZWN0TWV0aG9k
VGFibGUgc19nbG9iYWxPYmplY3RNZXRob2RUYWJsZTsKKworICAgIHN0YXRpYyBib29sIHN1cHBv
cnRzUmljaFNvdXJjZUluZm8oY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHN0YXRp
YyBib29sIHNob3VsZEludGVycnVwdFNjcmlwdChjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7
CisgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dChjb25z
dCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIEpTQzo6UnVudGltZUZsYWdzIGph
dmFTY3JpcHRSdW50aW1lRmxhZ3MoY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHN0
YXRpYyB2b2lkIHF1ZXVlVGFza1RvRXZlbnRMb29wKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBSZWY8
SlNDOjpNaWNyb3Rhc2s+JiYpOworCisgICAgdm9pZCBjbGVhckRPTUd1YXJkZWRPYmplY3RzKCk7
CisKK3Byb3RlY3RlZDoKKyAgICBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UoSlNDOjpWTSYsIEpT
Qzo6U3RydWN0dXJlKiwgUmVmUHRyPFdvcmtsZXRHbG9iYWxTY29wZT4mJik7CisgICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihKU0M6OlZNJiwgSlNDOjpKU1Byb3h5Kik7CisKKyAgICBzdGF0aWMgdm9p
ZCB2aXNpdENoaWxkcmVuKEpTQzo6SlNDZWxsKiwgSlNDOjpTbG90VmlzaXRvciYpOworCitwcml2
YXRlOgorICAgIFJlZlB0cjxXb3JrbGV0R2xvYmFsU2NvcGU+IG1fd3JhcHBlZDsKKyAgICBKU0M6
OldyaXRlQmFycmllcjxKU0M6OkpTUHJveHk+IG1fcHJveHk7Cit9OworCisvLyBSZXR1cm5zIGEg
SlNXb3JrbGV0R2xvYmFsU2NvcGUgb3IganNOdWxsKCkKKy8vIEFsd2F5cyBpZ25vcmVzIHRoZSBl
eGVjU3RhdGUgYW5kIHBhc3NlZCBnbG9iYWxPYmplY3QsIFdvcmtsZXRHbG9iYWxTY29wZSBpcyBp
dHNlbGYgYSBnbG9iYWxPYmplY3QgYW5kIHdpbGwgYWx3YXlzIHVzZSBpdHMgb3duIHByb3RvdHlw
ZSBjaGFpbi4KK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxP
YmplY3QqLCBXb3JrbGV0R2xvYmFsU2NvcGUmKTsKK2lubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhK
U0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgV29y
a2xldEdsb2JhbFNjb3BlKiBzY29wZSkgeyByZXR1cm4gc2NvcGUgPyB0b0pTKGV4ZWMsIGdsb2Jh
bE9iamVjdCwgKnNjb3BlKSA6IEpTQzo6anNOdWxsKCk7IH0KK0pTQzo6SlNWYWx1ZSB0b0pTKEpT
Qzo6RXhlY1N0YXRlKiwgV29ya2xldEdsb2JhbFNjb3BlJik7CitpbmxpbmUgSlNDOjpKU1ZhbHVl
IHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIFdvcmtsZXRHbG9iYWxTY29wZSogc2NvcGUpIHsg
cmV0dXJuIHNjb3BlID8gdG9KUyhleGVjLCAqc2NvcGUpIDogSlNDOjpqc051bGwoKTsgfQorCitK
U1dvcmtsZXRHbG9iYWxTY29wZSogdG9KU1dvcmtsZXRHbG9iYWxTY29wZShKU0M6OlZNJiwgSlND
OjpKU1ZhbHVlKTsKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwCmluZGV4IGVlZTgzOWNjNDI2NGZiZTRhMjlk
ZmI5OTFiNWZkZTUwZDYwYmFiMWMuLmExYmExNDUyODM0ZDhjYTNjZTZhZjQ3NzExZTk3MGIzODhj
YzFiMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKQEAg
LTM1LDExICszNSwxNCBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSlNET01XaW5k
b3dCYXNlLmgiCiAjaW5jbHVkZSAiSlNXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIkpT
V29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlBhZ2Uu
aCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFs
U2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAi
V29ya2xldEdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29ya2xldFNjcmlwdENvbnRyb2xsZXIu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9DYWxsRnJhbWUuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0dsb2JhbE9iamVjdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0
cm9uZ0lubGluZXMuaD4KQEAgLTk1LDkgKzk4LDE2IEBAIEpTQzo6RXhlY1N0YXRlKiBleGVjU3Rh
dGVGcm9tUGFnZShET01XcmFwcGVyV29ybGQmIHdvcmxkLCBQYWdlKiBwYWdlKQogICAgIHJldHVy
biBwYWdlID8gcGFnZS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZ2xvYmFsT2JqZWN0KHdvcmxkKS0+
Z2xvYmFsRXhlYygpIDogbnVsbHB0cjsKIH0KIAotSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZUZy
b21Xb3JrZXJHbG9iYWxTY29wZShXb3JrZXJHbG9iYWxTY29wZSogd29ya2VyR2xvYmFsU2NvcGUp
CitKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3BlKFdvcmtlckds
b2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKIHsKLSAgICByZXR1cm4gd29ya2VyR2xvYmFs
U2NvcGUtPnNjcmlwdCgpLT53b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIoKS0+Z2xvYmFsRXhlYygp
OworICAgIHJldHVybiB3b3JrZXJHbG9iYWxTY29wZS5zY3JpcHQoKS0+d29ya2VyR2xvYmFsU2Nv
cGVXcmFwcGVyKCktPmdsb2JhbEV4ZWMoKTsKIH0KIAorI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdf
QVBJKQorSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZUZyb21Xb3JrbGV0R2xvYmFsU2NvcGUoV29y
a2xldEdsb2JhbFNjb3BlJiB3b3JrbGV0R2xvYmFsU2NvcGUpCit7CisgICAgcmV0dXJuIHdvcmts
ZXRHbG9iYWxTY29wZS5zY3JpcHQoKS0+d29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcigpLT5nbG9i
YWxFeGVjKCk7Cit9CisjZW5kaWYKKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dFN0YXRlLmgKaW5kZXggNzQ0MjFmZDk1YmExNzc1NmViODljMDA0MjZjMzNmYjU0NTQ5ODM5MC4u
MTUzODRhNzExZjM1NmNlZTQ3OGNhOTllMjU1NWIxZWVhMjQ4MmFkMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCkBAIC00NCw2ICs0NCw5IEBAIGNsYXNzIE5vZGU7
CiBjbGFzcyBQYWdlOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFdvcmtl
ckdsb2JhbFNjb3BlOworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorY2xhc3MgV29ya2xl
dEdsb2JhbFNjb3BlOworI2VuZGlmCiAKIERPTVdpbmRvdyogZG9tV2luZG93RnJvbUV4ZWNTdGF0
ZShKU0M6OkV4ZWNTdGF0ZSopOwogRnJhbWUqIGZyYW1lRnJvbUV4ZWNTdGF0ZShKU0M6OkV4ZWNT
dGF0ZSopOwpAQCAtNTMsNiArNTYsOSBAQCBKU0M6OkV4ZWNTdGF0ZSogbWFpbldvcmxkRXhlY1N0
YXRlKEZyYW1lKik7CiAKIEpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tTm9kZShET01XcmFw
cGVyV29ybGQmLCBOb2RlKik7CiBXRUJDT1JFX0VYUE9SVCBKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0
YXRlRnJvbVBhZ2UoRE9NV3JhcHBlcldvcmxkJiwgUGFnZSopOwotSlNDOjpFeGVjU3RhdGUqIGV4
ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZShXb3JrZXJHbG9iYWxTY29wZSopOworSlNDOjpF
eGVjU3RhdGUqIGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZShXb3JrZXJHbG9iYWxTY29w
ZSYpOworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorSlNDOjpFeGVjU3RhdGUqIGV4ZWNT
dGF0ZUZyb21Xb3JrbGV0R2xvYmFsU2NvcGUoV29ya2xldEdsb2JhbFNjb3BlJik7CisjZW5kaWYK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCmluZGV4IDFjOTM4NTllY2MxNjg3NGMwYzA3ZTM3M2Iy
OTczYzQyNTA1ZGVhODAuLjI5MmZkOTc5MjQ0OWQzNzdkMjc1YzI4MjRiZTE1MmRjYTZmZDY5MWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFt
ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVz
LmgKQEAgLTUxLDcgKzUxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKENyZWRl
bnRpYWwpIFwKICAgICBtYWNybyhDcmVkZW50aWFsc0NvbnRhaW5lcikgXAogICAgIG1hY3JvKENT
U0FuaW1hdGlvbikgXAotICAgIG1hY3JvKENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlKSBcCiAg
ICAgbWFjcm8oQ1NTVHJhbnNpdGlvbikgXAogICAgIG1hY3JvKEN1c3RvbUVsZW1lbnRSZWdpc3Ry
eSkgXAogICAgIG1hY3JvKERhdGFiYXNlKSBcCkBAIC0xMjMsNiArMTIyLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIG1hY3JvKFNRTFJlc3VsdFNldCkgXAogICAgIG1hY3JvKFNRTFJlc3Vs
dFNldFJvd0xpc3QpIFwKICAgICBtYWNybyhTUUxUcmFuc2FjdGlvbikgXAorICAgIG1hY3JvKFBh
aW50V29ya2xldEdsb2JhbFNjb3BlKSBcCiAgICAgbWFjcm8oUGVyZm9ybWFuY2VFbnRyeSkgXAog
ICAgIG1hY3JvKFBlcmZvcm1hbmNlRW50cnlMaXN0KSBcCiAgICAgbWFjcm8oUGVyZm9ybWFuY2VN
YXJrKSBcCkBAIC0yMTAsNiArMjEwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3Jv
KFdlYktpdE1lZGlhS2V5cykgXAogICAgIG1hY3JvKFdlYlNvY2tldCkgXAogICAgIG1hY3JvKFdp
bmRvd0NsaWVudCkgXAorICAgIG1hY3JvKFdvcmtsZXQpIFwKKyAgICBtYWNybyhXb3JrbGV0R2xv
YmFsU2NvcGUpIFwKICAgICBtYWNybyhXcml0YWJsZVN0cmVhbSkgXAogICAgIG1hY3JvKFhNTEh0
dHBSZXF1ZXN0KSBcCiAgICAgbWFjcm8oYXBwZW5kRnJvbUpTKSBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDQ4ZmNlN2Jj
MTZhODgwZDYzZjQzMmEwMThmMWZlZTJmNjdiZjViZGMuLjliZGRkZWQzMDE2NzFmYjQ0Nzk1YjMz
MmVmZmUxMmVhMDM1YTgzNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC00OTcsNyArNDk3LDcgQEAgc3ViIEdldEN1c3Rv
bUlzUmVhY2hhYmxlCiBzdWIgSXNET01HbG9iYWxPYmplY3QKIHsKICAgICBteSAkaW50ZXJmYWNl
ID0gc2hpZnQ7Ci0gICAgcmV0dXJuICRpbnRlcmZhY2UtPnR5cGUtPm5hbWUgZXEgIkRPTVdpbmRv
dyIgfHwgJGludGVyZmFjZS0+dHlwZS0+bmFtZSBlcSAiUmVtb3RlRE9NV2luZG93IiB8fCAkY29k
ZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldvcmtlckdsb2JhbFNj
b3BlIikgfHwgJGludGVyZmFjZS0+dHlwZS0+bmFtZSBlcSAiVGVzdEdsb2JhbE9iamVjdCI7Cisg
ICAgcmV0dXJuICRpbnRlcmZhY2UtPnR5cGUtPm5hbWUgZXEgIkRPTVdpbmRvdyIgfHwgJGludGVy
ZmFjZS0+dHlwZS0+bmFtZSBlcSAiUmVtb3RlRE9NV2luZG93IiB8fCAkY29kZUdlbmVyYXRvci0+
SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldvcmtlckdsb2JhbFNjb3BlIikgfHwgJGNv
ZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrbGV0R2xvYmFs
U2NvcGUiKSB8fCAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIGVxICJUZXN0R2xvYmFsT2JqZWN0IjsK
IH0KIAogc3ViIFNob3VsZFVzZUdsb2JhbE9iamVjdFByb3RvdHlwZQpAQCAtNTA2LDYgKzUwNiw3
IEBAIHN1YiBTaG91bGRVc2VHbG9iYWxPYmplY3RQcm90b3R5cGUKIAogICAgICMgRm9yIHdvcmtl
cnMsIHRoZSBnbG9iYWwgb2JqZWN0IGlzIGEgRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuCiAg
ICAgcmV0dXJuIDAgaWYgJGludGVyZmFjZS0+dHlwZS0+bmFtZSBlcSAiV29ya2VyR2xvYmFsU2Nv
cGUiOworICAgIHJldHVybiAwIGlmICRpbnRlcmZhY2UtPnR5cGUtPm5hbWUgZXEgIldvcmtsZXRH
bG9iYWxTY29wZSI7CiAKICAgICByZXR1cm4gSXNET01HbG9iYWxPYmplY3QoJGludGVyZmFjZSk7
CiB9CkBAIC0yNTM3LDcgKzI1MzgsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSwgcHJveHkp
O1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHJldHVybiBwdHI7
XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB9XG5cbiIpOwotICAgIH0g
ZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiV29y
a2VyR2xvYmFsU2NvcGUiKSkgeworICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0
c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiV29ya2VyR2xvYmFsU2NvcGUiKSB8fCAkY29kZUdlbmVy
YXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldvcmtsZXRHbG9iYWxTY29wZSIp
KSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljICRjbGFzc05hbWUq
IGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmPCRpbXBs
VHlwZT4mJiBpbXBsLCBKU0M6OkpTUHJveHkqIHByb3h5KVxuIik7CiAgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAge1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgICAgICRjbGFzc05hbWUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8
JGNsYXNzTmFtZT4odm0uaGVhcCkpICR7Y2xhc3NOYW1lfSh2bSwgc3RydWN0dXJlLCBXVEZNb3Zl
KGltcGwpKTtcbiIpOwpAQCAtMjg0NSw3ICsyODQ2LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAg
ICAgIyBDb25zdHJ1Y3RvcgogICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IiB8
fCAkaW50ZXJmYWNlTmFtZSBlcSAiUmVtb3RlRE9NV2luZG93IikgewogICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgICRjbGFzc05hbWUoSlNDOjpWTSYsIEpTQzo6U3RydWN0dXJlKiwg
UmVmPCRpbXBsVHlwZT4mJiwgSlNXaW5kb3dQcm94eSopO1xuIik7Ci0gICAgfSBlbHNpZiAoJGNv
ZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrZXJHbG9iYWxT
Y29wZSIpKSB7CisgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNl
KCRpbnRlcmZhY2UsICJXb3JrZXJHbG9iYWxTY29wZSIpIHx8ICRjb2RlR2VuZXJhdG9yLT5Jbmhl
cml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiV29ya2xldEdsb2JhbFNjb3BlIikpIHsKICAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAkY2xhc3NOYW1lKEpTQzo6Vk0mLCBKU0M6OlN0
cnVjdHVyZSosIFJlZjwkaW1wbFR5cGU+JiYpO1xuIik7CiAgICAgfSBlbHNpZiAoIU5lZWRzSW1w
bGVtZW50YXRpb25DbGFzcygkaW50ZXJmYWNlKSkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiICAgICRjbGFzc05hbWUoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYp
O1xuXG4iKTsKQEAgLTI4NTUsNyArMjg1Niw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAg
aWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciIHx8ICRpbnRlcmZhY2VOYW1lIGVxICJS
ZW1vdGVET01XaW5kb3ciKSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiwgSlNXaW5kb3dQcm94eSopO1xuIik7Ci0gICAgfSBl
bHNpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3Jr
ZXJHbG9iYWxTY29wZSIpKSB7CisgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRz
SW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrZXJHbG9iYWxTY29wZSIpIHx8ICRjb2RlR2VuZXJh
dG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiV29ya2xldEdsb2JhbFNjb3BlIikp
IHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KEpTQzo6Vk0mLCBKU0M6OkpTUHJveHkqKTtcbiIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7XG4i
KTsKQEAgLTM2NjIsNiArMzY2Myw4IEBAIHN1YiBHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRp
b25hbFN0cmluZ0ZvckV4cG9zZWQKICAgICAgICAgcHVzaChAJGNvbmp1bmN0cywgImpzQ2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KCIgLiAkZ2xvYmFsT2JqZWN0UHRyIC4gIiktPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVudCgpIik7CiAgICAgfSBlbHNpZiAoJGV4cG9zZWQgZXEg
IldvcmtlciIpIHsKICAgICAgICAgcHVzaChAJGNvbmp1bmN0cywgImpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KCIgLiAkZ2xvYmFsT2JqZWN0UHRyIC4gIiktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+aXNXb3JrZXJHbG9iYWxTY29wZSgpIik7CisgICAgfSBlbHNpZiAoJGV4cG9zZWQgZXEg
IldvcmtsZXQiKSB7CisgICAgICAgIHB1c2goQCRjb25qdW5jdHMsICJqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPigiIC4gJGdsb2JhbE9iamVjdFB0ciAuICIpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPmlzV29ya2xldEdsb2JhbFNjb3BlKCkiKTsKICAgICB9IGVsc2UgewogICAgICAgICBh
c3NlcnQoIlVucmVjb2duaXplZCB2YWx1ZSAnIiAuIER1bXBlcigkY29udGV4dC0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57RXhwb3NlZH0pIC4gIicgZm9yIHRoZSBFeHBvc2VkIGV4dGVuZGVkIGF0dHJp
YnV0ZSBvbiAnIiAuIHJlZigkY29udGV4dCkgLiAiJy4iKTsKICAgICB9CkBAIC00MjUyLDcgKzQy
NTUsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICA6ICRwYXJlbnRDbGFzc05hbWUodm0sIHN0cnVjdHVyZSwgV1RGTW92ZShpbXBs
KSwgcHJveHkpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwotICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJh
dG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiV29ya2VyR2xvYmFsU2NvcGUiKSkg
eworICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJm
YWNlLCAiV29ya2VyR2xvYmFsU2NvcGUiKSB8fCAkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRl
cmZhY2UoJGludGVyZmFjZSwgIldvcmtsZXRHbG9iYWxTY29wZSIpKSB7CiAgICAgICAgIEFkZElu
Y2x1ZGVzRm9ySW1wbGVtZW50YXRpb25UeXBlSW5JbXBsKCRpbnRlcmZhY2VOYW1lKTsKICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIke2NsYXNzTmFtZX06OiRjbGFzc05hbWUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmPCRpbXBsVHlwZT4mJiBpbXBsKVxuIik7CiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIDogJHBhcmVudENsYXNzTmFtZSh2bSwgc3RydWN0dXJl
LCBXVEZNb3ZlKGltcGwpKVxuIik7CkBAIC00MjczLDcgKzQyNzYsNyBAQCBzdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtjbGFzc05h
bWV9OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTV2luZG93UHJveHkqIHByb3h5KVxuIik7CiAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBwcm94eSk7XG5cbiIpOwotICAgIH0g
ZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiV29y
a2VyR2xvYmFsU2NvcGUiKSkgeworICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0
c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiV29ya2VyR2xvYmFsU2NvcGUiKSB8fCAkY29kZUdlbmVy
YXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldvcmtsZXRHbG9iYWxTY29wZSIp
KSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFtZX06OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgSlNQcm94eSogcHJveHkpXG4iKTsKICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0sIHByb3h5KTtcblxuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsCmluZGV4IDNlMDVjN2I0OTY4MmJl
ZTY0ZjY4OThiNGRmNDQ4NDI1MTM0MzhiNTEuLjQ2Y2QzYjhmOWNhOWMxMWFhNTFmYmQ5ZmE4NzYw
ZmE3YjBmZDkzMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
cHJlcHJvY2Vzcy1pZGxzLnBsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
cHJlcHJvY2Vzcy1pZGxzLnBsCkBAIC0zNiw2ICszNiw4IEBAIG15ICR3aW5kb3dDb25zdHJ1Y3Rv
cnNGaWxlOwogbXkgJHdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZTsKIG15ICRkZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGU7CiBteSAkc2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZTsKK215ICR3b3JrbGV0R2xvYmFsU2NvcGVDb25z
dHJ1Y3RvcnNGaWxlOworbXkgJHBhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmls
ZTsKIG15ICRzdXBwbGVtZW50YWxNYWtlZmlsZURlcHM7CiAKIEdldE9wdGlvbnMoJ2RlZmluZXM9
cycgPT4gXCRkZWZpbmVzLApAQCAtNDYsNiArNDgsOCBAQCBHZXRPcHRpb25zKCdkZWZpbmVzPXMn
ID0+IFwkZGVmaW5lcywKICAgICAgICAgICAgJ3dvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3Jz
RmlsZT1zJyA9PiBcJHdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSwKICAgICAgICAg
ICAgJ2RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZT1zJyA9PiBcJGRl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSwKICAgICAgICAgICAgJ3Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGU9cycgPT4gXCRzZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlLAorICAgICAgICAgICAnd29ya2xldEdsb2Jh
bFNjb3BlQ29uc3RydWN0b3JzRmlsZT1zJyA9PiBcJHdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVj
dG9yc0ZpbGUsCisgICAgICAgICAgICdwYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9y
c0ZpbGU9cycgPT4gXCRwYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUsCiAg
ICAgICAgICAgICdzdXBwbGVtZW50YWxNYWtlZmlsZURlcHM9cycgPT4gXCRzdXBwbGVtZW50YWxN
YWtlZmlsZURlcHMpOwogCiBkaWUoJ011c3Qgc3BlY2lmeSAjZGVmaW5lIG1hY3JvcyB1c2luZyAt
LWRlZmluZXMuJykgdW5sZXNzIGRlZmluZWQoJGRlZmluZXMpOwpAQCAtNTQsNiArNTgsOCBAQCBk
aWUoJ011c3Qgc3BlY2lmeSBhbiBvdXRwdXQgZmlsZSB1c2luZyAtLXdpbmRvd0NvbnN0cnVjdG9y
c0ZpbGUuJykgdW5sZXNzIGRlZmluZQogZGllKCdNdXN0IHNwZWNpZnkgYW4gb3V0cHV0IGZpbGUg
dXNpbmcgLS13b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUuJykgdW5sZXNzIGRlZmlu
ZWQoJHdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSk7CiBkaWUoJ011c3Qgc3BlY2lm
eSBhbiBvdXRwdXQgZmlsZSB1c2luZyAtLWRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3JzRmlsZS4nKSB1bmxlc3MgZGVmaW5lZCgkZGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVD
b25zdHJ1Y3RvcnNGaWxlKTsKIGRpZSgnTXVzdCBzcGVjaWZ5IGFuIG91dHB1dCBmaWxlIHVzaW5n
IC0tc2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZS4nKSB1bmxlc3MgZGVm
aW5lZCgkc2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSk7CitkaWUoJ011
c3Qgc3BlY2lmeSBhbiBvdXRwdXQgZmlsZSB1c2luZyAtLXdvcmtsZXRHbG9iYWxTY29wZUNvbnN0
cnVjdG9yc0ZpbGUuJykgdW5sZXNzIGRlZmluZWQoJHdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVj
dG9yc0ZpbGUpOworZGllKCdNdXN0IHNwZWNpZnkgYW4gb3V0cHV0IGZpbGUgdXNpbmcgLS1wYWlu
dFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUuJykgdW5sZXNzIGRlZmluZWQoJHBh
aW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSk7CiBkaWUoJ011c3Qgc3BlY2lm
eSB0aGUgZmlsZSBsaXN0aW5nIGFsbCBJRExzIHVzaW5nIC0taWRsRmlsZXNMaXN0LicpIHVubGVz
cyBkZWZpbmVkKCRpZGxGaWxlc0xpc3QpOwogCiAkc3VwcGxlbWVudGFsRGVwZW5kZW5jeUZpbGUg
PSBDeWd3aW5QYXRoSWZOZWVkZWQoJHN1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlKTsKQEAgLTYx
LDYgKzY3LDggQEAgJHdpbmRvd0NvbnN0cnVjdG9yc0ZpbGUgPSBDeWd3aW5QYXRoSWZOZWVkZWQo
JHdpbmRvd0NvbnN0cnVjdG9yc0ZpbGUpOwogJHdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3Jz
RmlsZSA9IEN5Z3dpblBhdGhJZk5lZWRlZCgkd29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNG
aWxlKTsKICRkZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgPSBDeWd3
aW5QYXRoSWZOZWVkZWQoJGRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmls
ZSk7CiAkc2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSA9IEN5Z3dpblBh
dGhJZk5lZWRlZCgkc2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSk7Cisk
d29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSA9IEN5Z3dpblBhdGhJZk5lZWRlZCgk
d29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSk7CiskcGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGVDb25zdHJ1Y3RvcnNGaWxlID0gQ3lnd2luUGF0aElmTmVlZGVkKCRwYWludFdvcmtsZXRH
bG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOwogJHN1cHBsZW1lbnRhbE1ha2VmaWxlRGVwcyA9
IEN5Z3dpblBhdGhJZk5lZWRlZCgkc3VwcGxlbWVudGFsTWFrZWZpbGVEZXBzKTsKIAogb3BlbiBG
SCwgIjwgJGlkbEZpbGVzTGlzdCIgb3IgZGllICJDYW5ub3Qgb3BlbiAkaWRsRmlsZXNMaXN0XG4i
OwpAQCAtODAsNiArODgsOCBAQCBteSAkd2luZG93Q29uc3RydWN0b3JzQ29kZSA9ICIiOwogbXkg
JHdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzQ29kZSA9ICIiOwogbXkgJGRlZGljYXRlZFdv
cmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzQ29kZSA9ICIiOwogbXkgJHNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZUNvbnN0cnVjdG9yc0NvZGUgPSAiIjsKK215ICR3b3JrbGV0R2xvYmFsU2NvcGVD
b25zdHJ1Y3RvcnNDb2RlID0gIiI7CitteSAkcGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1
Y3RvcnNDb2RlID0gIiI7CiAKICMgR2V0IHJpZCBvZiBkdXBsaWNhdGVzIGluIGlkbEZpbGVzIGFy
cmF5LgogbXkgJWlkbEZpbGVIYXNoID0gbWFwIHsgJF8sIDEgfSBAaWRsRmlsZXM7CkBAIC0xNDMs
NiArMTUzLDEwIEBAIGZvcmVhY2ggbXkgJGlkbEZpbGUgKHNvcnQga2V5cyAlaWRsRmlsZUhhc2gp
IHsKICAgICAgICAgICAgICAgICAgICAgJGRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3JzQ29kZSAuPSAkYXR0cmlidXRlQ29kZTsKICAgICAgICAgICAgICAgICB9IGVsc2lmICgk
Z2xvYmFsQ29udGV4dCBlcSAiU2VydmljZVdvcmtlciIpIHsKICAgICAgICAgICAgICAgICAgICAg
JHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0NvZGUgLj0gJGF0dHJpYnV0ZUNv
ZGU7CisgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGdsb2JhbENvbnRleHQgZXEgIldvcmtsZXQi
KSB7CisgICAgICAgICAgICAgICAgICAgICR3b3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnND
b2RlIC49ICRhdHRyaWJ1dGVDb2RlOworICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRnbG9iYWxD
b250ZXh0IGVxICJQYWludFdvcmtsZXQiKSB7CisgICAgICAgICAgICAgICAgICAgICRwYWludFdv
cmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0NvZGUgLj0gJGF0dHJpYnV0ZUNvZGU7CiAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgZGllICJVbnN1cHBvcnRl
ZCBnbG9iYWwgY29udGV4dCAnJGdsb2JhbENvbnRleHQnIHVzZWQgaW4gW0V4cG9zZWRdIGF0ICRp
ZGxGaWxlIjsKICAgICAgICAgICAgICAgICB9CkBAIC0xNTcsNiArMTcxLDggQEAgR2VuZXJhdGVQ
YXJ0aWFsSW50ZXJmYWNlKCJET01XaW5kb3ciLCAkd2luZG93Q29uc3RydWN0b3JzQ29kZSwgJHdp
bmRvd0NvbnN0cnVjdG8KIEdlbmVyYXRlUGFydGlhbEludGVyZmFjZSgiV29ya2VyR2xvYmFsU2Nv
cGUiLCAkd29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNDb2RlLCAkd29ya2VyR2xvYmFsU2Nv
cGVDb25zdHJ1Y3RvcnNGaWxlKTsKIEdlbmVyYXRlUGFydGlhbEludGVyZmFjZSgiRGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGUiLCAkZGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rv
cnNDb2RlLCAkZGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlKTsKIEdl
bmVyYXRlUGFydGlhbEludGVyZmFjZSgiU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIiwgJHNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0NvZGUsICRzZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGVDb25zdHJ1Y3RvcnNGaWxlKTsKK0dlbmVyYXRlUGFydGlhbEludGVyZmFjZSgiV29ya2xl
dEdsb2JhbFNjb3BlIiwgJHdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0NvZGUsICR3b3Jr
bGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlKTsKK0dlbmVyYXRlUGFydGlhbEludGVyZmFj
ZSgiUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUiLCAkcGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25z
dHJ1Y3RvcnNDb2RlLCAkcGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlKTsK
IAogIyBSZXNvbHZlcyBwYXJ0aWFsIGludGVyZmFjZXMgYW5kIGltcGxlbWVudHMgZGVwZW5kZW5j
aWVzLgogZm9yZWFjaCBteSAkaWRsRmlsZSAoc29ydCBrZXlzICVzdXBwbGVtZW50YWxEZXBlbmRl
bmNpZXMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludEltYWdlVmFs
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50SW1hZ2VWYWx1ZS5jcHAKaW5kZXgg
YTY5MGU0MWQ3NjcxZGVhMDM1MzIxZmFmZTdiN2ZhOTcxMWFiZGE1Mi4uNjE2NDEzNTg2Y2Y2NzY0
OTdiMWEyM2U2MDAxYzI2NTZjMGU3YzY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhaW50SW1hZ2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50
SW1hZ2VWYWx1ZS5jcHAKQEAgLTI5LDggKzI5LDggQEAKIAogI2lmIEVOQUJMRShDU1NfUEFJTlRJ
TkdfQVBJKQogCi0jaW5jbHVkZSAiQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNs
dWRlICJDdXN0b21QYWludEltYWdlLmgiCisjaW5jbHVkZSAiUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUuaCIKICNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oPgogCkBAIC01MCw4ICs1MCwxMCBAQCBSZWZQdHI8SW1hZ2U+IENTU1BhaW50
SW1hZ2VWYWx1ZTo6aW1hZ2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyRWxlbWVudCwgY29uc3QgRmxv
YQogewogICAgIGlmIChzaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgYXV0byYgc2VsZWN0ZWRHbG9iYWxTY29wZSA9IHJlbmRlckVsZW1lbnQuZG9jdW1lbnQoKS5l
bnN1cmVDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSgpOwotICAgIGF1dG8qIHJlZ2lzdHJhdGlv
biA9IHNlbGVjdGVkR2xvYmFsU2NvcGUucGFpbnREZWZpbml0aW9uTWFwKCkuZ2V0KG1fbmFtZSk7
CisgICAgYXV0byogc2VsZWN0ZWRHbG9iYWxTY29wZSA9IHJlbmRlckVsZW1lbnQuZG9jdW1lbnQo
KS5nZXRDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSgpOworICAgIGlmICghc2VsZWN0ZWRHbG9i
YWxTY29wZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0byogcmVnaXN0cmF0aW9u
ID0gc2VsZWN0ZWRHbG9iYWxTY29wZS0+cGFpbnREZWZpbml0aW9uTWFwKCkuZ2V0KG1fbmFtZSk7
CiAKICAgICBpZiAoIXJlZ2lzdHJhdGlvbikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQ5NzNjZDM4ZDY4ZTQzY2M1Mjg1YzU4MTA0YjI1
ZGRiNmUxMGMyOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJDU1NQYWludFdv
cmtsZXRHbG9iYWxTY29wZS5oIgotCi0jaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmPENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlPiBDU1NQ
YWludFdvcmtsZXRHbG9iYWxTY29wZTo6Y3JlYXRlKCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSgpKTsKLX0KLQotQ1NTUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGU6OkNTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlKCkKLXsKLX0KLQotZG91Ymxl
IENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlOjpkZXZpY2VQaXhlbFJhdGlvKCkKLXsKLSAgICBy
ZXR1cm4gMS4wOwotfQotCi1FeGNlcHRpb25Pcjx2b2lkPiBDU1NQYWludFdvcmtsZXRHbG9iYWxT
Y29wZTo6YWRkUmVnaXN0ZXJlZFBhaW50KCkKLXsKLSAgICByZXR1cm4geyB9OwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MjNiMGQ5ZDhmM2YwMjM3ZTI3OTJmY2VmN2U0NzdmZTU4YzYyYTMwOC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQotCi0jaW5jbHVkZSAiQ1NTUGFpbnRDYWxs
YmFjay5oIgotI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
LQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIEpTVmFsdWU7Ci0KLX0gLy8gbmFtZXNwYWNlIEpT
QwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIENTU1BhaW50V29ya2xldEdsb2JhbFNj
b3BlIDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+IHsKLXB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlPiBjcmVhdGUo
KTsKLQotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGFkZFJlZ2lzdGVyZWRQYWludCgpOwotICAgIGRv
dWJsZSBkZXZpY2VQaXhlbFJhdGlvKCk7Ci0KLSAgICBzdHJ1Y3QgUGFpbnREZWZpbml0aW9uIHsK
LSAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nIG5hbWU7Ci0gICAgICAgIGNvbnN0IFJlZjxDU1NQ
YWludENhbGxiYWNrPiBwYWludENhbGxiYWNrOwotICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5n
PiBpbnB1dFByb3BlcnRpZXM7Ci0gICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+IGlucHV0QXJn
dW1lbnRzOwotICAgIH07Ci0KLSAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFBh
aW50RGVmaW5pdGlvbj4+JiBwYWludERlZmluaXRpb25NYXAoKSB7IHJldHVybiBtX3BhaW50RGVm
aW5pdGlvbk1hcDsgfQotCi1wcml2YXRlOgotICAgIENTU1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
KCk7Ci0KLSAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFBhaW50RGVmaW5pdGlv
bj4+IG1fcGFpbnREZWZpbml0aW9uTWFwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuaWRsIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50V29ya2xldEdsb2JhbFNj
b3BlLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTUzNmMwYTQxMzk1YzBhMWEw
ODRmYTFmN2ViNWE2YzJiYTcyYTYxZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotLyoKLSogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSoKLSogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0q
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotKiBhcmUgbWV0OgotKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0qIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0qICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSoKLSogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0qIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0qIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgotKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0qIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0q
LwotCi1bCi0gICAgRW5hYmxlZEF0UnVudGltZT1DU1NQYWludGluZ0FQSSwKLSAgICBDb25kaXRp
b25hbD1DU1NfUEFJTlRJTkdfQVBJLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi0g
ICAgSlNDdXN0b21NYXJrRnVuY3Rpb24sCi0gICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0Ci1d
IGludGVyZmFjZSBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSB7Ci0gICAgW0N1c3RvbSwgTWF5
VGhyb3dFeGNlcHRpb25dIHZvaWQgcmVnaXN0ZXJQYWludChET01TdHJpbmcgbmFtZSwgRnVuY3Rp
b24gcGFpbnRDdG9yKTsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJs
ZSBkZXZpY2VQaXhlbFJhdGlvOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9E
T01DU1NQYWludFdvcmtsZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29y
a2xldC5jcHAKaW5kZXggMTIwNjgxYjhkNzYxMzQ2ZGE3MmFjYzVhMGIyMjY5ZTE0MDczNTg5Yi4u
ZGNlYjdlZTliNjA0OTBkYzAxODFlNWM2ZjE4NjVkMDJjYmNmMmFjYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5jcHAKQEAgLTI4LDE2ICsyOCwxNyBAQAogCiAjaWYg
RU5BQkxFKENTU19QQUlOVElOR19BUEkpCiAKLSNpbmNsdWRlICJDU1NQYWludFdvcmtsZXRHbG9i
YWxTY29wZS5oIgogI2luY2x1ZGUgIkRPTUNTU05hbWVzcGFjZS5oIgogI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCisjaW5jbHVkZSAiV29ya2xldC5oIgorCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUmIERPTUNTU1BhaW50V29ya2xldDo6ZW5zdXJlUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoRG9j
dW1lbnQmIGRvY3VtZW50KQorV29ya2xldCYgRE9NQ1NTUGFpbnRXb3JrbGV0OjplbnN1cmVQYWlu
dFdvcmtsZXQoRG9jdW1lbnQmIGRvY3VtZW50KQogewotICAgIHJldHVybiBkb2N1bWVudC5lbnN1
cmVDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSgpOworICAgIHJldHVybiBkb2N1bWVudC5lbnN1
cmVDU1NQYWludFdvcmtsZXQoKTsKIH0KIAogRE9NQ1NTUGFpbnRXb3JrbGV0KiBET01DU1NQYWlu
dFdvcmtsZXQ6OmZyb20oRE9NQ1NTTmFtZXNwYWNlJiBjc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9N
Q1NTUGFpbnRXb3JrbGV0LmgKaW5kZXggZWU1ZWZiMTFkMTliYjYyZjM4ZTU2ZTEwZTVkNjE2M2Nj
OWQ4ZmIzZi4uYTJjYjM3M2Y2YTAzNDEzZDEyMWI0MDE0MzRiZmQ5ZWY5OWE5NzZmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuaApAQCAtMzUsMTQgKzM1LDE0IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgQ1NTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGU7CitjbGFzcyBXb3JrbGV0OwogY2xhc3MgRE9NQ1NTTmFtZXNwYWNlOwog
CiBjbGFzcyBET01DU1NQYWludFdvcmtsZXQgZmluYWwgOiBwdWJsaWMgU3VwcGxlbWVudDxET01D
U1NOYW1lc3BhY2U+IHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBET01DU1NQYWludFdvcmtsZXQo
RE9NQ1NTTmFtZXNwYWNlJikgeyB9CiAKLSAgICBzdGF0aWMgQ1NTUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUmIGVuc3VyZVBhaW50V29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50Jik7CisgICAgc3Rh
dGljIFdvcmtsZXQmIGVuc3VyZVBhaW50V29ya2xldChEb2N1bWVudCYpOwogCiBwcml2YXRlOgog
ICAgIHN0YXRpYyBET01DU1NQYWludFdvcmtsZXQqIGZyb20oRE9NQ1NTTmFtZXNwYWNlJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuaWRsCmluZGV4IDE5MGNkYjQ1ZWM3
NTNkZWJiZTk2ZjhkODMzODEzZjQ0NjM1YWU4YzMuLmFhNTllNWVlMmRlOTE4MWQzMDQ3ZmUzNDgw
NGZlNTI3YTI2Zjc0MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWlu
dFdvcmtsZXQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQu
aWRsCkBAIC0yNyw2ICsyNyw1IEBACiAgICAgRW5hYmxlZEF0UnVudGltZT1DU1NQYWludGluZ0FQ
SSwKICAgICBDb25kaXRpb25hbD1DU1NfUEFJTlRJTkdfQVBJLAogXSBwYXJ0aWFsIGludGVyZmFj
ZSBET01DU1NOYW1lc3BhY2UgewotICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5vdCBhY3R1YWxseSBw
YXJ0IG9mIHRoZSBzcGVjLCBhbmQgc2hvdWxkIGJlIHJlcGxhY2VkIHdoZW4gd29ya2xldHMgYXJl
IGltcGxlbWVudGVkCi0gICAgW0ltcGxlbWVudGVkQXM9ZW5zdXJlUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUsQ2FsbFdpdGg9RG9jdW1lbnRdIHN0YXRpYyByZWFkb25seSBhdHRyaWJ1dGUgQ1NTUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGUgcGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU7CisgICAgW0ltcGxl
bWVudGVkQXM9ZW5zdXJlUGFpbnRXb3JrbGV0LENhbGxXaXRoPURvY3VtZW50XSBzdGF0aWMgcmVh
ZG9ubHkgYXR0cmlidXRlIFdvcmtsZXQgcGFpbnRXb3JrbGV0OwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCmluZGV4IDdiNDgwOGJlNmEzODY3NTEwMDgwYzBiYTQwMmMxNzFmMWU1ODAzMDguLjE2
NjQzZWQxOWM3MDkyMjEyNzczYTBlMzAzYmRkZTJkN2FlODc2MjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcApAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIkNEQVRBU2VjdGlvbi5oIgogI2lu
Y2x1ZGUgIkNTU0FuaW1hdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJDU1NGb250U2VsZWN0
b3IuaCIKLSNpbmNsdWRlICJDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUg
IkNTU1N0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJDU1NTdHlsZVNoZWV0LmgiCiAjaW5j
bHVkZSAiQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIgpAQCAtMTQwLDYgKzEzOSw3IEBACiAjaW5jbHVk
ZSAiUGFnZUNvbnNvbGVDbGllbnQuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNpbmNsdWRl
ICJQYWdlVHJhbnNpdGlvbkV2ZW50LmgiCisjaW5jbHVkZSAiUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxvY2FsZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCkBAIC0yMTcs
NiArMjE3LDcgQEAKICNpbmNsdWRlICJXZWJBbmltYXRpb24uaCIKICNpbmNsdWRlICJXaGVlbEV2
ZW50LmgiCiAjaW5jbHVkZSAiV2luZG93RmVhdHVyZXMuaCIKKyNpbmNsdWRlICJXb3JrbGV0Lmgi
CiAjaW5jbHVkZSAiWE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJYTUxEb2N1bWVudFBhcnNlci5o
IgogI2luY2x1ZGUgIlhNTE5TTmFtZXMuaCIKQEAgLTgzNzcsMTEgKzgzNzgsMTYgQEAgdm9pZCBE
b2N1bWVudDo6ZnJhbWVXYXNEaXNjb25uZWN0ZWRGcm9tT3duZXIoKQogfQogCiAjaWYgRU5BQkxF
KENTU19QQUlOVElOR19BUEkpCi1DU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSYgRG9jdW1lbnQ6
OmVuc3VyZUNTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlKCkKK1dvcmtsZXQmIERvY3VtZW50Ojpl
bnN1cmVDU1NQYWludFdvcmtsZXQoKQogewotICAgIGlmICghbV9DU1NQYWludFdvcmtsZXRHbG9i
YWxTY29wZSkKLSAgICAgICAgbV9DU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSA9IENTU1BhaW50
V29ya2xldEdsb2JhbFNjb3BlOjpjcmVhdGUoKTsKLSAgICByZXR1cm4gKm1fQ1NTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGU7CisgICAgaWYgKCFtX0NTU1BhaW50V29ya2xldCkKKyAgICAgICAgbV9D
U1NQYWludFdvcmtsZXQgPSBXb3JrbGV0OjpjcmVhdGUoKTsKKyAgICByZXR1cm4gKm1fQ1NTUGFp
bnRXb3JrbGV0OworfQorCit2b2lkIERvY3VtZW50OjpzZXRDU1NQYWludFdvcmtsZXRHbG9iYWxT
Y29wZShSZWY8UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+JiYgc2NvcGUpCit7CisgICAgbV9jc3NQ
YWludFdvcmtsZXRHbG9iYWxTY29wZSA9IFdURk1vdmUoc2NvcGUpOwogfQogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKaW5kZXggODU0MmMxNTU2NzE3ZjI3YjYwODkwN2QyZDE0ZWUxNGNkYTI0
OGZkOC4uNGI0NjIzMzQzZmNkZTBiNGIyYjQ5OTdiNGEzNDMwYmRlMWU5YmM1MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKQEAgLTg4LDcgKzg4LDYgQEAgY2xhc3MgQXR0cjsKIGNsYXNzIENEQVRBU2Vj
dGlvbjsKIGNsYXNzIENTU0N1c3RvbVByb3BlcnR5VmFsdWU7CiBjbGFzcyBDU1NGb250U2VsZWN0
b3I7Ci1jbGFzcyBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZTsKIGNsYXNzIENTU1N0eWxlRGVj
bGFyYXRpb247CiBjbGFzcyBDU1NTdHlsZVNoZWV0OwogY2xhc3MgQ2FjaGVkQ1NTU3R5bGVTaGVl
dDsKQEAgLTE1NCw2ICsxNTMsNyBAQCBjbGFzcyBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRz
OwogY2xhc3MgTm9kZUZpbHRlcjsKIGNsYXNzIE5vZGVJdGVyYXRvcjsKIGNsYXNzIFBhZ2U7Citj
bGFzcyBQYWludFdvcmtsZXRHbG9iYWxTY29wZTsKIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsK
IGNsYXNzIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjsKIGNsYXNzIFF1YWxpZmllZE5hbWU7CkBAIC0x
OTQsNiArMTk0LDcgQEAgY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0OwogY2xhc3MgV2ViR1BV
UmVuZGVyaW5nQ29udGV4dDsKIGNsYXNzIFdlYk1ldGFsUmVuZGVyaW5nQ29udGV4dDsKIGNsYXNz
IFdpbmRvd1Byb3h5OworY2xhc3MgV29ya2xldDsKIGNsYXNzIFhQYXRoRXZhbHVhdG9yOwogY2xh
c3MgWFBhdGhFeHByZXNzaW9uOwogY2xhc3MgWFBhdGhOU1Jlc29sdmVyOwpAQCAtMTM1MCw2ICsx
MzUxLDEwIEBAIHB1YmxpYzoKICAgICAvLyBDYWxsZXJzIHNob3VsZCB0cnkgdG8gY3JlYXRlIHRo
ZSBDb25zb2xlTWVzc2FnZSB0aGVtc2VsdmVzLgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRk
Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIgPSAwKSBmaW5hbDsKIAor
ICAgIC8vIFRoZSBmb2xsb3dpbmcgYWRkTWVzc2FnZSBmdW5jdGlvbiBpcyBkZXByZWNhdGVkLgor
ICAgIC8vIENhbGxlcnMgc2hvdWxkIHRyeSB0byBjcmVhdGUgdGhlIENvbnNvbGVNZXNzYWdlIHRo
ZW1zZWx2ZXMuCisgICAgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZl
bCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgdW5zaWdu
ZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBSZWZQdHI8SW5zcGVjdG9yOjpT
Y3JpcHRDYWxsU3RhY2s+JiYsIEpTQzo6RXhlY1N0YXRlKiA9IG51bGxwdHIsIHVuc2lnbmVkIGxv
bmcgcmVxdWVzdElkZW50aWZpZXIgPSAwKSBmaW5hbDsKKwogICAgIFNlY3VyaXR5T3JpZ2luJiBz
ZWN1cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuICpTZWN1cml0eUNvbnRleHQ6OnNlY3VyaXR5
T3JpZ2luKCk7IH0KICAgICBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gdG9wRG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpOyB9CiAKQEAgLTE1MTcsNyAr
MTUyMiw5IEBAIHB1YmxpYzoKICAgICBib29sIHJlZ2lzdGVyQ1NTUHJvcGVydHkoQ1NTUmVnaXN0
ZXJlZEN1c3RvbVByb3BlcnR5JiYpOwogCiAjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCi0g
ICAgQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUmIGVuc3VyZUNTU1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlKCk7CisgICAgV29ya2xldCYgZW5zdXJlQ1NTUGFpbnRXb3JrbGV0KCk7CisgICAgUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGUqIGdldENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlKCkgeyBy
ZXR1cm4gbV9jc3NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5nZXQoKTsgfQorICAgIHZvaWQgc2V0
Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoUmVmPFBhaW50V29ya2xldEdsb2JhbFNjb3BlPiYm
KTsKICNlbmRpZgogCiAgICAgdm9pZCBzZXRBc1J1bm5pbmdVc2VyU2NyaXB0cygpIHsgbV9pc1J1
bm5pbmdVc2VyU2NyaXB0cyA9IHRydWU7IH0KQEAgLTE1NzAsMTAgKzE1NzcsNiBAQCBwcml2YXRl
OgogICAgIHZvaWQgcmVmU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGZpbmFsIHsgcmVmKCk7IH0K
ICAgICB2b2lkIGRlcmVmU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGZpbmFsIHsgZGVyZWYoKTsg
fQogCi0gICAgLy8gVGhlIGZvbGxvd2luZyBhZGRNZXNzYWdlIGZ1bmN0aW9uIGlzIGRlcHJlY2F0
ZWQuCi0gICAgLy8gQ2FsbGVycyBzaG91bGQgdHJ5IHRvIGNyZWF0ZSB0aGUgQ29uc29sZU1lc3Nh
Z2UgdGhlbXNlbHZlcy4KLSAgICB2b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2Fn
ZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCB1
bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIFJlZlB0cjxJbnNwZWN0
b3I6OlNjcmlwdENhbGxTdGFjaz4mJiwgSlNDOjpFeGVjU3RhdGUqID0gbnVsbHB0ciwgdW5zaWdu
ZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciA9IDApIGZpbmFsOwotCiAgICAgU2Vjb25kcyBtaW5p
bXVtRE9NVGltZXJJbnRlcnZhbCgpIGNvbnN0IGZpbmFsOwogCiAgICAgU2Vjb25kcyBkb21UaW1l
ckFsaWdubWVudEludGVydmFsKGJvb2wgaGFzUmVhY2hlZE1heE5lc3RpbmdMZXZlbCkgY29uc3Qg
ZmluYWw7CkBAIC0yMDYwLDcgKzIwNjMsOCBAQCBwcml2YXRlOgogICAgIENTU1JlZ2lzdGVyZWRD
dXN0b21Qcm9wZXJ0eVNldCBtX0NTU1JlZ2lzdGVyZWRQcm9wZXJ0eVNldDsKIAogI2lmIEVOQUJM
RShDU1NfUEFJTlRJTkdfQVBJKQotICAgIFJlZlB0cjxDU1NQYWludFdvcmtsZXRHbG9iYWxTY29w
ZT4gbV9DU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZTsKKyAgICBSZWZQdHI8V29ya2xldD4gbV9D
U1NQYWludFdvcmtsZXQ7CisgICAgUmVmUHRyPFBhaW50V29ya2xldEdsb2JhbFNjb3BlPiBtX2Nz
c1BhaW50V29ya2xldEdsb2JhbFNjb3BlOwogI2VuZGlmCiAKICAgICBib29sIG1faXNSdW5uaW5n
VXNlclNjcmlwdHMgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50VGFyZ2V0RmFjdG9yeS5pbiBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3Rv
cnkuaW4KaW5kZXggNjBhYjFhNTgyODhiZTk5YTI5N2VlOTIzYjg4OTQwZjE5M2Y2ZjU1Zi4uNzhh
MjJiMzE2YTRjNDY4MGIxZDdjMjI3NGFjYjZhYjdmZDU2NDhiZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCkBAIC01Miw2ICs1Miw3IEBAIFdlYkFuaW1hdGlvbgog
V2ViS2l0TWVkaWFLZXlTZXNzaW9uIGNvbmRpdGlvbmFsPUxFR0FDWV9FTkNSWVBURURfTUVESUEK
IFdlYlNvY2tldAogV29ya2VyCitXb3JrbGV0R2xvYmFsU2NvcGUgY29uZGl0aW9uYWw9Q1NTX1BB
SU5USU5HX0FQSQogWE1MSHR0cFJlcXVlc3QKIFhNTEh0dHBSZXF1ZXN0VXBsb2FkCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAppbmRleCBiYTVjMzYz
MjRiYzgzNDAwZTQ0YjhjOWMxNWIxNTVlNTgzNzBjZmJmLi5lZWUzOGI1YmJhZjJjOTNiNGE1YWYy
ZjgyZDkzY2E1MTBlY2QxMzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuY3BwCkBAIC01NCw2ICs1NCw4IEBACiAjaW5jbHVkZSAiV29ya2VyR2xvYmFs
U2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJOYXZpZ2F0b3IuaCIKICNpbmNsdWRlICJXb3JrZXJU
aHJlYWQuaCIKKyNpbmNsdWRlICJXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3Jr
bGV0U2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NhdGNoU2Nv
cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FeGNlcHRpb24uaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU1Byb21pc2UuaD4KQEAgLTQ3Niw4ICs0NzgsMTUgQEAgSlNDOjpWTSYg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6dm0oKQogewogICAgIGlmIChpczxEb2N1bWVudD4oKnRo
aXMpKQogICAgICAgICByZXR1cm4gY29tbW9uVk0oKTsKKyAgICBpZiAoaXM8V29ya2VyR2xvYmFs
U2NvcGU+KCp0aGlzKSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3Bl
PigqdGhpcykuc2NyaXB0KCktPnZtKCk7CisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisg
ICAgaWYgKGlzPFdvcmtsZXRHbG9iYWxTY29wZT4oKnRoaXMpKQorICAgICAgICByZXR1cm4gZG93
bmNhc3Q8V29ya2xldEdsb2JhbFNjb3BlPigqdGhpcykuc2NyaXB0KCktPnZtKCk7CisjZW5kaWYK
IAotICAgIHJldHVybiBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpLnNjcmlwdCgp
LT52bSgpOworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGNv
bW1vblZNKCk7CiB9CiAKIFJlamVjdGVkUHJvbWlzZVRyYWNrZXImIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OmVuc3VyZVJlamVjdGVkUHJvbWlzZVRyYWNrZXJTbG93KCkKQEAgLTUxOSw4ICs1Mjgs
MTkgQEAgSlNDOjpFeGVjU3RhdGUqIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmV4ZWNTdGF0ZSgp
CiAgICAgICAgIHJldHVybiBleGVjU3RhdGVGcm9tUGFnZShtYWluVGhyZWFkTm9ybWFsV29ybGQo
KSwgZG9jdW1lbnQucGFnZSgpKTsKICAgICB9CiAKLSAgICBXb3JrZXJHbG9iYWxTY29wZSogd29y
a2VyR2xvYmFsU2NvcGUgPSBzdGF0aWNfY2FzdDxXb3JrZXJHbG9iYWxTY29wZSo+KHRoaXMpOwot
ICAgIHJldHVybiBleGVjU3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUod29ya2VyR2xvYmFsU2Nv
cGUpOworICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpKSB7CisgICAgICAgIFdv
cmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSA9IGRvd25jYXN0PFdvcmtlckdsb2Jh
bFNjb3BlPigqdGhpcyk7CisgICAgICAgIHJldHVybiBleGVjU3RhdGVGcm9tV29ya2VyR2xvYmFs
U2NvcGUod29ya2VyR2xvYmFsU2NvcGUpOworICAgIH0KKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5H
X0FQSSkKKyAgICBpZiAoaXM8V29ya2xldEdsb2JhbFNjb3BlPigqdGhpcykpIHsKKyAgICAgICAg
V29ya2xldEdsb2JhbFNjb3BlJiB3b3JrbGV0R2xvYmFsU2NvcGUgPSBkb3duY2FzdDxXb3JrbGV0
R2xvYmFsU2NvcGU+KCp0aGlzKTsKKyAgICAgICAgcmV0dXJuIGV4ZWNTdGF0ZUZyb21Xb3JrbGV0
R2xvYmFsU2NvcGUod29ya2xldEdsb2JhbFNjb3BlKTsKKyAgICB9CisjZW5kaWYKKworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBTdHJpbmcgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggMmI2NDc1ZTYy
N2RjZWZkNWRkYjY0MzRlMTUxNTU0NjVlNTVjNDdlNC4uNzg1OTA0NTgyM2I3YzYzMDUwYWUwMWYx
YTY0NWJhZDMwYjJkYzc5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oCkBAIC04OSw2ICs4OSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBp
c0RvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNX
b3JrZXJHbG9iYWxTY29wZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBi
b29sIGlzV29ya2xldEdsb2JhbFNjb3BlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAg
IHZpcnR1YWwgYm9vbCBpc0NvbnRleHRUaHJlYWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAg
ICAgdmlydHVhbCBib29sIGlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSBjb25zdCA9IDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1
Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dv
cmtlckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IGNhYzA2MjU2OTlhNDE4Yjg5MGQzZDExM2QzYzQ5
MjdiZGU2ZmVjOWQuLmIyMGNiYmM5NTA3MDI4MTFiNjU4OWFjMWRmYmQ1NzMzOTE5M2QzMzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRl
YnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29y
a2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC02MCw3ICs2MCw3IEBAIEluamVjdGVkU2Ny
aXB0IFdvcmtlckRlYnVnZ2VyQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpCiAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdCgpOwogICAgIH0KIAot
ICAgIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSA9IGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9i
YWxTY29wZSgmbV93b3JrZXJHbG9iYWxTY29wZSk7CisgICAgSlNDOjpFeGVjU3RhdGUqIHNjcmlw
dFN0YXRlID0gZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3BlKG1fd29ya2VyR2xvYmFsU2Nv
cGUpOwogICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZv
cihzY3JpcHRTdGF0ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCmluZGV4IDljYzY5
ZDE3MjRjZGFkMThmOThlM2QzYjMyZjI5NjhhNTU0ZTA2N2QuLjhjMzIxNDg3YzY4NWZkMzRmYWVh
YTc1NTBjOThhMjI5MDg3NWQzMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmNwcApAQCAtNjUs
NyArNjUsNyBAQCBJbmplY3RlZFNjcmlwdCBXb3JrZXJSdW50aW1lQWdlbnQ6OmluamVjdGVkU2Ny
aXB0Rm9yRXZhbChFcnJvclN0cmluZyYgZXJyb3JTdHJpbgogICAgICAgICByZXR1cm4gSW5qZWN0
ZWRTY3JpcHQoKTsKICAgICB9CiAKLSAgICBKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUgPSBl
eGVjU3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUoJm1fd29ya2VyR2xvYmFsU2NvcGUpOworICAg
IEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSA9IGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxT
Y29wZShtX3dvcmtlckdsb2JhbFNjb3BlKTsKICAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3RhdGUpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwCmluZGV4
IGQyZTQyYzBjOWU2MTk5ZjUyNzQyOTE2NzBmMTdhMDZlOWRlODIwZmIuLjE1YWE5MjRjMmI2MTcx
ZTUzNTBjMTAxZDQ0MGJlNmMzY2NhNTBjOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwCkBAIC0zNyw3ICszNyw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ3VzdG9tUGFpbnRJbWFnZTo6Q3VzdG9tUGFpbnRJ
bWFnZShjb25zdCBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6UGFpbnREZWZpbml0aW9uJiBk
ZWZpbml0aW9uLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCitDdXN0b21QYWludEltYWdlOjpDdXN0
b21QYWludEltYWdlKGNvbnN0IFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRp
b24mIGRlZmluaXRpb24sIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKICAgICA6IG1fcGFpbnRDYWxs
YmFjayhkZWZpbml0aW9uLnBhaW50Q2FsbGJhY2suZ2V0KCkpCiB7CiAgICAgc2V0Q29udGFpbmVy
U2l6ZShzaXplKTsKQEAgLTYzLDcgKzYzLDYgQEAgSW1hZ2VEcmF3UmVzdWx0IEN1c3RvbVBhaW50
SW1hZ2U6OmRvQ3VzdG9tUGFpbnQoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY28KICAg
ICBpZiAocmVzdWx0LnR5cGUoKSAhPSBDYWxsYmFja1Jlc3VsdFR5cGU6OlN1Y2Nlc3MpCiAgICAg
ICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CiAKLSAgICBVTlVTRURfUEFS
QU0oZGVzdENvbnRleHQpOwogICAgIGF1dG8gaW1hZ2UgPSBjYW52YXMtPmNvcGllZEltYWdlKCk7
CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90
aGluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3Rv
bVBhaW50SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBh
aW50SW1hZ2UuaAppbmRleCAwM2FiMmE4ODg2ODNhM2Y1Mzg3MWRhYzViNTFmODkxOWRhNGM0ZGQy
Li5lYjZhODFiYWUyNGQxMTdlMGNkMzQ4OGRjNDdhNzZlNjJiMDQyMGNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5oCkBAIC0y
Nyw4ICsyNyw4IEBACiAKICNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKIAotI2luY2x1ZGUg
IkNTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiR2VuZXJhdGVkSW1hZ2Uu
aCIKKyNpbmNsdWRlICJQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgSW1hZ2VCdWZmZXI7CiAKIGNsYXNzIEN1
c3RvbVBhaW50SW1hZ2UgZmluYWwgOiBwdWJsaWMgR2VuZXJhdGVkSW1hZ2UgewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8Q3VzdG9tUGFpbnRJbWFnZT4gY3JlYXRlKGNvbnN0IENTU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb24mIGRlZmluaXRpb24sIGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSkKKyAgICBzdGF0aWMgUmVmPEN1c3RvbVBhaW50SW1hZ2U+IGNyZWF0ZShjb25z
dCBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6UGFpbnREZWZpbml0aW9uJiBkZWZpbml0aW9uLCBj
b25zdCBGbG9hdFNpemUmIHNpemUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBDdXN0b21QYWludEltYWdlKGRlZmluaXRpb24sIHNpemUpKTsKICAgICB9CkBAIC00NSw3ICs0
NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQ3VzdG9tUGFpbnRJbWFnZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KIAogcHJpdmF0ZToKLSAgICBDdXN0b21QYWludEltYWdlKGNv
bnN0IENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb24mLCBjb25zdCBG
bG9hdFNpemUmKTsKKyAgICBDdXN0b21QYWludEltYWdlKGNvbnN0IFBhaW50V29ya2xldEdsb2Jh
bFNjb3BlOjpQYWludERlZmluaXRpb24mLCBjb25zdCBGbG9hdFNpemUmKTsKIAogICAgIEltYWdl
RHJhd1Jlc3VsdCBkb0N1c3RvbVBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6
ZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRH
bG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9i
YWxTY29wZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjAxM2I0YWI5NWFhMzQ3ZWU5YTlhMGU5NGEwYTMyYjc0
MjIzNjMyMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50
V29ya2xldEdsb2JhbFNjb3BlLmNwcApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlBhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCisKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5H
X0FQSSkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8UGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGU+IFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpjcmVhdGUoV2Vha1B0cjxEb2N1bWVudD4mJiBk
b2N1bWVudCwgU2NyaXB0U291cmNlQ29kZSYmIGNvZGUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoV1RGTW92ZShkb2N1bWVudCksIFdURk1vdmUo
Y29kZSkpKTsKK30KKworUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OlBhaW50V29ya2xldEdsb2Jh
bFNjb3BlKFdlYWtQdHI8RG9jdW1lbnQ+JiYgZG9jdW1lbnQsIFNjcmlwdFNvdXJjZUNvZGUmJiBj
b2RlKQorICAgIDogV29ya2xldEdsb2JhbFNjb3BlKFdURk1vdmUoZG9jdW1lbnQpLCBXVEZNb3Zl
KGNvZGUpKQoreworfQorCitkb3VibGUgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OmRldmljZVBp
eGVsUmF0aW8oKQoreworICAgIHJldHVybiAxLjA7Cit9CisKK0V4Y2VwdGlvbk9yPHZvaWQ+IFBh
aW50V29ya2xldEdsb2JhbFNjb3BlOjphZGRSZWdpc3RlcmVkUGFpbnQoKQoreworICAgIHJldHVy
biB7IH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44MmMyMTAzZDdhMzY0N2I3ODE2NzA5ZDRjZTk0YTc2OTA5ZjgxM2RmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaApA
QCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKworI2lu
Y2x1ZGUgIkNTU1BhaW50Q2FsbGJhY2suaCIKKyNpbmNsdWRlICJXb3JrbGV0R2xvYmFsU2NvcGUu
aCIKKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBKU1ZhbHVlOworCit9IC8vIG5hbWVzcGFjZSBK
U0MKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQYWludFdvcmtsZXRHbG9iYWxTY29w
ZSA6IHB1YmxpYyBXb3JrbGV0R2xvYmFsU2NvcGUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+IGNyZWF0ZShXZWFrUHRyPERvY3VtZW50PiYmLCBTY3Jp
cHRTb3VyY2VDb2RlJiYpOworCisgICAgYm9vbCBpc1BhaW50V29ya2xldEdsb2JhbFNjb3BlKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgRXhjZXB0aW9uT3I8dm9pZD4gYWRk
UmVnaXN0ZXJlZFBhaW50KCk7CisgICAgZG91YmxlIGRldmljZVBpeGVsUmF0aW8oKTsKKworICAg
IHN0cnVjdCBQYWludERlZmluaXRpb24geworICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcgbmFt
ZTsKKyAgICAgICAgY29uc3QgUmVmPENTU1BhaW50Q2FsbGJhY2s+IHBhaW50Q2FsbGJhY2s7Cisg
ICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+IGlucHV0UHJvcGVydGllczsKKyAgICAgICAgY29u
c3QgVmVjdG9yPFN0cmluZz4gaW5wdXRBcmd1bWVudHM7CisgICAgfTsKKworICAgIEhhc2hNYXA8
U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8UGFpbnREZWZpbml0aW9uPj4mIHBhaW50RGVmaW5pdGlv
bk1hcCgpIHsgcmV0dXJuIG1fcGFpbnREZWZpbml0aW9uTWFwOyB9CisKK3ByaXZhdGU6CisgICAg
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoV2Vha1B0cjxEb2N1bWVudD4mJiwgU2NyaXB0U291cmNl
Q29kZSYmKTsKKworICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8UGFpbnREZWZp
bml0aW9uPj4gbV9wYWludERlZmluaXRpb25NYXA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29y
a2xldEdsb2JhbFNjb3BlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xl
dEdsb2JhbFNjb3BlLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNTQ5Y2NmMDQzYmUwNGRiNjkxZGVkN2Y2MGM0
ZWU1ZWE3YWNjZGI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMv
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaWRsCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorKi8KKworWworICAgIEV4cG9zZWQ9UGFpbnRXb3JrbGV0LAorICAgIEVuYWJsZWRBdFJ1
bnRpbWU9Q1NTUGFpbnRpbmdBUEksCisgICAgQ29uZGl0aW9uYWw9Q1NTX1BBSU5USU5HX0FQSSwK
KyAgICBKU0N1c3RvbU1hcmtGdW5jdGlvbiwKKyAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3Qs
CisgICAgSW1wbGljaXRUaGlzLAorICAgIElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0
LAorICAgIElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0T25Qcm90b3R5cGUsCisgICAg
R2xvYmFsPShXb3JrbGV0LFBhaW50V29ya2xldCksCitdIGludGVyZmFjZSBQYWludFdvcmtsZXRH
bG9iYWxTY29wZSA6IFdvcmtsZXRHbG9iYWxTY29wZSB7CisgICAgW0N1c3RvbSwgTWF5VGhyb3dF
eGNlcHRpb25dIHZvaWQgcmVnaXN0ZXJQYWludChET01TdHJpbmcgbmFtZSwgRnVuY3Rpb24gcGFp
bnRDdG9yKTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBkZXZp
Y2VQaXhlbFJhdGlvOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dv
cmtsZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNzdmYWM1ZTUwYmFlZjE5NTk2OWU5ODg3NzNmZmQ0MGI3ODQxNDRjMwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQuY3BwCkBAIC0wLDAgKzEsNTYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV29ya2xldC5oIgorCisjaWYgRU5BQkxFKENTU19QQUlO
VElOR19BUEkpCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIlBhaW50V29ya2xl
dEdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1JlZjxXb3JrbGV0PiBXb3JrbGV0OjpjcmVhdGUoKQoreworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFdvcmtsZXQoKSk7Cit9CisKKworV29ya2xldDo6V29ya2xldCgp
Cit7Cit9CisKK3ZvaWQgV29ya2xldDo6YWRkTW9kdWxlKERvY3VtZW50JiBkb2N1bWVudCwgU3Ry
aW5nIG1vZHVsZVVSTCkKK3sKKyAgICBhdXRvIGNvbnRleHQgPSBQYWludFdvcmtsZXRHbG9iYWxT
Y29wZTo6Y3JlYXRlKG1ha2VXZWFrUHRyKGRvY3VtZW50KSwgU2NyaXB0U291cmNlQ29kZShtb2R1
bGVVUkwpKTsKKyAgICBjb250ZXh0LT5ldmFsdWF0ZSgpOworICAgIGRvY3VtZW50LnNldENTU1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlKFdURk1vdmUoY29udGV4dCkpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xl
dHMvV29ya2xldC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjYxM2Y0OTQ3MDQ0NGViZjQ3YTk0ZDRkZjcwNjc0ZWI3MGRjZDJiOTUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmgKQEAgLTAsMCArMSw0NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKK2NsYXNzIERvY3VtZW50OworCitjbGFzcyBXb3JrbGV0IDogcHVibGljIFJlZkNvdW50ZWQ8
V29ya2xldD4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8V29ya2xldD4gY3JlYXRlKCk7Cisg
ICAgCisgICAgdm9pZCBhZGRNb2R1bGUoRG9jdW1lbnQmLCBTdHJpbmcgbW9kdWxlVVJMKTsKKwor
cHJvdGVjdGVkOgorICAgIFdvcmtsZXQoKTsKKworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0Lmlk
bCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQuaWRsCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3NGNj
OTEzODAwYjc5ZWU3MGE1YzQ0Njc5ZWYxNWZlN2VjODQ5ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmlkbApAQCAtMCwwICsxLDMzIEBACisvKgor
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgor
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgor
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyovCisKK1sKKyAgICBFbmFibGVkQXRSdW50aW1lPUNTU1BhaW50aW5nQVBJ
LAorICAgIENvbmRpdGlvbmFsPUNTU19QQUlOVElOR19BUEksCisgICAgSW1wbGVtZW50YXRpb25M
YWNrc1ZUYWJsZSwKKyAgICBHbG9iYWw9V29ya2xldCwKK10gaW50ZXJmYWNlIFdvcmtsZXQgewor
ICAgIFtDYWxsV2l0aD1Eb2N1bWVudF0gdm9pZCBhZGRNb2R1bGUoVVNWU3RyaW5nIG1vZHVsZVVS
TC8qLCBvcHRpb25hbCBXb3JrbGV0T3B0aW9ucyBvcHRpb25zKi8pOworfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
OTUwNmI5ZTM5MzEzNGNlYzMzNjM2Y2E2NmYxYzVkYzI0Yjg4MTgyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuY3BwCkBAIC0w
LDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V29ya2xldENvbnNvbGVDbGllbnQuaCIKKworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQor
CisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvQ29uc29sZU1lc3NhZ2UuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3Jp
cHRBcmd1bWVudHMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxsU3RhY2su
aD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5Lmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKK1dvcmts
ZXRDb25zb2xlQ2xpZW50OjpXb3JrbGV0Q29uc29sZUNsaWVudChXb3JrbGV0R2xvYmFsU2NvcGUm
IHdvcmtsZXRHbG9iYWxTY29wZSkKKyAgICA6IG1fd29ya2xldEdsb2JhbFNjb3BlKHdvcmtsZXRH
bG9iYWxTY29wZSkKK3sKK30KKworV29ya2xldENvbnNvbGVDbGllbnQ6On5Xb3JrbGV0Q29uc29s
ZUNsaWVudCgpID0gZGVmYXVsdDsKKwordm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6bWVzc2Fn
ZVdpdGhUeXBlQW5kTGV2ZWwoTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBK
U0M6OkV4ZWNTdGF0ZSogZXhlYywgUmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmIGFy
Z3VtZW50cykKK3sKKyAgICBTdHJpbmcgbWVzc2FnZVRleHQ7CisgICAgYXJndW1lbnRzLT5nZXRG
aXJzdEFyZ3VtZW50QXNTdHJpbmcobWVzc2FnZVRleHQpOworICAgIGF1dG8gbWVzc2FnZSA9IHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6
Q29uc29sZUFQSSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBXVEZNb3ZlKGFyZ3VtZW50cyks
IGV4ZWMpOworICAgIG1fd29ya2xldEdsb2JhbFNjb3BlLmFkZENvbnNvbGVNZXNzYWdlKFdURk1v
dmUobWVzc2FnZSkpOworfQorCit2b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50Ojpjb3VudChKU0M6
OkV4ZWNTdGF0ZSosIFJlZjxTY3JpcHRBcmd1bWVudHM+JiYpIHsgfQorCit2b2lkIFdvcmtsZXRD
b25zb2xlQ2xpZW50Ojp0aW1lKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJikgeyB9Cit2
b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50Ojp0aW1lRW5kKEpTQzo6RXhlY1N0YXRlKiwgY29uc3Qg
U3RyaW5nJikgeyB9CisKK3ZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6OnByb2ZpbGUoSlNDOjpF
eGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmKSB7IH0KK3ZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6
OnByb2ZpbGVFbmQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmKSB7IH0KKwordm9pZCBX
b3JrbGV0Q29uc29sZUNsaWVudDo6dGFrZUhlYXBTbmFwc2hvdChKU0M6OkV4ZWNTdGF0ZSosIGNv
bnN0IFN0cmluZyYpIHsgfQordm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6dGltZVN0YW1wKEpT
Qzo6RXhlY1N0YXRlKiwgUmVmPFNjcmlwdEFyZ3VtZW50cz4mJikgeyB9CisKK3ZvaWQgV29ya2xl
dENvbnNvbGVDbGllbnQ6OnJlY29yZChKU0M6OkV4ZWNTdGF0ZSosIFJlZjxTY3JpcHRBcmd1bWVu
dHM+JiYpIHsgfQordm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6cmVjb3JkRW5kKEpTQzo6RXhl
Y1N0YXRlKiwgUmVmPFNjcmlwdEFyZ3VtZW50cz4mJikgeyB9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xl
dENvbnNvbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xl
Q2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNzBlMjc0ZWY3M2QxMjNkZmU3ODc4MDkyYThmYTM1MTY5NDM4
NTQ0NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRD
b25zb2xlQ2xpZW50LmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisKKyNpbmNsdWRlICJXb3JrbGV0R2xv
YmFsU2NvcGUuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlQ2xpZW50Lmg+Cisj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBFeGVjU3Rh
dGU7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV29ya2xldENvbnNvbGVDbGll
bnQgZmluYWwgOiBwdWJsaWMgSlNDOjpDb25zb2xlQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBXb3JrbGV0Q29uc29sZUNsaWVudChX
b3JrbGV0R2xvYmFsU2NvcGUmKTsKKyAgICB2aXJ0dWFsIH5Xb3JrbGV0Q29uc29sZUNsaWVudCgp
OworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBtZXNzYWdlV2l0aFR5cGVBbmRMZXZlbChNZXNzYWdl
VHlwZSwgTWVzc2FnZUxldmVsLCBKU0M6OkV4ZWNTdGF0ZSosIFJlZjxJbnNwZWN0b3I6OlNjcmlw
dEFyZ3VtZW50cz4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjb3VudChKU0M6OkV4ZWNTdGF0ZSos
IFJlZjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBw
cm9maWxlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBwcm9maWxlRW5kKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiB0aXRsZSkg
b3ZlcnJpZGU7CisgICAgdm9pZCB0YWtlSGVhcFNuYXBzaG90KEpTQzo6RXhlY1N0YXRlKiwgY29u
c3QgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7CisgICAgdm9pZCB0aW1lKEpTQzo6RXhlY1N0YXRl
KiwgY29uc3QgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7CisgICAgdm9pZCB0aW1lRW5kKEpTQzo6
RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7CisgICAgdm9pZCB0aW1l
U3RhbXAoSlNDOjpFeGVjU3RhdGUqLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYp
IG92ZXJyaWRlOworICAgIHZvaWQgcmVjb3JkKEpTQzo6RXhlY1N0YXRlKiwgUmVmPEluc3BlY3Rv
cjo6U2NyaXB0QXJndW1lbnRzPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlY29yZEVuZChKU0M6
OkV4ZWNTdGF0ZSosIFJlZjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4mJikgb3ZlcnJpZGU7
CisKK3ByaXZhdGU6CisgICAgV29ya2xldEdsb2JhbFNjb3BlJiBtX3dvcmtsZXRHbG9iYWxTY29w
ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzI1YjZkMzc5
YTRhZTgwOTI1ZGZkM2JlMDE5MDEyYzY4OTg5ZGRiZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTAsMCArMSwxMjYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldvcmtsZXRHbG9iYWxTY29wZS5oIgorCisjaWYg
RU5BQkxFKENTU19QQUlOVElOR19BUEkpCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1
ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCisjaW5j
bHVkZSAiSlNXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJQYWdlQ29uc29sZUNsaWVu
dC5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luUG9saWN5LmgiCisjaW5jbHVkZSAiU2V0dGlu
Z3MuaCIKKyNpbmNsdWRlICJXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgorCisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvRXhjZXB0aW9uLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNM
b2NrLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0Q2FsbFN0YWNrLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKK1dvcmtsZXRH
bG9iYWxTY29wZTo6V29ya2xldEdsb2JhbFNjb3BlKFdlYWtQdHI8RG9jdW1lbnQ+JiYgZG9jdW1l
bnQsIFNjcmlwdFNvdXJjZUNvZGUmJiBjb2RlKQorICAgIDogbV9zZXNzaW9uSUQoZG9jdW1lbnQt
PnNlc3Npb25JRCgpKQorICAgICwgbV9zY3JpcHQoc3RkOjptYWtlX3VuaXF1ZTxXb3JrbGV0U2Ny
aXB0Q29udHJvbGxlcj4odGhpcykpCisgICAgLCBtX2V2ZW50UXVldWUoKnRoaXMpCisgICAgLCBt
X3RvcE9yaWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCkpCisgICAgLCBtX2RvY3Vt
ZW50KFdURk1vdmUoZG9jdW1lbnQpKQorICAgICwgbV9jb2RlKFdURk1vdmUoY29kZSkpCit7Cisg
ICAgQVNTRVJUKG1fZG9jdW1lbnQpOworICAgIEZyYW1lKiBmcmFtZSA9IG1fZG9jdW1lbnQtPmZy
YW1lKCk7CisgICAgbV9qc1J1bnRpbWVGbGFncyA9IChmcmFtZSA/IGZyYW1lLT5zZXR0aW5ncygp
LmphdmFTY3JpcHRSdW50aW1lRmxhZ3MoKSA6IEpTQzo6UnVudGltZUZsYWdzKCkpOworICAgIEFT
U0VSVChtX2RvY3VtZW50LT5wYWdlKCkpOworCisgICAgc2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3ko
U2VjdXJpdHlPcmlnaW5Qb2xpY3k6OmNyZWF0ZShtX2RvY3VtZW50LT5zZWN1cml0eU9yaWdpbigp
KSk7CisgICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KHN0ZDo6bWFrZV91bmlxdWU8Q29udGVu
dFNlY3VyaXR5UG9saWN5PihVUkwgeyBjb2RlLnVybCgpIH0sICp0aGlzKSk7Cit9CisKK1dvcmts
ZXRHbG9iYWxTY29wZTo6fldvcmtsZXRHbG9iYWxTY29wZSgpCit7CisgICAgcmVtb3ZlRnJvbUNv
bnRleHRzTWFwKCk7CisgICAgbV9zY3JpcHQtPndvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIoKS0+
c2V0Q29uc29sZUNsaWVudChudWxscHRyKTsKK30KKwordm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6
OmV2YWx1YXRlKCkKK3sKKyAgICBtX3NjcmlwdC0+ZXZhbHVhdGUobV9jb2RlKTsKK30KKworYm9v
bCBXb3JrbGV0R2xvYmFsU2NvcGU6OmlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSBjb25zdAorewor
ICAgIHJldHVybiBtX3NjcmlwdC0+aXNFeGVjdXRpb25Gb3JiaWRkZW4oKTsKK30KKwordm9pZCBX
b3JrbGV0R2xvYmFsU2NvcGU6OmRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
KQoreworICAgIG1fc2NyaXB0LT5kaXNhYmxlRXZhbChlcnJvck1lc3NhZ2UpOworfQorCit2b2lk
IFdvcmtsZXRHbG9iYWxTY29wZTo6ZGlzYWJsZVdlYkFzc2VtYmx5KGNvbnN0IFN0cmluZyYgZXJy
b3JNZXNzYWdlKQoreworICAgIG1fc2NyaXB0LT5kaXNhYmxlV2ViQXNzZW1ibHkoZXJyb3JNZXNz
YWdlKTsKK30KKworVVJMIFdvcmtsZXRHbG9iYWxTY29wZTo6Y29tcGxldGVVUkwoY29uc3QgU3Ry
aW5nJiB1cmwpIGNvbnN0Cit7CisgICAgLy8gQWx3YXlzIHJldHVybiBhIG51bGwgVVJMIHdoZW4g
cGFzc2VkIGEgbnVsbCBzdHJpbmcuCisgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBjaGFuZ2UgdGhl
IFVSTCBjb25zdHJ1Y3RvciB0byBoYXZlIHRoaXMgYmVoYXZpb3I/CisgICAgaWYgKHVybC5pc051
bGwoKSkKKyAgICAgICAgcmV0dXJuIFVSTCgpOworICAgIC8vIEFsd2F5cyB1c2UgVVRGLTggaW4g
V29ya2Vycy4KKyAgICByZXR1cm4gVVJMKG1fY29kZS51cmwoKSwgdXJsKTsKK30KKwordm9pZCBX
b3JrbGV0R2xvYmFsU2NvcGU6OmxvZ0V4Y2VwdGlvblRvQ29uc29sZShjb25zdCBTdHJpbmcmIGVy
cm9yTWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGludCBsaW5lTnVtYmVyLCBpbnQg
Y29sdW1uTnVtYmVyLCBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiYmIHN0YWNrKQoreworICAgIEFT
U0VSVChtX2RvY3VtZW50KTsKKyAgICBtX2RvY3VtZW50LT5sb2dFeGNlcHRpb25Ub0NvbnNvbGUo
ZXJyb3JNZXNzYWdlLCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgV1RGTW92
ZShzdGFjaykpOworfQorCit2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3Nh
Z2Uoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+JiYgbWVzc2FnZSkK
K3sKKyAgICBBU1NFUlQobV9kb2N1bWVudCk7CisgICAgbV9kb2N1bWVudC0+YWRkQ29uc29sZU1l
c3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7Cit9CisKK3ZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjph
ZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVs
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIp
Cit7CisgICAgQVNTRVJUKG1fZG9jdW1lbnQpOworICAgIG1fZG9jdW1lbnQtPmFkZENvbnNvbGVN
ZXNzYWdlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UsIHJlcXVlc3RJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2Us
IE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlVGV4dCwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VVUkwsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJl
ciwgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4mJiBjYWxsU3RhY2ssIEpTQzo6RXhlY1N0YXRlKiBz
dGF0ZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQobV9k
b2N1bWVudCk7CisgICAgbV9kb2N1bWVudC0+YWRkTWVzc2FnZShzb3VyY2UsIGxldmVsLCBtZXNz
YWdlVGV4dCwgc291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFdURk1vdmUoY2Fs
bFN0YWNrKSwgc3RhdGUsIHJlcXVlc3RJZGVudGlmaWVyKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3Jr
bGV0R2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxT
Y29wZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQ1MzBkMDEyNDhjMzA0M2UwZTUzZTNiNTQ3NzE1Y2RiYzRjNzdk
MzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xv
YmFsU2NvcGUuaApAQCAtMCwwICsxLDEzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICoKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShDU1NfUEFJ
TlRJTkdfQVBJKQorCisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJFeGNlcHRp
b25Pci5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJT
Y3JpcHRTb3VyY2VDb2RlLmgiCisjaW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIKKyNpbmNsdWRl
ICJVUkwuaCIKKyNpbmNsdWRlICJXb3JrZXJFdmVudFF1ZXVlLmgiCisKKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9Db25zb2xlTWVzc2FnZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1J1
bnRpbWVGbGFncy5oPgorI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KKyNpbmNsdWRlIDx3dGYv
V2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBXb3JrbGV0U2NyaXB0Q29u
dHJvbGxlcjsKK2NsYXNzIFNjcmlwdFNvdXJjZUNvZGU7CisKK2NsYXNzIFdvcmtsZXRHbG9iYWxT
Y29wZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdvcmtsZXRHbG9iYWxTY29wZT4sIHB1YmxpYyBTdXBw
bGVtZW50YWJsZTxXb3JrbGV0R2xvYmFsU2NvcGU+LCBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEgeworcHVibGljOgorICAgIHZp
cnR1YWwgfldvcmtsZXRHbG9iYWxTY29wZSgpOworCisgICAgdmlydHVhbCBib29sIGlzUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCisgICAgY29uc3Qg
VVJMJiB1cmwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvZGUudXJsKCk7IH0KKyAgICBTdHJp
bmcgb3JpZ2luKCkgY29uc3QgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuICIi
OyB9CisgICAgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKCkgY29uc3QgeyBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorCisjaWYgRU5BQkxFKElOREVYRURfREFU
QUJBU0UpCisgICAgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGlkYkNvbm5lY3Rpb25Q
cm94eSgpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBudWxscHRyOyB9Cisj
ZW5kaWYKKworICAgIHZvaWQgcG9zdFRhc2soVGFzayYmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOyB9CisKKyAgICB2b2lkIGV2YWx1YXRlKCk7CisKKyAgICB1c2luZyBSZWZDb3VudGVk
OjpyZWY7CisgICAgdXNpbmcgUmVmQ291bnRlZDo6ZGVyZWY7CisKKyAgICBXb3JrbGV0U2NyaXB0
Q29udHJvbGxlciogc2NyaXB0KCkgeyByZXR1cm4gbV9zY3JpcHQuZ2V0KCk7IH0KKworICAgIHZv
aWQgYWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1l
c3NhZ2U+JiYpIGZpbmFsOworCisgICAgYm9vbCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkgY29u
c3QgZmluYWw7CisgICAgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbigpIGNvbnN0IGZpbmFsIHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBtX3RvcE9yaWdpbi5nZXQoKTsgfQorCisgICAg
U29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyKCkgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsgcmV0dXJuIG51bGxwdHI7IH0KKworICAgIGJvb2wgaXNDb250ZXh0VGhyZWFkKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNTZWN1cmVDb250ZXh0KCkgY29u
c3QgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBK
U0M6OlJ1bnRpbWVGbGFncyBqc1J1bnRpbWVGbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fanNSdW50
aW1lRmxhZ3M7IH0KKworcHJvdGVjdGVkOgorICAgIFdvcmtsZXRHbG9iYWxTY29wZShXZWFrUHRy
PERvY3VtZW50PiYmLCBTY3JpcHRTb3VyY2VDb2RlJiYpOworCitwcml2YXRlOgorICAgIHZvaWQg
cmVmU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGZpbmFsIHsgcmVmKCk7IH0KKyAgICB2b2lkIGRl
cmVmU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGZpbmFsIHsgZGVyZWYoKTsgfQorCisgICAgdm9p
ZCByZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgcmVmKCk7IH0KKyAgICB2b2lkIGRlcmVmRXZlbnRU
YXJnZXQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KKworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBjb25zdF9jYXN0
PFdvcmtsZXRHbG9iYWxTY29wZSo+KHRoaXMpOyB9CisgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2Ug
ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBXb3JrbGV0R2xvYmFs
U2NvcGVFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KKworICAgIGJvb2wgaXNXb3JrbGV0R2xv
YmFsU2NvcGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisKKyAgICB2b2lkIGxvZ0V4
Y2VwdGlvblRvQ29uc29sZShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgY29uc3QgU3RyaW5n
JiwgaW50LCBpbnQsIFJlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFjaz4mJikgZmluYWw7
CisgICAgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQsIHVuc2lnbmVkLCBSZWZQdHI8SW5zcGVj
dG9yOjpTY3JpcHRDYWxsU3RhY2s+JiYsIEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgbG9uZykg
ZmluYWw7CisgICAgdm9pZCBhZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdl
TGV2ZWwsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIGxvbmcpIGZpbmFsOworCisgICAgRXZlbnRU
YXJnZXQqIGVycm9yRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJldHVybiB0aGlzOyB9CisgICAgRXZl
bnRRdWV1ZSYgZXZlbnRRdWV1ZSgpIGNvbnN0IGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7
IHJldHVybiBtX2V2ZW50UXVldWU7IH0KKworI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQorICAg
IGJvb2wgd3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mLCBWZWN0b3I8dWludDhf
dD4mKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KKyAgICBi
b29sIHVud3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mLCBWZWN0b3I8dWludDhf
dD4mKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KKyNlbmRp
ZgorICAgIFVSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKKyAgICBQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Nlc3Npb25J
RDsgfQorICAgIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJikgY29uc3QgZmluYWwgeyBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuICIiOyB9CisgICAgdm9pZCBkaXNhYmxlRXZhbChjb25z
dCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIGRpc2FibGVXZWJBc3NlbWJseShjb25zdCBTdHJp
bmcmKSBmaW5hbDsKKworICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxXb3JrbGV0U2NyaXB0Q29udHJvbGxlcj4gbV9zY3JpcHQ7CisKKyAgICAvLyBG
SVhNRTogTm9uZSBvZiB0aGVzZSBhcmUgaW1wbGVtZW50ZWQgcHJvcGVybHksIHRoaXMganVzdCBz
YXRpc2ZpZXMgdGhlIGNvbXBpbGVyLgorICAgIG11dGFibGUgV29ya2VyRXZlbnRRdWV1ZSBtX2V2
ZW50UXVldWU7CisgICAgUmVmPFNlY3VyaXR5T3JpZ2luPiBtX3RvcE9yaWdpbjsKKyAgICBTdHJp
bmcgbV9pZGVudGlmaWVyOworCisgICAgSlNDOjpSdW50aW1lRmxhZ3MgbV9qc1J1bnRpbWVGbGFn
czsKKyAgICBXZWFrUHRyPERvY3VtZW50PiBtX2RvY3VtZW50OworCisgICAgU2NyaXB0U291cmNl
Q29kZSBtX2NvZGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlKQorc3RhdGljIGJv
b2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
IHsgcmV0dXJuIGNvbnRleHQuaXNXb3JrbGV0R2xvYmFsU2NvcGUoKTsgfQorU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19FTkQoKQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
bGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaWRsIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29y
a2xldEdsb2JhbFNjb3BlLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNzU5ZjBjZTFkMTZmODY5MTg2MDEyNzc2
ZjBkYjE2YjYxYmFhNDc4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xl
dHMvV29ya2xldEdsb2JhbFNjb3BlLmlkbApAQCAtMCwwICsxLDM3IEBACisvKgorKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyovCisKK1sKKyAgICBDdXN0b21Qcm94eVRvSlNPYmplY3QsCisgICAgRXhwb3NlZD1Xb3Jr
bGV0LAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9Q1NTUGFpbnRpbmdBUEksCisgICAgQ29uZGl0aW9u
YWw9Q1NTX1BBSU5USU5HX0FQSSwKKyAgICBKU0xlZ2FjeVBhcmVudD1KU1dvcmtsZXRHbG9iYWxT
Y29wZUJhc2UsCisgICAgSW1wbGljaXRUaGlzLAorICAgIElzSW1tdXRhYmxlUHJvdG90eXBlRXhv
dGljT2JqZWN0LAorICAgIElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0T25Qcm90b3R5
cGUsCisgICAgR2xvYmFsPVdvcmtsZXQsCitdIGludGVyZmFjZSBXb3JrbGV0R2xvYmFsU2NvcGUg
OiBFdmVudFRhcmdldCB7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMv
V29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29y
a2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhOGNjM2NkOGZkODRiN2Q3NzNl
N2VkOTI1NTM2MjdiYWFmNDhmNTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTAsMCArMSwxOTUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIKKworI2lmIEVOQUJM
RShDU1NfUEFJTlRJTkdfQVBJKQorCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVk
ZSAiSlNFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIkpTRXhlY1N0YXRlLmgiCisjaW5jbHVkZSAi
SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUu
aCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCisjaW5jbHVkZSAiV29ya2xldENv
bnNvbGVDbGllbnQuaCIKKworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbXBsZXRpb24uaD4K
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FeGNlcHRpb24uaD4KKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9FeGNlcHRpb25IZWxwZXJzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvR0NB
Y3Rpdml0eUNhbGxiYWNrLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+Cisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUHJvbWlzZURlZmVycmVkVGltZXIuaD4KKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9TdHJvbmdJbmxpbmVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK1dvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpXb3JrbGV0
U2NyaXB0Q29udHJvbGxlcihXb3JrbGV0R2xvYmFsU2NvcGUqIHdvcmtsZXRHbG9iYWxTY29wZSkK
KyAgICA6IG1fdm0oVk06OmNyZWF0ZSgpKQorICAgICwgbV93b3JrbGV0R2xvYmFsU2NvcGUod29y
a2xldEdsb2JhbFNjb3BlKQorICAgICwgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKCptX3Zt
KQoreworICAgIG1fdm0tPmhlYXAuYWNxdWlyZUFjY2VzcygpOyAvLyBJdCdzIG5vdCBjbGVhciB0
aGF0IHdlIGhhdmUgZ29vZCBkaXNjaXBsaW5lIGZvciBoZWFwIGFjY2Vzcywgc28gdHVybiBpdCBv
biBwZXJtYW5lbnRseS4KKyAgICBKU1ZNQ2xpZW50RGF0YTo6aW5pdE5vcm1hbFdvcmxkKG1fdm0u
Z2V0KCkpOworfQorCitXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6fldvcmtsZXRTY3JpcHRDb250
cm9sbGVyKCkKK3sKKyAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSgpKTsKKyAgICBtX3dvcmtsZXRH
bG9iYWxTY29wZVdyYXBwZXIuY2xlYXIoKTsKKyAgICBtX3ZtID0gbnVsbHB0cjsKKyAgICBpZiAo
bV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKSB7CisgICAgICAgIG1fd29ya2xldEdsb2JhbFNj
b3BlV3JhcHBlci0+Y2xlYXJET01HdWFyZGVkT2JqZWN0cygpOworICAgICAgICBtX3dvcmtsZXRH
bG9iYWxTY29wZVdyYXBwZXItPnNldENvbnNvbGVDbGllbnQobnVsbHB0cik7CisgICAgICAgIG1f
Y29uc29sZUNsaWVudCA9IG51bGxwdHI7CisgICAgfQorfQorCit2b2lkIFdvcmtsZXRTY3JpcHRD
b250cm9sbGVyOjpmb3JiaWRFeGVjdXRpb24oKQoreworICAgIEFTU0VSVChtX3dvcmtsZXRHbG9i
YWxTY29wZS0+aXNDb250ZXh0VGhyZWFkKCkpOworICAgIG1fZXhlY3V0aW9uRm9yYmlkZGVuID0g
dHJ1ZTsKK30KKworYm9vbCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6aXNFeGVjdXRpb25Gb3Ji
aWRkZW4oKSBjb25zdAoreworICAgIEFTU0VSVChtX3dvcmtsZXRHbG9iYWxTY29wZS0+aXNDb250
ZXh0VGhyZWFkKCkpOworICAgIHJldHVybiBtX2V4ZWN1dGlvbkZvcmJpZGRlbjsKK30KKwordm9p
ZCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6ZGlzYWJsZUV2YWwoY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UpCit7CisgICAgaW5pdFNjcmlwdElmTmVlZGVkKCk7CisgICAgSlNMb2NrSG9sZGVy
IGxvY2sgeyB2bSgpIH07CisKKyAgICBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPnNldEV2
YWxFbmFibGVkKGZhbHNlLCBlcnJvck1lc3NhZ2UpOworfQorCit2b2lkIFdvcmtsZXRTY3JpcHRD
b250cm9sbGVyOjpkaXNhYmxlV2ViQXNzZW1ibHkoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2Up
Cit7CisgICAgaW5pdFNjcmlwdElmTmVlZGVkKCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2sgeyB2
bSgpIH07CisKKyAgICBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPnNldFdlYkFzc2VtYmx5
RW5hYmxlZChmYWxzZSwgZXJyb3JNZXNzYWdlKTsKK30KKworCit0ZW1wbGF0ZTx0eXBlbmFtZSBK
U0dsb2JhbFNjb3BlUHJvdG90eXBlLCB0eXBlbmFtZSBKU0dsb2JhbFNjb3BlLCB0eXBlbmFtZSBH
bG9iYWxTY29wZT4KK3ZvaWQgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHRXaXRo
U3ViY2xhc3MoKQoreworICAgIEFTU0VSVCghbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKTsK
KworICAgIEpTTG9ja0hvbGRlciBsb2NrKG1fdm0uZ2V0KCkpOworCisgICAgLy8gRXhwbGljaXRs
eSBwcm90ZWN0IHRoZSBnbG9iYWwgb2JqZWN0J3MgcHJvdG90eXBlIHNvIGl0IGlzbid0IGNvbGxl
Y3RlZAorICAgIC8vIHdoZW4gd2UgYWxsb2NhdGUgdGhlIGdsb2JhbCBvYmplY3QuIChPbmNlIHRo
ZSBnbG9iYWwgb2JqZWN0IGlzIGZ1bGx5CisgICAgLy8gY29uc3RydWN0ZWQsIGl0IGNhbiBtYXJr
IGl0cyBvd24gcHJvdG90eXBlLikKKyAgICBTdHJ1Y3R1cmUqIGNvbnRleHRQcm90b3R5cGVTdHJ1
Y3R1cmUgPSBKU0dsb2JhbFNjb3BlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoKm1fdm0sIG51
bGxwdHIsIGpzTnVsbCgpKTsKKyAgICBTdHJvbmc8SlNHbG9iYWxTY29wZVByb3RvdHlwZT4gY29u
dGV4dFByb3RvdHlwZSgqbV92bSwgSlNHbG9iYWxTY29wZVByb3RvdHlwZTo6Y3JlYXRlKCptX3Zt
LCBudWxscHRyLCBjb250ZXh0UHJvdG90eXBlU3RydWN0dXJlKSk7CisgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBKU0dsb2JhbFNjb3BlOjpjcmVhdGVTdHJ1Y3R1cmUoKm1fdm0sIG51bGxwdHIs
IGNvbnRleHRQcm90b3R5cGUuZ2V0KCkpOworICAgIGF1dG8qIHByb3h5U3RydWN0dXJlID0gSlNQ
cm94eTo6Y3JlYXRlU3RydWN0dXJlKCptX3ZtLCBudWxscHRyLCBqc051bGwoKSwgUHVyZUZvcndh
cmRpbmdQcm94eVR5cGUpOworICAgIGF1dG8qIHByb3h5ID0gSlNQcm94eTo6Y3JlYXRlKCptX3Zt
LCBwcm94eVN0cnVjdHVyZSk7CisKKyAgICBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIuc2V0
KCptX3ZtLCBKU0dsb2JhbFNjb3BlOjpjcmVhdGUoKm1fdm0sIHN0cnVjdHVyZSwgc3RhdGljX2Nh
c3Q8R2xvYmFsU2NvcGUmPigqbV93b3JrbGV0R2xvYmFsU2NvcGUpLCBwcm94eSkpOworICAgIGNv
bnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUtPnNldEdsb2JhbE9iamVjdCgqbV92bSwgbV93b3JrbGV0
R2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKTsKKyAgICBBU1NFUlQoc3RydWN0dXJlLT5nbG9iYWxP
YmplY3QoKSA9PSBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpOworICAgIEFTU0VSVChtX3dv
cmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPnN0cnVjdHVyZSgqbV92bSktPmdsb2JhbE9iamVjdCgp
ID09IG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcik7CisgICAgY29udGV4dFByb3RvdHlwZS0+
c3RydWN0dXJlKCptX3ZtKS0+c2V0R2xvYmFsT2JqZWN0KCptX3ZtLCBtX3dvcmtsZXRHbG9iYWxT
Y29wZVdyYXBwZXIuZ2V0KCkpOworICAgIGNvbnRleHRQcm90b3R5cGUtPnN0cnVjdHVyZSgqbV92
bSktPnNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9uKCptX3ZtLCBKU0dsb2JhbFNjb3BlOjpw
cm90b3R5cGUoKm1fdm0sICptX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpKTsKKwor
ICAgIHByb3h5LT5zZXRUYXJnZXQoKm1fdm0sIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci5n
ZXQoKSk7CisgICAgcHJveHktPnN0cnVjdHVyZSgqbV92bSktPnNldEdsb2JhbE9iamVjdCgqbV92
bSwgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKTsKKworICAgIEFTU0VSVChtX3dv
cmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2xldEdsb2Jh
bFNjb3BlV3JhcHBlcik7CisgICAgQVNTRVJUKGFzT2JqZWN0KG1fd29ya2xldEdsb2JhbFNjb3Bl
V3JhcHBlci0+Z2V0UHJvdG90eXBlRGlyZWN0KCptX3ZtKSktPmdsb2JhbE9iamVjdCgpID09IG1f
d29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcik7CisKKyAgICBtX2NvbnNvbGVDbGllbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdvcmtsZXRDb25zb2xlQ2xpZW50PigqbV93b3JrbGV0R2xvYmFsU2NvcGUp
OworICAgIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+c2V0Q29uc29sZUNsaWVudChtX2Nv
bnNvbGVDbGllbnQuZ2V0KCkpOworfQorCit2b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpp
bml0U2NyaXB0KCkKK3sKKyAgICBpZiAobV93b3JrbGV0R2xvYmFsU2NvcGUtPmlzUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUoKSkgeworICAgICAgICBpbml0U2NyaXB0V2l0aFN1YmNsYXNzPEpTUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGVQcm90b3R5cGUsIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUs
IFBhaW50V29ya2xldEdsb2JhbFNjb3BlPigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgV29ya2xldFNjcmlwdENvbnRyb2xs
ZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIFN0cmluZyog
cmV0dXJuZWRFeGNlcHRpb25NZXNzYWdlKQoreworICAgIGlmIChpc0V4ZWN1dGlvbkZvcmJpZGRl
bigpKQorICAgICAgICByZXR1cm47CisKKyAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gZXhj
ZXB0aW9uOworICAgIGV2YWx1YXRlKHNvdXJjZUNvZGUsIGV4Y2VwdGlvbiwgcmV0dXJuZWRFeGNl
cHRpb25NZXNzYWdlKTsKKyAgICBpZiAoZXhjZXB0aW9uKSB7CisgICAgICAgIEpTTG9ja0hvbGRl
ciBsb2NrKHZtKCkpOworICAgICAgICByZXBvcnRFeGNlcHRpb24obV93b3JrbGV0R2xvYmFsU2Nv
cGVXcmFwcGVyLT5nbG9iYWxFeGVjKCksIGV4Y2VwdGlvbik7CisgICAgfQorfQorCit2b2lkIFdv
cmtsZXRTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBz
b3VyY2VDb2RlLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uLCBT
dHJpbmcqIHJldHVybmVkRXhjZXB0aW9uTWVzc2FnZSkKK3sKKyAgICBpZiAoaXNFeGVjdXRpb25G
b3JiaWRkZW4oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW5pdFNjcmlwdElmTmVlZGVkKCk7
CisKKyAgICBhdXRvJiBzdGF0ZSA9ICptX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPmdsb2Jh
bEV4ZWMoKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIEpTTG9ja0hvbGRlciBsb2Nr
IHsgdm0gfTsKKworICAgIEpTRXhlY1N0YXRlOjpwcm9maWxlZEV2YWx1YXRlKCZzdGF0ZSwgSlND
OjpQcm9maWxpbmdSZWFzb246Ok90aGVyLCBzb3VyY2VDb2RlLmpzU291cmNlQ29kZSgpLCBtX3dv
cmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbFRoaXMoKSwgcmV0dXJuZWRFeGNlcHRpb24p
OworCisgICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKSB7CisgICAgICAgIC8vIFRoaXMgRklYTUUg
aXMgZnJvbSBpbiBXb3JrZXJTY3JpcHRDb250cm9sbGVyLgorICAgICAgICBpZiAoLyptX3dvcmts
ZXRHbG9iYWxTY29wZS0+Y2FuSW5jbHVkZUVycm9yRGV0YWlscyhzb3VyY2VDb2RlLmNhY2hlZFNj
cmlwdCgpLCBzb3VyY2VDb2RlLnVybCgpLnN0cmluZygpKSovIHRydWUpIHsKKyAgICAgICAgICAg
IC8vIEZJWE1FOiBJdCdzIG5vdCBncmVhdCB0aGF0IHRoaXMgY2FuIHJ1biBhcmJpdHJhcnkgY29k
ZSB0byBzdHJpbmctaWZ5IHRoZSB2YWx1ZSBvZiB0aGUgZXhjZXB0aW9uLgorICAgICAgICAgICAg
Ly8gRG8gd2UgbmVlZCB0byBkbyBhbnl0aGluZyB0byBoYW5kbGUgdGhhdCBwcm9wZXJseSwgaWYg
aXQsIHNheSwgcmFpc2VzIGFub3RoZXIgZXhjZXB0aW9uPworICAgICAgICAgICAgaWYgKHJldHVy
bmVkRXhjZXB0aW9uTWVzc2FnZSkKKyAgICAgICAgICAgICAgICAqcmV0dXJuZWRFeGNlcHRpb25N
ZXNzYWdlID0gcmV0dXJuZWRFeGNlcHRpb24tPnZhbHVlKCkudG9XVEZTdHJpbmcoJnN0YXRlKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIE92ZXJ3cml0ZSB0aGUgZGV0YWlsZWQg
ZXJyb3Igd2l0aCBhIGdlbmVyaWMgZXJyb3IuCisgICAgICAgICAgICBTdHJpbmcgZ2VuZXJpY0Vy
cm9yTWVzc2FnZSB7ICJTY3JpcHQgZXJyb3IuIl9zIH07CisgICAgICAgICAgICBpZiAocmV0dXJu
ZWRFeGNlcHRpb25NZXNzYWdlKQorICAgICAgICAgICAgICAgICpyZXR1cm5lZEV4Y2VwdGlvbk1l
c3NhZ2UgPSBnZW5lcmljRXJyb3JNZXNzYWdlOworICAgICAgICAgICAgcmV0dXJuZWRFeGNlcHRp
b24gPSBKU0M6OkV4Y2VwdGlvbjo6Y3JlYXRlKHZtLCBjcmVhdGVFcnJvcigmc3RhdGUsIGdlbmVy
aWNFcnJvck1lc3NhZ2UpKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBXb3JrbGV0U2Ny
aXB0Q29udHJvbGxlcjo6c2V0RXhjZXB0aW9uKEpTQzo6RXhjZXB0aW9uKiBleGNlcHRpb24pCit7
CisgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIt
Pmdsb2JhbEV4ZWMoKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29w
ZSwgZXhjZXB0aW9uKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iYTU3OGJiZjlhYjMyMWM5NzAxNDRlYjhmY2UzOGJlZTUzNjVlODdmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xs
ZXIuaApAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkK
KworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RlYnVnZ2VyLmg+CisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNSdW5Mb29wVGltZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJv
bmcuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+Cisj
aW5jbHVkZSA8d3RmL05ha2VkUHRyLmg+CisKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgVk07Cit9
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSlNXb3JrbGV0R2xvYmFsU2NvcGU7Citj
bGFzcyBTY3JpcHRTb3VyY2VDb2RlOworY2xhc3MgV29ya2xldENvbnNvbGVDbGllbnQ7CitjbGFz
cyBXb3JrbGV0R2xvYmFsU2NvcGU7CitjbGFzcyBXb3JrbGV0Q29uc29sZUNsaWVudDsKKworY2xh
c3MgV29ya2xldFNjcmlwdENvbnRyb2xsZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdv
cmtsZXRTY3JpcHRDb250cm9sbGVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6
CisgICAgV29ya2xldFNjcmlwdENvbnRyb2xsZXIoV29ya2xldEdsb2JhbFNjb3BlKik7CisgICAg
fldvcmtsZXRTY3JpcHRDb250cm9sbGVyKCk7CisKKyAgICBKU1dvcmtsZXRHbG9iYWxTY29wZSog
d29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcigpCisgICAgeworICAgICAgICBpbml0U2NyaXB0SWZO
ZWVkZWQoKTsKKyAgICAgICAgcmV0dXJuIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci5nZXQo
KTsKKyAgICB9CisKKyAgICB2b2lkIGZvcmJpZEV4ZWN1dGlvbigpOworICAgIGJvb2wgaXNFeGVj
dXRpb25Gb3JiaWRkZW4oKSBjb25zdDsKKworICAgIHZvaWQgZGlzYWJsZUV2YWwoY29uc3QgU3Ry
aW5nJiBlcnJvck1lc3NhZ2UpOworICAgIHZvaWQgZGlzYWJsZVdlYkFzc2VtYmx5KGNvbnN0IFN0
cmluZyYgZXJyb3JNZXNzYWdlKTsKKworICAgIHZvaWQgZXZhbHVhdGUoY29uc3QgU2NyaXB0U291
cmNlQ29kZSYsIFN0cmluZyogcmV0dXJuZWRFeGNlcHRpb25NZXNzYWdlID0gbnVsbHB0cik7Cisg
ICAgdm9pZCBldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgTmFrZWRQdHI8SlNDOjpF
eGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbiwgU3RyaW5nKiByZXR1cm5lZEV4Y2VwdGlvbk1l
c3NhZ2UgPSBudWxscHRyKTsKKworICAgIHZvaWQgc2V0RXhjZXB0aW9uKEpTQzo6RXhjZXB0aW9u
Kik7CisKKyAgICBKU0M6OlZNJiB2bSgpIHsgcmV0dXJuICptX3ZtOyB9CisKK3ByaXZhdGU6Cisg
ICAgdm9pZCBpbml0U2NyaXB0SWZOZWVkZWQoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3dvcmts
ZXRHbG9iYWxTY29wZVdyYXBwZXIpCisgICAgICAgICAgICBpbml0U2NyaXB0KCk7CisgICAgfQor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdFNjcmlwdCgpOworCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgSlNHbG9iYWxTY29wZVByb3RvdHlwZSwgdHlwZW5hbWUgSlNHbG9iYWxTY29wZSwgdHlw
ZW5hbWUgR2xvYmFsU2NvcGU+CisgICAgdm9pZCBpbml0U2NyaXB0V2l0aFN1YmNsYXNzKCk7CisK
KyAgICBib29sIG1fZXhlY3V0aW9uRm9yYmlkZGVuIHsgZmFsc2UgfTsKKyAgICBSZWZQdHI8SlND
OjpWTT4gbV92bTsKKyAgICBXb3JrbGV0R2xvYmFsU2NvcGUqIG1fd29ya2xldEdsb2JhbFNjb3Bl
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXb3JrbGV0Q29uc29sZUNsaWVudD4gbV9jb25zb2xlQ2xp
ZW50OworICAgIEpTQzo6U3Ryb25nPEpTV29ya2xldEdsb2JhbFNjb3BlPiBtX3dvcmtsZXRHbG9i
YWxTY29wZVdyYXBwZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCAxYjU4MGQ5NDkwMTFmNDY0MTNiZGM2M2Y4NDg5NDc2MjA3MjQwNTRjLi5mYTk5ZjU5ZjFh
MTdmNjljOTVjYWFiZmQzZjc1N2FkMzg2YjY3YzE0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIw
MTgtMTAtMjYgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisg
ICAgICAgIEFkZCBuZXcgZ2xvYmFsIG9iamVjdCBhbmQgcHJlbGltaW5hcnkgV29ya2xldHMgc3Vw
cG9ydCBmb3IgQ1NTIHBhaW50aW5nIGFwaQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTkwOTc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIGEgbmV3IHRlc3QgaGFybmVzcyBmb3Igd29ya2xldCB0ZXN0
cywgc2luY2UgdGhleSBkbyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIGRvbS4KKworICAgICAgICAq
IGZhc3QvY3NzLWN1c3RvbS1wYWludC9iYXNpYy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFz
dC9jc3MtY3VzdG9tLXBhaW50L2Jhc2ljLmh0bWw6CisgICAgICAgICogZmFzdC9jc3MtY3VzdG9t
LXBhaW50L3JlZ2lzdGVyUGFpbnRCaW5kaW5ncy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVnaXN0ZXJQYWludEJpbmRpbmdzLWV4cGVjdGVk
LnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVnaXN0ZXJQ
YWludEJpbmRpbmdzLmh0bWw6CisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Jlc291
cmNlcy90ZXN0aGFybmVzcy13b3JrbGV0LmpzOiBBZGRlZC4KKyAgICAgICAgKGZvcm1hdF92YWx1
ZSk6CisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qczogQWRkZWQuCisgICAgICAgIChhc3luYy5pbXBvcnRXb3JrbGV0KToKKyAgICAgICAgKiBm
YXN0L2Nzcy1jdXN0b20tcGFpbnQvd29ya2xldC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvd29ya2xldC5odG1sOiBBZGRlZC4KKwogMjAxOC0x
MC0yNiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIzNzQ3OSBhbmQgcjIzNzQ4NC4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9iYXNpYy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYmFzaWMtZXhwZWN0ZWQudHh0CmluZGV4
IGVhYTE3NDNlNDM5OTAwYmZkNzNiMGMxOTE2ZTNkMmVjZWU2ZDRiNTYuLjAyMDU5Zjk4MzVlMjM2
YWE1ZTk5Mjk1NTE0OTE3M2I1ZDc1MjU1YTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzLWN1c3RvbS1wYWludC9iYXNpYy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9jc3MtY3VzdG9tLXBhaW50L2Jhc2ljLWV4cGVjdGVkLnR4dApAQCAtMSwxMCArMSwzIEBACiAK
LVBBU1MgdGVzdCB0aGF0IHJlZ2lzdGVyUGFpbnQgcnVucyAKLVBBU1MgdGVzdCB0aGF0IHJlZ2lz
dGVyUGFpbnQgcnVucyB3aXRob3V0IGlucHV0UHJvcGVydGllcyAKLVBBU1MgdGVzdCB0aGF0IHJl
Z2lzdGVyUGFpbnQgcnVucyB3aXRoIGlucHV0QXJndW1lbnRzIAotUEFTUyB0ZXN0IHRoYXQgcmVn
aXN0ZXJQYWludCBydW5zIHdpdGggY29udGV4dE9wdGlvbnMgCi1QQVNTIHRlc3QgdGhhdCByZWdp
c3RlclBhaW50IHJ1bnMgd2l0aCBwcmVkZWZpbmVkIGNsYXNzIAotUEFTUyB0ZXN0IHRoYXQgcmVn
aXN0ZXJQYWludCBhY2NlcHRzIG9ubHkgYSBzdHJpbmcgYW5kIGEgY2xhc3MgY29uc3RydWN0b3Ig
CiBQQVNTIHRlc3QgdGhhdCB0ZXN0IGRpdiBoYXMgcGFpbnQoKSB2YWx1ZSAKLVBBU1MgdGVzdCB0
aGF0IHRlc3QgZGl2IHBhaW50IGNhbGxiYWNrIGdldHMgY2FsbGVkIAogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYmFzaWMuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvY3NzLWN1c3RvbS1wYWludC9iYXNpYy5odG1sCmluZGV4IDNmNGRjM2EyZDAyZWYyMWEy
ZTk3MmQ0YzhiNGYyZmFlOGMzODk0NTguLjRjOGIwY2Y1MmUxNmQ1YzhmMDI4NzhlMmNmNzU3OTUz
NDBlMjhmOTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9i
YXNpYy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9iYXNpYy5o
dG1sCkBAIC0xNiw3MCArMTYsNyBAQAogPGRpdiBpZD0icGFpbnQiPjwvZGl2PgogCiA8c2NyaXB0
PgotdGVzdChmdW5jdGlvbigpIHsKLSAgQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lz
dGVyUGFpbnQoJ3Rlc3QxJywgY2xhc3MgewotICAgIHN0YXRpYyBnZXQgaW5wdXRQcm9wZXJ0aWVz
KCkgeyByZXR1cm4gWyItLXRlc3QiXTsgfQotICAgIHBhaW50KCkgeyB9Ci0gIH0pOwotfSwgJ3Rl
c3QgdGhhdCByZWdpc3RlclBhaW50IHJ1bnMnKTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgQ1NT
LnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3QyJywgY2xhc3Mgewot
ICAgIHBhaW50KCkgeyB9Ci0gIH0pOwotfSwgJ3Rlc3QgdGhhdCByZWdpc3RlclBhaW50IHJ1bnMg
d2l0aG91dCBpbnB1dFByb3BlcnRpZXMnKTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgQ1NTLnBh
aW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3QzJywgY2xhc3MgewotICAg
IHN0YXRpYyBnZXQgaW5wdXRBcmd1bWVudHMoKSB7IHJldHVybiBbIjxsZW5ndGg+Il07IH0KLSAg
ICBwYWludCgpIHsgfQotICB9KTsKLX0sICd0ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBydW5zIHdp
dGggaW5wdXRBcmd1bWVudHMnKTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgQ1NTLnBhaW50V29y
a2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3Q0JywgY2xhc3MgewotICAgIHN0YXRp
YyBnZXQgY29udGV4dE9wdGlvbnMoKSB7IHJldHVybiB7IGFscGhhOiB0cnVlIH07IH0KLSAgICBw
YWludCgpIHsgfQotICB9KTsKLX0sICd0ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBydW5zIHdpdGgg
Y29udGV4dE9wdGlvbnMnKTsKLQotY2xhc3MgTXlQYWludCB7Ci0gIHBhaW50KCkgeyB9Ci19Ci0K
LXRlc3QoZnVuY3Rpb24oKSB7Ci0gIENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3Rl
clBhaW50KCd0ZXN0NScsIE15UGFpbnQpOwotICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdJbnZh
bGlkTW9kaWZpY2F0aW9uRXJyb3InfSwgKCkgPT4gQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3Bl
LnJlZ2lzdGVyUGFpbnQoJ3Rlc3Q1JywgTXlQYWludCkpOwotICBDU1MucGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUucmVnaXN0ZXJQYWludCgndGVzdDYnLCBjbGFzcyBleHRlbmRzIE15UGFpbnQgeyB9
KTsKLX0sICd0ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBydW5zIHdpdGggcHJlZGVmaW5lZCBjbGFz
cycpOwotCi10ZXN0KGZ1bmN0aW9uKCkgewotICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdJbnZh
bGlkTW9kaWZpY2F0aW9uRXJyb3InfSwgKCkgPT4gQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3Bl
LnJlZ2lzdGVyUGFpbnQoJ3Rlc3Q2JywgJ3Rlc3QnKSk7Ci0gIGFzc2VydF90aHJvd3MobmV3IFR5
cGVFcnJvcigpLCAoKSA9PiBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWlu
dCgndGVzdDcnKSk7Ci0gIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBDU1Mu
cGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgndGVzdDgnLCBbXSkpOwotICBh
c3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gQ1NTLnBhaW50V29ya2xldEdsb2Jh
bFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3Q5Jywge30pKTsKLSAgYXNzZXJ0X3Rocm93cyhuZXcg
VHlwZUVycm9yKCksICgpID0+IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBh
aW50KCd0ZXN0MTAnLCA1KSk7Ci0gIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9
PiBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgnJywgNSkpOwotfSwg
J3Rlc3QgdGhhdCByZWdpc3RlclBhaW50IGFjY2VwdHMgb25seSBhIHN0cmluZyBhbmQgYSBjbGFz
cyBjb25zdHJ1Y3RvcicpOwotCiB0ZXN0KGZ1bmN0aW9uKCkgewogICBhc3NlcnRfZXF1YWxzKGdl
dENvbXB1dGVkU3R5bGUocGFpbnQpLmdldFByb3BlcnR5VmFsdWUoImJhY2tncm91bmQtaW1hZ2Ui
KSwgInBhaW50KG15LXBhaW50KSIpOwogfSwgJ3Rlc3QgdGhhdCB0ZXN0IGRpdiBoYXMgcGFpbnQo
KSB2YWx1ZScpOwotCi1sZXQgcGFpbnRfY2FsbGVkX3Rlc3QgPSBhc3luY190ZXN0KCd0ZXN0IHRo
YXQgdGVzdCBkaXYgcGFpbnQgY2FsbGJhY2sgZ2V0cyBjYWxsZWQnKTsKLXBhaW50X2NhbGxlZF90
ZXN0LnN0ZXAoZnVuY3Rpb24oKSB7Ci0gIENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdp
c3RlclBhaW50KCdteS1wYWludCcsIGNsYXNzIHsKLSAgICBwYWludChjdHgsIGdlb20sIHByb3Bl
cnRpZXMpIHsKLSAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKXsKLSAgICAgICAgZm9y
ICh2YXIgaiA9IDA7IGogPCA2OyBqKyspewotICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSAncmdi
KCcgKyBNYXRoLmZsb29yKDI1NSAtIDQyLjUgKiBpKSArICcsJyArCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICBNYXRoLmZsb29yKDI1NSAtIDQyLjUgKiBqKSArICcsMCknOwotICAgICAgICAg
IGN0eC5maWxsUmVjdChqICogMjUsIGkgKiAyNSwgMjUsIDI1KTsKLSAgICAgICAgfQotICAgICAg
fQotICAgICAgcGFpbnRfY2FsbGVkX3Rlc3QuZG9uZSgpOwotICAgIH0KLSAgfSk7Ci19KTsKLQog
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQv
cmVnaXN0ZXJQYWludEJpbmRpbmdzLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy1jdXN0b20tcGFpbnQvcmVnaXN0ZXJQYWludEJpbmRpbmdzLWV4cGVjdGVkLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGI0MmI2MmRhMTNlZGE4MTk2MTBiMzE5N2I0ZTQ1YTU0NzNiZGNmMwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9yZWdpc3RlclBhaW50
QmluZGluZ3MtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDE2IEBACis8IURPQ1RZUEUgaHRtbD48
IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGV4cGVyaW1lbnRhbDpDU1NQYWludGluZ0FQSUVuYWJs
ZWQ9dHJ1ZSBdIC0tPgorCis8Y2FudmFzIGlkPSJwYWludCIgd2lkdGg9IjE1MHB4IiBoZWlnaHQ9
IjE1MHB4IiA+PC9jYW52YXM+CisKKzxzY3JpcHQgaWQ9ImNvZGUiPgordmFyIGNhbnZhcyA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYWludCcpOwordmFyIGN0eCA9IGNhbnZhcy5nZXRDb250
ZXh0KCcyZCcpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKyl7CisgIGZvciAodmFyIGog
PSAwOyBqIDwgNjsgaisrKXsKKyAgICBjdHguZmlsbFN0eWxlID0gJ3JnYignICsgTWF0aC5mbG9v
cigyNTUgLSA0Mi41ICogaSkgKyAnLCcgKworICAgICAgICAgICAgICAgICAgICAgTWF0aC5mbG9v
cigyNTUgLSA0Mi41ICogaikgKyAnLDApJzsKKyAgICBjdHguZmlsbFJlY3QoaiAqIDI1LCBpICog
MjUsIDI1LCAyNSk7CisgIH0KK30KKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MtY3VzdG9tLXBhaW50L3JlZ2lzdGVyUGFpbnRCaW5kaW5ncy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVnaXN0ZXJQYWludEJpbmRpbmdz
LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzAxNDMxNTJiZDg2
YzlkYjBkOTcyOTI0MjJkNWI4YWY4OGE1MTA2Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVn
aXN0ZXJQYWludEJpbmRpbmdzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDEzICsw
LDAgQEAKLQotUEFTUyByZWdpc3RlclBhaW50IG11c3QgYmUgYSBtZXRob2QgCi1QQVNTIG11c3Qg
Z2V0ICJwcm90b3R5cGUiIHByb3BlcnR5IG9mIHRoZSBjb25zdHJ1Y3RvciAKLVBBU1MgbXVzdCBy
ZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgZ2V0dGluZyAiaW5wdXRQcm9wZXJ0aWVz
IiBwcm9wZXJ0eSBvZiB0aGUgY29uc3RydWN0b3IgCi1QQVNTIG11c3QgcmV0aHJvdyBhbiBleGNl
cHRpb24gdGhyb3duIHdoaWxlIGdldHRpbmcgInByb3RvdHlwZSIgcHJvcGVydHkgb2YgdGhlIGNv
bnN0cnVjdG9yIAotUEFTUyBtdXN0IHRocm93IHdoZW4gInByb3RvdHlwZSIgcHJvcGVydHkgb2Yg
dGhlIGNvbnN0cnVjdG9yIGlzIG5vdCBhbiBvYmplY3QgCi1QQVNTIG11c3QgZ2V0IHBhaW50IGNh
bGxiYWNrIG9mIHRoZSBjb25zdHJ1Y3RvciBwcm90b3R5cGUgCi1QQVNTIG11c3QgcmV0aHJvdyBh
biBleGNlcHRpb24gdGhyb3duIHdoaWxlIGdldHRpbmcgcGFpbnQgY2FsbGJhY2sgb24gdGhlIGNv
bnN0cnVjdG9yIHByb3RvdHlwZSAKLVBBU1MgbXVzdCByZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJv
d24gd2hpbGUgY29udmVydGluZyBwYWludCBjYWxsYmFjayB2YWx1ZSB0byBGdW5jdGlvbiBjYWxs
YmFjayB0eXBlIAotUEFTUyBtdXN0IHJldGhyb3cgYW4gZXhjZXB0aW9uIHRocm93biB3aGlsZSBj
b252ZXJ0aW5nIHRoZSB2YWx1ZSBvZiBpbnB1dEFyZ3VtZW50cyB0byBzZXF1ZW5jZTxET01TdHJp
bmc+IAotUEFTUyBtdXN0IHJldGhyb3cgYW4gZXhjZXB0aW9uIHRocm93biB3aGlsZSBpdGVyYXRp
bmcgb3ZlciBpbnB1dEFyZ3VtZW50cyB0byBzZXF1ZW5jZTxET01TdHJpbmc+IAotUEFTUyBtdXN0
IHJldGhyb3cgYW4gZXhjZXB0aW9uIHRocm93biB3aGlsZSByZXRyaWV2aW5nIFN5bWJvbC5pdGVy
YXRvciBvbiBpbnB1dEFyZ3VtZW50cyAKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9j
c3MtY3VzdG9tLXBhaW50L3JlZ2lzdGVyUGFpbnRCaW5kaW5ncy5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MtY3VzdG9tLXBhaW50L3JlZ2lzdGVyUGFpbnRCaW5kaW5ncy5odG1sCmluZGV4IGRj
OTAyYzRjZDY1OTEwZDViMThjYWUxNTRlZjMzOGNhOTg5OGJjZGMuLmZjMTNlYjliYTQ1NjUzOWM5
NGY0ZjYyNjI4NDUxY2RkODQ1ZjM0YjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3Nz
LWN1c3RvbS1wYWludC9yZWdpc3RlclBhaW50QmluZGluZ3MuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVnaXN0ZXJQYWludEJpbmRpbmdzLmh0bWwKQEAgLTIs
MTcgKzIsNjQgQEAKIDxtZXRhIG5hbWU9ImF1dGhvciIgdGl0bGU9Ikp1c3RpbiBNaWNoYXVkIiBo
cmVmPSJtYWlsdG86anVzdGluX21pY2hhdWRAd2Via2l0Lm9yZyI+CiA8bWV0YSBuYW1lPSJhc3Nl
cnQiIGNvbnRlbnQ9InJlZ2lzdGVyUGFpbnQgYWNjZXNzZXMgYXJndW1lbnRzIGluIHRoZSBjb3Jy
ZWN0IG9yZGVyIj4KIDxsaW5rIHJlbD0iaGVscCIgY29udGVudD0iaHR0cHM6Ly9kcmFmdHMuY3Nz
LWhvdWRpbmkub3JnL2Nzcy1wYWludC1hcGktMS8iPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKworPHN0eWxlPgorICAjcGFp
bnQgeworICAgIGJhY2tncm91bmQtaW1hZ2U6IHBhaW50KG15LXBhaW50KTsKKyAgICB3aWR0aDog
MTUwcHg7CisgICAgaGVpZ2h0OiAxNTBweDsKKyAgfQorPC9zdHlsZT4KKworPGRpdiBpZD0icGFp
bnQiPjwvZGl2PgorCis8c2NyaXB0IGlkPSJjb2RlIiB0eXBlPSJ0ZXh0L3dvcmtsZXQiPgogY2xh
c3MgTXlQYWludCB7CiAgIHBhaW50KCkgeyB9CiB9CiAKLXRlc3QoZnVuY3Rpb24gKCkgewotICAg
IGFzc2VydF90cnVlKCdyZWdpc3RlclBhaW50JyBpbiBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUuX19wcm90b19fLCAnInJlZ2lzdGVyUGFpbnQiIGV4aXN0cyBvbiBwcm90b3R5cGUnKTsKLSAg
ICBhc3NlcnRfdHJ1ZSgncmVnaXN0ZXJQYWludCcgaW4gQ1NTLnBhaW50V29ya2xldEdsb2JhbFNj
b3BlLCAnInJlZ2lzdGVyUGFpbnQiIGV4aXN0cyBvbiB3aW5kb3cnKTsKLX0sICdyZWdpc3RlclBh
aW50IG11c3QgYmUgYSBtZXRob2QnKTsKK3Rlc3QoZnVuY3Rpb24oKSB7CisgIHJlZ2lzdGVyUGFp
bnQoJ2Jhc2ljMScsIGNsYXNzIHsKKyAgICBzdGF0aWMgZ2V0IGlucHV0UHJvcGVydGllcygpIHsg
cmV0dXJuIFsiLS10ZXN0Il07IH0KKyAgICBwYWludCgpIHsgfQorICB9KTsKK30sICd0ZXN0IHRo
YXQgcmVnaXN0ZXJQYWludCBydW5zJyk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgIHJlZ2lzdGVy
UGFpbnQoJ2Jhc2ljMicsIGNsYXNzIHsKKyAgICBwYWludCgpIHsgfQorICB9KTsKK30sICd0ZXN0
IHRoYXQgcmVnaXN0ZXJQYWludCBydW5zIHdpdGhvdXQgaW5wdXRQcm9wZXJ0aWVzJyk7CisKK3Rl
c3QoZnVuY3Rpb24oKSB7CisgIHJlZ2lzdGVyUGFpbnQoJ2Jhc2ljMycsIGNsYXNzIHsKKyAgICBz
dGF0aWMgZ2V0IGlucHV0QXJndW1lbnRzKCkgeyByZXR1cm4gWyI8bGVuZ3RoPiJdOyB9CisgICAg
cGFpbnQoKSB7IH0KKyAgfSk7Cit9LCAndGVzdCB0aGF0IHJlZ2lzdGVyUGFpbnQgcnVucyB3aXRo
IGlucHV0QXJndW1lbnRzJyk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgIHJlZ2lzdGVyUGFpbnQo
J2Jhc2ljNCcsIGNsYXNzIHsKKyAgICBzdGF0aWMgZ2V0IGNvbnRleHRPcHRpb25zKCkgeyByZXR1
cm4geyBhbHBoYTogdHJ1ZSB9OyB9CisgICAgcGFpbnQoKSB7IH0KKyAgfSk7Cit9LCAndGVzdCB0
aGF0IHJlZ2lzdGVyUGFpbnQgcnVucyB3aXRoIGNvbnRleHRPcHRpb25zJyk7CisKK3Rlc3QoZnVu
Y3Rpb24oKSB7CisgIHJlZ2lzdGVyUGFpbnQoJ2Jhc2ljNScsIE15UGFpbnQpOworICBhc3NlcnRf
dGhyb3dzKHsnbmFtZSc6ICdJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3InfSwgKCkgPT4gcmVnaXN0
ZXJQYWludCgnYmFzaWM1JywgTXlQYWludCkpOworICByZWdpc3RlclBhaW50KCdiYXNpYzYnLCBj
bGFzcyBleHRlbmRzIE15UGFpbnQgeyB9KTsKK30sICd0ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBy
dW5zIHdpdGggcHJlZGVmaW5lZCBjbGFzcycpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICBhc3Nl
cnRfdGhyb3dzKHsnbmFtZSc6ICdJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3InfSwgKCkgPT4gcmVn
aXN0ZXJQYWludCgnYmFzaWM2JywgJ3Rlc3QnKSk7CisgIGFzc2VydF90aHJvd3MobmV3IFR5cGVF
cnJvcigpLCAoKSA9PiByZWdpc3RlclBhaW50KCdiYXNpYzgnKSk7CisgIGFzc2VydF90aHJvd3Mo
bmV3IFR5cGVFcnJvcigpLCAoKSA9PiByZWdpc3RlclBhaW50KCdiYXNpYzknLCBbXSkpOworICBh
c3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gcmVnaXN0ZXJQYWludCgnYmFzaWMx
MCcsIHt9KSk7CisgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiByZWdpc3Rl
clBhaW50KCdiYXNpYzExJywgNSkpOworICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwg
KCkgPT4gcmVnaXN0ZXJQYWludCgnJywgNSkpOworfSwgJ3Rlc3QgdGhhdCByZWdpc3RlclBhaW50
IGFjY2VwdHMgb25seSBhIHN0cmluZyBhbmQgYSBjbGFzcyBjb25zdHJ1Y3RvcicpOwogCiB0ZXN0
KGZ1bmN0aW9uICgpIHsKICAgICBjb25zdCBjYWxscyA9IFtdOwpAQCAtMjIsNyArNjksNyBAQCB0
ZXN0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIHJldHVybiB0YXJnZXRbbmFtZV07CiAgICAg
ICAgIH0KICAgICB9KTsKLSAgICBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQ
YWludCgndGVzdC1wcm90bycsIHByb3h5KTsKKyAgICByZWdpc3RlclBhaW50KCd0ZXN0LXByb3Rv
JywgcHJveHkpOwogICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2FsbHMsIFsiaW5wdXRQcm9wZXJ0
aWVzIiwgImlucHV0QXJndW1lbnRzIiwgImNvbnRleHRPcHRpb25zIiwgInByb3RvdHlwZSJdKTsK
IH0sICdtdXN0IGdldCAicHJvdG90eXBlIiBwcm9wZXJ0eSBvZiB0aGUgY29uc3RydWN0b3InKTsK
IApAQCAtMzYsNyArODMsNyBAQCB0ZXN0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIHJldHVy
biB0YXJnZXRbbmFtZV07CiAgICAgICAgIH0KICAgICB9KTsKLSAgICBhc3NlcnRfdGhyb3dzKHsn
bmFtZSc6ICdleHBlY3RlZEVycm9yJ30sIGZ1bmN0aW9uICgpIHsgQ1NTLnBhaW50V29ya2xldEds
b2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3QtcmV0aHJvdy1pbnB1dFByb3BlcnRpZXMwJywg
cHJveHkpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdleHBlY3RlZEVycm9yJ30s
IGZ1bmN0aW9uICgpIHsgcmVnaXN0ZXJQYWludCgndGVzdC1yZXRocm93LWlucHV0UHJvcGVydGll
czAnLCBwcm94eSk7IH0pOwogfSwgJ211c3QgcmV0aHJvdyBhbiBleGNlcHRpb24gdGhyb3duIHdo
aWxlIGdldHRpbmcgImlucHV0UHJvcGVydGllcyIgcHJvcGVydHkgb2YgdGhlIGNvbnN0cnVjdG9y
Jyk7CiAKIHRlc3QoZnVuY3Rpb24gKCkgewpAQCAtNDksNyArOTYsNyBAQCB0ZXN0KGZ1bmN0aW9u
ICgpIHsKICAgICAgICAgICAgIHJldHVybiB0YXJnZXRbbmFtZV07CiAgICAgICAgIH0KICAgICB9
KTsKLSAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdleHBlY3RlZEVycm9yJ30sIGZ1bmN0aW9u
ICgpIHsgQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3QtcmV0
aHJvdy1wcm90bycsIHByb3h5KTsgfSk7CisgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnZXhw
ZWN0ZWRFcnJvcid9LCBmdW5jdGlvbiAoKSB7IHJlZ2lzdGVyUGFpbnQoJ3Rlc3QtcmV0aHJvdy1w
cm90bycsIHByb3h5KTsgfSk7CiB9LCAnbXVzdCByZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJvd24g
d2hpbGUgZ2V0dGluZyAicHJvdG90eXBlIiBwcm9wZXJ0eSBvZiB0aGUgY29uc3RydWN0b3InKTsK
IAogdGVzdChmdW5jdGlvbiAoKSB7CkBAIC02MywxNiArMTEwLDE2IEBAIHRlc3QoZnVuY3Rpb24g
KCkgewogICAgIH0pOwogCiAgICAgcmV0dXJuZWRWYWx1ZSA9IG51bGw7Ci0gICAgYXNzZXJ0X3Ro
cm93cyh7J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgQ1NTLnBhaW50V29ya2xl
dEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3QtcmV0aHJvdy1wcm90by1ub29iajEnLCBw
cm94eSk7IH0sCisgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0
aW9uICgpIHsgcmVnaXN0ZXJQYWludCgndGVzdC1yZXRocm93LXByb3RvLW5vb2JqMScsIHByb3h5
KTsgfSwKICAgICAgICAgJ211c3QgdGhyb3cgd2hlbiAicHJvdG90eXBlIiBwcm9wZXJ0eSBvZiB0
aGUgY29uc3RydWN0b3IgaXMgbnVsbCcpOwogICAgIHJldHVybmVkVmFsdWUgPSB1bmRlZmluZWQ7
Ci0gICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsg
Q1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3QtcmV0aHJvdy1w
cm90by1ub29iajInLCBwcm94eSk7IH0sCisgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnVHlw
ZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgcmVnaXN0ZXJQYWludCgndGVzdC1yZXRocm93LXByb3Rv
LW5vb2JqMicsIHByb3h5KTsgfSwKICAgICAgICAgJ211c3QgdGhyb3cgd2hlbiAicHJvdG90eXBl
IiBwcm9wZXJ0eSBvZiB0aGUgY29uc3RydWN0b3IgaXMgdW5kZWZpbmVkJyk7CiAgICAgcmV0dXJu
ZWRWYWx1ZSA9ICdoZWxsbyc7Ci0gICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnVHlwZUVycm9y
J30sIGZ1bmN0aW9uICgpIHsgQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFp
bnQoJ3Rlc3QtcmV0aHJvdy1wcm90by1ub29iajMnLCBwcm94eSk7OyB9LAorICAgIGFzc2VydF90
aHJvd3MoeyduYW1lJzogJ1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IHJlZ2lzdGVyUGFpbnQo
J3Rlc3QtcmV0aHJvdy1wcm90by1ub29iajMnLCBwcm94eSk7OyB9LAogICAgICAgICAnbXVzdCB0
aHJvdyB3aGVuICJwcm90b3R5cGUiIHByb3BlcnR5IG9mIHRoZSBjb25zdHJ1Y3RvciBpcyBhIHN0
cmluZycpOwogICAgIHJldHVybmVkVmFsdWUgPSAxOwotICAgIGFzc2VydF90aHJvd3MoeyduYW1l
JzogJ1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5yZWdpc3RlclBhaW50KCd0ZXN0LXJldGhyb3ctcHJvdG8tbm9vYmo0JywgcHJveHkpOzsgfSwK
KyAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBy
ZWdpc3RlclBhaW50KCd0ZXN0LXJldGhyb3ctcHJvdG8tbm9vYmo0JywgcHJveHkpOzsgfSwKICAg
ICAgICAgJ211c3QgdGhyb3cgd2hlbiAicHJvdG90eXBlIiBwcm9wZXJ0eSBvZiB0aGUgY29uc3Ry
dWN0b3IgaXMgYSBudW1iZXInKTsKIAogfSwgJ211c3QgdGhyb3cgd2hlbiAicHJvdG90eXBlIiBw
cm9wZXJ0eSBvZiB0aGUgY29uc3RydWN0b3IgaXMgbm90IGFuIG9iamVjdCcpOwpAQCAtODcsNyAr
MTM0LDcgQEAgdGVzdChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0W25h
bWVdOwogICAgICAgICB9CiAgICAgfSk7Ci0gICAgQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3Bl
LnJlZ2lzdGVyUGFpbnQoJ2NhbGxiYWNrcycsIGNvbnN0cnVjdG9yKTsKKyAgICByZWdpc3RlclBh
aW50KCdjYWxsYmFja3MnLCBjb25zdHJ1Y3Rvcik7CiAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhj
YWxscywgWydwYWludCddKTsKIH0sICdtdXN0IGdldCBwYWludCBjYWxsYmFjayBvZiB0aGUgY29u
c3RydWN0b3IgcHJvdG90eXBlJyk7CiAKQEAgLTEwMiw3ICsxNDksNyBAQCB0ZXN0KGZ1bmN0aW9u
ICgpIHsKICAgICAgICAgICAgIHJldHVybiB0YXJnZXRbbmFtZV07CiAgICAgICAgIH0KICAgICB9
KTsKLSAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdleHBlY3RlZEVycm9yJ30sIGZ1bmN0aW9u
ICgpIHsgQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ2NhbGxiYWNr
cy10aHJvdycsIGNvbnN0cnVjdG9yKTsgfSk7CisgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAn
ZXhwZWN0ZWRFcnJvcid9LCBmdW5jdGlvbiAoKSB7IHJlZ2lzdGVyUGFpbnQoJ2NhbGxiYWNrcy10
aHJvdycsIGNvbnN0cnVjdG9yKTsgfSk7CiAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjYWxscywg
WydwYWludCddKTsKIH0sICdtdXN0IHJldGhyb3cgYW4gZXhjZXB0aW9uIHRocm93biB3aGlsZSBn
ZXR0aW5nIHBhaW50IGNhbGxiYWNrIG9uIHRoZSBjb25zdHJ1Y3RvciBwcm90b3R5cGUnKTsKIApA
QCAtMTE3LDcgKzE2NCw3IEBAIHRlc3QoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgcmV0dXJu
IHRhcmdldFtuYW1lXTsKICAgICAgICAgfQogICAgIH0pOwotICAgIGFzc2VydF90aHJvd3Moeydu
YW1lJzogJ1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IENTUy5wYWludFdvcmtsZXRHbG9iYWxT
Y29wZS5yZWdpc3RlclBhaW50KCdjYWxsYmFja3MtdGhyb3cyJywgY29uc3RydWN0b3IpOyB9KTsK
KyAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBy
ZWdpc3RlclBhaW50KCdjYWxsYmFja3MtdGhyb3cyJywgY29uc3RydWN0b3IpOyB9KTsKICAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKGNhbGxzLCBbJ3BhaW50J10pOwogfSwgJ211c3QgcmV0aHJvdyBh
biBleGNlcHRpb24gdGhyb3duIHdoaWxlIGNvbnZlcnRpbmcgcGFpbnQgY2FsbGJhY2sgdmFsdWUg
dG8gRnVuY3Rpb24gY2FsbGJhY2sgdHlwZScpOwogCkBAIC0xMzEsNyArMTc4LDcgQEAgdGVzdChm
dW5jdGlvbiAoKSB7CiAgICAgICAgICAgcmV0dXJuIHRhcmdldFtuYW1lXTsKICAgICAgIH0KICAg
fSk7Ci0gIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7
IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCdzZXF1ZW5jZS10aHJv
dycsIHByb3h5KTsgfSk7CisgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1R5cGVFcnJvcid9LCBm
dW5jdGlvbiAoKSB7IHJlZ2lzdGVyUGFpbnQoJ3NlcXVlbmNlLXRocm93JywgcHJveHkpOyB9KTsK
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjYWxscywgWyJpbnB1dFByb3BlcnRpZXMiLCAiaW5wdXRB
cmd1bWVudHMiXSk7CiB9LCAnbXVzdCByZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUg
Y29udmVydGluZyB0aGUgdmFsdWUgb2YgaW5wdXRBcmd1bWVudHMgdG8gc2VxdWVuY2U8RE9NU3Ry
aW5nPicpOwogCkBAIC0xNDEsMTIgKzE4OCwzNiBAQCB0ZXN0KGZ1bmN0aW9uICgpIHsKICAgICAg
ICAgeWllbGQgJzxsZW5ndGg+JzsKICAgICAgICAgdGhyb3cge25hbWU6ICdTb21lRXJyb3InfTsK
ICAgICB9fTsKLSAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdTb21lRXJyb3InfSwgZnVuY3Rp
b24gKCkgeyBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgnc2VxdWVu
Y2UtdGhyb3cyJywgY29uc3RydWN0b3IpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6
ICdTb21lRXJyb3InfSwgZnVuY3Rpb24gKCkgeyByZWdpc3RlclBhaW50KCdzZXF1ZW5jZS10aHJv
dzInLCBjb25zdHJ1Y3Rvcik7IH0pOwogfSwgJ211c3QgcmV0aHJvdyBhbiBleGNlcHRpb24gdGhy
b3duIHdoaWxlIGl0ZXJhdGluZyBvdmVyIGlucHV0QXJndW1lbnRzIHRvIHNlcXVlbmNlPERPTVN0
cmluZz4nKTsKIAogdGVzdChmdW5jdGlvbiAoKSB7CiAgICAgY29uc3QgY29uc3RydWN0b3IgPSBm
dW5jdGlvbiAoKSB7fQogICAgIGNvbnN0cnVjdG9yLmlucHV0QXJndW1lbnRzID0ge1tTeW1ib2wu
aXRlcmF0b3JdOiAxfTsKLSAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwg
ZnVuY3Rpb24gKCkgeyBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgn
c3ltYm9sLWl0ZXJhdG9yLXRocm93MicsIGNvbnN0cnVjdG9yKTsgfSk7CisgICAgYXNzZXJ0X3Ro
cm93cyh7J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgcmVnaXN0ZXJQYWludCgn
c3ltYm9sLWl0ZXJhdG9yLXRocm93MicsIGNvbnN0cnVjdG9yKTsgfSk7CiB9LCAnbXVzdCByZXRo
cm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgcmV0cmlldmluZyBTeW1ib2wuaXRlcmF0b3Ig
b24gaW5wdXRBcmd1bWVudHMnKTsKKworYXNzZXJ0X3RydWUoUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUuaGFzUnVuQVRlc3QpOworaWYgKFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmVycm9ycykgewor
ICBjb25zb2xlLmxvZygiVGhlIGZvbGxvd2luZyAoIiArIFBhaW50V29ya2xldEdsb2JhbFNjb3Bl
LmVycm9ycy5sZW5ndGggKyAiKSB0ZXN0cyBmYWlsZWQ6ICIpCisgIGNvbnNvbGUubG9nKEpTT04u
c3RyaW5naWZ5KFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmVycm9ycykpOworICBhc3NlcnRfdHJ1
ZShmYWxzZSk7Cit9CisKK2NsYXNzIE15UGFpbnQyIHsKKyAgcGFpbnQoY3R4LCBnZW9tLCBwcm9w
ZXJ0aWVzKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspeworICAgICAgZm9yICh2
YXIgaiA9IDA7IGogPCA2OyBqKyspeworICAgICAgICBjdHguZmlsbFN0eWxlID0gJ3JnYignICsg
TWF0aC5mbG9vcigyNTUgLSA0Mi41ICogaSkgKyAnLCcgKworICAgICAgICAgICAgICAgICAgICAg
ICAgIE1hdGguZmxvb3IoMjU1IC0gNDIuNSAqIGopICsgJywwKSc7CisgICAgICAgIGN0eC5maWxs
UmVjdChqICogMjUsIGkgKiAyNSwgMjUsIDI1KTsKKyAgICAgIH0KKyAgICB9CisgIH0KK30KK3Jl
Z2lzdGVyUGFpbnQoJ215LXBhaW50JywgTXlQYWludDIpOworPC9zY3JpcHQ+CisKKzxzY3JpcHQ+
CisgIGltcG9ydFdvcmtsZXQoQ1NTLnBhaW50V29ya2xldCwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2NvZGUnKS50ZXh0Q29udGVudCk7CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mtd29ya2xldC5q
cyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9yZXNvdXJjZXMvdGVzdGhhcm5l
c3Mtd29ya2xldC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NWMzZTc0ZWU2YzEzMTQxOWMxNjg5ZWU4OWQwMWE0
MWFhNzAyZWNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9t
LXBhaW50L3Jlc291cmNlcy90ZXN0aGFybmVzcy13b3JrbGV0LmpzCkBAIC0wLDAgKzEsNzM5IEBA
CisvLyBUaGVzZSBhcmUgaGVscGVycyB0byBiZSBldmFsdWF0ZWQgaW5zaWRlIGEgd29ya2xldAor
Ly8gVGhleSBhcmUgbW9zdGx5IGZyb20gdGhlIHdwdCB0ZXN0aGFybmVzcy5qcy4KKworLyoKKyAq
IENvbnZlcnQgYSB2YWx1ZSB0byBhIG5pY2UsIGh1bWFuLXJlYWRhYmxlIHN0cmluZworICovCitm
dW5jdGlvbiBmb3JtYXRfdmFsdWUodmFsLCBzZWVuKQoreworICAgIGlmICghc2VlbikgeworICAg
ICAgICBzZWVuID0gW107CisgICAgfQorICAgIGlmICh0eXBlb2YgdmFsID09PSAib2JqZWN0IiAm
JiB2YWwgIT09IG51bGwpIHsKKyAgICAgICAgaWYgKHNlZW4uaW5kZXhPZih2YWwpID49IDApIHsK
KyAgICAgICAgICAgIHJldHVybiAiWy4uLl0iOworICAgICAgICB9CisgICAgICAgIHNlZW4ucHVz
aCh2YWwpOworICAgIH0KKyAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWwpKSB7CisgICAgICAgIHJl
dHVybiAiWyIgKyB2YWwubWFwKGZ1bmN0aW9uKHgpIHtyZXR1cm4gZm9ybWF0X3ZhbHVlKHgsIHNl
ZW4pO30pLmpvaW4oIiwgIikgKyAiXSI7CisgICAgfQorCisgICAgc3dpdGNoICh0eXBlb2YgdmFs
KSB7CisgICAgY2FzZSAic3RyaW5nIjoKKyAgICAgICAgdmFsID0gdmFsLnJlcGxhY2UoIlxcIiwg
IlxcXFwiKTsKKyAgICAgICAgZm9yICh2YXIgcCBpbiByZXBsYWNlbWVudHMpIHsKKyAgICAgICAg
ICAgIHZhciByZXBsYWNlID0gIlxcIiArIHJlcGxhY2VtZW50c1twXTsKKyAgICAgICAgICAgIHZh
bCA9IHZhbC5yZXBsYWNlKFJlZ0V4cChTdHJpbmcuZnJvbUNoYXJDb2RlKHApLCAiZyIpLCByZXBs
YWNlKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gJyInICsgdmFsLnJlcGxhY2UoLyIvZywg
J1xcIicpICsgJyInOworICAgIGNhc2UgImJvb2xlYW4iOgorICAgIGNhc2UgInVuZGVmaW5lZCI6
CisgICAgICAgIHJldHVybiBTdHJpbmcodmFsKTsKKyAgICBjYXNlICJudW1iZXIiOgorICAgICAg
ICAvLyBJbiBKYXZhU2NyaXB0LCAtMCA9PT0gMCBhbmQgU3RyaW5nKC0wKSA9PSAiMCIsIHNvIHdl
IGhhdmUgdG8KKyAgICAgICAgLy8gc3BlY2lhbC1jYXNlLgorICAgICAgICBpZiAodmFsID09PSAt
MCAmJiAxL3ZhbCA9PT0gLUluZmluaXR5KSB7CisgICAgICAgICAgICByZXR1cm4gIi0wIjsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gU3RyaW5nKHZhbCk7CisgICAgY2FzZSAib2JqZWN0IjoK
KyAgICAgICAgaWYgKHZhbCA9PT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuICJudWxsIjsK
KyAgICAgICAgfQorCisgICAgICAgIC8vIFNwZWNpYWwtY2FzZSBOb2RlIG9iamVjdHMsIHNpbmNl
IHRob3NlIGNvbWUgdXAgYSBsb3QgaW4gbXkgdGVzdHMuICBJCisgICAgICAgIC8vIGlnbm9yZSBu
YW1lc3BhY2VzLgorICAgICAgICBpZiAoaXNfbm9kZSh2YWwpKSB7CisgICAgICAgICAgICBzd2l0
Y2ggKHZhbC5ub2RlVHlwZSkgeworICAgICAgICAgICAgY2FzZSBOb2RlLkVMRU1FTlRfTk9ERToK
KyAgICAgICAgICAgICAgICB2YXIgcmV0ID0gIjwiICsgdmFsLmxvY2FsTmFtZTsKKyAgICAgICAg
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbC5hdHRyaWJ1dGVzLmxlbmd0aDsgaSsrKSB7
CisgICAgICAgICAgICAgICAgICAgIHJldCArPSAiICIgKyB2YWwuYXR0cmlidXRlc1tpXS5uYW1l
ICsgJz0iJyArIHZhbC5hdHRyaWJ1dGVzW2ldLnZhbHVlICsgJyInOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICByZXQgKz0gIj4iICsgdmFsLmlubmVySFRNTCArICI8LyIgKyB2
YWwubG9jYWxOYW1lICsgIj4iOworICAgICAgICAgICAgICAgIHJldHVybiAiRWxlbWVudCBub2Rl
ICIgKyB0cnVuY2F0ZShyZXQsIDYwKTsKKyAgICAgICAgICAgIGNhc2UgTm9kZS5URVhUX05PREU6
CisgICAgICAgICAgICAgICAgcmV0dXJuICdUZXh0IG5vZGUgIicgKyB0cnVuY2F0ZSh2YWwuZGF0
YSwgNjApICsgJyInOworICAgICAgICAgICAgY2FzZSBOb2RlLlBST0NFU1NJTkdfSU5TVFJVQ1RJ
T05fTk9ERToKKyAgICAgICAgICAgICAgICByZXR1cm4gIlByb2Nlc3NpbmdJbnN0cnVjdGlvbiBu
b2RlIHdpdGggdGFyZ2V0ICIgKyBmb3JtYXRfdmFsdWUodHJ1bmNhdGUodmFsLnRhcmdldCwgNjAp
KSArICIgYW5kIGRhdGEgIiArIGZvcm1hdF92YWx1ZSh0cnVuY2F0ZSh2YWwuZGF0YSwgNjApKTsK
KyAgICAgICAgICAgIGNhc2UgTm9kZS5DT01NRU5UX05PREU6CisgICAgICAgICAgICAgICAgcmV0
dXJuICJDb21tZW50IG5vZGUgPCEtLSIgKyB0cnVuY2F0ZSh2YWwuZGF0YSwgNjApICsgIi0tPiI7
CisgICAgICAgICAgICBjYXNlIE5vZGUuRE9DVU1FTlRfTk9ERToKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gIkRvY3VtZW50IG5vZGUgd2l0aCAiICsgdmFsLmNoaWxkTm9kZXMubGVuZ3RoICsgKHZh
bC5jaGlsZE5vZGVzLmxlbmd0aCA9PSAxID8gIiBjaGlsZCIgOiAiIGNoaWxkcmVuIik7CisgICAg
ICAgICAgICBjYXNlIE5vZGUuRE9DVU1FTlRfVFlQRV9OT0RFOgorICAgICAgICAgICAgICAgIHJl
dHVybiAiRG9jdW1lbnRUeXBlIG5vZGUiOworICAgICAgICAgICAgY2FzZSBOb2RlLkRPQ1VNRU5U
X0ZSQUdNRU5UX05PREU6CisgICAgICAgICAgICAgICAgcmV0dXJuICJEb2N1bWVudEZyYWdtZW50
IG5vZGUgd2l0aCAiICsgdmFsLmNoaWxkTm9kZXMubGVuZ3RoICsgKHZhbC5jaGlsZE5vZGVzLmxl
bmd0aCA9PSAxID8gIiBjaGlsZCIgOiAiIGNoaWxkcmVuIik7CisgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgIHJldHVybiAiTm9kZSBvYmplY3Qgb2YgdW5rbm93biB0eXBlIjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgLyogZmFsbHMgdGhyb3VnaCAqLworICAg
IGRlZmF1bHQ6CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gdHlwZW9mIHZhbCAr
ICcgIicgKyB0cnVuY2F0ZShTdHJpbmcodmFsKSwgMTAwMCkgKyAnIic7CisgICAgICAgIH0gY2F0
Y2goZSkgeworICAgICAgICAgICAgcmV0dXJuICgiW3N0cmluZ2lmeWluZyBvYmplY3QgdGhyZXcg
IiArIFN0cmluZyhlKSArCisgICAgICAgICAgICAgICAgICAgICIgd2l0aCB0eXBlICIgKyBTdHJp
bmcodHlwZW9mIGUpICsgIl0iKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gaXNf
c2luZ2xlX25vZGUodGVtcGxhdGUpCit7CisgICAgcmV0dXJuIHR5cGVvZiB0ZW1wbGF0ZVswXSA9
PT0gInN0cmluZyI7Cit9CisKK2Z1bmN0aW9uIHN1YnN0aXR1dGUodGVtcGxhdGUsIHN1YnN0aXR1
dGlvbnMpCit7CisgICAgaWYgKHR5cGVvZiB0ZW1wbGF0ZSA9PT0gImZ1bmN0aW9uIikgeworICAg
ICAgICB2YXIgcmVwbGFjZW1lbnQgPSB0ZW1wbGF0ZShzdWJzdGl0dXRpb25zKTsKKyAgICAgICAg
aWYgKCFyZXBsYWNlbWVudCkgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0K
KworICAgICAgICByZXR1cm4gc3Vic3RpdHV0ZShyZXBsYWNlbWVudCwgc3Vic3RpdHV0aW9ucyk7
CisgICAgfQorCisgICAgaWYgKGlzX3NpbmdsZV9ub2RlKHRlbXBsYXRlKSkgeworICAgICAgICBy
ZXR1cm4gc3Vic3RpdHV0ZV9zaW5nbGUodGVtcGxhdGUsIHN1YnN0aXR1dGlvbnMpOworICAgIH0K
KworICAgIHJldHVybiBmaWx0ZXIobWFwKHRlbXBsYXRlLCBmdW5jdGlvbih4KSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBzdWJzdGl0dXRlKHgsIHN1YnN0aXR1dGlvbnMpOwor
ICAgICAgICAgICAgICAgICAgICAgIH0pLCBmdW5jdGlvbih4KSB7cmV0dXJuIHggIT09IG51bGw7
fSk7Cit9CisKK2Z1bmN0aW9uIHN1YnN0aXR1dGVfc2luZ2xlKHRlbXBsYXRlLCBzdWJzdGl0dXRp
b25zKQoreworICAgIHZhciBzdWJzdGl0dXRpb25fcmUgPSAvXCRceyhbXiB9XSopXH0vZzsKKwor
ICAgIGZ1bmN0aW9uIGRvX3N1YnN0aXR1dGlvbihpbnB1dCkgeworICAgICAgICB2YXIgY29tcG9u
ZW50cyA9IGlucHV0LnNwbGl0KHN1YnN0aXR1dGlvbl9yZSk7CisgICAgICAgIHZhciBydiA9IFtd
OworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbXBvbmVudHMubGVuZ3RoOyBpICs9IDIp
IHsKKyAgICAgICAgICAgIHJ2LnB1c2goY29tcG9uZW50c1tpXSk7CisgICAgICAgICAgICBpZiAo
Y29tcG9uZW50c1tpICsgMV0pIHsKKyAgICAgICAgICAgICAgICBydi5wdXNoKFN0cmluZyhzdWJz
dGl0dXRpb25zW2NvbXBvbmVudHNbaSArIDFdXSkpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIHJldHVybiBydjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdWJzdGl0dXRlX2F0
dHJzKGF0dHJzLCBydikKKyAgICB7CisgICAgICAgIHJ2WzFdID0ge307CisgICAgICAgIGZvciAo
dmFyIG5hbWUgaW4gdGVtcGxhdGVbMV0pIHsKKyAgICAgICAgICAgIGlmIChhdHRycy5oYXNPd25Q
cm9wZXJ0eShuYW1lKSkgeworICAgICAgICAgICAgICAgIHZhciBuZXdfbmFtZSA9IGRvX3N1YnN0
aXR1dGlvbihuYW1lKS5qb2luKCIiKTsKKyAgICAgICAgICAgICAgICB2YXIgbmV3X3ZhbHVlID0g
ZG9fc3Vic3RpdHV0aW9uKGF0dHJzW25hbWVdKS5qb2luKCIiKTsKKyAgICAgICAgICAgICAgICBy
dlsxXVtuZXdfbmFtZV0gPSBuZXdfdmFsdWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBzdWJzdGl0dXRlX2NoaWxkcmVuKGNoaWxkcmVuLCBydikKKyAg
ICB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHsK
KyAgICAgICAgICAgIGlmIChjaGlsZHJlbltpXSBpbnN0YW5jZW9mIE9iamVjdCkgeworICAgICAg
ICAgICAgICAgIHZhciByZXBsYWNlbWVudCA9IHN1YnN0aXR1dGUoY2hpbGRyZW5baV0sIHN1YnN0
aXR1dGlvbnMpOworICAgICAgICAgICAgICAgIGlmIChyZXBsYWNlbWVudCAhPT0gbnVsbCkgewor
ICAgICAgICAgICAgICAgICAgICBpZiAoaXNfc2luZ2xlX25vZGUocmVwbGFjZW1lbnQpKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBydi5wdXNoKHJlcGxhY2VtZW50KTsKKyAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuZChydiwgcmVw
bGFjZW1lbnQpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBleHRlbmQocnYsIGRvX3N1YnN0aXR1
dGlvbihTdHJpbmcoY2hpbGRyZW5baV0pKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIHJ2OworICAgIH0KKworICAgIHZhciBydiA9IFtdOworICAgIHJ2LnB1c2go
ZG9fc3Vic3RpdHV0aW9uKFN0cmluZyh0ZW1wbGF0ZVswXSkpLmpvaW4oIiIpKTsKKworICAgIGlm
ICh0ZW1wbGF0ZVswXSA9PT0gInt0ZXh0fSIpIHsKKyAgICAgICAgc3Vic3RpdHV0ZV9jaGlsZHJl
bih0ZW1wbGF0ZS5zbGljZSgxKSwgcnYpOworICAgIH0gZWxzZSB7CisgICAgICAgIHN1YnN0aXR1
dGVfYXR0cnModGVtcGxhdGVbMV0sIHJ2KTsKKyAgICAgICAgc3Vic3RpdHV0ZV9jaGlsZHJlbih0
ZW1wbGF0ZS5zbGljZSgyKSwgcnYpOworICAgIH0KKworICAgIHJldHVybiBydjsKK30KKworZnVu
Y3Rpb24gYXNzZXJ0KGV4cGVjdGVkX3RydWUsIGZ1bmN0aW9uX25hbWUsIGRlc2NyaXB0aW9uLCBl
cnJvciwgc3Vic3RpdHV0aW9ucykKK3sKKyAgICBpZiAoZXhwZWN0ZWRfdHJ1ZSAhPT0gdHJ1ZSkg
eworICAgICAgICB2YXIgbXNnID0gbWFrZV9tZXNzYWdlKGZ1bmN0aW9uX25hbWUsIGRlc2NyaXB0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yLCBzdWJzdGl0dXRpb25z
KTsKKyAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkVycm9yKG1zZyk7CisgICAgfQorfQorCitm
dW5jdGlvbiBBc3NlcnRpb25FcnJvcihtZXNzYWdlKQoreworICAgIHRoaXMubWVzc2FnZSA9IG1l
c3NhZ2U7CisgICAgdGhpcy5zdGFjayA9IHRoaXMuZ2V0X3N0YWNrKCk7Cit9CisKK0Fzc2VydGlv
bkVycm9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKTsKKworQXNz
ZXJ0aW9uRXJyb3IucHJvdG90eXBlLmdldF9zdGFjayA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBz
dGFjayA9IG5ldyBFcnJvcigpLnN0YWNrOworICAgIC8vIElFMTEgZG9lcyBub3QgaW5pdGlhbGl6
ZSAnRXJyb3Iuc3RhY2snIHVudGlsIHRoZSBvYmplY3QgaXMgdGhyb3duLgorICAgIGlmICghc3Rh
Y2spIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigpOworICAg
ICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBzdGFjayA9IGUuc3RhY2s7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICAvLyAnRXJyb3Iuc3RhY2snIGlzIG5vdCBzdXBwb3J0ZWQgaW4gYWxs
IGJyb3dzZXJzL3ZlcnNpb25zCisgICAgaWYgKCFzdGFjaykgeworICAgICAgICByZXR1cm4gIihT
dGFjayB0cmFjZSB1bmF2YWlsYWJsZSkiOworICAgIH0KKworICAgIHZhciBsaW5lcyA9IHN0YWNr
LnNwbGl0KCJcbiIpOworCisgICAgLy8gQ3JlYXRlIGEgcGF0dGVybiB0byBtYXRjaCBzdGFjayBm
cmFtZXMgb3JpZ2luYXRpbmcgd2l0aGluIHRlc3RoYXJuZXNzLmpzLiAgVGhlc2UgaW5jbHVkZSB0
aGUKKyAgICAvLyBzY3JpcHQgVVJMLCBmb2xsb3dlZCBieSB0aGUgbGluZS9jb2wgKGUuZy4sICcv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzOjEyMDoyMScpLgorICAgIC8vIEVzY2FwZSB0aGUgVVJM
IHBlciBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzM1NjE0OTMvaXMtdGhlcmUt
YS1yZWdleHAtZXNjYXBlLWZ1bmN0aW9uLWluLWphdmFzY3JpcHQKKyAgICAvLyBpbiBjYXNlIGl0
IGNvbnRhaW5zIFJlZ0V4cCBjaGFyYWN0ZXJzLgorICAgIHZhciBzY3JpcHRfdXJsID0gZ2V0X3Nj
cmlwdF91cmwoKTsKKyAgICB2YXIgcmVfdGV4dCA9IHNjcmlwdF91cmwgPyBzY3JpcHRfdXJsLnJl
cGxhY2UoL1stXC9cXF4kKis/LigpfFtcXXt9XS9nLCAnXFwkJicpIDogIlxcYnRlc3RoYXJuZXNz
LmpzIjsKKyAgICB2YXIgcmUgPSBuZXcgUmVnRXhwKHJlX3RleHQgKyAiOlxcZCs6XFxkKyIpOwor
CisgICAgLy8gU29tZSBicm93c2VycyBpbmNsdWRlIGEgcHJlYW1ibGUgdGhhdCBzcGVjaWZpZXMg
dGhlIHR5cGUgb2YgdGhlIGVycm9yIG9iamVjdC4gIFNraXAgdGhpcyBieQorICAgIC8vIGFkdmFu
Y2luZyB1bnRpbCB3ZSBmaW5kIHRoZSBmaXJzdCBzdGFjayBmcmFtZSBvcmlnaW5hdGluZyBmcm9t
IHRlc3RoYXJuZXNzLmpzLgorICAgIHZhciBpID0gMDsKKyAgICB3aGlsZSAoIXJlLnRlc3QobGlu
ZXNbaV0pICYmIGkgPCBsaW5lcy5sZW5ndGgpIHsKKyAgICAgICAgaSsrOworICAgIH0KKworICAg
IC8vIFRoZW4gc2tpcCB0aGUgdG9wIGZyYW1lcyBvcmlnaW5hdGluZyBmcm9tIHRlc3RoYXJuZXNz
LmpzIHRvIGJlZ2luIHRoZSBzdGFjayBhdCB0aGUgdGVzdCBjb2RlLgorICAgIHdoaWxlIChyZS50
ZXN0KGxpbmVzW2ldKSAmJiBpIDwgbGluZXMubGVuZ3RoKSB7CisgICAgICAgIGkrKzsKKyAgICB9
CisKKyAgICAvLyBQYXJhbm9pZCBjaGVjayB0aGF0IHdlIGRpZG4ndCBza2lwIGFsbCBmcmFtZXMu
ICBJZiBzbywgcmV0dXJuIHRoZSBvcmlnaW5hbCBzdGFjayB1bm1vZGlmaWVkLgorICAgIGlmIChp
ID49IGxpbmVzLmxlbmd0aCkgeworICAgICAgICByZXR1cm4gc3RhY2s7CisgICAgfQorCisgICAg
cmV0dXJuIGxpbmVzLnNsaWNlKGkpLmpvaW4oIlxuIik7Cit9CisKK2Z1bmN0aW9uIG1ha2VfbWVz
c2FnZShmdW5jdGlvbl9uYW1lLCBkZXNjcmlwdGlvbiwgZXJyb3IsIHN1YnN0aXR1dGlvbnMpCit7
CisgICAgZm9yICh2YXIgcCBpbiBzdWJzdGl0dXRpb25zKSB7CisgICAgICAgIGlmIChzdWJzdGl0
dXRpb25zLmhhc093blByb3BlcnR5KHApKSB7CisgICAgICAgICAgICBzdWJzdGl0dXRpb25zW3Bd
ID0gZm9ybWF0X3ZhbHVlKHN1YnN0aXR1dGlvbnNbcF0pOworICAgICAgICB9CisgICAgfQorICAg
IHZhciBub2RlX2Zvcm0gPSBzdWJzdGl0dXRlKFsie3RleHR9IiwgIiR7ZnVuY3Rpb25fbmFtZX06
ICR7ZGVzY3JpcHRpb259IiArIGVycm9yXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtZXJnZSh7ZnVuY3Rpb25fbmFtZTpmdW5jdGlvbl9uYW1lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjooZGVzY3JpcHRpb24/ZGVzY3JpcHRpb24g
KyAiICI6IiIpfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic3Rp
dHV0aW9ucykpOworICAgIHJldHVybiBub2RlX2Zvcm0uc2xpY2UoMSkuam9pbigiIik7Cit9CisK
K2Z1bmN0aW9uIGZpbHRlcihhcnJheSwgY2FsbGFibGUsIHRoaXNPYmopIHsKKyAgICB2YXIgcnYg
PSBbXTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7CisgICAg
ICAgIGlmIChhcnJheS5oYXNPd25Qcm9wZXJ0eShpKSkgeworICAgICAgICAgICAgdmFyIHBhc3Mg
PSBjYWxsYWJsZS5jYWxsKHRoaXNPYmosIGFycmF5W2ldLCBpLCBhcnJheSk7CisgICAgICAgICAg
ICBpZiAocGFzcykgeworICAgICAgICAgICAgICAgIHJ2LnB1c2goYXJyYXlbaV0pOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBydjsKK30KKworZnVuY3Rpb24g
bWFwKGFycmF5LCBjYWxsYWJsZSwgdGhpc09iaikKK3sKKyAgICB2YXIgcnYgPSBbXTsKKyAgICBy
di5sZW5ndGggPSBhcnJheS5sZW5ndGg7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5s
ZW5ndGg7IGkrKykgeworICAgICAgICBpZiAoYXJyYXkuaGFzT3duUHJvcGVydHkoaSkpIHsKKyAg
ICAgICAgICAgIHJ2W2ldID0gY2FsbGFibGUuY2FsbCh0aGlzT2JqLCBhcnJheVtpXSwgaSwgYXJy
YXkpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBydjsKK30KKworZnVuY3Rpb24gZm9y
RWFjaChhcnJheSwgY2FsbGJhY2ssIHRoaXNPYmopCit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBhcnJheS5sZW5ndGg7IGkrKykgeworICAgICAgICBpZiAoYXJyYXkuaGFzT3duUHJvcGVydHko
aSkpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrLmNhbGwodGhpc09iaiwgYXJyYXlbaV0sIGksIGFy
cmF5KTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gbWVyZ2UoYSxiKQoreworICAg
IHZhciBydiA9IHt9OworICAgIHZhciBwOworICAgIGZvciAocCBpbiBhKSB7CisgICAgICAgIHJ2
W3BdID0gYVtwXTsKKyAgICB9CisgICAgZm9yIChwIGluIGIpIHsKKyAgICAgICAgcnZbcF0gPSBi
W3BdOworICAgIH0KKyAgICByZXR1cm4gcnY7Cit9CisKK2Z1bmN0aW9uIHNhbWVfdmFsdWUoeCwg
eSkgeworICAgIGlmICh5ICE9PSB5KSB7CisgICAgICAgIC8vTmFOIGNhc2UKKyAgICAgICAgcmV0
dXJuIHggIT09IHg7CisgICAgfQorICAgIGlmICh4ID09PSAwICYmIHkgPT09IDApIHsKKyAgICAg
ICAgLy9EaXN0aW5ndWlzaCArMCBhbmQgLTAKKyAgICAgICAgcmV0dXJuIDEveCA9PT0gMS95Owor
ICAgIH0KKyAgICByZXR1cm4geCA9PT0geTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X2VxdWFscyhh
Y3R1YWwsIGV4cGVjdGVkLCBkZXNjcmlwdGlvbikKK3sKKyAgICAgLyoKKyAgICAgICogVGVzdCBp
ZiB0d28gcHJpbWl0aXZlcyBhcmUgZXF1YWwgb3IgdHdvIG9iamVjdHMKKyAgICAgICogYXJlIHRo
ZSBzYW1lIG9iamVjdAorICAgICAgKi8KKyAgICBpZiAodHlwZW9mIGFjdHVhbCAhPSB0eXBlb2Yg
ZXhwZWN0ZWQpIHsKKyAgICAgICAgYXNzZXJ0KGZhbHNlLCAiYXNzZXJ0X2VxdWFscyIsIGRlc2Ny
aXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCAoIiArIHR5cGVvZiBleHBl
Y3RlZCArICIpICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgKCIgKyB0eXBlb2YgYWN0dWFsICsgIikgJHth
Y3R1YWx9IiwKKyAgICAgICAgICAgICAgICAgICAgICB7ZXhwZWN0ZWQ6ZXhwZWN0ZWQsIGFjdHVh
bDphY3R1YWx9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhc3NlcnQoc2FtZV92YWx1
ZShhY3R1YWwsIGV4cGVjdGVkKSwgImFzc2VydF9lcXVhbHMiLCBkZXNjcmlwdGlvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkICR7ZXhwZWN0ZWR9
IGJ1dCBnb3QgJHthY3R1YWx9IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAge2V4cGVjdGVkOmV4cGVjdGVkLCBhY3R1YWw6YWN0dWFsfSk7Cit9CisKK2Z1bmN0aW9u
IGFzc2VydF9ub3RfZXF1YWxzKGFjdHVhbCwgZXhwZWN0ZWQsIGRlc2NyaXB0aW9uKQoreworICAg
ICAvKgorICAgICAgKiBUZXN0IGlmIHR3byBwcmltaXRpdmVzIGFyZSB1bmVxdWFsIG9yIHR3byBv
YmplY3RzCisgICAgICAqIGFyZSBkaWZmZXJlbnQgb2JqZWN0cworICAgICAgKi8KKyAgICBhc3Nl
cnQoIXNhbWVfdmFsdWUoYWN0dWFsLCBleHBlY3RlZCksICJhc3NlcnRfbm90X2VxdWFscyIsIGRl
c2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdv
dCBkaXNhbGxvd2VkIHZhbHVlICR7YWN0dWFsfSIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB7YWN0dWFsOmFjdHVhbH0pOworfQorCitmdW5jdGlvbiBhc3NlcnRf
aW5fYXJyYXkoYWN0dWFsLCBleHBlY3RlZCwgZGVzY3JpcHRpb24pCit7CisgICAgYXNzZXJ0KGV4
cGVjdGVkLmluZGV4T2YoYWN0dWFsKSAhPSAtMSwgImFzc2VydF9pbl9hcnJheSIsIGRlc2NyaXB0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSAk
e2FjdHVhbH0gbm90IGluIGFycmF5ICR7ZXhwZWN0ZWR9IiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB7YWN0dWFsOmFjdHVhbCwgZXhwZWN0ZWQ6ZXhwZWN0ZWR9
KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X29iamVjdF9lcXVhbHMoYWN0dWFsLCBleHBlY3RlZCwg
ZGVzY3JpcHRpb24pCit7CisgICAgIC8vVGhpcyBuZWVkcyB0byBiZSBpbXByb3ZlZCBhIGdyZWF0
IGRlYWwKKyAgICAgZnVuY3Rpb24gY2hlY2tfZXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgc3RhY2sp
CisgICAgIHsKKyAgICAgICAgIHN0YWNrLnB1c2goYWN0dWFsKTsKKworICAgICAgICAgdmFyIHA7
CisgICAgICAgICBmb3IgKHAgaW4gYWN0dWFsKSB7CisgICAgICAgICAgICAgYXNzZXJ0KGV4cGVj
dGVkLmhhc093blByb3BlcnR5KHApLCAiYXNzZXJ0X29iamVjdF9lcXVhbHMiLCBkZXNjcmlwdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmV4
cGVjdGVkIHByb3BlcnR5ICR7cH0iLCB7cDpwfSk7CisKKyAgICAgICAgICAgICBpZiAodHlwZW9m
IGFjdHVhbFtwXSA9PT0gIm9iamVjdCIgJiYgYWN0dWFsW3BdICE9PSBudWxsKSB7CisgICAgICAg
ICAgICAgICAgIGlmIChzdGFjay5pbmRleE9mKGFjdHVhbFtwXSkgPT09IC0xKSB7CisgICAgICAg
ICAgICAgICAgICAgICBjaGVja19lcXVhbChhY3R1YWxbcF0sIGV4cGVjdGVkW3BdLCBzdGFjayk7
CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgICBhc3NlcnQoc2FtZV92YWx1ZShhY3R1YWxbcF0sIGV4cGVjdGVkW3BdKSwgImFzc2VydF9v
YmplY3RfZXF1YWxzIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAicHJvcGVydHkgJHtwfSBleHBlY3RlZCAke2V4cGVjdGVk
fSBnb3QgJHthY3R1YWx9IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHtwOnAsIGV4cGVjdGVkOmV4cGVjdGVkLCBhY3R1YWw6YWN0dWFsfSk7Cisg
ICAgICAgICAgICAgfQorICAgICAgICAgfQorICAgICAgICAgZm9yIChwIGluIGV4cGVjdGVkKSB7
CisgICAgICAgICAgICAgYXNzZXJ0KGFjdHVhbC5oYXNPd25Qcm9wZXJ0eShwKSwKKyAgICAgICAg
ICAgICAgICAgICAgImFzc2VydF9vYmplY3RfZXF1YWxzIiwgZGVzY3JpcHRpb24sCisgICAgICAg
ICAgICAgICAgICAgICJleHBlY3RlZCBwcm9wZXJ0eSAke3B9IG1pc3NpbmciLCB7cDpwfSk7Cisg
ICAgICAgICB9CisgICAgICAgICBzdGFjay5wb3AoKTsKKyAgICAgfQorICAgICBjaGVja19lcXVh
bChhY3R1YWwsIGV4cGVjdGVkLCBbXSk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9hcnJheV9lcXVh
bHMoYWN0dWFsLCBleHBlY3RlZCwgZGVzY3JpcHRpb24pCit7CisgICAgYXNzZXJ0KGFjdHVhbC5s
ZW5ndGggPT09IGV4cGVjdGVkLmxlbmd0aCwKKyAgICAgICAgICAgImFzc2VydF9hcnJheV9lcXVh
bHMiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgImxlbmd0aHMgZGlmZmVyLCBleHBlY3RlZCAk
e2V4cGVjdGVkfSBnb3QgJHthY3R1YWx9IiwKKyAgICAgICAgICAge2V4cGVjdGVkOmV4cGVjdGVk
Lmxlbmd0aCwgYWN0dWFsOmFjdHVhbC5sZW5ndGh9KTsKKworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgYWN0dWFsLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGFzc2VydChhY3R1YWwuaGFzT3duUHJv
cGVydHkoaSkgPT09IGV4cGVjdGVkLmhhc093blByb3BlcnR5KGkpLAorICAgICAgICAgICAgICAg
ImFzc2VydF9hcnJheV9lcXVhbHMiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICJwcm9w
ZXJ0eSAke2l9LCBwcm9wZXJ0eSBleHBlY3RlZCB0byBiZSAke2V4cGVjdGVkfSBidXQgd2FzICR7
YWN0dWFsfSIsCisgICAgICAgICAgICAgICB7aTppLCBleHBlY3RlZDpleHBlY3RlZC5oYXNPd25Q
cm9wZXJ0eShpKSA/ICJwcmVzZW50IiA6ICJtaXNzaW5nIiwKKyAgICAgICAgICAgICAgIGFjdHVh
bDphY3R1YWwuaGFzT3duUHJvcGVydHkoaSkgPyAicHJlc2VudCIgOiAibWlzc2luZyJ9KTsKKyAg
ICAgICAgYXNzZXJ0KHNhbWVfdmFsdWUoZXhwZWN0ZWRbaV0sIGFjdHVhbFtpXSksCisgICAgICAg
ICAgICAgICAiYXNzZXJ0X2FycmF5X2VxdWFscyIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAg
ICAgInByb3BlcnR5ICR7aX0sIGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9
IiwKKyAgICAgICAgICAgICAgIHtpOmksIGV4cGVjdGVkOmV4cGVjdGVkW2ldLCBhY3R1YWw6YWN0
dWFsW2ldfSk7CisgICAgfQorfQorCitmdW5jdGlvbiBhc3NlcnRfYXBwcm94X2VxdWFscyhhY3R1
YWwsIGV4cGVjdGVkLCBlcHNpbG9uLCBkZXNjcmlwdGlvbikKK3sKKyAgICAvKgorICAgICAqIFRl
c3QgaWYgdHdvIHByaW1pdGl2ZSBudW1iZXJzIGFyZSBlcXVhbCB3aXRoaW5nICsvLSBlcHNpbG9u
CisgICAgICovCisgICAgYXNzZXJ0KHR5cGVvZiBhY3R1YWwgPT09ICJudW1iZXIiLAorICAgICAg
ICAgICAiYXNzZXJ0X2FwcHJveF9lcXVhbHMiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgImV4
cGVjdGVkIGEgbnVtYmVyIGJ1dCBnb3QgYSAke3R5cGVfYWN0dWFsfSIsCisgICAgICAgICAgIHt0
eXBlX2FjdHVhbDp0eXBlb2YgYWN0dWFsfSk7CisKKyAgICBhc3NlcnQoTWF0aC5hYnMoYWN0dWFs
IC0gZXhwZWN0ZWQpIDw9IGVwc2lsb24sCisgICAgICAgICAgICJhc3NlcnRfYXBwcm94X2VxdWFs
cyIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAiZXhwZWN0ZWQgJHtleHBlY3RlZH0gKy8tICR7
ZXBzaWxvbn0gYnV0IGdvdCAke2FjdHVhbH0iLAorICAgICAgICAgICB7ZXhwZWN0ZWQ6ZXhwZWN0
ZWQsIGFjdHVhbDphY3R1YWwsIGVwc2lsb246ZXBzaWxvbn0pOworfQorCitmdW5jdGlvbiBhc3Nl
cnRfbGVzc190aGFuKGFjdHVhbCwgZXhwZWN0ZWQsIGRlc2NyaXB0aW9uKQoreworICAgIC8qCisg
ICAgICogVGVzdCBpZiBhIHByaW1pdGl2ZSBudW1iZXIgaXMgbGVzcyB0aGFuIGFub3RoZXIKKyAg
ICAgKi8KKyAgICBhc3NlcnQodHlwZW9mIGFjdHVhbCA9PT0gIm51bWJlciIsCisgICAgICAgICAg
ICJhc3NlcnRfbGVzc190aGFuIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICJleHBlY3RlZCBh
IG51bWJlciBidXQgZ290IGEgJHt0eXBlX2FjdHVhbH0iLAorICAgICAgICAgICB7dHlwZV9hY3R1
YWw6dHlwZW9mIGFjdHVhbH0pOworCisgICAgYXNzZXJ0KGFjdHVhbCA8IGV4cGVjdGVkLAorICAg
ICAgICAgICAiYXNzZXJ0X2xlc3NfdGhhbiIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAiZXhw
ZWN0ZWQgYSBudW1iZXIgbGVzcyB0aGFuICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9IiwK
KyAgICAgICAgICAge2V4cGVjdGVkOmV4cGVjdGVkLCBhY3R1YWw6YWN0dWFsfSk7Cit9CisKK2Z1
bmN0aW9uIGFzc2VydF9ncmVhdGVyX3RoYW4oYWN0dWFsLCBleHBlY3RlZCwgZGVzY3JpcHRpb24p
Cit7CisgICAgLyoKKyAgICAgKiBUZXN0IGlmIGEgcHJpbWl0aXZlIG51bWJlciBpcyBncmVhdGVy
IHRoYW4gYW5vdGhlcgorICAgICAqLworICAgIGFzc2VydCh0eXBlb2YgYWN0dWFsID09PSAibnVt
YmVyIiwKKyAgICAgICAgICAgImFzc2VydF9ncmVhdGVyX3RoYW4iLCBkZXNjcmlwdGlvbiwKKyAg
ICAgICAgICAgImV4cGVjdGVkIGEgbnVtYmVyIGJ1dCBnb3QgYSAke3R5cGVfYWN0dWFsfSIsCisg
ICAgICAgICAgIHt0eXBlX2FjdHVhbDp0eXBlb2YgYWN0dWFsfSk7CisKKyAgICBhc3NlcnQoYWN0
dWFsID4gZXhwZWN0ZWQsCisgICAgICAgICAgICJhc3NlcnRfZ3JlYXRlcl90aGFuIiwgZGVzY3Jp
cHRpb24sCisgICAgICAgICAgICJleHBlY3RlZCBhIG51bWJlciBncmVhdGVyIHRoYW4gJHtleHBl
Y3RlZH0gYnV0IGdvdCAke2FjdHVhbH0iLAorICAgICAgICAgICB7ZXhwZWN0ZWQ6ZXhwZWN0ZWQs
IGFjdHVhbDphY3R1YWx9KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X2JldHdlZW5fZXhjbHVzaXZl
KGFjdHVhbCwgbG93ZXIsIHVwcGVyLCBkZXNjcmlwdGlvbikKK3sKKyAgICAvKgorICAgICAqIFRl
c3QgaWYgYSBwcmltaXRpdmUgbnVtYmVyIGlzIGJldHdlZW4gdHdvIG90aGVycworICAgICAqLwor
ICAgIGFzc2VydCh0eXBlb2YgYWN0dWFsID09PSAibnVtYmVyIiwKKyAgICAgICAgICAgImFzc2Vy
dF9iZXR3ZWVuX2V4Y2x1c2l2ZSIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAiZXhwZWN0ZWQg
YSBudW1iZXIgYnV0IGdvdCBhICR7dHlwZV9hY3R1YWx9IiwKKyAgICAgICAgICAge3R5cGVfYWN0
dWFsOnR5cGVvZiBhY3R1YWx9KTsKKworICAgIGFzc2VydChhY3R1YWwgPiBsb3dlciAmJiBhY3R1
YWwgPCB1cHBlciwKKyAgICAgICAgICAgImFzc2VydF9iZXR3ZWVuX2V4Y2x1c2l2ZSIsIGRlc2Ny
aXB0aW9uLAorICAgICAgICAgICAiZXhwZWN0ZWQgYSBudW1iZXIgZ3JlYXRlciB0aGFuICR7bG93
ZXJ9ICIgKworICAgICAgICAgICAiYW5kIGxlc3MgdGhhbiAke3VwcGVyfSBidXQgZ290ICR7YWN0
dWFsfSIsCisgICAgICAgICAgIHtsb3dlcjpsb3dlciwgdXBwZXI6dXBwZXIsIGFjdHVhbDphY3R1
YWx9KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X2xlc3NfdGhhbl9lcXVhbChhY3R1YWwsIGV4cGVj
dGVkLCBkZXNjcmlwdGlvbikKK3sKKyAgICAvKgorICAgICAqIFRlc3QgaWYgYSBwcmltaXRpdmUg
bnVtYmVyIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byBhbm90aGVyCisgICAgICovCisgICAgYXNz
ZXJ0KHR5cGVvZiBhY3R1YWwgPT09ICJudW1iZXIiLAorICAgICAgICAgICAiYXNzZXJ0X2xlc3Nf
dGhhbl9lcXVhbCIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAiZXhwZWN0ZWQgYSBudW1iZXIg
YnV0IGdvdCBhICR7dHlwZV9hY3R1YWx9IiwKKyAgICAgICAgICAge3R5cGVfYWN0dWFsOnR5cGVv
ZiBhY3R1YWx9KTsKKworICAgIGFzc2VydChhY3R1YWwgPD0gZXhwZWN0ZWQsCisgICAgICAgICAg
ICJhc3NlcnRfbGVzc190aGFuX2VxdWFsIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICJleHBl
Y3RlZCBhIG51bWJlciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJHtleHBlY3RlZH0gYnV0IGdvdCAk
e2FjdHVhbH0iLAorICAgICAgICAgICB7ZXhwZWN0ZWQ6ZXhwZWN0ZWQsIGFjdHVhbDphY3R1YWx9
KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X2dyZWF0ZXJfdGhhbl9lcXVhbChhY3R1YWwsIGV4cGVj
dGVkLCBkZXNjcmlwdGlvbikKK3sKKyAgICAvKgorICAgICAqIFRlc3QgaWYgYSBwcmltaXRpdmUg
bnVtYmVyIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBhbm90aGVyCisgICAgICovCisgICAg
YXNzZXJ0KHR5cGVvZiBhY3R1YWwgPT09ICJudW1iZXIiLAorICAgICAgICAgICAiYXNzZXJ0X2dy
ZWF0ZXJfdGhhbl9lcXVhbCIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAiZXhwZWN0ZWQgYSBu
dW1iZXIgYnV0IGdvdCBhICR7dHlwZV9hY3R1YWx9IiwKKyAgICAgICAgICAge3R5cGVfYWN0dWFs
OnR5cGVvZiBhY3R1YWx9KTsKKworICAgIGFzc2VydChhY3R1YWwgPj0gZXhwZWN0ZWQsCisgICAg
ICAgICAgICJhc3NlcnRfZ3JlYXRlcl90aGFuX2VxdWFsIiwgZGVzY3JpcHRpb24sCisgICAgICAg
ICAgICJleHBlY3RlZCBhIG51bWJlciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJHtleHBlY3Rl
ZH0gYnV0IGdvdCAke2FjdHVhbH0iLAorICAgICAgICAgICB7ZXhwZWN0ZWQ6ZXhwZWN0ZWQsIGFj
dHVhbDphY3R1YWx9KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X2JldHdlZW5faW5jbHVzaXZlKGFj
dHVhbCwgbG93ZXIsIHVwcGVyLCBkZXNjcmlwdGlvbikKK3sKKyAgICAvKgorICAgICAqIFRlc3Qg
aWYgYSBwcmltaXRpdmUgbnVtYmVyIGlzIGJldHdlZW4gdG8gdHdvIG90aGVycyBvciBlcXVhbCB0
byBlaXRoZXIgb2YgdGhlbQorICAgICAqLworICAgIGFzc2VydCh0eXBlb2YgYWN0dWFsID09PSAi
bnVtYmVyIiwKKyAgICAgICAgICAgImFzc2VydF9iZXR3ZWVuX2luY2x1c2l2ZSIsIGRlc2NyaXB0
aW9uLAorICAgICAgICAgICAiZXhwZWN0ZWQgYSBudW1iZXIgYnV0IGdvdCBhICR7dHlwZV9hY3R1
YWx9IiwKKyAgICAgICAgICAge3R5cGVfYWN0dWFsOnR5cGVvZiBhY3R1YWx9KTsKKworICAgIGFz
c2VydChhY3R1YWwgPj0gbG93ZXIgJiYgYWN0dWFsIDw9IHVwcGVyLAorICAgICAgICAgICAiYXNz
ZXJ0X2JldHdlZW5faW5jbHVzaXZlIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICJleHBlY3Rl
ZCBhIG51bWJlciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJHtsb3dlcn0gIiArCisgICAgICAg
ICAgICJhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICR7dXBwZXJ9IGJ1dCBnb3QgJHthY3R1YWx9
IiwKKyAgICAgICAgICAge2xvd2VyOmxvd2VyLCB1cHBlcjp1cHBlciwgYWN0dWFsOmFjdHVhbH0p
OworfQorCitmdW5jdGlvbiBhc3NlcnRfdGhyb3dzKGNvZGUsIGZ1bmMsIGRlc2NyaXB0aW9uKQor
eworICAgIHRyeSB7CisgICAgICAgIGZ1bmMuY2FsbCh0aGlzKTsKKyAgICAgICAgYXNzZXJ0KGZh
bHNlLCAiYXNzZXJ0X3Rocm93cyIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgIiR7ZnVu
Y30gZGlkIG5vdCB0aHJvdyIsIHtmdW5jOmZ1bmN9KTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAg
ICAgIGlmIChlIGluc3RhbmNlb2YgQXNzZXJ0aW9uRXJyb3IpIHsKKyAgICAgICAgICAgIHRocm93
IGU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvZGUgPT09IG51bGwpIHsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAodHlwZW9mIGNvZGUgPT09ICJvYmplY3Qi
KSB7CisgICAgICAgICAgICBhc3NlcnQodHlwZW9mIGUgPT0gIm9iamVjdCIgJiYgIm5hbWUiIGlu
IGUgJiYgZS5uYW1lID09IGNvZGUubmFtZSwKKyAgICAgICAgICAgICAgICAgICAiYXNzZXJ0X3Ro
cm93cyIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICIke2Z1bmN9IHRocmV3ICR7
YWN0dWFsfSAoJHthY3R1YWxfbmFtZX0pIGV4cGVjdGVkICR7ZXhwZWN0ZWR9ICgke2V4cGVjdGVk
X25hbWV9KSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmdW5jOmZ1bmMsIGFj
dHVhbDplLCBhY3R1YWxfbmFtZTplLm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBleHBlY3RlZDpjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhw
ZWN0ZWRfbmFtZTpjb2RlLm5hbWV9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIHZhciBjb2RlX25hbWVfbWFwID0geworICAgICAgICAgICAgSU5ERVhfU0laRV9F
UlI6ICdJbmRleFNpemVFcnJvcicsCisgICAgICAgICAgICBISUVSQVJDSFlfUkVRVUVTVF9FUlI6
ICdIaWVyYXJjaHlSZXF1ZXN0RXJyb3InLAorICAgICAgICAgICAgV1JPTkdfRE9DVU1FTlRfRVJS
OiAnV3JvbmdEb2N1bWVudEVycm9yJywKKyAgICAgICAgICAgIElOVkFMSURfQ0hBUkFDVEVSX0VS
UjogJ0ludmFsaWRDaGFyYWN0ZXJFcnJvcicsCisgICAgICAgICAgICBOT19NT0RJRklDQVRJT05f
QUxMT1dFRF9FUlI6ICdOb01vZGlmaWNhdGlvbkFsbG93ZWRFcnJvcicsCisgICAgICAgICAgICBO
T1RfRk9VTkRfRVJSOiAnTm90Rm91bmRFcnJvcicsCisgICAgICAgICAgICBOT1RfU1VQUE9SVEVE
X0VSUjogJ05vdFN1cHBvcnRlZEVycm9yJywKKyAgICAgICAgICAgIElOVVNFX0FUVFJJQlVURV9F
UlI6ICdJblVzZUF0dHJpYnV0ZUVycm9yJywKKyAgICAgICAgICAgIElOVkFMSURfU1RBVEVfRVJS
OiAnSW52YWxpZFN0YXRlRXJyb3InLAorICAgICAgICAgICAgU1lOVEFYX0VSUjogJ1N5bnRheEVy
cm9yJywKKyAgICAgICAgICAgIElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUjogJ0ludmFsaWRNb2Rp
ZmljYXRpb25FcnJvcicsCisgICAgICAgICAgICBOQU1FU1BBQ0VfRVJSOiAnTmFtZXNwYWNlRXJy
b3InLAorICAgICAgICAgICAgSU5WQUxJRF9BQ0NFU1NfRVJSOiAnSW52YWxpZEFjY2Vzc0Vycm9y
JywKKyAgICAgICAgICAgIFRZUEVfTUlTTUFUQ0hfRVJSOiAnVHlwZU1pc21hdGNoRXJyb3InLAor
ICAgICAgICAgICAgU0VDVVJJVFlfRVJSOiAnU2VjdXJpdHlFcnJvcicsCisgICAgICAgICAgICBO
RVRXT1JLX0VSUjogJ05ldHdvcmtFcnJvcicsCisgICAgICAgICAgICBBQk9SVF9FUlI6ICdBYm9y
dEVycm9yJywKKyAgICAgICAgICAgIFVSTF9NSVNNQVRDSF9FUlI6ICdVUkxNaXNtYXRjaEVycm9y
JywKKyAgICAgICAgICAgIFFVT1RBX0VYQ0VFREVEX0VSUjogJ1F1b3RhRXhjZWVkZWRFcnJvcics
CisgICAgICAgICAgICBUSU1FT1VUX0VSUjogJ1RpbWVvdXRFcnJvcicsCisgICAgICAgICAgICBJ
TlZBTElEX05PREVfVFlQRV9FUlI6ICdJbnZhbGlkTm9kZVR5cGVFcnJvcicsCisgICAgICAgICAg
ICBEQVRBX0NMT05FX0VSUjogJ0RhdGFDbG9uZUVycm9yJworICAgICAgICB9OworCisgICAgICAg
IHZhciBuYW1lID0gY29kZSBpbiBjb2RlX25hbWVfbWFwID8gY29kZV9uYW1lX21hcFtjb2RlXSA6
IGNvZGU7CisKKyAgICAgICAgdmFyIG5hbWVfY29kZV9tYXAgPSB7CisgICAgICAgICAgICBJbmRl
eFNpemVFcnJvcjogMSwKKyAgICAgICAgICAgIEhpZXJhcmNoeVJlcXVlc3RFcnJvcjogMywKKyAg
ICAgICAgICAgIFdyb25nRG9jdW1lbnRFcnJvcjogNCwKKyAgICAgICAgICAgIEludmFsaWRDaGFy
YWN0ZXJFcnJvcjogNSwKKyAgICAgICAgICAgIE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yOiA3
LAorICAgICAgICAgICAgTm90Rm91bmRFcnJvcjogOCwKKyAgICAgICAgICAgIE5vdFN1cHBvcnRl
ZEVycm9yOiA5LAorICAgICAgICAgICAgSW5Vc2VBdHRyaWJ1dGVFcnJvcjogMTAsCisgICAgICAg
ICAgICBJbnZhbGlkU3RhdGVFcnJvcjogMTEsCisgICAgICAgICAgICBTeW50YXhFcnJvcjogMTIs
CisgICAgICAgICAgICBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3I6IDEzLAorICAgICAgICAgICAg
TmFtZXNwYWNlRXJyb3I6IDE0LAorICAgICAgICAgICAgSW52YWxpZEFjY2Vzc0Vycm9yOiAxNSwK
KyAgICAgICAgICAgIFR5cGVNaXNtYXRjaEVycm9yOiAxNywKKyAgICAgICAgICAgIFNlY3VyaXR5
RXJyb3I6IDE4LAorICAgICAgICAgICAgTmV0d29ya0Vycm9yOiAxOSwKKyAgICAgICAgICAgIEFi
b3J0RXJyb3I6IDIwLAorICAgICAgICAgICAgVVJMTWlzbWF0Y2hFcnJvcjogMjEsCisgICAgICAg
ICAgICBRdW90YUV4Y2VlZGVkRXJyb3I6IDIyLAorICAgICAgICAgICAgVGltZW91dEVycm9yOiAy
MywKKyAgICAgICAgICAgIEludmFsaWROb2RlVHlwZUVycm9yOiAyNCwKKyAgICAgICAgICAgIERh
dGFDbG9uZUVycm9yOiAyNSwKKworICAgICAgICAgICAgRW5jb2RpbmdFcnJvcjogMCwKKyAgICAg
ICAgICAgIE5vdFJlYWRhYmxlRXJyb3I6IDAsCisgICAgICAgICAgICBVbmtub3duRXJyb3I6IDAs
CisgICAgICAgICAgICBDb25zdHJhaW50RXJyb3I6IDAsCisgICAgICAgICAgICBEYXRhRXJyb3I6
IDAsCisgICAgICAgICAgICBUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3I6IDAsCisgICAgICAgICAg
ICBSZWFkT25seUVycm9yOiAwLAorICAgICAgICAgICAgVmVyc2lvbkVycm9yOiAwLAorICAgICAg
ICAgICAgT3BlcmF0aW9uRXJyb3I6IDAsCisgICAgICAgICAgICBOb3RBbGxvd2VkRXJyb3I6IDAK
KyAgICAgICAgfTsKKworICAgICAgICBpZiAoIShuYW1lIGluIG5hbWVfY29kZV9tYXApKSB7Cisg
ICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRXJyb3IoJ1Rlc3QgYnVnOiB1bnJlY29nbml6
ZWQgRE9NRXhjZXB0aW9uIGNvZGUgIicgKyBjb2RlICsgJyIgcGFzc2VkIHRvIGFzc2VydF90aHJv
d3MoKScpOworICAgICAgICB9CisKKyAgICAgICAgdmFyIHJlcXVpcmVkX3Byb3BzID0geyBjb2Rl
OiBuYW1lX2NvZGVfbWFwW25hbWVdIH07CisKKyAgICAgICAgaWYgKHJlcXVpcmVkX3Byb3BzLmNv
ZGUgPT09IDAgfHwKKyAgICAgICAgICAgKHR5cGVvZiBlID09ICJvYmplY3QiICYmCisgICAgICAg
ICAgICAibmFtZSIgaW4gZSAmJgorICAgICAgICAgICAgZS5uYW1lICE9PSBlLm5hbWUudG9VcHBl
ckNhc2UoKSAmJgorICAgICAgICAgICAgZS5uYW1lICE9PSAiRE9NRXhjZXB0aW9uIikpIHsKKyAg
ICAgICAgICAgIC8vIE5ldyBzdHlsZSBleGNlcHRpb246IGFsc28gdGVzdCB0aGUgbmFtZSBwcm9w
ZXJ0eS4KKyAgICAgICAgICAgIHJlcXVpcmVkX3Byb3BzLm5hbWUgPSBuYW1lOworICAgICAgICB9
CisKKyAgICAgICAgLy9XZSdkIGxpa2UgdG8gdGVzdCB0aGF0IGUgaW5zdGFuY2VvZiB0aGUgYXBw
cm9wcmlhdGUgaW50ZXJmYWNlLAorICAgICAgICAvL2J1dCB3ZSBjYW4ndCwgYmVjYXVzZSB3ZSBk
b24ndCBrbm93IHdoYXQgd2luZG93IGl0IHdhcyBjcmVhdGVkCisgICAgICAgIC8vaW4uICBJdCBt
aWdodCBiZSBhbiBpbnN0YW5jZW9mIHRoZSBhcHByb3ByaWF0ZSBpbnRlcmZhY2Ugb24gc29tZQor
ICAgICAgICAvL3Vua25vd24gb3RoZXIgd2luZG93LiAgVE9ETzogV29yayBhcm91bmQgdGhpcyBz
b21laG93PworCisgICAgICAgIGFzc2VydCh0eXBlb2YgZSA9PSAib2JqZWN0IiwKKyAgICAgICAg
ICAgICAgICJhc3NlcnRfdGhyb3dzIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAiJHtm
dW5jfSB0aHJldyAke2V9IHdpdGggdHlwZSAke3R5cGV9LCBub3QgYW4gb2JqZWN0IiwKKyAgICAg
ICAgICAgICAgIHtmdW5jOmZ1bmMsIGU6ZSwgdHlwZTp0eXBlb2YgZX0pOworCisgICAgICAgIGZv
ciAodmFyIHByb3AgaW4gcmVxdWlyZWRfcHJvcHMpIHsKKyAgICAgICAgICAgIGFzc2VydCh0eXBl
b2YgZSA9PSAib2JqZWN0IiAmJiBwcm9wIGluIGUgJiYgZVtwcm9wXSA9PSByZXF1aXJlZF9wcm9w
c1twcm9wXSwKKyAgICAgICAgICAgICAgICAgICAiYXNzZXJ0X3Rocm93cyIsIGRlc2NyaXB0aW9u
LAorICAgICAgICAgICAgICAgICAgICIke2Z1bmN9IHRocmV3ICR7ZX0gdGhhdCBpcyBub3QgYSBE
T01FeGNlcHRpb24gIiArIGNvZGUgKyAiOiBwcm9wZXJ0eSAke3Byb3B9IGlzIGVxdWFsIHRvICR7
YWN0dWFsfSwgZXhwZWN0ZWQgJHtleHBlY3RlZH0iLAorICAgICAgICAgICAgICAgICAgIHtmdW5j
OmZ1bmMsIGU6ZSwgcHJvcDpwcm9wLCBhY3R1YWw6ZVtwcm9wXSwgZXhwZWN0ZWQ6cmVxdWlyZWRf
cHJvcHNbcHJvcF19KTsKKyAgICAgICAgfQorICAgIH0KK30KKworLyoKKyAqIFJldHVybiB0cnVl
IGlmIG9iamVjdCBpcyBwcm9iYWJseSBhIE5vZGUgb2JqZWN0LgorICovCitmdW5jdGlvbiBpc19u
b2RlKG9iamVjdCkKK3sKKyAgICAvLyBJIHVzZSBkdWNrLXR5cGluZyBpbnN0ZWFkIG9mIGluc3Rh
bmNlb2YsIGJlY2F1c2UKKyAgICAvLyBpbnN0YW5jZW9mIGRvZXNuJ3Qgd29yayBpZiB0aGUgbm9k
ZSBpcyBmcm9tIGFub3RoZXIgd2luZG93IChsaWtlIGFuCisgICAgLy8gaWZyYW1lJ3MgY29udGVu
dFdpbmRvdyk6CisgICAgLy8gaHR0cDovL3d3dy53My5vcmcvQnVncy9QdWJsaWMvc2hvd19idWcu
Y2dpP2lkPTEyMjk1CisgICAgdHJ5IHsKKyAgICAgICAgdmFyIGhhc19ub2RlX3Byb3BlcnRpZXMg
PSAoIm5vZGVUeXBlIiBpbiBvYmplY3QgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIm5vZGVOYW1lIiBpbiBvYmplY3QgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIm5vZGVWYWx1ZSIgaW4gb2JqZWN0ICYmCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJjaGlsZE5vZGVzIiBpbiBvYmplY3QpOworICAgIH0gY2F0Y2ggKGUpIHsK
KyAgICAgICAgLy8gV2UncmUgcHJvYmFibHkgY3Jvc3Mtb3JpZ2luLCB3aGljaCBtZWFucyB3ZSBh
cmVuJ3QgYSBub2RlCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoaGFz
X25vZGVfcHJvcGVydGllcykgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgb2JqZWN0Lm5v
ZGVUeXBlOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAvLyBUaGUgb2JqZWN0
IGlzIHByb2JhYmx5IE5vZGUucHJvdG90eXBlIG9yIGFub3RoZXIgcHJvdG90eXBlCisgICAgICAg
ICAgICAvLyBvYmplY3QgdGhhdCBpbmhlcml0cyBmcm9tIGl0LCBhbmQgbm90IGEgTm9kZSBpbnN0
YW5jZS4KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2YXIgcmVwbGFjZW1lbnRz
ID0geworICAgICIwIjogIjAiLAorICAgICIxIjogIngwMSIsCisgICAgIjIiOiAieDAyIiwKKyAg
ICAiMyI6ICJ4MDMiLAorICAgICI0IjogIngwNCIsCisgICAgIjUiOiAieDA1IiwKKyAgICAiNiI6
ICJ4MDYiLAorICAgICI3IjogIngwNyIsCisgICAgIjgiOiAiYiIsCisgICAgIjkiOiAidCIsCisg
ICAgIjEwIjogIm4iLAorICAgICIxMSI6ICJ2IiwKKyAgICAiMTIiOiAiZiIsCisgICAgIjEzIjog
InIiLAorICAgICIxNCI6ICJ4MGUiLAorICAgICIxNSI6ICJ4MGYiLAorICAgICIxNiI6ICJ4MTAi
LAorICAgICIxNyI6ICJ4MTEiLAorICAgICIxOCI6ICJ4MTIiLAorICAgICIxOSI6ICJ4MTMiLAor
ICAgICIyMCI6ICJ4MTQiLAorICAgICIyMSI6ICJ4MTUiLAorICAgICIyMiI6ICJ4MTYiLAorICAg
ICIyMyI6ICJ4MTciLAorICAgICIyNCI6ICJ4MTgiLAorICAgICIyNSI6ICJ4MTkiLAorICAgICIy
NiI6ICJ4MWEiLAorICAgICIyNyI6ICJ4MWIiLAorICAgICIyOCI6ICJ4MWMiLAorICAgICIyOSI6
ICJ4MWQiLAorICAgICIzMCI6ICJ4MWUiLAorICAgICIzMSI6ICJ4MWYiLAorICAgICIweGZmZmQi
OiAidWZmZmQiLAorICAgICIweGZmZmUiOiAidWZmZmUiLAorICAgICIweGZmZmYiOiAidWZmZmYi
LAorfTsKKworZnVuY3Rpb24gZXh0ZW5kKGFycmF5LCBpdGVtcykKK3sKKyAgICBBcnJheS5wcm90
b3R5cGUucHVzaC5hcHBseShhcnJheSwgaXRlbXMpOworfQorCitmdW5jdGlvbiBnZXRfc2NyaXB0
X3VybCgpCit7CisgICAgcmV0dXJuICIvIjsKK30KKworLyoKKyAqIFJldHVybiBhIHN0cmluZyB0
cnVuY2F0ZWQgdG8gdGhlIGdpdmVuIGxlbmd0aCwgd2l0aCAuLi4gYWRkZWQgYXQgdGhlIGVuZAor
ICogaWYgaXQgd2FzIGxvbmdlci4KKyAqLworZnVuY3Rpb24gdHJ1bmNhdGUocywgbGVuKQorewor
ICAgIGlmIChzLmxlbmd0aCA+IGxlbikgeworICAgICAgICByZXR1cm4gcy5zdWJzdHJpbmcoMCwg
bGVuIC0gMykgKyAiLi4uIjsKKyAgICB9CisgICAgcmV0dXJuIHM7Cit9CisKK2Z1bmN0aW9uIGFz
c2VydF90cnVlKGFjdHVhbCwgZGVzY3JpcHRpb24pCit7CisgICAgYXNzZXJ0KGFjdHVhbCA9PT0g
dHJ1ZSwgImFzc2VydF90cnVlIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImV4cGVjdGVkIHRydWUgZ290ICR7YWN0dWFsfSIsIHthY3R1YWw6YWN0dWFsfSk7Cit9
CisKK2Z1bmN0aW9uIGFzc2VydF9mYWxzZShhY3R1YWwsIGRlc2NyaXB0aW9uKQoreworICAgIGFz
c2VydChhY3R1YWwgPT09IGZhbHNlLCAiYXNzZXJ0X2ZhbHNlIiwgZGVzY3JpcHRpb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCBmYWxzZSBnb3QgJHthY3R1YWx9Iiwg
e2FjdHVhbDphY3R1YWx9KTsKK30KKworZnVuY3Rpb24gdGVzdCh0c3QsIG5hbWUpIHsKKyAgdHJ5
IHsKKyAgICB0c3QoKTsKKyAgfSBjYXRjaCAoZSkgeworICAgIGlmICghUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuZXJyb3JzKQorICAgICAgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuZXJyb3JzID0g
W107CisgICAgICBQYWludFdvcmtsZXRHbG9iYWxTY29wZS5lcnJvcnMucHVzaCh7IG5hbWU6IG5h
bWUsIGVycm9yOiBlLm1lc3NhZ2UgfSk7CisgIH0KKyAgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUu
aGFzUnVuQVRlc3QgPSB0cnVlOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mt
Y3VzdG9tLXBhaW50L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzLWN1c3RvbS1wYWludC9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWIx
M2Q0MzI5MGY4MzRkMGY5YTY5OTMwNTAwYTY3YWMxNWJmNWVkZgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMKQEAgLTAsMCArMSwyMyBAQAoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKKworLy8gSW1wb3J0cyBjb2RlIGludG8gYSB3b3JrbGV0LCB3aXRoIHNv
bWUgaGVscGVycy4KK2FzeW5jIGZ1bmN0aW9uIGltcG9ydFdvcmtsZXQod29ya2xldCwgY29kZSkg
eworICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKCJyZXNvdXJjZXMvdGVzdGhhcm5lc3Mt
d29ya2xldC5qcyIpOworICBjb25zdCBmaW5hbENvZGUgPSAoYXdhaXQgcmVzcG9uc2UudGV4dCgp
KSArIGNvZGU7CisKKyAgbGV0IHVybDsKKyAgLy8gRklYTUU6IFRoaXMgaXMgdGVtcG9yYXJ5LCB1
bnRpbCB3ZSBzdXBwb3J0IGxvYWRpbmcgc2NyaXB0cyBieSB1cmwKKyAgaWYgKHdpbmRvdy5jaHJv
bWUpIHsKKyAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2ZpbmFsQ29kZV0sIHt0eXBlOiAndGV4
dC9qYXZhc2NyaXB0J30pOworICAgIHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7Cisg
IH0gZWxzZSB7CisgICAgdXJsID0gZmluYWxDb2RlOworICB9CisKKyAgd29ya2xldC5hZGRNb2R1
bGUodXJsKTsKKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsKKyAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgIH0sIDMwMDApOwor
ICB9Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvd29y
a2xldC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3dv
cmtsZXQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YjQyYjYyZGExM2VkYTgxOTYxMGIzMTk3
YjRlNDVhNTQ3M2JkY2YzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mt
Y3VzdG9tLXBhaW50L3dvcmtsZXQtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDE2IEBACis8IURP
Q1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGV4cGVyaW1lbnRhbDpDU1NQYWlu
dGluZ0FQSUVuYWJsZWQ9dHJ1ZSBdIC0tPgorCis8Y2FudmFzIGlkPSJwYWludCIgd2lkdGg9IjE1
MHB4IiBoZWlnaHQ9IjE1MHB4IiA+PC9jYW52YXM+CisKKzxzY3JpcHQgaWQ9ImNvZGUiPgordmFy
IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYWludCcpOwordmFyIGN0eCA9IGNh
bnZhcy5nZXRDb250ZXh0KCcyZCcpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKyl7Cisg
IGZvciAodmFyIGogPSAwOyBqIDwgNjsgaisrKXsKKyAgICBjdHguZmlsbFN0eWxlID0gJ3JnYign
ICsgTWF0aC5mbG9vcigyNTUgLSA0Mi41ICogaSkgKyAnLCcgKworICAgICAgICAgICAgICAgICAg
ICAgTWF0aC5mbG9vcigyNTUgLSA0Mi41ICogaikgKyAnLDApJzsKKyAgICBjdHguZmlsbFJlY3Qo
aiAqIDI1LCBpICogMjUsIDI1LCAyNSk7CisgIH0KK30KKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3dvcmtsZXQuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC93b3JrbGV0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmNmZjkz
NTY4NTM0MjA0YTJhYTBjYzZlOGQ5ZTg5NDQwMTJlMmU2NQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC93b3JrbGV0Lmh0bWwKQEAgLTAsMCArMSw0
MiBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBleHBlcmltZW50
YWw6Q1NTUGFpbnRpbmdBUElFbmFibGVkPXRydWUgXSAtLT4KKzxtZXRhIG5hbWU9ImF1dGhvciIg
dGl0bGU9Ikp1c3RpbiBNaWNoYXVkIiBocmVmPSJtYWlsdG86anVzdGluX21pY2hhdWRAd2Via2l0
Lm9yZyI+Cis8bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9IlRlc3Qgd29ya2xldCBhZGRNb2R1
bGUgYW5kIGdsb2JhbCBvYmplY3QiPgorPGxpbmsgcmVsPSJoZWxwIiBjb250ZW50PSJodHRwczov
L2RyYWZ0cy5jc3MtaG91ZGluaS5vcmcvY3NzLXBhaW50LWFwaS0xLyI+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKworPHN0eWxlPgorICAjcGFpbnQg
eworICAgIGJhY2tncm91bmQtaW1hZ2U6IHBhaW50KG15LXBhaW50KTsKKyAgICB3aWR0aDogMTUw
cHg7CisgICAgaGVpZ2h0OiAxNTBweDsKKyAgfQorPC9zdHlsZT4KKworPGRpdiBpZD0icGFpbnQi
PjwvZGl2PgorCis8c2NyaXB0IGlkPSJjb2RlIiB0eXBlPSJ0ZXh0L3dvcmtsZXQiPgorY2xhc3Mg
TXlQYWludCB7CisgIHBhaW50KGN0eCwgZ2VvbSwgcHJvcGVydGllcykgeworICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgNjsgaSsrKXsKKyAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgNjsgaisrKXsK
KyAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2IoJyArIE1hdGguZmxvb3IoMjU1IC0gNDIuNSAq
IGkpICsgJywnICsKKyAgICAgICAgICAgICAgICAgICAgICAgICBNYXRoLmZsb29yKDI1NSAtIDQy
LjUgKiBqKSArICcsMCknOworICAgICAgICBjdHguZmlsbFJlY3QoaiAqIDI1LCBpICogMjUsIDI1
LCAyNSk7CisgICAgICB9CisgICAgfQorICAgIGNvbnNvbGUubG9nKCJIZWxsbyBmcm9tIHBhaW50
IGNhbGxiYWNrISIpOworICAgIGFzc2VydF9ncmVhdGVyX3RoYW4oZXZhbCgiZGV2aWNlUGl4ZWxS
YXRpbyIpLCAwKTsKKyAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdSZWZlcmVuY2VFcnJvcid9
LCBmdW5jdGlvbiAoKSB7IGV2YWwoIndpbmRvdyIpOyB9KTsKKworICAgIGNvbnN0IHByb21pc2Ug
PSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7IGNvbnNvbGUubG9nKCJJbiBwcm9t
aXNlIik7IHJlc29sdmUoKSB9KTsKKyAgICBwcm9taXNlLnRoZW4oKCkgPT4gY29uc29sZS5sb2co
IlByb21pc2Ugd2FzIHJlc29sdmVkIikpOworICB9Cit9Citjb25zb2xlLmxvZygiSGVsbG8gZnJv
bSBwYWludCB3b3JrbGV0ISIpOworcmVnaXN0ZXJQYWludCgnbXktcGFpbnQnLCBNeVBhaW50KTsK
K2NvbnNvbGUubG9nKFdpbmRvdyk7IC8vIHRlc3QgdGhhdCB1bmNhdWdodCBleGNlcHRpb25zIGRv
IG5vdCBhZmZlY3QgcmVnaXN0ZXJlZCBwYWludCBjYWxsYmFja3MKKzwvc2NyaXB0PgorCis8c2Ny
aXB0PgoraW1wb3J0V29ya2xldChDU1MucGFpbnRXb3JrbGV0LCBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnY29kZScpLnRleHRDb250ZW50KTsKKzwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353316</attachid>
            <date>2018-10-29 13:26:35 -0700</date>
            <delta_ts>2018-10-29 13:55:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190979-20181029132634.patch</filename>
            <type>text/plain</type>
            <size>183173</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjQ4NmIwMmU1NmRmOTIz
MGM2MTUyMTYzZWI3MmZkYzA0OTBmMzgxNS4uY2RlYzcwMThjNzcwZjk2NzczYjEzOTNhMWMzZTVm
ZjE5YjI0YzMyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MyBAQAorMjAxOC0xMC0yNiAgSnVz
dGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIG5l
dyBnbG9iYWwgb2JqZWN0IGFuZCBwcmVsaW1pbmFyeSBXb3JrbGV0cyBzdXBwb3J0IGZvciBDU1Mg
cGFpbnRpbmcgYXBpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTA5NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUZXN0OiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvd29ya2xldC5odG1sCisKKyAgICAgICAg
QWRkIGEgbmV3IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgYW5kIGdsb2JhbCBvYmplY3QgdG8gcnVu
IHdvcmtsZXRzIGluLiBUaGlzIGlzIG1vc3RseSBjb3B5K3Bhc3RlCisgICAgICAgIGZyb20gV29y
a2VycywgYnV0IHdpdGhvdXQgYW55IG9mIHRoZSB0aHJlYWRpbmcuIFdvcmtsZXQuYWRkTW9kdWxl
IGRvZXMgbm90IHlldCBzdXBwb3J0IGxvYWRpbmcgc2NyaXB0cworICAgICAgICBvciBkb2luZyBj
cm9zcyBvcmlnaW4gY2hlY2tpbmcuIFRoZXJlIGFyZSBxdWl0ZSBhIGZldyBwYXJ0cyBvZiB0aGUg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCBhcGkgdGhhdCBhcmUKKyAgICAgICAgbGVmdCBhcyBBU1NF
UlRfTk9UX1JFQUNIRUQoKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2Jq
ZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0IGNvbnN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20u
Y3BwLgorICAgICAgICAoV2ViQ29yZTo6SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6dmlzaXRB
ZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNQYWludFdvcmtsZXRHbG9i
YWxTY29wZTo6cmVnaXN0ZXJQYWludCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrbGV0
R2xvYmFsU2NvcGVCYXNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtsZXRH
bG9iYWxTY29wZUJhc2U6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZSk6CisgICAgICAgIChXZWJD
b3JlOjpKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6Y2xlYXJET01HdWFyZGVkT2JqZWN0
cyk6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnZpc2l0Q2hp
bGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpkZXN0
cm95KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtsZXRHbG9i
YWxTY29wZUJhc2U6OnN1cHBvcnRzUmljaFNvdXJjZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6
SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzaG91bGRJbnRlcnJ1cHRTY3JpcHQpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzaG91bGRJbnRlcnJ1cHRTY3Jp
cHRCZWZvcmVUaW1lb3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3Bl
QmFzZTo6amF2YVNjcmlwdFJ1bnRpbWVGbGFncyk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToK
KyAgICAgICAgKFdlYkNvcmU6OnRvSlNXb3JrbGV0R2xvYmFsU2NvcGUpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6d3JhcHBlZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnByb3h5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6Y3JlYXRlU3RydWN0dXJlKToK
KyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFN0
YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29w
ZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjU3RhdGVGcm9tV29ya2xldEdsb2JhbFNjb3BlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKElzRE9NR2xvYmFsT2JqZWN0KToKKyAgICAgICAg
KFNob3VsZFVzZUdsb2JhbE9iamVjdFByb3RvdHlwZSk6CisgICAgICAgIChHZW5lcmF0ZUhlYWRl
cik6CisgICAgICAgIChHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZ0ZvckV4
cG9zZWQpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGw6CisgICAgICAgICogY3NzL0NTU1BhaW50
SW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYWludEltYWdlVmFsdWU6Omlt
YWdlKToKKyAgICAgICAgKiBjc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRPTUNTU1BhaW50V29ya2xldDo6ZW5zdXJlUGFpbnRXb3JrbGV0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTUNTU1BhaW50V29ya2xldDo6ZW5zdXJlUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9ET01DU1NQYWludFdvcmtsZXQuaDoKKyAgICAg
ICAgKiBjc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmlkbDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVuc3VyZUNTU1BhaW50V29ya2xldCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVuc3VyZUNTU1BhaW50V29ya2xldEds
b2JhbFNjb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpnZXRDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSk6CisgICAg
ICAgICogZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbjoKKyAgICAgICAgKiBkb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0Ojp2bSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpleGVj
U3RhdGUpOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojppc1dvcmtsZXRHbG9iYWxTY29wZSBj
b25zdCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dlckFnZW50OjppbmplY3Rl
ZFNjcmlwdEZvckV2YWwpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtl
clJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1lQWdlbnQ6
OmluamVjdGVkU2NyaXB0Rm9yRXZhbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3Vz
dG9tUGFpbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludEltYWdlOjpD
dXN0b21QYWludEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50SW1hZ2U6OmRv
Q3VzdG9tUGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1h
Z2UuaDoKKyAgICAgICAgKiB3b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHA6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5j
cHAuCisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludFdvcmtsZXRH
bG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6
ZGV2aWNlUGl4ZWxSYXRpbyk6CisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxT
Y29wZTo6YWRkUmVnaXN0ZXJlZFBhaW50KToKKyAgICAgICAgKiB3b3JrbGV0cy9QYWludFdvcmts
ZXRHbG9iYWxTY29wZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50
V29ya2xldEdsb2JhbFNjb3BlLmguCisgICAgICAgICogd29ya2xldHMvUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUuaWRsLgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXQuY3BwOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
LgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtsZXQ6OldvcmtsZXQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldDo6YWRkTW9kdWxl
KToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwLgorICAgICAgICAqIHdvcmts
ZXRzL1dvcmtsZXQuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUuaWRsLgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRDb25zb2xl
Q2xpZW50LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93
b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0
Q29uc29sZUNsaWVudDo6V29ya2xldENvbnNvbGVDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2xldENvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtsZXRDb25zb2xlQ2xpZW50Ojpjb3VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrbGV0Q29uc29sZUNsaWVudDo6dGltZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0
Q29uc29sZUNsaWVudDo6dGltZUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29s
ZUNsaWVudDo6cHJvZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29sZUNsaWVu
dDo6cHJvZmlsZUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29sZUNsaWVudDo6
dGFrZUhlYXBTbmFwc2hvdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29sZUNsaWVu
dDo6dGltZVN0YW1wKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRDb25zb2xlQ2xpZW50Ojpy
ZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldENvbnNvbGVDbGllbnQ6OnJlY29yZEVu
ZCk6CisgICAgICAgICogd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuaDogQWRkZWQuCisg
ICAgICAgICogd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxTY29wZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6On5Xb3JrbGV0R2xvYmFsU2NvcGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpldmFsdWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmlzSlNFeGVjdXRpb25Gb3JiaWRkZW4gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpkaXNhYmxlRXZhbCk6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmRpc2FibGVXZWJBc3NlbWJs
eSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmNvbXBsZXRlVVJMIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6bG9nRXhjZXB0aW9u
VG9Db25zb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29u
c29sZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjphZGRN
ZXNzYWdlKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmlzUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpp
ZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6
c2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6anNSdW50aW1l
RmxhZ3MgY29uc3QpOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3Jr
bGV0R2xvYmFsU2NvcGUuaWRsOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlLmlkbC4KKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0U2Ny
aXB0Q29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlw
dENvbnRyb2xsZXI6OldvcmtsZXRTY3JpcHRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjp+V29ya2xldFNjcmlwdENvbnRyb2xsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmZvcmJpZEV4ZWN1dGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6aXNFeGVjdXRpb25G
b3JiaWRkZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xs
ZXI6OmRpc2FibGVFdmFsKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRTY3JpcHRDb250cm9s
bGVyOjpkaXNhYmxlV2ViQXNzZW1ibHkpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlw
dENvbnRyb2xsZXI6OmluaXRTY3JpcHRXaXRoU3ViY2xhc3MpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtsZXRTY3JpcHRDb250cm9sbGVyOjpzZXRFeGNlcHRpb24pOgorICAgICAgICAqIHdvcmtsZXRz
L1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V29y
a2xldFNjcmlwdENvbnRyb2xsZXI6OndvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OnZtKToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0SWZOZWVkZWQpOgorCiAyMDE4
LTEwLTI2ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjM3NDU4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRl
eCAxMjliNmM1NDkzMmY5ZTRlODg0NjZkY2Y5MThjYmQ2ZTE3NDY0MmQ1Li5jNmZlMjM1ZTA5YzEz
M2M5OWRlMTMyN2EyODBhYzUzYTEwMjc5NDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTQz
LDYgKzE0Myw3IEBAIHNldChXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJD
T1JFX0RJUn0vd29ya2Vycy9zZXJ2aWNlIgogICAgICIke1dFQkNPUkVfRElSfS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dCIKICAgICAiJHtXRUJDT1JFX0RJUn0vd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ciIKKyAgICAiJHtXRUJDT1JFX0RJUn0vd29ya2xldHMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3ht
bCIKICAgICAiJHtXRUJDT1JFX0RJUn0veG1sL3BhcnNlciIKICAgICAiJHtERVJJVkVEX1NPVVJD
RVNfV0VCQ09SRV9ESVJ9IgpAQCAtNTM3LDcgKzUzOCw2IEBAIHNldChXZWJDb3JlX05PTl9TVkdf
SURMX0ZJTEVTCiAgICAgY3NzL0NTU01lZGlhUnVsZS5pZGwKICAgICBjc3MvQ1NTTmFtZXNwYWNl
UnVsZS5pZGwKICAgICBjc3MvQ1NTUGFpbnRDYWxsYmFjay5pZGwKLSAgICBjc3MvQ1NTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUuaWRsCiAgICAgY3NzL0NTU1BhZ2VSdWxlLmlkbAogICAgIGNzcy9D
U1NSdWxlLmlkbAogICAgIGNzcy9DU1NSdWxlTGlzdC5pZGwKQEAgLTkwNiw2ICs5MDYsMTAgQEAg
c2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICB3b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlclVwZGF0ZVZpYUNhY2hlLmlkbAogICAgIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyV2luZG93Q2xpZW50LmlkbAogCisgICAgd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUuaWRsCisgICAgd29ya2xldHMvV29ya2xldC5pZGwKKyAgICB3b3JrbGV0cy9Xb3JrbGV0R2xv
YmFsU2NvcGUuaWRsCisKICAgICB4bWwvRE9NUGFyc2VyLmlkbAogICAgIHhtbC9YTUxIdHRwUmVx
dWVzdC5pZGwKICAgICB4bWwvWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5pZGwKQEAgLTE2ODQs
NiArMTY4OCw4IEBAIHNldChXSU5ET1dfQ09OU1RSVUNUT1JTX0ZJTEUgJHtERVJJVkVEX1NPVVJD
RVNfV0VCQ09SRV9ESVJ9L0RPTVdpbmRvd0NvbnN0cnVjdG9yCiBzZXQoV09SS0VSR0xPQkFMU0NP
UEVfQ09OU1RSVUNUT1JTX0ZJTEUgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L1dvcmtl
ckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCkKIHNldChERURJQ0FURURXT1JLRVJHTE9CQUxT
Q09QRV9DT05TVFJVQ1RPUlNfRklMRSAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsKQogc2V0KFNFUlZJQ0VXT1JL
RVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSAke0RFUklWRURfU09VUkNFU19XRUJDT1JF
X0RJUn0vU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCkKK3NldChXT1JL
TEVUR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09S
RV9ESVJ9L1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwpCitzZXQoUEFJTlRXT1JL
TEVUR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09S
RV9ESVJ9L1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCkKIAogV0VCS0lU
X0ZSQU1FV09SS19ERUNMQVJFKFdlYkNvcmUpCiBXRUJLSVRfSU5DTFVERV9DT05GSUdfRklMRVNf
SUZfRVhJU1RTKCkKQEAgLTE4NjMsNyArMTg2OSw5IEBAIEdFTkVSQVRFX0JJTkRJTkdTKFdlYkNv
cmVCaW5kaW5ncwogICAgICAgICAtLXdpbmRvd0NvbnN0cnVjdG9yc0ZpbGUgJHtXSU5ET1dfQ09O
U1RSVUNUT1JTX0ZJTEV9CiAgICAgICAgIC0td29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNG
aWxlICR7V09SS0VSR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEV9CiAgICAgICAgIC0tZGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlICR7REVESUNBVEVEV09SS0VS
R0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEV9Ci0gICAgICAgIC0tc2VydmljZVdvcmtlckds
b2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSAke1NFUlZJQ0VXT1JLRVJHTE9CQUxTQ09QRV9DT05T
VFJVQ1RPUlNfRklMRX0pCisgICAgICAgIC0tc2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3JzRmlsZSAke1NFUlZJQ0VXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRX0K
KyAgICAgICAgLS13b3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlICR7V09SS0xFVEdM
T0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFfQorICAgICAgICAtLXBhaW50V29ya2xldEdsb2Jh
bFNjb3BlQ29uc3RydWN0b3JzRmlsZSAke1BBSU5UV09SS0xFVEdMT0JBTFNDT1BFX0NPTlNUUlVD
VE9SU19GSUxFfSkKIAogR0VORVJBVEVfQklORElOR1MoV2ViQ29yZVRlc3RTdXBwb3J0QmluZGlu
Z3MKICAgICBPVVRQVVRfU09VUkNFIFdlYkNvcmVUZXN0U3VwcG9ydF9TT1VSQ0VTCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA2NjM5MGQ0OWZiMzlkNmM0YjJjNDc2MjYwNWQyNjA1
ZmIyYjViMTBkLi40YzJmNGYwZDUxOWIyYWNkNTc2ZWIwOGNhYTkzYmQyMDgwOTNlYTk0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTg2LDYgKzg2LDcgQEAgVlBBVEggPSBcCiAg
ICAgJChXZWJDb3JlKS93ZWJzb2NrZXRzIFwKICAgICAkKFdlYkNvcmUpL3dvcmtlcnMgXAogICAg
ICQoV2ViQ29yZSkvd29ya2Vycy9zZXJ2aWNlIFwKKyAgICAkKFdlYkNvcmUpL3dvcmtsZXRzIFwK
ICAgICAkKFdlYkNvcmUpL3htbCBcCiAjCiAKQEAgLTQ1Miw3ICs0NTMsNiBAQCBKU19CSU5ESU5H
X0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9jc3MvQ1NTTmFtZXNwYWNlUnVsZS5pZGwgXAogICAg
ICQoV2ViQ29yZSkvY3NzL0NTU1BhZ2VSdWxlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9jc3MvQ1NT
UGFpbnRDYWxsYmFjay5pZGwgXAotICAgICQoV2ViQ29yZSkvY3NzL0NTU1BhaW50V29ya2xldEds
b2JhbFNjb3BlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9jc3MvQ1NTUnVsZS5pZGwgXAogICAgICQo
V2ViQ29yZSkvY3NzL0NTU1J1bGVMaXN0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9jc3MvQ1NTU3R5
bGVEZWNsYXJhdGlvbi5pZGwgXApAQCAtMTAyNCw2ICsxMDI0LDkgQEAgSlNfQklORElOR19JRExT
ID0gXAogICAgICQoV2ViQ29yZSkvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb24uaWRsIFwKICAgICAkKFdlYkNvcmUpL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
VXBkYXRlVmlhQ2FjaGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyV2luZG93Q2xpZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS93b3JrbGV0cy9QYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5pZGwgXAorICAgICQoV2ViQ29yZSkvd29ya2xldHMvV29ya2xl
dC5pZGwgXAorICAgICQoV2ViQ29yZSkvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmlkbCBc
CiAgICAgJChXZWJDb3JlKS94bWwvRE9NUGFyc2VyLmlkbCBcCiAgICAgJChXZWJDb3JlKS94bWwv
WE1MSHR0cFJlcXVlc3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL3htbC9YTUxIdHRwUmVxdWVzdEV2
ZW50VGFyZ2V0LmlkbCBcCkBAIC0xMTU2LDYgKzExNTksNyBAQCBhbGwgOiBcCiAgICAgJChTVVBQ
TEVNRU5UQUxfREVQRU5ERU5DWV9GSUxFKSBcCiAgICAgJChXSU5ET1dfQ09OU1RSVUNUT1JTX0ZJ
TEUpIFwKICAgICAkKFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFKSBcCisJJChX
T1JLTEVUR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUpIFwKICAgICAkKEpTX0RPTV9IRUFE
RVJTKSBcCiAgICAgJChXRUJfRE9NX0hFQURFUlMpIFwKICAgICBcCkBAIC0xNTA0LDYgKzE1MDgs
NyBAQCBJRExfSU5DTFVERVMgPSBcCiAgICAgJChXZWJDb3JlKS9zdmcgXAogICAgICQoV2ViQ29y
ZSkvdGVzdGluZyBcCiAgICAgJChXZWJDb3JlKS93b3JrZXJzIFwKKyAgICAkKFdlYkNvcmUpL3dv
cmtsZXRzIFwKICAgICAkKFdlYkNvcmUpL3htbAogCiBJRExfQ09NTU9OX0FSR1MgPSAkKElETF9J
TkNMVURFUzolPS0taW5jbHVkZSAlKSAtLXdyaXRlLWRlcGVuZGVuY2llcyAtLW91dHB1dERpciAu
CkBAIC0xNTE2LDYgKzE1MjEsOCBAQCBXSU5ET1dfQ09OU1RSVUNUT1JTX0ZJTEUgPSAuL0RPTVdp
bmRvd0NvbnN0cnVjdG9ycy5pZGwKIFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxF
ID0gLi9Xb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKIERFRElDQVRFRFdPUktFUkdM
T0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFID0gLi9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZUNvbnN0cnVjdG9ycy5pZGwKIFNFUlZJQ0VXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNf
RklMRSA9IC4vU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbAorV09SS0xF
VEdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFID0gLi9Xb3JrbGV0R2xvYmFsU2NvcGVDb25z
dHJ1Y3RvcnMuaWRsCitQQUlOVFdPUktMRVRHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSA9
IC4vUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCiBJRExfRklMRVNfVE1Q
ID0gLi9pZGxfZmlsZXMudG1wCiBJRExfQVRUUklCVVRFU19GSUxFID0gJChXZWJDb3JlKS9iaW5k
aW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgogCkBAIC0xNTI4LDEwICsxNTM1LDEwIEBA
IGVuZGVmCiAKICQoU1VQUExFTUVOVEFMX01BS0VGSUxFX0RFUFMpIDogJChQUkVQUk9DRVNTX0lE
TFNfU0NSSVBUUykgJChKU19CSU5ESU5HX0lETFMpICQoUExBVEZPUk1fRkVBVFVSRV9ERUZJTkVT
KSBEZXJpdmVkU291cmNlcy5tYWtlCiAJJChmb3JlYWNoIGYsJChKU19CSU5ESU5HX0lETFMpLEBl
Y2hvICQoZik+PiQoSURMX0ZJTEVTX1RNUCkkKE5MKSkKLQkkKFBFUkwpICQoV2ViQ29yZSkvYmlu
ZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGwgLS1kZWZpbmVzICIkKEZFQVRVUkVfQU5E
X1BMQVRGT1JNX0RFRklORVMpICQoQURESVRJT05BTF9JRExfREVGSU5FUykgTEFOR1VBR0VfSkFW
QVNDUklQVCIgLS1pZGxGaWxlc0xpc3QgJChJRExfRklMRVNfVE1QKSAtLXN1cHBsZW1lbnRhbERl
cGVuZGVuY3lGaWxlICQoU1VQUExFTUVOVEFMX0RFUEVOREVOQ1lfRklMRSkgLS13aW5kb3dDb25z
dHJ1Y3RvcnNGaWxlICQoV0lORE9XX0NPTlNUUlVDVE9SU19GSUxFKSAtLXdvcmtlckdsb2JhbFNj
b3BlQ29uc3RydWN0b3JzRmlsZSAkKFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxF
KSAtLWRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSAkKERFRElDQVRF
RFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFKSAtLXNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgJChTRVJWSUNFV09SS0VSR0xPQkFMU0NPUEVfQ09OU1RS
VUNUT1JTX0ZJTEUpIC0tc3VwcGxlbWVudGFsTWFrZWZpbGVEZXBzICRACisJJChQRVJMKSAkKFdl
YkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsIC0tZGVmaW5lcyAiJChG
RUFUVVJFX0FORF9QTEFURk9STV9ERUZJTkVTKSAkKEFERElUSU9OQUxfSURMX0RFRklORVMpIExB
TkdVQUdFX0pBVkFTQ1JJUFQiIC0taWRsRmlsZXNMaXN0ICQoSURMX0ZJTEVTX1RNUCkgLS1zdXBw
bGVtZW50YWxEZXBlbmRlbmN5RmlsZSAkKFNVUFBMRU1FTlRBTF9ERVBFTkRFTkNZX0ZJTEUpIC0t
d2luZG93Q29uc3RydWN0b3JzRmlsZSAkKFdJTkRPV19DT05TVFJVQ1RPUlNfRklMRSkgLS13b3Jr
ZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgJChXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJV
Q1RPUlNfRklMRSkgLS1kZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUg
JChERURJQ0FURURXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSkgLS1zZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlICQoU0VSVklDRVdPUktFUkdMT0JBTFND
T1BFX0NPTlNUUlVDVE9SU19GSUxFKSAtLXdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0Zp
bGUgJChXT1JLTEVUR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUpIC0tcGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlICQoUEFJTlRXT1JLTEVUR0xPQkFMU0NPUEVfQ09O
U1RSVUNUT1JTX0ZJTEUpIC0tc3VwcGxlbWVudGFsTWFrZWZpbGVEZXBzICRACiAJJChERUxFVEUp
ICQoSURMX0ZJTEVTX1RNUCkKIAotSlMlLmNwcCBKUyUuaCA6ICUuaWRsICQoSlNfQklORElOR1Nf
U0NSSVBUUykgJChJRExfQVRUUklCVVRFU19GSUxFKSAkKFdJTkRPV19DT05TVFJVQ1RPUlNfRklM
RSkgJChXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSkgJChQTEFURk9STV9GRUFU
VVJFX0RFRklORVMpCitKUyUuY3BwIEpTJS5oIDogJS5pZGwgJChKU19CSU5ESU5HU19TQ1JJUFRT
KSAkKElETF9BVFRSSUJVVEVTX0ZJTEUpICQoV0lORE9XX0NPTlNUUlVDVE9SU19GSUxFKSAkKFdP
UktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFKSAkKFdPUktMRVRHTE9CQUxTQ09QRV9D
T05TVFJVQ1RPUlNfRklMRSkgJChQTEFURk9STV9GRUFUVVJFX0RFRklORVMpCiAJJChQRVJMKSAk
KFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGwgJChJRExfQ09N
TU9OX0FSR1MpIC0tZGVmaW5lcyAiJChGRUFUVVJFX0FORF9QTEFURk9STV9ERUZJTkVTKSAkKEFE
RElUSU9OQUxfSURMX0RFRklORVMpIExBTkdVQUdFX0pBVkFTQ1JJUFQiIC0tZ2VuZXJhdG9yIEpT
IC0taWRsQXR0cmlidXRlc0ZpbGUgJChJRExfQVRUUklCVVRFU19GSUxFKSAtLXN1cHBsZW1lbnRh
bERlcGVuZGVuY3lGaWxlICQoU1VQUExFTUVOVEFMX0RFUEVOREVOQ1lfRklMRSkgJDwKIAogLWlu
Y2x1ZGUgJChTVVBQTEVNRU5UQUxfTUFLRUZJTEVfREVQUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggYWVi
NjYyZWIyZjAwZTBjMmJkY2ViNWM3YWExZmU1NDBiMGMxYmI3Yy4uMTFiNmMwMjRhZGEwZDFiNTA4
MDIwYzU0ODgyYmNjMjQ4YWQ2NTEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTM4NSw3ICszODUsNyBA
QCBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRTdHJpbmdzLmNwcAogYmluZGluZ3MvanMvSlNET01D
b252ZXJ0V2ViR0wuY3BwCiBiaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmNwcAogYmluZGluZ3Mv
anMvSlNEZXByZWNhdGVkQ1NTT01WYWx1ZUN1c3RvbS5jcHAKLWJpbmRpbmdzL2pzL0pTQ1NTUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwCitiaW5kaW5ncy9qcy9KU1BhaW50V29ya2xl
dEdsb2JhbFNjb3BlQ3VzdG9tLmNwcAogYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuY3BwCiBi
aW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAKIGJpbmRpbmdz
L2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAKQEAgLTQ3OCw2ICs0NzgsNyBAQCBiaW5k
aW5ncy9qcy9KU1dpbmRvd1Byb3h5LmNwcAogYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29w
ZUJhc2UuY3BwCiBiaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcAogYmlu
ZGluZ3MvanMvSlNXb3JrZXJOYXZpZ2F0b3JDdXN0b20uY3BwCitiaW5kaW5ncy9qcy9KU1dvcmts
ZXRHbG9iYWxTY29wZUJhc2UuY3BwCiBiaW5kaW5ncy9qcy9KU1hNTERvY3VtZW50Q3VzdG9tLmNw
cAogYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKIGJpbmRpbmdzL2pzL0pT
WFBhdGhOU1Jlc29sdmVyQ3VzdG9tLmNwcApAQCAtNjEzLDcgKzYxNCw2IEBAIGNzcy9DU1NOYW1l
ZEltYWdlVmFsdWUuY3BwCiBjc3MvQ1NTTmFtZXNwYWNlUnVsZS5jcHAKIGNzcy9DU1NQYWdlUnVs
ZS5jcHAKIGNzcy9DU1NQYWludEltYWdlVmFsdWUuY3BwCi1jc3MvQ1NTUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuY3BwCiBjc3MvQ1NTUGVuZGluZ1N1YnN0aXR1dGlvblZhbHVlLmNwcAogY3NzL0NT
U1ByaW1pdGl2ZVZhbHVlLmNwcAogY3NzL0NTU1Byb3BlcnR5LmNwcApAQCAtMjM3MSw2ICsyMzcx
LDEyIEBAIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCiB3
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKIHdv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCiAKK3dvcmtsZXRzL1dvcmts
ZXQuY3BwCit3b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5jcHAKK3dvcmtsZXRzL1dvcmts
ZXRHbG9iYWxTY29wZS5jcHAKK3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcAor
d29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisKIHhtbC9ET01QYXJzZXIuY3Bw
CiB4bWwvTmF0aXZlWFBhdGhOU1Jlc29sdmVyLmNwcAogeG1sL1hNTEVycm9ycy5jcHAKQEAgLTI0
ODAsNyArMjQ4Niw5IEBAIEpTQ1NTS2V5ZnJhbWVzUnVsZS5jcHAKIEpTQ1NTTWVkaWFSdWxlLmNw
cAogSlNDU1NOYW1lc3BhY2VSdWxlLmNwcAogSlNDU1NQYWludENhbGxiYWNrLmNwcAotSlNDU1NQ
YWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKK0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
CitKU1dvcmtsZXQuY3BwCitKU1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKIEpTQ1NTUGFnZVJ1bGUu
Y3BwCiBKU0NTU1J1bGUuY3BwCiBKU0NTU1J1bGVMaXN0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZjMmQ3MWVmYzc3MTU3
ZGRlM2QzNDRmMmFmZTQ3OTY3MzYxNDZhODMuLmFiYjA0MmU4YzQxODMwOWRjZGY4YWRiMTNmMTg3
OGM4OWM3YmE0NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTEzNTIsMTQgKzEzNTIsMTkgQEAKIAkJNEIzNDgwOTQwRUVGNTBE
NDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDRCMzQ4MDkyMEVFRjUwRDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJj
ZUNHLmggKi87IH07CiAJCTRCNUJERDlCMjE2NThBMTUwMERENDI2MiAvKiBDU1NQYWludENhbGxi
YWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjVC
REQ5QTIxNjU4QTE1MDBERDQyNjIgLyogQ1NTUGFpbnRDYWxsYmFjay5oICovOyB9OwogCQk0QjZC
NUNCRDIxNjQwRUZGMDA2MDM4MTcgLyogRE9NQ1NTUGFpbnRXb3JrbGV0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjZCNUNCODIxNjNFQzA3MDA2MDM4
MTcgLyogRE9NQ1NTUGFpbnRXb3JrbGV0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKLQkJNEI2QjVDQzAyMTY0Mzg2NDAwNjAzODE3IC8qIENTU1BhaW50
V29ya2xldEdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0QjZCNUNCRjIxNjQzODY0MDA2MDM4MTcgLyogQ1NTUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuaCAqLzsgfTsKKwkJNEI2QjVDQzAyMTY0Mzg2NDAwNjAzODE3IC8qIFBhaW50V29y
a2xldEdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0QjZCNUNCRjIxNjQzODY0MDA2MDM4MTcgLyogUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUuaCAqLzsgfTsKIAkJNEI2RTg3NjkyMTc2RDY5MjAwNDIwRTVFIC8qIENTU1BhaW50SW1hZ2VW
YWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI2
RTg3NjgyMTc2RDY5MjAwNDIwRTVFIC8qIENTU1BhaW50SW1hZ2VWYWx1ZS5oICovOyB9OwogCQk0
QjZGQTZGNDBDMzlFNDhDMDAwODcwMTEgLyogU21hcnRSZXBsYWNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjZGQTZGMjBDMzlFNDhDMDAwODcwMTEg
LyogU21hcnRSZXBsYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNEI3QUU0OTMyMTc3QjU2RjAwQzU5OTU5IC8qIEN1c3RvbVBhaW50SW1hZ2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCN0FFNDky
MjE3N0I1NkYwMEM1OTk1OSAvKiBDdXN0b21QYWludEltYWdlLmggKi87IH07CisJCTRCN0Y5QzUy
MjE4M0I1RTUwMDFDRUJBMCAvKiBXb3JrbGV0Q29uc29sZUNsaWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI3RjlDNTEyMTgzQjVFNTAwMUNFQkEw
IC8qIFdvcmtsZXRDb25zb2xlQ2xpZW50LmggKi87IH07CiAJCTRCQUU5NUIxMEIyRkE5Q0UwMEFF
RDhBMCAvKiBFZGl0b3JEZWxldGVBY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDRCQUU5NUIwMEIyRkE5Q0UwMEFFRDhBMCAvKiBFZGl0b3JEZWxl
dGVBY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0QkRBM0ZGRTIxNTFCNkY1MDBGRDY2MDQgLyogRE9NQ1NTQ3VzdG9tUHJvcGVydHlEZXNj
cmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
QkRBM0ZGODIxNTFCNkYyMDBGRDY2MDQgLyogRE9NQ1NTQ3VzdG9tUHJvcGVydHlEZXNjcmlwdG9y
LmggKi87IH07CiAJCTRCREEzRkZGMjE1MUI2RjUwMEZENjYwNCAvKiBET01DU1NSZWdpc3RlckN1
c3RvbVByb3BlcnR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0QkRBM0ZGOTIxNTFCNkYzMDBGRDY2MDQgLyogRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9w
ZXJ0eS5oICovOyB9OwogCQk0QkRBNDAwMTIxNTFCNkY1MDBGRDY2MDQgLyogQ1NTUmVnaXN0ZXJl
ZEN1c3RvbVByb3BlcnR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0QkRBM0ZGQjIxNTFCNkY0MDBGRDY2MDQgLyogQ1NTUmVnaXN0ZXJlZEN1c3RvbVBy
b3BlcnR5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJNEJERUEzMjAyMTdFQzU1RjAwNTJERkNEIC8qIFdvcmtsZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCREVBMzFGMjE3RUM1NUYwMDUyREZDRCAv
KiBXb3JrbGV0LmggKi87IH07CisJCTRCREVBMzI1MjE3RkUyRTQwMDUyREZDRCAvKiBXb3JrbGV0
R2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDRCREVBMzI0MjE3RkUyRTQwMDUyREZDRCAvKiBXb3JrbGV0R2xvYmFsU2NvcGUuaCAqLzsg
fTsKKwkJNEJERUEzMjgyMTgwMDNGNzAwNTJERkNEIC8qIFdvcmtsZXRTY3JpcHRDb250cm9sbGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QkRFQTMy
NzIxODAwM0Y3MDA1MkRGQ0QgLyogV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCAqLzsgfTsKKwkJ
NEJERUEzMkMyMTgwMzNFQjAwNTJERkNEIC8qIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJERUEzMkIyMTgw
MzNFQjAwNTJERkNEIC8qIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5oICovOyB9OwogCQk0RDNC
MDBBQjIxNUQ2OUE3MDA3NkI5ODMgLyogTWVkaWFSZWNvcmRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEQzQjAwQTkyMTVENjlBNzAwNzZCOTgzIC8q
IE1lZGlhUmVjb3JkZXIuaCAqLzsgfTsKIAkJNEQzQjAwQUYyMTVENkE2OTAwNzZCOTgzIC8qIEJs
b2JFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NEQzQjAwQUQyMTVENkE2OTAwNzZCOTgzIC8qIEJsb2JFdmVudC5oICovOyB9OwogCQk0REI3MTMw
RDIxNkVDQjREMDA5NkE0REQgLyogTWVkaWFSZWNvcmRlckVycm9yRXZlbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDREQjcxMzBDMjE2RUMyQkQwMDk2
QTRERCAvKiBNZWRpYVJlY29yZGVyRXJyb3JFdmVudC5oICovOyB9OwpAQCAtNzkwMSwxNiArNzkw
NiwxOCBAQAogCQk0QjZCNUNCNjIxNjNEQzFBMDA2MDM4MTcgLyogRE9NQ1NTUGFpbnRXb3JrbGV0
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBET01DU1NQYWludFdvcmtsZXQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0QjZCNUNCODIxNjNFQzA3MDA2MDM4MTcgLyogRE9NQ1NTUGFpbnRXb3JrbGV0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERPTUNTU1BhaW50V29ya2xldC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0QjZCNUNCOTIxNjNFRDMyMDA2MDM4MTcgLyogRE9NQ1NTUGFpbnRXb3JrbGV0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTUNTU1BhaW50V29ya2xldC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTRCNkI1Q0JFMjE2NDM0RkIwMDYwMzgxNyAvKiBKU0NTU1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ1NT
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk0QjZCNUNCRjIxNjQzODY0MDA2MDM4MTcgLyogQ1NTUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNEI2QjVDQzEyMTY0MzlDRjAwNjAzODE3IC8qIENT
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU1BhaW50
V29ya2xldEdsb2JhbFNjb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNEI2
QjVDQzMyMTY0M0E4RTAwNjAzODE3IC8qIENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTRCNkI1Q0JFMjE2NDM0RkIwMDYwMzgxNyAvKiBKU1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QjZCNUNCRjIx
NjQzODY0MDA2MDM4MTcgLyogUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNEI2QjVDQzEyMTY0MzlDRjAwNjAzODE3IC8qIFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEI2QjVDQzMyMTY0M0E4RTAwNjAzODE3IC8qIFBhaW50
V29ya2xldEdsb2JhbFNjb3BlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQYWludFdvcmtsZXRHbG9iYWxTY29wZS5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCNkU4NzY4MjE3NkQ2OTIwMDQyMEU1RSAv
KiBDU1NQYWludEltYWdlVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTUGFpbnRJbWFnZVZhbHVl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCNkU4NzZCMjE3NkQ4QTEwMDQyMEU1
RSAvKiBDU1NQYWludEltYWdlVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTUGFpbnRJ
bWFnZVZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI2RkE2RjIwQzM5
RTQ4QzAwMDg3MDExIC8qIFNtYXJ0UmVwbGFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTbWFydFJlcGxhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI2
RkE2RjYwQzM5RTRBMTAwMDg3MDExIC8qIFNtYXJ0UmVwbGFjZUNGLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNtYXJ0UmVwbGFjZUNGLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNEI3QUU0OTIyMTc3QjU2RjAwQzU5OTU5IC8qIEN1c3RvbVBhaW50
SW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3VzdG9tUGFpbnRJbWFnZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0QjdBRTQ5NTIxNzdCNjNFMDBDNTk5NTkgLyogQ3VzdG9tUGFpbnRJ
bWFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDdXN0b21QYWludEltYWdlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEI3RjlDNTEyMTgzQjVFNTAwMUNFQkEwIC8qIFdvcmts
ZXRDb25zb2xlQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtsZXRDb25zb2xlQ2xpZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRCN0Y5QzU0MjE4M0I2MzQwMDFDRUJBMCAv
KiBXb3JrbGV0Q29uc29sZUNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrbGV0Q29u
c29sZUNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCQUU5NUIwMEIy
RkE5Q0UwMEFFRDhBMCAvKiBFZGl0b3JEZWxldGVBY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRWRpdG9yRGVsZXRlQWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTRCREEzRkY1MjE1MUI2RjAwMEZENjYwNCAvKiBET01DU1NSZWdpc3RlckN1c3Rv
bVByb3BlcnR5LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBET01DU1NSZWdpc3RlckN1c3Rv
bVByb3BlcnR5LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEJEQTNGRjcyMTUx
QjZGMTAwRkQ2NjA0IC8qIERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0
eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03OTE4LDYgKzc5MjUsMTYgQEAK
IAkJNEJEQTNGRjkyMTUxQjZGMzAwRkQ2NjA0IC8qIERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVy
dHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NQ1NTUmVnaXN0ZXJDdXN0
b21Qcm9wZXJ0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QkRBM0ZGQTIxNTFC
NkYzMDBGRDY2MDQgLyogRE9NQ1NTQ3VzdG9tUHJvcGVydHlEZXNjcmlwdG9yLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBET01DU1NDdXN0b21Qcm9wZXJ0eURlc2NyaXB0b3IuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QkRBM0ZGQjIxNTFCNkY0MDBGRDY2MDQgLyogQ1NT
UmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0QkRFQTMxQzIxN0VCQ0Y1MDA1MkRGQ0QgLyogV29ya2xldC5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV29y
a2xldC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRCREVBMzFGMjE3RUM1NUYw
MDUyREZDRCAvKiBXb3JrbGV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtsZXQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEJERUEzMjMyMTdFQzk2QTAwNTJERkNEIC8qIFdvcmtsZXQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2xldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTRCREVBMzI0MjE3RkUyRTQwMDUyREZDRCAvKiBXb3JrbGV0R2xvYmFsU2NvcGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV29ya2xldEdsb2JhbFNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTRCREVBMzI2MjE3RkUyRkEwMDUyREZDRCAvKiBXb3JrbGV0R2xvYmFsU2Nv
cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2xldEdsb2JhbFNjb3BlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEJERUEzMjcyMTgwMDNGNzAwNTJERkNEIC8qIFdvcmts
ZXRTY3JpcHRDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtsZXRTY3JpcHRDb250cm9s
bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRCREVBMzI5MjE4MDA0MEMwMDUy
REZDRCAvKiBXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
b3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTRCREVBMzJBMjE4MDEwNzIwMDUyREZDRCAvKiBXb3JrbGV0R2xvYmFsU2NvcGUuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFdvcmtsZXRHbG9iYWxTY29wZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRC
REVBMzJCMjE4MDMzRUIwMDUyREZDRCAvKiBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTRCREVBMzJEMjE4MDM0MDUwMDUyREZDRCAvKiBKU1dvcmtsZXRHbG9iYWxT
Y29wZUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEQzQjAwQTQyMTVENjEwNDAwNzZC
OTgzIC8qIE1lZGlhUmVjb3JkZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhUmVj
b3JkZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RDNCMDBBNjIxNUQ2NDVC
MDA3NkI5ODMgLyogQmxvYkV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBCbG9iRXZl
bnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RDNCMDBBODIxNUQ2OUE2MDA3
NkI5ODMgLyogTWVkaWFSZWNvcmRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBNZWRpYVJlY29yZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE1ODAxLDYgKzE1ODE4LDcgQEAKIAkJCQlCMjIyNzdDQTBEMDBCRjFFMDA3MUI3ODIgLyogc3Zn
ICovLAogCQkJCTQxN0RBNENEMTM3MzQyMDQwMDdDNTdGQiAvKiB0ZXN0aW5nICovLAogCQkJCTJF
NDM0NjMxMEY1NDZBNjgwMEIwRjFCQSAvKiB3b3JrZXJzICovLAorCQkJCTRCREVBMzE4MjE3RUJC
ODgwMDUyREZDRCAvKiB3b3JrbGV0cyAqLywKIAkJCQlFMUYwNDI0MzA5ODM5Mzg5MDA2Njk0RUEg
LyogeG1sICovLAogCQkJCTY1NjU4MEVDMDlEMTJCMjAwMDBFNjFENyAvKiBEZXJpdmVkIFNvdXJj
ZXMgKi8sCiAJCQkJMDg5QzE2NjVGRTg0MTE1OEMwMkFBQzA3IC8qIFJlc291cmNlcyAqLywKQEAg
LTE4MDM2LDYgKzE4MDU0LDI2IEBACiAJCQlwYXRoID0gYW5pbWF0aW9uOwogCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJNEJERUEzMTgyMTdFQkI4ODAwNTJERkNEIC8qIHdvcmts
ZXRzICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk0QjZC
NUNDMTIxNjQzOUNGMDA2MDM4MTcgLyogUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwICovLAor
CQkJCTRCNkI1Q0JGMjE2NDM4NjQwMDYwMzgxNyAvKiBQYWludFdvcmtsZXRHbG9iYWxTY29wZS5o
ICovLAorCQkJCTRCNkI1Q0MzMjE2NDNBOEUwMDYwMzgxNyAvKiBQYWludFdvcmtsZXRHbG9iYWxT
Y29wZS5pZGwgKi8sCisJCQkJNEJERUEzMjMyMTdFQzk2QTAwNTJERkNEIC8qIFdvcmtsZXQuY3Bw
ICovLAorCQkJCTRCREVBMzFGMjE3RUM1NUYwMDUyREZDRCAvKiBXb3JrbGV0LmggKi8sCisJCQkJ
NEJERUEzMUMyMTdFQkNGNTAwNTJERkNEIC8qIFdvcmtsZXQuaWRsICovLAorCQkJCTRCN0Y5QzU0
MjE4M0I2MzQwMDFDRUJBMCAvKiBXb3JrbGV0Q29uc29sZUNsaWVudC5jcHAgKi8sCisJCQkJNEI3
RjlDNTEyMTgzQjVFNTAwMUNFQkEwIC8qIFdvcmtsZXRDb25zb2xlQ2xpZW50LmggKi8sCisJCQkJ
NEJERUEzMjYyMTdGRTJGQTAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxTY29wZS5jcHAgKi8sCisJ
CQkJNEJERUEzMjQyMTdGRTJFNDAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxTY29wZS5oICovLAor
CQkJCTRCREVBMzJBMjE4MDEwNzIwMDUyREZDRCAvKiBXb3JrbGV0R2xvYmFsU2NvcGUuaWRsICov
LAorCQkJCTRCREVBMzI5MjE4MDA0MEMwMDUyREZDRCAvKiBXb3JrbGV0U2NyaXB0Q29udHJvbGxl
ci5jcHAgKi8sCisJCQkJNEJERUEzMjcyMTgwMDNGNzAwNTJERkNEIC8qIFdvcmtsZXRTY3JpcHRD
b250cm9sbGVyLmggKi8sCisJCQkpOworCQkJcGF0aCA9IHdvcmtsZXRzOworCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJNEQzQjAwQTAyMTVENUMwRjAwNzZCOTgzIC8qIG1lZGlh
cmVjb3JkZXIgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAt
MjQ0MDksNiArMjQ0NDcsOCBAQAogCQkJCUJDQkZCNTNCMERDRDI5Q0YwMDE5QjNFNSAvKiBKU1dp
bmRvd1Byb3h5LmggKi8sCiAJCQkJRTFDMzZEMzIwRUIwQTA5NDAwNzQxMEJDIC8qIEpTV29ya2Vy
R2xvYmFsU2NvcGVCYXNlLmNwcCAqLywKIAkJCQlFMUMzNkQzMzBFQjBBMDk0MDA3NDEwQkMgLyog
SlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuaCAqLywKKwkJCQk0QkRFQTMyRDIxODAzNDA1MDA1MkRG
Q0QgLyogSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcCAqLywKKwkJCQk0QkRFQTMyQjIxODAz
M0VCMDA1MkRGQ0QgLyogSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmggKi8sCiAJCQkJNzA5QTAx
RkQxRTNEMEJDQzAwNkIwRDRDIC8qIE1vZHVsZUZldGNoRmFpbHVyZUtpbmQuaCAqLywKIAkJCQk0
MUI0NTlFRDFGNTVFQkM3MDAwMEY2RkQgLyogUmVhZGFibGVTdHJlYW0uY3BwICovLAogCQkJCTQx
QjQ1OURBMUY0Q0FEQjkwMDAwRjZGRCAvKiBSZWFkYWJsZVN0cmVhbS5oICovLApAQCAtMjQ0NDks
MTIgKzI0NDg5LDEyIEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk3Q0QzNDQxQjFGMzJERTMwMDAw
RENENDkgLyogQ2FjaGVkIEF0dHJpYnV0ZXMgdy8gSW52YWxpZGF0aW9uICovLAogCQkJCTdDM0Q4
RUU0MUUwOEJBQkUwMDIzQjA4NCAvKiBHQyAvIFdyYXBwaW5nIE9ubHkgKi8sCi0JCQkJNEI2QjVD
QkUyMTY0MzRGQjAwNjAzODE3IC8qIEpTQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20u
Y3BwICovLAogCQkJCTlCQzVGOURGMUQ1QUFGNkEwMDJCNzQ5RCAvKiBKU0N1c3RvbUVsZW1lbnRS
ZWdpc3RyeUN1c3RvbS5jcHAgKi8sCiAJCQkJQkNEOUMyNUUwQzE3QUE2NzAwNUM5MEEyIC8qIEpT
RE9NV2luZG93Q3VzdG9tLmNwcCAqLywKIAkJCQk2NTJGQkJCQjBERTI3Q0I2MDAwMUQzODYgLyog
SlNET01XaW5kb3dDdXN0b20uaCAqLywKIAkJCQlCQzU4MjNGNDBDMEE5OERGMDA1M0YxQjUgLyog
SlNIVE1MRWxlbWVudEN1c3RvbS5jcHAgKi8sCiAJCQkJQkNFMUM0M0YwRDk4MzBGNDAwM0IwMkYy
IC8qIEpTTG9jYXRpb25DdXN0b20uY3BwICovLAorCQkJCTRCNkI1Q0JFMjE2NDM0RkIwMDYwMzgx
NyAvKiBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcCAqLywKIAkJCQk0MThDMzk1
RDFDOEYwQUFCMDA1MUM4QTMgLyogSlNSZWFkYWJsZVN0cmVhbVNvdXJjZUN1c3RvbS5jcHAgKi8s
CiAJCQkJNDZCQ0JCQkUyMDg1MDA1QjAwNzEwNjM4IC8qIEpTUmVtb3RlRE9NV2luZG93Q3VzdG9t
LmNwcCAqLywKIAkJCSk7CkBAIC0yNjA1Miw5ICsyNjA5Miw2IEBACiAJCQkJNEI1QkREOTkyMTY1
ODhFNTAwREQ0MjYyIC8qIENTU1BhaW50Q2FsbGJhY2suaWRsICovLAogCQkJCTRCNkU4NzZCMjE3
NkQ4QTEwMDQyMEU1RSAvKiBDU1NQYWludEltYWdlVmFsdWUuY3BwICovLAogCQkJCTRCNkU4NzY4
MjE3NkQ2OTIwMDQyMEU1RSAvKiBDU1NQYWludEltYWdlVmFsdWUuaCAqLywKLQkJCQk0QjZCNUND
MTIxNjQzOUNGMDA2MDM4MTcgLyogQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwICovLAot
CQkJCTRCNkI1Q0JGMjE2NDM4NjQwMDYwMzgxNyAvKiBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5oICovLAotCQkJCTRCNkI1Q0MzMjE2NDNBOEUwMDYwMzgxNyAvKiBDU1NQYWludFdvcmtsZXRH
bG9iYWxTY29wZS5pZGwgKi8sCiAJCQkJOTQxODI3OEMxRDhDQUU5NTAwNDkyNzY0IC8qIENTU1Bl
bmRpbmdTdWJzdGl0dXRpb25WYWx1ZS5jcHAgKi8sCiAJCQkJOTQxODI3OEQxRDhDQUU5NTAwNDky
NzY0IC8qIENTU1BlbmRpbmdTdWJzdGl0dXRpb25WYWx1ZS5oICovLAogCQkJCUE4MEU2Q0RCMEEx
OTg5Q0EwMDdGQjhDNSAvKiBDU1NQcmltaXRpdmVWYWx1ZS5jcHAgKi8sCkBAIC0yODA1NSw3ICsy
ODA5Miw2IEBACiAJCQkJQTgwRTZEMDAwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1BhZ2VSdWxlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0QjVCREQ5QjIxNjU4QTE1MDBERDQyNjIgLyogQ1NTUGFpbnRD
YWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEI2RTg3NjkyMTc2RDY5MjAwNDIwRTVFIC8q
IENTU1BhaW50SW1hZ2VWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNEI2QjVDQzAyMTY0Mzg2
NDAwNjAzODE3IC8qIENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5NDZEMzcyRTFENkNCMjk0MDA3NzA4NEYgLyogQ1NTUGFyc2VyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlFNEE3OTk1MjIwRUU0QjE0MDBDMTk1NjggLyogQ1NTUGFyc2VyQ29udGV4dC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTQ5Qzc3MDExRDZFMUQ5ODAwQzBERTRGIC8qIENTU1BhcnNlckZh
c3RQYXRocy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTc1OCw2ICsyOTc5NCw3IEBACiAJCQkJRTFD
MzYyRUYwRUFGMkFBOTAwNzQxMEJDIC8qIEpTV29ya2VyTG9jYXRpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCUUxMjcxQTU4MEVFRUNERTQwMEY2MTIxMyAvKiBKU1dvcmtlck5hdmlnYXRvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTFGMTc1MDYxRjM1OEJGNzAwQzc0OTUwIC8qIEpTV29ya2VyVHlw
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNEJERUEzMkMyMTgwMzNFQjAwNTJERkNEIC8qIEpTV29y
a2xldEdsb2JhbFNjb3BlQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M0Qzk2REQxQUQ0NDgz
NTAwMzY1QTYwIC8qIEpTV3JpdGFibGVTdHJlYW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTgzNThD
QjcwMUM1MzI3NzUwMEUwQzJEOCAvKiBKU1hNTERvY3VtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzM0OEJENDBEQjdGODA0MDA0QUJBQjkgLyogSlNYTUxIdHRwUmVxdWVzdC5oIGluIEhlYWRl
cnMgKi8sCkBAIC0zMDE0NCw2ICszMDE4MSw3IEBACiAJCQkJMDg4NTA2N0YxMURBMDQ1QjAwMTgy
Qjk4IC8qIFBhaW50SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg4NTA2ODAxMURBMDQ1QjAw
MTgyQjk4IC8qIFBhaW50UGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTRCMUUxM0VCMjE3OTM3
QjMwMDQyQ0Y5OCAvKiBQYWludFJlbmRlcmluZ0NvbnRleHQyRC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNEI2QjVDQzAyMTY0Mzg2NDAwNjAzODE3IC8qIFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBODBFNkNGQjBBMTk4OUNBMDA3RkI4QzUgLyogUGFpci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwQTMxMkIwMjZGNzAwQzFBMzU5IC8qIFBhbm5lci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwMUExMkIwMjY3NjAwQzFBMzU5IC8qIFBhbm5lck5vZGUu
aCBpbiBIZWFkZXJzICovLApAQCAtMzE1NjIsNiArMzE2MDAsMTAgQEAKIAkJCQk5N0FBQkQyRDE0
RkEwOUQ1MDA3NDU3QUUgLyogV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE1NEEwQzY4MURCODA3RDkwMDE3QTkwQiAvKiBXb3JrZXJUb1BhZ2VG
cm9udGVuZENoYW5uZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRjE3NEZFMUYzNTg5OTIwMEM3
NDk1MCAvKiBXb3JrZXJUeXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0QkRFQTMyMDIxN0VDNTVG
MDA1MkRGQ0QgLyogV29ya2xldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNEI3RjlDNTIyMTgzQjVF
NTAwMUNFQkEwIC8qIFdvcmtsZXRDb25zb2xlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk0
QkRFQTMyNTIxN0ZFMkU0MDA1MkRGQ0QgLyogV29ya2xldEdsb2JhbFNjb3BlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk0QkRFQTMyODIxODAwM0Y3MDA1MkRGQ0QgLyogV29ya2xldFNjcmlwdENvbnRy
b2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTI0MDk5RTY0OTIwMDU2RTU4MSAvKiBX
cmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNkU2
RkU5MUJCRDEyRTUwMDBBNjA1MyAvKiBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0MTZFNkZFODFCQkQxMkRGMDAwQTYwNTMgLyogV3JpdGFibGVTdHJlYW1JbnRl
cm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0
b20uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOWZhMzQ1YTVlMzhmMzlmM2Mx
ZGVkY2Q1M2I2ZmEzNzM4NTUxM2I3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGVDdXN0b20uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTMzICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiSlNDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgotCi0jaWYg
RU5BQkxFKENTU19QQUlOVElOR19BUEkpCi0KLSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1
ZGUgIkpTQ1NTUGFpbnRDYWxsYmFjay5oIgotI2luY2x1ZGUgIkpTRE9NQ29udmVydENhbGxiYWNr
cy5oIgotI2luY2x1ZGUgIkpTRE9NQ29udmVydFNlcXVlbmNlcy5oIgotI2luY2x1ZGUgPHd0Zi9T
ZXRGb3JTY29wZS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci11c2luZyBuYW1lc3BhY2UgSlND
OwotCi1zdGF0aWMgSlNWYWx1ZSB0aHJvd0ludmFsaWRNb2RpZmljYXRpb25FcnJvcihFeGVjU3Rh
dGUmIHN0YXRlLCBUaHJvd1Njb3BlJiBzY29wZSwgQVNDSUlMaXRlcmFsIG1lc3NhZ2UpCi17Ci0g
ICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKLSAgICB0aHJvd0V4Y2VwdGlvbigmc3RhdGUs
IHNjb3BlLCBjcmVhdGVET01FeGNlcHRpb24oJnN0YXRlLCBJbnZhbGlkTW9kaWZpY2F0aW9uRXJy
b3IsIG1lc3NhZ2UpKTsKLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQotdm9pZCBKU0NT
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihKU0M6OlNs
b3RWaXNpdG9yJiB2aXNpdG9yKQotewotICAgIGZvciAoYXV0byYgcmVnaXN0ZXJlZCA6IHdyYXBw
ZWQoKS5wYWludERlZmluaXRpb25NYXAoKS52YWx1ZXMoKSkKLSAgICAgICAgcmVnaXN0ZXJlZC0+
cGFpbnRDYWxsYmFjay0+dmlzaXRKU0Z1bmN0aW9uKHZpc2l0b3IpOwotfQotCi0vLyBodHRwczov
L2RyYWZ0cy5jc3MtaG91ZGluaS5vcmcvY3NzLXBhaW50LWFwaS8jcmVnaXN0ZXJpbmctY3VzdG9t
LXBhaW50Ci1KU1ZhbHVlIEpTQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUGFp
bnQoRXhlY1N0YXRlJiBzdGF0ZSkKLXsKLSAgICB1c2luZyBQYWludERlZmluaXRpb24gPSBDU1NQ
YWludFdvcmtsZXRHbG9iYWxTY29wZTo6UGFpbnREZWZpbml0aW9uOwotCi0gICAgQ1NTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtsZXRHbG9iYWxTY29wZSA9IHdyYXBwZWQoKTsKLSAgICBW
TSYgdm0gPSBzdGF0ZS52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLQotICAgIGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAyKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwotCi0gICAgQXRvbWljU3RyaW5nIG5hbWUoc3RhdGUu
dW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJpbmcoJnN0YXRlKS0+dG9BdG9taWNTdHJpbmcoJnN0
YXRlKSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKLSAgICBK
U1ZhbHVlIGNvbnN0cnVjdG9yVmFsdWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKTsKLSAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwotCi0gICAgaWYgKG5hbWUu
aXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwg
IlRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IG5vdCBiZSB0aGUgZW1wdHkgc3RyaW5nIl9zKTsKLQot
ICAgIGF1dG8mIHBhaW50RGVmaW5pdGlvbk1hcCA9IHdvcmtsZXRHbG9iYWxTY29wZS5wYWludERl
ZmluaXRpb25NYXAoKTsKLQotICAgIGlmIChwYWludERlZmluaXRpb25NYXAuY29udGFpbnMobmFt
ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd0ludmFsaWRNb2RpZmljYXRpb25FcnJvcihzdGF0ZSwg
c2NvcGUsICJUaGlzIG5hbWUgaGFzIGFscmVhZHkgYmVlbiByZWdpc3RlcmVkIl9zKTsKLQotICAg
IFZlY3RvcjxTdHJpbmc+IGlucHV0UHJvcGVydGllczsKLQotICAgIEpTVmFsdWUgaW5wdXRQcm9w
ZXJ0aWVzSXRlcmFibGVWYWx1ZSA9IGNvbnN0cnVjdG9yVmFsdWUuZ2V0KCZzdGF0ZSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmdm0sICJpbnB1dFByb3BlcnRpZXMiKSk7Ci0gICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKLQotICAgIGlmICghaW5wdXRQcm9wZXJ0aWVz
SXRlcmFibGVWYWx1ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICBpbnB1dFByb3BlcnRpZXMgPSBj
b252ZXJ0PElETFNlcXVlbmNlPElETERPTVN0cmluZz4+KHN0YXRlLCBpbnB1dFByb3BlcnRpZXNJ
dGVyYWJsZVZhbHVlKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkp
OwotCi0gICAgLy8gRklYTUU6IFZhbGlkYXRlIGlucHV0IHByb3BlcnRpZXMgaGVyZSAoc3RlcCA3
KS4KLQotICAgIFZlY3RvcjxTdHJpbmc+IGlucHV0QXJndW1lbnRzOwotCi0gICAgSlNWYWx1ZSBp
bnB1dEFyZ3VtZW50c0l0ZXJhYmxlVmFsdWUgPSBjb25zdHJ1Y3RvclZhbHVlLmdldCgmc3RhdGUs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiaW5wdXRBcmd1bWVudHMiKSk7Ci0gICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKLQotICAgIGlmICghaW5wdXRBcmd1
bWVudHNJdGVyYWJsZVZhbHVlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIGlucHV0QXJndW1lbnRz
ID0gY29udmVydDxJRExTZXF1ZW5jZTxJRExET01TdHJpbmc+PihzdGF0ZSwgaW5wdXRBcmd1bWVu
dHNJdGVyYWJsZVZhbHVlKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVl
KCkpOwotCi0gICAgLy8gRklYTUU6IFBhcnNlIHN5bnRheCBmb3IgaW5wdXRBcmd1bWVudHMgaGVy
ZSAoc3RlcHMgMTEgYW5kIDEyKS4KLQotICAgIEpTVmFsdWUgY29udGV4dE9wdGlvbnNWYWx1ZSA9
IGNvbnN0cnVjdG9yVmFsdWUuZ2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0s
ICJjb250ZXh0T3B0aW9ucyIpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1Zh
bHVlKCkpOwotICAgIFVOVVNFRF9QQVJBTShjb250ZXh0T3B0aW9uc1ZhbHVlKTsKLQotICAgIC8v
IEZJWE1FOiBDb252ZXJ0IHRvIFBhaW50UmVuZGVyaW5nQ29udGV4dDJEU2V0dGluZ3MgaGVyZSAo
c3RlcCAxNCkuCi0KLSAgICBpZiAoIWNvbnN0cnVjdG9yVmFsdWUuaXNDb25zdHJ1Y3Rvcih2bSkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCAiVGhlIHNlY29u
ZCBhcmd1bWVudCBtdXN0IGJlIGEgY29uc3RydWN0b3IiX3MpOwotCi0gICAgSlNWYWx1ZSBwcm90
b3R5cGVWYWx1ZSA9IGNvbnN0cnVjdG9yVmFsdWUuZ2V0KCZzdGF0ZSwgdm0ucHJvcGVydHlOYW1l
cy0+cHJvdG90eXBlKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkp
OwotCi0gICAgaWYgKCFwcm90b3R5cGVWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgIlRoZSBzZWNvbmQgYXJndW1lbnQgbXVzdCBo
YXZlIGEgcHJvdG90eXBlIHRoYXQgaXMgYW4gb2JqZWN0Il9zKTsKLQotICAgIEpTVmFsdWUgcGFp
bnRWYWx1ZSA9IHByb3RvdHlwZVZhbHVlLmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoJnZtLCAicGFpbnQiKSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1
ZSgpKTsKLQotICAgIGlmIChwYWludFZhbHVlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCAiVGhlIGNsYXNzIG11c3QgaGF2ZSBhIHBh
aW50IG1ldGhvZCJfcyk7Ci0KLSAgICBSZWZQdHI8SlNDU1NQYWludENhbGxiYWNrPiBwYWludCA9
IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU0NTU1BhaW50Q2FsbGJhY2s+PihzdGF0ZSwg
cGFpbnRWYWx1ZSwgKmdsb2JhbE9iamVjdCgpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBKU1ZhbHVlKCkpOwotCi0gICAgYXV0byBwYWludERlZmluaXRpb24gPSBzdGQ6OnVuaXF1
ZV9wdHI8UGFpbnREZWZpbml0aW9uPihuZXcgUGFpbnREZWZpbml0aW9uIHsgbmFtZSwgcGFpbnQu
cmVsZWFzZU5vbk51bGwoKSwgaW5wdXRQcm9wZXJ0aWVzLCBpbnB1dEFyZ3VtZW50cyB9KTsKLSAg
ICBwYWludERlZmluaXRpb25NYXAuYWRkKG5hbWUsIFdURk1vdmUocGFpbnREZWZpbml0aW9uKSk7
Ci0KLSAgICAvLyBGSVhNRTogY29uc3RydWN0IGRvY3VtZW50RGVmaW5pdGlvbiAoc3RlcCAyMiku
Ci0KLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQotfQotI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKaW5kZXggZWJiMmY2
MWRkY2MzMjVhMDFkYzUyNGIyYjUyZWI4YjExNDE0MzA1OC4uN2RkYTI1ODZlZjdiMzVjNzU2YjFi
MDIzOWYxYzFmNzYxNmRlMzExMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01HbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NR2xvYmFsT2JqZWN0LmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkpTUmVh
ZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmgiCiAjaW5jbHVkZSAiSlNSZW1vdGVET01X
aW5kb3cuaCIKICNpbmNsdWRlICJKU1dvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiSlNX
b3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJSZWplY3RlZFByb21pc2VUcmFja2VyLmgi
CiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVy
ZWRDbG9uZS5oIgpAQCAtMTk0LDYgKzE5NSwxMCBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBK
U0RPTUdsb2JhbE9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIGlmIChpbmhlcml0czxKU1dvcmtlckdsb2JhbFNjb3BlQmFz
ZT4odm0oKSkpCiAgICAgICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgSlNXb3JrZXJHbG9iYWxTY29w
ZUJhc2UqPih0aGlzKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworI2lmIEVOQUJMRShDU1Nf
UEFJTlRJTkdfQVBJKQorICAgIGlmIChpbmhlcml0czxKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U+
KHZtKCkpKQorICAgICAgICByZXR1cm4ganNDYXN0PGNvbnN0IEpTV29ya2xldEdsb2JhbFNjb3Bl
QmFzZSo+KHRoaXMpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisjZW5kaWYKICAgICBkYXRh
TG9nKCJVbmV4cGVjdGVkIGdsb2JhbCBvYmplY3Q6ICIsIEpTVmFsdWUodGhpcyksICJcbiIpOwog
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhOGY4YWJjMTkwYzA0MjQ0Yjg3
MTg0NTRhOWM2NTg0ZjkyNmRhNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcApAQCAtMCwwICsx
LDEzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgi
CisKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKworI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CisjaW5jbHVkZSAiSlNDU1NQYWludENhbGxiYWNrLmgiCisjaW5jbHVkZSAiSlNET01Db252ZXJ0
Q2FsbGJhY2tzLmgiCisjaW5jbHVkZSAiSlNET01Db252ZXJ0U2VxdWVuY2VzLmgiCisjaW5jbHVk
ZSA8d3RmL1NldEZvclNjb3BlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5hbWVz
cGFjZSBKU0M7CisKK3N0YXRpYyBKU1ZhbHVlIHRocm93SW52YWxpZE1vZGlmaWNhdGlvbkVycm9y
KEV4ZWNTdGF0ZSYgc3RhdGUsIFRocm93U2NvcGUmIHNjb3BlLCBBU0NJSUxpdGVyYWwgbWVzc2Fn
ZSkKK3sKKyAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOworICAgIHRocm93RXhjZXB0aW9u
KCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZURPTUV4Y2VwdGlvbigmc3RhdGUsIEludmFsaWRNb2RpZmlj
YXRpb25FcnJvciwgbWVzc2FnZSkpOworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCit2
b2lkIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKEpT
Qzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgZm9yIChhdXRvJiByZWdpc3RlcmVkIDog
d3JhcHBlZCgpLnBhaW50RGVmaW5pdGlvbk1hcCgpLnZhbHVlcygpKQorICAgICAgICByZWdpc3Rl
cmVkLT5wYWludENhbGxiYWNrLT52aXNpdEpTRnVuY3Rpb24odmlzaXRvcik7Cit9CisKKy8vIGh0
dHBzOi8vZHJhZnRzLmNzcy1ob3VkaW5pLm9yZy9jc3MtcGFpbnQtYXBpLyNyZWdpc3RlcmluZy1j
dXN0b20tcGFpbnQKK0pTVmFsdWUgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6cmVnaXN0ZXJQ
YWludChFeGVjU3RhdGUmIHN0YXRlKQoreworICAgIHVzaW5nIFBhaW50RGVmaW5pdGlvbiA9IFBh
aW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb247CisKKyAgICBQYWludFdvcmts
ZXRHbG9iYWxTY29wZSYgd29ya2xldEdsb2JhbFNjb3BlID0gd3JhcHBlZCgpOworICAgIFZNJiB2
bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDIpKQorICAgICAg
ICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IoJnN0YXRlKSk7CisKKyAgICBBdG9taWNTdHJpbmcgbmFtZShzdGF0ZS51bmNo
ZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT50b0F0b21pY1N0cmluZygmc3RhdGUp
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOworICAgIEpTVmFs
dWUgY29uc3RydWN0b3JWYWx1ZSA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CisKKyAgICBpZiAobmFtZS5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCAiVGhl
IGZpcnN0IGFyZ3VtZW50IG11c3Qgbm90IGJlIHRoZSBlbXB0eSBzdHJpbmciX3MpOworCisgICAg
YXV0byYgcGFpbnREZWZpbml0aW9uTWFwID0gd29ya2xldEdsb2JhbFNjb3BlLnBhaW50RGVmaW5p
dGlvbk1hcCgpOworCisgICAgaWYgKHBhaW50RGVmaW5pdGlvbk1hcC5jb250YWlucyhuYW1lKSkK
KyAgICAgICAgcmV0dXJuIHRocm93SW52YWxpZE1vZGlmaWNhdGlvbkVycm9yKHN0YXRlLCBzY29w
ZSwgIlRoaXMgbmFtZSBoYXMgYWxyZWFkeSBiZWVuIHJlZ2lzdGVyZWQiX3MpOworCisgICAgVmVj
dG9yPFN0cmluZz4gaW5wdXRQcm9wZXJ0aWVzOworCisgICAgSlNWYWx1ZSBpbnB1dFByb3BlcnRp
ZXNJdGVyYWJsZVZhbHVlID0gY29uc3RydWN0b3JWYWx1ZS5nZXQoJnN0YXRlLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKCZ2bSwgImlucHV0UHJvcGVydGllcyIpKTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOworCisgICAgaWYgKCFpbnB1dFByb3BlcnRpZXNJdGVy
YWJsZVZhbHVlLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIGlucHV0UHJvcGVydGllcyA9IGNvbnZl
cnQ8SURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj4oc3RhdGUsIGlucHV0UHJvcGVydGllc0l0ZXJh
YmxlVmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CisK
KyAgICAvLyBGSVhNRTogVmFsaWRhdGUgaW5wdXQgcHJvcGVydGllcyBoZXJlIChzdGVwIDcpLgor
CisgICAgVmVjdG9yPFN0cmluZz4gaW5wdXRBcmd1bWVudHM7CisKKyAgICBKU1ZhbHVlIGlucHV0
QXJndW1lbnRzSXRlcmFibGVWYWx1ZSA9IGNvbnN0cnVjdG9yVmFsdWUuZ2V0KCZzdGF0ZSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJpbnB1dEFyZ3VtZW50cyIpKTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOworCisgICAgaWYgKCFpbnB1dEFyZ3VtZW50
c0l0ZXJhYmxlVmFsdWUuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgaW5wdXRBcmd1bWVudHMgPSBj
b252ZXJ0PElETFNlcXVlbmNlPElETERPTVN0cmluZz4+KHN0YXRlLCBpbnB1dEFyZ3VtZW50c0l0
ZXJhYmxlVmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7
CisKKyAgICAvLyBGSVhNRTogUGFyc2Ugc3ludGF4IGZvciBpbnB1dEFyZ3VtZW50cyBoZXJlIChz
dGVwcyAxMSBhbmQgMTIpLgorCisgICAgSlNWYWx1ZSBjb250ZXh0T3B0aW9uc1ZhbHVlID0gY29u
c3RydWN0b3JWYWx1ZS5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImNv
bnRleHRPcHRpb25zIikpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUo
KSk7CisgICAgVU5VU0VEX1BBUkFNKGNvbnRleHRPcHRpb25zVmFsdWUpOworCisgICAgLy8gRklY
TUU6IENvbnZlcnQgdG8gUGFpbnRSZW5kZXJpbmdDb250ZXh0MkRTZXR0aW5ncyBoZXJlIChzdGVw
IDE0KS4KKworICAgIGlmICghY29uc3RydWN0b3JWYWx1ZS5pc0NvbnN0cnVjdG9yKHZtKSkKKyAg
ICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsICJUaGUgc2Vjb25kIGFy
Z3VtZW50IG11c3QgYmUgYSBjb25zdHJ1Y3RvciJfcyk7CisKKyAgICBKU1ZhbHVlIHByb3RvdHlw
ZVZhbHVlID0gY29uc3RydWN0b3JWYWx1ZS5nZXQoJnN0YXRlLCB2bS5wcm9wZXJ0eU5hbWVzLT5w
cm90b3R5cGUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CisK
KyAgICBpZiAoIXByb3RvdHlwZVZhbHVlLmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCAiVGhlIHNlY29uZCBhcmd1bWVudCBtdXN0IGhhdmUg
YSBwcm90b3R5cGUgdGhhdCBpcyBhbiBvYmplY3QiX3MpOworCisgICAgSlNWYWx1ZSBwYWludFZh
bHVlID0gcHJvdG90eXBlVmFsdWUuZ2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygm
dm0sICJwYWludCIpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkp
OworCisgICAgaWYgKHBhaW50VmFsdWUuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsICJUaGUgY2xhc3MgbXVzdCBoYXZlIGEgcGFpbnQg
bWV0aG9kIl9zKTsKKworICAgIFJlZlB0cjxKU0NTU1BhaW50Q2FsbGJhY2s+IHBhaW50ID0gY29u
dmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTQ1NTUGFpbnRDYWxsYmFjaz4+KHN0YXRlLCBwYWlu
dFZhbHVlLCAqZ2xvYmFsT2JqZWN0KCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IEpTVmFsdWUoKSk7CisKKyAgICBhdXRvIHBhaW50RGVmaW5pdGlvbiA9IHN0ZDo6dW5pcXVlX3B0
cjxQYWludERlZmluaXRpb24+KG5ldyBQYWludERlZmluaXRpb24geyBuYW1lLCBwYWludC5yZWxl
YXNlTm9uTnVsbCgpLCBpbnB1dFByb3BlcnRpZXMsIGlucHV0QXJndW1lbnRzIH0pOworICAgIHBh
aW50RGVmaW5pdGlvbk1hcC5hZGQobmFtZSwgV1RGTW92ZShwYWludERlZmluaXRpb24pKTsKKwor
ICAgIC8vIEZJWE1FOiBjb25zdHJ1Y3QgZG9jdW1lbnREZWZpbml0aW9uIChzdGVwIDIyKS4KKwor
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmE4MTc3ZjNjMWFiNjQxM2M1NGY5YjUwYTBmNDU5YWU1ZGZhNzljN2IKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxT
Y29wZUJhc2UuY3BwCkBAIC0wLDAgKzEsMTUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJK
U1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuaCIKKworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJ
KQorCisjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCisjaW5jbHVkZSAiSlNET01HbG9iYWxP
YmplY3RUYXNrLmgiCisjaW5jbHVkZSAiSlNXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRl
ICJXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrbGV0U2NyaXB0Q29udHJvbGxl
ci5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0NKU1ZhbHVlSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9MYW5ndWFn
ZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSlNDOworCitjb25z
dCBDbGFzc0luZm8gSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzX2luZm8gPSB7ICJXb3JrbGV0
R2xvYmFsU2NvcGUiLCAmSlNET01HbG9iYWxPYmplY3Q6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0
ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UpIH07CisKK2Nv
bnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6c19n
bG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsKKyAgICAmc3VwcG9ydHNSaWNoU291cmNlSW5mbywK
KyAgICAmc2hvdWxkSW50ZXJydXB0U2NyaXB0LAorICAgICZqYXZhU2NyaXB0UnVudGltZUZsYWdz
LAorICAgIG51bGxwdHIsIC8vIHF1ZXVlVGFza1RvRXZlbnRMb29wCisgICAgJnNob3VsZEludGVy
cnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQsCisgICAgbnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVySW1w
b3J0TW9kdWxlCisgICAgbnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVyUmVzb2x2ZQorICAgIG51bGxw
dHIsIC8vIG1vZHVsZUxvYWRlckZldGNoCisgICAgbnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVyQ3Jl
YXRlSW1wb3J0TWV0YVByb3BlcnRpZXMKKyAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJFdmFs
dWF0ZQorICAgICZwcm9taXNlUmVqZWN0aW9uVHJhY2tlciwKKyAgICAmZGVmYXVsdExhbmd1YWdl
LAorICAgIG51bGxwdHIsIC8vIGNvbXBpbGVTdHJlYW1pbmcKKyAgICBudWxscHRyLCAvLyBpbnN0
YW50aWF0ZVN0cmVhbWluZworfTsKKworSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpKU1dvcmts
ZXRHbG9iYWxTY29wZUJhc2UoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFJlZlB0cjxXb3JrbGV0R2xvYmFsU2NvcGU+JiYgaW1wbCkKKyAgICA6IEpTRE9NR2xvYmFsT2Jq
ZWN0KHZtLCBzdHJ1Y3R1cmUsIG5vcm1hbFdvcmxkKHZtKSwgJnNfZ2xvYmFsT2JqZWN0TWV0aG9k
VGFibGUpCisgICAgLCBtX3dyYXBwZWQoV1RGTW92ZShpbXBsKSkKK3sKK30KKwordm9pZCBKU1dv
cmtsZXRHbG9iYWxTY29wZUJhc2U6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNQcm94eSogcHJv
eHkpCit7CisgICAgbV9wcm94eS5zZXQodm0sIHRoaXMsIHByb3h5KTsKKworICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKHZtLCBtX3Byb3h5LmdldCgpKTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0s
IGluZm8oKSkpOworfQorCit2b2lkIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6Y2xlYXJET01H
dWFyZGVkT2JqZWN0cygpCit7CisgICAgYXV0byBndWFyZGVkT2JqZWN0cyA9IG1fZ3VhcmRlZE9i
amVjdHM7CisgICAgZm9yIChhdXRvJiBndWFyZGVkIDogZ3VhcmRlZE9iamVjdHMpCisgICAgICAg
IGd1YXJkZWQtPmNsZWFyKCk7Cit9CisKK3ZvaWQgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjp2
aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAg
SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTV29ya2xldEds
b2JhbFNjb3BlQmFzZSo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhp
c09iamVjdCwgaW5mbygpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZp
c2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcHJveHkpOworfQorCit2
b2lkIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7Cisg
ICAgc3RhdGljX2Nhc3Q8SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlKj4oY2VsbCktPkpTV29ya2xl
dEdsb2JhbFNjb3BlQmFzZTo6fkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZSgpOworfQorCitTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSBjb25zdAoreworICAgIHJldHVybiBtX3dyYXBwZWQuZ2V0KCk7Cit9CisK
K2Jvb2wgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzdXBwb3J0c1JpY2hTb3VyY2VJbmZvKGNv
bnN0IEpTR2xvYmFsT2JqZWN0KiBvYmplY3QpCit7CisgICAgcmV0dXJuIEpTR2xvYmFsT2JqZWN0
OjpzdXBwb3J0c1JpY2hTb3VyY2VJbmZvKG9iamVjdCk7Cit9CisKK2Jvb2wgSlNXb3JrbGV0R2xv
YmFsU2NvcGVCYXNlOjpzaG91bGRJbnRlcnJ1cHRTY3JpcHQoY29uc3QgSlNHbG9iYWxPYmplY3Qq
IG9iamVjdCkKK3sKKyAgICByZXR1cm4gSlNHbG9iYWxPYmplY3Q6OnNob3VsZEludGVycnVwdFNj
cmlwdChvYmplY3QpOworfQorCitib29sIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6c2hvdWxk
SW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dChjb25zdCBKU0dsb2JhbE9iamVjdCogb2JqZWN0
KQoreworICAgIHJldHVybiBKU0dsb2JhbE9iamVjdDo6c2hvdWxkSW50ZXJydXB0U2NyaXB0QmVm
b3JlVGltZW91dChvYmplY3QpOworfQorCitSdW50aW1lRmxhZ3MgSlNXb3JrbGV0R2xvYmFsU2Nv
cGVCYXNlOjpqYXZhU2NyaXB0UnVudGltZUZsYWdzKGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvYmpl
Y3QpCit7CisgICAgY29uc3QgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlKiB0aGlzT2JqZWN0ID0g
anNDYXN0PGNvbnN0IEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZSo+KG9iamVjdCk7CisgICAgcmV0
dXJuIHRoaXNPYmplY3QtPm1fd3JhcHBlZC0+anNSdW50aW1lRmxhZ3MoKTsKK30KKworSlNWYWx1
ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqLCBXb3JrbGV0R2xvYmFs
U2NvcGUmIHdvcmtsZXRHbG9iYWxTY29wZSkKK3sKKyAgICByZXR1cm4gdG9KUyhleGVjLCB3b3Jr
bGV0R2xvYmFsU2NvcGUpOworfQorCitKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiwgV29ya2xldEds
b2JhbFNjb3BlJiB3b3JrbGV0R2xvYmFsU2NvcGUpCit7CisgICAgV29ya2xldFNjcmlwdENvbnRy
b2xsZXIqIHNjcmlwdCA9IHdvcmtsZXRHbG9iYWxTY29wZS5zY3JpcHQoKTsKKyAgICBpZiAoIXNj
cmlwdCkKKyAgICAgICAgcmV0dXJuIGpzTnVsbCgpOworICAgIEpTV29ya2xldEdsb2JhbFNjb3Bl
KiBjb250ZXh0V3JhcHBlciA9IHNjcmlwdC0+d29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcigpOwor
ICAgIEFTU0VSVChjb250ZXh0V3JhcHBlcik7CisgICAgcmV0dXJuIGNvbnRleHRXcmFwcGVyLT5w
cm94eSgpOworfQorCitKU1dvcmtsZXRHbG9iYWxTY29wZSogdG9KU1dvcmtsZXRHbG9iYWxTY29w
ZShWTSYgdm0sIEpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbyA9
IGFzT2JqZWN0KHZhbHVlKS0+Y2xhc3NJbmZvKHZtKTsKKworICAgIGlmIChjbGFzc0luZm8gPT0g
SlNQcm94eTo6aW5mbygpKQorICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1dvcmtsZXRH
bG9iYWxTY29wZSo+KHZtLCBqc0Nhc3Q8SlNQcm94eSo+KGFzT2JqZWN0KHZhbHVlKSktPnRhcmdl
dCgpKTsKKworICAgIHJldHVybiBudWxscHRyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xl
dEdsb2JhbFNjb3BlQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0
R2xvYmFsU2NvcGVCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzU1ODI3Yjk4ZDNkY2JjZTY0NWViZWM1Njgz
NWIwZDMxMzJkYTczMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5oCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKworI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiSlNET01XcmFwcGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgSlNXb3JrbGV0R2xvYmFsU2NvcGU7CitjbGFzcyBXb3JrbGV0R2xvYmFsU2NvcGU7
CisKK2NsYXNzIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZSA6IHB1YmxpYyBKU0RPTUdsb2JhbE9i
amVjdCB7CisgICAgdHlwZWRlZiBKU0RPTUdsb2JhbE9iamVjdCBCYXNlOworcHVibGljOgorICAg
IHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKKworICAgIERFQ0xBUkVfSU5GTzsK
KworICAgIFdvcmtsZXRHbG9iYWxTY29wZSYgd3JhcHBlZCgpIGNvbnN0IHsgcmV0dXJuICptX3dy
YXBwZWQ7IH0KKyAgICBKU0M6OkpTUHJveHkqIHByb3h5KCkgY29uc3QgeyBBU1NFUlQobV9wcm94
eSk7IHJldHVybiBtX3Byb3h5LmdldCgpOyB9CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OworCisgICAgc3RhdGljIEpTQzo6U3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVy
biBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlND
OjpUeXBlSW5mbyhKU0M6Okdsb2JhbE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgSlNDOjpHbG9iYWxPYmplY3RNZXRob2RUYWJs
ZSBzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlOworCisgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNS
aWNoU291cmNlSW5mbyhjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIGJv
b2wgc2hvdWxkSW50ZXJydXB0U2NyaXB0KGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAg
ICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0KGNvbnN0IEpT
Qzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgSlNDOjpSdW50aW1lRmxhZ3MgamF2YVNj
cmlwdFJ1bnRpbWVGbGFncyhjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGlj
IHZvaWQgcXVldWVUYXNrVG9FdmVudExvb3AoSlNDOjpKU0dsb2JhbE9iamVjdCYsIFJlZjxKU0M6
Ok1pY3JvdGFzaz4mJik7CisKKyAgICB2b2lkIGNsZWFyRE9NR3VhcmRlZE9iamVjdHMoKTsKKwor
cHJvdGVjdGVkOgorICAgIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZShKU0M6OlZNJiwgSlNDOjpT
dHJ1Y3R1cmUqLCBSZWZQdHI8V29ya2xldEdsb2JhbFNjb3BlPiYmKTsKKyAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKEpTQzo6Vk0mLCBKU0M6OkpTUHJveHkqKTsKKworICAgIHN0YXRpYyB2b2lkIHZp
c2l0Q2hpbGRyZW4oSlNDOjpKU0NlbGwqLCBKU0M6OlNsb3RWaXNpdG9yJik7CisKK3ByaXZhdGU6
CisgICAgUmVmUHRyPFdvcmtsZXRHbG9iYWxTY29wZT4gbV93cmFwcGVkOworICAgIEpTQzo6V3Jp
dGVCYXJyaWVyPEpTQzo6SlNQcm94eT4gbV9wcm94eTsKK307CisKKy8vIFJldHVybnMgYSBKU1dv
cmtsZXRHbG9iYWxTY29wZSBvciBqc051bGwoKQorLy8gQWx3YXlzIGlnbm9yZXMgdGhlIGV4ZWNT
dGF0ZSBhbmQgcGFzc2VkIGdsb2JhbE9iamVjdCwgV29ya2xldEdsb2JhbFNjb3BlIGlzIGl0c2Vs
ZiBhIGdsb2JhbE9iamVjdCBhbmQgd2lsbCBhbHdheXMgdXNlIGl0cyBvd24gcHJvdG90eXBlIGNo
YWluLgorSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVj
dCosIFdvcmtsZXRHbG9iYWxTY29wZSYpOworaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBXb3JrbGV0
R2xvYmFsU2NvcGUqIHNjb3BlKSB7IHJldHVybiBzY29wZSA/IHRvSlMoZXhlYywgZ2xvYmFsT2Jq
ZWN0LCAqc2NvcGUpIDogSlNDOjpqc051bGwoKTsgfQorSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpF
eGVjU3RhdGUqLCBXb3JrbGV0R2xvYmFsU2NvcGUmKTsKK2lubGluZSBKU0M6OkpTVmFsdWUgdG9K
UyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgV29ya2xldEdsb2JhbFNjb3BlKiBzY29wZSkgeyByZXR1
cm4gc2NvcGUgPyB0b0pTKGV4ZWMsICpzY29wZSkgOiBKU0M6OmpzTnVsbCgpOyB9CisKK0pTV29y
a2xldEdsb2JhbFNjb3BlKiB0b0pTV29ya2xldEdsb2JhbFNjb3BlKEpTQzo6Vk0mLCBKU0M6OkpT
VmFsdWUpOworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKaW5kZXggZWVlODM5Y2M0MjY0ZmJlNGEyOWRmYjk5
MWI1ZmRlNTBkNjBiYWIxYy4uYTFiYTE0NTI4MzRkOGNhM2NlNmFmNDc3MTFlOTcwYjM4OGNjMWIw
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcApAQCAtMzUs
MTEgKzM1LDE0IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd0Jh
c2UuaCIKICNpbmNsdWRlICJKU1dvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiSlNXb3Jr
bGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgog
I2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29w
ZS5oIgogI2luY2x1ZGUgIldvcmtlclNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJXb3Jr
bGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NhbGxGcmFtZS5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTR2xvYmFsT2JqZWN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25n
SW5saW5lcy5oPgpAQCAtOTUsOSArOTgsMTYgQEAgSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZUZy
b21QYWdlKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIFBhZ2UqIHBhZ2UpCiAgICAgcmV0dXJuIHBh
Z2UgPyBwYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5nbG9iYWxPYmplY3Qod29ybGQpLT5nbG9i
YWxFeGVjKCkgOiBudWxscHRyOwogfQogCi1KU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbVdv
cmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlKiB3b3JrZXJHbG9iYWxTY29wZSkKK0pT
Qzo6RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUoV29ya2VyR2xvYmFs
U2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQogewotICAgIHJldHVybiB3b3JrZXJHbG9iYWxTY29w
ZS0+c2NyaXB0KCktPndvcmtlckdsb2JhbFNjb3BlV3JhcHBlcigpLT5nbG9iYWxFeGVjKCk7Cisg
ICAgcmV0dXJuIHdvcmtlckdsb2JhbFNjb3BlLnNjcmlwdCgpLT53b3JrZXJHbG9iYWxTY29wZVdy
YXBwZXIoKS0+Z2xvYmFsRXhlYygpOwogfQogCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkp
CitKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbVdvcmtsZXRHbG9iYWxTY29wZShXb3JrbGV0
R2xvYmFsU2NvcGUmIHdvcmtsZXRHbG9iYWxTY29wZSkKK3sKKyAgICByZXR1cm4gd29ya2xldEds
b2JhbFNjb3BlLnNjcmlwdCgpLT53b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKCktPmdsb2JhbEV4
ZWMoKTsKK30KKyNlbmRpZgorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3Rh
dGUuaAppbmRleCA3NDQyMWZkOTViYTE3NzU2ZWI4OWMwMDQyNmMzM2ZiNTQ1NDk4MzkwLi4xNTM4
NGE3MTFmMzU2Y2VlNDc4Y2E5OWUyNTU1YjFlZWEyNDgyYWQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgKQEAgLTQ0LDYgKzQ0LDkgQEAgY2xhc3MgTm9kZTsKIGNs
YXNzIFBhZ2U7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgV29ya2VyR2xv
YmFsU2NvcGU7CisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCitjbGFzcyBXb3JrbGV0R2xv
YmFsU2NvcGU7CisjZW5kaWYKIAogRE9NV2luZG93KiBkb21XaW5kb3dGcm9tRXhlY1N0YXRlKEpT
Qzo6RXhlY1N0YXRlKik7CiBGcmFtZSogZnJhbWVGcm9tRXhlY1N0YXRlKEpTQzo6RXhlY1N0YXRl
Kik7CkBAIC01Myw2ICs1Niw5IEBAIEpTQzo6RXhlY1N0YXRlKiBtYWluV29ybGRFeGVjU3RhdGUo
RnJhbWUqKTsKIAogSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZUZyb21Ob2RlKERPTVdyYXBwZXJX
b3JsZCYsIE5vZGUqKTsKIFdFQkNPUkVfRVhQT1JUIEpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGVG
cm9tUGFnZShET01XcmFwcGVyV29ybGQmLCBQYWdlKik7Ci1KU0M6OkV4ZWNTdGF0ZSogZXhlY1N0
YXRlRnJvbVdvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlKik7CitKU0M6OkV4ZWNT
dGF0ZSogZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlJik7
CisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCitKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRl
RnJvbVdvcmtsZXRHbG9iYWxTY29wZShXb3JrbGV0R2xvYmFsU2NvcGUmKTsKKyNlbmRpZgogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9X
ZWJDb3JlQnVpbHRpbk5hbWVzLmgKaW5kZXggMWM5Mzg1OWVjYzE2ODc0YzBjMDdlMzczYjI5NzNj
NDI1MDVkZWE4MC4uMjkyZmQ5NzkyNDQ5ZDM3N2QyNzVjMjgyNGJlMTUyZGNhNmZkNjkxZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaApA
QCAtNTEsNyArNTEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oQ3JlZGVudGlh
bCkgXAogICAgIG1hY3JvKENyZWRlbnRpYWxzQ29udGFpbmVyKSBcCiAgICAgbWFjcm8oQ1NTQW5p
bWF0aW9uKSBcCi0gICAgbWFjcm8oQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUpIFwKICAgICBt
YWNybyhDU1NUcmFuc2l0aW9uKSBcCiAgICAgbWFjcm8oQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5KSBc
CiAgICAgbWFjcm8oRGF0YWJhc2UpIFwKQEAgLTEyMyw2ICsxMjIsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgbWFjcm8oU1FMUmVzdWx0U2V0KSBcCiAgICAgbWFjcm8oU1FMUmVzdWx0U2V0
Um93TGlzdCkgXAogICAgIG1hY3JvKFNRTFRyYW5zYWN0aW9uKSBcCisgICAgbWFjcm8oUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUpIFwKICAgICBtYWNybyhQZXJmb3JtYW5jZUVudHJ5KSBcCiAgICAg
bWFjcm8oUGVyZm9ybWFuY2VFbnRyeUxpc3QpIFwKICAgICBtYWNybyhQZXJmb3JtYW5jZU1hcmsp
IFwKQEAgLTIxMCw2ICsyMTAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oV2Vi
S2l0TWVkaWFLZXlzKSBcCiAgICAgbWFjcm8oV2ViU29ja2V0KSBcCiAgICAgbWFjcm8oV2luZG93
Q2xpZW50KSBcCisgICAgbWFjcm8oV29ya2xldCkgXAorICAgIG1hY3JvKFdvcmtsZXRHbG9iYWxT
Y29wZSkgXAogICAgIG1hY3JvKFdyaXRhYmxlU3RyZWFtKSBcCiAgICAgbWFjcm8oWE1MSHR0cFJl
cXVlc3QpIFwKICAgICBtYWNybyhhcHBlbmRGcm9tSlMpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggNDhmY2U3YmMxNmE4
ODBkNjNmNDMyYTAxOGYxZmVlMmY2N2JmNWJkYy4uOWJkZGRlZDMwMTY3MWZiNDQ3OTViMzMyZWZm
ZTEyZWEwMzVhODM1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTQ5Nyw3ICs0OTcsNyBAQCBzdWIgR2V0Q3VzdG9tSXNS
ZWFjaGFibGUKIHN1YiBJc0RPTUdsb2JhbE9iamVjdAogewogICAgIG15ICRpbnRlcmZhY2UgPSBz
aGlmdDsKLSAgICByZXR1cm4gJGludGVyZmFjZS0+dHlwZS0+bmFtZSBlcSAiRE9NV2luZG93IiB8
fCAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIGVxICJSZW1vdGVET01XaW5kb3ciIHx8ICRjb2RlR2Vu
ZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiV29ya2VyR2xvYmFsU2NvcGUi
KSB8fCAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIGVxICJUZXN0R2xvYmFsT2JqZWN0IjsKKyAgICBy
ZXR1cm4gJGludGVyZmFjZS0+dHlwZS0+bmFtZSBlcSAiRE9NV2luZG93IiB8fCAkaW50ZXJmYWNl
LT50eXBlLT5uYW1lIGVxICJSZW1vdGVET01XaW5kb3ciIHx8ICRjb2RlR2VuZXJhdG9yLT5Jbmhl
cml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiV29ya2VyR2xvYmFsU2NvcGUiKSB8fCAkY29kZUdl
bmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldvcmtsZXRHbG9iYWxTY29w
ZSIpIHx8ICRpbnRlcmZhY2UtPnR5cGUtPm5hbWUgZXEgIlRlc3RHbG9iYWxPYmplY3QiOwogfQog
CiBzdWIgU2hvdWxkVXNlR2xvYmFsT2JqZWN0UHJvdG90eXBlCkBAIC01MDYsNiArNTA2LDcgQEAg
c3ViIFNob3VsZFVzZUdsb2JhbE9iamVjdFByb3RvdHlwZQogCiAgICAgIyBGb3Igd29ya2Vycywg
dGhlIGdsb2JhbCBvYmplY3QgaXMgYSBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS4KICAgICBy
ZXR1cm4gMCBpZiAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIGVxICJXb3JrZXJHbG9iYWxTY29wZSI7
CisgICAgcmV0dXJuIDAgaWYgJGludGVyZmFjZS0+dHlwZS0+bmFtZSBlcSAiV29ya2xldEdsb2Jh
bFNjb3BlIjsKIAogICAgIHJldHVybiBJc0RPTUdsb2JhbE9iamVjdCgkaW50ZXJmYWNlKTsKIH0K
QEAgLTI1MzcsNyArMjUzOCw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtLCBwcm94eSk7XG4i
KTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHB0cjtcbiIp
OwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIH1cblxuIik7Ci0gICAgfSBlbHNp
ZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrZXJH
bG9iYWxTY29wZSIpKSB7CisgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50
ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrZXJHbG9iYWxTY29wZSIpIHx8ICRjb2RlR2VuZXJhdG9y
LT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiV29ya2xldEdsb2JhbFNjb3BlIikpIHsK
ICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgJGNsYXNzTmFtZSogY3Jl
YXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWY8JGltcGxUeXBl
PiYmIGltcGwsIEpTQzo6SlNQcm94eSogcHJveHkpXG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiAgICB7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAg
ICAgJGNsYXNzTmFtZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDwkY2xh
c3NOYW1lPih2bS5oZWFwKSkgJHtjbGFzc05hbWV9KHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUoaW1w
bCkpO1xuIik7CkBAIC0yODQ1LDcgKzI4NDYsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAj
IENvbnN0cnVjdG9yCiAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciIHx8ICRp
bnRlcmZhY2VOYW1lIGVxICJSZW1vdGVET01XaW5kb3ciKSB7CiAgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgJGNsYXNzTmFtZShKU0M6OlZNJiwgSlNDOjpTdHJ1Y3R1cmUqLCBSZWY8
JGltcGxUeXBlPiYmLCBKU1dpbmRvd1Byb3h5Kik7XG4iKTsKLSAgICB9IGVsc2lmICgkY29kZUdl
bmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldvcmtlckdsb2JhbFNjb3Bl
IikpIHsKKyAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGlu
dGVyZmFjZSwgIldvcmtlckdsb2JhbFNjb3BlIikgfHwgJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRz
SW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrbGV0R2xvYmFsU2NvcGUiKSkgewogICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiICAgICRjbGFzc05hbWUoSlNDOjpWTSYsIEpTQzo6U3RydWN0
dXJlKiwgUmVmPCRpbXBsVHlwZT4mJik7XG4iKTsKICAgICB9IGVsc2lmICghTmVlZHNJbXBsZW1l
bnRhdGlvbkNsYXNzKCRpbnRlcmZhY2UpKSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICIgICAgJGNsYXNzTmFtZShKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Jik7XG5c
biIpOwpAQCAtMjg1NSw3ICsyODU2LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAKICAgICBpZiAo
JGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIgfHwgJGludGVyZmFjZU5hbWUgZXEgIlJlbW90
ZURPTVdpbmRvdyIpIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKEpTQzo6Vk0mLCBKU1dpbmRvd1Byb3h5Kik7XG4iKTsKLSAgICB9IGVsc2lm
ICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldvcmtlckds
b2JhbFNjb3BlIikpIHsKKyAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRl
cmZhY2UoJGludGVyZmFjZSwgIldvcmtlckdsb2JhbFNjb3BlIikgfHwgJGNvZGVHZW5lcmF0b3It
PkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrbGV0R2xvYmFsU2NvcGUiKSkgewog
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlND
OjpWTSYsIEpTQzo6SlNQcm94eSopO1xuIik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTtcbiIpOwpA
QCAtMzY2Miw2ICszNjYzLDggQEAgc3ViIEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFs
U3RyaW5nRm9yRXhwb3NlZAogICAgICAgICBwdXNoKEAkY29uanVuY3RzLCAianNDYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oIiAuICRnbG9iYWxPYmplY3RQdHIgLiAiKS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5pc0RvY3VtZW50KCkiKTsKICAgICB9IGVsc2lmICgkZXhwb3NlZCBlcSAiV29y
a2VyIikgewogICAgICAgICBwdXNoKEAkY29uanVuY3RzLCAianNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oIiAuICRnbG9iYWxPYmplY3RQdHIgLiAiKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkiKTsKKyAgICB9IGVsc2lmICgkZXhwb3NlZCBlcSAiV29y
a2xldCIpIHsKKyAgICAgICAgcHVzaChAJGNvbmp1bmN0cywgImpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KCIgLiAkZ2xvYmFsT2JqZWN0UHRyIC4gIiktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+aXNXb3JrbGV0R2xvYmFsU2NvcGUoKSIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGFzc2Vy
dCgiVW5yZWNvZ25pemVkIHZhbHVlICciIC4gRHVtcGVyKCRjb250ZXh0LT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntFeHBvc2VkfSkgLiAiJyBmb3IgdGhlIEV4cG9zZWQgZXh0ZW5kZWQgYXR0cmlidXRl
IG9uICciIC4gcmVmKCRjb250ZXh0KSAuICInLiIpOwogICAgIH0KQEAgLTQyNTIsNyArNDI1NSw3
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIDogJHBhcmVudENsYXNzTmFtZSh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKGltcGwpLCBw
cm94eSlcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7Ci0gICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3It
PkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrZXJHbG9iYWxTY29wZSIpKSB7Cisg
ICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2Us
ICJXb3JrZXJHbG9iYWxTY29wZSIpIHx8ICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFj
ZSgkaW50ZXJmYWNlLCAiV29ya2xldEdsb2JhbFNjb3BlIikpIHsKICAgICAgICAgQWRkSW5jbHVk
ZXNGb3JJbXBsZW1lbnRhdGlvblR5cGVJbkltcGwoJGludGVyZmFjZU5hbWUpOwogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiR7Y2xhc3NOYW1lfTo6JGNsYXNzTmFtZShWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBSZWY8JGltcGxUeXBlPiYmIGltcGwpXG4iKTsKICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgOiAkcGFyZW50Q2xhc3NOYW1lKHZtLCBzdHJ1Y3R1cmUsIFdU
Rk1vdmUoaW1wbCkpXG4iKTsKQEAgLTQyNzMsNyArNDI3Niw3IEBAIHN1YiBHZW5lcmF0ZUltcGxl
bWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFtZX06
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNXaW5kb3dQcm94eSogcHJveHkpXG4iKTsKICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIHByb3h5KTtcblxuIik7Ci0gICAgfSBlbHNp
ZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrZXJH
bG9iYWxTY29wZSIpKSB7CisgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50
ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrZXJHbG9iYWxTY29wZSIpIHx8ICRjb2RlR2VuZXJhdG9y
LT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiV29ya2xldEdsb2JhbFNjb3BlIikpIHsK
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7Y2xhc3NOYW1lfTo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBKU1Byb3h5KiBwcm94eSlcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIntcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSwgcHJveHkpO1xuXG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGwKaW5kZXggM2UwNWM3YjQ5NjgyYmVlNjRm
Njg5OGI0ZGY0NDg0MjUxMzQzOGI1MS4uNDZjZDNiOGY5Y2E5YzExYWE1MWZiZDlmYTg3NjBmYTdi
MGZkOTMzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9wcmVw
cm9jZXNzLWlkbHMucGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9wcmVw
cm9jZXNzLWlkbHMucGwKQEAgLTM2LDYgKzM2LDggQEAgbXkgJHdpbmRvd0NvbnN0cnVjdG9yc0Zp
bGU7CiBteSAkd29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlOwogbXkgJGRlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZTsKIG15ICRzZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlOworbXkgJHdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVj
dG9yc0ZpbGU7CitteSAkcGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlOwog
bXkgJHN1cHBsZW1lbnRhbE1ha2VmaWxlRGVwczsKIAogR2V0T3B0aW9ucygnZGVmaW5lcz1zJyA9
PiBcJGRlZmluZXMsCkBAIC00Niw2ICs0OCw4IEBAIEdldE9wdGlvbnMoJ2RlZmluZXM9cycgPT4g
XCRkZWZpbmVzLAogICAgICAgICAgICAnd29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxl
PXMnID0+IFwkd29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlLAogICAgICAgICAgICAn
ZGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlPXMnID0+IFwkZGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlLAogICAgICAgICAgICAnc2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZT1zJyA9PiBcJHNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUsCisgICAgICAgICAgICd3b3JrbGV0R2xvYmFsU2Nv
cGVDb25zdHJ1Y3RvcnNGaWxlPXMnID0+IFwkd29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3Jz
RmlsZSwKKyAgICAgICAgICAgJ3BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmls
ZT1zJyA9PiBcJHBhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSwKICAgICAg
ICAgICAgJ3N1cHBsZW1lbnRhbE1ha2VmaWxlRGVwcz1zJyA9PiBcJHN1cHBsZW1lbnRhbE1ha2Vm
aWxlRGVwcyk7CiAKIGRpZSgnTXVzdCBzcGVjaWZ5ICNkZWZpbmUgbWFjcm9zIHVzaW5nIC0tZGVm
aW5lcy4nKSB1bmxlc3MgZGVmaW5lZCgkZGVmaW5lcyk7CkBAIC01NCw2ICs1OCw4IEBAIGRpZSgn
TXVzdCBzcGVjaWZ5IGFuIG91dHB1dCBmaWxlIHVzaW5nIC0td2luZG93Q29uc3RydWN0b3JzRmls
ZS4nKSB1bmxlc3MgZGVmaW5lCiBkaWUoJ011c3Qgc3BlY2lmeSBhbiBvdXRwdXQgZmlsZSB1c2lu
ZyAtLXdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZS4nKSB1bmxlc3MgZGVmaW5lZCgk
d29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlKTsKIGRpZSgnTXVzdCBzcGVjaWZ5IGFu
IG91dHB1dCBmaWxlIHVzaW5nIC0tZGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rv
cnNGaWxlLicpIHVubGVzcyBkZWZpbmVkKCRkZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0
cnVjdG9yc0ZpbGUpOwogZGllKCdNdXN0IHNwZWNpZnkgYW4gb3V0cHV0IGZpbGUgdXNpbmcgLS1z
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlLicpIHVubGVzcyBkZWZpbmVk
KCRzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlKTsKK2RpZSgnTXVzdCBz
cGVjaWZ5IGFuIG91dHB1dCBmaWxlIHVzaW5nIC0td29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0
b3JzRmlsZS4nKSB1bmxlc3MgZGVmaW5lZCgkd29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3Jz
RmlsZSk7CitkaWUoJ011c3Qgc3BlY2lmeSBhbiBvdXRwdXQgZmlsZSB1c2luZyAtLXBhaW50V29y
a2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZS4nKSB1bmxlc3MgZGVmaW5lZCgkcGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlKTsKIGRpZSgnTXVzdCBzcGVjaWZ5IHRo
ZSBmaWxlIGxpc3RpbmcgYWxsIElETHMgdXNpbmcgLS1pZGxGaWxlc0xpc3QuJykgdW5sZXNzIGRl
ZmluZWQoJGlkbEZpbGVzTGlzdCk7CiAKICRzdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZSA9IEN5
Z3dpblBhdGhJZk5lZWRlZCgkc3VwcGxlbWVudGFsRGVwZW5kZW5jeUZpbGUpOwpAQCAtNjEsNiAr
NjcsOCBAQCAkd2luZG93Q29uc3RydWN0b3JzRmlsZSA9IEN5Z3dpblBhdGhJZk5lZWRlZCgkd2lu
ZG93Q29uc3RydWN0b3JzRmlsZSk7CiAkd29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxl
ID0gQ3lnd2luUGF0aElmTmVlZGVkKCR3b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUp
OwogJGRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSA9IEN5Z3dpblBh
dGhJZk5lZWRlZCgkZGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlKTsK
ICRzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlID0gQ3lnd2luUGF0aElm
TmVlZGVkKCRzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlKTsKKyR3b3Jr
bGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlID0gQ3lnd2luUGF0aElmTmVlZGVkKCR3b3Jr
bGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlKTsKKyRwYWludFdvcmtsZXRHbG9iYWxTY29w
ZUNvbnN0cnVjdG9yc0ZpbGUgPSBDeWd3aW5QYXRoSWZOZWVkZWQoJHBhaW50V29ya2xldEdsb2Jh
bFNjb3BlQ29uc3RydWN0b3JzRmlsZSk7CiAkc3VwcGxlbWVudGFsTWFrZWZpbGVEZXBzID0gQ3ln
d2luUGF0aElmTmVlZGVkKCRzdXBwbGVtZW50YWxNYWtlZmlsZURlcHMpOwogCiBvcGVuIEZILCAi
PCAkaWRsRmlsZXNMaXN0IiBvciBkaWUgIkNhbm5vdCBvcGVuICRpZGxGaWxlc0xpc3RcbiI7CkBA
IC04MCw2ICs4OCw4IEBAIG15ICR3aW5kb3dDb25zdHJ1Y3RvcnNDb2RlID0gIiI7CiBteSAkd29y
a2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNDb2RlID0gIiI7CiBteSAkZGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNDb2RlID0gIiI7CiBteSAkc2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlQ29uc3RydWN0b3JzQ29kZSA9ICIiOworbXkgJHdvcmtsZXRHbG9iYWxTY29wZUNvbnN0
cnVjdG9yc0NvZGUgPSAiIjsKK215ICRwYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9y
c0NvZGUgPSAiIjsKIAogIyBHZXQgcmlkIG9mIGR1cGxpY2F0ZXMgaW4gaWRsRmlsZXMgYXJyYXku
CiBteSAlaWRsRmlsZUhhc2ggPSBtYXAgeyAkXywgMSB9IEBpZGxGaWxlczsKQEAgLTE0Myw2ICsx
NTMsMTAgQEAgZm9yZWFjaCBteSAkaWRsRmlsZSAoc29ydCBrZXlzICVpZGxGaWxlSGFzaCkgewog
ICAgICAgICAgICAgICAgICAgICAkZGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rv
cnNDb2RlIC49ICRhdHRyaWJ1dGVDb2RlOwogICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRnbG9i
YWxDb250ZXh0IGVxICJTZXJ2aWNlV29ya2VyIikgewogICAgICAgICAgICAgICAgICAgICAkc2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzQ29kZSAuPSAkYXR0cmlidXRlQ29kZTsK
KyAgICAgICAgICAgICAgICB9IGVsc2lmICgkZ2xvYmFsQ29udGV4dCBlcSAiV29ya2xldCIpIHsK
KyAgICAgICAgICAgICAgICAgICAgJHdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0NvZGUg
Lj0gJGF0dHJpYnV0ZUNvZGU7CisgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGdsb2JhbENvbnRl
eHQgZXEgIlBhaW50V29ya2xldCIpIHsKKyAgICAgICAgICAgICAgICAgICAgJHBhaW50V29ya2xl
dEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzQ29kZSAuPSAkYXR0cmlidXRlQ29kZTsKICAgICAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBkaWUgIlVuc3VwcG9ydGVkIGds
b2JhbCBjb250ZXh0ICckZ2xvYmFsQ29udGV4dCcgdXNlZCBpbiBbRXhwb3NlZF0gYXQgJGlkbEZp
bGUiOwogICAgICAgICAgICAgICAgIH0KQEAgLTE1Nyw2ICsxNzEsOCBAQCBHZW5lcmF0ZVBhcnRp
YWxJbnRlcmZhY2UoIkRPTVdpbmRvdyIsICR3aW5kb3dDb25zdHJ1Y3RvcnNDb2RlLCAkd2luZG93
Q29uc3RydWN0bwogR2VuZXJhdGVQYXJ0aWFsSW50ZXJmYWNlKCJXb3JrZXJHbG9iYWxTY29wZSIs
ICR3b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0NvZGUsICR3b3JrZXJHbG9iYWxTY29wZUNv
bnN0cnVjdG9yc0ZpbGUpOwogR2VuZXJhdGVQYXJ0aWFsSW50ZXJmYWNlKCJEZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZSIsICRkZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0Nv
ZGUsICRkZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOwogR2VuZXJh
dGVQYXJ0aWFsSW50ZXJmYWNlKCJTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUiLCAkc2VydmljZVdv
cmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzQ29kZSwgJHNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZUNvbnN0cnVjdG9yc0ZpbGUpOworR2VuZXJhdGVQYXJ0aWFsSW50ZXJmYWNlKCJXb3JrbGV0R2xv
YmFsU2NvcGUiLCAkd29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzQ29kZSwgJHdvcmtsZXRH
bG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOworR2VuZXJhdGVQYXJ0aWFsSW50ZXJmYWNlKCJQ
YWludFdvcmtsZXRHbG9iYWxTY29wZSIsICRwYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVj
dG9yc0NvZGUsICRwYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOwogCiAj
IFJlc29sdmVzIHBhcnRpYWwgaW50ZXJmYWNlcyBhbmQgaW1wbGVtZW50cyBkZXBlbmRlbmNpZXMu
CiBmb3JlYWNoIG15ICRpZGxGaWxlIChzb3J0IGtleXMgJXN1cHBsZW1lbnRhbERlcGVuZGVuY2ll
cykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50SW1hZ2VWYWx1ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmNwcAppbmRleCBhNjkw
ZTQxZDc2NzFkZWEwMzUzMjFmYWZlN2I3ZmE5NzExYWJkYTUyLi42MTY0MTM1ODZjZjY3NjQ5N2Ix
YTIzZTYwMDFjMjY1NmMwZTdjNjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFpbnRJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRJbWFn
ZVZhbHVlLmNwcApAQCAtMjksOCArMjksOCBAQAogCiAjaWYgRU5BQkxFKENTU19QQUlOVElOR19B
UEkpCiAKLSNpbmNsdWRlICJDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUg
IkN1c3RvbVBhaW50SW1hZ2UuaCIKKyNpbmNsdWRlICJQYWludFdvcmtsZXRHbG9iYWxTY29wZS5o
IgogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CiAKQEAgLTUwLDggKzUwLDEwIEBAIFJlZlB0cjxJbWFnZT4gQ1NTUGFpbnRJbWFn
ZVZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50JiByZW5kZXJFbGVtZW50LCBjb25zdCBGbG9hCiB7
CiAgICAgaWYgKHNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBh
dXRvJiBzZWxlY3RlZEdsb2JhbFNjb3BlID0gcmVuZGVyRWxlbWVudC5kb2N1bWVudCgpLmVuc3Vy
ZUNTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlKCk7Ci0gICAgYXV0byogcmVnaXN0cmF0aW9uID0g
c2VsZWN0ZWRHbG9iYWxTY29wZS5wYWludERlZmluaXRpb25NYXAoKS5nZXQobV9uYW1lKTsKKyAg
ICBhdXRvKiBzZWxlY3RlZEdsb2JhbFNjb3BlID0gcmVuZGVyRWxlbWVudC5kb2N1bWVudCgpLmdl
dENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlKCk7CisgICAgaWYgKCFzZWxlY3RlZEdsb2JhbFNj
b3BlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvKiByZWdpc3RyYXRpb24gPSBz
ZWxlY3RlZEdsb2JhbFNjb3BlLT5wYWludERlZmluaXRpb25NYXAoKS5nZXQobV9uYW1lKTsKIAog
ICAgIGlmICghcmVnaXN0cmF0aW9uKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDk3M2NkMzhkNjhlNDNjYzUyODVjNTgxMDRiMjVkZGI2
ZTEwYzI4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNTU1BhaW50V29ya2xl
dEdsb2JhbFNjb3BlLmgiCi0KLSNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1SZWY8Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+IENTU1BhaW50
V29ya2xldEdsb2JhbFNjb3BlOjpjcmVhdGUoKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlKCkpOwotfQotCi1DU1NQYWludFdvcmtsZXRHbG9i
YWxTY29wZTo6Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoKQotewotfQotCi1kb3VibGUgQ1NT
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OmRldmljZVBpeGVsUmF0aW8oKQotewotICAgIHJldHVy
biAxLjA7Ci19Ci0KLUV4Y2VwdGlvbk9yPHZvaWQ+IENTU1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
OjphZGRSZWdpc3RlcmVkUGFpbnQoKQotewotICAgIHJldHVybiB7IH07Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyM2Iw
ZDlkOGYzZjAyMzdlMjc5MmZjZWY3ZTQ3N2ZlNThjNjJhMzA4Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludFdv
cmtsZXRHbG9iYWxTY29wZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCi0KLSNpbmNsdWRlICJDU1NQYWludENhbGxiYWNr
LmgiCi0jaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgot
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1u
YW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgSlNWYWx1ZTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUg
OiBwdWJsaWMgUmVmQ291bnRlZDxDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZT4gewotcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+IGNyZWF0ZSgpOwot
Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gYWRkUmVnaXN0ZXJlZFBhaW50KCk7Ci0gICAgZG91Ymxl
IGRldmljZVBpeGVsUmF0aW8oKTsKLQotICAgIHN0cnVjdCBQYWludERlZmluaXRpb24gewotICAg
ICAgICBjb25zdCBBdG9taWNTdHJpbmcgbmFtZTsKLSAgICAgICAgY29uc3QgUmVmPENTU1BhaW50
Q2FsbGJhY2s+IHBhaW50Q2FsbGJhY2s7Ci0gICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+IGlu
cHV0UHJvcGVydGllczsKLSAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4gaW5wdXRBcmd1bWVu
dHM7Ci0gICAgfTsKLQotICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8UGFpbnRE
ZWZpbml0aW9uPj4mIHBhaW50RGVmaW5pdGlvbk1hcCgpIHsgcmV0dXJuIG1fcGFpbnREZWZpbml0
aW9uTWFwOyB9Ci0KLXByaXZhdGU6Ci0gICAgQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoKTsK
LQotICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8UGFpbnREZWZpbml0aW9uPj4g
bV9wYWludERlZmluaXRpb25NYXA7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0jZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludFdvcmtsZXRHbG9iYWxT
Y29wZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUu
aWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNTM2YzBhNDEzOTVjMGExYTA4NGZh
MWY3ZWI1YTZjMmJhNzJhNjFmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5p
ZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0vKgotKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotKgotKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0qIGFyZSBtZXQ6Ci0qIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0qICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotKgotKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0qIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0qIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0qIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0qIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSovCi0K
LVsKLSAgICBFbmFibGVkQXRSdW50aW1lPUNTU1BhaW50aW5nQVBJLAotICAgIENvbmRpdGlvbmFs
PUNTU19QQUlOVElOR19BUEksCi0gICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKLSAgICBK
U0N1c3RvbU1hcmtGdW5jdGlvbiwKLSAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QKLV0gaW50
ZXJmYWNlIENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlIHsKLSAgICBbQ3VzdG9tLCBNYXlUaHJv
d0V4Y2VwdGlvbl0gdm9pZCByZWdpc3RlclBhaW50KERPTVN0cmluZyBuYW1lLCBGdW5jdGlvbiBw
YWludEN0b3IpOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIGRl
dmljZVBpeGVsUmF0aW87Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNT
U1BhaW50V29ya2xldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0
LmNwcAppbmRleCAxMjA2ODFiOGQ3NjEzNDZkYTcyYWNjNWEwYjIyNjllMTQwNzM1ODliLi5kY2Vi
N2VlOWI2MDQ5MGRjMDE4MWU1YzZmMTg2NWQwMmNiY2YyYWNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmNwcApAQCAtMjgsMTYgKzI4LDE3IEBACiAKICNpZiBFTkFC
TEUoQ1NTX1BBSU5USU5HX0FQSSkKIAotI2luY2x1ZGUgIkNTU1BhaW50V29ya2xldEdsb2JhbFNj
b3BlLmgiCiAjaW5jbHVkZSAiRE9NQ1NTTmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKKyNpbmNsdWRlICJXb3JrbGV0LmgiCisKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSYg
RE9NQ1NTUGFpbnRXb3JrbGV0OjplbnN1cmVQYWludFdvcmtsZXRHbG9iYWxTY29wZShEb2N1bWVu
dCYgZG9jdW1lbnQpCitXb3JrbGV0JiBET01DU1NQYWludFdvcmtsZXQ6OmVuc3VyZVBhaW50V29y
a2xldChEb2N1bWVudCYgZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIGRvY3VtZW50LmVuc3VyZUNT
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlKCk7CisgICAgcmV0dXJuIGRvY3VtZW50LmVuc3VyZUNT
U1BhaW50V29ya2xldCgpOwogfQogCiBET01DU1NQYWludFdvcmtsZXQqIERPTUNTU1BhaW50V29y
a2xldDo6ZnJvbShET01DU1NOYW1lc3BhY2UmIGNzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQ
YWludFdvcmtsZXQuaAppbmRleCBlZTVlZmIxMWQxOWJiNjJmMzhlNTZlMTBlNWQ2MTYzY2M5ZDhm
YjNmLi5hMmNiMzczZjZhMDM0MTNkMTIxYjQwMTQzNGJmZDllZjk5YTk3NmYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5oCkBAIC0zNSwxNCArMzUsMTQgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBDU1NQYWludFdvcmtsZXRH
bG9iYWxTY29wZTsKK2NsYXNzIFdvcmtsZXQ7CiBjbGFzcyBET01DU1NOYW1lc3BhY2U7CiAKIGNs
YXNzIERPTUNTU1BhaW50V29ya2xldCBmaW5hbCA6IHB1YmxpYyBTdXBwbGVtZW50PERPTUNTU05h
bWVzcGFjZT4gewogcHVibGljOgogICAgIGV4cGxpY2l0IERPTUNTU1BhaW50V29ya2xldChET01D
U1NOYW1lc3BhY2UmKSB7IH0KIAotICAgIHN0YXRpYyBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29w
ZSYgZW5zdXJlUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMg
V29ya2xldCYgZW5zdXJlUGFpbnRXb3JrbGV0KERvY3VtZW50Jik7CiAKIHByaXZhdGU6CiAgICAg
c3RhdGljIERPTUNTU1BhaW50V29ya2xldCogZnJvbShET01DU1NOYW1lc3BhY2UmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuaWRsIGIvU291cmNl
L1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5pZGwKaW5kZXggMTkwY2RiNDVlYzc1M2Rl
YmJlOTZmOGQ4MzM4MTNmNDQ2MzVhZThjMy4uYWE1OWU1ZWUyZGU5MTgxZDMwNDdmZTM0ODA0ZmU1
MjdhMjZmNzQxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29y
a2xldC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5pZGwK
QEAgLTI3LDYgKzI3LDUgQEAKICAgICBFbmFibGVkQXRSdW50aW1lPUNTU1BhaW50aW5nQVBJLAog
ICAgIENvbmRpdGlvbmFsPUNTU19QQUlOVElOR19BUEksCiBdIHBhcnRpYWwgaW50ZXJmYWNlIERP
TUNTU05hbWVzcGFjZSB7Ci0gICAgLy8gRklYTUU6IFRoaXMgaXMgbm90IGFjdHVhbGx5IHBhcnQg
b2YgdGhlIHNwZWMsIGFuZCBzaG91bGQgYmUgcmVwbGFjZWQgd2hlbiB3b3JrbGV0cyBhcmUgaW1w
bGVtZW50ZWQKLSAgICBbSW1wbGVtZW50ZWRBcz1lbnN1cmVQYWludFdvcmtsZXRHbG9iYWxTY29w
ZSxDYWxsV2l0aD1Eb2N1bWVudF0gc3RhdGljIHJlYWRvbmx5IGF0dHJpYnV0ZSBDU1NQYWludFdv
cmtsZXRHbG9iYWxTY29wZSBwYWludFdvcmtsZXRHbG9iYWxTY29wZTsKKyAgICBbSW1wbGVtZW50
ZWRBcz1lbnN1cmVQYWludFdvcmtsZXQsQ2FsbFdpdGg9RG9jdW1lbnRdIHN0YXRpYyByZWFkb25s
eSBhdHRyaWJ1dGUgV29ya2xldCBwYWludFdvcmtsZXQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKaW5kZXggN2I0ODA4YmU2YTM4Njc1MTAwODBjMGJhNDAyYzE3MWYxZTU4MDMwOC4uMTY2NDNl
ZDE5YzcwOTIyMTI3NzNhMGUzMDNiZGRlMmQ3YWU4NzYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiQ0RBVEFTZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiQ1NTQW5pbWF0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkNTU0ZvbnRTZWxlY3Rvci5o
IgotI2luY2x1ZGUgIkNTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiQ1NT
U3R5bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgIkNTU1N0eWxlU2hlZXQuaCIKICNpbmNsdWRl
ICJDYWNoZWRDU1NTdHlsZVNoZWV0LmgiCkBAIC0xNDAsNiArMTM5LDcgQEAKICNpbmNsdWRlICJQ
YWdlQ29uc29sZUNsaWVudC5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIlBh
Z2VUcmFuc2l0aW9uRXZlbnQuaCIKKyNpbmNsdWRlICJQYWludFdvcmtsZXRHbG9iYWxTY29wZS5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtTG9jYWxlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNl
c3Npb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIKQEAgLTIxNyw2ICsy
MTcsNyBAQAogI2luY2x1ZGUgIldlYkFuaW1hdGlvbi5oIgogI2luY2x1ZGUgIldoZWVsRXZlbnQu
aCIKICNpbmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgorI2luY2x1ZGUgIldvcmtsZXQuaCIKICNp
bmNsdWRlICJYTUxEb2N1bWVudC5oIgogI2luY2x1ZGUgIlhNTERvY3VtZW50UGFyc2VyLmgiCiAj
aW5jbHVkZSAiWE1MTlNOYW1lcy5oIgpAQCAtODM3NywxMSArODM3OCwxNiBAQCB2b2lkIERvY3Vt
ZW50OjpmcmFtZVdhc0Rpc2Nvbm5lY3RlZEZyb21Pd25lcigpCiB9CiAKICNpZiBFTkFCTEUoQ1NT
X1BBSU5USU5HX0FQSSkKLUNTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlJiBEb2N1bWVudDo6ZW5z
dXJlQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoKQorV29ya2xldCYgRG9jdW1lbnQ6OmVuc3Vy
ZUNTU1BhaW50V29ya2xldCgpCiB7Ci0gICAgaWYgKCFtX0NTU1BhaW50V29ya2xldEdsb2JhbFNj
b3BlKQotICAgICAgICBtX0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlID0gQ1NTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGU6OmNyZWF0ZSgpOwotICAgIHJldHVybiAqbV9DU1NQYWludFdvcmtsZXRH
bG9iYWxTY29wZTsKKyAgICBpZiAoIW1fQ1NTUGFpbnRXb3JrbGV0KQorICAgICAgICBtX0NTU1Bh
aW50V29ya2xldCA9IFdvcmtsZXQ6OmNyZWF0ZSgpOworICAgIHJldHVybiAqbV9DU1NQYWludFdv
cmtsZXQ7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OnNldENTU1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
KFJlZjxQYWludFdvcmtsZXRHbG9iYWxTY29wZT4mJiBzY29wZSkKK3sKKyAgICBtX2Nzc1BhaW50
V29ya2xldEdsb2JhbFNjb3BlID0gV1RGTW92ZShzY29wZSk7CiB9CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAppbmRleCA4NTQyYzE1NTY3MTdmMjdiNjA4OTA3ZDJkMTRlZTE0Y2RhMjQ4ZmQ4
Li40YjQ2MjMzNDNmY2RlMGI0YjJiNDk5N2I0YTM0MzBiZGUxZTliYzUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaApAQCAtODgsNyArODgsNiBAQCBjbGFzcyBBdHRyOwogY2xhc3MgQ0RBVEFTZWN0aW9u
OwogY2xhc3MgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTsKIGNsYXNzIENTU0ZvbnRTZWxlY3RvcjsK
LWNsYXNzIENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlOwogY2xhc3MgQ1NTU3R5bGVEZWNsYXJh
dGlvbjsKIGNsYXNzIENTU1N0eWxlU2hlZXQ7CiBjbGFzcyBDYWNoZWRDU1NTdHlsZVNoZWV0OwpA
QCAtMTU0LDYgKzE1Myw3IEBAIGNsYXNzIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHM7CiBj
bGFzcyBOb2RlRmlsdGVyOwogY2xhc3MgTm9kZUl0ZXJhdG9yOwogY2xhc3MgUGFnZTsKK2NsYXNz
IFBhaW50V29ya2xldEdsb2JhbFNjb3BlOwogY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50OwogY2xh
c3MgUHJvY2Vzc2luZ0luc3RydWN0aW9uOwogY2xhc3MgUXVhbGlmaWVkTmFtZTsKQEAgLTE5NCw2
ICsxOTQsNyBAQCBjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ7CiBjbGFzcyBXZWJHUFVSZW5k
ZXJpbmdDb250ZXh0OwogY2xhc3MgV2ViTWV0YWxSZW5kZXJpbmdDb250ZXh0OwogY2xhc3MgV2lu
ZG93UHJveHk7CitjbGFzcyBXb3JrbGV0OwogY2xhc3MgWFBhdGhFdmFsdWF0b3I7CiBjbGFzcyBY
UGF0aEV4cHJlc3Npb247CiBjbGFzcyBYUGF0aE5TUmVzb2x2ZXI7CkBAIC0xMzUwLDYgKzEzNTEs
MTAgQEAgcHVibGljOgogICAgIC8vIENhbGxlcnMgc2hvdWxkIHRyeSB0byBjcmVhdGUgdGhlIENv
bnNvbGVNZXNzYWdlIHRoZW1zZWx2ZXMuCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciA9IDApIGZpbmFsOwogCisgICAg
Ly8gVGhlIGZvbGxvd2luZyBhZGRNZXNzYWdlIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQuCisgICAg
Ly8gQ2FsbGVycyBzaG91bGQgdHJ5IHRvIGNyZWF0ZSB0aGUgQ29uc29sZU1lc3NhZ2UgdGhlbXNl
bHZlcy4KKyAgICB2b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCB1bnNpZ25lZCBs
aW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlNjcmlw
dENhbGxTdGFjaz4mJiwgSlNDOjpFeGVjU3RhdGUqID0gbnVsbHB0ciwgdW5zaWduZWQgbG9uZyBy
ZXF1ZXN0SWRlbnRpZmllciA9IDApIGZpbmFsOworCiAgICAgU2VjdXJpdHlPcmlnaW4mIHNlY3Vy
aXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gKlNlY3VyaXR5Q29udGV4dDo6c2VjdXJpdHlPcmln
aW4oKTsgfQogICAgIFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4oKSBjb25zdCBmaW5hbCB7IHJl
dHVybiB0b3BEb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCk7IH0KIApAQCAtMTUxNyw3ICsxNTIy
LDkgQEAgcHVibGljOgogICAgIGJvb2wgcmVnaXN0ZXJDU1NQcm9wZXJ0eShDU1NSZWdpc3RlcmVk
Q3VzdG9tUHJvcGVydHkmJik7CiAKICNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKLSAgICBD
U1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSYgZW5zdXJlQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUoKTsKKyAgICBXb3JrbGV0JiBlbnN1cmVDU1NQYWludFdvcmtsZXQoKTsKKyAgICBQYWludFdv
cmtsZXRHbG9iYWxTY29wZSogZ2V0Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoKSB7IHJldHVy
biBtX2Nzc1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmdldCgpOyB9CisgICAgdm9pZCBzZXRDU1NQ
YWludFdvcmtsZXRHbG9iYWxTY29wZShSZWY8UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+JiYpOwog
I2VuZGlmCiAKICAgICB2b2lkIHNldEFzUnVubmluZ1VzZXJTY3JpcHRzKCkgeyBtX2lzUnVubmlu
Z1VzZXJTY3JpcHRzID0gdHJ1ZTsgfQpAQCAtMTU3MCwxMCArMTU3Nyw2IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCByZWZTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgZmluYWwgeyByZWYoKTsgfQogICAg
IHZvaWQgZGVyZWZTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgZmluYWwgeyBkZXJlZigpOyB9CiAK
LSAgICAvLyBUaGUgZm9sbG93aW5nIGFkZE1lc3NhZ2UgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZC4K
LSAgICAvLyBDYWxsZXJzIHNob3VsZCB0cnkgdG8gY3JlYXRlIHRoZSBDb25zb2xlTWVzc2FnZSB0
aGVtc2VsdmVzLgotICAgIHZvaWQgYWRkTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2
ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIHVuc2ln
bmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgUmVmUHRyPEluc3BlY3Rvcjo6
U2NyaXB0Q2FsbFN0YWNrPiYmLCBKU0M6OkV4ZWNTdGF0ZSogPSBudWxscHRyLCB1bnNpZ25lZCBs
b25nIHJlcXVlc3RJZGVudGlmaWVyID0gMCkgZmluYWw7Ci0KICAgICBTZWNvbmRzIG1pbmltdW1E
T01UaW1lckludGVydmFsKCkgY29uc3QgZmluYWw7CiAKICAgICBTZWNvbmRzIGRvbVRpbWVyQWxp
Z25tZW50SW50ZXJ2YWwoYm9vbCBoYXNSZWFjaGVkTWF4TmVzdGluZ0xldmVsKSBjb25zdCBmaW5h
bDsKQEAgLTIwNjAsNyArMjA2Myw4IEBAIHByaXZhdGU6CiAgICAgQ1NTUmVnaXN0ZXJlZEN1c3Rv
bVByb3BlcnR5U2V0IG1fQ1NTUmVnaXN0ZXJlZFByb3BlcnR5U2V0OwogCiAjaWYgRU5BQkxFKENT
U19QQUlOVElOR19BUEkpCi0gICAgUmVmUHRyPENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlPiBt
X0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlOworICAgIFJlZlB0cjxXb3JrbGV0PiBtX0NTU1Bh
aW50V29ya2xldDsKKyAgICBSZWZQdHI8UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+IG1fY3NzUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGU7CiAjZW5kaWYKIAogICAgIGJvb2wgbV9pc1J1bm5pbmdVc2Vy
U2NyaXB0cyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRU
YXJnZXRGYWN0b3J5LmluIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5p
bgppbmRleCA2MGFiMWE1ODI4OGJlOTlhMjk3ZWU5MjNiODg5NDBmMTkzZjZmNTVmLi43OGEyMmIz
MTZhNGM0NjgwYjFkN2MyMjc0YWNiNmFiN2ZkNTY0OGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudFRhcmdldEZhY3RvcnkuaW4KQEAgLTUyLDYgKzUyLDcgQEAgV2ViQW5pbWF0aW9uCiBXZWJL
aXRNZWRpYUtleVNlc3Npb24gY29uZGl0aW9uYWw9TEVHQUNZX0VOQ1JZUFRFRF9NRURJQQogV2Vi
U29ja2V0CiBXb3JrZXIKK1dvcmtsZXRHbG9iYWxTY29wZSBjb25kaXRpb25hbD1DU1NfUEFJTlRJ
TkdfQVBJCiBYTUxIdHRwUmVxdWVzdAogWE1MSHR0cFJlcXVlc3RVcGxvYWQKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4IGJhNWMzNjMyNGJj
ODM0MDBlNDRiOGM5YzE1YjE1NWU1ODM3MGNmYmYuLmVlZTM4YjViYmFmMmM5M2I0YTVhZjJmODJk
OTNjYTUxMGVjZDEzN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVj
dXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5jcHAKQEAgLTU0LDYgKzU0LDggQEAKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29w
ZS5oIgogI2luY2x1ZGUgIldvcmtlck5hdmlnYXRvci5oIgogI2luY2x1ZGUgIldvcmtlclRocmVh
ZC5oIgorI2luY2x1ZGUgIldvcmtsZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtsZXRT
Y3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ2F0Y2hTY29wZS5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0V4Y2VwdGlvbi5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTUHJvbWlzZS5oPgpAQCAtNDc2LDggKzQ3OCwxNSBAQCBKU0M6OlZNJiBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Ojp2bSgpCiB7CiAgICAgaWYgKGlzPERvY3VtZW50PigqdGhpcykp
CiAgICAgICAgIHJldHVybiBjb21tb25WTSgpOworICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29w
ZT4oKnRoaXMpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCp0
aGlzKS5zY3JpcHQoKS0+dm0oKTsKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKyAgICBp
ZiAoaXM8V29ya2xldEdsb2JhbFNjb3BlPigqdGhpcykpCisgICAgICAgIHJldHVybiBkb3duY2Fz
dDxXb3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlzKS5zY3JpcHQoKS0+dm0oKTsKKyNlbmRpZgogCi0g
ICAgcmV0dXJuIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykuc2NyaXB0KCktPnZt
KCk7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gY29tbW9u
Vk0oKTsKIH0KIAogUmVqZWN0ZWRQcm9taXNlVHJhY2tlciYgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6ZW5zdXJlUmVqZWN0ZWRQcm9taXNlVHJhY2tlclNsb3coKQpAQCAtNTE5LDggKzUyOCwxOSBA
QCBKU0M6OkV4ZWNTdGF0ZSogU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZXhlY1N0YXRlKCkKICAg
ICAgICAgcmV0dXJuIGV4ZWNTdGF0ZUZyb21QYWdlKG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBk
b2N1bWVudC5wYWdlKCkpOwogICAgIH0KIAotICAgIFdvcmtlckdsb2JhbFNjb3BlKiB3b3JrZXJH
bG9iYWxTY29wZSA9IHN0YXRpY19jYXN0PFdvcmtlckdsb2JhbFNjb3BlKj4odGhpcyk7Ci0gICAg
cmV0dXJuIGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSk7
CisgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykpIHsKKyAgICAgICAgV29ya2Vy
R2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2Nv
cGU+KCp0aGlzKTsKKyAgICAgICAgcmV0dXJuIGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29w
ZSh3b3JrZXJHbG9iYWxTY29wZSk7CisgICAgfQorI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJ
KQorICAgIGlmIChpczxXb3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlzKSkgeworICAgICAgICBXb3Jr
bGV0R2xvYmFsU2NvcGUmIHdvcmtsZXRHbG9iYWxTY29wZSA9IGRvd25jYXN0PFdvcmtsZXRHbG9i
YWxTY29wZT4oKnRoaXMpOworICAgICAgICByZXR1cm4gZXhlY1N0YXRlRnJvbVdvcmtsZXRHbG9i
YWxTY29wZSh3b3JrbGV0R2xvYmFsU2NvcGUpOworICAgIH0KKyNlbmRpZgorCisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIFN0cmluZyBTY3JpcHRF
eGVjdXRpb25Db250ZXh0Ojpkb21haW5Gb3JDYWNoZVBhcnRpdGlvbigpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCAyYjY0NzVlNjI3ZGNl
ZmQ1ZGRiNjQzNGUxNTE1NTQ2NWU1NWM0N2U0Li43ODU5MDQ1ODIzYjdjNjMwNTBhZTAxZjFhNjQ1
YmFkMzBiMmRjNzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgKQEAgLTg5LDYgKzg5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlzRG9j
dW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1dvcmtl
ckdsb2JhbFNjb3BlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
aXNXb3JrbGV0R2xvYmFsU2NvcGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmly
dHVhbCBib29sIGlzQ29udGV4dFRocmVhZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2
aXJ0dWFsIGJvb2wgaXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0ID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2Vy
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2Vy
RGVidWdnZXJBZ2VudC5jcHAKaW5kZXggY2FjMDYyNTY5OWE0MThiODkwZDNkMTEzZDNjNDkyN2Jk
ZTZmZWM5ZC4uYjIwY2JiYzk1MDcwMjgxMWI2NTg5YWMxZGZiZDU3MzM5MTkzZDMzNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdn
ZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIv
V29ya2VyRGVidWdnZXJBZ2VudC5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgSW5qZWN0ZWRTY3JpcHQg
V29ya2VyRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nJiBl
cnJvclN0cmkKICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KCk7CiAgICAgfQogCi0gICAg
SlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlID0gZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNj
b3BlKCZtX3dvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3Rh
dGUgPSBleGVjU3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUobV93b3JrZXJHbG9iYWxTY29wZSk7
CiAgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0TWFuYWdlcigpLmluamVjdGVkU2NyaXB0Rm9yKHNj
cmlwdFN0YXRlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggOWNjNjlkMTcy
NGNkYWQxOGY5OGUzZDNiMzJmMjk2OGE1NTRlMDY3ZC4uOGMzMjE0ODdjNjg1ZmQzNGZhZWFhNzU1
MGM5OGEyMjkwODc1ZDMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCkBAIC02NSw3ICs2
NSw3IEBAIEluamVjdGVkU2NyaXB0IFdvcmtlclJ1bnRpbWVBZ2VudDo6aW5qZWN0ZWRTY3JpcHRG
b3JFdmFsKEVycm9yU3RyaW5nJiBlcnJvclN0cmluCiAgICAgICAgIHJldHVybiBJbmplY3RlZFNj
cmlwdCgpOwogICAgIH0KIAotICAgIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSA9IGV4ZWNT
dGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZSgmbV93b3JrZXJHbG9iYWxTY29wZSk7CisgICAgSlND
OjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlID0gZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3Bl
KG1fd29ya2VyR2xvYmFsU2NvcGUpOwogICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIo
KS5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHAKaW5kZXggZDJl
NDJjMGM5ZTYxOTlmNTI3NDI5MTY3MGYxN2EwNmU5ZGU4MjBmYi4uMTVhYTkyNGMyYjYxNzFlNTM1
MGMxMDFkNDQwYmU2YzNjY2E1MGM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1DdXN0b21QYWludEltYWdlOjpDdXN0b21QYWludEltYWdl
KGNvbnN0IENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb24mIGRlZmlu
aXRpb24sIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKK0N1c3RvbVBhaW50SW1hZ2U6OkN1c3RvbVBh
aW50SW1hZ2UoY29uc3QgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OlBhaW50RGVmaW5pdGlvbiYg
ZGVmaW5pdGlvbiwgY29uc3QgRmxvYXRTaXplJiBzaXplKQogICAgIDogbV9wYWludENhbGxiYWNr
KGRlZmluaXRpb24ucGFpbnRDYWxsYmFjay5nZXQoKSkKIHsKICAgICBzZXRDb250YWluZXJTaXpl
KHNpemUpOwpAQCAtNjMsNyArNjMsNiBAQCBJbWFnZURyYXdSZXN1bHQgQ3VzdG9tUGFpbnRJbWFn
ZTo6ZG9DdXN0b21QYWludChHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjbwogICAgIGlm
IChyZXN1bHQudHlwZSgpICE9IENhbGxiYWNrUmVzdWx0VHlwZTo6U3VjY2VzcykKICAgICAgICAg
cmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKIAotICAgIFVOVVNFRF9QQVJBTShk
ZXN0Q29udGV4dCk7CiAgICAgYXV0byBpbWFnZSA9IGNhbnZhcy0+Y29waWVkSW1hZ2UoKTsKICAg
ICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5n
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFp
bnRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJ
bWFnZS5oCmluZGV4IDAzYWIyYTg4ODY4M2EzZjUzODcxZGFjNWI1MWY4OTE5ZGE0YzRkZDIuLmVi
NmE4MWJhZTI0ZDExN2UwY2QzNDg4ZGM0N2E3NmU2MmIwNDIwY2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmgKQEAgLTI3LDgg
KzI3LDggQEAKIAogI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQogCi0jaW5jbHVkZSAiQ1NT
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJHZW5lcmF0ZWRJbWFnZS5oIgor
I2luY2x1ZGUgIlBhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBJbWFnZUJ1ZmZlcjsKIAogY2xhc3MgQ3VzdG9t
UGFpbnRJbWFnZSBmaW5hbCA6IHB1YmxpYyBHZW5lcmF0ZWRJbWFnZSB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxDdXN0b21QYWludEltYWdlPiBjcmVhdGUoY29uc3QgQ1NTUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGU6OlBhaW50RGVmaW5pdGlvbiYgZGVmaW5pdGlvbiwgY29uc3QgRmxvYXRTaXpl
JiBzaXplKQorICAgIHN0YXRpYyBSZWY8Q3VzdG9tUGFpbnRJbWFnZT4gY3JlYXRlKGNvbnN0IFBh
aW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb24mIGRlZmluaXRpb24sIGNvbnN0
IEZsb2F0U2l6ZSYgc2l6ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEN1
c3RvbVBhaW50SW1hZ2UoZGVmaW5pdGlvbiwgc2l6ZSkpOwogICAgIH0KQEAgLTQ1LDcgKzQ1LDcg
QEAgcHVibGljOgogICAgIGJvb2wgaXNDdXN0b21QYWludEltYWdlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQogCiBwcml2YXRlOgotICAgIEN1c3RvbVBhaW50SW1hZ2UoY29uc3Qg
Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OlBhaW50RGVmaW5pdGlvbiYsIGNvbnN0IEZsb2F0
U2l6ZSYpOworICAgIEN1c3RvbVBhaW50SW1hZ2UoY29uc3QgUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGU6OlBhaW50RGVmaW5pdGlvbiYsIGNvbnN0IEZsb2F0U2l6ZSYpOwogCiAgICAgSW1hZ2VEcmF3
UmVzdWx0IGRvQ3VzdG9tUGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRTaXplJik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNj
b3BlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yMDEzYjRhYjk1YWEzNDdlZTlhOWEwZTk0YTBhMzJiNzQyMjM2
MzIyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUuY3BwCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJ
KQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxQYWludFdvcmtsZXRHbG9iYWxTY29wZT4g
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OmNyZWF0ZShXZWFrUHRyPERvY3VtZW50PiYmIGRvY3Vt
ZW50LCBTY3JpcHRTb3VyY2VDb2RlJiYgY29kZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBQYWludFdvcmtsZXRHbG9iYWxTY29wZShXVEZNb3ZlKGRvY3VtZW50KSwgV1RGTW92ZShjb2Rl
KSkpOworfQorCitQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6UGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUoV2Vha1B0cjxEb2N1bWVudD4mJiBkb2N1bWVudCwgU2NyaXB0U291cmNlQ29kZSYmIGNvZGUp
CisgICAgOiBXb3JrbGV0R2xvYmFsU2NvcGUoV1RGTW92ZShkb2N1bWVudCksIFdURk1vdmUoY29k
ZSkpCit7Cit9CisKK2RvdWJsZSBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6ZGV2aWNlUGl4ZWxS
YXRpbygpCit7CisgICAgcmV0dXJuIDEuMDsKK30KKworRXhjZXB0aW9uT3I8dm9pZD4gUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGU6OmFkZFJlZ2lzdGVyZWRQYWludCgpCit7CisgICAgcmV0dXJuIHsg
fTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmggYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5
ZjhhODZjNGMwN2FmMWI5YmNjOTE5NzVhMWRmZjk1OTVmZjFiMjUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oCkBAIC0w
LDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorCisjaW5jbHVk
ZSAiQ1NTUGFpbnRDYWxsYmFjay5oIgorI2luY2x1ZGUgIldvcmtsZXRHbG9iYWxTY29wZS5oIgor
CituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEpTVmFsdWU7Cit9IC8vIG5hbWVzcGFjZSBKU0MKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQYWludFdvcmtsZXRHbG9iYWxTY29wZSA6IHB1
YmxpYyBXb3JrbGV0R2xvYmFsU2NvcGUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGU+IGNyZWF0ZShXZWFrUHRyPERvY3VtZW50PiYmLCBTY3JpcHRTb3Vy
Y2VDb2RlJiYpOworCisgICAgYm9vbCBpc1BhaW50V29ya2xldEdsb2JhbFNjb3BlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgRXhjZXB0aW9uT3I8dm9pZD4gYWRkUmVnaXN0
ZXJlZFBhaW50KCk7CisgICAgZG91YmxlIGRldmljZVBpeGVsUmF0aW8oKTsKKworICAgIHN0cnVj
dCBQYWludERlZmluaXRpb24geworICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcgbmFtZTsKKyAg
ICAgICAgY29uc3QgUmVmPENTU1BhaW50Q2FsbGJhY2s+IHBhaW50Q2FsbGJhY2s7CisgICAgICAg
IGNvbnN0IFZlY3RvcjxTdHJpbmc+IGlucHV0UHJvcGVydGllczsKKyAgICAgICAgY29uc3QgVmVj
dG9yPFN0cmluZz4gaW5wdXRBcmd1bWVudHM7CisgICAgfTsKKworICAgIEhhc2hNYXA8U3RyaW5n
LCBzdGQ6OnVuaXF1ZV9wdHI8UGFpbnREZWZpbml0aW9uPj4mIHBhaW50RGVmaW5pdGlvbk1hcCgp
IHsgcmV0dXJuIG1fcGFpbnREZWZpbml0aW9uTWFwOyB9CisKK3ByaXZhdGU6CisgICAgUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUoV2Vha1B0cjxEb2N1bWVudD4mJiwgU2NyaXB0U291cmNlQ29kZSYm
KTsKKworICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8UGFpbnREZWZpbml0aW9u
Pj4gbV9wYWludERlZmluaXRpb25NYXA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEds
b2JhbFNjb3BlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNTQ5Y2NmMDQzYmUwNGRiNjkxZGVkN2Y2MGM0ZWU1ZWE3
YWNjZGI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUuaWRsCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
Ki8KKworWworICAgIEV4cG9zZWQ9UGFpbnRXb3JrbGV0LAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9
Q1NTUGFpbnRpbmdBUEksCisgICAgQ29uZGl0aW9uYWw9Q1NTX1BBSU5USU5HX0FQSSwKKyAgICBK
U0N1c3RvbU1hcmtGdW5jdGlvbiwKKyAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCisgICAg
SW1wbGljaXRUaGlzLAorICAgIElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0LAorICAg
IElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0T25Qcm90b3R5cGUsCisgICAgR2xvYmFs
PShXb3JrbGV0LFBhaW50V29ya2xldCksCitdIGludGVyZmFjZSBQYWludFdvcmtsZXRHbG9iYWxT
Y29wZSA6IFdvcmtsZXRHbG9iYWxTY29wZSB7CisgICAgW0N1c3RvbSwgTWF5VGhyb3dFeGNlcHRp
b25dIHZvaWQgcmVnaXN0ZXJQYWludChET01TdHJpbmcgbmFtZSwgRnVuY3Rpb24gcGFpbnRDdG9y
KTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBkZXZpY2VQaXhl
bFJhdGlvOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzdm
YWM1ZTUwYmFlZjE5NTk2OWU5ODg3NzNmZmQ0MGI3ODQxNDRjMwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQuY3BwCkBAIC0wLDAgKzEsNTYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV29ya2xldC5oIgorCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19B
UEkpCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIlBhaW50V29ya2xldEdsb2Jh
bFNjb3BlLmgiCisjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK1JlZjxXb3JrbGV0PiBXb3JrbGV0OjpjcmVhdGUoKQoreworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFdvcmtsZXQoKSk7Cit9CisKKworV29ya2xldDo6V29ya2xldCgpCit7Cit9
CisKK3ZvaWQgV29ya2xldDo6YWRkTW9kdWxlKERvY3VtZW50JiBkb2N1bWVudCwgU3RyaW5nIG1v
ZHVsZVVSTCkKK3sKKyAgICBhdXRvIGNvbnRleHQgPSBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6
Y3JlYXRlKG1ha2VXZWFrUHRyKGRvY3VtZW50KSwgU2NyaXB0U291cmNlQ29kZShtb2R1bGVVUkwp
KTsKKyAgICBjb250ZXh0LT5ldmFsdWF0ZSgpOworICAgIGRvY3VtZW50LnNldENTU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlKFdURk1vdmUoY29udGV4dCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29y
a2xldC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYx
M2Y0OTQ3MDQ0NGViZjQ3YTk0ZDRkZjcwNjc0ZWI3MGRjZDJiOTUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmgKQEAgLTAsMCArMSw0NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2Ns
YXNzIERvY3VtZW50OworCitjbGFzcyBXb3JrbGV0IDogcHVibGljIFJlZkNvdW50ZWQ8V29ya2xl
dD4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8V29ya2xldD4gY3JlYXRlKCk7CisgICAgCisg
ICAgdm9pZCBhZGRNb2R1bGUoRG9jdW1lbnQmLCBTdHJpbmcgbW9kdWxlVVJMKTsKKworcHJvdGVj
dGVkOgorICAgIFdvcmtsZXQoKTsKKworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3NGNjOTEzODAw
Yjc5ZWU3MGE1YzQ0Njc5ZWYxNWZlN2VjODQ5ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmlkbApAQCAtMCwwICsxLDMzIEBACisvKgorKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyovCisKK1sKKyAgICBFbmFibGVkQXRSdW50aW1lPUNTU1BhaW50aW5nQVBJLAorICAg
IENvbmRpdGlvbmFsPUNTU19QQUlOVElOR19BUEksCisgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZU
YWJsZSwKKyAgICBHbG9iYWw9V29ya2xldCwKK10gaW50ZXJmYWNlIFdvcmtsZXQgeworICAgIFtD
YWxsV2l0aD1Eb2N1bWVudF0gdm9pZCBhZGRNb2R1bGUoVVNWU3RyaW5nIG1vZHVsZVVSTC8qLCBv
cHRpb25hbCBXb3JrbGV0T3B0aW9ucyBvcHRpb25zKi8pOworfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OTUwNmI5
ZTM5MzEzNGNlYzMzNjM2Y2E2NmYxYzVkYzI0Yjg4MTgyCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuY3BwCkBAIC0wLDAgKzEs
NzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV29ya2xl
dENvbnNvbGVDbGllbnQuaCIKKworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorCisjaW5j
bHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvQ29uc29sZU1lc3NhZ2UuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRBcmd1
bWVudHMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxsU3RhY2suaD4KKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5Lmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKK1dvcmtsZXRDb25z
b2xlQ2xpZW50OjpXb3JrbGV0Q29uc29sZUNsaWVudChXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmts
ZXRHbG9iYWxTY29wZSkKKyAgICA6IG1fd29ya2xldEdsb2JhbFNjb3BlKHdvcmtsZXRHbG9iYWxT
Y29wZSkKK3sKK30KKworV29ya2xldENvbnNvbGVDbGllbnQ6On5Xb3JrbGV0Q29uc29sZUNsaWVu
dCgpID0gZGVmYXVsdDsKKwordm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhU
eXBlQW5kTGV2ZWwoTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBKU0M6OkV4
ZWNTdGF0ZSogZXhlYywgUmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmIGFyZ3VtZW50
cykKK3sKKyAgICBTdHJpbmcgbWVzc2FnZVRleHQ7CisgICAgYXJndW1lbnRzLT5nZXRGaXJzdEFy
Z3VtZW50QXNTdHJpbmcobWVzc2FnZVRleHQpOworICAgIGF1dG8gbWVzc2FnZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29s
ZUFQSSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBXVEZNb3ZlKGFyZ3VtZW50cyksIGV4ZWMp
OworICAgIG1fd29ya2xldEdsb2JhbFNjb3BlLmFkZENvbnNvbGVNZXNzYWdlKFdURk1vdmUobWVz
c2FnZSkpOworfQorCit2b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50Ojpjb3VudChKU0M6OkV4ZWNT
dGF0ZSosIFJlZjxTY3JpcHRBcmd1bWVudHM+JiYpIHsgfQorCit2b2lkIFdvcmtsZXRDb25zb2xl
Q2xpZW50Ojp0aW1lKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJikgeyB9Cit2b2lkIFdv
cmtsZXRDb25zb2xlQ2xpZW50Ojp0aW1lRW5kKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5n
JikgeyB9CisKK3ZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6OnByb2ZpbGUoSlNDOjpFeGVjU3Rh
dGUqLCBjb25zdCBTdHJpbmcmKSB7IH0KK3ZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6OnByb2Zp
bGVFbmQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmKSB7IH0KKwordm9pZCBXb3JrbGV0
Q29uc29sZUNsaWVudDo6dGFrZUhlYXBTbmFwc2hvdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0
cmluZyYpIHsgfQordm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6dGltZVN0YW1wKEpTQzo6RXhl
Y1N0YXRlKiwgUmVmPFNjcmlwdEFyZ3VtZW50cz4mJikgeyB9CisKK3ZvaWQgV29ya2xldENvbnNv
bGVDbGllbnQ6OnJlY29yZChKU0M6OkV4ZWNTdGF0ZSosIFJlZjxTY3JpcHRBcmd1bWVudHM+JiYp
IHsgfQordm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6cmVjb3JkRW5kKEpTQzo6RXhlY1N0YXRl
KiwgUmVmPFNjcmlwdEFyZ3VtZW50cz4mJikgeyB9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldENvbnNv
bGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzBlMjc0ZWY3M2QxMjNkZmU3ODc4MDkyYThmYTM1MTY5NDM4NTQ0Ngot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xl
Q2xpZW50LmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisKKyNpbmNsdWRlICJXb3JrbGV0R2xvYmFsU2Nv
cGUuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlQ2xpZW50Lmg+CisjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBFeGVjU3RhdGU7Cit9
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV29ya2xldENvbnNvbGVDbGllbnQgZmlu
YWwgOiBwdWJsaWMgSlNDOjpDb25zb2xlQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBXb3JrbGV0Q29uc29sZUNsaWVudChXb3JrbGV0
R2xvYmFsU2NvcGUmKTsKKyAgICB2aXJ0dWFsIH5Xb3JrbGV0Q29uc29sZUNsaWVudCgpOworCitw
cm90ZWN0ZWQ6CisgICAgdm9pZCBtZXNzYWdlV2l0aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlwZSwg
TWVzc2FnZUxldmVsLCBKU0M6OkV4ZWNTdGF0ZSosIFJlZjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3Vt
ZW50cz4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjb3VudChKU0M6OkV4ZWNTdGF0ZSosIFJlZjxJ
bnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBwcm9maWxl
KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBwcm9maWxlRW5kKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiB0aXRsZSkgb3ZlcnJp
ZGU7CisgICAgdm9pZCB0YWtlSGVhcFNuYXBzaG90KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3Ry
aW5nJiB0aXRsZSkgb3ZlcnJpZGU7CisgICAgdm9pZCB0aW1lKEpTQzo6RXhlY1N0YXRlKiwgY29u
c3QgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7CisgICAgdm9pZCB0aW1lRW5kKEpTQzo6RXhlY1N0
YXRlKiwgY29uc3QgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7CisgICAgdm9pZCB0aW1lU3RhbXAo
SlNDOjpFeGVjU3RhdGUqLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYpIG92ZXJy
aWRlOworICAgIHZvaWQgcmVjb3JkKEpTQzo6RXhlY1N0YXRlKiwgUmVmPEluc3BlY3Rvcjo6U2Ny
aXB0QXJndW1lbnRzPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlY29yZEVuZChKU0M6OkV4ZWNT
dGF0ZSosIFJlZjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4mJikgb3ZlcnJpZGU7CisKK3By
aXZhdGU6CisgICAgV29ya2xldEdsb2JhbFNjb3BlJiBtX3dvcmtsZXRHbG9iYWxTY29wZTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzI1YjZkMzc5YTRhZTgw
OTI1ZGZkM2JlMDE5MDEyYzY4OTg5ZGRiZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTAsMCArMSwxMjYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIldvcmtsZXRHbG9iYWxTY29wZS5oIgorCisjaWYgRU5BQkxF
KENTU19QQUlOVElOR19BUEkpCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZy
YW1lLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCisjaW5jbHVkZSAi
SlNXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJQYWdlQ29uc29sZUNsaWVudC5oIgor
I2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luUG9saWN5LmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIK
KyNpbmNsdWRlICJXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgorCisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvRXhjZXB0aW9uLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0Q2FsbFN0YWNrLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKK1dvcmtsZXRHbG9iYWxT
Y29wZTo6V29ya2xldEdsb2JhbFNjb3BlKFdlYWtQdHI8RG9jdW1lbnQ+JiYgZG9jdW1lbnQsIFNj
cmlwdFNvdXJjZUNvZGUmJiBjb2RlKQorICAgIDogbV9zZXNzaW9uSUQoZG9jdW1lbnQtPnNlc3Np
b25JRCgpKQorICAgICwgbV9zY3JpcHQoc3RkOjptYWtlX3VuaXF1ZTxXb3JrbGV0U2NyaXB0Q29u
dHJvbGxlcj4odGhpcykpCisgICAgLCBtX2V2ZW50UXVldWUoKnRoaXMpCisgICAgLCBtX3RvcE9y
aWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCkpCisgICAgLCBtX2RvY3VtZW50KFdU
Rk1vdmUoZG9jdW1lbnQpKQorICAgICwgbV9jb2RlKFdURk1vdmUoY29kZSkpCit7CisgICAgQVNT
RVJUKG1fZG9jdW1lbnQpOworICAgIEZyYW1lKiBmcmFtZSA9IG1fZG9jdW1lbnQtPmZyYW1lKCk7
CisgICAgbV9qc1J1bnRpbWVGbGFncyA9IChmcmFtZSA/IGZyYW1lLT5zZXR0aW5ncygpLmphdmFT
Y3JpcHRSdW50aW1lRmxhZ3MoKSA6IEpTQzo6UnVudGltZUZsYWdzKCkpOworICAgIEFTU0VSVCht
X2RvY3VtZW50LT5wYWdlKCkpOworCisgICAgc2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koU2VjdXJp
dHlPcmlnaW5Qb2xpY3k6OmNyZWF0ZShtX2RvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpKSk7Cisg
ICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudFNlY3Vy
aXR5UG9saWN5PihVUkwgeyBjb2RlLnVybCgpIH0sICp0aGlzKSk7Cit9CisKK1dvcmtsZXRHbG9i
YWxTY29wZTo6fldvcmtsZXRHbG9iYWxTY29wZSgpCit7CisgICAgcmVtb3ZlRnJvbUNvbnRleHRz
TWFwKCk7CisgICAgbV9zY3JpcHQtPndvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIoKS0+c2V0Q29u
c29sZUNsaWVudChudWxscHRyKTsKK30KKwordm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmV2YWx1
YXRlKCkKK3sKKyAgICBtX3NjcmlwdC0+ZXZhbHVhdGUobV9jb2RlKTsKK30KKworYm9vbCBXb3Jr
bGV0R2xvYmFsU2NvcGU6OmlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSBjb25zdAoreworICAgIHJl
dHVybiBtX3NjcmlwdC0+aXNFeGVjdXRpb25Gb3JiaWRkZW4oKTsKK30KKwordm9pZCBXb3JrbGV0
R2xvYmFsU2NvcGU6OmRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQorewor
ICAgIG1fc2NyaXB0LT5kaXNhYmxlRXZhbChlcnJvck1lc3NhZ2UpOworfQorCit2b2lkIFdvcmts
ZXRHbG9iYWxTY29wZTo6ZGlzYWJsZVdlYkFzc2VtYmx5KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlKQoreworICAgIG1fc2NyaXB0LT5kaXNhYmxlV2ViQXNzZW1ibHkoZXJyb3JNZXNzYWdlKTsK
K30KKworVVJMIFdvcmtsZXRHbG9iYWxTY29wZTo6Y29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiB1
cmwpIGNvbnN0Cit7CisgICAgLy8gQWx3YXlzIHJldHVybiBhIG51bGwgVVJMIHdoZW4gcGFzc2Vk
IGEgbnVsbCBzdHJpbmcuCisgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBjaGFuZ2UgdGhlIFVSTCBj
b25zdHJ1Y3RvciB0byBoYXZlIHRoaXMgYmVoYXZpb3I/CisgICAgaWYgKHVybC5pc051bGwoKSkK
KyAgICAgICAgcmV0dXJuIFVSTCgpOworICAgIC8vIEFsd2F5cyB1c2UgVVRGLTggaW4gV29ya2Vy
cy4KKyAgICByZXR1cm4gVVJMKG1fY29kZS51cmwoKSwgdXJsKTsKK30KKwordm9pZCBXb3JrbGV0
R2xvYmFsU2NvcGU6OmxvZ0V4Y2VwdGlvblRvQ29uc29sZShjb25zdCBTdHJpbmcmIGVycm9yTWVz
c2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1u
TnVtYmVyLCBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiYmIHN0YWNrKQoreworICAgIEFTU0VSVCht
X2RvY3VtZW50KTsKKyAgICBtX2RvY3VtZW50LT5sb2dFeGNlcHRpb25Ub0NvbnNvbGUoZXJyb3JN
ZXNzYWdlLCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgV1RGTW92ZShzdGFj
aykpOworfQorCit2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2Uoc3Rk
Ojp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+JiYgbWVzc2FnZSkKK3sKKyAg
ICBBU1NFUlQobV9kb2N1bWVudCk7CisgICAgbV9kb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2Uo
V1RGTW92ZShtZXNzYWdlKSk7Cit9CisKK3ZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjphZGRDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCit7Cisg
ICAgQVNTRVJUKG1fZG9jdW1lbnQpOworICAgIG1fZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdl
KHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UsIHJlcXVlc3RJZGVudGlmaWVyKTsKK30KKwordm9pZCBX
b3JrbGV0R2xvYmFsU2NvcGU6OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3Nh
Z2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlVGV4dCwgY29uc3QgU3RyaW5nJiBz
b3VyY2VVUkwsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgUmVm
UHRyPFNjcmlwdENhbGxTdGFjaz4mJiBjYWxsU3RhY2ssIEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwg
dW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQobV9kb2N1bWVu
dCk7CisgICAgbV9kb2N1bWVudC0+YWRkTWVzc2FnZShzb3VyY2UsIGxldmVsLCBtZXNzYWdlVGV4
dCwgc291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFdURk1vdmUoY2FsbFN0YWNr
KSwgc3RhdGUsIHJlcXVlc3RJZGVudGlmaWVyKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xv
YmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQ1MzBkMDEyNDhjMzA0M2UwZTUzZTNiNTQ3NzE1Y2RiYzRjNzdkMzUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2Nv
cGUuaApAQCAtMCwwICsxLDEzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICoKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdf
QVBJKQorCisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Pci5o
IgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJTY3JpcHRT
b3VyY2VDb2RlLmgiCisjaW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIKKyNpbmNsdWRlICJVUkwu
aCIKKyNpbmNsdWRlICJXb3JrZXJFdmVudFF1ZXVlLmgiCisKKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9Db25zb2xlTWVzc2FnZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1J1bnRpbWVG
bGFncy5oPgorI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBXb3JrbGV0U2NyaXB0Q29udHJvbGxl
cjsKK2NsYXNzIFNjcmlwdFNvdXJjZUNvZGU7CisKK2NsYXNzIFdvcmtsZXRHbG9iYWxTY29wZSA6
IHB1YmxpYyBSZWZDb3VudGVkPFdvcmtsZXRHbG9iYWxTY29wZT4sIHB1YmxpYyBTdXBwbGVtZW50
YWJsZTxXb3JrbGV0R2xvYmFsU2NvcGU+LCBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
cHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEgeworcHVibGljOgorICAgIHZpcnR1YWwg
fldvcmtsZXRHbG9iYWxTY29wZSgpOworCisgICAgdmlydHVhbCBib29sIGlzUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCisgICAgY29uc3QgVVJMJiB1
cmwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvZGUudXJsKCk7IH0KKyAgICBTdHJpbmcgb3Jp
Z2luKCkgY29uc3QgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuICIiOyB9Cisg
ICAgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKCkgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0Up
CisgICAgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGlkYkNvbm5lY3Rpb25Qcm94eSgp
IGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBudWxscHRyOyB9CisjZW5kaWYK
KworICAgIHZvaWQgcG9zdFRhc2soVGFzayYmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OyB9CisKKyAgICB2b2lkIGV2YWx1YXRlKCk7CisKKyAgICB1c2luZyBSZWZDb3VudGVkOjpyZWY7
CisgICAgdXNpbmcgUmVmQ291bnRlZDo6ZGVyZWY7CisKKyAgICBXb3JrbGV0U2NyaXB0Q29udHJv
bGxlciogc2NyaXB0KCkgeyByZXR1cm4gbV9zY3JpcHQuZ2V0KCk7IH0KKworICAgIHZvaWQgYWRk
Q29uc29sZU1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+
JiYpIGZpbmFsOworCisgICAgYm9vbCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkgY29uc3QgZmlu
YWw7CisgICAgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbigpIGNvbnN0IGZpbmFsIHsgQVNTRVJU
X05PVF9SRUFDSEVEKCk7IHJldHVybiBtX3RvcE9yaWdpbi5nZXQoKTsgfQorCisgICAgU29ja2V0
UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyKCkgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsg
cmV0dXJuIG51bGxwdHI7IH0KKworICAgIGJvb2wgaXNDb250ZXh0VGhyZWFkKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNTZWN1cmVDb250ZXh0KCkgY29uc3QgZmlu
YWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBKU0M6OlJ1
bnRpbWVGbGFncyBqc1J1bnRpbWVGbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fanNSdW50aW1lRmxh
Z3M7IH0KKworcHJvdGVjdGVkOgorICAgIFdvcmtsZXRHbG9iYWxTY29wZShXZWFrUHRyPERvY3Vt
ZW50PiYmLCBTY3JpcHRTb3VyY2VDb2RlJiYpOworCitwcml2YXRlOgorICAgIHZvaWQgcmVmU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpIGZpbmFsIHsgcmVmKCk7IH0KKyAgICB2b2lkIGRlcmVmU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpIGZpbmFsIHsgZGVyZWYoKTsgfQorCisgICAgdm9pZCByZWZF
dmVudFRhcmdldCgpIGZpbmFsIHsgcmVmKCk7IH0KKyAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQo
KSBmaW5hbCB7IGRlcmVmKCk7IH0KKworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBjb25zdF9jYXN0PFdvcmts
ZXRHbG9iYWxTY29wZSo+KHRoaXMpOyB9CisgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRU
YXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBXb3JrbGV0R2xvYmFsU2NvcGVF
dmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KKworICAgIGJvb2wgaXNXb3JrbGV0R2xvYmFsU2Nv
cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisKKyAgICB2b2lkIGxvZ0V4Y2VwdGlv
blRvQ29uc29sZShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgY29uc3QgU3RyaW5nJiwgaW50
LCBpbnQsIFJlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFjaz4mJikgZmluYWw7CisgICAg
dm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQsIHVuc2lnbmVkLCBSZWZQdHI8SW5zcGVjdG9yOjpT
Y3JpcHRDYWxsU3RhY2s+JiYsIEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgbG9uZykgZmluYWw7
CisgICAgdm9pZCBhZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWws
IGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIGxvbmcpIGZpbmFsOworCisgICAgRXZlbnRUYXJnZXQq
IGVycm9yRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJldHVybiB0aGlzOyB9CisgICAgRXZlbnRRdWV1
ZSYgZXZlbnRRdWV1ZSgpIGNvbnN0IGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVy
biBtX2V2ZW50UXVldWU7IH0KKworI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQorICAgIGJvb2wg
d3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mLCBWZWN0b3I8dWludDhfdD4mKSBm
aW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHVu
d3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mLCBWZWN0b3I8dWludDhfdD4mKSBm
aW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KKyNlbmRpZgorICAg
IFVSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKKyAgICBQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQor
ICAgIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJikgY29uc3QgZmluYWwgeyBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsgcmV0dXJuICIiOyB9CisgICAgdm9pZCBkaXNhYmxlRXZhbChjb25zdCBTdHJp
bmcmKSBmaW5hbDsKKyAgICB2b2lkIGRpc2FibGVXZWJBc3NlbWJseShjb25zdCBTdHJpbmcmKSBm
aW5hbDsKKworICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxXb3JrbGV0U2NyaXB0Q29udHJvbGxlcj4gbV9zY3JpcHQ7CisKKyAgICAvLyBGSVhNRTog
Tm9uZSBvZiB0aGVzZSBhcmUgaW1wbGVtZW50ZWQgcHJvcGVybHksIHRoaXMganVzdCBzYXRpc2Zp
ZXMgdGhlIGNvbXBpbGVyLgorICAgIG11dGFibGUgV29ya2VyRXZlbnRRdWV1ZSBtX2V2ZW50UXVl
dWU7CisgICAgUmVmPFNlY3VyaXR5T3JpZ2luPiBtX3RvcE9yaWdpbjsKKyAgICBTdHJpbmcgbV9p
ZGVudGlmaWVyOworCisgICAgSlNDOjpSdW50aW1lRmxhZ3MgbV9qc1J1bnRpbWVGbGFnczsKKyAg
ICBXZWFrUHRyPERvY3VtZW50PiBtX2RvY3VtZW50OworCisgICAgU2NyaXB0U291cmNlQ29kZSBt
X2NvZGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQkVHSU4oV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlKQorc3RhdGljIGJvb2wgaXNU
eXBlKGNvbnN0IFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsgcmV0
dXJuIGNvbnRleHQuaXNXb3JrbGV0R2xvYmFsU2NvcGUoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19FTkQoKQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9X
b3JrbGV0R2xvYmFsU2NvcGUuaWRsIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEds
b2JhbFNjb3BlLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNzU5ZjBjZTFkMTZmODY5MTg2MDEyNzc2ZjBkYjE2
YjYxYmFhNDc4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29y
a2xldEdsb2JhbFNjb3BlLmlkbApAQCAtMCwwICsxLDM3IEBACisvKgorKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyov
CisKK1sKKyAgICBDdXN0b21Qcm94eVRvSlNPYmplY3QsCisgICAgRXhwb3NlZD1Xb3JrbGV0LAor
ICAgIEVuYWJsZWRBdFJ1bnRpbWU9Q1NTUGFpbnRpbmdBUEksCisgICAgQ29uZGl0aW9uYWw9Q1NT
X1BBSU5USU5HX0FQSSwKKyAgICBKU0xlZ2FjeVBhcmVudD1KU1dvcmtsZXRHbG9iYWxTY29wZUJh
c2UsCisgICAgSW1wbGljaXRUaGlzLAorICAgIElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2Jq
ZWN0LAorICAgIElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0T25Qcm90b3R5cGUsCisg
ICAgR2xvYmFsPVdvcmtsZXQsCitdIGludGVyZmFjZSBXb3JrbGV0R2xvYmFsU2NvcGUgOiBFdmVu
dFRhcmdldCB7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xl
dFNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNj
cmlwdENvbnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhOGNjM2NkOGZkODRiN2Q3NzNlN2VkOTI1
NTM2MjdiYWFmNDhmNTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0
cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTAsMCArMSwxOTUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIKKworI2lmIEVOQUJMRShDU1Nf
UEFJTlRJTkdfQVBJKQorCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSAiSlNF
dmVudFRhcmdldC5oIgorI2luY2x1ZGUgIkpTRXhlY1N0YXRlLmgiCisjaW5jbHVkZSAiSlNQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKKyNp
bmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCisjaW5jbHVkZSAiV29ya2xldENvbnNvbGVD
bGllbnQuaCIKKworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbXBsZXRpb24uaD4KKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9FeGNlcHRpb24uaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9FeGNlcHRpb25IZWxwZXJzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvR0NBY3Rpdml0
eUNhbGxiYWNrLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+CisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvUHJvbWlzZURlZmVycmVkVGltZXIuaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9TdHJvbmdJbmxpbmVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5n
IG5hbWVzcGFjZSBKU0M7CisKK1dvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpXb3JrbGV0U2NyaXB0
Q29udHJvbGxlcihXb3JrbGV0R2xvYmFsU2NvcGUqIHdvcmtsZXRHbG9iYWxTY29wZSkKKyAgICA6
IG1fdm0oVk06OmNyZWF0ZSgpKQorICAgICwgbV93b3JrbGV0R2xvYmFsU2NvcGUod29ya2xldEds
b2JhbFNjb3BlKQorICAgICwgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKCptX3ZtKQorewor
ICAgIG1fdm0tPmhlYXAuYWNxdWlyZUFjY2VzcygpOyAvLyBJdCdzIG5vdCBjbGVhciB0aGF0IHdl
IGhhdmUgZ29vZCBkaXNjaXBsaW5lIGZvciBoZWFwIGFjY2Vzcywgc28gdHVybiBpdCBvbiBwZXJt
YW5lbnRseS4KKyAgICBKU1ZNQ2xpZW50RGF0YTo6aW5pdE5vcm1hbFdvcmxkKG1fdm0uZ2V0KCkp
OworfQorCitXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6fldvcmtsZXRTY3JpcHRDb250cm9sbGVy
KCkKK3sKKyAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSgpKTsKKyAgICBtX3dvcmtsZXRHbG9iYWxT
Y29wZVdyYXBwZXIuY2xlYXIoKTsKKyAgICBtX3ZtID0gbnVsbHB0cjsKKyAgICBpZiAobV93b3Jr
bGV0R2xvYmFsU2NvcGVXcmFwcGVyKSB7CisgICAgICAgIG1fd29ya2xldEdsb2JhbFNjb3BlV3Jh
cHBlci0+Y2xlYXJET01HdWFyZGVkT2JqZWN0cygpOworICAgICAgICBtX3dvcmtsZXRHbG9iYWxT
Y29wZVdyYXBwZXItPnNldENvbnNvbGVDbGllbnQobnVsbHB0cik7CisgICAgICAgIG1fY29uc29s
ZUNsaWVudCA9IG51bGxwdHI7CisgICAgfQorfQorCit2b2lkIFdvcmtsZXRTY3JpcHRDb250cm9s
bGVyOjpmb3JiaWRFeGVjdXRpb24oKQoreworICAgIEFTU0VSVChtX3dvcmtsZXRHbG9iYWxTY29w
ZS0+aXNDb250ZXh0VGhyZWFkKCkpOworICAgIG1fZXhlY3V0aW9uRm9yYmlkZGVuID0gdHJ1ZTsK
K30KKworYm9vbCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6aXNFeGVjdXRpb25Gb3JiaWRkZW4o
KSBjb25zdAoreworICAgIEFTU0VSVChtX3dvcmtsZXRHbG9iYWxTY29wZS0+aXNDb250ZXh0VGhy
ZWFkKCkpOworICAgIHJldHVybiBtX2V4ZWN1dGlvbkZvcmJpZGRlbjsKK30KKwordm9pZCBXb3Jr
bGV0U2NyaXB0Q29udHJvbGxlcjo6ZGlzYWJsZUV2YWwoY29uc3QgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UpCit7CisgICAgaW5pdFNjcmlwdElmTmVlZGVkKCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2sg
eyB2bSgpIH07CisKKyAgICBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPnNldEV2YWxFbmFi
bGVkKGZhbHNlLCBlcnJvck1lc3NhZ2UpOworfQorCit2b2lkIFdvcmtsZXRTY3JpcHRDb250cm9s
bGVyOjpkaXNhYmxlV2ViQXNzZW1ibHkoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCit7Cisg
ICAgaW5pdFNjcmlwdElmTmVlZGVkKCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2sgeyB2bSgpIH07
CisKKyAgICBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPnNldFdlYkFzc2VtYmx5RW5hYmxl
ZChmYWxzZSwgZXJyb3JNZXNzYWdlKTsKK30KKworCit0ZW1wbGF0ZTx0eXBlbmFtZSBKU0dsb2Jh
bFNjb3BlUHJvdG90eXBlLCB0eXBlbmFtZSBKU0dsb2JhbFNjb3BlLCB0eXBlbmFtZSBHbG9iYWxT
Y29wZT4KK3ZvaWQgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHRXaXRoU3ViY2xh
c3MoKQoreworICAgIEFTU0VSVCghbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKTsKKworICAg
IEpTTG9ja0hvbGRlciBsb2NrKG1fdm0uZ2V0KCkpOworCisgICAgLy8gRXhwbGljaXRseSBwcm90
ZWN0IHRoZSBnbG9iYWwgb2JqZWN0J3MgcHJvdG90eXBlIHNvIGl0IGlzbid0IGNvbGxlY3RlZAor
ICAgIC8vIHdoZW4gd2UgYWxsb2NhdGUgdGhlIGdsb2JhbCBvYmplY3QuIChPbmNlIHRoZSBnbG9i
YWwgb2JqZWN0IGlzIGZ1bGx5CisgICAgLy8gY29uc3RydWN0ZWQsIGl0IGNhbiBtYXJrIGl0cyBv
d24gcHJvdG90eXBlLikKKyAgICBTdHJ1Y3R1cmUqIGNvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUg
PSBKU0dsb2JhbFNjb3BlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoKm1fdm0sIG51bGxwdHIs
IGpzTnVsbCgpKTsKKyAgICBTdHJvbmc8SlNHbG9iYWxTY29wZVByb3RvdHlwZT4gY29udGV4dFBy
b3RvdHlwZSgqbV92bSwgSlNHbG9iYWxTY29wZVByb3RvdHlwZTo6Y3JlYXRlKCptX3ZtLCBudWxs
cHRyLCBjb250ZXh0UHJvdG90eXBlU3RydWN0dXJlKSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBKU0dsb2JhbFNjb3BlOjpjcmVhdGVTdHJ1Y3R1cmUoKm1fdm0sIG51bGxwdHIsIGNvbnRl
eHRQcm90b3R5cGUuZ2V0KCkpOworICAgIGF1dG8qIHByb3h5U3RydWN0dXJlID0gSlNQcm94eTo6
Y3JlYXRlU3RydWN0dXJlKCptX3ZtLCBudWxscHRyLCBqc051bGwoKSwgUHVyZUZvcndhcmRpbmdQ
cm94eVR5cGUpOworICAgIGF1dG8qIHByb3h5ID0gSlNQcm94eTo6Y3JlYXRlKCptX3ZtLCBwcm94
eVN0cnVjdHVyZSk7CisKKyAgICBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIuc2V0KCptX3Zt
LCBKU0dsb2JhbFNjb3BlOjpjcmVhdGUoKm1fdm0sIHN0cnVjdHVyZSwgc3RhdGljX2Nhc3Q8R2xv
YmFsU2NvcGUmPigqbV93b3JrbGV0R2xvYmFsU2NvcGUpLCBwcm94eSkpOworICAgIGNvbnRleHRQ
cm90b3R5cGVTdHJ1Y3R1cmUtPnNldEdsb2JhbE9iamVjdCgqbV92bSwgbV93b3JrbGV0R2xvYmFs
U2NvcGVXcmFwcGVyLmdldCgpKTsKKyAgICBBU1NFUlQoc3RydWN0dXJlLT5nbG9iYWxPYmplY3Qo
KSA9PSBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpOworICAgIEFTU0VSVChtX3dvcmtsZXRH
bG9iYWxTY29wZVdyYXBwZXItPnN0cnVjdHVyZSgqbV92bSktPmdsb2JhbE9iamVjdCgpID09IG1f
d29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcik7CisgICAgY29udGV4dFByb3RvdHlwZS0+c3RydWN0
dXJlKCptX3ZtKS0+c2V0R2xvYmFsT2JqZWN0KCptX3ZtLCBtX3dvcmtsZXRHbG9iYWxTY29wZVdy
YXBwZXIuZ2V0KCkpOworICAgIGNvbnRleHRQcm90b3R5cGUtPnN0cnVjdHVyZSgqbV92bSktPnNl
dFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9uKCptX3ZtLCBKU0dsb2JhbFNjb3BlOjpwcm90b3R5
cGUoKm1fdm0sICptX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpKTsKKworICAgIHBy
b3h5LT5zZXRUYXJnZXQoKm1fdm0sIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7
CisgICAgcHJveHktPnN0cnVjdHVyZSgqbV92bSktPnNldEdsb2JhbE9iamVjdCgqbV92bSwgbV93
b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKTsKKworICAgIEFTU0VSVChtX3dvcmtsZXRH
bG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2xldEdsb2JhbFNjb3Bl
V3JhcHBlcik7CisgICAgQVNTRVJUKGFzT2JqZWN0KG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBl
ci0+Z2V0UHJvdG90eXBlRGlyZWN0KCptX3ZtKSktPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2xl
dEdsb2JhbFNjb3BlV3JhcHBlcik7CisKKyAgICBtX2NvbnNvbGVDbGllbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdvcmtsZXRDb25zb2xlQ2xpZW50PigqbV93b3JrbGV0R2xvYmFsU2NvcGUpOworICAg
IG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+c2V0Q29uc29sZUNsaWVudChtX2NvbnNvbGVD
bGllbnQuZ2V0KCkpOworfQorCit2b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2Ny
aXB0KCkKK3sKKyAgICBpZiAobV93b3JrbGV0R2xvYmFsU2NvcGUtPmlzUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUoKSkgeworICAgICAgICBpbml0U2NyaXB0V2l0aFN1YmNsYXNzPEpTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGVQcm90b3R5cGUsIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUsIFBhaW50
V29ya2xldEdsb2JhbFNjb3BlPigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmV2
YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIFN0cmluZyogcmV0dXJu
ZWRFeGNlcHRpb25NZXNzYWdlKQoreworICAgIGlmIChpc0V4ZWN1dGlvbkZvcmJpZGRlbigpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gZXhjZXB0aW9u
OworICAgIGV2YWx1YXRlKHNvdXJjZUNvZGUsIGV4Y2VwdGlvbiwgcmV0dXJuZWRFeGNlcHRpb25N
ZXNzYWdlKTsKKyAgICBpZiAoZXhjZXB0aW9uKSB7CisgICAgICAgIEpTTG9ja0hvbGRlciBsb2Nr
KHZtKCkpOworICAgICAgICByZXBvcnRFeGNlcHRpb24obV93b3JrbGV0R2xvYmFsU2NvcGVXcmFw
cGVyLT5nbG9iYWxFeGVjKCksIGV4Y2VwdGlvbik7CisgICAgfQorfQorCit2b2lkIFdvcmtsZXRT
Y3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VD
b2RlLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uLCBTdHJpbmcq
IHJldHVybmVkRXhjZXB0aW9uTWVzc2FnZSkKK3sKKyAgICBpZiAoaXNFeGVjdXRpb25Gb3JiaWRk
ZW4oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW5pdFNjcmlwdElmTmVlZGVkKCk7CisKKyAg
ICBhdXRvJiBzdGF0ZSA9ICptX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbEV4ZWMo
KTsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrIHsgdm0g
fTsKKworICAgIEpTRXhlY1N0YXRlOjpwcm9maWxlZEV2YWx1YXRlKCZzdGF0ZSwgSlNDOjpQcm9m
aWxpbmdSZWFzb246Ok90aGVyLCBzb3VyY2VDb2RlLmpzU291cmNlQ29kZSgpLCBtX3dvcmtsZXRH
bG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbFRoaXMoKSwgcmV0dXJuZWRFeGNlcHRpb24pOworCisg
ICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKSB7CisgICAgICAgIC8vIFRoaXMgRklYTUUgaXMgZnJv
bSBpbiBXb3JrZXJTY3JpcHRDb250cm9sbGVyLgorICAgICAgICBpZiAoLyptX3dvcmtsZXRHbG9i
YWxTY29wZS0+Y2FuSW5jbHVkZUVycm9yRGV0YWlscyhzb3VyY2VDb2RlLmNhY2hlZFNjcmlwdCgp
LCBzb3VyY2VDb2RlLnVybCgpLnN0cmluZygpKSovIHRydWUpIHsKKyAgICAgICAgICAgIC8vIEZJ
WE1FOiBJdCdzIG5vdCBncmVhdCB0aGF0IHRoaXMgY2FuIHJ1biBhcmJpdHJhcnkgY29kZSB0byBz
dHJpbmctaWZ5IHRoZSB2YWx1ZSBvZiB0aGUgZXhjZXB0aW9uLgorICAgICAgICAgICAgLy8gRG8g
d2UgbmVlZCB0byBkbyBhbnl0aGluZyB0byBoYW5kbGUgdGhhdCBwcm9wZXJseSwgaWYgaXQsIHNh
eSwgcmFpc2VzIGFub3RoZXIgZXhjZXB0aW9uPworICAgICAgICAgICAgaWYgKHJldHVybmVkRXhj
ZXB0aW9uTWVzc2FnZSkKKyAgICAgICAgICAgICAgICAqcmV0dXJuZWRFeGNlcHRpb25NZXNzYWdl
ID0gcmV0dXJuZWRFeGNlcHRpb24tPnZhbHVlKCkudG9XVEZTdHJpbmcoJnN0YXRlKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIE92ZXJ3cml0ZSB0aGUgZGV0YWlsZWQgZXJyb3Ig
d2l0aCBhIGdlbmVyaWMgZXJyb3IuCisgICAgICAgICAgICBTdHJpbmcgZ2VuZXJpY0Vycm9yTWVz
c2FnZSB7ICJTY3JpcHQgZXJyb3IuIl9zIH07CisgICAgICAgICAgICBpZiAocmV0dXJuZWRFeGNl
cHRpb25NZXNzYWdlKQorICAgICAgICAgICAgICAgICpyZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2Ug
PSBnZW5lcmljRXJyb3JNZXNzYWdlOworICAgICAgICAgICAgcmV0dXJuZWRFeGNlcHRpb24gPSBK
U0M6OkV4Y2VwdGlvbjo6Y3JlYXRlKHZtLCBjcmVhdGVFcnJvcigmc3RhdGUsIGdlbmVyaWNFcnJv
ck1lc3NhZ2UpKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBXb3JrbGV0U2NyaXB0Q29u
dHJvbGxlcjo6c2V0RXhjZXB0aW9uKEpTQzo6RXhjZXB0aW9uKiBleGNlcHRpb24pCit7CisgICAg
SlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPmdsb2Jh
bEV4ZWMoKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgZXhj
ZXB0aW9uKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iYTU3OGJiZjlhYjMyMWM5NzAxNDRlYjhmY2UzOGJlZTUzNjVlODdmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaApA
QCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKworI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RlYnVnZ2VyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNSdW5Mb29wVGltZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmcuaD4K
KyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVk
ZSA8d3RmL05ha2VkUHRyLmg+CisKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgVk07Cit9CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSlNXb3JrbGV0R2xvYmFsU2NvcGU7CitjbGFzcyBT
Y3JpcHRTb3VyY2VDb2RlOworY2xhc3MgV29ya2xldENvbnNvbGVDbGllbnQ7CitjbGFzcyBXb3Jr
bGV0R2xvYmFsU2NvcGU7CitjbGFzcyBXb3JrbGV0Q29uc29sZUNsaWVudDsKKworY2xhc3MgV29y
a2xldFNjcmlwdENvbnRyb2xsZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdvcmtsZXRT
Y3JpcHRDb250cm9sbGVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
V29ya2xldFNjcmlwdENvbnRyb2xsZXIoV29ya2xldEdsb2JhbFNjb3BlKik7CisgICAgfldvcmts
ZXRTY3JpcHRDb250cm9sbGVyKCk7CisKKyAgICBKU1dvcmtsZXRHbG9iYWxTY29wZSogd29ya2xl
dEdsb2JhbFNjb3BlV3JhcHBlcigpCisgICAgeworICAgICAgICBpbml0U2NyaXB0SWZOZWVkZWQo
KTsKKyAgICAgICAgcmV0dXJuIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKTsKKyAg
ICB9CisKKyAgICB2b2lkIGZvcmJpZEV4ZWN1dGlvbigpOworICAgIGJvb2wgaXNFeGVjdXRpb25G
b3JiaWRkZW4oKSBjb25zdDsKKworICAgIHZvaWQgZGlzYWJsZUV2YWwoY29uc3QgU3RyaW5nJiBl
cnJvck1lc3NhZ2UpOworICAgIHZvaWQgZGlzYWJsZVdlYkFzc2VtYmx5KGNvbnN0IFN0cmluZyYg
ZXJyb3JNZXNzYWdlKTsKKworICAgIHZvaWQgZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29k
ZSYsIFN0cmluZyogcmV0dXJuZWRFeGNlcHRpb25NZXNzYWdlID0gbnVsbHB0cik7CisgICAgdm9p
ZCBldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgTmFrZWRQdHI8SlNDOjpFeGNlcHRp
b24+JiByZXR1cm5lZEV4Y2VwdGlvbiwgU3RyaW5nKiByZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2Ug
PSBudWxscHRyKTsKKworICAgIHZvaWQgc2V0RXhjZXB0aW9uKEpTQzo6RXhjZXB0aW9uKik7CisK
KyAgICBKU0M6OlZNJiB2bSgpIHsgcmV0dXJuICptX3ZtOyB9CisKK3ByaXZhdGU6CisgICAgdm9p
ZCBpbml0U2NyaXB0SWZOZWVkZWQoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3dvcmtsZXRHbG9i
YWxTY29wZVdyYXBwZXIpCisgICAgICAgICAgICBpbml0U2NyaXB0KCk7CisgICAgfQorICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgaW5pdFNjcmlwdCgpOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
SlNHbG9iYWxTY29wZVByb3RvdHlwZSwgdHlwZW5hbWUgSlNHbG9iYWxTY29wZSwgdHlwZW5hbWUg
R2xvYmFsU2NvcGU+CisgICAgdm9pZCBpbml0U2NyaXB0V2l0aFN1YmNsYXNzKCk7CisKKyAgICBi
b29sIG1fZXhlY3V0aW9uRm9yYmlkZGVuIHsgZmFsc2UgfTsKKyAgICBSZWZQdHI8SlNDOjpWTT4g
bV92bTsKKyAgICBXb3JrbGV0R2xvYmFsU2NvcGUqIG1fd29ya2xldEdsb2JhbFNjb3BlOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxXb3JrbGV0Q29uc29sZUNsaWVudD4gbV9jb25zb2xlQ2xpZW50Owor
ICAgIEpTQzo6U3Ryb25nPEpTV29ya2xldEdsb2JhbFNjb3BlPiBtX3dvcmtsZXRHbG9iYWxTY29w
ZVdyYXBwZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjZW5kaWYKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAx
YjU4MGQ5NDkwMTFmNDY0MTNiZGM2M2Y4NDg5NDc2MjA3MjQwNTRjLi5mYTk5ZjU5ZjFhMTdmNjlj
OTVjYWFiZmQzZjc1N2FkMzg2YjY3YzE0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTgtMTAt
MjYgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAg
IEFkZCBuZXcgZ2xvYmFsIG9iamVjdCBhbmQgcHJlbGltaW5hcnkgV29ya2xldHMgc3VwcG9ydCBm
b3IgQ1NTIHBhaW50aW5nIGFwaQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTkwOTc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIGEgbmV3IHRlc3QgaGFybmVzcyBmb3Igd29ya2xldCB0ZXN0cywgc2lu
Y2UgdGhleSBkbyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIGRvbS4KKworICAgICAgICAqIGZhc3Qv
Y3NzLWN1c3RvbS1wYWludC9iYXNpYy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9jc3Mt
Y3VzdG9tLXBhaW50L2Jhc2ljLmh0bWw6CisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50
L3JlZ2lzdGVyUGFpbnRCaW5kaW5ncy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVnaXN0ZXJQYWludEJpbmRpbmdzLWV4cGVjdGVkLnR4dDog
UmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVnaXN0ZXJQYWludEJp
bmRpbmdzLmh0bWw6CisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Jlc291cmNlcy90
ZXN0aGFybmVzcy13b3JrbGV0LmpzOiBBZGRlZC4KKyAgICAgICAgKGZvcm1hdF92YWx1ZSk6Cisg
ICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qczog
QWRkZWQuCisgICAgICAgIChhc3luYy5pbXBvcnRXb3JrbGV0KToKKyAgICAgICAgKiBmYXN0L2Nz
cy1jdXN0b20tcGFpbnQvd29ya2xldC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2Nzcy1jdXN0b20tcGFpbnQvd29ya2xldC5odG1sOiBBZGRlZC4KKwogMjAxOC0xMC0yNiAg
Q29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjIzNzQ3OSBhbmQgcjIzNzQ4NC4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9iYXNpYy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYmFzaWMtZXhwZWN0ZWQudHh0CmluZGV4IGVhYTE3
NDNlNDM5OTAwYmZkNzNiMGMxOTE2ZTNkMmVjZWU2ZDRiNTYuLjAyMDU5Zjk4MzVlMjM2YWE1ZTk5
Mjk1NTE0OTE3M2I1ZDc1MjU1YTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1
c3RvbS1wYWludC9iYXNpYy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mt
Y3VzdG9tLXBhaW50L2Jhc2ljLWV4cGVjdGVkLnR4dApAQCAtMSwxMCArMSwzIEBACiAKLVBBU1Mg
dGVzdCB0aGF0IHJlZ2lzdGVyUGFpbnQgcnVucyAKLVBBU1MgdGVzdCB0aGF0IHJlZ2lzdGVyUGFp
bnQgcnVucyB3aXRob3V0IGlucHV0UHJvcGVydGllcyAKLVBBU1MgdGVzdCB0aGF0IHJlZ2lzdGVy
UGFpbnQgcnVucyB3aXRoIGlucHV0QXJndW1lbnRzIAotUEFTUyB0ZXN0IHRoYXQgcmVnaXN0ZXJQ
YWludCBydW5zIHdpdGggY29udGV4dE9wdGlvbnMgCi1QQVNTIHRlc3QgdGhhdCByZWdpc3RlclBh
aW50IHJ1bnMgd2l0aCBwcmVkZWZpbmVkIGNsYXNzIAotUEFTUyB0ZXN0IHRoYXQgcmVnaXN0ZXJQ
YWludCBhY2NlcHRzIG9ubHkgYSBzdHJpbmcgYW5kIGEgY2xhc3MgY29uc3RydWN0b3IgCiBQQVNT
IHRlc3QgdGhhdCB0ZXN0IGRpdiBoYXMgcGFpbnQoKSB2YWx1ZSAKLVBBU1MgdGVzdCB0aGF0IHRl
c3QgZGl2IHBhaW50IGNhbGxiYWNrIGdldHMgY2FsbGVkIAogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYmFzaWMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzLWN1c3RvbS1wYWludC9iYXNpYy5odG1sCmluZGV4IDNmNGRjM2EyZDAyZWYyMWEyZTk3MmQ0
YzhiNGYyZmFlOGMzODk0NTguLjRjOGIwY2Y1MmUxNmQ1YzhmMDI4NzhlMmNmNzU3OTUzNDBlMjhm
OTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9iYXNpYy5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9iYXNpYy5odG1sCkBA
IC0xNiw3MCArMTYsNyBAQAogPGRpdiBpZD0icGFpbnQiPjwvZGl2PgogCiA8c2NyaXB0PgotdGVz
dChmdW5jdGlvbigpIHsKLSAgQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFp
bnQoJ3Rlc3QxJywgY2xhc3MgewotICAgIHN0YXRpYyBnZXQgaW5wdXRQcm9wZXJ0aWVzKCkgeyBy
ZXR1cm4gWyItLXRlc3QiXTsgfQotICAgIHBhaW50KCkgeyB9Ci0gIH0pOwotfSwgJ3Rlc3QgdGhh
dCByZWdpc3RlclBhaW50IHJ1bnMnKTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgQ1NTLnBhaW50
V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3QyJywgY2xhc3MgewotICAgIHBh
aW50KCkgeyB9Ci0gIH0pOwotfSwgJ3Rlc3QgdGhhdCByZWdpc3RlclBhaW50IHJ1bnMgd2l0aG91
dCBpbnB1dFByb3BlcnRpZXMnKTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgQ1NTLnBhaW50V29y
a2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3QzJywgY2xhc3MgewotICAgIHN0YXRp
YyBnZXQgaW5wdXRBcmd1bWVudHMoKSB7IHJldHVybiBbIjxsZW5ndGg+Il07IH0KLSAgICBwYWlu
dCgpIHsgfQotICB9KTsKLX0sICd0ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBydW5zIHdpdGggaW5w
dXRBcmd1bWVudHMnKTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgQ1NTLnBhaW50V29ya2xldEds
b2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3Q0JywgY2xhc3MgewotICAgIHN0YXRpYyBnZXQg
Y29udGV4dE9wdGlvbnMoKSB7IHJldHVybiB7IGFscGhhOiB0cnVlIH07IH0KLSAgICBwYWludCgp
IHsgfQotICB9KTsKLX0sICd0ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBydW5zIHdpdGggY29udGV4
dE9wdGlvbnMnKTsKLQotY2xhc3MgTXlQYWludCB7Ci0gIHBhaW50KCkgeyB9Ci19Ci0KLXRlc3Qo
ZnVuY3Rpb24oKSB7Ci0gIENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50
KCd0ZXN0NScsIE15UGFpbnQpOwotICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdJbnZhbGlkTW9k
aWZpY2F0aW9uRXJyb3InfSwgKCkgPT4gQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lz
dGVyUGFpbnQoJ3Rlc3Q1JywgTXlQYWludCkpOwotICBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUucmVnaXN0ZXJQYWludCgndGVzdDYnLCBjbGFzcyBleHRlbmRzIE15UGFpbnQgeyB9KTsKLX0s
ICd0ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBydW5zIHdpdGggcHJlZGVmaW5lZCBjbGFzcycpOwot
Ci10ZXN0KGZ1bmN0aW9uKCkgewotICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdJbnZhbGlkTW9k
aWZpY2F0aW9uRXJyb3InfSwgKCkgPT4gQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lz
dGVyUGFpbnQoJ3Rlc3Q2JywgJ3Rlc3QnKSk7Ci0gIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJv
cigpLCAoKSA9PiBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgndGVz
dDcnKSk7Ci0gIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBDU1MucGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgndGVzdDgnLCBbXSkpOwotICBhc3NlcnRf
dGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3Bl
LnJlZ2lzdGVyUGFpbnQoJ3Rlc3Q5Jywge30pKTsKLSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVy
cm9yKCksICgpID0+IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCd0
ZXN0MTAnLCA1KSk7Ci0gIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBDU1Mu
cGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgnJywgNSkpOwotfSwgJ3Rlc3Qg
dGhhdCByZWdpc3RlclBhaW50IGFjY2VwdHMgb25seSBhIHN0cmluZyBhbmQgYSBjbGFzcyBjb25z
dHJ1Y3RvcicpOwotCiB0ZXN0KGZ1bmN0aW9uKCkgewogICBhc3NlcnRfZXF1YWxzKGdldENvbXB1
dGVkU3R5bGUocGFpbnQpLmdldFByb3BlcnR5VmFsdWUoImJhY2tncm91bmQtaW1hZ2UiKSwgInBh
aW50KG15LXBhaW50KSIpOwogfSwgJ3Rlc3QgdGhhdCB0ZXN0IGRpdiBoYXMgcGFpbnQoKSB2YWx1
ZScpOwotCi1sZXQgcGFpbnRfY2FsbGVkX3Rlc3QgPSBhc3luY190ZXN0KCd0ZXN0IHRoYXQgdGVz
dCBkaXYgcGFpbnQgY2FsbGJhY2sgZ2V0cyBjYWxsZWQnKTsKLXBhaW50X2NhbGxlZF90ZXN0LnN0
ZXAoZnVuY3Rpb24oKSB7Ci0gIENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBh
aW50KCdteS1wYWludCcsIGNsYXNzIHsKLSAgICBwYWludChjdHgsIGdlb20sIHByb3BlcnRpZXMp
IHsKLSAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKXsKLSAgICAgICAgZm9yICh2YXIg
aiA9IDA7IGogPCA2OyBqKyspewotICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSAncmdiKCcgKyBN
YXRoLmZsb29yKDI1NSAtIDQyLjUgKiBpKSArICcsJyArCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICBNYXRoLmZsb29yKDI1NSAtIDQyLjUgKiBqKSArICcsMCknOwotICAgICAgICAgIGN0eC5m
aWxsUmVjdChqICogMjUsIGkgKiAyNSwgMjUsIDI1KTsKLSAgICAgICAgfQotICAgICAgfQotICAg
ICAgcGFpbnRfY2FsbGVkX3Rlc3QuZG9uZSgpOwotICAgIH0KLSAgfSk7Ci19KTsKLQogPC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVnaXN0
ZXJQYWludEJpbmRpbmdzLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0
b20tcGFpbnQvcmVnaXN0ZXJQYWludEJpbmRpbmdzLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGI0MmI2MmRhMTNlZGE4MTk2MTBiMzE5N2I0ZTQ1YTU0NzNiZGNmMwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9yZWdpc3RlclBhaW50QmluZGlu
Z3MtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDE2IEBACis8IURPQ1RZUEUgaHRtbD48IS0tIHdl
YmtpdC10ZXN0LXJ1bm5lciBbIGV4cGVyaW1lbnRhbDpDU1NQYWludGluZ0FQSUVuYWJsZWQ9dHJ1
ZSBdIC0tPgorCis8Y2FudmFzIGlkPSJwYWludCIgd2lkdGg9IjE1MHB4IiBoZWlnaHQ9IjE1MHB4
IiA+PC9jYW52YXM+CisKKzxzY3JpcHQgaWQ9ImNvZGUiPgordmFyIGNhbnZhcyA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdwYWludCcpOwordmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcy
ZCcpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKyl7CisgIGZvciAodmFyIGogPSAwOyBq
IDwgNjsgaisrKXsKKyAgICBjdHguZmlsbFN0eWxlID0gJ3JnYignICsgTWF0aC5mbG9vcigyNTUg
LSA0Mi41ICogaSkgKyAnLCcgKworICAgICAgICAgICAgICAgICAgICAgTWF0aC5mbG9vcigyNTUg
LSA0Mi41ICogaikgKyAnLDApJzsKKyAgICBjdHguZmlsbFJlY3QoaiAqIDI1LCBpICogMjUsIDI1
LCAyNSk7CisgIH0KK30KKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9j
c3MtY3VzdG9tLXBhaW50L3JlZ2lzdGVyUGFpbnRCaW5kaW5ncy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVnaXN0ZXJQYWludEJpbmRpbmdzLWV4cGVj
dGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzAxNDMxNTJiZDg2YzlkYjBk
OTcyOTI0MjJkNWI4YWY4OGE1MTA2Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVnaXN0ZXJQ
YWludEJpbmRpbmdzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAK
LQotUEFTUyByZWdpc3RlclBhaW50IG11c3QgYmUgYSBtZXRob2QgCi1QQVNTIG11c3QgZ2V0ICJw
cm90b3R5cGUiIHByb3BlcnR5IG9mIHRoZSBjb25zdHJ1Y3RvciAKLVBBU1MgbXVzdCByZXRocm93
IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgZ2V0dGluZyAiaW5wdXRQcm9wZXJ0aWVzIiBwcm9w
ZXJ0eSBvZiB0aGUgY29uc3RydWN0b3IgCi1QQVNTIG11c3QgcmV0aHJvdyBhbiBleGNlcHRpb24g
dGhyb3duIHdoaWxlIGdldHRpbmcgInByb3RvdHlwZSIgcHJvcGVydHkgb2YgdGhlIGNvbnN0cnVj
dG9yIAotUEFTUyBtdXN0IHRocm93IHdoZW4gInByb3RvdHlwZSIgcHJvcGVydHkgb2YgdGhlIGNv
bnN0cnVjdG9yIGlzIG5vdCBhbiBvYmplY3QgCi1QQVNTIG11c3QgZ2V0IHBhaW50IGNhbGxiYWNr
IG9mIHRoZSBjb25zdHJ1Y3RvciBwcm90b3R5cGUgCi1QQVNTIG11c3QgcmV0aHJvdyBhbiBleGNl
cHRpb24gdGhyb3duIHdoaWxlIGdldHRpbmcgcGFpbnQgY2FsbGJhY2sgb24gdGhlIGNvbnN0cnVj
dG9yIHByb3RvdHlwZSAKLVBBU1MgbXVzdCByZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hp
bGUgY29udmVydGluZyBwYWludCBjYWxsYmFjayB2YWx1ZSB0byBGdW5jdGlvbiBjYWxsYmFjayB0
eXBlIAotUEFTUyBtdXN0IHJldGhyb3cgYW4gZXhjZXB0aW9uIHRocm93biB3aGlsZSBjb252ZXJ0
aW5nIHRoZSB2YWx1ZSBvZiBpbnB1dEFyZ3VtZW50cyB0byBzZXF1ZW5jZTxET01TdHJpbmc+IAot
UEFTUyBtdXN0IHJldGhyb3cgYW4gZXhjZXB0aW9uIHRocm93biB3aGlsZSBpdGVyYXRpbmcgb3Zl
ciBpbnB1dEFyZ3VtZW50cyB0byBzZXF1ZW5jZTxET01TdHJpbmc+IAotUEFTUyBtdXN0IHJldGhy
b3cgYW4gZXhjZXB0aW9uIHRocm93biB3aGlsZSByZXRyaWV2aW5nIFN5bWJvbC5pdGVyYXRvciBv
biBpbnB1dEFyZ3VtZW50cyAKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3Vz
dG9tLXBhaW50L3JlZ2lzdGVyUGFpbnRCaW5kaW5ncy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9j
c3MtY3VzdG9tLXBhaW50L3JlZ2lzdGVyUGFpbnRCaW5kaW5ncy5odG1sCmluZGV4IGRjOTAyYzRj
ZDY1OTEwZDViMThjYWUxNTRlZjMzOGNhOTg5OGJjZGMuLmZjMTNlYjliYTQ1NjUzOWM5NGY0ZjYy
NjI4NDUxY2RkODQ1ZjM0YjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3Rv
bS1wYWludC9yZWdpc3RlclBhaW50QmluZGluZ3MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy1jdXN0b20tcGFpbnQvcmVnaXN0ZXJQYWludEJpbmRpbmdzLmh0bWwKQEAgLTIsMTcgKzIs
NjQgQEAKIDxtZXRhIG5hbWU9ImF1dGhvciIgdGl0bGU9Ikp1c3RpbiBNaWNoYXVkIiBocmVmPSJt
YWlsdG86anVzdGluX21pY2hhdWRAd2Via2l0Lm9yZyI+CiA8bWV0YSBuYW1lPSJhc3NlcnQiIGNv
bnRlbnQ9InJlZ2lzdGVyUGFpbnQgYWNjZXNzZXMgYXJndW1lbnRzIGluIHRoZSBjb3JyZWN0IG9y
ZGVyIj4KIDxsaW5rIHJlbD0iaGVscCIgY29udGVudD0iaHR0cHM6Ly9kcmFmdHMuY3NzLWhvdWRp
bmkub3JnL2Nzcy1wYWludC1hcGktMS8iPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKworPHN0eWxlPgorICAjcGFpbnQgewor
ICAgIGJhY2tncm91bmQtaW1hZ2U6IHBhaW50KG15LXBhaW50KTsKKyAgICB3aWR0aDogMTUwcHg7
CisgICAgaGVpZ2h0OiAxNTBweDsKKyAgfQorPC9zdHlsZT4KKworPGRpdiBpZD0icGFpbnQiPjwv
ZGl2PgorCis8c2NyaXB0IGlkPSJjb2RlIiB0eXBlPSJ0ZXh0L3dvcmtsZXQiPgogY2xhc3MgTXlQ
YWludCB7CiAgIHBhaW50KCkgeyB9CiB9CiAKLXRlc3QoZnVuY3Rpb24gKCkgewotICAgIGFzc2Vy
dF90cnVlKCdyZWdpc3RlclBhaW50JyBpbiBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuX19w
cm90b19fLCAnInJlZ2lzdGVyUGFpbnQiIGV4aXN0cyBvbiBwcm90b3R5cGUnKTsKLSAgICBhc3Nl
cnRfdHJ1ZSgncmVnaXN0ZXJQYWludCcgaW4gQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLCAn
InJlZ2lzdGVyUGFpbnQiIGV4aXN0cyBvbiB3aW5kb3cnKTsKLX0sICdyZWdpc3RlclBhaW50IG11
c3QgYmUgYSBtZXRob2QnKTsKK3Rlc3QoZnVuY3Rpb24oKSB7CisgIHJlZ2lzdGVyUGFpbnQoJ2Jh
c2ljMScsIGNsYXNzIHsKKyAgICBzdGF0aWMgZ2V0IGlucHV0UHJvcGVydGllcygpIHsgcmV0dXJu
IFsiLS10ZXN0Il07IH0KKyAgICBwYWludCgpIHsgfQorICB9KTsKK30sICd0ZXN0IHRoYXQgcmVn
aXN0ZXJQYWludCBydW5zJyk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgIHJlZ2lzdGVyUGFpbnQo
J2Jhc2ljMicsIGNsYXNzIHsKKyAgICBwYWludCgpIHsgfQorICB9KTsKK30sICd0ZXN0IHRoYXQg
cmVnaXN0ZXJQYWludCBydW5zIHdpdGhvdXQgaW5wdXRQcm9wZXJ0aWVzJyk7CisKK3Rlc3QoZnVu
Y3Rpb24oKSB7CisgIHJlZ2lzdGVyUGFpbnQoJ2Jhc2ljMycsIGNsYXNzIHsKKyAgICBzdGF0aWMg
Z2V0IGlucHV0QXJndW1lbnRzKCkgeyByZXR1cm4gWyI8bGVuZ3RoPiJdOyB9CisgICAgcGFpbnQo
KSB7IH0KKyAgfSk7Cit9LCAndGVzdCB0aGF0IHJlZ2lzdGVyUGFpbnQgcnVucyB3aXRoIGlucHV0
QXJndW1lbnRzJyk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgIHJlZ2lzdGVyUGFpbnQoJ2Jhc2lj
NCcsIGNsYXNzIHsKKyAgICBzdGF0aWMgZ2V0IGNvbnRleHRPcHRpb25zKCkgeyByZXR1cm4geyBh
bHBoYTogdHJ1ZSB9OyB9CisgICAgcGFpbnQoKSB7IH0KKyAgfSk7Cit9LCAndGVzdCB0aGF0IHJl
Z2lzdGVyUGFpbnQgcnVucyB3aXRoIGNvbnRleHRPcHRpb25zJyk7CisKK3Rlc3QoZnVuY3Rpb24o
KSB7CisgIHJlZ2lzdGVyUGFpbnQoJ2Jhc2ljNScsIE15UGFpbnQpOworICBhc3NlcnRfdGhyb3dz
KHsnbmFtZSc6ICdJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3InfSwgKCkgPT4gcmVnaXN0ZXJQYWlu
dCgnYmFzaWM1JywgTXlQYWludCkpOworICByZWdpc3RlclBhaW50KCdiYXNpYzYnLCBjbGFzcyBl
eHRlbmRzIE15UGFpbnQgeyB9KTsKK30sICd0ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBydW5zIHdp
dGggcHJlZGVmaW5lZCBjbGFzcycpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICBhc3NlcnRfdGhy
b3dzKHsnbmFtZSc6ICdJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3InfSwgKCkgPT4gcmVnaXN0ZXJQ
YWludCgnYmFzaWM2JywgJ3Rlc3QnKSk7CisgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigp
LCAoKSA9PiByZWdpc3RlclBhaW50KCdiYXNpYzgnKSk7CisgIGFzc2VydF90aHJvd3MobmV3IFR5
cGVFcnJvcigpLCAoKSA9PiByZWdpc3RlclBhaW50KCdiYXNpYzknLCBbXSkpOworICBhc3NlcnRf
dGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gcmVnaXN0ZXJQYWludCgnYmFzaWMxMCcsIHt9
KSk7CisgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiByZWdpc3RlclBhaW50
KCdiYXNpYzExJywgNSkpOworICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4g
cmVnaXN0ZXJQYWludCgnJywgNSkpOworfSwgJ3Rlc3QgdGhhdCByZWdpc3RlclBhaW50IGFjY2Vw
dHMgb25seSBhIHN0cmluZyBhbmQgYSBjbGFzcyBjb25zdHJ1Y3RvcicpOwogCiB0ZXN0KGZ1bmN0
aW9uICgpIHsKICAgICBjb25zdCBjYWxscyA9IFtdOwpAQCAtMjIsNyArNjksNyBAQCB0ZXN0KGZ1
bmN0aW9uICgpIHsKICAgICAgICAgICAgIHJldHVybiB0YXJnZXRbbmFtZV07CiAgICAgICAgIH0K
ICAgICB9KTsKLSAgICBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgn
dGVzdC1wcm90bycsIHByb3h5KTsKKyAgICByZWdpc3RlclBhaW50KCd0ZXN0LXByb3RvJywgcHJv
eHkpOwogICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2FsbHMsIFsiaW5wdXRQcm9wZXJ0aWVzIiwg
ImlucHV0QXJndW1lbnRzIiwgImNvbnRleHRPcHRpb25zIiwgInByb3RvdHlwZSJdKTsKIH0sICdt
dXN0IGdldCAicHJvdG90eXBlIiBwcm9wZXJ0eSBvZiB0aGUgY29uc3RydWN0b3InKTsKIApAQCAt
MzYsNyArODMsNyBAQCB0ZXN0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIHJldHVybiB0YXJn
ZXRbbmFtZV07CiAgICAgICAgIH0KICAgICB9KTsKLSAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6
ICdleHBlY3RlZEVycm9yJ30sIGZ1bmN0aW9uICgpIHsgQ1NTLnBhaW50V29ya2xldEdsb2JhbFNj
b3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3QtcmV0aHJvdy1pbnB1dFByb3BlcnRpZXMwJywgcHJveHkp
OyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdleHBlY3RlZEVycm9yJ30sIGZ1bmN0
aW9uICgpIHsgcmVnaXN0ZXJQYWludCgndGVzdC1yZXRocm93LWlucHV0UHJvcGVydGllczAnLCBw
cm94eSk7IH0pOwogfSwgJ211c3QgcmV0aHJvdyBhbiBleGNlcHRpb24gdGhyb3duIHdoaWxlIGdl
dHRpbmcgImlucHV0UHJvcGVydGllcyIgcHJvcGVydHkgb2YgdGhlIGNvbnN0cnVjdG9yJyk7CiAK
IHRlc3QoZnVuY3Rpb24gKCkgewpAQCAtNDksNyArOTYsNyBAQCB0ZXN0KGZ1bmN0aW9uICgpIHsK
ICAgICAgICAgICAgIHJldHVybiB0YXJnZXRbbmFtZV07CiAgICAgICAgIH0KICAgICB9KTsKLSAg
ICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdleHBlY3RlZEVycm9yJ30sIGZ1bmN0aW9uICgpIHsg
Q1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3QtcmV0aHJvdy1w
cm90bycsIHByb3h5KTsgfSk7CisgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnZXhwZWN0ZWRF
cnJvcid9LCBmdW5jdGlvbiAoKSB7IHJlZ2lzdGVyUGFpbnQoJ3Rlc3QtcmV0aHJvdy1wcm90bycs
IHByb3h5KTsgfSk7CiB9LCAnbXVzdCByZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUg
Z2V0dGluZyAicHJvdG90eXBlIiBwcm9wZXJ0eSBvZiB0aGUgY29uc3RydWN0b3InKTsKIAogdGVz
dChmdW5jdGlvbiAoKSB7CkBAIC02MywxNiArMTEwLDE2IEBAIHRlc3QoZnVuY3Rpb24gKCkgewog
ICAgIH0pOwogCiAgICAgcmV0dXJuZWRWYWx1ZSA9IG51bGw7Ci0gICAgYXNzZXJ0X3Rocm93cyh7
J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgQ1NTLnBhaW50V29ya2xldEdsb2Jh
bFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3QtcmV0aHJvdy1wcm90by1ub29iajEnLCBwcm94eSk7
IH0sCisgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9uICgp
IHsgcmVnaXN0ZXJQYWludCgndGVzdC1yZXRocm93LXByb3RvLW5vb2JqMScsIHByb3h5KTsgfSwK
ICAgICAgICAgJ211c3QgdGhyb3cgd2hlbiAicHJvdG90eXBlIiBwcm9wZXJ0eSBvZiB0aGUgY29u
c3RydWN0b3IgaXMgbnVsbCcpOwogICAgIHJldHVybmVkVmFsdWUgPSB1bmRlZmluZWQ7Ci0gICAg
YXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgQ1NTLnBh
aW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3QtcmV0aHJvdy1wcm90by1u
b29iajInLCBwcm94eSk7IH0sCisgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnVHlwZUVycm9y
J30sIGZ1bmN0aW9uICgpIHsgcmVnaXN0ZXJQYWludCgndGVzdC1yZXRocm93LXByb3RvLW5vb2Jq
MicsIHByb3h5KTsgfSwKICAgICAgICAgJ211c3QgdGhyb3cgd2hlbiAicHJvdG90eXBlIiBwcm9w
ZXJ0eSBvZiB0aGUgY29uc3RydWN0b3IgaXMgdW5kZWZpbmVkJyk7CiAgICAgcmV0dXJuZWRWYWx1
ZSA9ICdoZWxsbyc7Ci0gICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1
bmN0aW9uICgpIHsgQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rl
c3QtcmV0aHJvdy1wcm90by1ub29iajMnLCBwcm94eSk7OyB9LAorICAgIGFzc2VydF90aHJvd3Mo
eyduYW1lJzogJ1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IHJlZ2lzdGVyUGFpbnQoJ3Rlc3Qt
cmV0aHJvdy1wcm90by1ub29iajMnLCBwcm94eSk7OyB9LAogICAgICAgICAnbXVzdCB0aHJvdyB3
aGVuICJwcm90b3R5cGUiIHByb3BlcnR5IG9mIHRoZSBjb25zdHJ1Y3RvciBpcyBhIHN0cmluZycp
OwogICAgIHJldHVybmVkVmFsdWUgPSAxOwotICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1R5
cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdp
c3RlclBhaW50KCd0ZXN0LXJldGhyb3ctcHJvdG8tbm9vYmo0JywgcHJveHkpOzsgfSwKKyAgICBh
c3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyByZWdpc3Rl
clBhaW50KCd0ZXN0LXJldGhyb3ctcHJvdG8tbm9vYmo0JywgcHJveHkpOzsgfSwKICAgICAgICAg
J211c3QgdGhyb3cgd2hlbiAicHJvdG90eXBlIiBwcm9wZXJ0eSBvZiB0aGUgY29uc3RydWN0b3Ig
aXMgYSBudW1iZXInKTsKIAogfSwgJ211c3QgdGhyb3cgd2hlbiAicHJvdG90eXBlIiBwcm9wZXJ0
eSBvZiB0aGUgY29uc3RydWN0b3IgaXMgbm90IGFuIG9iamVjdCcpOwpAQCAtODcsNyArMTM0LDcg
QEAgdGVzdChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0W25hbWVdOwog
ICAgICAgICB9CiAgICAgfSk7Ci0gICAgQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lz
dGVyUGFpbnQoJ2NhbGxiYWNrcycsIGNvbnN0cnVjdG9yKTsKKyAgICByZWdpc3RlclBhaW50KCdj
YWxsYmFja3MnLCBjb25zdHJ1Y3Rvcik7CiAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjYWxscywg
WydwYWludCddKTsKIH0sICdtdXN0IGdldCBwYWludCBjYWxsYmFjayBvZiB0aGUgY29uc3RydWN0
b3IgcHJvdG90eXBlJyk7CiAKQEAgLTEwMiw3ICsxNDksNyBAQCB0ZXN0KGZ1bmN0aW9uICgpIHsK
ICAgICAgICAgICAgIHJldHVybiB0YXJnZXRbbmFtZV07CiAgICAgICAgIH0KICAgICB9KTsKLSAg
ICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdleHBlY3RlZEVycm9yJ30sIGZ1bmN0aW9uICgpIHsg
Q1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ2NhbGxiYWNrcy10aHJv
dycsIGNvbnN0cnVjdG9yKTsgfSk7CisgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnZXhwZWN0
ZWRFcnJvcid9LCBmdW5jdGlvbiAoKSB7IHJlZ2lzdGVyUGFpbnQoJ2NhbGxiYWNrcy10aHJvdycs
IGNvbnN0cnVjdG9yKTsgfSk7CiAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjYWxscywgWydwYWlu
dCddKTsKIH0sICdtdXN0IHJldGhyb3cgYW4gZXhjZXB0aW9uIHRocm93biB3aGlsZSBnZXR0aW5n
IHBhaW50IGNhbGxiYWNrIG9uIHRoZSBjb25zdHJ1Y3RvciBwcm90b3R5cGUnKTsKIApAQCAtMTE3
LDcgKzE2NCw3IEBAIHRlc3QoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgcmV0dXJuIHRhcmdl
dFtuYW1lXTsKICAgICAgICAgfQogICAgIH0pOwotICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzog
J1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5y
ZWdpc3RlclBhaW50KCdjYWxsYmFja3MtdGhyb3cyJywgY29uc3RydWN0b3IpOyB9KTsKKyAgICBh
c3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyByZWdpc3Rl
clBhaW50KCdjYWxsYmFja3MtdGhyb3cyJywgY29uc3RydWN0b3IpOyB9KTsKICAgICBhc3NlcnRf
YXJyYXlfZXF1YWxzKGNhbGxzLCBbJ3BhaW50J10pOwogfSwgJ211c3QgcmV0aHJvdyBhbiBleGNl
cHRpb24gdGhyb3duIHdoaWxlIGNvbnZlcnRpbmcgcGFpbnQgY2FsbGJhY2sgdmFsdWUgdG8gRnVu
Y3Rpb24gY2FsbGJhY2sgdHlwZScpOwogCkBAIC0xMzEsNyArMTc4LDcgQEAgdGVzdChmdW5jdGlv
biAoKSB7CiAgICAgICAgICAgcmV0dXJuIHRhcmdldFtuYW1lXTsKICAgICAgIH0KICAgfSk7Ci0g
IGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IENTUy5w
YWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCdzZXF1ZW5jZS10aHJvdycsIHBy
b3h5KTsgfSk7CisgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1R5cGVFcnJvcid9LCBmdW5jdGlv
biAoKSB7IHJlZ2lzdGVyUGFpbnQoJ3NlcXVlbmNlLXRocm93JywgcHJveHkpOyB9KTsKICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyhjYWxscywgWyJpbnB1dFByb3BlcnRpZXMiLCAiaW5wdXRBcmd1bWVu
dHMiXSk7CiB9LCAnbXVzdCByZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgY29udmVy
dGluZyB0aGUgdmFsdWUgb2YgaW5wdXRBcmd1bWVudHMgdG8gc2VxdWVuY2U8RE9NU3RyaW5nPicp
OwogCkBAIC0xNDEsMTIgKzE4OCwzNiBAQCB0ZXN0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgeWll
bGQgJzxsZW5ndGg+JzsKICAgICAgICAgdGhyb3cge25hbWU6ICdTb21lRXJyb3InfTsKICAgICB9
fTsKLSAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdTb21lRXJyb3InfSwgZnVuY3Rpb24gKCkg
eyBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgnc2VxdWVuY2UtdGhy
b3cyJywgY29uc3RydWN0b3IpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdTb21l
RXJyb3InfSwgZnVuY3Rpb24gKCkgeyByZWdpc3RlclBhaW50KCdzZXF1ZW5jZS10aHJvdzInLCBj
b25zdHJ1Y3Rvcik7IH0pOwogfSwgJ211c3QgcmV0aHJvdyBhbiBleGNlcHRpb24gdGhyb3duIHdo
aWxlIGl0ZXJhdGluZyBvdmVyIGlucHV0QXJndW1lbnRzIHRvIHNlcXVlbmNlPERPTVN0cmluZz4n
KTsKIAogdGVzdChmdW5jdGlvbiAoKSB7CiAgICAgY29uc3QgY29uc3RydWN0b3IgPSBmdW5jdGlv
biAoKSB7fQogICAgIGNvbnN0cnVjdG9yLmlucHV0QXJndW1lbnRzID0ge1tTeW1ib2wuaXRlcmF0
b3JdOiAxfTsKLSAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rp
b24gKCkgeyBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgnc3ltYm9s
LWl0ZXJhdG9yLXRocm93MicsIGNvbnN0cnVjdG9yKTsgfSk7CisgICAgYXNzZXJ0X3Rocm93cyh7
J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgcmVnaXN0ZXJQYWludCgnc3ltYm9s
LWl0ZXJhdG9yLXRocm93MicsIGNvbnN0cnVjdG9yKTsgfSk7CiB9LCAnbXVzdCByZXRocm93IGFu
IGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgcmV0cmlldmluZyBTeW1ib2wuaXRlcmF0b3Igb24gaW5w
dXRBcmd1bWVudHMnKTsKKworYXNzZXJ0X3RydWUoUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaGFz
UnVuQVRlc3QpOworaWYgKFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmVycm9ycykgeworICBjb25z
b2xlLmxvZygiVGhlIGZvbGxvd2luZyAoIiArIFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmVycm9y
cy5sZW5ndGggKyAiKSB0ZXN0cyBmYWlsZWQ6ICIpCisgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5n
aWZ5KFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmVycm9ycykpOworICBhc3NlcnRfdHJ1ZShmYWxz
ZSk7Cit9CisKK2NsYXNzIE15UGFpbnQyIHsKKyAgcGFpbnQoY3R4LCBnZW9tLCBwcm9wZXJ0aWVz
KSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspeworICAgICAgZm9yICh2YXIgaiA9
IDA7IGogPCA2OyBqKyspeworICAgICAgICBjdHguZmlsbFN0eWxlID0gJ3JnYignICsgTWF0aC5m
bG9vcigyNTUgLSA0Mi41ICogaSkgKyAnLCcgKworICAgICAgICAgICAgICAgICAgICAgICAgIE1h
dGguZmxvb3IoMjU1IC0gNDIuNSAqIGopICsgJywwKSc7CisgICAgICAgIGN0eC5maWxsUmVjdChq
ICogMjUsIGkgKiAyNSwgMjUsIDI1KTsKKyAgICAgIH0KKyAgICB9CisgIH0KK30KK3JlZ2lzdGVy
UGFpbnQoJ215LXBhaW50JywgTXlQYWludDIpOworPC9zY3JpcHQ+CisKKzxzY3JpcHQ+CisgIGlt
cG9ydFdvcmtsZXQoQ1NTLnBhaW50V29ya2xldCwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Nv
ZGUnKS50ZXh0Q29udGVudCk7CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvY3NzLWN1c3RvbS1wYWludC9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mtd29ya2xldC5qcyBiL0xh
eW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mtd29y
a2xldC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40NWMzZTc0ZWU2YzEzMTQxOWMxNjg5ZWU4OWQwMWE0MWFhNzAy
ZWNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50
L3Jlc291cmNlcy90ZXN0aGFybmVzcy13b3JrbGV0LmpzCkBAIC0wLDAgKzEsNzM5IEBACisvLyBU
aGVzZSBhcmUgaGVscGVycyB0byBiZSBldmFsdWF0ZWQgaW5zaWRlIGEgd29ya2xldAorLy8gVGhl
eSBhcmUgbW9zdGx5IGZyb20gdGhlIHdwdCB0ZXN0aGFybmVzcy5qcy4KKworLyoKKyAqIENvbnZl
cnQgYSB2YWx1ZSB0byBhIG5pY2UsIGh1bWFuLXJlYWRhYmxlIHN0cmluZworICovCitmdW5jdGlv
biBmb3JtYXRfdmFsdWUodmFsLCBzZWVuKQoreworICAgIGlmICghc2VlbikgeworICAgICAgICBz
ZWVuID0gW107CisgICAgfQorICAgIGlmICh0eXBlb2YgdmFsID09PSAib2JqZWN0IiAmJiB2YWwg
IT09IG51bGwpIHsKKyAgICAgICAgaWYgKHNlZW4uaW5kZXhPZih2YWwpID49IDApIHsKKyAgICAg
ICAgICAgIHJldHVybiAiWy4uLl0iOworICAgICAgICB9CisgICAgICAgIHNlZW4ucHVzaCh2YWwp
OworICAgIH0KKyAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWwpKSB7CisgICAgICAgIHJldHVybiAi
WyIgKyB2YWwubWFwKGZ1bmN0aW9uKHgpIHtyZXR1cm4gZm9ybWF0X3ZhbHVlKHgsIHNlZW4pO30p
LmpvaW4oIiwgIikgKyAiXSI7CisgICAgfQorCisgICAgc3dpdGNoICh0eXBlb2YgdmFsKSB7Cisg
ICAgY2FzZSAic3RyaW5nIjoKKyAgICAgICAgdmFsID0gdmFsLnJlcGxhY2UoIlxcIiwgIlxcXFwi
KTsKKyAgICAgICAgZm9yICh2YXIgcCBpbiByZXBsYWNlbWVudHMpIHsKKyAgICAgICAgICAgIHZh
ciByZXBsYWNlID0gIlxcIiArIHJlcGxhY2VtZW50c1twXTsKKyAgICAgICAgICAgIHZhbCA9IHZh
bC5yZXBsYWNlKFJlZ0V4cChTdHJpbmcuZnJvbUNoYXJDb2RlKHApLCAiZyIpLCByZXBsYWNlKTsK
KyAgICAgICAgfQorICAgICAgICByZXR1cm4gJyInICsgdmFsLnJlcGxhY2UoLyIvZywgJ1xcIicp
ICsgJyInOworICAgIGNhc2UgImJvb2xlYW4iOgorICAgIGNhc2UgInVuZGVmaW5lZCI6CisgICAg
ICAgIHJldHVybiBTdHJpbmcodmFsKTsKKyAgICBjYXNlICJudW1iZXIiOgorICAgICAgICAvLyBJ
biBKYXZhU2NyaXB0LCAtMCA9PT0gMCBhbmQgU3RyaW5nKC0wKSA9PSAiMCIsIHNvIHdlIGhhdmUg
dG8KKyAgICAgICAgLy8gc3BlY2lhbC1jYXNlLgorICAgICAgICBpZiAodmFsID09PSAtMCAmJiAx
L3ZhbCA9PT0gLUluZmluaXR5KSB7CisgICAgICAgICAgICByZXR1cm4gIi0wIjsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gU3RyaW5nKHZhbCk7CisgICAgY2FzZSAib2JqZWN0IjoKKyAgICAg
ICAgaWYgKHZhbCA9PT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuICJudWxsIjsKKyAgICAg
ICAgfQorCisgICAgICAgIC8vIFNwZWNpYWwtY2FzZSBOb2RlIG9iamVjdHMsIHNpbmNlIHRob3Nl
IGNvbWUgdXAgYSBsb3QgaW4gbXkgdGVzdHMuICBJCisgICAgICAgIC8vIGlnbm9yZSBuYW1lc3Bh
Y2VzLgorICAgICAgICBpZiAoaXNfbm9kZSh2YWwpKSB7CisgICAgICAgICAgICBzd2l0Y2ggKHZh
bC5ub2RlVHlwZSkgeworICAgICAgICAgICAgY2FzZSBOb2RlLkVMRU1FTlRfTk9ERToKKyAgICAg
ICAgICAgICAgICB2YXIgcmV0ID0gIjwiICsgdmFsLmxvY2FsTmFtZTsKKyAgICAgICAgICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbC5hdHRyaWJ1dGVzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICAgICAgICAgICAgICAgIHJldCArPSAiICIgKyB2YWwuYXR0cmlidXRlc1tpXS5uYW1lICsgJz0i
JyArIHZhbC5hdHRyaWJ1dGVzW2ldLnZhbHVlICsgJyInOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICByZXQgKz0gIj4iICsgdmFsLmlubmVySFRNTCArICI8LyIgKyB2YWwubG9j
YWxOYW1lICsgIj4iOworICAgICAgICAgICAgICAgIHJldHVybiAiRWxlbWVudCBub2RlICIgKyB0
cnVuY2F0ZShyZXQsIDYwKTsKKyAgICAgICAgICAgIGNhc2UgTm9kZS5URVhUX05PREU6CisgICAg
ICAgICAgICAgICAgcmV0dXJuICdUZXh0IG5vZGUgIicgKyB0cnVuY2F0ZSh2YWwuZGF0YSwgNjAp
ICsgJyInOworICAgICAgICAgICAgY2FzZSBOb2RlLlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9E
RToKKyAgICAgICAgICAgICAgICByZXR1cm4gIlByb2Nlc3NpbmdJbnN0cnVjdGlvbiBub2RlIHdp
dGggdGFyZ2V0ICIgKyBmb3JtYXRfdmFsdWUodHJ1bmNhdGUodmFsLnRhcmdldCwgNjApKSArICIg
YW5kIGRhdGEgIiArIGZvcm1hdF92YWx1ZSh0cnVuY2F0ZSh2YWwuZGF0YSwgNjApKTsKKyAgICAg
ICAgICAgIGNhc2UgTm9kZS5DT01NRU5UX05PREU6CisgICAgICAgICAgICAgICAgcmV0dXJuICJD
b21tZW50IG5vZGUgPCEtLSIgKyB0cnVuY2F0ZSh2YWwuZGF0YSwgNjApICsgIi0tPiI7CisgICAg
ICAgICAgICBjYXNlIE5vZGUuRE9DVU1FTlRfTk9ERToKKyAgICAgICAgICAgICAgICByZXR1cm4g
IkRvY3VtZW50IG5vZGUgd2l0aCAiICsgdmFsLmNoaWxkTm9kZXMubGVuZ3RoICsgKHZhbC5jaGls
ZE5vZGVzLmxlbmd0aCA9PSAxID8gIiBjaGlsZCIgOiAiIGNoaWxkcmVuIik7CisgICAgICAgICAg
ICBjYXNlIE5vZGUuRE9DVU1FTlRfVFlQRV9OT0RFOgorICAgICAgICAgICAgICAgIHJldHVybiAi
RG9jdW1lbnRUeXBlIG5vZGUiOworICAgICAgICAgICAgY2FzZSBOb2RlLkRPQ1VNRU5UX0ZSQUdN
RU5UX05PREU6CisgICAgICAgICAgICAgICAgcmV0dXJuICJEb2N1bWVudEZyYWdtZW50IG5vZGUg
d2l0aCAiICsgdmFsLmNoaWxkTm9kZXMubGVuZ3RoICsgKHZhbC5jaGlsZE5vZGVzLmxlbmd0aCA9
PSAxID8gIiBjaGlsZCIgOiAiIGNoaWxkcmVuIik7CisgICAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgICAgIHJldHVybiAiTm9kZSBvYmplY3Qgb2YgdW5rbm93biB0eXBlIjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgLyogZmFsbHMgdGhyb3VnaCAqLworICAgIGRlZmF1
bHQ6CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gdHlwZW9mIHZhbCArICcgIicg
KyB0cnVuY2F0ZShTdHJpbmcodmFsKSwgMTAwMCkgKyAnIic7CisgICAgICAgIH0gY2F0Y2goZSkg
eworICAgICAgICAgICAgcmV0dXJuICgiW3N0cmluZ2lmeWluZyBvYmplY3QgdGhyZXcgIiArIFN0
cmluZyhlKSArCisgICAgICAgICAgICAgICAgICAgICIgd2l0aCB0eXBlICIgKyBTdHJpbmcodHlw
ZW9mIGUpICsgIl0iKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gaXNfc2luZ2xl
X25vZGUodGVtcGxhdGUpCit7CisgICAgcmV0dXJuIHR5cGVvZiB0ZW1wbGF0ZVswXSA9PT0gInN0
cmluZyI7Cit9CisKK2Z1bmN0aW9uIHN1YnN0aXR1dGUodGVtcGxhdGUsIHN1YnN0aXR1dGlvbnMp
Cit7CisgICAgaWYgKHR5cGVvZiB0ZW1wbGF0ZSA9PT0gImZ1bmN0aW9uIikgeworICAgICAgICB2
YXIgcmVwbGFjZW1lbnQgPSB0ZW1wbGF0ZShzdWJzdGl0dXRpb25zKTsKKyAgICAgICAgaWYgKCFy
ZXBsYWNlbWVudCkgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworICAg
ICAgICByZXR1cm4gc3Vic3RpdHV0ZShyZXBsYWNlbWVudCwgc3Vic3RpdHV0aW9ucyk7CisgICAg
fQorCisgICAgaWYgKGlzX3NpbmdsZV9ub2RlKHRlbXBsYXRlKSkgeworICAgICAgICByZXR1cm4g
c3Vic3RpdHV0ZV9zaW5nbGUodGVtcGxhdGUsIHN1YnN0aXR1dGlvbnMpOworICAgIH0KKworICAg
IHJldHVybiBmaWx0ZXIobWFwKHRlbXBsYXRlLCBmdW5jdGlvbih4KSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBzdWJzdGl0dXRlKHgsIHN1YnN0aXR1dGlvbnMpOworICAgICAg
ICAgICAgICAgICAgICAgIH0pLCBmdW5jdGlvbih4KSB7cmV0dXJuIHggIT09IG51bGw7fSk7Cit9
CisKK2Z1bmN0aW9uIHN1YnN0aXR1dGVfc2luZ2xlKHRlbXBsYXRlLCBzdWJzdGl0dXRpb25zKQor
eworICAgIHZhciBzdWJzdGl0dXRpb25fcmUgPSAvXCRceyhbXiB9XSopXH0vZzsKKworICAgIGZ1
bmN0aW9uIGRvX3N1YnN0aXR1dGlvbihpbnB1dCkgeworICAgICAgICB2YXIgY29tcG9uZW50cyA9
IGlucHV0LnNwbGl0KHN1YnN0aXR1dGlvbl9yZSk7CisgICAgICAgIHZhciBydiA9IFtdOworICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbXBvbmVudHMubGVuZ3RoOyBpICs9IDIpIHsKKyAg
ICAgICAgICAgIHJ2LnB1c2goY29tcG9uZW50c1tpXSk7CisgICAgICAgICAgICBpZiAoY29tcG9u
ZW50c1tpICsgMV0pIHsKKyAgICAgICAgICAgICAgICBydi5wdXNoKFN0cmluZyhzdWJzdGl0dXRp
b25zW2NvbXBvbmVudHNbaSArIDFdXSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIHJldHVybiBydjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdWJzdGl0dXRlX2F0dHJzKGF0
dHJzLCBydikKKyAgICB7CisgICAgICAgIHJ2WzFdID0ge307CisgICAgICAgIGZvciAodmFyIG5h
bWUgaW4gdGVtcGxhdGVbMV0pIHsKKyAgICAgICAgICAgIGlmIChhdHRycy5oYXNPd25Qcm9wZXJ0
eShuYW1lKSkgeworICAgICAgICAgICAgICAgIHZhciBuZXdfbmFtZSA9IGRvX3N1YnN0aXR1dGlv
bihuYW1lKS5qb2luKCIiKTsKKyAgICAgICAgICAgICAgICB2YXIgbmV3X3ZhbHVlID0gZG9fc3Vi
c3RpdHV0aW9uKGF0dHJzW25hbWVdKS5qb2luKCIiKTsKKyAgICAgICAgICAgICAgICBydlsxXVtu
ZXdfbmFtZV0gPSBuZXdfdmFsdWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBmdW5jdGlvbiBzdWJzdGl0dXRlX2NoaWxkcmVuKGNoaWxkcmVuLCBydikKKyAgICB7Cisg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHsKKyAgICAg
ICAgICAgIGlmIChjaGlsZHJlbltpXSBpbnN0YW5jZW9mIE9iamVjdCkgeworICAgICAgICAgICAg
ICAgIHZhciByZXBsYWNlbWVudCA9IHN1YnN0aXR1dGUoY2hpbGRyZW5baV0sIHN1YnN0aXR1dGlv
bnMpOworICAgICAgICAgICAgICAgIGlmIChyZXBsYWNlbWVudCAhPT0gbnVsbCkgeworICAgICAg
ICAgICAgICAgICAgICBpZiAoaXNfc2luZ2xlX25vZGUocmVwbGFjZW1lbnQpKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBydi5wdXNoKHJlcGxhY2VtZW50KTsKKyAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuZChydiwgcmVwbGFjZW1l
bnQpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBleHRlbmQocnYsIGRvX3N1YnN0aXR1dGlvbihT
dHJpbmcoY2hpbGRyZW5baV0pKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIHJ2OworICAgIH0KKworICAgIHZhciBydiA9IFtdOworICAgIHJ2LnB1c2goZG9fc3Vi
c3RpdHV0aW9uKFN0cmluZyh0ZW1wbGF0ZVswXSkpLmpvaW4oIiIpKTsKKworICAgIGlmICh0ZW1w
bGF0ZVswXSA9PT0gInt0ZXh0fSIpIHsKKyAgICAgICAgc3Vic3RpdHV0ZV9jaGlsZHJlbih0ZW1w
bGF0ZS5zbGljZSgxKSwgcnYpOworICAgIH0gZWxzZSB7CisgICAgICAgIHN1YnN0aXR1dGVfYXR0
cnModGVtcGxhdGVbMV0sIHJ2KTsKKyAgICAgICAgc3Vic3RpdHV0ZV9jaGlsZHJlbih0ZW1wbGF0
ZS5zbGljZSgyKSwgcnYpOworICAgIH0KKworICAgIHJldHVybiBydjsKK30KKworZnVuY3Rpb24g
YXNzZXJ0KGV4cGVjdGVkX3RydWUsIGZ1bmN0aW9uX25hbWUsIGRlc2NyaXB0aW9uLCBlcnJvciwg
c3Vic3RpdHV0aW9ucykKK3sKKyAgICBpZiAoZXhwZWN0ZWRfdHJ1ZSAhPT0gdHJ1ZSkgeworICAg
ICAgICB2YXIgbXNnID0gbWFrZV9tZXNzYWdlKGZ1bmN0aW9uX25hbWUsIGRlc2NyaXB0aW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yLCBzdWJzdGl0dXRpb25zKTsKKyAg
ICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkVycm9yKG1zZyk7CisgICAgfQorfQorCitmdW5jdGlv
biBBc3NlcnRpb25FcnJvcihtZXNzYWdlKQoreworICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7
CisgICAgdGhpcy5zdGFjayA9IHRoaXMuZ2V0X3N0YWNrKCk7Cit9CisKK0Fzc2VydGlvbkVycm9y
LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKTsKKworQXNzZXJ0aW9u
RXJyb3IucHJvdG90eXBlLmdldF9zdGFjayA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBzdGFjayA9
IG5ldyBFcnJvcigpLnN0YWNrOworICAgIC8vIElFMTEgZG9lcyBub3QgaW5pdGlhbGl6ZSAnRXJy
b3Iuc3RhY2snIHVudGlsIHRoZSBvYmplY3QgaXMgdGhyb3duLgorICAgIGlmICghc3RhY2spIHsK
KyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigpOworICAgICAgICB9
IGNhdGNoIChlKSB7CisgICAgICAgICAgICBzdGFjayA9IGUuc3RhY2s7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICAvLyAnRXJyb3Iuc3RhY2snIGlzIG5vdCBzdXBwb3J0ZWQgaW4gYWxsIGJyb3dz
ZXJzL3ZlcnNpb25zCisgICAgaWYgKCFzdGFjaykgeworICAgICAgICByZXR1cm4gIihTdGFjayB0
cmFjZSB1bmF2YWlsYWJsZSkiOworICAgIH0KKworICAgIHZhciBsaW5lcyA9IHN0YWNrLnNwbGl0
KCJcbiIpOworCisgICAgLy8gQ3JlYXRlIGEgcGF0dGVybiB0byBtYXRjaCBzdGFjayBmcmFtZXMg
b3JpZ2luYXRpbmcgd2l0aGluIHRlc3RoYXJuZXNzLmpzLiAgVGhlc2UgaW5jbHVkZSB0aGUKKyAg
ICAvLyBzY3JpcHQgVVJMLCBmb2xsb3dlZCBieSB0aGUgbGluZS9jb2wgKGUuZy4sICcvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzOjEyMDoyMScpLgorICAgIC8vIEVzY2FwZSB0aGUgVVJMIHBlciBo
dHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzM1NjE0OTMvaXMtdGhlcmUtYS1yZWdl
eHAtZXNjYXBlLWZ1bmN0aW9uLWluLWphdmFzY3JpcHQKKyAgICAvLyBpbiBjYXNlIGl0IGNvbnRh
aW5zIFJlZ0V4cCBjaGFyYWN0ZXJzLgorICAgIHZhciBzY3JpcHRfdXJsID0gZ2V0X3NjcmlwdF91
cmwoKTsKKyAgICB2YXIgcmVfdGV4dCA9IHNjcmlwdF91cmwgPyBzY3JpcHRfdXJsLnJlcGxhY2Uo
L1stXC9cXF4kKis/LigpfFtcXXt9XS9nLCAnXFwkJicpIDogIlxcYnRlc3RoYXJuZXNzLmpzIjsK
KyAgICB2YXIgcmUgPSBuZXcgUmVnRXhwKHJlX3RleHQgKyAiOlxcZCs6XFxkKyIpOworCisgICAg
Ly8gU29tZSBicm93c2VycyBpbmNsdWRlIGEgcHJlYW1ibGUgdGhhdCBzcGVjaWZpZXMgdGhlIHR5
cGUgb2YgdGhlIGVycm9yIG9iamVjdC4gIFNraXAgdGhpcyBieQorICAgIC8vIGFkdmFuY2luZyB1
bnRpbCB3ZSBmaW5kIHRoZSBmaXJzdCBzdGFjayBmcmFtZSBvcmlnaW5hdGluZyBmcm9tIHRlc3Ro
YXJuZXNzLmpzLgorICAgIHZhciBpID0gMDsKKyAgICB3aGlsZSAoIXJlLnRlc3QobGluZXNbaV0p
ICYmIGkgPCBsaW5lcy5sZW5ndGgpIHsKKyAgICAgICAgaSsrOworICAgIH0KKworICAgIC8vIFRo
ZW4gc2tpcCB0aGUgdG9wIGZyYW1lcyBvcmlnaW5hdGluZyBmcm9tIHRlc3RoYXJuZXNzLmpzIHRv
IGJlZ2luIHRoZSBzdGFjayBhdCB0aGUgdGVzdCBjb2RlLgorICAgIHdoaWxlIChyZS50ZXN0KGxp
bmVzW2ldKSAmJiBpIDwgbGluZXMubGVuZ3RoKSB7CisgICAgICAgIGkrKzsKKyAgICB9CisKKyAg
ICAvLyBQYXJhbm9pZCBjaGVjayB0aGF0IHdlIGRpZG4ndCBza2lwIGFsbCBmcmFtZXMuICBJZiBz
bywgcmV0dXJuIHRoZSBvcmlnaW5hbCBzdGFjayB1bm1vZGlmaWVkLgorICAgIGlmIChpID49IGxp
bmVzLmxlbmd0aCkgeworICAgICAgICByZXR1cm4gc3RhY2s7CisgICAgfQorCisgICAgcmV0dXJu
IGxpbmVzLnNsaWNlKGkpLmpvaW4oIlxuIik7Cit9CisKK2Z1bmN0aW9uIG1ha2VfbWVzc2FnZShm
dW5jdGlvbl9uYW1lLCBkZXNjcmlwdGlvbiwgZXJyb3IsIHN1YnN0aXR1dGlvbnMpCit7CisgICAg
Zm9yICh2YXIgcCBpbiBzdWJzdGl0dXRpb25zKSB7CisgICAgICAgIGlmIChzdWJzdGl0dXRpb25z
Lmhhc093blByb3BlcnR5KHApKSB7CisgICAgICAgICAgICBzdWJzdGl0dXRpb25zW3BdID0gZm9y
bWF0X3ZhbHVlKHN1YnN0aXR1dGlvbnNbcF0pOworICAgICAgICB9CisgICAgfQorICAgIHZhciBu
b2RlX2Zvcm0gPSBzdWJzdGl0dXRlKFsie3RleHR9IiwgIiR7ZnVuY3Rpb25fbmFtZX06ICR7ZGVz
Y3JpcHRpb259IiArIGVycm9yXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJn
ZSh7ZnVuY3Rpb25fbmFtZTpmdW5jdGlvbl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZXNjcmlwdGlvbjooZGVzY3JpcHRpb24/ZGVzY3JpcHRpb24gKyAiICI6
IiIpfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic3RpdHV0aW9u
cykpOworICAgIHJldHVybiBub2RlX2Zvcm0uc2xpY2UoMSkuam9pbigiIik7Cit9CisKK2Z1bmN0
aW9uIGZpbHRlcihhcnJheSwgY2FsbGFibGUsIHRoaXNPYmopIHsKKyAgICB2YXIgcnYgPSBbXTsK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlm
IChhcnJheS5oYXNPd25Qcm9wZXJ0eShpKSkgeworICAgICAgICAgICAgdmFyIHBhc3MgPSBjYWxs
YWJsZS5jYWxsKHRoaXNPYmosIGFycmF5W2ldLCBpLCBhcnJheSk7CisgICAgICAgICAgICBpZiAo
cGFzcykgeworICAgICAgICAgICAgICAgIHJ2LnB1c2goYXJyYXlbaV0pOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBydjsKK30KKworZnVuY3Rpb24gbWFwKGFy
cmF5LCBjYWxsYWJsZSwgdGhpc09iaikKK3sKKyAgICB2YXIgcnYgPSBbXTsKKyAgICBydi5sZW5n
dGggPSBhcnJheS5sZW5ndGg7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7
IGkrKykgeworICAgICAgICBpZiAoYXJyYXkuaGFzT3duUHJvcGVydHkoaSkpIHsKKyAgICAgICAg
ICAgIHJ2W2ldID0gY2FsbGFibGUuY2FsbCh0aGlzT2JqLCBhcnJheVtpXSwgaSwgYXJyYXkpOwor
ICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBydjsKK30KKworZnVuY3Rpb24gZm9yRWFjaChh
cnJheSwgY2FsbGJhY2ssIHRoaXNPYmopCit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJh
eS5sZW5ndGg7IGkrKykgeworICAgICAgICBpZiAoYXJyYXkuaGFzT3duUHJvcGVydHkoaSkpIHsK
KyAgICAgICAgICAgIGNhbGxiYWNrLmNhbGwodGhpc09iaiwgYXJyYXlbaV0sIGksIGFycmF5KTsK
KyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gbWVyZ2UoYSxiKQoreworICAgIHZhciBy
diA9IHt9OworICAgIHZhciBwOworICAgIGZvciAocCBpbiBhKSB7CisgICAgICAgIHJ2W3BdID0g
YVtwXTsKKyAgICB9CisgICAgZm9yIChwIGluIGIpIHsKKyAgICAgICAgcnZbcF0gPSBiW3BdOwor
ICAgIH0KKyAgICByZXR1cm4gcnY7Cit9CisKK2Z1bmN0aW9uIHNhbWVfdmFsdWUoeCwgeSkgewor
ICAgIGlmICh5ICE9PSB5KSB7CisgICAgICAgIC8vTmFOIGNhc2UKKyAgICAgICAgcmV0dXJuIHgg
IT09IHg7CisgICAgfQorICAgIGlmICh4ID09PSAwICYmIHkgPT09IDApIHsKKyAgICAgICAgLy9E
aXN0aW5ndWlzaCArMCBhbmQgLTAKKyAgICAgICAgcmV0dXJuIDEveCA9PT0gMS95OworICAgIH0K
KyAgICByZXR1cm4geCA9PT0geTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X2VxdWFscyhhY3R1YWws
IGV4cGVjdGVkLCBkZXNjcmlwdGlvbikKK3sKKyAgICAgLyoKKyAgICAgICogVGVzdCBpZiB0d28g
cHJpbWl0aXZlcyBhcmUgZXF1YWwgb3IgdHdvIG9iamVjdHMKKyAgICAgICogYXJlIHRoZSBzYW1l
IG9iamVjdAorICAgICAgKi8KKyAgICBpZiAodHlwZW9mIGFjdHVhbCAhPSB0eXBlb2YgZXhwZWN0
ZWQpIHsKKyAgICAgICAgYXNzZXJ0KGZhbHNlLCAiYXNzZXJ0X2VxdWFscyIsIGRlc2NyaXB0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCAoIiArIHR5cGVvZiBleHBlY3RlZCAr
ICIpICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgKCIgKyB0eXBlb2YgYWN0dWFsICsgIikgJHthY3R1YWx9
IiwKKyAgICAgICAgICAgICAgICAgICAgICB7ZXhwZWN0ZWQ6ZXhwZWN0ZWQsIGFjdHVhbDphY3R1
YWx9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhc3NlcnQoc2FtZV92YWx1ZShhY3R1
YWwsIGV4cGVjdGVkKSwgImFzc2VydF9lcXVhbHMiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBn
b3QgJHthY3R1YWx9IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
e2V4cGVjdGVkOmV4cGVjdGVkLCBhY3R1YWw6YWN0dWFsfSk7Cit9CisKK2Z1bmN0aW9uIGFzc2Vy
dF9ub3RfZXF1YWxzKGFjdHVhbCwgZXhwZWN0ZWQsIGRlc2NyaXB0aW9uKQoreworICAgICAvKgor
ICAgICAgKiBUZXN0IGlmIHR3byBwcmltaXRpdmVzIGFyZSB1bmVxdWFsIG9yIHR3byBvYmplY3Rz
CisgICAgICAqIGFyZSBkaWZmZXJlbnQgb2JqZWN0cworICAgICAgKi8KKyAgICBhc3NlcnQoIXNh
bWVfdmFsdWUoYWN0dWFsLCBleHBlY3RlZCksICJhc3NlcnRfbm90X2VxdWFscyIsIGRlc2NyaXB0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdvdCBkaXNh
bGxvd2VkIHZhbHVlICR7YWN0dWFsfSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB7YWN0dWFsOmFjdHVhbH0pOworfQorCitmdW5jdGlvbiBhc3NlcnRfaW5fYXJy
YXkoYWN0dWFsLCBleHBlY3RlZCwgZGVzY3JpcHRpb24pCit7CisgICAgYXNzZXJ0KGV4cGVjdGVk
LmluZGV4T2YoYWN0dWFsKSAhPSAtMSwgImFzc2VydF9pbl9hcnJheSIsIGRlc2NyaXB0aW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSAke2FjdHVh
bH0gbm90IGluIGFycmF5ICR7ZXhwZWN0ZWR9IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB7YWN0dWFsOmFjdHVhbCwgZXhwZWN0ZWQ6ZXhwZWN0ZWR9KTsKK30K
KworZnVuY3Rpb24gYXNzZXJ0X29iamVjdF9lcXVhbHMoYWN0dWFsLCBleHBlY3RlZCwgZGVzY3Jp
cHRpb24pCit7CisgICAgIC8vVGhpcyBuZWVkcyB0byBiZSBpbXByb3ZlZCBhIGdyZWF0IGRlYWwK
KyAgICAgZnVuY3Rpb24gY2hlY2tfZXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgc3RhY2spCisgICAg
IHsKKyAgICAgICAgIHN0YWNrLnB1c2goYWN0dWFsKTsKKworICAgICAgICAgdmFyIHA7CisgICAg
ICAgICBmb3IgKHAgaW4gYWN0dWFsKSB7CisgICAgICAgICAgICAgYXNzZXJ0KGV4cGVjdGVkLmhh
c093blByb3BlcnR5KHApLCAiYXNzZXJ0X29iamVjdF9lcXVhbHMiLCBkZXNjcmlwdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmV4cGVjdGVk
IHByb3BlcnR5ICR7cH0iLCB7cDpwfSk7CisKKyAgICAgICAgICAgICBpZiAodHlwZW9mIGFjdHVh
bFtwXSA9PT0gIm9iamVjdCIgJiYgYWN0dWFsW3BdICE9PSBudWxsKSB7CisgICAgICAgICAgICAg
ICAgIGlmIChzdGFjay5pbmRleE9mKGFjdHVhbFtwXSkgPT09IC0xKSB7CisgICAgICAgICAgICAg
ICAgICAgICBjaGVja19lcXVhbChhY3R1YWxbcF0sIGV4cGVjdGVkW3BdLCBzdGFjayk7CisgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICBh
c3NlcnQoc2FtZV92YWx1ZShhY3R1YWxbcF0sIGV4cGVjdGVkW3BdKSwgImFzc2VydF9vYmplY3Rf
ZXF1YWxzIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAicHJvcGVydHkgJHtwfSBleHBlY3RlZCAke2V4cGVjdGVkfSBnb3Qg
JHthY3R1YWx9IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHtwOnAsIGV4cGVjdGVkOmV4cGVjdGVkLCBhY3R1YWw6YWN0dWFsfSk7CisgICAgICAg
ICAgICAgfQorICAgICAgICAgfQorICAgICAgICAgZm9yIChwIGluIGV4cGVjdGVkKSB7CisgICAg
ICAgICAgICAgYXNzZXJ0KGFjdHVhbC5oYXNPd25Qcm9wZXJ0eShwKSwKKyAgICAgICAgICAgICAg
ICAgICAgImFzc2VydF9vYmplY3RfZXF1YWxzIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAg
ICAgICAgICJleHBlY3RlZCBwcm9wZXJ0eSAke3B9IG1pc3NpbmciLCB7cDpwfSk7CisgICAgICAg
ICB9CisgICAgICAgICBzdGFjay5wb3AoKTsKKyAgICAgfQorICAgICBjaGVja19lcXVhbChhY3R1
YWwsIGV4cGVjdGVkLCBbXSk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9hcnJheV9lcXVhbHMoYWN0
dWFsLCBleHBlY3RlZCwgZGVzY3JpcHRpb24pCit7CisgICAgYXNzZXJ0KGFjdHVhbC5sZW5ndGgg
PT09IGV4cGVjdGVkLmxlbmd0aCwKKyAgICAgICAgICAgImFzc2VydF9hcnJheV9lcXVhbHMiLCBk
ZXNjcmlwdGlvbiwKKyAgICAgICAgICAgImxlbmd0aHMgZGlmZmVyLCBleHBlY3RlZCAke2V4cGVj
dGVkfSBnb3QgJHthY3R1YWx9IiwKKyAgICAgICAgICAge2V4cGVjdGVkOmV4cGVjdGVkLmxlbmd0
aCwgYWN0dWFsOmFjdHVhbC5sZW5ndGh9KTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYWN0
dWFsLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGFzc2VydChhY3R1YWwuaGFzT3duUHJvcGVydHko
aSkgPT09IGV4cGVjdGVkLmhhc093blByb3BlcnR5KGkpLAorICAgICAgICAgICAgICAgImFzc2Vy
dF9hcnJheV9lcXVhbHMiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICJwcm9wZXJ0eSAk
e2l9LCBwcm9wZXJ0eSBleHBlY3RlZCB0byBiZSAke2V4cGVjdGVkfSBidXQgd2FzICR7YWN0dWFs
fSIsCisgICAgICAgICAgICAgICB7aTppLCBleHBlY3RlZDpleHBlY3RlZC5oYXNPd25Qcm9wZXJ0
eShpKSA/ICJwcmVzZW50IiA6ICJtaXNzaW5nIiwKKyAgICAgICAgICAgICAgIGFjdHVhbDphY3R1
YWwuaGFzT3duUHJvcGVydHkoaSkgPyAicHJlc2VudCIgOiAibWlzc2luZyJ9KTsKKyAgICAgICAg
YXNzZXJ0KHNhbWVfdmFsdWUoZXhwZWN0ZWRbaV0sIGFjdHVhbFtpXSksCisgICAgICAgICAgICAg
ICAiYXNzZXJ0X2FycmF5X2VxdWFscyIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgInBy
b3BlcnR5ICR7aX0sIGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9IiwKKyAg
ICAgICAgICAgICAgIHtpOmksIGV4cGVjdGVkOmV4cGVjdGVkW2ldLCBhY3R1YWw6YWN0dWFsW2ld
fSk7CisgICAgfQorfQorCitmdW5jdGlvbiBhc3NlcnRfYXBwcm94X2VxdWFscyhhY3R1YWwsIGV4
cGVjdGVkLCBlcHNpbG9uLCBkZXNjcmlwdGlvbikKK3sKKyAgICAvKgorICAgICAqIFRlc3QgaWYg
dHdvIHByaW1pdGl2ZSBudW1iZXJzIGFyZSBlcXVhbCB3aXRoaW5nICsvLSBlcHNpbG9uCisgICAg
ICovCisgICAgYXNzZXJ0KHR5cGVvZiBhY3R1YWwgPT09ICJudW1iZXIiLAorICAgICAgICAgICAi
YXNzZXJ0X2FwcHJveF9lcXVhbHMiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgImV4cGVjdGVk
IGEgbnVtYmVyIGJ1dCBnb3QgYSAke3R5cGVfYWN0dWFsfSIsCisgICAgICAgICAgIHt0eXBlX2Fj
dHVhbDp0eXBlb2YgYWN0dWFsfSk7CisKKyAgICBhc3NlcnQoTWF0aC5hYnMoYWN0dWFsIC0gZXhw
ZWN0ZWQpIDw9IGVwc2lsb24sCisgICAgICAgICAgICJhc3NlcnRfYXBwcm94X2VxdWFscyIsIGRl
c2NyaXB0aW9uLAorICAgICAgICAgICAiZXhwZWN0ZWQgJHtleHBlY3RlZH0gKy8tICR7ZXBzaWxv
bn0gYnV0IGdvdCAke2FjdHVhbH0iLAorICAgICAgICAgICB7ZXhwZWN0ZWQ6ZXhwZWN0ZWQsIGFj
dHVhbDphY3R1YWwsIGVwc2lsb246ZXBzaWxvbn0pOworfQorCitmdW5jdGlvbiBhc3NlcnRfbGVz
c190aGFuKGFjdHVhbCwgZXhwZWN0ZWQsIGRlc2NyaXB0aW9uKQoreworICAgIC8qCisgICAgICog
VGVzdCBpZiBhIHByaW1pdGl2ZSBudW1iZXIgaXMgbGVzcyB0aGFuIGFub3RoZXIKKyAgICAgKi8K
KyAgICBhc3NlcnQodHlwZW9mIGFjdHVhbCA9PT0gIm51bWJlciIsCisgICAgICAgICAgICJhc3Nl
cnRfbGVzc190aGFuIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICJleHBlY3RlZCBhIG51bWJl
ciBidXQgZ290IGEgJHt0eXBlX2FjdHVhbH0iLAorICAgICAgICAgICB7dHlwZV9hY3R1YWw6dHlw
ZW9mIGFjdHVhbH0pOworCisgICAgYXNzZXJ0KGFjdHVhbCA8IGV4cGVjdGVkLAorICAgICAgICAg
ICAiYXNzZXJ0X2xlc3NfdGhhbiIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAiZXhwZWN0ZWQg
YSBudW1iZXIgbGVzcyB0aGFuICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9IiwKKyAgICAg
ICAgICAge2V4cGVjdGVkOmV4cGVjdGVkLCBhY3R1YWw6YWN0dWFsfSk7Cit9CisKK2Z1bmN0aW9u
IGFzc2VydF9ncmVhdGVyX3RoYW4oYWN0dWFsLCBleHBlY3RlZCwgZGVzY3JpcHRpb24pCit7Cisg
ICAgLyoKKyAgICAgKiBUZXN0IGlmIGEgcHJpbWl0aXZlIG51bWJlciBpcyBncmVhdGVyIHRoYW4g
YW5vdGhlcgorICAgICAqLworICAgIGFzc2VydCh0eXBlb2YgYWN0dWFsID09PSAibnVtYmVyIiwK
KyAgICAgICAgICAgImFzc2VydF9ncmVhdGVyX3RoYW4iLCBkZXNjcmlwdGlvbiwKKyAgICAgICAg
ICAgImV4cGVjdGVkIGEgbnVtYmVyIGJ1dCBnb3QgYSAke3R5cGVfYWN0dWFsfSIsCisgICAgICAg
ICAgIHt0eXBlX2FjdHVhbDp0eXBlb2YgYWN0dWFsfSk7CisKKyAgICBhc3NlcnQoYWN0dWFsID4g
ZXhwZWN0ZWQsCisgICAgICAgICAgICJhc3NlcnRfZ3JlYXRlcl90aGFuIiwgZGVzY3JpcHRpb24s
CisgICAgICAgICAgICJleHBlY3RlZCBhIG51bWJlciBncmVhdGVyIHRoYW4gJHtleHBlY3RlZH0g
YnV0IGdvdCAke2FjdHVhbH0iLAorICAgICAgICAgICB7ZXhwZWN0ZWQ6ZXhwZWN0ZWQsIGFjdHVh
bDphY3R1YWx9KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X2JldHdlZW5fZXhjbHVzaXZlKGFjdHVh
bCwgbG93ZXIsIHVwcGVyLCBkZXNjcmlwdGlvbikKK3sKKyAgICAvKgorICAgICAqIFRlc3QgaWYg
YSBwcmltaXRpdmUgbnVtYmVyIGlzIGJldHdlZW4gdHdvIG90aGVycworICAgICAqLworICAgIGFz
c2VydCh0eXBlb2YgYWN0dWFsID09PSAibnVtYmVyIiwKKyAgICAgICAgICAgImFzc2VydF9iZXR3
ZWVuX2V4Y2x1c2l2ZSIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAiZXhwZWN0ZWQgYSBudW1i
ZXIgYnV0IGdvdCBhICR7dHlwZV9hY3R1YWx9IiwKKyAgICAgICAgICAge3R5cGVfYWN0dWFsOnR5
cGVvZiBhY3R1YWx9KTsKKworICAgIGFzc2VydChhY3R1YWwgPiBsb3dlciAmJiBhY3R1YWwgPCB1
cHBlciwKKyAgICAgICAgICAgImFzc2VydF9iZXR3ZWVuX2V4Y2x1c2l2ZSIsIGRlc2NyaXB0aW9u
LAorICAgICAgICAgICAiZXhwZWN0ZWQgYSBudW1iZXIgZ3JlYXRlciB0aGFuICR7bG93ZXJ9ICIg
KworICAgICAgICAgICAiYW5kIGxlc3MgdGhhbiAke3VwcGVyfSBidXQgZ290ICR7YWN0dWFsfSIs
CisgICAgICAgICAgIHtsb3dlcjpsb3dlciwgdXBwZXI6dXBwZXIsIGFjdHVhbDphY3R1YWx9KTsK
K30KKworZnVuY3Rpb24gYXNzZXJ0X2xlc3NfdGhhbl9lcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBk
ZXNjcmlwdGlvbikKK3sKKyAgICAvKgorICAgICAqIFRlc3QgaWYgYSBwcmltaXRpdmUgbnVtYmVy
IGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byBhbm90aGVyCisgICAgICovCisgICAgYXNzZXJ0KHR5
cGVvZiBhY3R1YWwgPT09ICJudW1iZXIiLAorICAgICAgICAgICAiYXNzZXJ0X2xlc3NfdGhhbl9l
cXVhbCIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAiZXhwZWN0ZWQgYSBudW1iZXIgYnV0IGdv
dCBhICR7dHlwZV9hY3R1YWx9IiwKKyAgICAgICAgICAge3R5cGVfYWN0dWFsOnR5cGVvZiBhY3R1
YWx9KTsKKworICAgIGFzc2VydChhY3R1YWwgPD0gZXhwZWN0ZWQsCisgICAgICAgICAgICJhc3Nl
cnRfbGVzc190aGFuX2VxdWFsIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICJleHBlY3RlZCBh
IG51bWJlciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJHtleHBlY3RlZH0gYnV0IGdvdCAke2FjdHVh
bH0iLAorICAgICAgICAgICB7ZXhwZWN0ZWQ6ZXhwZWN0ZWQsIGFjdHVhbDphY3R1YWx9KTsKK30K
KworZnVuY3Rpb24gYXNzZXJ0X2dyZWF0ZXJfdGhhbl9lcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBk
ZXNjcmlwdGlvbikKK3sKKyAgICAvKgorICAgICAqIFRlc3QgaWYgYSBwcmltaXRpdmUgbnVtYmVy
IGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBhbm90aGVyCisgICAgICovCisgICAgYXNzZXJ0
KHR5cGVvZiBhY3R1YWwgPT09ICJudW1iZXIiLAorICAgICAgICAgICAiYXNzZXJ0X2dyZWF0ZXJf
dGhhbl9lcXVhbCIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAiZXhwZWN0ZWQgYSBudW1iZXIg
YnV0IGdvdCBhICR7dHlwZV9hY3R1YWx9IiwKKyAgICAgICAgICAge3R5cGVfYWN0dWFsOnR5cGVv
ZiBhY3R1YWx9KTsKKworICAgIGFzc2VydChhY3R1YWwgPj0gZXhwZWN0ZWQsCisgICAgICAgICAg
ICJhc3NlcnRfZ3JlYXRlcl90aGFuX2VxdWFsIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICJl
eHBlY3RlZCBhIG51bWJlciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJHtleHBlY3RlZH0gYnV0
IGdvdCAke2FjdHVhbH0iLAorICAgICAgICAgICB7ZXhwZWN0ZWQ6ZXhwZWN0ZWQsIGFjdHVhbDph
Y3R1YWx9KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X2JldHdlZW5faW5jbHVzaXZlKGFjdHVhbCwg
bG93ZXIsIHVwcGVyLCBkZXNjcmlwdGlvbikKK3sKKyAgICAvKgorICAgICAqIFRlc3QgaWYgYSBw
cmltaXRpdmUgbnVtYmVyIGlzIGJldHdlZW4gdG8gdHdvIG90aGVycyBvciBlcXVhbCB0byBlaXRo
ZXIgb2YgdGhlbQorICAgICAqLworICAgIGFzc2VydCh0eXBlb2YgYWN0dWFsID09PSAibnVtYmVy
IiwKKyAgICAgICAgICAgImFzc2VydF9iZXR3ZWVuX2luY2x1c2l2ZSIsIGRlc2NyaXB0aW9uLAor
ICAgICAgICAgICAiZXhwZWN0ZWQgYSBudW1iZXIgYnV0IGdvdCBhICR7dHlwZV9hY3R1YWx9IiwK
KyAgICAgICAgICAge3R5cGVfYWN0dWFsOnR5cGVvZiBhY3R1YWx9KTsKKworICAgIGFzc2VydChh
Y3R1YWwgPj0gbG93ZXIgJiYgYWN0dWFsIDw9IHVwcGVyLAorICAgICAgICAgICAiYXNzZXJ0X2Jl
dHdlZW5faW5jbHVzaXZlIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICJleHBlY3RlZCBhIG51
bWJlciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJHtsb3dlcn0gIiArCisgICAgICAgICAgICJh
bmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICR7dXBwZXJ9IGJ1dCBnb3QgJHthY3R1YWx9IiwKKyAg
ICAgICAgICAge2xvd2VyOmxvd2VyLCB1cHBlcjp1cHBlciwgYWN0dWFsOmFjdHVhbH0pOworfQor
CitmdW5jdGlvbiBhc3NlcnRfdGhyb3dzKGNvZGUsIGZ1bmMsIGRlc2NyaXB0aW9uKQoreworICAg
IHRyeSB7CisgICAgICAgIGZ1bmMuY2FsbCh0aGlzKTsKKyAgICAgICAgYXNzZXJ0KGZhbHNlLCAi
YXNzZXJ0X3Rocm93cyIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgIiR7ZnVuY30gZGlk
IG5vdCB0aHJvdyIsIHtmdW5jOmZ1bmN9KTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGlm
IChlIGluc3RhbmNlb2YgQXNzZXJ0aW9uRXJyb3IpIHsKKyAgICAgICAgICAgIHRocm93IGU7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKGNvZGUgPT09IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgICAgICBpZiAodHlwZW9mIGNvZGUgPT09ICJvYmplY3QiKSB7Cisg
ICAgICAgICAgICBhc3NlcnQodHlwZW9mIGUgPT0gIm9iamVjdCIgJiYgIm5hbWUiIGluIGUgJiYg
ZS5uYW1lID09IGNvZGUubmFtZSwKKyAgICAgICAgICAgICAgICAgICAiYXNzZXJ0X3Rocm93cyIs
IGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICIke2Z1bmN9IHRocmV3ICR7YWN0dWFs
fSAoJHthY3R1YWxfbmFtZX0pIGV4cGVjdGVkICR7ZXhwZWN0ZWR9ICgke2V4cGVjdGVkX25hbWV9
KSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmdW5jOmZ1bmMsIGFjdHVhbDpl
LCBhY3R1YWxfbmFtZTplLm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
eHBlY3RlZDpjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRf
bmFtZTpjb2RlLm5hbWV9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIHZhciBjb2RlX25hbWVfbWFwID0geworICAgICAgICAgICAgSU5ERVhfU0laRV9FUlI6ICdJ
bmRleFNpemVFcnJvcicsCisgICAgICAgICAgICBISUVSQVJDSFlfUkVRVUVTVF9FUlI6ICdIaWVy
YXJjaHlSZXF1ZXN0RXJyb3InLAorICAgICAgICAgICAgV1JPTkdfRE9DVU1FTlRfRVJSOiAnV3Jv
bmdEb2N1bWVudEVycm9yJywKKyAgICAgICAgICAgIElOVkFMSURfQ0hBUkFDVEVSX0VSUjogJ0lu
dmFsaWRDaGFyYWN0ZXJFcnJvcicsCisgICAgICAgICAgICBOT19NT0RJRklDQVRJT05fQUxMT1dF
RF9FUlI6ICdOb01vZGlmaWNhdGlvbkFsbG93ZWRFcnJvcicsCisgICAgICAgICAgICBOT1RfRk9V
TkRfRVJSOiAnTm90Rm91bmRFcnJvcicsCisgICAgICAgICAgICBOT1RfU1VQUE9SVEVEX0VSUjog
J05vdFN1cHBvcnRlZEVycm9yJywKKyAgICAgICAgICAgIElOVVNFX0FUVFJJQlVURV9FUlI6ICdJ
blVzZUF0dHJpYnV0ZUVycm9yJywKKyAgICAgICAgICAgIElOVkFMSURfU1RBVEVfRVJSOiAnSW52
YWxpZFN0YXRlRXJyb3InLAorICAgICAgICAgICAgU1lOVEFYX0VSUjogJ1N5bnRheEVycm9yJywK
KyAgICAgICAgICAgIElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUjogJ0ludmFsaWRNb2RpZmljYXRp
b25FcnJvcicsCisgICAgICAgICAgICBOQU1FU1BBQ0VfRVJSOiAnTmFtZXNwYWNlRXJyb3InLAor
ICAgICAgICAgICAgSU5WQUxJRF9BQ0NFU1NfRVJSOiAnSW52YWxpZEFjY2Vzc0Vycm9yJywKKyAg
ICAgICAgICAgIFRZUEVfTUlTTUFUQ0hfRVJSOiAnVHlwZU1pc21hdGNoRXJyb3InLAorICAgICAg
ICAgICAgU0VDVVJJVFlfRVJSOiAnU2VjdXJpdHlFcnJvcicsCisgICAgICAgICAgICBORVRXT1JL
X0VSUjogJ05ldHdvcmtFcnJvcicsCisgICAgICAgICAgICBBQk9SVF9FUlI6ICdBYm9ydEVycm9y
JywKKyAgICAgICAgICAgIFVSTF9NSVNNQVRDSF9FUlI6ICdVUkxNaXNtYXRjaEVycm9yJywKKyAg
ICAgICAgICAgIFFVT1RBX0VYQ0VFREVEX0VSUjogJ1F1b3RhRXhjZWVkZWRFcnJvcicsCisgICAg
ICAgICAgICBUSU1FT1VUX0VSUjogJ1RpbWVvdXRFcnJvcicsCisgICAgICAgICAgICBJTlZBTElE
X05PREVfVFlQRV9FUlI6ICdJbnZhbGlkTm9kZVR5cGVFcnJvcicsCisgICAgICAgICAgICBEQVRB
X0NMT05FX0VSUjogJ0RhdGFDbG9uZUVycm9yJworICAgICAgICB9OworCisgICAgICAgIHZhciBu
YW1lID0gY29kZSBpbiBjb2RlX25hbWVfbWFwID8gY29kZV9uYW1lX21hcFtjb2RlXSA6IGNvZGU7
CisKKyAgICAgICAgdmFyIG5hbWVfY29kZV9tYXAgPSB7CisgICAgICAgICAgICBJbmRleFNpemVF
cnJvcjogMSwKKyAgICAgICAgICAgIEhpZXJhcmNoeVJlcXVlc3RFcnJvcjogMywKKyAgICAgICAg
ICAgIFdyb25nRG9jdW1lbnRFcnJvcjogNCwKKyAgICAgICAgICAgIEludmFsaWRDaGFyYWN0ZXJF
cnJvcjogNSwKKyAgICAgICAgICAgIE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yOiA3LAorICAg
ICAgICAgICAgTm90Rm91bmRFcnJvcjogOCwKKyAgICAgICAgICAgIE5vdFN1cHBvcnRlZEVycm9y
OiA5LAorICAgICAgICAgICAgSW5Vc2VBdHRyaWJ1dGVFcnJvcjogMTAsCisgICAgICAgICAgICBJ
bnZhbGlkU3RhdGVFcnJvcjogMTEsCisgICAgICAgICAgICBTeW50YXhFcnJvcjogMTIsCisgICAg
ICAgICAgICBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3I6IDEzLAorICAgICAgICAgICAgTmFtZXNw
YWNlRXJyb3I6IDE0LAorICAgICAgICAgICAgSW52YWxpZEFjY2Vzc0Vycm9yOiAxNSwKKyAgICAg
ICAgICAgIFR5cGVNaXNtYXRjaEVycm9yOiAxNywKKyAgICAgICAgICAgIFNlY3VyaXR5RXJyb3I6
IDE4LAorICAgICAgICAgICAgTmV0d29ya0Vycm9yOiAxOSwKKyAgICAgICAgICAgIEFib3J0RXJy
b3I6IDIwLAorICAgICAgICAgICAgVVJMTWlzbWF0Y2hFcnJvcjogMjEsCisgICAgICAgICAgICBR
dW90YUV4Y2VlZGVkRXJyb3I6IDIyLAorICAgICAgICAgICAgVGltZW91dEVycm9yOiAyMywKKyAg
ICAgICAgICAgIEludmFsaWROb2RlVHlwZUVycm9yOiAyNCwKKyAgICAgICAgICAgIERhdGFDbG9u
ZUVycm9yOiAyNSwKKworICAgICAgICAgICAgRW5jb2RpbmdFcnJvcjogMCwKKyAgICAgICAgICAg
IE5vdFJlYWRhYmxlRXJyb3I6IDAsCisgICAgICAgICAgICBVbmtub3duRXJyb3I6IDAsCisgICAg
ICAgICAgICBDb25zdHJhaW50RXJyb3I6IDAsCisgICAgICAgICAgICBEYXRhRXJyb3I6IDAsCisg
ICAgICAgICAgICBUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3I6IDAsCisgICAgICAgICAgICBSZWFk
T25seUVycm9yOiAwLAorICAgICAgICAgICAgVmVyc2lvbkVycm9yOiAwLAorICAgICAgICAgICAg
T3BlcmF0aW9uRXJyb3I6IDAsCisgICAgICAgICAgICBOb3RBbGxvd2VkRXJyb3I6IDAKKyAgICAg
ICAgfTsKKworICAgICAgICBpZiAoIShuYW1lIGluIG5hbWVfY29kZV9tYXApKSB7CisgICAgICAg
ICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRXJyb3IoJ1Rlc3QgYnVnOiB1bnJlY29nbml6ZWQgRE9N
RXhjZXB0aW9uIGNvZGUgIicgKyBjb2RlICsgJyIgcGFzc2VkIHRvIGFzc2VydF90aHJvd3MoKScp
OworICAgICAgICB9CisKKyAgICAgICAgdmFyIHJlcXVpcmVkX3Byb3BzID0geyBjb2RlOiBuYW1l
X2NvZGVfbWFwW25hbWVdIH07CisKKyAgICAgICAgaWYgKHJlcXVpcmVkX3Byb3BzLmNvZGUgPT09
IDAgfHwKKyAgICAgICAgICAgKHR5cGVvZiBlID09ICJvYmplY3QiICYmCisgICAgICAgICAgICAi
bmFtZSIgaW4gZSAmJgorICAgICAgICAgICAgZS5uYW1lICE9PSBlLm5hbWUudG9VcHBlckNhc2Uo
KSAmJgorICAgICAgICAgICAgZS5uYW1lICE9PSAiRE9NRXhjZXB0aW9uIikpIHsKKyAgICAgICAg
ICAgIC8vIE5ldyBzdHlsZSBleGNlcHRpb246IGFsc28gdGVzdCB0aGUgbmFtZSBwcm9wZXJ0eS4K
KyAgICAgICAgICAgIHJlcXVpcmVkX3Byb3BzLm5hbWUgPSBuYW1lOworICAgICAgICB9CisKKyAg
ICAgICAgLy9XZSdkIGxpa2UgdG8gdGVzdCB0aGF0IGUgaW5zdGFuY2VvZiB0aGUgYXBwcm9wcmlh
dGUgaW50ZXJmYWNlLAorICAgICAgICAvL2J1dCB3ZSBjYW4ndCwgYmVjYXVzZSB3ZSBkb24ndCBr
bm93IHdoYXQgd2luZG93IGl0IHdhcyBjcmVhdGVkCisgICAgICAgIC8vaW4uICBJdCBtaWdodCBi
ZSBhbiBpbnN0YW5jZW9mIHRoZSBhcHByb3ByaWF0ZSBpbnRlcmZhY2Ugb24gc29tZQorICAgICAg
ICAvL3Vua25vd24gb3RoZXIgd2luZG93LiAgVE9ETzogV29yayBhcm91bmQgdGhpcyBzb21laG93
PworCisgICAgICAgIGFzc2VydCh0eXBlb2YgZSA9PSAib2JqZWN0IiwKKyAgICAgICAgICAgICAg
ICJhc3NlcnRfdGhyb3dzIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAiJHtmdW5jfSB0
aHJldyAke2V9IHdpdGggdHlwZSAke3R5cGV9LCBub3QgYW4gb2JqZWN0IiwKKyAgICAgICAgICAg
ICAgIHtmdW5jOmZ1bmMsIGU6ZSwgdHlwZTp0eXBlb2YgZX0pOworCisgICAgICAgIGZvciAodmFy
IHByb3AgaW4gcmVxdWlyZWRfcHJvcHMpIHsKKyAgICAgICAgICAgIGFzc2VydCh0eXBlb2YgZSA9
PSAib2JqZWN0IiAmJiBwcm9wIGluIGUgJiYgZVtwcm9wXSA9PSByZXF1aXJlZF9wcm9wc1twcm9w
XSwKKyAgICAgICAgICAgICAgICAgICAiYXNzZXJ0X3Rocm93cyIsIGRlc2NyaXB0aW9uLAorICAg
ICAgICAgICAgICAgICAgICIke2Z1bmN9IHRocmV3ICR7ZX0gdGhhdCBpcyBub3QgYSBET01FeGNl
cHRpb24gIiArIGNvZGUgKyAiOiBwcm9wZXJ0eSAke3Byb3B9IGlzIGVxdWFsIHRvICR7YWN0dWFs
fSwgZXhwZWN0ZWQgJHtleHBlY3RlZH0iLAorICAgICAgICAgICAgICAgICAgIHtmdW5jOmZ1bmMs
IGU6ZSwgcHJvcDpwcm9wLCBhY3R1YWw6ZVtwcm9wXSwgZXhwZWN0ZWQ6cmVxdWlyZWRfcHJvcHNb
cHJvcF19KTsKKyAgICAgICAgfQorICAgIH0KK30KKworLyoKKyAqIFJldHVybiB0cnVlIGlmIG9i
amVjdCBpcyBwcm9iYWJseSBhIE5vZGUgb2JqZWN0LgorICovCitmdW5jdGlvbiBpc19ub2RlKG9i
amVjdCkKK3sKKyAgICAvLyBJIHVzZSBkdWNrLXR5cGluZyBpbnN0ZWFkIG9mIGluc3RhbmNlb2Ys
IGJlY2F1c2UKKyAgICAvLyBpbnN0YW5jZW9mIGRvZXNuJ3Qgd29yayBpZiB0aGUgbm9kZSBpcyBm
cm9tIGFub3RoZXIgd2luZG93IChsaWtlIGFuCisgICAgLy8gaWZyYW1lJ3MgY29udGVudFdpbmRv
dyk6CisgICAgLy8gaHR0cDovL3d3dy53My5vcmcvQnVncy9QdWJsaWMvc2hvd19idWcuY2dpP2lk
PTEyMjk1CisgICAgdHJ5IHsKKyAgICAgICAgdmFyIGhhc19ub2RlX3Byb3BlcnRpZXMgPSAoIm5v
ZGVUeXBlIiBpbiBvYmplY3QgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Im5vZGVOYW1lIiBpbiBvYmplY3QgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIm5vZGVWYWx1ZSIgaW4gb2JqZWN0ICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJjaGlsZE5vZGVzIiBpbiBvYmplY3QpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
ICAgLy8gV2UncmUgcHJvYmFibHkgY3Jvc3Mtb3JpZ2luLCB3aGljaCBtZWFucyB3ZSBhcmVuJ3Qg
YSBub2RlCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoaGFzX25vZGVf
cHJvcGVydGllcykgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgb2JqZWN0Lm5vZGVUeXBl
OworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAvLyBUaGUgb2JqZWN0IGlzIHBy
b2JhYmx5IE5vZGUucHJvdG90eXBlIG9yIGFub3RoZXIgcHJvdG90eXBlCisgICAgICAgICAgICAv
LyBvYmplY3QgdGhhdCBpbmhlcml0cyBmcm9tIGl0LCBhbmQgbm90IGEgTm9kZSBpbnN0YW5jZS4K
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2YXIgcmVwbGFjZW1lbnRzID0gewor
ICAgICIwIjogIjAiLAorICAgICIxIjogIngwMSIsCisgICAgIjIiOiAieDAyIiwKKyAgICAiMyI6
ICJ4MDMiLAorICAgICI0IjogIngwNCIsCisgICAgIjUiOiAieDA1IiwKKyAgICAiNiI6ICJ4MDYi
LAorICAgICI3IjogIngwNyIsCisgICAgIjgiOiAiYiIsCisgICAgIjkiOiAidCIsCisgICAgIjEw
IjogIm4iLAorICAgICIxMSI6ICJ2IiwKKyAgICAiMTIiOiAiZiIsCisgICAgIjEzIjogInIiLAor
ICAgICIxNCI6ICJ4MGUiLAorICAgICIxNSI6ICJ4MGYiLAorICAgICIxNiI6ICJ4MTAiLAorICAg
ICIxNyI6ICJ4MTEiLAorICAgICIxOCI6ICJ4MTIiLAorICAgICIxOSI6ICJ4MTMiLAorICAgICIy
MCI6ICJ4MTQiLAorICAgICIyMSI6ICJ4MTUiLAorICAgICIyMiI6ICJ4MTYiLAorICAgICIyMyI6
ICJ4MTciLAorICAgICIyNCI6ICJ4MTgiLAorICAgICIyNSI6ICJ4MTkiLAorICAgICIyNiI6ICJ4
MWEiLAorICAgICIyNyI6ICJ4MWIiLAorICAgICIyOCI6ICJ4MWMiLAorICAgICIyOSI6ICJ4MWQi
LAorICAgICIzMCI6ICJ4MWUiLAorICAgICIzMSI6ICJ4MWYiLAorICAgICIweGZmZmQiOiAidWZm
ZmQiLAorICAgICIweGZmZmUiOiAidWZmZmUiLAorICAgICIweGZmZmYiOiAidWZmZmYiLAorfTsK
KworZnVuY3Rpb24gZXh0ZW5kKGFycmF5LCBpdGVtcykKK3sKKyAgICBBcnJheS5wcm90b3R5cGUu
cHVzaC5hcHBseShhcnJheSwgaXRlbXMpOworfQorCitmdW5jdGlvbiBnZXRfc2NyaXB0X3VybCgp
Cit7CisgICAgcmV0dXJuICIvIjsKK30KKworLyoKKyAqIFJldHVybiBhIHN0cmluZyB0cnVuY2F0
ZWQgdG8gdGhlIGdpdmVuIGxlbmd0aCwgd2l0aCAuLi4gYWRkZWQgYXQgdGhlIGVuZAorICogaWYg
aXQgd2FzIGxvbmdlci4KKyAqLworZnVuY3Rpb24gdHJ1bmNhdGUocywgbGVuKQoreworICAgIGlm
IChzLmxlbmd0aCA+IGxlbikgeworICAgICAgICByZXR1cm4gcy5zdWJzdHJpbmcoMCwgbGVuIC0g
MykgKyAiLi4uIjsKKyAgICB9CisgICAgcmV0dXJuIHM7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF90
cnVlKGFjdHVhbCwgZGVzY3JpcHRpb24pCit7CisgICAgYXNzZXJ0KGFjdHVhbCA9PT0gdHJ1ZSwg
ImFzc2VydF90cnVlIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImV4cGVjdGVkIHRydWUgZ290ICR7YWN0dWFsfSIsIHthY3R1YWw6YWN0dWFsfSk7Cit9CisKK2Z1
bmN0aW9uIGFzc2VydF9mYWxzZShhY3R1YWwsIGRlc2NyaXB0aW9uKQoreworICAgIGFzc2VydChh
Y3R1YWwgPT09IGZhbHNlLCAiYXNzZXJ0X2ZhbHNlIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCBmYWxzZSBnb3QgJHthY3R1YWx9Iiwge2FjdHVh
bDphY3R1YWx9KTsKK30KKworZnVuY3Rpb24gdGVzdCh0c3QsIG5hbWUpIHsKKyAgdHJ5IHsKKyAg
ICB0c3QoKTsKKyAgfSBjYXRjaCAoZSkgeworICAgIGlmICghUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUuZXJyb3JzKQorICAgICAgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuZXJyb3JzID0gW107Cisg
ICAgICBQYWludFdvcmtsZXRHbG9iYWxTY29wZS5lcnJvcnMucHVzaCh7IG5hbWU6IG5hbWUsIGVy
cm9yOiBlLm1lc3NhZ2UgfSk7CisgIH0KKyAgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaGFzUnVu
QVRlc3QgPSB0cnVlOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9t
LXBhaW50L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1
c3RvbS1wYWludC9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWIxM2Q0MzI5
MGY4MzRkMGY5YTY5OTMwNTAwYTY3YWMxNWJmNWVkZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMKQEAg
LTAsMCArMSwyMyBAQAoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKKworLy8gSW1wb3J0cyBjb2RlIGludG8gYSB3b3JrbGV0LCB3aXRoIHNvbWUgaGVs
cGVycy4KK2FzeW5jIGZ1bmN0aW9uIGltcG9ydFdvcmtsZXQod29ya2xldCwgY29kZSkgeworICBj
b25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKCJyZXNvdXJjZXMvdGVzdGhhcm5lc3Mtd29ya2xl
dC5qcyIpOworICBjb25zdCBmaW5hbENvZGUgPSAoYXdhaXQgcmVzcG9uc2UudGV4dCgpKSArIGNv
ZGU7CisKKyAgbGV0IHVybDsKKyAgLy8gRklYTUU6IFRoaXMgaXMgdGVtcG9yYXJ5LCB1bnRpbCB3
ZSBzdXBwb3J0IGxvYWRpbmcgc2NyaXB0cyBieSB1cmwKKyAgaWYgKHdpbmRvdy5jaHJvbWUpIHsK
KyAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2ZpbmFsQ29kZV0sIHt0eXBlOiAndGV4dC9qYXZh
c2NyaXB0J30pOworICAgIHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7CisgIH0gZWxz
ZSB7CisgICAgdXJsID0gZmluYWxDb2RlOworICB9CisKKyAgd29ya2xldC5hZGRNb2R1bGUodXJs
KTsKKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsKKyAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgIH0sIDMwMDApOworICB9Cit9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvd29ya2xldC1l
eHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3dvcmtsZXQt
ZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YjQyYjYyZGExM2VkYTgxOTYxMGIzMTk3YjRlNDVh
NTQ3M2JkY2YzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9t
LXBhaW50L3dvcmtsZXQtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDE2IEBACis8IURPQ1RZUEUg
aHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGV4cGVyaW1lbnRhbDpDU1NQYWludGluZ0FQ
SUVuYWJsZWQ9dHJ1ZSBdIC0tPgorCis8Y2FudmFzIGlkPSJwYWludCIgd2lkdGg9IjE1MHB4IiBo
ZWlnaHQ9IjE1MHB4IiA+PC9jYW52YXM+CisKKzxzY3JpcHQgaWQ9ImNvZGUiPgordmFyIGNhbnZh
cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYWludCcpOwordmFyIGN0eCA9IGNhbnZhcy5n
ZXRDb250ZXh0KCcyZCcpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKyl7CisgIGZvciAo
dmFyIGogPSAwOyBqIDwgNjsgaisrKXsKKyAgICBjdHguZmlsbFN0eWxlID0gJ3JnYignICsgTWF0
aC5mbG9vcigyNTUgLSA0Mi41ICogaSkgKyAnLCcgKworICAgICAgICAgICAgICAgICAgICAgTWF0
aC5mbG9vcigyNTUgLSA0Mi41ICogaikgKyAnLDApJzsKKyAgICBjdHguZmlsbFJlY3QoaiAqIDI1
LCBpICogMjUsIDI1LCAyNSk7CisgIH0KK30KKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3dvcmtsZXQuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvY3NzLWN1c3RvbS1wYWludC93b3JrbGV0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmNmZjkzNTY4NTM0
MjA0YTJhYTBjYzZlOGQ5ZTg5NDQwMTJlMmU2NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC93b3JrbGV0Lmh0bWwKQEAgLTAsMCArMSw0MiBAQAor
PCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBleHBlcmltZW50YWw6Q1NT
UGFpbnRpbmdBUElFbmFibGVkPXRydWUgXSAtLT4KKzxtZXRhIG5hbWU9ImF1dGhvciIgdGl0bGU9
Ikp1c3RpbiBNaWNoYXVkIiBocmVmPSJtYWlsdG86anVzdGluX21pY2hhdWRAd2Via2l0Lm9yZyI+
Cis8bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9IlRlc3Qgd29ya2xldCBhZGRNb2R1bGUgYW5k
IGdsb2JhbCBvYmplY3QiPgorPGxpbmsgcmVsPSJoZWxwIiBjb250ZW50PSJodHRwczovL2RyYWZ0
cy5jc3MtaG91ZGluaS5vcmcvY3NzLXBhaW50LWFwaS0xLyI+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKworPHN0eWxlPgorICAjcGFpbnQgeworICAg
IGJhY2tncm91bmQtaW1hZ2U6IHBhaW50KG15LXBhaW50KTsKKyAgICB3aWR0aDogMTUwcHg7Cisg
ICAgaGVpZ2h0OiAxNTBweDsKKyAgfQorPC9zdHlsZT4KKworPGRpdiBpZD0icGFpbnQiPjwvZGl2
PgorCis8c2NyaXB0IGlkPSJjb2RlIiB0eXBlPSJ0ZXh0L3dvcmtsZXQiPgorY2xhc3MgTXlQYWlu
dCB7CisgIHBhaW50KGN0eCwgZ2VvbSwgcHJvcGVydGllcykgeworICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgNjsgaSsrKXsKKyAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgNjsgaisrKXsKKyAgICAg
ICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2IoJyArIE1hdGguZmxvb3IoMjU1IC0gNDIuNSAqIGkpICsg
JywnICsKKyAgICAgICAgICAgICAgICAgICAgICAgICBNYXRoLmZsb29yKDI1NSAtIDQyLjUgKiBq
KSArICcsMCknOworICAgICAgICBjdHguZmlsbFJlY3QoaiAqIDI1LCBpICogMjUsIDI1LCAyNSk7
CisgICAgICB9CisgICAgfQorICAgIGNvbnNvbGUubG9nKCJIZWxsbyBmcm9tIHBhaW50IGNhbGxi
YWNrISIpOworICAgIGFzc2VydF9ncmVhdGVyX3RoYW4oZXZhbCgiZGV2aWNlUGl4ZWxSYXRpbyIp
LCAwKTsKKyAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdSZWZlcmVuY2VFcnJvcid9LCBmdW5j
dGlvbiAoKSB7IGV2YWwoIndpbmRvdyIpOyB9KTsKKworICAgIGNvbnN0IHByb21pc2UgPSBuZXcg
UHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7IGNvbnNvbGUubG9nKCJJbiBwcm9taXNlIik7
IHJlc29sdmUoKSB9KTsKKyAgICBwcm9taXNlLnRoZW4oKCkgPT4gY29uc29sZS5sb2coIlByb21p
c2Ugd2FzIHJlc29sdmVkIikpOworICB9Cit9Citjb25zb2xlLmxvZygiSGVsbG8gZnJvbSBwYWlu
dCB3b3JrbGV0ISIpOworcmVnaXN0ZXJQYWludCgnbXktcGFpbnQnLCBNeVBhaW50KTsKK2NvbnNv
bGUubG9nKFdpbmRvdyk7IC8vIHRlc3QgdGhhdCB1bmNhdWdodCBleGNlcHRpb25zIGRvIG5vdCBh
ZmZlY3QgcmVnaXN0ZXJlZCBwYWludCBjYWxsYmFja3MKKzwvc2NyaXB0PgorCis8c2NyaXB0Pgor
aW1wb3J0V29ya2xldChDU1MucGFpbnRXb3JrbGV0LCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
Y29kZScpLnRleHRDb250ZW50KTsKKzwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353318</attachid>
            <date>2018-10-29 13:55:29 -0700</date>
            <delta_ts>2018-10-30 16:00:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190979-20181029135528.patch</filename>
            <type>text/plain</type>
            <size>187887</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjQ4NmIwMmU1NmRmOTIz
MGM2MTUyMTYzZWI3MmZkYzA0OTBmMzgxNS4uZjI0NTI5MzNmZjAwMzQ0OGRlYzEzNmRiMWJmZjQy
ODVmYmMyNWRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MyBAQAorMjAxOC0xMC0yOSAgSnVz
dGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIG5l
dyBnbG9iYWwgb2JqZWN0IGFuZCBwcmVsaW1pbmFyeSBXb3JrbGV0cyBzdXBwb3J0IGZvciBDU1Mg
cGFpbnRpbmcgYXBpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTA5NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUZXN0OiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvd29ya2xldC5odG1sCisKKyAgICAgICAg
QWRkIGEgbmV3IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgYW5kIGdsb2JhbCBvYmplY3QgdG8gcnVu
IHdvcmtsZXRzIGluLiBUaGlzIGlzIG1vc3RseSBjb3B5K3Bhc3RlCisgICAgICAgIGZyb20gV29y
a2VycywgYnV0IHdpdGhvdXQgYW55IG9mIHRoZSB0aHJlYWRpbmcuIFdvcmtsZXQuYWRkTW9kdWxl
IGRvZXMgbm90IHlldCBzdXBwb3J0IGxvYWRpbmcgc2NyaXB0cworICAgICAgICBvciBkb2luZyBj
cm9zcyBvcmlnaW4gY2hlY2tpbmcuIFRoZXJlIGFyZSBxdWl0ZSBhIGZldyBwYXJ0cyBvZiB0aGUg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCBhcGkgdGhhdCBhcmUKKyAgICAgICAgbGVmdCBhcyBBU1NF
UlRfTk9UX1JFQUNIRUQoKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2Jq
ZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0IGNvbnN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20u
Y3BwLgorICAgICAgICAoV2ViQ29yZTo6SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6dmlzaXRB
ZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNQYWludFdvcmtsZXRHbG9i
YWxTY29wZTo6cmVnaXN0ZXJQYWludCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrbGV0
R2xvYmFsU2NvcGVCYXNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtsZXRH
bG9iYWxTY29wZUJhc2U6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZSk6CisgICAgICAgIChXZWJD
b3JlOjpKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6Y2xlYXJET01HdWFyZGVkT2JqZWN0
cyk6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnZpc2l0Q2hp
bGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpkZXN0
cm95KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtsZXRHbG9i
YWxTY29wZUJhc2U6OnN1cHBvcnRzUmljaFNvdXJjZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6
SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzaG91bGRJbnRlcnJ1cHRTY3JpcHQpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzaG91bGRJbnRlcnJ1cHRTY3Jp
cHRCZWZvcmVUaW1lb3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3Bl
QmFzZTo6amF2YVNjcmlwdFJ1bnRpbWVGbGFncyk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToK
KyAgICAgICAgKFdlYkNvcmU6OnRvSlNXb3JrbGV0R2xvYmFsU2NvcGUpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6d3JhcHBlZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnByb3h5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6Y3JlYXRlU3RydWN0dXJlKToK
KyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFN0
YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29w
ZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjU3RhdGVGcm9tV29ya2xldEdsb2JhbFNjb3BlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKElzRE9NR2xvYmFsT2JqZWN0KToKKyAgICAgICAg
KFNob3VsZFVzZUdsb2JhbE9iamVjdFByb3RvdHlwZSk6CisgICAgICAgIChHZW5lcmF0ZUhlYWRl
cik6CisgICAgICAgIChHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZ0ZvckV4
cG9zZWQpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGw6CisgICAgICAgICogY3NzL0NTU1BhaW50
SW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYWludEltYWdlVmFsdWU6Omlt
YWdlKToKKyAgICAgICAgKiBjc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRPTUNTU1BhaW50V29ya2xldDo6ZW5zdXJlUGFpbnRXb3JrbGV0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTUNTU1BhaW50V29ya2xldDo6ZW5zdXJlUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9ET01DU1NQYWludFdvcmtsZXQuaDoKKyAgICAg
ICAgKiBjc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmlkbDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVuc3VyZUNTU1BhaW50V29ya2xldCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVuc3VyZUNTU1BhaW50V29ya2xldEds
b2JhbFNjb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpnZXRDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSk6CisgICAg
ICAgICogZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbjoKKyAgICAgICAgKiBkb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0Ojp2bSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpleGVj
U3RhdGUpOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojppc1dvcmtsZXRHbG9iYWxTY29wZSBj
b25zdCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dlckFnZW50OjppbmplY3Rl
ZFNjcmlwdEZvckV2YWwpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtl
clJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1lQWdlbnQ6
OmluamVjdGVkU2NyaXB0Rm9yRXZhbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3Vz
dG9tUGFpbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludEltYWdlOjpD
dXN0b21QYWludEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50SW1hZ2U6OmRv
Q3VzdG9tUGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1h
Z2UuaDoKKyAgICAgICAgKiB3b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHA6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5j
cHAuCisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludFdvcmtsZXRH
bG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6
ZGV2aWNlUGl4ZWxSYXRpbyk6CisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxT
Y29wZTo6YWRkUmVnaXN0ZXJlZFBhaW50KToKKyAgICAgICAgKiB3b3JrbGV0cy9QYWludFdvcmts
ZXRHbG9iYWxTY29wZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50
V29ya2xldEdsb2JhbFNjb3BlLmguCisgICAgICAgICogd29ya2xldHMvUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUuaWRsLgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXQuY3BwOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
LgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtsZXQ6OldvcmtsZXQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldDo6YWRkTW9kdWxl
KToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwLgorICAgICAgICAqIHdvcmts
ZXRzL1dvcmtsZXQuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUuaWRsLgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRDb25zb2xl
Q2xpZW50LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93
b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0
Q29uc29sZUNsaWVudDo6V29ya2xldENvbnNvbGVDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2xldENvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtsZXRDb25zb2xlQ2xpZW50Ojpjb3VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrbGV0Q29uc29sZUNsaWVudDo6dGltZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0
Q29uc29sZUNsaWVudDo6dGltZUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29s
ZUNsaWVudDo6cHJvZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29sZUNsaWVu
dDo6cHJvZmlsZUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29sZUNsaWVudDo6
dGFrZUhlYXBTbmFwc2hvdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29sZUNsaWVu
dDo6dGltZVN0YW1wKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRDb25zb2xlQ2xpZW50Ojpy
ZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldENvbnNvbGVDbGllbnQ6OnJlY29yZEVu
ZCk6CisgICAgICAgICogd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuaDogQWRkZWQuCisg
ICAgICAgICogd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxTY29wZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6On5Xb3JrbGV0R2xvYmFsU2NvcGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpldmFsdWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmlzSlNFeGVjdXRpb25Gb3JiaWRkZW4gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpkaXNhYmxlRXZhbCk6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmRpc2FibGVXZWJBc3NlbWJs
eSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmNvbXBsZXRlVVJMIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6bG9nRXhjZXB0aW9u
VG9Db25zb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29u
c29sZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjphZGRN
ZXNzYWdlKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmlzUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpp
ZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6
c2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6anNSdW50aW1l
RmxhZ3MgY29uc3QpOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3Jr
bGV0R2xvYmFsU2NvcGUuaWRsOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlLmlkbC4KKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0U2Ny
aXB0Q29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlw
dENvbnRyb2xsZXI6OldvcmtsZXRTY3JpcHRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjp+V29ya2xldFNjcmlwdENvbnRyb2xsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmZvcmJpZEV4ZWN1dGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6aXNFeGVjdXRpb25G
b3JiaWRkZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xs
ZXI6OmRpc2FibGVFdmFsKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRTY3JpcHRDb250cm9s
bGVyOjpkaXNhYmxlV2ViQXNzZW1ibHkpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlw
dENvbnRyb2xsZXI6OmluaXRTY3JpcHRXaXRoU3ViY2xhc3MpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtsZXRTY3JpcHRDb250cm9sbGVyOjpzZXRFeGNlcHRpb24pOgorICAgICAgICAqIHdvcmtsZXRz
L1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V29y
a2xldFNjcmlwdENvbnRyb2xsZXI6OndvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OnZtKToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0SWZOZWVkZWQpOgorCiAyMDE4
LTEwLTI2ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjM3NDU4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRl
eCAxMjliNmM1NDkzMmY5ZTRlODg0NjZkY2Y5MThjYmQ2ZTE3NDY0MmQ1Li5jNmZlMjM1ZTA5YzEz
M2M5OWRlMTMyN2EyODBhYzUzYTEwMjc5NDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTQz
LDYgKzE0Myw3IEBAIHNldChXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJD
T1JFX0RJUn0vd29ya2Vycy9zZXJ2aWNlIgogICAgICIke1dFQkNPUkVfRElSfS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dCIKICAgICAiJHtXRUJDT1JFX0RJUn0vd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ciIKKyAgICAiJHtXRUJDT1JFX0RJUn0vd29ya2xldHMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3ht
bCIKICAgICAiJHtXRUJDT1JFX0RJUn0veG1sL3BhcnNlciIKICAgICAiJHtERVJJVkVEX1NPVVJD
RVNfV0VCQ09SRV9ESVJ9IgpAQCAtNTM3LDcgKzUzOCw2IEBAIHNldChXZWJDb3JlX05PTl9TVkdf
SURMX0ZJTEVTCiAgICAgY3NzL0NTU01lZGlhUnVsZS5pZGwKICAgICBjc3MvQ1NTTmFtZXNwYWNl
UnVsZS5pZGwKICAgICBjc3MvQ1NTUGFpbnRDYWxsYmFjay5pZGwKLSAgICBjc3MvQ1NTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUuaWRsCiAgICAgY3NzL0NTU1BhZ2VSdWxlLmlkbAogICAgIGNzcy9D
U1NSdWxlLmlkbAogICAgIGNzcy9DU1NSdWxlTGlzdC5pZGwKQEAgLTkwNiw2ICs5MDYsMTAgQEAg
c2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICB3b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlclVwZGF0ZVZpYUNhY2hlLmlkbAogICAgIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyV2luZG93Q2xpZW50LmlkbAogCisgICAgd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUuaWRsCisgICAgd29ya2xldHMvV29ya2xldC5pZGwKKyAgICB3b3JrbGV0cy9Xb3JrbGV0R2xv
YmFsU2NvcGUuaWRsCisKICAgICB4bWwvRE9NUGFyc2VyLmlkbAogICAgIHhtbC9YTUxIdHRwUmVx
dWVzdC5pZGwKICAgICB4bWwvWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5pZGwKQEAgLTE2ODQs
NiArMTY4OCw4IEBAIHNldChXSU5ET1dfQ09OU1RSVUNUT1JTX0ZJTEUgJHtERVJJVkVEX1NPVVJD
RVNfV0VCQ09SRV9ESVJ9L0RPTVdpbmRvd0NvbnN0cnVjdG9yCiBzZXQoV09SS0VSR0xPQkFMU0NP
UEVfQ09OU1RSVUNUT1JTX0ZJTEUgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L1dvcmtl
ckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCkKIHNldChERURJQ0FURURXT1JLRVJHTE9CQUxT
Q09QRV9DT05TVFJVQ1RPUlNfRklMRSAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsKQogc2V0KFNFUlZJQ0VXT1JL
RVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSAke0RFUklWRURfU09VUkNFU19XRUJDT1JF
X0RJUn0vU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCkKK3NldChXT1JL
TEVUR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09S
RV9ESVJ9L1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwpCitzZXQoUEFJTlRXT1JL
TEVUR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09S
RV9ESVJ9L1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCkKIAogV0VCS0lU
X0ZSQU1FV09SS19ERUNMQVJFKFdlYkNvcmUpCiBXRUJLSVRfSU5DTFVERV9DT05GSUdfRklMRVNf
SUZfRVhJU1RTKCkKQEAgLTE4NjMsNyArMTg2OSw5IEBAIEdFTkVSQVRFX0JJTkRJTkdTKFdlYkNv
cmVCaW5kaW5ncwogICAgICAgICAtLXdpbmRvd0NvbnN0cnVjdG9yc0ZpbGUgJHtXSU5ET1dfQ09O
U1RSVUNUT1JTX0ZJTEV9CiAgICAgICAgIC0td29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNG
aWxlICR7V09SS0VSR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEV9CiAgICAgICAgIC0tZGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlICR7REVESUNBVEVEV09SS0VS
R0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEV9Ci0gICAgICAgIC0tc2VydmljZVdvcmtlckds
b2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSAke1NFUlZJQ0VXT1JLRVJHTE9CQUxTQ09QRV9DT05T
VFJVQ1RPUlNfRklMRX0pCisgICAgICAgIC0tc2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3JzRmlsZSAke1NFUlZJQ0VXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRX0K
KyAgICAgICAgLS13b3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlICR7V09SS0xFVEdM
T0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFfQorICAgICAgICAtLXBhaW50V29ya2xldEdsb2Jh
bFNjb3BlQ29uc3RydWN0b3JzRmlsZSAke1BBSU5UV09SS0xFVEdMT0JBTFNDT1BFX0NPTlNUUlVD
VE9SU19GSUxFfSkKIAogR0VORVJBVEVfQklORElOR1MoV2ViQ29yZVRlc3RTdXBwb3J0QmluZGlu
Z3MKICAgICBPVVRQVVRfU09VUkNFIFdlYkNvcmVUZXN0U3VwcG9ydF9TT1VSQ0VTCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA2NjM5MGQ0OWZiMzlkNmM0YjJjNDc2MjYwNWQyNjA1
ZmIyYjViMTBkLi44ZTkwMTcxNzAzM2U1YzYyZThhYzgyZTBjN2Y2YTk3NTIwM2VjZjEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTg2LDYgKzg2LDcgQEAgVlBBVEggPSBcCiAg
ICAgJChXZWJDb3JlKS93ZWJzb2NrZXRzIFwKICAgICAkKFdlYkNvcmUpL3dvcmtlcnMgXAogICAg
ICQoV2ViQ29yZSkvd29ya2Vycy9zZXJ2aWNlIFwKKyAgICAkKFdlYkNvcmUpL3dvcmtsZXRzIFwK
ICAgICAkKFdlYkNvcmUpL3htbCBcCiAjCiAKQEAgLTQ1Miw3ICs0NTMsNiBAQCBKU19CSU5ESU5H
X0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9jc3MvQ1NTTmFtZXNwYWNlUnVsZS5pZGwgXAogICAg
ICQoV2ViQ29yZSkvY3NzL0NTU1BhZ2VSdWxlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9jc3MvQ1NT
UGFpbnRDYWxsYmFjay5pZGwgXAotICAgICQoV2ViQ29yZSkvY3NzL0NTU1BhaW50V29ya2xldEds
b2JhbFNjb3BlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9jc3MvQ1NTUnVsZS5pZGwgXAogICAgICQo
V2ViQ29yZSkvY3NzL0NTU1J1bGVMaXN0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9jc3MvQ1NTU3R5
bGVEZWNsYXJhdGlvbi5pZGwgXApAQCAtMTAyNCw2ICsxMDI0LDkgQEAgSlNfQklORElOR19JRExT
ID0gXAogICAgICQoV2ViQ29yZSkvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb24uaWRsIFwKICAgICAkKFdlYkNvcmUpL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
VXBkYXRlVmlhQ2FjaGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyV2luZG93Q2xpZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS93b3JrbGV0cy9QYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5pZGwgXAorICAgICQoV2ViQ29yZSkvd29ya2xldHMvV29ya2xl
dC5pZGwgXAorICAgICQoV2ViQ29yZSkvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmlkbCBc
CiAgICAgJChXZWJDb3JlKS94bWwvRE9NUGFyc2VyLmlkbCBcCiAgICAgJChXZWJDb3JlKS94bWwv
WE1MSHR0cFJlcXVlc3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL3htbC9YTUxIdHRwUmVxdWVzdEV2
ZW50VGFyZ2V0LmlkbCBcCkBAIC0xMTU2LDYgKzExNTksNyBAQCBhbGwgOiBcCiAgICAgJChTVVBQ
TEVNRU5UQUxfREVQRU5ERU5DWV9GSUxFKSBcCiAgICAgJChXSU5ET1dfQ09OU1RSVUNUT1JTX0ZJ
TEUpIFwKICAgICAkKFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFKSBcCisgICAg
JChXT1JLTEVUR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUpIFwKICAgICAkKEpTX0RPTV9I
RUFERVJTKSBcCiAgICAgJChXRUJfRE9NX0hFQURFUlMpIFwKICAgICBcCkBAIC0xNTA0LDYgKzE1
MDgsNyBAQCBJRExfSU5DTFVERVMgPSBcCiAgICAgJChXZWJDb3JlKS9zdmcgXAogICAgICQoV2Vi
Q29yZSkvdGVzdGluZyBcCiAgICAgJChXZWJDb3JlKS93b3JrZXJzIFwKKyAgICAkKFdlYkNvcmUp
L3dvcmtsZXRzIFwKICAgICAkKFdlYkNvcmUpL3htbAogCiBJRExfQ09NTU9OX0FSR1MgPSAkKElE
TF9JTkNMVURFUzolPS0taW5jbHVkZSAlKSAtLXdyaXRlLWRlcGVuZGVuY2llcyAtLW91dHB1dERp
ciAuCkBAIC0xNTE2LDYgKzE1MjEsOCBAQCBXSU5ET1dfQ09OU1RSVUNUT1JTX0ZJTEUgPSAuL0RP
TVdpbmRvd0NvbnN0cnVjdG9ycy5pZGwKIFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19G
SUxFID0gLi9Xb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKIERFRElDQVRFRFdPUktF
UkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFID0gLi9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZUNvbnN0cnVjdG9ycy5pZGwKIFNFUlZJQ0VXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RP
UlNfRklMRSA9IC4vU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbAorV09S
S0xFVEdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFID0gLi9Xb3JrbGV0R2xvYmFsU2NvcGVD
b25zdHJ1Y3RvcnMuaWRsCitQQUlOVFdPUktMRVRHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklM
RSA9IC4vUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCiBJRExfRklMRVNf
VE1QID0gLi9pZGxfZmlsZXMudG1wCiBJRExfQVRUUklCVVRFU19GSUxFID0gJChXZWJDb3JlKS9i
aW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgogCkBAIC0xNTI4LDEwICsxNTM1LDEw
IEBAIGVuZGVmCiAKICQoU1VQUExFTUVOVEFMX01BS0VGSUxFX0RFUFMpIDogJChQUkVQUk9DRVNT
X0lETFNfU0NSSVBUUykgJChKU19CSU5ESU5HX0lETFMpICQoUExBVEZPUk1fRkVBVFVSRV9ERUZJ
TkVTKSBEZXJpdmVkU291cmNlcy5tYWtlCiAJJChmb3JlYWNoIGYsJChKU19CSU5ESU5HX0lETFMp
LEBlY2hvICQoZik+PiQoSURMX0ZJTEVTX1RNUCkkKE5MKSkKLQkkKFBFUkwpICQoV2ViQ29yZSkv
YmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGwgLS1kZWZpbmVzICIkKEZFQVRVUkVf
QU5EX1BMQVRGT1JNX0RFRklORVMpICQoQURESVRJT05BTF9JRExfREVGSU5FUykgTEFOR1VBR0Vf
SkFWQVNDUklQVCIgLS1pZGxGaWxlc0xpc3QgJChJRExfRklMRVNfVE1QKSAtLXN1cHBsZW1lbnRh
bERlcGVuZGVuY3lGaWxlICQoU1VQUExFTUVOVEFMX0RFUEVOREVOQ1lfRklMRSkgLS13aW5kb3dD
b25zdHJ1Y3RvcnNGaWxlICQoV0lORE9XX0NPTlNUUlVDVE9SU19GSUxFKSAtLXdvcmtlckdsb2Jh
bFNjb3BlQ29uc3RydWN0b3JzRmlsZSAkKFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19G
SUxFKSAtLWRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSAkKERFRElD
QVRFRFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFKSAtLXNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgJChTRVJWSUNFV09SS0VSR0xPQkFMU0NPUEVfQ09O
U1RSVUNUT1JTX0ZJTEUpIC0tc3VwcGxlbWVudGFsTWFrZWZpbGVEZXBzICRACisJJChQRVJMKSAk
KFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsIC0tZGVmaW5lcyAi
JChGRUFUVVJFX0FORF9QTEFURk9STV9ERUZJTkVTKSAkKEFERElUSU9OQUxfSURMX0RFRklORVMp
IExBTkdVQUdFX0pBVkFTQ1JJUFQiIC0taWRsRmlsZXNMaXN0ICQoSURMX0ZJTEVTX1RNUCkgLS1z
dXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZSAkKFNVUFBMRU1FTlRBTF9ERVBFTkRFTkNZX0ZJTEUp
IC0td2luZG93Q29uc3RydWN0b3JzRmlsZSAkKFdJTkRPV19DT05TVFJVQ1RPUlNfRklMRSkgLS13
b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgJChXT1JLRVJHTE9CQUxTQ09QRV9DT05T
VFJVQ1RPUlNfRklMRSkgLS1kZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0Zp
bGUgJChERURJQ0FURURXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSkgLS1zZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlICQoU0VSVklDRVdPUktFUkdMT0JB
TFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFKSAtLXdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9y
c0ZpbGUgJChXT1JLTEVUR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUpIC0tcGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlICQoUEFJTlRXT1JLTEVUR0xPQkFMU0NPUEVf
Q09OU1RSVUNUT1JTX0ZJTEUpIC0tc3VwcGxlbWVudGFsTWFrZWZpbGVEZXBzICRACiAJJChERUxF
VEUpICQoSURMX0ZJTEVTX1RNUCkKIAotSlMlLmNwcCBKUyUuaCA6ICUuaWRsICQoSlNfQklORElO
R1NfU0NSSVBUUykgJChJRExfQVRUUklCVVRFU19GSUxFKSAkKFdJTkRPV19DT05TVFJVQ1RPUlNf
RklMRSkgJChXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSkgJChQTEFURk9STV9G
RUFUVVJFX0RFRklORVMpCitKUyUuY3BwIEpTJS5oIDogJS5pZGwgJChKU19CSU5ESU5HU19TQ1JJ
UFRTKSAkKElETF9BVFRSSUJVVEVTX0ZJTEUpICQoV0lORE9XX0NPTlNUUlVDVE9SU19GSUxFKSAk
KFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFKSAkKFdPUktMRVRHTE9CQUxTQ09Q
RV9DT05TVFJVQ1RPUlNfRklMRSkgJChQTEFURk9STV9GRUFUVVJFX0RFRklORVMpCiAJJChQRVJM
KSAkKFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGwgJChJRExf
Q09NTU9OX0FSR1MpIC0tZGVmaW5lcyAiJChGRUFUVVJFX0FORF9QTEFURk9STV9ERUZJTkVTKSAk
KEFERElUSU9OQUxfSURMX0RFRklORVMpIExBTkdVQUdFX0pBVkFTQ1JJUFQiIC0tZ2VuZXJhdG9y
IEpTIC0taWRsQXR0cmlidXRlc0ZpbGUgJChJRExfQVRUUklCVVRFU19GSUxFKSAtLXN1cHBsZW1l
bnRhbERlcGVuZGVuY3lGaWxlICQoU1VQUExFTUVOVEFMX0RFUEVOREVOQ1lfRklMRSkgJDwKIAog
LWluY2x1ZGUgJChTVVBQTEVNRU5UQUxfTUFLRUZJTEVfREVQUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXgg
YWViNjYyZWIyZjAwZTBjMmJkY2ViNWM3YWExZmU1NDBiMGMxYmI3Yy4uMTFiNmMwMjRhZGEwZDFi
NTA4MDIwYzU0ODgyYmNjMjQ4YWQ2NTEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTM4NSw3ICszODUs
NyBAQCBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRTdHJpbmdzLmNwcAogYmluZGluZ3MvanMvSlNE
T01Db252ZXJ0V2ViR0wuY3BwCiBiaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmNwcAogYmluZGlu
Z3MvanMvSlNEZXByZWNhdGVkQ1NTT01WYWx1ZUN1c3RvbS5jcHAKLWJpbmRpbmdzL2pzL0pTQ1NT
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwCitiaW5kaW5ncy9qcy9KU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcAogYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuY3Bw
CiBiaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAKIGJpbmRp
bmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAKQEAgLTQ3OCw2ICs0NzgsNyBAQCBi
aW5kaW5ncy9qcy9KU1dpbmRvd1Byb3h5LmNwcAogYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxT
Y29wZUJhc2UuY3BwCiBiaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcAog
YmluZGluZ3MvanMvSlNXb3JrZXJOYXZpZ2F0b3JDdXN0b20uY3BwCitiaW5kaW5ncy9qcy9KU1dv
cmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwCiBiaW5kaW5ncy9qcy9KU1hNTERvY3VtZW50Q3VzdG9t
LmNwcAogYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKIGJpbmRpbmdzL2pz
L0pTWFBhdGhOU1Jlc29sdmVyQ3VzdG9tLmNwcApAQCAtNjEzLDcgKzYxNCw2IEBAIGNzcy9DU1NO
YW1lZEltYWdlVmFsdWUuY3BwCiBjc3MvQ1NTTmFtZXNwYWNlUnVsZS5jcHAKIGNzcy9DU1NQYWdl
UnVsZS5jcHAKIGNzcy9DU1NQYWludEltYWdlVmFsdWUuY3BwCi1jc3MvQ1NTUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUuY3BwCiBjc3MvQ1NTUGVuZGluZ1N1YnN0aXR1dGlvblZhbHVlLmNwcAogY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAogY3NzL0NTU1Byb3BlcnR5LmNwcApAQCAtMjM3MSw2ICsy
MzcxLDEyIEBAIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3Bw
CiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAK
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCiAKK3dvcmtsZXRzL1dv
cmtsZXQuY3BwCit3b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5jcHAKK3dvcmtsZXRzL1dv
cmtsZXRHbG9iYWxTY29wZS5jcHAKK3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNw
cAord29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisKIHhtbC9ET01QYXJzZXIu
Y3BwCiB4bWwvTmF0aXZlWFBhdGhOU1Jlc29sdmVyLmNwcAogeG1sL1hNTEVycm9ycy5jcHAKQEAg
LTI0ODAsNyArMjQ4Niw5IEBAIEpTQ1NTS2V5ZnJhbWVzUnVsZS5jcHAKIEpTQ1NTTWVkaWFSdWxl
LmNwcAogSlNDU1NOYW1lc3BhY2VSdWxlLmNwcAogSlNDU1NQYWludENhbGxiYWNrLmNwcAotSlND
U1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKK0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUu
Y3BwCitKU1dvcmtsZXQuY3BwCitKU1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKIEpTQ1NTUGFnZVJ1
bGUuY3BwCiBKU0NTU1J1bGUuY3BwCiBKU0NTU1J1bGVMaXN0LmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZjMmQ3MWVmYzc3
MTU3ZGRlM2QzNDRmMmFmZTQ3OTY3MzYxNDZhODMuLmFiYjA0MmU4YzQxODMwOWRjZGY4YWRiMTNm
MTg3OGM4OWM3YmE0NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTEzNTIsMTQgKzEzNTIsMTkgQEAKIAkJNEIzNDgwOTQwRUVG
NTBENDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCMzQ4MDkyMEVFRjUwRDQwMEFDMUI0MSAvKiBJbWFnZVNv
dXJjZUNHLmggKi87IH07CiAJCTRCNUJERDlCMjE2NThBMTUwMERENDI2MiAvKiBDU1NQYWludENh
bGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
QjVCREQ5QTIxNjU4QTE1MDBERDQyNjIgLyogQ1NTUGFpbnRDYWxsYmFjay5oICovOyB9OwogCQk0
QjZCNUNCRDIxNjQwRUZGMDA2MDM4MTcgLyogRE9NQ1NTUGFpbnRXb3JrbGV0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjZCNUNCODIxNjNFQzA3MDA2
MDM4MTcgLyogRE9NQ1NTUGFpbnRXb3JrbGV0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNEI2QjVDQzAyMTY0Mzg2NDAwNjAzODE3IC8qIENTU1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0QjZCNUNCRjIxNjQzODY0MDA2MDM4MTcgLyogQ1NTUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUuaCAqLzsgfTsKKwkJNEI2QjVDQzAyMTY0Mzg2NDAwNjAzODE3IC8qIFBhaW50
V29ya2xldEdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0QjZCNUNCRjIxNjQzODY0MDA2MDM4MTcgLyogUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUuaCAqLzsgfTsKIAkJNEI2RTg3NjkyMTc2RDY5MjAwNDIwRTVFIC8qIENTU1BhaW50SW1h
Z2VWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NEI2RTg3NjgyMTc2RDY5MjAwNDIwRTVFIC8qIENTU1BhaW50SW1hZ2VWYWx1ZS5oICovOyB9Owog
CQk0QjZGQTZGNDBDMzlFNDhDMDAwODcwMTEgLyogU21hcnRSZXBsYWNlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjZGQTZGMjBDMzlFNDhDMDAwODcw
MTEgLyogU21hcnRSZXBsYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNEI3QUU0OTMyMTc3QjU2RjAwQzU5OTU5IC8qIEN1c3RvbVBhaW50SW1h
Z2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCN0FF
NDkyMjE3N0I1NkYwMEM1OTk1OSAvKiBDdXN0b21QYWludEltYWdlLmggKi87IH07CisJCTRCN0Y5
QzUyMjE4M0I1RTUwMDFDRUJBMCAvKiBXb3JrbGV0Q29uc29sZUNsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI3RjlDNTEyMTgzQjVFNTAwMUNF
QkEwIC8qIFdvcmtsZXRDb25zb2xlQ2xpZW50LmggKi87IH07CiAJCTRCQUU5NUIxMEIyRkE5Q0Uw
MEFFRDhBMCAvKiBFZGl0b3JEZWxldGVBY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCQUU5NUIwMEIyRkE5Q0UwMEFFRDhBMCAvKiBFZGl0b3JE
ZWxldGVBY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0QkRBM0ZGRTIxNTFCNkY1MDBGRDY2MDQgLyogRE9NQ1NTQ3VzdG9tUHJvcGVydHlE
ZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0QkRBM0ZGODIxNTFCNkYyMDBGRDY2MDQgLyogRE9NQ1NTQ3VzdG9tUHJvcGVydHlEZXNjcmlw
dG9yLmggKi87IH07CiAJCTRCREEzRkZGMjE1MUI2RjUwMEZENjYwNCAvKiBET01DU1NSZWdpc3Rl
ckN1c3RvbVByb3BlcnR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0QkRBM0ZGOTIxNTFCNkYzMDBGRDY2MDQgLyogRE9NQ1NTUmVnaXN0ZXJDdXN0b21Q
cm9wZXJ0eS5oICovOyB9OwogCQk0QkRBNDAwMTIxNTFCNkY1MDBGRDY2MDQgLyogQ1NTUmVnaXN0
ZXJlZEN1c3RvbVByb3BlcnR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0QkRBM0ZGQjIxNTFCNkY0MDBGRDY2MDQgLyogQ1NTUmVnaXN0ZXJlZEN1c3Rv
bVByb3BlcnR5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJNEJERUEzMjAyMTdFQzU1RjAwNTJERkNEIC8qIFdvcmtsZXQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCREVBMzFGMjE3RUM1NUYwMDUyREZD
RCAvKiBXb3JrbGV0LmggKi87IH07CisJCTRCREVBMzI1MjE3RkUyRTQwMDUyREZDRCAvKiBXb3Jr
bGV0R2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDRCREVBMzI0MjE3RkUyRTQwMDUyREZDRCAvKiBXb3JrbGV0R2xvYmFsU2NvcGUuaCAq
LzsgfTsKKwkJNEJERUEzMjgyMTgwMDNGNzAwNTJERkNEIC8qIFdvcmtsZXRTY3JpcHRDb250cm9s
bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QkRF
QTMyNzIxODAwM0Y3MDA1MkRGQ0QgLyogV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCAqLzsgfTsK
KwkJNEJERUEzMkMyMTgwMzNFQjAwNTJERkNEIC8qIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJERUEzMkIy
MTgwMzNFQjAwNTJERkNEIC8qIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5oICovOyB9OwogCQk0
RDNCMDBBQjIxNUQ2OUE3MDA3NkI5ODMgLyogTWVkaWFSZWNvcmRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEQzQjAwQTkyMTVENjlBNzAwNzZCOTgz
IC8qIE1lZGlhUmVjb3JkZXIuaCAqLzsgfTsKIAkJNEQzQjAwQUYyMTVENkE2OTAwNzZCOTgzIC8q
IEJsb2JFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNEQzQjAwQUQyMTVENkE2OTAwNzZCOTgzIC8qIEJsb2JFdmVudC5oICovOyB9OwogCQk0REI3
MTMwRDIxNkVDQjREMDA5NkE0REQgLyogTWVkaWFSZWNvcmRlckVycm9yRXZlbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDREQjcxMzBDMjE2RUMyQkQw
MDk2QTRERCAvKiBNZWRpYVJlY29yZGVyRXJyb3JFdmVudC5oICovOyB9OwpAQCAtNzkwMSwxNiAr
NzkwNiwxOCBAQAogCQk0QjZCNUNCNjIxNjNEQzFBMDA2MDM4MTcgLyogRE9NQ1NTUGFpbnRXb3Jr
bGV0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBET01DU1NQYWludFdvcmtsZXQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0QjZCNUNCODIxNjNFQzA3MDA2MDM4MTcgLyogRE9NQ1NTUGFpbnRXb3JrbGV0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERPTUNTU1BhaW50V29ya2xldC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0QjZCNUNCOTIxNjNFRDMyMDA2MDM4MTcgLyogRE9NQ1NTUGFpbnRXb3Jr
bGV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTUNTU1BhaW50V29ya2xldC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTRCNkI1Q0JFMjE2NDM0RkIwMDYwMzgxNyAvKiBKU0NT
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk0QjZCNUNCRjIxNjQzODY0MDA2MDM4MTcgLyogQ1NTUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNEI2QjVDQzEyMTY0MzlDRjAwNjAzODE3IC8q
IENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NEI2QjVDQzMyMTY0M0E4RTAwNjAzODE3IC8qIENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTRCNkI1Q0JFMjE2NDM0RkIwMDYwMzgxNyAvKiBKU1BhaW50V29ya2xldEds
b2JhbFNjb3BlQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QjZCNUNC
RjIxNjQzODY0MDA2MDM4MTcgLyogUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNEI2QjVDQzEyMTY0MzlDRjAwNjAzODE3IC8qIFBhaW50V29ya2xldEdsb2JhbFNjb3Bl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEI2QjVDQzMyMTY0M0E4RTAwNjAzODE3IC8qIFBh
aW50V29ya2xldEdsb2JhbFNjb3BlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQYWludFdvcmtsZXRHbG9iYWxTY29wZS5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCNkU4NzY4MjE3NkQ2OTIwMDQyMEU1
RSAvKiBDU1NQYWludEltYWdlVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTUGFpbnRJbWFnZVZh
bHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCNkU4NzZCMjE3NkQ4QTEwMDQy
MEU1RSAvKiBDU1NQYWludEltYWdlVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTUGFp
bnRJbWFnZVZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI2RkE2RjIw
QzM5RTQ4QzAwMDg3MDExIC8qIFNtYXJ0UmVwbGFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTbWFydFJlcGxhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NEI2RkE2RjYwQzM5RTRBMTAwMDg3MDExIC8qIFNtYXJ0UmVwbGFjZUNGLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNtYXJ0UmVwbGFjZUNGLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI3QUU0OTIyMTc3QjU2RjAwQzU5OTU5IC8qIEN1c3RvbVBh
aW50SW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3VzdG9tUGFpbnRJbWFnZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0QjdBRTQ5NTIxNzdCNjNFMDBDNTk5NTkgLyogQ3VzdG9tUGFp
bnRJbWFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDdXN0b21QYWludEltYWdlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEI3RjlDNTEyMTgzQjVFNTAwMUNFQkEwIC8qIFdv
cmtsZXRDb25zb2xlQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtsZXRDb25zb2xlQ2xpZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRCN0Y5QzU0MjE4M0I2MzQwMDFDRUJB
MCAvKiBXb3JrbGV0Q29uc29sZUNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrbGV0
Q29uc29sZUNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCQUU5NUIw
MEIyRkE5Q0UwMEFFRDhBMCAvKiBFZGl0b3JEZWxldGVBY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRWRpdG9yRGVsZXRlQWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTRCREEzRkY1MjE1MUI2RjAwMEZENjYwNCAvKiBET01DU1NSZWdpc3RlckN1
c3RvbVByb3BlcnR5LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBET01DU1NSZWdpc3RlckN1
c3RvbVByb3BlcnR5LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEJEQTNGRjcy
MTUxQjZGMTAwRkQ2NjA0IC8qIERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9w
ZXJ0eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03OTE4LDYgKzc5MjUsMTYg
QEAKIAkJNEJEQTNGRjkyMTUxQjZGMzAwRkQ2NjA0IC8qIERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJv
cGVydHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NQ1NTUmVnaXN0ZXJD
dXN0b21Qcm9wZXJ0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QkRBM0ZGQTIx
NTFCNkYzMDBGRDY2MDQgLyogRE9NQ1NTQ3VzdG9tUHJvcGVydHlEZXNjcmlwdG9yLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBET01DU1NDdXN0b21Qcm9wZXJ0eURlc2NyaXB0b3IuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QkRBM0ZGQjIxNTFCNkY0MDBGRDY2MDQgLyog
Q1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0QkRFQTMxQzIxN0VCQ0Y1MDA1MkRGQ0QgLyogV29ya2xldC5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
V29ya2xldC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRCREVBMzFGMjE3RUM1
NUYwMDUyREZDRCAvKiBXb3JrbGV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtsZXQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEJERUEzMjMyMTdFQzk2QTAwNTJERkNEIC8qIFdvcmts
ZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2xldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTRCREVBMzI0MjE3RkUyRTQwMDUyREZDRCAvKiBXb3JrbGV0R2xvYmFsU2Nv
cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2xldEdsb2JhbFNjb3BlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTRCREVBMzI2MjE3RkUyRkEwMDUyREZDRCAvKiBXb3JrbGV0R2xvYmFs
U2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2xldEdsb2JhbFNjb3BlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEJERUEzMjcyMTgwMDNGNzAwNTJERkNEIC8qIFdv
cmtsZXRTY3JpcHRDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtsZXRTY3JpcHRDb250
cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRCREVBMzI5MjE4MDA0MEMw
MDUyREZDRCAvKiBXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTRCREVBMzJBMjE4MDEwNzIwMDUyREZDRCAvKiBXb3JrbGV0R2xvYmFsU2NvcGUuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFdvcmtsZXRHbG9iYWxTY29wZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTRCREVBMzJCMjE4MDMzRUIwMDUyREZDRCAvKiBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTRCREVBMzJEMjE4MDM0MDUwMDUyREZDRCAvKiBKU1dvcmtsZXRHbG9i
YWxTY29wZUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXb3JrbGV0R2xvYmFsU2NvcGVC
YXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEQzQjAwQTQyMTVENjEwNDAw
NzZCOTgzIC8qIE1lZGlhUmVjb3JkZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlh
UmVjb3JkZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RDNCMDBBNjIxNUQ2
NDVCMDA3NkI5ODMgLyogQmxvYkV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBCbG9i
RXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RDNCMDBBODIxNUQ2OUE2
MDA3NkI5ODMgLyogTWVkaWFSZWNvcmRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBNZWRpYVJlY29yZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE1ODAxLDYgKzE1ODE4LDcgQEAKIAkJCQlCMjIyNzdDQTBEMDBCRjFFMDA3MUI3ODIgLyog
c3ZnICovLAogCQkJCTQxN0RBNENEMTM3MzQyMDQwMDdDNTdGQiAvKiB0ZXN0aW5nICovLAogCQkJ
CTJFNDM0NjMxMEY1NDZBNjgwMEIwRjFCQSAvKiB3b3JrZXJzICovLAorCQkJCTRCREVBMzE4MjE3
RUJCODgwMDUyREZDRCAvKiB3b3JrbGV0cyAqLywKIAkJCQlFMUYwNDI0MzA5ODM5Mzg5MDA2Njk0
RUEgLyogeG1sICovLAogCQkJCTY1NjU4MEVDMDlEMTJCMjAwMDBFNjFENyAvKiBEZXJpdmVkIFNv
dXJjZXMgKi8sCiAJCQkJMDg5QzE2NjVGRTg0MTE1OEMwMkFBQzA3IC8qIFJlc291cmNlcyAqLywK
QEAgLTE4MDM2LDYgKzE4MDU0LDI2IEBACiAJCQlwYXRoID0gYW5pbWF0aW9uOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJNEJERUEzMTgyMTdFQkI4ODAwNTJERkNEIC8qIHdv
cmtsZXRzICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk0
QjZCNUNDMTIxNjQzOUNGMDA2MDM4MTcgLyogUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwICov
LAorCQkJCTRCNkI1Q0JGMjE2NDM4NjQwMDYwMzgxNyAvKiBQYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5oICovLAorCQkJCTRCNkI1Q0MzMjE2NDNBOEUwMDYwMzgxNyAvKiBQYWludFdvcmtsZXRHbG9i
YWxTY29wZS5pZGwgKi8sCisJCQkJNEJERUEzMjMyMTdFQzk2QTAwNTJERkNEIC8qIFdvcmtsZXQu
Y3BwICovLAorCQkJCTRCREVBMzFGMjE3RUM1NUYwMDUyREZDRCAvKiBXb3JrbGV0LmggKi8sCisJ
CQkJNEJERUEzMUMyMTdFQkNGNTAwNTJERkNEIC8qIFdvcmtsZXQuaWRsICovLAorCQkJCTRCN0Y5
QzU0MjE4M0I2MzQwMDFDRUJBMCAvKiBXb3JrbGV0Q29uc29sZUNsaWVudC5jcHAgKi8sCisJCQkJ
NEI3RjlDNTEyMTgzQjVFNTAwMUNFQkEwIC8qIFdvcmtsZXRDb25zb2xlQ2xpZW50LmggKi8sCisJ
CQkJNEJERUEzMjYyMTdGRTJGQTAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxTY29wZS5jcHAgKi8s
CisJCQkJNEJERUEzMjQyMTdGRTJFNDAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxTY29wZS5oICov
LAorCQkJCTRCREVBMzJBMjE4MDEwNzIwMDUyREZDRCAvKiBXb3JrbGV0R2xvYmFsU2NvcGUuaWRs
ICovLAorCQkJCTRCREVBMzI5MjE4MDA0MEMwMDUyREZDRCAvKiBXb3JrbGV0U2NyaXB0Q29udHJv
bGxlci5jcHAgKi8sCisJCQkJNEJERUEzMjcyMTgwMDNGNzAwNTJERkNEIC8qIFdvcmtsZXRTY3Jp
cHRDb250cm9sbGVyLmggKi8sCisJCQkpOworCQkJcGF0aCA9IHdvcmtsZXRzOworCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJNEQzQjAwQTAyMTVENUMwRjAwNzZCOTgzIC8qIG1l
ZGlhcmVjb3JkZXIgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApA
QCAtMjQ0MDksNiArMjQ0NDcsOCBAQAogCQkJCUJDQkZCNTNCMERDRDI5Q0YwMDE5QjNFNSAvKiBK
U1dpbmRvd1Byb3h5LmggKi8sCiAJCQkJRTFDMzZEMzIwRUIwQTA5NDAwNzQxMEJDIC8qIEpTV29y
a2VyR2xvYmFsU2NvcGVCYXNlLmNwcCAqLywKIAkJCQlFMUMzNkQzMzBFQjBBMDk0MDA3NDEwQkMg
LyogSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuaCAqLywKKwkJCQk0QkRFQTMyRDIxODAzNDA1MDA1
MkRGQ0QgLyogSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcCAqLywKKwkJCQk0QkRFQTMyQjIx
ODAzM0VCMDA1MkRGQ0QgLyogSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmggKi8sCiAJCQkJNzA5
QTAxRkQxRTNEMEJDQzAwNkIwRDRDIC8qIE1vZHVsZUZldGNoRmFpbHVyZUtpbmQuaCAqLywKIAkJ
CQk0MUI0NTlFRDFGNTVFQkM3MDAwMEY2RkQgLyogUmVhZGFibGVTdHJlYW0uY3BwICovLAogCQkJ
CTQxQjQ1OURBMUY0Q0FEQjkwMDAwRjZGRCAvKiBSZWFkYWJsZVN0cmVhbS5oICovLApAQCAtMjQ0
NDksMTIgKzI0NDg5LDEyIEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk3Q0QzNDQxQjFGMzJERTMw
MDAwRENENDkgLyogQ2FjaGVkIEF0dHJpYnV0ZXMgdy8gSW52YWxpZGF0aW9uICovLAogCQkJCTdD
M0Q4RUU0MUUwOEJBQkUwMDIzQjA4NCAvKiBHQyAvIFdyYXBwaW5nIE9ubHkgKi8sCi0JCQkJNEI2
QjVDQkUyMTY0MzRGQjAwNjAzODE3IC8qIEpTQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0
b20uY3BwICovLAogCQkJCTlCQzVGOURGMUQ1QUFGNkEwMDJCNzQ5RCAvKiBKU0N1c3RvbUVsZW1l
bnRSZWdpc3RyeUN1c3RvbS5jcHAgKi8sCiAJCQkJQkNEOUMyNUUwQzE3QUE2NzAwNUM5MEEyIC8q
IEpTRE9NV2luZG93Q3VzdG9tLmNwcCAqLywKIAkJCQk2NTJGQkJCQjBERTI3Q0I2MDAwMUQzODYg
LyogSlNET01XaW5kb3dDdXN0b20uaCAqLywKIAkJCQlCQzU4MjNGNDBDMEE5OERGMDA1M0YxQjUg
LyogSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAgKi8sCiAJCQkJQkNFMUM0M0YwRDk4MzBGNDAwM0Iw
MkYyIC8qIEpTTG9jYXRpb25DdXN0b20uY3BwICovLAorCQkJCTRCNkI1Q0JFMjE2NDM0RkIwMDYw
MzgxNyAvKiBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcCAqLywKIAkJCQk0MThD
Mzk1RDFDOEYwQUFCMDA1MUM4QTMgLyogSlNSZWFkYWJsZVN0cmVhbVNvdXJjZUN1c3RvbS5jcHAg
Ki8sCiAJCQkJNDZCQ0JCQkUyMDg1MDA1QjAwNzEwNjM4IC8qIEpTUmVtb3RlRE9NV2luZG93Q3Vz
dG9tLmNwcCAqLywKIAkJCSk7CkBAIC0yNjA1Miw5ICsyNjA5Miw2IEBACiAJCQkJNEI1QkREOTky
MTY1ODhFNTAwREQ0MjYyIC8qIENTU1BhaW50Q2FsbGJhY2suaWRsICovLAogCQkJCTRCNkU4NzZC
MjE3NkQ4QTEwMDQyMEU1RSAvKiBDU1NQYWludEltYWdlVmFsdWUuY3BwICovLAogCQkJCTRCNkU4
NzY4MjE3NkQ2OTIwMDQyMEU1RSAvKiBDU1NQYWludEltYWdlVmFsdWUuaCAqLywKLQkJCQk0QjZC
NUNDMTIxNjQzOUNGMDA2MDM4MTcgLyogQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwICov
LAotCQkJCTRCNkI1Q0JGMjE2NDM4NjQwMDYwMzgxNyAvKiBDU1NQYWludFdvcmtsZXRHbG9iYWxT
Y29wZS5oICovLAotCQkJCTRCNkI1Q0MzMjE2NDNBOEUwMDYwMzgxNyAvKiBDU1NQYWludFdvcmts
ZXRHbG9iYWxTY29wZS5pZGwgKi8sCiAJCQkJOTQxODI3OEMxRDhDQUU5NTAwNDkyNzY0IC8qIENT
U1BlbmRpbmdTdWJzdGl0dXRpb25WYWx1ZS5jcHAgKi8sCiAJCQkJOTQxODI3OEQxRDhDQUU5NTAw
NDkyNzY0IC8qIENTU1BlbmRpbmdTdWJzdGl0dXRpb25WYWx1ZS5oICovLAogCQkJCUE4MEU2Q0RC
MEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NQcmltaXRpdmVWYWx1ZS5jcHAgKi8sCkBAIC0yODA1NSw3
ICsyODA5Miw2IEBACiAJCQkJQTgwRTZEMDAwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1BhZ2VSdWxl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0QjVCREQ5QjIxNjU4QTE1MDBERDQyNjIgLyogQ1NTUGFp
bnRDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEI2RTg3NjkyMTc2RDY5MjAwNDIwRTVF
IC8qIENTU1BhaW50SW1hZ2VWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNEI2QjVDQzAyMTY0
Mzg2NDAwNjAzODE3IC8qIENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5NDZEMzcyRTFENkNCMjk0MDA3NzA4NEYgLyogQ1NTUGFyc2VyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFNEE3OTk1MjIwRUU0QjE0MDBDMTk1NjggLyogQ1NTUGFyc2VyQ29udGV4dC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTQ5Qzc3MDExRDZFMUQ5ODAwQzBERTRGIC8qIENTU1BhcnNl
ckZhc3RQYXRocy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTc1OCw2ICsyOTc5NCw3IEBACiAJCQkJ
RTFDMzYyRUYwRUFGMkFBOTAwNzQxMEJDIC8qIEpTV29ya2VyTG9jYXRpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCUUxMjcxQTU4MEVFRUNERTQwMEY2MTIxMyAvKiBKU1dvcmtlck5hdmlnYXRvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGMTc1MDYxRjM1OEJGNzAwQzc0OTUwIC8qIEpTV29ya2Vy
VHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNEJERUEzMkMyMTgwMzNFQjAwNTJERkNEIC8qIEpT
V29ya2xldEdsb2JhbFNjb3BlQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M0Qzk2REQxQUQ0
NDgzNTAwMzY1QTYwIC8qIEpTV3JpdGFibGVTdHJlYW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTgz
NThDQjcwMUM1MzI3NzUwMEUwQzJEOCAvKiBKU1hNTERvY3VtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzM0OEJENDBEQjdGODA0MDA0QUJBQjkgLyogSlNYTUxIdHRwUmVxdWVzdC5oIGluIEhl
YWRlcnMgKi8sCkBAIC0zMDE0NCw2ICszMDE4MSw3IEBACiAJCQkJMDg4NTA2N0YxMURBMDQ1QjAw
MTgyQjk4IC8qIFBhaW50SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg4NTA2ODAxMURBMDQ1
QjAwMTgyQjk4IC8qIFBhaW50UGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTRCMUUxM0VCMjE3
OTM3QjMwMDQyQ0Y5OCAvKiBQYWludFJlbmRlcmluZ0NvbnRleHQyRC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNEI2QjVDQzAyMTY0Mzg2NDAwNjAzODE3IC8qIFBhaW50V29ya2xldEdsb2JhbFNjb3Bl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODBFNkNGQjBBMTk4OUNBMDA3RkI4QzUgLyogUGFpci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwQTMxMkIwMjZGNzAwQzFBMzU5IC8qIFBhbm5lci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwMUExMkIwMjY3NjAwQzFBMzU5IC8qIFBhbm5lck5v
ZGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzE1NjIsNiArMzE2MDAsMTAgQEAKIAkJCQk5N0FBQkQy
RDE0RkEwOUQ1MDA3NDU3QUUgLyogV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCBp
biBIZWFkZXJzICovLAogCQkJCUE1NEEwQzY4MURCODA3RDkwMDE3QTkwQiAvKiBXb3JrZXJUb1Bh
Z2VGcm9udGVuZENoYW5uZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRjE3NEZFMUYzNTg5OTIw
MEM3NDk1MCAvKiBXb3JrZXJUeXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0QkRFQTMyMDIxN0VD
NTVGMDA1MkRGQ0QgLyogV29ya2xldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNEI3RjlDNTIyMTgz
QjVFNTAwMUNFQkEwIC8qIFdvcmtsZXRDb25zb2xlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk0QkRFQTMyNTIxN0ZFMkU0MDA1MkRGQ0QgLyogV29ya2xldEdsb2JhbFNjb3BlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk0QkRFQTMyODIxODAwM0Y3MDA1MkRGQ0QgLyogV29ya2xldFNjcmlwdENv
bnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTI0MDk5RTY0OTIwMDU2RTU4MSAv
KiBXcmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQx
NkU2RkU5MUJCRDEyRTUwMDBBNjA1MyAvKiBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MTZFNkZFODFCQkQxMkRGMDAwQTYwNTMgLyogV3JpdGFibGVTdHJlYW1J
bnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVD
dXN0b20uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOWZhMzQ1YTVlMzhmMzlm
M2MxZGVkY2Q1M2I2ZmEzNzM4NTUxM2I3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTMzICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiSlNDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgotCi0j
aWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCi0KLSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2lu
Y2x1ZGUgIkpTQ1NTUGFpbnRDYWxsYmFjay5oIgotI2luY2x1ZGUgIkpTRE9NQ29udmVydENhbGxi
YWNrcy5oIgotI2luY2x1ZGUgIkpTRE9NQ29udmVydFNlcXVlbmNlcy5oIgotI2luY2x1ZGUgPHd0
Zi9TZXRGb3JTY29wZS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci11c2luZyBuYW1lc3BhY2Ug
SlNDOwotCi1zdGF0aWMgSlNWYWx1ZSB0aHJvd0ludmFsaWRNb2RpZmljYXRpb25FcnJvcihFeGVj
U3RhdGUmIHN0YXRlLCBUaHJvd1Njb3BlJiBzY29wZSwgQVNDSUlMaXRlcmFsIG1lc3NhZ2UpCi17
Ci0gICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKLSAgICB0aHJvd0V4Y2VwdGlvbigmc3Rh
dGUsIHNjb3BlLCBjcmVhdGVET01FeGNlcHRpb24oJnN0YXRlLCBJbnZhbGlkTW9kaWZpY2F0aW9u
RXJyb3IsIG1lc3NhZ2UpKTsKLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQotdm9pZCBK
U0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihKU0M6
OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQotewotICAgIGZvciAoYXV0byYgcmVnaXN0ZXJlZCA6IHdy
YXBwZWQoKS5wYWludERlZmluaXRpb25NYXAoKS52YWx1ZXMoKSkKLSAgICAgICAgcmVnaXN0ZXJl
ZC0+cGFpbnRDYWxsYmFjay0+dmlzaXRKU0Z1bmN0aW9uKHZpc2l0b3IpOwotfQotCi0vLyBodHRw
czovL2RyYWZ0cy5jc3MtaG91ZGluaS5vcmcvY3NzLXBhaW50LWFwaS8jcmVnaXN0ZXJpbmctY3Vz
dG9tLXBhaW50Ci1KU1ZhbHVlIEpTQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVy
UGFpbnQoRXhlY1N0YXRlJiBzdGF0ZSkKLXsKLSAgICB1c2luZyBQYWludERlZmluaXRpb24gPSBD
U1NQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6UGFpbnREZWZpbml0aW9uOwotCi0gICAgQ1NTUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtsZXRHbG9iYWxTY29wZSA9IHdyYXBwZWQoKTsKLSAg
ICBWTSYgdm0gPSBzdGF0ZS52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKLQotICAgIGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAyKSkK
LSAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwotCi0gICAgQXRvbWljU3RyaW5nIG5hbWUoc3Rh
dGUudW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJpbmcoJnN0YXRlKS0+dG9BdG9taWNTdHJpbmco
JnN0YXRlKSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKLSAg
ICBKU1ZhbHVlIGNvbnN0cnVjdG9yVmFsdWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKTsK
LSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwotCi0gICAgaWYgKG5h
bWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29w
ZSwgIlRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IG5vdCBiZSB0aGUgZW1wdHkgc3RyaW5nIl9zKTsK
LQotICAgIGF1dG8mIHBhaW50RGVmaW5pdGlvbk1hcCA9IHdvcmtsZXRHbG9iYWxTY29wZS5wYWlu
dERlZmluaXRpb25NYXAoKTsKLQotICAgIGlmIChwYWludERlZmluaXRpb25NYXAuY29udGFpbnMo
bmFtZSkpCi0gICAgICAgIHJldHVybiB0aHJvd0ludmFsaWRNb2RpZmljYXRpb25FcnJvcihzdGF0
ZSwgc2NvcGUsICJUaGlzIG5hbWUgaGFzIGFscmVhZHkgYmVlbiByZWdpc3RlcmVkIl9zKTsKLQot
ICAgIFZlY3RvcjxTdHJpbmc+IGlucHV0UHJvcGVydGllczsKLQotICAgIEpTVmFsdWUgaW5wdXRQ
cm9wZXJ0aWVzSXRlcmFibGVWYWx1ZSA9IGNvbnN0cnVjdG9yVmFsdWUuZ2V0KCZzdGF0ZSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJpbnB1dFByb3BlcnRpZXMiKSk7Ci0gICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKLQotICAgIGlmICghaW5wdXRQcm9wZXJ0
aWVzSXRlcmFibGVWYWx1ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICBpbnB1dFByb3BlcnRpZXMg
PSBjb252ZXJ0PElETFNlcXVlbmNlPElETERPTVN0cmluZz4+KHN0YXRlLCBpbnB1dFByb3BlcnRp
ZXNJdGVyYWJsZVZhbHVlKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVl
KCkpOwotCi0gICAgLy8gRklYTUU6IFZhbGlkYXRlIGlucHV0IHByb3BlcnRpZXMgaGVyZSAoc3Rl
cCA3KS4KLQotICAgIFZlY3RvcjxTdHJpbmc+IGlucHV0QXJndW1lbnRzOwotCi0gICAgSlNWYWx1
ZSBpbnB1dEFyZ3VtZW50c0l0ZXJhYmxlVmFsdWUgPSBjb25zdHJ1Y3RvclZhbHVlLmdldCgmc3Rh
dGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiaW5wdXRBcmd1bWVudHMiKSk7Ci0gICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKLQotICAgIGlmICghaW5wdXRB
cmd1bWVudHNJdGVyYWJsZVZhbHVlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIGlucHV0QXJndW1l
bnRzID0gY29udmVydDxJRExTZXF1ZW5jZTxJRExET01TdHJpbmc+PihzdGF0ZSwgaW5wdXRBcmd1
bWVudHNJdGVyYWJsZVZhbHVlKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1Zh
bHVlKCkpOwotCi0gICAgLy8gRklYTUU6IFBhcnNlIHN5bnRheCBmb3IgaW5wdXRBcmd1bWVudHMg
aGVyZSAoc3RlcHMgMTEgYW5kIDEyKS4KLQotICAgIEpTVmFsdWUgY29udGV4dE9wdGlvbnNWYWx1
ZSA9IGNvbnN0cnVjdG9yVmFsdWUuZ2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygm
dm0sICJjb250ZXh0T3B0aW9ucyIpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBK
U1ZhbHVlKCkpOwotICAgIFVOVVNFRF9QQVJBTShjb250ZXh0T3B0aW9uc1ZhbHVlKTsKLQotICAg
IC8vIEZJWE1FOiBDb252ZXJ0IHRvIFBhaW50UmVuZGVyaW5nQ29udGV4dDJEU2V0dGluZ3MgaGVy
ZSAoc3RlcCAxNCkuCi0KLSAgICBpZiAoIWNvbnN0cnVjdG9yVmFsdWUuaXNDb25zdHJ1Y3Rvcih2
bSkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCAiVGhlIHNl
Y29uZCBhcmd1bWVudCBtdXN0IGJlIGEgY29uc3RydWN0b3IiX3MpOwotCi0gICAgSlNWYWx1ZSBw
cm90b3R5cGVWYWx1ZSA9IGNvbnN0cnVjdG9yVmFsdWUuZ2V0KCZzdGF0ZSwgdm0ucHJvcGVydHlO
YW1lcy0+cHJvdG90eXBlKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVl
KCkpOwotCi0gICAgaWYgKCFwcm90b3R5cGVWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgIlRoZSBzZWNvbmQgYXJndW1lbnQgbXVz
dCBoYXZlIGEgcHJvdG90eXBlIHRoYXQgaXMgYW4gb2JqZWN0Il9zKTsKLQotICAgIEpTVmFsdWUg
cGFpbnRWYWx1ZSA9IHByb3RvdHlwZVZhbHVlLmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoJnZtLCAicGFpbnQiKSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNW
YWx1ZSgpKTsKLQotICAgIGlmIChwYWludFZhbHVlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCAiVGhlIGNsYXNzIG11c3QgaGF2ZSBh
IHBhaW50IG1ldGhvZCJfcyk7Ci0KLSAgICBSZWZQdHI8SlNDU1NQYWludENhbGxiYWNrPiBwYWlu
dCA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU0NTU1BhaW50Q2FsbGJhY2s+PihzdGF0
ZSwgcGFpbnRWYWx1ZSwgKmdsb2JhbE9iamVjdCgpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBKU1ZhbHVlKCkpOwotCi0gICAgYXV0byBwYWludERlZmluaXRpb24gPSBzdGQ6OnVu
aXF1ZV9wdHI8UGFpbnREZWZpbml0aW9uPihuZXcgUGFpbnREZWZpbml0aW9uIHsgbmFtZSwgcGFp
bnQucmVsZWFzZU5vbk51bGwoKSwgaW5wdXRQcm9wZXJ0aWVzLCBpbnB1dEFyZ3VtZW50cyB9KTsK
LSAgICBwYWludERlZmluaXRpb25NYXAuYWRkKG5hbWUsIFdURk1vdmUocGFpbnREZWZpbml0aW9u
KSk7Ci0KLSAgICAvLyBGSVhNRTogY29uc3RydWN0IGRvY3VtZW50RGVmaW5pdGlvbiAoc3RlcCAy
MikuCi0KLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQotfQotI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKaW5kZXggZWJi
MmY2MWRkY2MzMjVhMDFkYzUyNGIyYjUyZWI4YjExNDE0MzA1OC4uN2RkYTI1ODZlZjdiMzVjNzU2
YjFiMDIzOWYxYzFmNzYxNmRlMzExMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkpT
UmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmgiCiAjaW5jbHVkZSAiSlNSZW1vdGVE
T01XaW5kb3cuaCIKICNpbmNsdWRlICJKU1dvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAi
SlNXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJSZWplY3RlZFByb21pc2VUcmFja2Vy
LmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlN0cnVj
dHVyZWRDbG9uZS5oIgpAQCAtMTk0LDYgKzE5NSwxMCBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBKU0RPTUdsb2JhbE9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIGlmIChpbmhlcml0czxKU1dvcmtlckdsb2JhbFNjb3Bl
QmFzZT4odm0oKSkpCiAgICAgICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgSlNXb3JrZXJHbG9iYWxT
Y29wZUJhc2UqPih0aGlzKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworI2lmIEVOQUJMRShD
U1NfUEFJTlRJTkdfQVBJKQorICAgIGlmIChpbmhlcml0czxKU1dvcmtsZXRHbG9iYWxTY29wZUJh
c2U+KHZtKCkpKQorICAgICAgICByZXR1cm4ganNDYXN0PGNvbnN0IEpTV29ya2xldEdsb2JhbFNj
b3BlQmFzZSo+KHRoaXMpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisjZW5kaWYKICAgICBk
YXRhTG9nKCJVbmV4cGVjdGVkIGdsb2JhbCBvYmplY3Q6ICIsIEpTVmFsdWUodGhpcyksICJcbiIp
OwogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BhaW50V29ya2xldEds
b2JhbFNjb3BlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhOGY4YWJjMTkwYzA0MjQ0
Yjg3MTg0NTRhOWM2NTg0ZjkyNmRhNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcApAQCAtMCww
ICsxLDEzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
LmgiCisKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKworI2luY2x1ZGUgIkRvY3VtZW50
LmgiCisjaW5jbHVkZSAiSlNDU1NQYWludENhbGxiYWNrLmgiCisjaW5jbHVkZSAiSlNET01Db252
ZXJ0Q2FsbGJhY2tzLmgiCisjaW5jbHVkZSAiSlNET01Db252ZXJ0U2VxdWVuY2VzLmgiCisjaW5j
bHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5h
bWVzcGFjZSBKU0M7CisKK3N0YXRpYyBKU1ZhbHVlIHRocm93SW52YWxpZE1vZGlmaWNhdGlvbkVy
cm9yKEV4ZWNTdGF0ZSYgc3RhdGUsIFRocm93U2NvcGUmIHNjb3BlLCBBU0NJSUxpdGVyYWwgbWVz
c2FnZSkKK3sKKyAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOworICAgIHRocm93RXhjZXB0
aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZURPTUV4Y2VwdGlvbigmc3RhdGUsIEludmFsaWRNb2Rp
ZmljYXRpb25FcnJvciwgbWVzc2FnZSkpOworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQor
Cit2b2lkIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVu
KEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgZm9yIChhdXRvJiByZWdpc3RlcmVk
IDogd3JhcHBlZCgpLnBhaW50RGVmaW5pdGlvbk1hcCgpLnZhbHVlcygpKQorICAgICAgICByZWdp
c3RlcmVkLT5wYWludENhbGxiYWNrLT52aXNpdEpTRnVuY3Rpb24odmlzaXRvcik7Cit9CisKKy8v
IGh0dHBzOi8vZHJhZnRzLmNzcy1ob3VkaW5pLm9yZy9jc3MtcGFpbnQtYXBpLyNyZWdpc3Rlcmlu
Zy1jdXN0b20tcGFpbnQKK0pTVmFsdWUgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6cmVnaXN0
ZXJQYWludChFeGVjU3RhdGUmIHN0YXRlKQoreworICAgIHVzaW5nIFBhaW50RGVmaW5pdGlvbiA9
IFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb247CisKKyAgICBQYWludFdv
cmtsZXRHbG9iYWxTY29wZSYgd29ya2xldEdsb2JhbFNjb3BlID0gd3JhcHBlZCgpOworICAgIFZN
JiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDIpKQorICAg
ICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisKKyAgICBBdG9taWNTdHJpbmcgbmFtZShzdGF0ZS51
bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT50b0F0b21pY1N0cmluZygmc3Rh
dGUpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOworICAgIEpT
VmFsdWUgY29uc3RydWN0b3JWYWx1ZSA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CisKKyAgICBpZiAobmFtZS5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCAi
VGhlIGZpcnN0IGFyZ3VtZW50IG11c3Qgbm90IGJlIHRoZSBlbXB0eSBzdHJpbmciX3MpOworCisg
ICAgYXV0byYgcGFpbnREZWZpbml0aW9uTWFwID0gd29ya2xldEdsb2JhbFNjb3BlLnBhaW50RGVm
aW5pdGlvbk1hcCgpOworCisgICAgaWYgKHBhaW50RGVmaW5pdGlvbk1hcC5jb250YWlucyhuYW1l
KSkKKyAgICAgICAgcmV0dXJuIHRocm93SW52YWxpZE1vZGlmaWNhdGlvbkVycm9yKHN0YXRlLCBz
Y29wZSwgIlRoaXMgbmFtZSBoYXMgYWxyZWFkeSBiZWVuIHJlZ2lzdGVyZWQiX3MpOworCisgICAg
VmVjdG9yPFN0cmluZz4gaW5wdXRQcm9wZXJ0aWVzOworCisgICAgSlNWYWx1ZSBpbnB1dFByb3Bl
cnRpZXNJdGVyYWJsZVZhbHVlID0gY29uc3RydWN0b3JWYWx1ZS5nZXQoJnN0YXRlLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZ2bSwgImlucHV0UHJvcGVydGllcyIpKTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOworCisgICAgaWYgKCFpbnB1dFByb3BlcnRpZXNJ
dGVyYWJsZVZhbHVlLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIGlucHV0UHJvcGVydGllcyA9IGNv
bnZlcnQ8SURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj4oc3RhdGUsIGlucHV0UHJvcGVydGllc0l0
ZXJhYmxlVmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7
CisKKyAgICAvLyBGSVhNRTogVmFsaWRhdGUgaW5wdXQgcHJvcGVydGllcyBoZXJlIChzdGVwIDcp
LgorCisgICAgVmVjdG9yPFN0cmluZz4gaW5wdXRBcmd1bWVudHM7CisKKyAgICBKU1ZhbHVlIGlu
cHV0QXJndW1lbnRzSXRlcmFibGVWYWx1ZSA9IGNvbnN0cnVjdG9yVmFsdWUuZ2V0KCZzdGF0ZSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJpbnB1dEFyZ3VtZW50cyIpKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOworCisgICAgaWYgKCFpbnB1dEFyZ3Vt
ZW50c0l0ZXJhYmxlVmFsdWUuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgaW5wdXRBcmd1bWVudHMg
PSBjb252ZXJ0PElETFNlcXVlbmNlPElETERPTVN0cmluZz4+KHN0YXRlLCBpbnB1dEFyZ3VtZW50
c0l0ZXJhYmxlVmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUo
KSk7CisKKyAgICAvLyBGSVhNRTogUGFyc2Ugc3ludGF4IGZvciBpbnB1dEFyZ3VtZW50cyBoZXJl
IChzdGVwcyAxMSBhbmQgMTIpLgorCisgICAgSlNWYWx1ZSBjb250ZXh0T3B0aW9uc1ZhbHVlID0g
Y29uc3RydWN0b3JWYWx1ZS5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwg
ImNvbnRleHRPcHRpb25zIikpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFs
dWUoKSk7CisgICAgVU5VU0VEX1BBUkFNKGNvbnRleHRPcHRpb25zVmFsdWUpOworCisgICAgLy8g
RklYTUU6IENvbnZlcnQgdG8gUGFpbnRSZW5kZXJpbmdDb250ZXh0MkRTZXR0aW5ncyBoZXJlIChz
dGVwIDE0KS4KKworICAgIGlmICghY29uc3RydWN0b3JWYWx1ZS5pc0NvbnN0cnVjdG9yKHZtKSkK
KyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsICJUaGUgc2Vjb25k
IGFyZ3VtZW50IG11c3QgYmUgYSBjb25zdHJ1Y3RvciJfcyk7CisKKyAgICBKU1ZhbHVlIHByb3Rv
dHlwZVZhbHVlID0gY29uc3RydWN0b3JWYWx1ZS5nZXQoJnN0YXRlLCB2bS5wcm9wZXJ0eU5hbWVz
LT5wcm90b3R5cGUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7
CisKKyAgICBpZiAoIXByb3RvdHlwZVZhbHVlLmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCAiVGhlIHNlY29uZCBhcmd1bWVudCBtdXN0IGhh
dmUgYSBwcm90b3R5cGUgdGhhdCBpcyBhbiBvYmplY3QiX3MpOworCisgICAgSlNWYWx1ZSBwYWlu
dFZhbHVlID0gcHJvdG90eXBlVmFsdWUuZ2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zygmdm0sICJwYWludCIpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVl
KCkpOworCisgICAgaWYgKHBhaW50VmFsdWUuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsICJUaGUgY2xhc3MgbXVzdCBoYXZlIGEgcGFp
bnQgbWV0aG9kIl9zKTsKKworICAgIFJlZlB0cjxKU0NTU1BhaW50Q2FsbGJhY2s+IHBhaW50ID0g
Y29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTQ1NTUGFpbnRDYWxsYmFjaz4+KHN0YXRlLCBw
YWludFZhbHVlLCAqZ2xvYmFsT2JqZWN0KCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIEpTVmFsdWUoKSk7CisKKyAgICBhdXRvIHBhaW50RGVmaW5pdGlvbiA9IHN0ZDo6dW5pcXVl
X3B0cjxQYWludERlZmluaXRpb24+KG5ldyBQYWludERlZmluaXRpb24geyBuYW1lLCBwYWludC5y
ZWxlYXNlTm9uTnVsbCgpLCBpbnB1dFByb3BlcnRpZXMsIGlucHV0QXJndW1lbnRzIH0pOworICAg
IHBhaW50RGVmaW5pdGlvbk1hcC5hZGQobmFtZSwgV1RGTW92ZShwYWludERlZmluaXRpb24pKTsK
KworICAgIC8vIEZJWE1FOiBjb25zdHJ1Y3QgZG9jdW1lbnREZWZpbml0aW9uIChzdGVwIDIyKS4K
KworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCit9CisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmE4MTc3ZjNjMWFiNjQxM2M1NGY5YjUwYTBmNDU5YWU1ZGZhNzljN2IKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9i
YWxTY29wZUJhc2UuY3BwCkBAIC0wLDAgKzEsMTUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuaCIKKworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdf
QVBJKQorCisjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCisjaW5jbHVkZSAiSlNET01HbG9i
YWxPYmplY3RUYXNrLmgiCisjaW5jbHVkZSAiSlNXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNs
dWRlICJXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrbGV0U2NyaXB0Q29udHJv
bGxlci5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0NKU1ZhbHVlSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9MYW5n
dWFnZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSlNDOworCitj
b25zdCBDbGFzc0luZm8gSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzX2luZm8gPSB7ICJXb3Jr
bGV0R2xvYmFsU2NvcGUiLCAmSlNET01HbG9iYWxPYmplY3Q6OnNfaW5mbywgbnVsbHB0ciwgbnVs
bHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UpIH07CisK
K2NvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6
c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsKKyAgICAmc3VwcG9ydHNSaWNoU291cmNlSW5m
bywKKyAgICAmc2hvdWxkSW50ZXJydXB0U2NyaXB0LAorICAgICZqYXZhU2NyaXB0UnVudGltZUZs
YWdzLAorICAgIG51bGxwdHIsIC8vIHF1ZXVlVGFza1RvRXZlbnRMb29wCisgICAgJnNob3VsZElu
dGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQsCisgICAgbnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVy
SW1wb3J0TW9kdWxlCisgICAgbnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVyUmVzb2x2ZQorICAgIG51
bGxwdHIsIC8vIG1vZHVsZUxvYWRlckZldGNoCisgICAgbnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVy
Q3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMKKyAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJF
dmFsdWF0ZQorICAgICZwcm9taXNlUmVqZWN0aW9uVHJhY2tlciwKKyAgICAmZGVmYXVsdExhbmd1
YWdlLAorICAgIG51bGxwdHIsIC8vIGNvbXBpbGVTdHJlYW1pbmcKKyAgICBudWxscHRyLCAvLyBp
bnN0YW50aWF0ZVN0cmVhbWluZworfTsKKworSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpKU1dv
cmtsZXRHbG9iYWxTY29wZUJhc2UoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFJlZlB0cjxXb3JrbGV0R2xvYmFsU2NvcGU+JiYgaW1wbCkKKyAgICA6IEpTRE9NR2xvYmFs
T2JqZWN0KHZtLCBzdHJ1Y3R1cmUsIG5vcm1hbFdvcmxkKHZtKSwgJnNfZ2xvYmFsT2JqZWN0TWV0
aG9kVGFibGUpCisgICAgLCBtX3dyYXBwZWQoV1RGTW92ZShpbXBsKSkKK3sKK30KKwordm9pZCBK
U1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNQcm94eSog
cHJveHkpCit7CisgICAgbV9wcm94eS5zZXQodm0sIHRoaXMsIHByb3h5KTsKKworICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKHZtLCBtX3Byb3h5LmdldCgpKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMo
dm0sIGluZm8oKSkpOworfQorCit2b2lkIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6Y2xlYXJE
T01HdWFyZGVkT2JqZWN0cygpCit7CisgICAgYXV0byBndWFyZGVkT2JqZWN0cyA9IG1fZ3VhcmRl
ZE9iamVjdHM7CisgICAgZm9yIChhdXRvJiBndWFyZGVkIDogZ3VhcmRlZE9iamVjdHMpCisgICAg
ICAgIGd1YXJkZWQtPmNsZWFyKCk7Cit9CisKK3ZvaWQgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNl
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7Cisg
ICAgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTV29ya2xl
dEdsb2JhbFNjb3BlQmFzZSo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3Qs
IHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcHJveHkpOworfQor
Cit2b2lkIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7
CisgICAgc3RhdGljX2Nhc3Q8SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlKj4oY2VsbCktPkpTV29y
a2xldEdsb2JhbFNjb3BlQmFzZTo6fkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZSgpOworfQorCitT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBjb25zdAoreworICAgIHJldHVybiBtX3dyYXBwZWQuZ2V0KCk7Cit9
CisKK2Jvb2wgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzdXBwb3J0c1JpY2hTb3VyY2VJbmZv
KGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvYmplY3QpCit7CisgICAgcmV0dXJuIEpTR2xvYmFsT2Jq
ZWN0OjpzdXBwb3J0c1JpY2hTb3VyY2VJbmZvKG9iamVjdCk7Cit9CisKK2Jvb2wgSlNXb3JrbGV0
R2xvYmFsU2NvcGVCYXNlOjpzaG91bGRJbnRlcnJ1cHRTY3JpcHQoY29uc3QgSlNHbG9iYWxPYmpl
Y3QqIG9iamVjdCkKK3sKKyAgICByZXR1cm4gSlNHbG9iYWxPYmplY3Q6OnNob3VsZEludGVycnVw
dFNjcmlwdChvYmplY3QpOworfQorCitib29sIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6c2hv
dWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dChjb25zdCBKU0dsb2JhbE9iamVjdCogb2Jq
ZWN0KQoreworICAgIHJldHVybiBKU0dsb2JhbE9iamVjdDo6c2hvdWxkSW50ZXJydXB0U2NyaXB0
QmVmb3JlVGltZW91dChvYmplY3QpOworfQorCitSdW50aW1lRmxhZ3MgSlNXb3JrbGV0R2xvYmFs
U2NvcGVCYXNlOjpqYXZhU2NyaXB0UnVudGltZUZsYWdzKGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBv
YmplY3QpCit7CisgICAgY29uc3QgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlKiB0aGlzT2JqZWN0
ID0ganNDYXN0PGNvbnN0IEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZSo+KG9iamVjdCk7CisgICAg
cmV0dXJuIHRoaXNPYmplY3QtPm1fd3JhcHBlZC0+anNSdW50aW1lRmxhZ3MoKTsKK30KKworSlNW
YWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqLCBXb3JrbGV0R2xv
YmFsU2NvcGUmIHdvcmtsZXRHbG9iYWxTY29wZSkKK3sKKyAgICByZXR1cm4gdG9KUyhleGVjLCB3
b3JrbGV0R2xvYmFsU2NvcGUpOworfQorCitKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiwgV29ya2xl
dEdsb2JhbFNjb3BlJiB3b3JrbGV0R2xvYmFsU2NvcGUpCit7CisgICAgV29ya2xldFNjcmlwdENv
bnRyb2xsZXIqIHNjcmlwdCA9IHdvcmtsZXRHbG9iYWxTY29wZS5zY3JpcHQoKTsKKyAgICBpZiAo
IXNjcmlwdCkKKyAgICAgICAgcmV0dXJuIGpzTnVsbCgpOworICAgIEpTV29ya2xldEdsb2JhbFNj
b3BlKiBjb250ZXh0V3JhcHBlciA9IHNjcmlwdC0+d29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcigp
OworICAgIEFTU0VSVChjb250ZXh0V3JhcHBlcik7CisgICAgcmV0dXJuIGNvbnRleHRXcmFwcGVy
LT5wcm94eSgpOworfQorCitKU1dvcmtsZXRHbG9iYWxTY29wZSogdG9KU1dvcmtsZXRHbG9iYWxT
Y29wZShWTSYgdm0sIEpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5m
byA9IGFzT2JqZWN0KHZhbHVlKS0+Y2xhc3NJbmZvKHZtKTsKKworICAgIGlmIChjbGFzc0luZm8g
PT0gSlNQcm94eTo6aW5mbygpKQorICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1dvcmts
ZXRHbG9iYWxTY29wZSo+KHZtLCBqc0Nhc3Q8SlNQcm94eSo+KGFzT2JqZWN0KHZhbHVlKSktPnRh
cmdldCgpKTsKKworICAgIHJldHVybiBudWxscHRyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29y
a2xldEdsb2JhbFNjb3BlQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3Jr
bGV0R2xvYmFsU2NvcGVCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzU1ODI3Yjk4ZDNkY2JjZTY0NWViZWM1
NjgzNWIwZDMxMzJkYTczMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5oCkBAIC0wLDAgKzEsODUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKworI2luY2x1ZGUgIkpTRE9NR2xvYmFs
T2JqZWN0LmgiCisjaW5jbHVkZSAiSlNET01XcmFwcGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgSlNXb3JrbGV0R2xvYmFsU2NvcGU7CitjbGFzcyBXb3JrbGV0R2xvYmFsU2Nv
cGU7CisKK2NsYXNzIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZSA6IHB1YmxpYyBKU0RPTUdsb2Jh
bE9iamVjdCB7CisgICAgdHlwZWRlZiBKU0RPTUdsb2JhbE9iamVjdCBCYXNlOworcHVibGljOgor
ICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKKworICAgIERFQ0xBUkVfSU5G
TzsKKworICAgIFdvcmtsZXRHbG9iYWxTY29wZSYgd3JhcHBlZCgpIGNvbnN0IHsgcmV0dXJuICpt
X3dyYXBwZWQ7IH0KKyAgICBKU0M6OkpTUHJveHkqIHByb3h5KCkgY29uc3QgeyBBU1NFUlQobV9w
cm94eSk7IHJldHVybiBtX3Byb3h5LmdldCgpOyB9CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OworCisgICAgc3RhdGljIEpTQzo6U3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
SlNDOjpUeXBlSW5mbyhKU0M6Okdsb2JhbE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgSlNDOjpHbG9iYWxPYmplY3RNZXRob2RU
YWJsZSBzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlOworCisgICAgc3RhdGljIGJvb2wgc3VwcG9y
dHNSaWNoU291cmNlSW5mbyhjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGlj
IGJvb2wgc2hvdWxkSW50ZXJydXB0U2NyaXB0KGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsK
KyAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0KGNvbnN0
IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgSlNDOjpSdW50aW1lRmxhZ3MgamF2
YVNjcmlwdFJ1bnRpbWVGbGFncyhjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3Rh
dGljIHZvaWQgcXVldWVUYXNrVG9FdmVudExvb3AoSlNDOjpKU0dsb2JhbE9iamVjdCYsIFJlZjxK
U0M6Ok1pY3JvdGFzaz4mJik7CisKKyAgICB2b2lkIGNsZWFyRE9NR3VhcmRlZE9iamVjdHMoKTsK
KworcHJvdGVjdGVkOgorICAgIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZShKU0M6OlZNJiwgSlND
OjpTdHJ1Y3R1cmUqLCBSZWZQdHI8V29ya2xldEdsb2JhbFNjb3BlPiYmKTsKKyAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKEpTQzo6Vk0mLCBKU0M6OkpTUHJveHkqKTsKKworICAgIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW4oSlNDOjpKU0NlbGwqLCBKU0M6OlNsb3RWaXNpdG9yJik7CisKK3ByaXZh
dGU6CisgICAgUmVmUHRyPFdvcmtsZXRHbG9iYWxTY29wZT4gbV93cmFwcGVkOworICAgIEpTQzo6
V3JpdGVCYXJyaWVyPEpTQzo6SlNQcm94eT4gbV9wcm94eTsKK307CisKKy8vIFJldHVybnMgYSBK
U1dvcmtsZXRHbG9iYWxTY29wZSBvciBqc051bGwoKQorLy8gQWx3YXlzIGlnbm9yZXMgdGhlIGV4
ZWNTdGF0ZSBhbmQgcGFzc2VkIGdsb2JhbE9iamVjdCwgV29ya2xldEdsb2JhbFNjb3BlIGlzIGl0
c2VsZiBhIGdsb2JhbE9iamVjdCBhbmQgd2lsbCBhbHdheXMgdXNlIGl0cyBvd24gcHJvdG90eXBl
IGNoYWluLgorSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9i
amVjdCosIFdvcmtsZXRHbG9iYWxTY29wZSYpOworaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBXb3Jr
bGV0R2xvYmFsU2NvcGUqIHNjb3BlKSB7IHJldHVybiBzY29wZSA/IHRvSlMoZXhlYywgZ2xvYmFs
T2JqZWN0LCAqc2NvcGUpIDogSlNDOjpqc051bGwoKTsgfQorSlNDOjpKU1ZhbHVlIHRvSlMoSlND
OjpFeGVjU3RhdGUqLCBXb3JrbGV0R2xvYmFsU2NvcGUmKTsKK2lubGluZSBKU0M6OkpTVmFsdWUg
dG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgV29ya2xldEdsb2JhbFNjb3BlKiBzY29wZSkgeyBy
ZXR1cm4gc2NvcGUgPyB0b0pTKGV4ZWMsICpzY29wZSkgOiBKU0M6OmpzTnVsbCgpOyB9CisKK0pT
V29ya2xldEdsb2JhbFNjb3BlKiB0b0pTV29ya2xldEdsb2JhbFNjb3BlKEpTQzo6Vk0mLCBKU0M6
OkpTVmFsdWUpOworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKaW5kZXggZWVlODM5Y2M0MjY0ZmJlNGEyOWRm
Yjk5MWI1ZmRlNTBkNjBiYWIxYy4uYTFiYTE0NTI4MzRkOGNhM2NlNmFmNDc3MTFlOTcwYjM4OGNj
MWIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcApAQCAt
MzUsMTEgKzM1LDE0IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRv
d0Jhc2UuaCIKICNpbmNsdWRlICJKU1dvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiSlNX
b3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiUGFnZS5o
IgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxT
Y29wZS5oIgogI2luY2x1ZGUgIldvcmtlclNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJX
b3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5o
IgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NhbGxGcmFtZS5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTR2xvYmFsT2JqZWN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ry
b25nSW5saW5lcy5oPgpAQCAtOTUsOSArOTgsMTYgQEAgSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0
ZUZyb21QYWdlKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIFBhZ2UqIHBhZ2UpCiAgICAgcmV0dXJu
IHBhZ2UgPyBwYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5nbG9iYWxPYmplY3Qod29ybGQpLT5n
bG9iYWxFeGVjKCkgOiBudWxscHRyOwogfQogCi1KU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJv
bVdvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlKiB3b3JrZXJHbG9iYWxTY29wZSkK
K0pTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUoV29ya2VyR2xv
YmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQogewotICAgIHJldHVybiB3b3JrZXJHbG9iYWxT
Y29wZS0+c2NyaXB0KCktPndvcmtlckdsb2JhbFNjb3BlV3JhcHBlcigpLT5nbG9iYWxFeGVjKCk7
CisgICAgcmV0dXJuIHdvcmtlckdsb2JhbFNjb3BlLnNjcmlwdCgpLT53b3JrZXJHbG9iYWxTY29w
ZVdyYXBwZXIoKS0+Z2xvYmFsRXhlYygpOwogfQogCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19B
UEkpCitKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbVdvcmtsZXRHbG9iYWxTY29wZShXb3Jr
bGV0R2xvYmFsU2NvcGUmIHdvcmtsZXRHbG9iYWxTY29wZSkKK3sKKyAgICByZXR1cm4gd29ya2xl
dEdsb2JhbFNjb3BlLnNjcmlwdCgpLT53b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKCktPmdsb2Jh
bEV4ZWMoKTsKK30KKyNlbmRpZgorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
U3RhdGUuaAppbmRleCA3NDQyMWZkOTViYTE3NzU2ZWI4OWMwMDQyNmMzM2ZiNTQ1NDk4MzkwLi4x
NTM4NGE3MTFmMzU2Y2VlNDc4Y2E5OWUyNTU1YjFlZWEyNDgyYWQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgKQEAgLTQ0LDYgKzQ0LDkgQEAgY2xhc3MgTm9kZTsK
IGNsYXNzIFBhZ2U7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgV29ya2Vy
R2xvYmFsU2NvcGU7CisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCitjbGFzcyBXb3JrbGV0
R2xvYmFsU2NvcGU7CisjZW5kaWYKIAogRE9NV2luZG93KiBkb21XaW5kb3dGcm9tRXhlY1N0YXRl
KEpTQzo6RXhlY1N0YXRlKik7CiBGcmFtZSogZnJhbWVGcm9tRXhlY1N0YXRlKEpTQzo6RXhlY1N0
YXRlKik7CkBAIC01Myw2ICs1Niw5IEBAIEpTQzo6RXhlY1N0YXRlKiBtYWluV29ybGRFeGVjU3Rh
dGUoRnJhbWUqKTsKIAogSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZUZyb21Ob2RlKERPTVdyYXBw
ZXJXb3JsZCYsIE5vZGUqKTsKIFdFQkNPUkVfRVhQT1JUIEpTQzo6RXhlY1N0YXRlKiBleGVjU3Rh
dGVGcm9tUGFnZShET01XcmFwcGVyV29ybGQmLCBQYWdlKik7Ci1KU0M6OkV4ZWNTdGF0ZSogZXhl
Y1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlKik7CitKU0M6OkV4
ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3Bl
Jik7CisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCitKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0
YXRlRnJvbVdvcmtsZXRHbG9iYWxTY29wZShXb3JrbGV0R2xvYmFsU2NvcGUmKTsKKyNlbmRpZgog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKaW5kZXggMWM5Mzg1OWVjYzE2ODc0YzBjMDdlMzczYjI5
NzNjNDI1MDVkZWE4MC4uMjkyZmQ5NzkyNDQ5ZDM3N2QyNzVjMjgyNGJlMTUyZGNhNmZkNjkxZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1l
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMu
aApAQCAtNTEsNyArNTEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oQ3JlZGVu
dGlhbCkgXAogICAgIG1hY3JvKENyZWRlbnRpYWxzQ29udGFpbmVyKSBcCiAgICAgbWFjcm8oQ1NT
QW5pbWF0aW9uKSBcCi0gICAgbWFjcm8oQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUpIFwKICAg
ICBtYWNybyhDU1NUcmFuc2l0aW9uKSBcCiAgICAgbWFjcm8oQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5
KSBcCiAgICAgbWFjcm8oRGF0YWJhc2UpIFwKQEAgLTEyMyw2ICsxMjIsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgbWFjcm8oU1FMUmVzdWx0U2V0KSBcCiAgICAgbWFjcm8oU1FMUmVzdWx0
U2V0Um93TGlzdCkgXAogICAgIG1hY3JvKFNRTFRyYW5zYWN0aW9uKSBcCisgICAgbWFjcm8oUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGUpIFwKICAgICBtYWNybyhQZXJmb3JtYW5jZUVudHJ5KSBcCiAg
ICAgbWFjcm8oUGVyZm9ybWFuY2VFbnRyeUxpc3QpIFwKICAgICBtYWNybyhQZXJmb3JtYW5jZU1h
cmspIFwKQEAgLTIxMCw2ICsyMTAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8o
V2ViS2l0TWVkaWFLZXlzKSBcCiAgICAgbWFjcm8oV2ViU29ja2V0KSBcCiAgICAgbWFjcm8oV2lu
ZG93Q2xpZW50KSBcCisgICAgbWFjcm8oV29ya2xldCkgXAorICAgIG1hY3JvKFdvcmtsZXRHbG9i
YWxTY29wZSkgXAogICAgIG1hY3JvKFdyaXRhYmxlU3RyZWFtKSBcCiAgICAgbWFjcm8oWE1MSHR0
cFJlcXVlc3QpIFwKICAgICBtYWNybyhhcHBlbmRGcm9tSlMpIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggNDhmY2U3YmMx
NmE4ODBkNjNmNDMyYTAxOGYxZmVlMmY2N2JmNWJkYy4uOWJkZGRlZDMwMTY3MWZiNDQ3OTViMzMy
ZWZmZTEyZWEwMzVhODM1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTQ5Nyw3ICs0OTcsNyBAQCBzdWIgR2V0Q3VzdG9t
SXNSZWFjaGFibGUKIHN1YiBJc0RPTUdsb2JhbE9iamVjdAogewogICAgIG15ICRpbnRlcmZhY2Ug
PSBzaGlmdDsKLSAgICByZXR1cm4gJGludGVyZmFjZS0+dHlwZS0+bmFtZSBlcSAiRE9NV2luZG93
IiB8fCAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIGVxICJSZW1vdGVET01XaW5kb3ciIHx8ICRjb2Rl
R2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiV29ya2VyR2xvYmFsU2Nv
cGUiKSB8fCAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIGVxICJUZXN0R2xvYmFsT2JqZWN0IjsKKyAg
ICByZXR1cm4gJGludGVyZmFjZS0+dHlwZS0+bmFtZSBlcSAiRE9NV2luZG93IiB8fCAkaW50ZXJm
YWNlLT50eXBlLT5uYW1lIGVxICJSZW1vdGVET01XaW5kb3ciIHx8ICRjb2RlR2VuZXJhdG9yLT5J
bmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiV29ya2VyR2xvYmFsU2NvcGUiKSB8fCAkY29k
ZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldvcmtsZXRHbG9iYWxT
Y29wZSIpIHx8ICRpbnRlcmZhY2UtPnR5cGUtPm5hbWUgZXEgIlRlc3RHbG9iYWxPYmplY3QiOwog
fQogCiBzdWIgU2hvdWxkVXNlR2xvYmFsT2JqZWN0UHJvdG90eXBlCkBAIC01MDYsNiArNTA2LDcg
QEAgc3ViIFNob3VsZFVzZUdsb2JhbE9iamVjdFByb3RvdHlwZQogCiAgICAgIyBGb3Igd29ya2Vy
cywgdGhlIGdsb2JhbCBvYmplY3QgaXMgYSBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS4KICAg
ICByZXR1cm4gMCBpZiAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIGVxICJXb3JrZXJHbG9iYWxTY29w
ZSI7CisgICAgcmV0dXJuIDAgaWYgJGludGVyZmFjZS0+dHlwZS0+bmFtZSBlcSAiV29ya2xldEds
b2JhbFNjb3BlIjsKIAogICAgIHJldHVybiBJc0RPTUdsb2JhbE9iamVjdCgkaW50ZXJmYWNlKTsK
IH0KQEAgLTI1MzcsNyArMjUzOCw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtLCBwcm94eSk7
XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHB0cjtc
biIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIH1cblxuIik7Ci0gICAgfSBl
bHNpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3Jr
ZXJHbG9iYWxTY29wZSIpKSB7CisgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRz
SW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrZXJHbG9iYWxTY29wZSIpIHx8ICRjb2RlR2VuZXJh
dG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiV29ya2xldEdsb2JhbFNjb3BlIikp
IHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgJGNsYXNzTmFtZSog
Y3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWY8JGltcGxU
eXBlPiYmIGltcGwsIEpTQzo6SlNQcm94eSogcHJveHkpXG4iKTsKICAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICB7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAg
ICAgICAgJGNsYXNzTmFtZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDwk
Y2xhc3NOYW1lPih2bS5oZWFwKSkgJHtjbGFzc05hbWV9KHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUo
aW1wbCkpO1xuIik7CkBAIC0yODQ1LDcgKzI4NDYsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAg
ICAjIENvbnN0cnVjdG9yCiAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciIHx8
ICRpbnRlcmZhY2VOYW1lIGVxICJSZW1vdGVET01XaW5kb3ciKSB7CiAgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgJGNsYXNzTmFtZShKU0M6OlZNJiwgSlNDOjpTdHJ1Y3R1cmUqLCBS
ZWY8JGltcGxUeXBlPiYmLCBKU1dpbmRvd1Byb3h5Kik7XG4iKTsKLSAgICB9IGVsc2lmICgkY29k
ZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldvcmtlckdsb2JhbFNj
b3BlIikpIHsKKyAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2Uo
JGludGVyZmFjZSwgIldvcmtlckdsb2JhbFNjb3BlIikgfHwgJGNvZGVHZW5lcmF0b3ItPkluaGVy
aXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrbGV0R2xvYmFsU2NvcGUiKSkgewogICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICRjbGFzc05hbWUoSlNDOjpWTSYsIEpTQzo6U3Ry
dWN0dXJlKiwgUmVmPCRpbXBsVHlwZT4mJik7XG4iKTsKICAgICB9IGVsc2lmICghTmVlZHNJbXBs
ZW1lbnRhdGlvbkNsYXNzKCRpbnRlcmZhY2UpKSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICIgICAgJGNsYXNzTmFtZShKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Jik7
XG5cbiIpOwpAQCAtMjg1NSw3ICsyODU2LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAKICAgICBp
ZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIgfHwgJGludGVyZmFjZU5hbWUgZXEgIlJl
bW90ZURPTVdpbmRvdyIpIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mLCBKU1dpbmRvd1Byb3h5Kik7XG4iKTsKLSAgICB9IGVs
c2lmICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldvcmtl
ckdsb2JhbFNjb3BlIikpIHsKKyAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJ
bnRlcmZhY2UoJGludGVyZmFjZSwgIldvcmtlckdsb2JhbFNjb3BlIikgfHwgJGNvZGVHZW5lcmF0
b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrbGV0R2xvYmFsU2NvcGUiKSkg
ewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
SlNDOjpWTSYsIEpTQzo6SlNQcm94eSopO1xuIik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTtcbiIp
OwpAQCAtMzY2Miw2ICszNjYzLDggQEAgc3ViIEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlv
bmFsU3RyaW5nRm9yRXhwb3NlZAogICAgICAgICBwdXNoKEAkY29uanVuY3RzLCAianNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oIiAuICRnbG9iYWxPYmplY3RQdHIgLiAiKS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT5pc0RvY3VtZW50KCkiKTsKICAgICB9IGVsc2lmICgkZXhwb3NlZCBlcSAi
V29ya2VyIikgewogICAgICAgICBwdXNoKEAkY29uanVuY3RzLCAianNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oIiAuICRnbG9iYWxPYmplY3RQdHIgLiAiKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLT5pc1dvcmtlckdsb2JhbFNjb3BlKCkiKTsKKyAgICB9IGVsc2lmICgkZXhwb3NlZCBlcSAi
V29ya2xldCIpIHsKKyAgICAgICAgcHVzaChAJGNvbmp1bmN0cywgImpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KCIgLiAkZ2xvYmFsT2JqZWN0UHRyIC4gIiktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+aXNXb3JrbGV0R2xvYmFsU2NvcGUoKSIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGFz
c2VydCgiVW5yZWNvZ25pemVkIHZhbHVlICciIC4gRHVtcGVyKCRjb250ZXh0LT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntFeHBvc2VkfSkgLiAiJyBmb3IgdGhlIEV4cG9zZWQgZXh0ZW5kZWQgYXR0cmli
dXRlIG9uICciIC4gcmVmKCRjb250ZXh0KSAuICInLiIpOwogICAgIH0KQEAgLTQyNTIsNyArNDI1
NSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIDogJHBhcmVudENsYXNzTmFtZSh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKGltcGwp
LCBwcm94eSlcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7Ci0gICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0
b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrZXJHbG9iYWxTY29wZSIpKSB7
CisgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZh
Y2UsICJXb3JrZXJHbG9iYWxTY29wZSIpIHx8ICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVy
ZmFjZSgkaW50ZXJmYWNlLCAiV29ya2xldEdsb2JhbFNjb3BlIikpIHsKICAgICAgICAgQWRkSW5j
bHVkZXNGb3JJbXBsZW1lbnRhdGlvblR5cGVJbkltcGwoJGludGVyZmFjZU5hbWUpOwogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiR7Y2xhc3NOYW1lfTo6JGNsYXNzTmFtZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBSZWY8JGltcGxUeXBlPiYmIGltcGwpXG4iKTsKICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgOiAkcGFyZW50Q2xhc3NOYW1lKHZtLCBzdHJ1Y3R1cmUs
IFdURk1vdmUoaW1wbCkpXG4iKTsKQEAgLTQyNzMsNyArNDI3Niw3IEBAIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFt
ZX06OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNXaW5kb3dQcm94eSogcHJveHkpXG4iKTsKICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIHByb3h5KTtcblxuIik7Ci0gICAgfSBl
bHNpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3Jr
ZXJHbG9iYWxTY29wZSIpKSB7CisgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRz
SW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrZXJHbG9iYWxTY29wZSIpIHx8ICRjb2RlR2VuZXJh
dG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiV29ya2xldEdsb2JhbFNjb3BlIikp
IHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7Y2xhc3NOYW1lfTo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBKU1Byb3h5KiBwcm94eSlcbiIpOwogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIntcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbih2bSwgcHJveHkpO1xuXG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGwKaW5kZXggM2UwNWM3YjQ5NjgyYmVl
NjRmNjg5OGI0ZGY0NDg0MjUxMzQzOGI1MS4uNDZjZDNiOGY5Y2E5YzExYWE1MWZiZDlmYTg3NjBm
YTdiMGZkOTMzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9w
cmVwcm9jZXNzLWlkbHMucGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9w
cmVwcm9jZXNzLWlkbHMucGwKQEAgLTM2LDYgKzM2LDggQEAgbXkgJHdpbmRvd0NvbnN0cnVjdG9y
c0ZpbGU7CiBteSAkd29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlOwogbXkgJGRlZGlj
YXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZTsKIG15ICRzZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlOworbXkgJHdvcmtsZXRHbG9iYWxTY29wZUNvbnN0
cnVjdG9yc0ZpbGU7CitteSAkcGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxl
OwogbXkgJHN1cHBsZW1lbnRhbE1ha2VmaWxlRGVwczsKIAogR2V0T3B0aW9ucygnZGVmaW5lcz1z
JyA9PiBcJGRlZmluZXMsCkBAIC00Niw2ICs0OCw4IEBAIEdldE9wdGlvbnMoJ2RlZmluZXM9cycg
PT4gXCRkZWZpbmVzLAogICAgICAgICAgICAnd29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNG
aWxlPXMnID0+IFwkd29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlLAogICAgICAgICAg
ICAnZGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlPXMnID0+IFwkZGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlLAogICAgICAgICAgICAnc2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZT1zJyA9PiBcJHNlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUsCisgICAgICAgICAgICd3b3JrbGV0R2xvYmFs
U2NvcGVDb25zdHJ1Y3RvcnNGaWxlPXMnID0+IFwkd29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0
b3JzRmlsZSwKKyAgICAgICAgICAgJ3BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3Jz
RmlsZT1zJyA9PiBcJHBhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSwKICAg
ICAgICAgICAgJ3N1cHBsZW1lbnRhbE1ha2VmaWxlRGVwcz1zJyA9PiBcJHN1cHBsZW1lbnRhbE1h
a2VmaWxlRGVwcyk7CiAKIGRpZSgnTXVzdCBzcGVjaWZ5ICNkZWZpbmUgbWFjcm9zIHVzaW5nIC0t
ZGVmaW5lcy4nKSB1bmxlc3MgZGVmaW5lZCgkZGVmaW5lcyk7CkBAIC01NCw2ICs1OCw4IEBAIGRp
ZSgnTXVzdCBzcGVjaWZ5IGFuIG91dHB1dCBmaWxlIHVzaW5nIC0td2luZG93Q29uc3RydWN0b3Jz
RmlsZS4nKSB1bmxlc3MgZGVmaW5lCiBkaWUoJ011c3Qgc3BlY2lmeSBhbiBvdXRwdXQgZmlsZSB1
c2luZyAtLXdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZS4nKSB1bmxlc3MgZGVmaW5l
ZCgkd29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlKTsKIGRpZSgnTXVzdCBzcGVjaWZ5
IGFuIG91dHB1dCBmaWxlIHVzaW5nIC0tZGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1
Y3RvcnNGaWxlLicpIHVubGVzcyBkZWZpbmVkKCRkZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNv
bnN0cnVjdG9yc0ZpbGUpOwogZGllKCdNdXN0IHNwZWNpZnkgYW4gb3V0cHV0IGZpbGUgdXNpbmcg
LS1zZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlLicpIHVubGVzcyBkZWZp
bmVkKCRzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlKTsKK2RpZSgnTXVz
dCBzcGVjaWZ5IGFuIG91dHB1dCBmaWxlIHVzaW5nIC0td29ya2xldEdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3JzRmlsZS4nKSB1bmxlc3MgZGVmaW5lZCgkd29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0
b3JzRmlsZSk7CitkaWUoJ011c3Qgc3BlY2lmeSBhbiBvdXRwdXQgZmlsZSB1c2luZyAtLXBhaW50
V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZS4nKSB1bmxlc3MgZGVmaW5lZCgkcGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlKTsKIGRpZSgnTXVzdCBzcGVjaWZ5
IHRoZSBmaWxlIGxpc3RpbmcgYWxsIElETHMgdXNpbmcgLS1pZGxGaWxlc0xpc3QuJykgdW5sZXNz
IGRlZmluZWQoJGlkbEZpbGVzTGlzdCk7CiAKICRzdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZSA9
IEN5Z3dpblBhdGhJZk5lZWRlZCgkc3VwcGxlbWVudGFsRGVwZW5kZW5jeUZpbGUpOwpAQCAtNjEs
NiArNjcsOCBAQCAkd2luZG93Q29uc3RydWN0b3JzRmlsZSA9IEN5Z3dpblBhdGhJZk5lZWRlZCgk
d2luZG93Q29uc3RydWN0b3JzRmlsZSk7CiAkd29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNG
aWxlID0gQ3lnd2luUGF0aElmTmVlZGVkKCR3b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0Zp
bGUpOwogJGRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSA9IEN5Z3dp
blBhdGhJZk5lZWRlZCgkZGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxl
KTsKICRzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlID0gQ3lnd2luUGF0
aElmTmVlZGVkKCRzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlKTsKKyR3
b3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlID0gQ3lnd2luUGF0aElmTmVlZGVkKCR3
b3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlKTsKKyRwYWludFdvcmtsZXRHbG9iYWxT
Y29wZUNvbnN0cnVjdG9yc0ZpbGUgPSBDeWd3aW5QYXRoSWZOZWVkZWQoJHBhaW50V29ya2xldEds
b2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSk7CiAkc3VwcGxlbWVudGFsTWFrZWZpbGVEZXBzID0g
Q3lnd2luUGF0aElmTmVlZGVkKCRzdXBwbGVtZW50YWxNYWtlZmlsZURlcHMpOwogCiBvcGVuIEZI
LCAiPCAkaWRsRmlsZXNMaXN0IiBvciBkaWUgIkNhbm5vdCBvcGVuICRpZGxGaWxlc0xpc3RcbiI7
CkBAIC04MCw2ICs4OCw4IEBAIG15ICR3aW5kb3dDb25zdHJ1Y3RvcnNDb2RlID0gIiI7CiBteSAk
d29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNDb2RlID0gIiI7CiBteSAkZGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNDb2RlID0gIiI7CiBteSAkc2VydmljZVdvcmtlckds
b2JhbFNjb3BlQ29uc3RydWN0b3JzQ29kZSA9ICIiOworbXkgJHdvcmtsZXRHbG9iYWxTY29wZUNv
bnN0cnVjdG9yc0NvZGUgPSAiIjsKK215ICRwYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVj
dG9yc0NvZGUgPSAiIjsKIAogIyBHZXQgcmlkIG9mIGR1cGxpY2F0ZXMgaW4gaWRsRmlsZXMgYXJy
YXkuCiBteSAlaWRsRmlsZUhhc2ggPSBtYXAgeyAkXywgMSB9IEBpZGxGaWxlczsKQEAgLTE0Myw2
ICsxNTMsMTAgQEAgZm9yZWFjaCBteSAkaWRsRmlsZSAoc29ydCBrZXlzICVpZGxGaWxlSGFzaCkg
ewogICAgICAgICAgICAgICAgICAgICAkZGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1
Y3RvcnNDb2RlIC49ICRhdHRyaWJ1dGVDb2RlOwogICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRn
bG9iYWxDb250ZXh0IGVxICJTZXJ2aWNlV29ya2VyIikgewogICAgICAgICAgICAgICAgICAgICAk
c2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzQ29kZSAuPSAkYXR0cmlidXRlQ29k
ZTsKKyAgICAgICAgICAgICAgICB9IGVsc2lmICgkZ2xvYmFsQ29udGV4dCBlcSAiV29ya2xldCIp
IHsKKyAgICAgICAgICAgICAgICAgICAgJHdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0Nv
ZGUgLj0gJGF0dHJpYnV0ZUNvZGU7CisgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGdsb2JhbENv
bnRleHQgZXEgIlBhaW50V29ya2xldCIpIHsKKyAgICAgICAgICAgICAgICAgICAgJHBhaW50V29y
a2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzQ29kZSAuPSAkYXR0cmlidXRlQ29kZTsKICAgICAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBkaWUgIlVuc3VwcG9ydGVk
IGdsb2JhbCBjb250ZXh0ICckZ2xvYmFsQ29udGV4dCcgdXNlZCBpbiBbRXhwb3NlZF0gYXQgJGlk
bEZpbGUiOwogICAgICAgICAgICAgICAgIH0KQEAgLTE1Nyw2ICsxNzEsOCBAQCBHZW5lcmF0ZVBh
cnRpYWxJbnRlcmZhY2UoIkRPTVdpbmRvdyIsICR3aW5kb3dDb25zdHJ1Y3RvcnNDb2RlLCAkd2lu
ZG93Q29uc3RydWN0bwogR2VuZXJhdGVQYXJ0aWFsSW50ZXJmYWNlKCJXb3JrZXJHbG9iYWxTY29w
ZSIsICR3b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0NvZGUsICR3b3JrZXJHbG9iYWxTY29w
ZUNvbnN0cnVjdG9yc0ZpbGUpOwogR2VuZXJhdGVQYXJ0aWFsSW50ZXJmYWNlKCJEZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZSIsICRkZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9y
c0NvZGUsICRkZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOwogR2Vu
ZXJhdGVQYXJ0aWFsSW50ZXJmYWNlKCJTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUiLCAkc2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzQ29kZSwgJHNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZUNvbnN0cnVjdG9yc0ZpbGUpOworR2VuZXJhdGVQYXJ0aWFsSW50ZXJmYWNlKCJXb3JrbGV0
R2xvYmFsU2NvcGUiLCAkd29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzQ29kZSwgJHdvcmts
ZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOworR2VuZXJhdGVQYXJ0aWFsSW50ZXJmYWNl
KCJQYWludFdvcmtsZXRHbG9iYWxTY29wZSIsICRwYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0
cnVjdG9yc0NvZGUsICRwYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOwog
CiAjIFJlc29sdmVzIHBhcnRpYWwgaW50ZXJmYWNlcyBhbmQgaW1wbGVtZW50cyBkZXBlbmRlbmNp
ZXMuCiBmb3JlYWNoIG15ICRpZGxGaWxlIChzb3J0IGtleXMgJXN1cHBsZW1lbnRhbERlcGVuZGVu
Y2llcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50SW1hZ2VWYWx1
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmNwcAppbmRleCBh
NjkwZTQxZDc2NzFkZWEwMzUzMjFmYWZlN2I3ZmE5NzExYWJkYTUyLi42MTY0MTM1ODZjZjY3NjQ5
N2IxYTIzZTYwMDFjMjY1NmMwZTdjNjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUGFpbnRJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRJ
bWFnZVZhbHVlLmNwcApAQCAtMjksOCArMjksOCBAQAogCiAjaWYgRU5BQkxFKENTU19QQUlOVElO
R19BUEkpCiAKLSNpbmNsdWRlICJDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1
ZGUgIkN1c3RvbVBhaW50SW1hZ2UuaCIKKyNpbmNsdWRlICJQYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+CiAKQEAgLTUwLDggKzUwLDEwIEBAIFJlZlB0cjxJbWFnZT4gQ1NTUGFpbnRJ
bWFnZVZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50JiByZW5kZXJFbGVtZW50LCBjb25zdCBGbG9h
CiB7CiAgICAgaWYgKHNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICBhdXRvJiBzZWxlY3RlZEdsb2JhbFNjb3BlID0gcmVuZGVyRWxlbWVudC5kb2N1bWVudCgpLmVu
c3VyZUNTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlKCk7Ci0gICAgYXV0byogcmVnaXN0cmF0aW9u
ID0gc2VsZWN0ZWRHbG9iYWxTY29wZS5wYWludERlZmluaXRpb25NYXAoKS5nZXQobV9uYW1lKTsK
KyAgICBhdXRvKiBzZWxlY3RlZEdsb2JhbFNjb3BlID0gcmVuZGVyRWxlbWVudC5kb2N1bWVudCgp
LmdldENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlKCk7CisgICAgaWYgKCFzZWxlY3RlZEdsb2Jh
bFNjb3BlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvKiByZWdpc3RyYXRpb24g
PSBzZWxlY3RlZEdsb2JhbFNjb3BlLT5wYWludERlZmluaXRpb25NYXAoKS5nZXQobV9uYW1lKTsK
IAogICAgIGlmICghcmVnaXN0cmF0aW9uKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDk3M2NkMzhkNjhlNDNjYzUyODVjNTgxMDRiMjVk
ZGI2ZTEwYzI4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNTU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlLmgiCi0KLSNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1SZWY8Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+IENTU1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlOjpjcmVhdGUoKQotewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlKCkpOwotfQotCi1DU1NQYWludFdvcmtsZXRH
bG9iYWxTY29wZTo6Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoKQotewotfQotCi1kb3VibGUg
Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OmRldmljZVBpeGVsUmF0aW8oKQotewotICAgIHJl
dHVybiAxLjA7Ci19Ci0KLUV4Y2VwdGlvbk9yPHZvaWQ+IENTU1BhaW50V29ya2xldEdsb2JhbFNj
b3BlOjphZGRSZWdpc3RlcmVkUGFpbnQoKQotewotICAgIHJldHVybiB7IH07Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YWludFdvcmtsZXRHbG9iYWxTY29wZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAy
M2IwZDlkOGYzZjAyMzdlMjc5MmZjZWY3ZTQ3N2ZlNThjNjJhMzA4Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCi0KLSNpbmNsdWRlICJDU1NQYWludENhbGxi
YWNrLmgiCi0jaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgot
Ci1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgSlNWYWx1ZTsKLQotfSAvLyBuYW1lc3BhY2UgSlND
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUgOiBwdWJsaWMgUmVmQ291bnRlZDxDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZT4gewotcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+IGNyZWF0ZSgp
OwotCi0gICAgRXhjZXB0aW9uT3I8dm9pZD4gYWRkUmVnaXN0ZXJlZFBhaW50KCk7Ci0gICAgZG91
YmxlIGRldmljZVBpeGVsUmF0aW8oKTsKLQotICAgIHN0cnVjdCBQYWludERlZmluaXRpb24gewot
ICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcgbmFtZTsKLSAgICAgICAgY29uc3QgUmVmPENTU1Bh
aW50Q2FsbGJhY2s+IHBhaW50Q2FsbGJhY2s7Ci0gICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+
IGlucHV0UHJvcGVydGllczsKLSAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4gaW5wdXRBcmd1
bWVudHM7Ci0gICAgfTsKLQotICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8UGFp
bnREZWZpbml0aW9uPj4mIHBhaW50RGVmaW5pdGlvbk1hcCgpIHsgcmV0dXJuIG1fcGFpbnREZWZp
bml0aW9uTWFwOyB9Ci0KLXByaXZhdGU6Ci0gICAgQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUo
KTsKLQotICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8UGFpbnREZWZpbml0aW9u
Pj4gbV9wYWludERlZmluaXRpb25NYXA7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0j
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludFdvcmtsZXRHbG9i
YWxTY29wZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNTM2YzBhNDEzOTVjMGExYTA4
NGZhMWY3ZWI1YTZjMmJhNzJhNjFmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0vKgotKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotKgotKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0qIGFyZSBtZXQ6Ci0qIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0qICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotKgotKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0qIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0qIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0qIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0qIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSov
Ci0KLVsKLSAgICBFbmFibGVkQXRSdW50aW1lPUNTU1BhaW50aW5nQVBJLAotICAgIENvbmRpdGlv
bmFsPUNTU19QQUlOVElOR19BUEksCi0gICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKLSAg
ICBKU0N1c3RvbU1hcmtGdW5jdGlvbiwKLSAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QKLV0g
aW50ZXJmYWNlIENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlIHsKLSAgICBbQ3VzdG9tLCBNYXlU
aHJvd0V4Y2VwdGlvbl0gdm9pZCByZWdpc3RlclBhaW50KERPTVN0cmluZyBuYW1lLCBGdW5jdGlv
biBwYWludEN0b3IpOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91Ymxl
IGRldmljZVBpeGVsUmF0aW87Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0RP
TUNTU1BhaW50V29ya2xldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRXb3Jr
bGV0LmNwcAppbmRleCAxMjA2ODFiOGQ3NjEzNDZkYTcyYWNjNWEwYjIyNjllMTQwNzM1ODliLi5k
Y2ViN2VlOWI2MDQ5MGRjMDE4MWU1YzZmMTg2NWQwMmNiY2YyYWNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmNwcApAQCAtMjgsMTYgKzI4LDE3IEBACiAKICNpZiBF
TkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKIAotI2luY2x1ZGUgIkNTU1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlLmgiCiAjaW5jbHVkZSAiRE9NQ1NTTmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKKyNpbmNsdWRlICJXb3JrbGV0LmgiCisKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DU1NQYWludFdvcmtsZXRHbG9iYWxTY29w
ZSYgRE9NQ1NTUGFpbnRXb3JrbGV0OjplbnN1cmVQYWludFdvcmtsZXRHbG9iYWxTY29wZShEb2N1
bWVudCYgZG9jdW1lbnQpCitXb3JrbGV0JiBET01DU1NQYWludFdvcmtsZXQ6OmVuc3VyZVBhaW50
V29ya2xldChEb2N1bWVudCYgZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIGRvY3VtZW50LmVuc3Vy
ZUNTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlKCk7CisgICAgcmV0dXJuIGRvY3VtZW50LmVuc3Vy
ZUNTU1BhaW50V29ya2xldCgpOwogfQogCiBET01DU1NQYWludFdvcmtsZXQqIERPTUNTU1BhaW50
V29ya2xldDo6ZnJvbShET01DU1NOYW1lc3BhY2UmIGNzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01D
U1NQYWludFdvcmtsZXQuaAppbmRleCBlZTVlZmIxMWQxOWJiNjJmMzhlNTZlMTBlNWQ2MTYzY2M5
ZDhmYjNmLi5hMmNiMzczZjZhMDM0MTNkMTIxYjQwMTQzNGJmZDllZjk5YTk3NmYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5oCkBAIC0zNSwxNCArMzUsMTQgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBDU1NQYWludFdvcmts
ZXRHbG9iYWxTY29wZTsKK2NsYXNzIFdvcmtsZXQ7CiBjbGFzcyBET01DU1NOYW1lc3BhY2U7CiAK
IGNsYXNzIERPTUNTU1BhaW50V29ya2xldCBmaW5hbCA6IHB1YmxpYyBTdXBwbGVtZW50PERPTUNT
U05hbWVzcGFjZT4gewogcHVibGljOgogICAgIGV4cGxpY2l0IERPTUNTU1BhaW50V29ya2xldChE
T01DU1NOYW1lc3BhY2UmKSB7IH0KIAotICAgIHN0YXRpYyBDU1NQYWludFdvcmtsZXRHbG9iYWxT
Y29wZSYgZW5zdXJlUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoRG9jdW1lbnQmKTsKKyAgICBzdGF0
aWMgV29ya2xldCYgZW5zdXJlUGFpbnRXb3JrbGV0KERvY3VtZW50Jik7CiAKIHByaXZhdGU6CiAg
ICAgc3RhdGljIERPTUNTU1BhaW50V29ya2xldCogZnJvbShET01DU1NOYW1lc3BhY2UmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuaWRsIGIvU291
cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5pZGwKaW5kZXggMTkwY2RiNDVlYzc1
M2RlYmJlOTZmOGQ4MzM4MTNmNDQ2MzVhZThjMy4uYWE1OWU1ZWUyZGU5MTgxZDMwNDdmZTM0ODA0
ZmU1MjdhMjZmNzQxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50
V29ya2xldC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5p
ZGwKQEAgLTI3LDYgKzI3LDUgQEAKICAgICBFbmFibGVkQXRSdW50aW1lPUNTU1BhaW50aW5nQVBJ
LAogICAgIENvbmRpdGlvbmFsPUNTU19QQUlOVElOR19BUEksCiBdIHBhcnRpYWwgaW50ZXJmYWNl
IERPTUNTU05hbWVzcGFjZSB7Ci0gICAgLy8gRklYTUU6IFRoaXMgaXMgbm90IGFjdHVhbGx5IHBh
cnQgb2YgdGhlIHNwZWMsIGFuZCBzaG91bGQgYmUgcmVwbGFjZWQgd2hlbiB3b3JrbGV0cyBhcmUg
aW1wbGVtZW50ZWQKLSAgICBbSW1wbGVtZW50ZWRBcz1lbnN1cmVQYWludFdvcmtsZXRHbG9iYWxT
Y29wZSxDYWxsV2l0aD1Eb2N1bWVudF0gc3RhdGljIHJlYWRvbmx5IGF0dHJpYnV0ZSBDU1NQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZSBwYWludFdvcmtsZXRHbG9iYWxTY29wZTsKKyAgICBbSW1wbGVt
ZW50ZWRBcz1lbnN1cmVQYWludFdvcmtsZXQsQ2FsbFdpdGg9RG9jdW1lbnRdIHN0YXRpYyByZWFk
b25seSBhdHRyaWJ1dGUgV29ya2xldCBwYWludFdvcmtsZXQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKaW5kZXggN2I0ODA4YmU2YTM4Njc1MTAwODBjMGJhNDAyYzE3MWYxZTU4MDMwOC4uMTY2
NDNlZDE5YzcwOTIyMTI3NzNhMGUzMDNiZGRlMmQ3YWU4NzYyOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiQ0RBVEFTZWN0aW9uLmgiCiAjaW5j
bHVkZSAiQ1NTQW5pbWF0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkNTU0ZvbnRTZWxlY3Rv
ci5oIgotI2luY2x1ZGUgIkNTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAi
Q1NTU3R5bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgIkNTU1N0eWxlU2hlZXQuaCIKICNpbmNs
dWRlICJDYWNoZWRDU1NTdHlsZVNoZWV0LmgiCkBAIC0xNDAsNiArMTM5LDcgQEAKICNpbmNsdWRl
ICJQYWdlQ29uc29sZUNsaWVudC5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUg
IlBhZ2VUcmFuc2l0aW9uRXZlbnQuaCIKKyNpbmNsdWRlICJQYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTG9jYWxlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIKQEAgLTIxNyw2
ICsyMTcsNyBAQAogI2luY2x1ZGUgIldlYkFuaW1hdGlvbi5oIgogI2luY2x1ZGUgIldoZWVsRXZl
bnQuaCIKICNpbmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgorI2luY2x1ZGUgIldvcmtsZXQuaCIK
ICNpbmNsdWRlICJYTUxEb2N1bWVudC5oIgogI2luY2x1ZGUgIlhNTERvY3VtZW50UGFyc2VyLmgi
CiAjaW5jbHVkZSAiWE1MTlNOYW1lcy5oIgpAQCAtODM3NywxMSArODM3OCwxNiBAQCB2b2lkIERv
Y3VtZW50OjpmcmFtZVdhc0Rpc2Nvbm5lY3RlZEZyb21Pd25lcigpCiB9CiAKICNpZiBFTkFCTEUo
Q1NTX1BBSU5USU5HX0FQSSkKLUNTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlJiBEb2N1bWVudDo6
ZW5zdXJlQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoKQorV29ya2xldCYgRG9jdW1lbnQ6OmVu
c3VyZUNTU1BhaW50V29ya2xldCgpCiB7Ci0gICAgaWYgKCFtX0NTU1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlKQotICAgICAgICBtX0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlID0gQ1NTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGU6OmNyZWF0ZSgpOwotICAgIHJldHVybiAqbV9DU1NQYWludFdvcmts
ZXRHbG9iYWxTY29wZTsKKyAgICBpZiAoIW1fQ1NTUGFpbnRXb3JrbGV0KQorICAgICAgICBtX0NT
U1BhaW50V29ya2xldCA9IFdvcmtsZXQ6OmNyZWF0ZSgpOworICAgIHJldHVybiAqbV9DU1NQYWlu
dFdvcmtsZXQ7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OnNldENTU1BhaW50V29ya2xldEdsb2JhbFNj
b3BlKFJlZjxQYWludFdvcmtsZXRHbG9iYWxTY29wZT4mJiBzY29wZSkKK3sKKyAgICBtX2Nzc1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlID0gV1RGTW92ZShzY29wZSk7CiB9CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAppbmRleCA4NTQyYzE1NTY3MTdmMjdiNjA4OTA3ZDJkMTRlZTE0Y2RhMjQ4
ZmQ4Li40YjQ2MjMzNDNmY2RlMGI0YjJiNDk5N2I0YTM0MzBiZGUxZTliYzUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaApAQCAtODgsNyArODgsNiBAQCBjbGFzcyBBdHRyOwogY2xhc3MgQ0RBVEFTZWN0
aW9uOwogY2xhc3MgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTsKIGNsYXNzIENTU0ZvbnRTZWxlY3Rv
cjsKLWNsYXNzIENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlOwogY2xhc3MgQ1NTU3R5bGVEZWNs
YXJhdGlvbjsKIGNsYXNzIENTU1N0eWxlU2hlZXQ7CiBjbGFzcyBDYWNoZWRDU1NTdHlsZVNoZWV0
OwpAQCAtMTU0LDYgKzE1Myw3IEBAIGNsYXNzIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHM7
CiBjbGFzcyBOb2RlRmlsdGVyOwogY2xhc3MgTm9kZUl0ZXJhdG9yOwogY2xhc3MgUGFnZTsKK2Ns
YXNzIFBhaW50V29ya2xldEdsb2JhbFNjb3BlOwogY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50Owog
Y2xhc3MgUHJvY2Vzc2luZ0luc3RydWN0aW9uOwogY2xhc3MgUXVhbGlmaWVkTmFtZTsKQEAgLTE5
NCw2ICsxOTQsNyBAQCBjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ7CiBjbGFzcyBXZWJHUFVS
ZW5kZXJpbmdDb250ZXh0OwogY2xhc3MgV2ViTWV0YWxSZW5kZXJpbmdDb250ZXh0OwogY2xhc3Mg
V2luZG93UHJveHk7CitjbGFzcyBXb3JrbGV0OwogY2xhc3MgWFBhdGhFdmFsdWF0b3I7CiBjbGFz
cyBYUGF0aEV4cHJlc3Npb247CiBjbGFzcyBYUGF0aE5TUmVzb2x2ZXI7CkBAIC0xMzUwLDYgKzEz
NTEsMTAgQEAgcHVibGljOgogICAgIC8vIENhbGxlcnMgc2hvdWxkIHRyeSB0byBjcmVhdGUgdGhl
IENvbnNvbGVNZXNzYWdlIHRoZW1zZWx2ZXMuCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciA9IDApIGZpbmFsOwogCisg
ICAgLy8gVGhlIGZvbGxvd2luZyBhZGRNZXNzYWdlIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQuCisg
ICAgLy8gQ2FsbGVycyBzaG91bGQgdHJ5IHRvIGNyZWF0ZSB0aGUgQ29uc29sZU1lc3NhZ2UgdGhl
bXNlbHZlcy4KKyAgICB2b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVs
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCB1bnNpZ25l
ZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlNj
cmlwdENhbGxTdGFjaz4mJiwgSlNDOjpFeGVjU3RhdGUqID0gbnVsbHB0ciwgdW5zaWduZWQgbG9u
ZyByZXF1ZXN0SWRlbnRpZmllciA9IDApIGZpbmFsOworCiAgICAgU2VjdXJpdHlPcmlnaW4mIHNl
Y3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gKlNlY3VyaXR5Q29udGV4dDo6c2VjdXJpdHlP
cmlnaW4oKTsgfQogICAgIFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4oKSBjb25zdCBmaW5hbCB7
IHJldHVybiB0b3BEb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCk7IH0KIApAQCAtMTUxNyw3ICsx
NTIyLDkgQEAgcHVibGljOgogICAgIGJvb2wgcmVnaXN0ZXJDU1NQcm9wZXJ0eShDU1NSZWdpc3Rl
cmVkQ3VzdG9tUHJvcGVydHkmJik7CiAKICNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKLSAg
ICBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSYgZW5zdXJlQ1NTUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUoKTsKKyAgICBXb3JrbGV0JiBlbnN1cmVDU1NQYWludFdvcmtsZXQoKTsKKyAgICBQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZSogZ2V0Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoKSB7IHJl
dHVybiBtX2Nzc1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmdldCgpOyB9CisgICAgdm9pZCBzZXRD
U1NQYWludFdvcmtsZXRHbG9iYWxTY29wZShSZWY8UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+JiYp
OwogI2VuZGlmCiAKICAgICB2b2lkIHNldEFzUnVubmluZ1VzZXJTY3JpcHRzKCkgeyBtX2lzUnVu
bmluZ1VzZXJTY3JpcHRzID0gdHJ1ZTsgfQpAQCAtMTU3MCwxMCArMTU3Nyw2IEBAIHByaXZhdGU6
CiAgICAgdm9pZCByZWZTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgZmluYWwgeyByZWYoKTsgfQog
ICAgIHZvaWQgZGVyZWZTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgZmluYWwgeyBkZXJlZigpOyB9
CiAKLSAgICAvLyBUaGUgZm9sbG93aW5nIGFkZE1lc3NhZ2UgZnVuY3Rpb24gaXMgZGVwcmVjYXRl
ZC4KLSAgICAvLyBDYWxsZXJzIHNob3VsZCB0cnkgdG8gY3JlYXRlIHRoZSBDb25zb2xlTWVzc2Fn
ZSB0aGVtc2VsdmVzLgotICAgIHZvaWQgYWRkTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdl
TGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIHVu
c2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgUmVmUHRyPEluc3BlY3Rv
cjo6U2NyaXB0Q2FsbFN0YWNrPiYmLCBKU0M6OkV4ZWNTdGF0ZSogPSBudWxscHRyLCB1bnNpZ25l
ZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyID0gMCkgZmluYWw7Ci0KICAgICBTZWNvbmRzIG1pbmlt
dW1ET01UaW1lckludGVydmFsKCkgY29uc3QgZmluYWw7CiAKICAgICBTZWNvbmRzIGRvbVRpbWVy
QWxpZ25tZW50SW50ZXJ2YWwoYm9vbCBoYXNSZWFjaGVkTWF4TmVzdGluZ0xldmVsKSBjb25zdCBm
aW5hbDsKQEAgLTIwNjAsNyArMjA2Myw4IEBAIHByaXZhdGU6CiAgICAgQ1NTUmVnaXN0ZXJlZEN1
c3RvbVByb3BlcnR5U2V0IG1fQ1NTUmVnaXN0ZXJlZFByb3BlcnR5U2V0OwogCiAjaWYgRU5BQkxF
KENTU19QQUlOVElOR19BUEkpCi0gICAgUmVmUHRyPENTU1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
PiBtX0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlOworICAgIFJlZlB0cjxXb3JrbGV0PiBtX0NT
U1BhaW50V29ya2xldDsKKyAgICBSZWZQdHI8UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+IG1fY3Nz
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU7CiAjZW5kaWYKIAogICAgIGJvb2wgbV9pc1J1bm5pbmdV
c2VyU2NyaXB0cyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnRUYXJnZXRGYWN0b3J5LmluIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9y
eS5pbgppbmRleCA2MGFiMWE1ODI4OGJlOTlhMjk3ZWU5MjNiODg5NDBmMTkzZjZmNTVmLi43OGEy
MmIzMTZhNGM0NjgwYjFkN2MyMjc0YWNiNmFiN2ZkNTY0OGJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudFRhcmdldEZhY3RvcnkuaW4KQEAgLTUyLDYgKzUyLDcgQEAgV2ViQW5pbWF0aW9uCiBX
ZWJLaXRNZWRpYUtleVNlc3Npb24gY29uZGl0aW9uYWw9TEVHQUNZX0VOQ1JZUFRFRF9NRURJQQog
V2ViU29ja2V0CiBXb3JrZXIKK1dvcmtsZXRHbG9iYWxTY29wZSBjb25kaXRpb25hbD1DU1NfUEFJ
TlRJTkdfQVBJCiBYTUxIdHRwUmVxdWVzdAogWE1MSHR0cFJlcXVlc3RVcGxvYWQKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4IGJhNWMzNjMy
NGJjODM0MDBlNDRiOGM5YzE1YjE1NWU1ODM3MGNmYmYuLmVlZTM4YjViYmFmMmM5M2I0YTVhZjJm
ODJkOTNjYTUxMGVjZDEzN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5jcHAKQEAgLTU0LDYgKzU0LDggQEAKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxT
Y29wZS5oIgogI2luY2x1ZGUgIldvcmtlck5hdmlnYXRvci5oIgogI2luY2x1ZGUgIldvcmtlclRo
cmVhZC5oIgorI2luY2x1ZGUgIldvcmtsZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmts
ZXRTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ2F0Y2hTY29w
ZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0V4Y2VwdGlvbi5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTUHJvbWlzZS5oPgpAQCAtNDc2LDggKzQ3OCwxNSBAQCBKU0M6OlZNJiBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Ojp2bSgpCiB7CiAgICAgaWYgKGlzPERvY3VtZW50PigqdGhp
cykpCiAgICAgICAgIHJldHVybiBjb21tb25WTSgpOworICAgIGlmIChpczxXb3JrZXJHbG9iYWxT
Y29wZT4oKnRoaXMpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+
KCp0aGlzKS5zY3JpcHQoKS0+dm0oKTsKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKyAg
ICBpZiAoaXM8V29ya2xldEdsb2JhbFNjb3BlPigqdGhpcykpCisgICAgICAgIHJldHVybiBkb3du
Y2FzdDxXb3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlzKS5zY3JpcHQoKS0+dm0oKTsKKyNlbmRpZgog
Ci0gICAgcmV0dXJuIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykuc2NyaXB0KCkt
PnZtKCk7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gY29t
bW9uVk0oKTsKIH0KIAogUmVqZWN0ZWRQcm9taXNlVHJhY2tlciYgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6ZW5zdXJlUmVqZWN0ZWRQcm9taXNlVHJhY2tlclNsb3coKQpAQCAtNTE5LDggKzUyOCwx
OSBAQCBKU0M6OkV4ZWNTdGF0ZSogU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZXhlY1N0YXRlKCkK
ICAgICAgICAgcmV0dXJuIGV4ZWNTdGF0ZUZyb21QYWdlKG1haW5UaHJlYWROb3JtYWxXb3JsZCgp
LCBkb2N1bWVudC5wYWdlKCkpOwogICAgIH0KIAotICAgIFdvcmtlckdsb2JhbFNjb3BlKiB3b3Jr
ZXJHbG9iYWxTY29wZSA9IHN0YXRpY19jYXN0PFdvcmtlckdsb2JhbFNjb3BlKj4odGhpcyk7Ci0g
ICAgcmV0dXJuIGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29w
ZSk7CisgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykpIHsKKyAgICAgICAgV29y
a2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFs
U2NvcGU+KCp0aGlzKTsKKyAgICAgICAgcmV0dXJuIGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxT
Y29wZSh3b3JrZXJHbG9iYWxTY29wZSk7CisgICAgfQorI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdf
QVBJKQorICAgIGlmIChpczxXb3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlzKSkgeworICAgICAgICBX
b3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtsZXRHbG9iYWxTY29wZSA9IGRvd25jYXN0PFdvcmtsZXRH
bG9iYWxTY29wZT4oKnRoaXMpOworICAgICAgICByZXR1cm4gZXhlY1N0YXRlRnJvbVdvcmtsZXRH
bG9iYWxTY29wZSh3b3JrbGV0R2xvYmFsU2NvcGUpOworICAgIH0KKyNlbmRpZgorCisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIFN0cmluZyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Ojpkb21haW5Gb3JDYWNoZVBhcnRpdGlvbigpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCAyYjY0NzVlNjI3
ZGNlZmQ1ZGRiNjQzNGUxNTE1NTQ2NWU1NWM0N2U0Li43ODU5MDQ1ODIzYjdjNjMwNTBhZTAxZjFh
NjQ1YmFkMzBiMmRjNzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgKQEAgLTg5LDYgKzg5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlz
RG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1dv
cmtlckdsb2JhbFNjb3BlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgaXNXb3JrbGV0R2xvYmFsU2NvcGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAg
dmlydHVhbCBib29sIGlzQ29udGV4dFRocmVhZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgaXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0ID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVn
Z2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29y
a2VyRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggY2FjMDYyNTY5OWE0MThiODkwZDNkMTEzZDNjNDky
N2JkZTZmZWM5ZC4uYjIwY2JiYzk1MDcwMjgxMWI2NTg5YWMxZGZiZDU3MzM5MTkzZDMzNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVi
dWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3Jr
ZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgSW5qZWN0ZWRTY3Jp
cHQgV29ya2VyRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5n
JiBlcnJvclN0cmkKICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KCk7CiAgICAgfQogCi0g
ICAgSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlID0gZXhlY1N0YXRlRnJvbVdvcmtlckdsb2Jh
bFNjb3BlKCZtX3dvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0
U3RhdGUgPSBleGVjU3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUobV93b3JrZXJHbG9iYWxTY29w
ZSk7CiAgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0TWFuYWdlcigpLmluamVjdGVkU2NyaXB0Rm9y
KHNjcmlwdFN0YXRlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggOWNjNjlk
MTcyNGNkYWQxOGY5OGUzZDNiMzJmMjk2OGE1NTRlMDY3ZC4uOGMzMjE0ODdjNjg1ZmQzNGZhZWFh
NzU1MGM5OGEyMjkwODc1ZDMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCkBAIC02NSw3
ICs2NSw3IEBAIEluamVjdGVkU2NyaXB0IFdvcmtlclJ1bnRpbWVBZ2VudDo6aW5qZWN0ZWRTY3Jp
cHRGb3JFdmFsKEVycm9yU3RyaW5nJiBlcnJvclN0cmluCiAgICAgICAgIHJldHVybiBJbmplY3Rl
ZFNjcmlwdCgpOwogICAgIH0KIAotICAgIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSA9IGV4
ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZSgmbV93b3JrZXJHbG9iYWxTY29wZSk7CisgICAg
SlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlID0gZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNj
b3BlKG1fd29ya2VyR2xvYmFsU2NvcGUpOwogICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFn
ZXIoKS5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHAKaW5kZXgg
ZDJlNDJjMGM5ZTYxOTlmNTI3NDI5MTY3MGYxN2EwNmU5ZGU4MjBmYi4uMTVhYTkyNGMyYjYxNzFl
NTM1MGMxMDFkNDQwYmU2YzNjY2E1MGM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DdXN0b21QYWludEltYWdlOjpDdXN0b21QYWludElt
YWdlKGNvbnN0IENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb24mIGRl
ZmluaXRpb24sIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKK0N1c3RvbVBhaW50SW1hZ2U6OkN1c3Rv
bVBhaW50SW1hZ2UoY29uc3QgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OlBhaW50RGVmaW5pdGlv
biYgZGVmaW5pdGlvbiwgY29uc3QgRmxvYXRTaXplJiBzaXplKQogICAgIDogbV9wYWludENhbGxi
YWNrKGRlZmluaXRpb24ucGFpbnRDYWxsYmFjay5nZXQoKSkKIHsKICAgICBzZXRDb250YWluZXJT
aXplKHNpemUpOwpAQCAtNjMsNyArNjMsNiBAQCBJbWFnZURyYXdSZXN1bHQgQ3VzdG9tUGFpbnRJ
bWFnZTo6ZG9DdXN0b21QYWludChHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjbwogICAg
IGlmIChyZXN1bHQudHlwZSgpICE9IENhbGxiYWNrUmVzdWx0VHlwZTo6U3VjY2VzcykKICAgICAg
ICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKIAotICAgIFVOVVNFRF9QQVJB
TShkZXN0Q29udGV4dCk7CiAgICAgYXV0byBpbWFnZSA9IGNhbnZhcy0+Y29waWVkSW1hZ2UoKTsK
ICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3Ro
aW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9t
UGFpbnRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFp
bnRJbWFnZS5oCmluZGV4IDAzYWIyYTg4ODY4M2EzZjUzODcxZGFjNWI1MWY4OTE5ZGE0YzRkZDIu
LmViNmE4MWJhZTI0ZDExN2UwY2QzNDg4ZGM0N2E3NmU2MmIwNDIwY2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmgKQEAgLTI3
LDggKzI3LDggQEAKIAogI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQogCi0jaW5jbHVkZSAi
Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJHZW5lcmF0ZWRJbWFnZS5o
IgorI2luY2x1ZGUgIlBhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBJbWFnZUJ1ZmZlcjsKIAogY2xhc3MgQ3Vz
dG9tUGFpbnRJbWFnZSBmaW5hbCA6IHB1YmxpYyBHZW5lcmF0ZWRJbWFnZSB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxDdXN0b21QYWludEltYWdlPiBjcmVhdGUoY29uc3QgQ1NTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGU6OlBhaW50RGVmaW5pdGlvbiYgZGVmaW5pdGlvbiwgY29uc3QgRmxvYXRT
aXplJiBzaXplKQorICAgIHN0YXRpYyBSZWY8Q3VzdG9tUGFpbnRJbWFnZT4gY3JlYXRlKGNvbnN0
IFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb24mIGRlZmluaXRpb24sIGNv
bnN0IEZsb2F0U2l6ZSYgc2l6ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEN1c3RvbVBhaW50SW1hZ2UoZGVmaW5pdGlvbiwgc2l6ZSkpOwogICAgIH0KQEAgLTQ1LDcgKzQ1
LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNDdXN0b21QYWludEltYWdlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiBwcml2YXRlOgotICAgIEN1c3RvbVBhaW50SW1hZ2UoY29u
c3QgQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OlBhaW50RGVmaW5pdGlvbiYsIGNvbnN0IEZs
b2F0U2l6ZSYpOworICAgIEN1c3RvbVBhaW50SW1hZ2UoY29uc3QgUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGU6OlBhaW50RGVmaW5pdGlvbiYsIGNvbnN0IEZsb2F0U2l6ZSYpOwogCiAgICAgSW1hZ2VE
cmF3UmVzdWx0IGRvQ3VzdG9tUGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRTaXpl
Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEds
b2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMDEzYjRhYjk1YWEzNDdlZTlhOWEwZTk0YTBhMzJiNzQy
MjM2MzIyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdf
QVBJKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxQYWludFdvcmtsZXRHbG9iYWxTY29w
ZT4gUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OmNyZWF0ZShXZWFrUHRyPERvY3VtZW50PiYmIGRv
Y3VtZW50LCBTY3JpcHRTb3VyY2VDb2RlJiYgY29kZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBQYWludFdvcmtsZXRHbG9iYWxTY29wZShXVEZNb3ZlKGRvY3VtZW50KSwgV1RGTW92ZShj
b2RlKSkpOworfQorCitQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6UGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUoV2Vha1B0cjxEb2N1bWVudD4mJiBkb2N1bWVudCwgU2NyaXB0U291cmNlQ29kZSYmIGNv
ZGUpCisgICAgOiBXb3JrbGV0R2xvYmFsU2NvcGUoV1RGTW92ZShkb2N1bWVudCksIFdURk1vdmUo
Y29kZSkpCit7Cit9CisKK2RvdWJsZSBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6ZGV2aWNlUGl4
ZWxSYXRpbygpCit7CisgICAgcmV0dXJuIDEuMDsKK30KKworRXhjZXB0aW9uT3I8dm9pZD4gUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZFJlZ2lzdGVyZWRQYWludCgpCit7CisgICAgcmV0dXJu
IHsgfTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljk5ZjhhODZjNGMwN2FmMWI5YmNjOTE5NzVhMWRmZjk1OTVmZjFiMjUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oCkBA
IC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorCisjaW5j
bHVkZSAiQ1NTUGFpbnRDYWxsYmFjay5oIgorI2luY2x1ZGUgIldvcmtsZXRHbG9iYWxTY29wZS5o
IgorCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEpTVmFsdWU7Cit9IC8vIG5hbWVzcGFjZSBKU0MK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQYWludFdvcmtsZXRHbG9iYWxTY29wZSA6
IHB1YmxpYyBXb3JrbGV0R2xvYmFsU2NvcGUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGU+IGNyZWF0ZShXZWFrUHRyPERvY3VtZW50PiYmLCBTY3JpcHRT
b3VyY2VDb2RlJiYpOworCisgICAgYm9vbCBpc1BhaW50V29ya2xldEdsb2JhbFNjb3BlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgRXhjZXB0aW9uT3I8dm9pZD4gYWRkUmVn
aXN0ZXJlZFBhaW50KCk7CisgICAgZG91YmxlIGRldmljZVBpeGVsUmF0aW8oKTsKKworICAgIHN0
cnVjdCBQYWludERlZmluaXRpb24geworICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcgbmFtZTsK
KyAgICAgICAgY29uc3QgUmVmPENTU1BhaW50Q2FsbGJhY2s+IHBhaW50Q2FsbGJhY2s7CisgICAg
ICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+IGlucHV0UHJvcGVydGllczsKKyAgICAgICAgY29uc3Qg
VmVjdG9yPFN0cmluZz4gaW5wdXRBcmd1bWVudHM7CisgICAgfTsKKworICAgIEhhc2hNYXA8U3Ry
aW5nLCBzdGQ6OnVuaXF1ZV9wdHI8UGFpbnREZWZpbml0aW9uPj4mIHBhaW50RGVmaW5pdGlvbk1h
cCgpIHsgcmV0dXJuIG1fcGFpbnREZWZpbml0aW9uTWFwOyB9CisKK3ByaXZhdGU6CisgICAgUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGUoV2Vha1B0cjxEb2N1bWVudD4mJiwgU2NyaXB0U291cmNlQ29k
ZSYmKTsKKworICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8UGFpbnREZWZpbml0
aW9uPj4gbV9wYWludERlZmluaXRpb25NYXA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xl
dEdsb2JhbFNjb3BlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEds
b2JhbFNjb3BlLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNTQ5Y2NmMDQzYmUwNGRiNjkxZGVkN2Y2MGM0ZWU1
ZWE3YWNjZGI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGUuaWRsCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorKi8KKworWworICAgIEV4cG9zZWQ9UGFpbnRXb3JrbGV0LAorICAgIEVuYWJsZWRBdFJ1bnRp
bWU9Q1NTUGFpbnRpbmdBUEksCisgICAgQ29uZGl0aW9uYWw9Q1NTX1BBSU5USU5HX0FQSSwKKyAg
ICBKU0N1c3RvbU1hcmtGdW5jdGlvbiwKKyAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCisg
ICAgSW1wbGljaXRUaGlzLAorICAgIElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0LAor
ICAgIElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0T25Qcm90b3R5cGUsCisgICAgR2xv
YmFsPShXb3JrbGV0LFBhaW50V29ya2xldCksCitdIGludGVyZmFjZSBQYWludFdvcmtsZXRHbG9i
YWxTY29wZSA6IFdvcmtsZXRHbG9iYWxTY29wZSB7CisgICAgW0N1c3RvbSwgTWF5VGhyb3dFeGNl
cHRpb25dIHZvaWQgcmVnaXN0ZXJQYWludChET01TdHJpbmcgbmFtZSwgRnVuY3Rpb24gcGFpbnRD
dG9yKTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBkZXZpY2VQ
aXhlbFJhdGlvOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmts
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NzdmYWM1ZTUwYmFlZjE5NTk2OWU5ODg3NzNmZmQ0MGI3ODQxNDRjMwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQuY3BwCkBAIC0wLDAgKzEsNTYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV29ya2xldC5oIgorCisjaWYgRU5BQkxFKENTU19QQUlOVElO
R19BUEkpCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIlBhaW50V29ya2xldEds
b2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1JlZjxXb3JrbGV0PiBXb3JrbGV0OjpjcmVhdGUoKQoreworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFdvcmtsZXQoKSk7Cit9CisKKworV29ya2xldDo6V29ya2xldCgpCit7
Cit9CisKK3ZvaWQgV29ya2xldDo6YWRkTW9kdWxlKERvY3VtZW50JiBkb2N1bWVudCwgU3RyaW5n
IG1vZHVsZVVSTCkKK3sKKyAgICBhdXRvIGNvbnRleHQgPSBQYWludFdvcmtsZXRHbG9iYWxTY29w
ZTo6Y3JlYXRlKG1ha2VXZWFrUHRyKGRvY3VtZW50KSwgU2NyaXB0U291cmNlQ29kZShtb2R1bGVV
UkwpKTsKKyAgICBjb250ZXh0LT5ldmFsdWF0ZSgpOworICAgIGRvY3VtZW50LnNldENTU1BhaW50
V29ya2xldEdsb2JhbFNjb3BlKFdURk1vdmUoY29udGV4dCkpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMv
V29ya2xldC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjYxM2Y0OTQ3MDQ0NGViZjQ3YTk0ZDRkZjcwNjc0ZWI3MGRjZDJiOTUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmgKQEAgLTAsMCArMSw0NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIERvY3VtZW50OworCitjbGFzcyBXb3JrbGV0IDogcHVibGljIFJlZkNvdW50ZWQ8V29y
a2xldD4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8V29ya2xldD4gY3JlYXRlKCk7CisgICAg
CisgICAgdm9pZCBhZGRNb2R1bGUoRG9jdW1lbnQmLCBTdHJpbmcgbW9kdWxlVVJMKTsKKworcHJv
dGVjdGVkOgorICAgIFdvcmtsZXQoKTsKKworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3NGNjOTEz
ODAwYjc5ZWU3MGE1YzQ0Njc5ZWYxNWZlN2VjODQ5ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmlkbApAQCAtMCwwICsxLDMzIEBACisvKgorKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyovCisKK1sKKyAgICBFbmFibGVkQXRSdW50aW1lPUNTU1BhaW50aW5nQVBJLAor
ICAgIENvbmRpdGlvbmFsPUNTU19QQUlOVElOR19BUEksCisgICAgSW1wbGVtZW50YXRpb25MYWNr
c1ZUYWJsZSwKKyAgICBHbG9iYWw9V29ya2xldCwKK10gaW50ZXJmYWNlIFdvcmtsZXQgeworICAg
IFtDYWxsV2l0aD1Eb2N1bWVudF0gdm9pZCBhZGRNb2R1bGUoVVNWU3RyaW5nIG1vZHVsZVVSTC8q
LCBvcHRpb25hbCBXb3JrbGV0T3B0aW9ucyBvcHRpb25zKi8pOworfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OTUw
NmI5ZTM5MzEzNGNlYzMzNjM2Y2E2NmYxYzVkYzI0Yjg4MTgyCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuY3BwCkBAIC0wLDAg
KzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV29y
a2xldENvbnNvbGVDbGllbnQuaCIKKworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorCisj
aW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvQ29uc29sZU1lc3NhZ2UuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRB
cmd1bWVudHMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxsU3RhY2suaD4K
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5Lmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKK1dvcmtsZXRD
b25zb2xlQ2xpZW50OjpXb3JrbGV0Q29uc29sZUNsaWVudChXb3JrbGV0R2xvYmFsU2NvcGUmIHdv
cmtsZXRHbG9iYWxTY29wZSkKKyAgICA6IG1fd29ya2xldEdsb2JhbFNjb3BlKHdvcmtsZXRHbG9i
YWxTY29wZSkKK3sKK30KKworV29ya2xldENvbnNvbGVDbGllbnQ6On5Xb3JrbGV0Q29uc29sZUNs
aWVudCgpID0gZGVmYXVsdDsKKwordm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6bWVzc2FnZVdp
dGhUeXBlQW5kTGV2ZWwoTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBKU0M6
OkV4ZWNTdGF0ZSogZXhlYywgUmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmIGFyZ3Vt
ZW50cykKK3sKKyAgICBTdHJpbmcgbWVzc2FnZVRleHQ7CisgICAgYXJndW1lbnRzLT5nZXRGaXJz
dEFyZ3VtZW50QXNTdHJpbmcobWVzc2FnZVRleHQpOworICAgIGF1dG8gbWVzc2FnZSA9IHN0ZDo6
bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29u
c29sZUFQSSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBXVEZNb3ZlKGFyZ3VtZW50cyksIGV4
ZWMpOworICAgIG1fd29ya2xldEdsb2JhbFNjb3BlLmFkZENvbnNvbGVNZXNzYWdlKFdURk1vdmUo
bWVzc2FnZSkpOworfQorCit2b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50Ojpjb3VudChKU0M6OkV4
ZWNTdGF0ZSosIFJlZjxTY3JpcHRBcmd1bWVudHM+JiYpIHsgfQorCit2b2lkIFdvcmtsZXRDb25z
b2xlQ2xpZW50Ojp0aW1lKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJikgeyB9Cit2b2lk
IFdvcmtsZXRDb25zb2xlQ2xpZW50Ojp0aW1lRW5kKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3Ry
aW5nJikgeyB9CisKK3ZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6OnByb2ZpbGUoSlNDOjpFeGVj
U3RhdGUqLCBjb25zdCBTdHJpbmcmKSB7IH0KK3ZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6OnBy
b2ZpbGVFbmQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmKSB7IH0KKwordm9pZCBXb3Jr
bGV0Q29uc29sZUNsaWVudDo6dGFrZUhlYXBTbmFwc2hvdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0
IFN0cmluZyYpIHsgfQordm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6dGltZVN0YW1wKEpTQzo6
RXhlY1N0YXRlKiwgUmVmPFNjcmlwdEFyZ3VtZW50cz4mJikgeyB9CisKK3ZvaWQgV29ya2xldENv
bnNvbGVDbGllbnQ6OnJlY29yZChKU0M6OkV4ZWNTdGF0ZSosIFJlZjxTY3JpcHRBcmd1bWVudHM+
JiYpIHsgfQordm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6cmVjb3JkRW5kKEpTQzo6RXhlY1N0
YXRlKiwgUmVmPFNjcmlwdEFyZ3VtZW50cz4mJikgeyB9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldENv
bnNvbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xp
ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNzBlMjc0ZWY3M2QxMjNkZmU3ODc4MDkyYThmYTM1MTY5NDM4NTQ0
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25z
b2xlQ2xpZW50LmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisKKyNpbmNsdWRlICJXb3JrbGV0R2xvYmFs
U2NvcGUuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlQ2xpZW50Lmg+CisjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBFeGVjU3RhdGU7
Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV29ya2xldENvbnNvbGVDbGllbnQg
ZmluYWwgOiBwdWJsaWMgSlNDOjpDb25zb2xlQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBXb3JrbGV0Q29uc29sZUNsaWVudChXb3Jr
bGV0R2xvYmFsU2NvcGUmKTsKKyAgICB2aXJ0dWFsIH5Xb3JrbGV0Q29uc29sZUNsaWVudCgpOwor
Citwcm90ZWN0ZWQ6CisgICAgdm9pZCBtZXNzYWdlV2l0aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlw
ZSwgTWVzc2FnZUxldmVsLCBKU0M6OkV4ZWNTdGF0ZSosIFJlZjxJbnNwZWN0b3I6OlNjcmlwdEFy
Z3VtZW50cz4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjb3VudChKU0M6OkV4ZWNTdGF0ZSosIFJl
ZjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBwcm9m
aWxlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7CisgICAg
dm9pZCBwcm9maWxlRW5kKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiB0aXRsZSkgb3Zl
cnJpZGU7CisgICAgdm9pZCB0YWtlSGVhcFNuYXBzaG90KEpTQzo6RXhlY1N0YXRlKiwgY29uc3Qg
U3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7CisgICAgdm9pZCB0aW1lKEpTQzo6RXhlY1N0YXRlKiwg
Y29uc3QgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7CisgICAgdm9pZCB0aW1lRW5kKEpTQzo6RXhl
Y1N0YXRlKiwgY29uc3QgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7CisgICAgdm9pZCB0aW1lU3Rh
bXAoSlNDOjpFeGVjU3RhdGUqLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYpIG92
ZXJyaWRlOworICAgIHZvaWQgcmVjb3JkKEpTQzo6RXhlY1N0YXRlKiwgUmVmPEluc3BlY3Rvcjo6
U2NyaXB0QXJndW1lbnRzPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlY29yZEVuZChKU0M6OkV4
ZWNTdGF0ZSosIFJlZjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4mJikgb3ZlcnJpZGU7CisK
K3ByaXZhdGU6CisgICAgV29ya2xldEdsb2JhbFNjb3BlJiBtX3dvcmtsZXRHbG9iYWxTY29wZTsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzI1YjZkMzc5YTRh
ZTgwOTI1ZGZkM2JlMDE5MDEyYzY4OTg5ZGRiZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTAsMCArMSwxMjYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldvcmtsZXRHbG9iYWxTY29wZS5oIgorCisjaWYgRU5B
QkxFKENTU19QQUlOVElOR19BUEkpCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUg
IkZyYW1lLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCisjaW5jbHVk
ZSAiSlNXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJQYWdlQ29uc29sZUNsaWVudC5o
IgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luUG9saWN5LmgiCisjaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKKyNpbmNsdWRlICJXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgorCisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvRXhjZXB0aW9uLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2Nr
Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0Q2FsbFN0YWNrLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKK1dvcmtsZXRHbG9i
YWxTY29wZTo6V29ya2xldEdsb2JhbFNjb3BlKFdlYWtQdHI8RG9jdW1lbnQ+JiYgZG9jdW1lbnQs
IFNjcmlwdFNvdXJjZUNvZGUmJiBjb2RlKQorICAgIDogbV9zZXNzaW9uSUQoZG9jdW1lbnQtPnNl
c3Npb25JRCgpKQorICAgICwgbV9zY3JpcHQoc3RkOjptYWtlX3VuaXF1ZTxXb3JrbGV0U2NyaXB0
Q29udHJvbGxlcj4odGhpcykpCisgICAgLCBtX2V2ZW50UXVldWUoKnRoaXMpCisgICAgLCBtX3Rv
cE9yaWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCkpCisgICAgLCBtX2RvY3VtZW50
KFdURk1vdmUoZG9jdW1lbnQpKQorICAgICwgbV9jb2RlKFdURk1vdmUoY29kZSkpCit7CisgICAg
QVNTRVJUKG1fZG9jdW1lbnQpOworICAgIEZyYW1lKiBmcmFtZSA9IG1fZG9jdW1lbnQtPmZyYW1l
KCk7CisgICAgbV9qc1J1bnRpbWVGbGFncyA9IChmcmFtZSA/IGZyYW1lLT5zZXR0aW5ncygpLmph
dmFTY3JpcHRSdW50aW1lRmxhZ3MoKSA6IEpTQzo6UnVudGltZUZsYWdzKCkpOworICAgIEFTU0VS
VChtX2RvY3VtZW50LT5wYWdlKCkpOworCisgICAgc2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koU2Vj
dXJpdHlPcmlnaW5Qb2xpY3k6OmNyZWF0ZShtX2RvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpKSk7
CisgICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudFNl
Y3VyaXR5UG9saWN5PihVUkwgeyBjb2RlLnVybCgpIH0sICp0aGlzKSk7Cit9CisKK1dvcmtsZXRH
bG9iYWxTY29wZTo6fldvcmtsZXRHbG9iYWxTY29wZSgpCit7CisgICAgcmVtb3ZlRnJvbUNvbnRl
eHRzTWFwKCk7CisgICAgbV9zY3JpcHQtPndvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIoKS0+c2V0
Q29uc29sZUNsaWVudChudWxscHRyKTsKK30KKwordm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmV2
YWx1YXRlKCkKK3sKKyAgICBtX3NjcmlwdC0+ZXZhbHVhdGUobV9jb2RlKTsKK30KKworYm9vbCBX
b3JrbGV0R2xvYmFsU2NvcGU6OmlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSBjb25zdAoreworICAg
IHJldHVybiBtX3NjcmlwdC0+aXNFeGVjdXRpb25Gb3JiaWRkZW4oKTsKK30KKwordm9pZCBXb3Jr
bGV0R2xvYmFsU2NvcGU6OmRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQor
eworICAgIG1fc2NyaXB0LT5kaXNhYmxlRXZhbChlcnJvck1lc3NhZ2UpOworfQorCit2b2lkIFdv
cmtsZXRHbG9iYWxTY29wZTo6ZGlzYWJsZVdlYkFzc2VtYmx5KGNvbnN0IFN0cmluZyYgZXJyb3JN
ZXNzYWdlKQoreworICAgIG1fc2NyaXB0LT5kaXNhYmxlV2ViQXNzZW1ibHkoZXJyb3JNZXNzYWdl
KTsKK30KKworVVJMIFdvcmtsZXRHbG9iYWxTY29wZTo6Y29tcGxldGVVUkwoY29uc3QgU3RyaW5n
JiB1cmwpIGNvbnN0Cit7CisgICAgLy8gQWx3YXlzIHJldHVybiBhIG51bGwgVVJMIHdoZW4gcGFz
c2VkIGEgbnVsbCBzdHJpbmcuCisgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBjaGFuZ2UgdGhlIFVS
TCBjb25zdHJ1Y3RvciB0byBoYXZlIHRoaXMgYmVoYXZpb3I/CisgICAgaWYgKHVybC5pc051bGwo
KSkKKyAgICAgICAgcmV0dXJuIFVSTCgpOworICAgIC8vIEFsd2F5cyB1c2UgVVRGLTggaW4gV29y
a2Vycy4KKyAgICByZXR1cm4gVVJMKG1fY29kZS51cmwoKSwgdXJsKTsKK30KKwordm9pZCBXb3Jr
bGV0R2xvYmFsU2NvcGU6OmxvZ0V4Y2VwdGlvblRvQ29uc29sZShjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyLCBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiYmIHN0YWNrKQoreworICAgIEFTU0VS
VChtX2RvY3VtZW50KTsKKyAgICBtX2RvY3VtZW50LT5sb2dFeGNlcHRpb25Ub0NvbnNvbGUoZXJy
b3JNZXNzYWdlLCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgV1RGTW92ZShz
dGFjaykpOworfQorCit2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2Uo
c3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+JiYgbWVzc2FnZSkKK3sK
KyAgICBBU1NFUlQobV9kb2N1bWVudCk7CisgICAgbV9kb2N1bWVudC0+YWRkQ29uc29sZU1lc3Nh
Z2UoV1RGTW92ZShtZXNzYWdlKSk7Cit9CisKK3ZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjphZGRD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCit7
CisgICAgQVNTRVJUKG1fZG9jdW1lbnQpOworICAgIG1fZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNz
YWdlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UsIHJlcXVlc3RJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1l
c3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlVGV4dCwgY29uc3QgU3RyaW5n
JiBzb3VyY2VVUkwsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwg
UmVmUHRyPFNjcmlwdENhbGxTdGFjaz4mJiBjYWxsU3RhY2ssIEpTQzo6RXhlY1N0YXRlKiBzdGF0
ZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQobV9kb2N1
bWVudCk7CisgICAgbV9kb2N1bWVudC0+YWRkTWVzc2FnZShzb3VyY2UsIGxldmVsLCBtZXNzYWdl
VGV4dCwgc291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFdURk1vdmUoY2FsbFN0
YWNrKSwgc3RhdGUsIHJlcXVlc3RJZGVudGlmaWVyKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0
R2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29w
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjQ1MzBkMDEyNDhjMzA0M2UwZTUzZTNiNTQ3NzE1Y2RiYzRjNzdkMzUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFs
U2NvcGUuaApAQCAtMCwwICsxLDEzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICoKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShDU1NfUEFJTlRJ
TkdfQVBJKQorCisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25P
ci5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJTY3Jp
cHRTb3VyY2VDb2RlLmgiCisjaW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIKKyNpbmNsdWRlICJV
UkwuaCIKKyNpbmNsdWRlICJXb3JrZXJFdmVudFF1ZXVlLmgiCisKKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9Db25zb2xlTWVzc2FnZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1J1bnRp
bWVGbGFncy5oPgorI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KKyNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBXb3JrbGV0U2NyaXB0Q29udHJv
bGxlcjsKK2NsYXNzIFNjcmlwdFNvdXJjZUNvZGU7CisKK2NsYXNzIFdvcmtsZXRHbG9iYWxTY29w
ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdvcmtsZXRHbG9iYWxTY29wZT4sIHB1YmxpYyBTdXBwbGVt
ZW50YWJsZTxXb3JrbGV0R2xvYmFsU2NvcGU+LCBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEgeworcHVibGljOgorICAgIHZpcnR1
YWwgfldvcmtsZXRHbG9iYWxTY29wZSgpOworCisgICAgdmlydHVhbCBib29sIGlzUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCisgICAgY29uc3QgVVJM
JiB1cmwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvZGUudXJsKCk7IH0KKyAgICBTdHJpbmcg
b3JpZ2luKCkgY29uc3QgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuICIiOyB9
CisgICAgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKCkgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJB
U0UpCisgICAgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGlkYkNvbm5lY3Rpb25Qcm94
eSgpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBudWxscHRyOyB9CisjZW5k
aWYKKworICAgIHZvaWQgcG9zdFRhc2soVGFzayYmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOyB9CisKKyAgICB2b2lkIGV2YWx1YXRlKCk7CisKKyAgICB1c2luZyBSZWZDb3VudGVkOjpy
ZWY7CisgICAgdXNpbmcgUmVmQ291bnRlZDo6ZGVyZWY7CisKKyAgICBXb3JrbGV0U2NyaXB0Q29u
dHJvbGxlciogc2NyaXB0KCkgeyByZXR1cm4gbV9zY3JpcHQuZ2V0KCk7IH0KKworICAgIHZvaWQg
YWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3Nh
Z2U+JiYpIGZpbmFsOworCisgICAgYm9vbCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkgY29uc3Qg
ZmluYWw7CisgICAgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbigpIGNvbnN0IGZpbmFsIHsgQVNT
RVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBtX3RvcE9yaWdpbi5nZXQoKTsgfQorCisgICAgU29j
a2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyKCkgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsgcmV0dXJuIG51bGxwdHI7IH0KKworICAgIGJvb2wgaXNDb250ZXh0VGhyZWFkKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNTZWN1cmVDb250ZXh0KCkgY29uc3Qg
ZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBKU0M6
OlJ1bnRpbWVGbGFncyBqc1J1bnRpbWVGbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fanNSdW50aW1l
RmxhZ3M7IH0KKworcHJvdGVjdGVkOgorICAgIFdvcmtsZXRHbG9iYWxTY29wZShXZWFrUHRyPERv
Y3VtZW50PiYmLCBTY3JpcHRTb3VyY2VDb2RlJiYpOworCitwcml2YXRlOgorICAgIHZvaWQgcmVm
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGZpbmFsIHsgcmVmKCk7IH0KKyAgICB2b2lkIGRlcmVm
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGZpbmFsIHsgZGVyZWYoKTsgfQorCisgICAgdm9pZCBy
ZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgcmVmKCk7IH0KKyAgICB2b2lkIGRlcmVmRXZlbnRUYXJn
ZXQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KKworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBjb25zdF9jYXN0PFdv
cmtsZXRHbG9iYWxTY29wZSo+KHRoaXMpOyB9CisgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZl
bnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBXb3JrbGV0R2xvYmFsU2Nv
cGVFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KKworICAgIGJvb2wgaXNXb3JrbGV0R2xvYmFs
U2NvcGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisKKyAgICB2b2lkIGxvZ0V4Y2Vw
dGlvblRvQ29uc29sZShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgY29uc3QgU3RyaW5nJiwg
aW50LCBpbnQsIFJlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFjaz4mJikgZmluYWw7Cisg
ICAgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQsIHVuc2lnbmVkLCBSZWZQdHI8SW5zcGVjdG9y
OjpTY3JpcHRDYWxsU3RhY2s+JiYsIEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgbG9uZykgZmlu
YWw7CisgICAgdm9pZCBhZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2
ZWwsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIGxvbmcpIGZpbmFsOworCisgICAgRXZlbnRUYXJn
ZXQqIGVycm9yRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJldHVybiB0aGlzOyB9CisgICAgRXZlbnRR
dWV1ZSYgZXZlbnRRdWV1ZSgpIGNvbnN0IGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJl
dHVybiBtX2V2ZW50UXVldWU7IH0KKworI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQorICAgIGJv
b2wgd3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mLCBWZWN0b3I8dWludDhfdD4m
KSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29s
IHVud3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mLCBWZWN0b3I8dWludDhfdD4m
KSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KKyNlbmRpZgor
ICAgIFVSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKKyAgICBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Nlc3Npb25JRDsg
fQorICAgIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJikgY29uc3QgZmluYWwgeyBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgcmV0dXJuICIiOyB9CisgICAgdm9pZCBkaXNhYmxlRXZhbChjb25zdCBT
dHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIGRpc2FibGVXZWJBc3NlbWJseShjb25zdCBTdHJpbmcm
KSBmaW5hbDsKKworICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxXb3JrbGV0U2NyaXB0Q29udHJvbGxlcj4gbV9zY3JpcHQ7CisKKyAgICAvLyBGSVhN
RTogTm9uZSBvZiB0aGVzZSBhcmUgaW1wbGVtZW50ZWQgcHJvcGVybHksIHRoaXMganVzdCBzYXRp
c2ZpZXMgdGhlIGNvbXBpbGVyLgorICAgIG11dGFibGUgV29ya2VyRXZlbnRRdWV1ZSBtX2V2ZW50
UXVldWU7CisgICAgUmVmPFNlY3VyaXR5T3JpZ2luPiBtX3RvcE9yaWdpbjsKKyAgICBTdHJpbmcg
bV9pZGVudGlmaWVyOworCisgICAgSlNDOjpSdW50aW1lRmxhZ3MgbV9qc1J1bnRpbWVGbGFnczsK
KyAgICBXZWFrUHRyPERvY3VtZW50PiBtX2RvY3VtZW50OworCisgICAgU2NyaXB0U291cmNlQ29k
ZSBtX2NvZGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlKQorc3RhdGljIGJvb2wg
aXNUeXBlKGNvbnN0IFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsg
cmV0dXJuIGNvbnRleHQuaXNXb3JrbGV0R2xvYmFsU2NvcGUoKTsgfQorU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19FTkQoKQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0
cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaWRsIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xl
dEdsb2JhbFNjb3BlLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNzU5ZjBjZTFkMTZmODY5MTg2MDEyNzc2ZjBk
YjE2YjYxYmFhNDc4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMv
V29ya2xldEdsb2JhbFNjb3BlLmlkbApAQCAtMCwwICsxLDM3IEBACisvKgorKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyovCisKK1sKKyAgICBDdXN0b21Qcm94eVRvSlNPYmplY3QsCisgICAgRXhwb3NlZD1Xb3JrbGV0
LAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9Q1NTUGFpbnRpbmdBUEksCisgICAgQ29uZGl0aW9uYWw9
Q1NTX1BBSU5USU5HX0FQSSwKKyAgICBKU0xlZ2FjeVBhcmVudD1KU1dvcmtsZXRHbG9iYWxTY29w
ZUJhc2UsCisgICAgSW1wbGljaXRUaGlzLAorICAgIElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGlj
T2JqZWN0LAorICAgIElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0T25Qcm90b3R5cGUs
CisgICAgR2xvYmFsPVdvcmtsZXQsCitdIGludGVyZmFjZSBXb3JrbGV0R2xvYmFsU2NvcGUgOiBF
dmVudFRhcmdldCB7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29y
a2xldFNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xl
dFNjcmlwdENvbnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhOGNjM2NkOGZkODRiN2Q3NzNlN2Vk
OTI1NTM2MjdiYWFmNDhmNTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
bGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTAsMCArMSwxOTUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIKKworI2lmIEVOQUJMRShD
U1NfUEFJTlRJTkdfQVBJKQorCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSAi
SlNFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIkpTRXhlY1N0YXRlLmgiCisjaW5jbHVkZSAiSlNQ
YWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIK
KyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCisjaW5jbHVkZSAiV29ya2xldENvbnNv
bGVDbGllbnQuaCIKKworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbXBsZXRpb24uaD4KKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FeGNlcHRpb24uaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9FeGNlcHRpb25IZWxwZXJzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvR0NBY3Rp
dml0eUNhbGxiYWNrLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+CisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvUHJvbWlzZURlZmVycmVkVGltZXIuaD4KKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9TdHJvbmdJbmxpbmVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3Vz
aW5nIG5hbWVzcGFjZSBKU0M7CisKK1dvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpXb3JrbGV0U2Ny
aXB0Q29udHJvbGxlcihXb3JrbGV0R2xvYmFsU2NvcGUqIHdvcmtsZXRHbG9iYWxTY29wZSkKKyAg
ICA6IG1fdm0oVk06OmNyZWF0ZSgpKQorICAgICwgbV93b3JrbGV0R2xvYmFsU2NvcGUod29ya2xl
dEdsb2JhbFNjb3BlKQorICAgICwgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKCptX3ZtKQor
eworICAgIG1fdm0tPmhlYXAuYWNxdWlyZUFjY2VzcygpOyAvLyBJdCdzIG5vdCBjbGVhciB0aGF0
IHdlIGhhdmUgZ29vZCBkaXNjaXBsaW5lIGZvciBoZWFwIGFjY2Vzcywgc28gdHVybiBpdCBvbiBw
ZXJtYW5lbnRseS4KKyAgICBKU1ZNQ2xpZW50RGF0YTo6aW5pdE5vcm1hbFdvcmxkKG1fdm0uZ2V0
KCkpOworfQorCitXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6fldvcmtsZXRTY3JpcHRDb250cm9s
bGVyKCkKK3sKKyAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSgpKTsKKyAgICBtX3dvcmtsZXRHbG9i
YWxTY29wZVdyYXBwZXIuY2xlYXIoKTsKKyAgICBtX3ZtID0gbnVsbHB0cjsKKyAgICBpZiAobV93
b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKSB7CisgICAgICAgIG1fd29ya2xldEdsb2JhbFNjb3Bl
V3JhcHBlci0+Y2xlYXJET01HdWFyZGVkT2JqZWN0cygpOworICAgICAgICBtX3dvcmtsZXRHbG9i
YWxTY29wZVdyYXBwZXItPnNldENvbnNvbGVDbGllbnQobnVsbHB0cik7CisgICAgICAgIG1fY29u
c29sZUNsaWVudCA9IG51bGxwdHI7CisgICAgfQorfQorCit2b2lkIFdvcmtsZXRTY3JpcHRDb250
cm9sbGVyOjpmb3JiaWRFeGVjdXRpb24oKQoreworICAgIEFTU0VSVChtX3dvcmtsZXRHbG9iYWxT
Y29wZS0+aXNDb250ZXh0VGhyZWFkKCkpOworICAgIG1fZXhlY3V0aW9uRm9yYmlkZGVuID0gdHJ1
ZTsKK30KKworYm9vbCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6aXNFeGVjdXRpb25Gb3JiaWRk
ZW4oKSBjb25zdAoreworICAgIEFTU0VSVChtX3dvcmtsZXRHbG9iYWxTY29wZS0+aXNDb250ZXh0
VGhyZWFkKCkpOworICAgIHJldHVybiBtX2V4ZWN1dGlvbkZvcmJpZGRlbjsKK30KKwordm9pZCBX
b3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6ZGlzYWJsZUV2YWwoY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UpCit7CisgICAgaW5pdFNjcmlwdElmTmVlZGVkKCk7CisgICAgSlNMb2NrSG9sZGVyIGxv
Y2sgeyB2bSgpIH07CisKKyAgICBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPnNldEV2YWxF
bmFibGVkKGZhbHNlLCBlcnJvck1lc3NhZ2UpOworfQorCit2b2lkIFdvcmtsZXRTY3JpcHRDb250
cm9sbGVyOjpkaXNhYmxlV2ViQXNzZW1ibHkoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCit7
CisgICAgaW5pdFNjcmlwdElmTmVlZGVkKCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2sgeyB2bSgp
IH07CisKKyAgICBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPnNldFdlYkFzc2VtYmx5RW5h
YmxlZChmYWxzZSwgZXJyb3JNZXNzYWdlKTsKK30KKworCit0ZW1wbGF0ZTx0eXBlbmFtZSBKU0ds
b2JhbFNjb3BlUHJvdG90eXBlLCB0eXBlbmFtZSBKU0dsb2JhbFNjb3BlLCB0eXBlbmFtZSBHbG9i
YWxTY29wZT4KK3ZvaWQgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHRXaXRoU3Vi
Y2xhc3MoKQoreworICAgIEFTU0VSVCghbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKTsKKwor
ICAgIEpTTG9ja0hvbGRlciBsb2NrKG1fdm0uZ2V0KCkpOworCisgICAgLy8gRXhwbGljaXRseSBw
cm90ZWN0IHRoZSBnbG9iYWwgb2JqZWN0J3MgcHJvdG90eXBlIHNvIGl0IGlzbid0IGNvbGxlY3Rl
ZAorICAgIC8vIHdoZW4gd2UgYWxsb2NhdGUgdGhlIGdsb2JhbCBvYmplY3QuIChPbmNlIHRoZSBn
bG9iYWwgb2JqZWN0IGlzIGZ1bGx5CisgICAgLy8gY29uc3RydWN0ZWQsIGl0IGNhbiBtYXJrIGl0
cyBvd24gcHJvdG90eXBlLikKKyAgICBTdHJ1Y3R1cmUqIGNvbnRleHRQcm90b3R5cGVTdHJ1Y3R1
cmUgPSBKU0dsb2JhbFNjb3BlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoKm1fdm0sIG51bGxw
dHIsIGpzTnVsbCgpKTsKKyAgICBTdHJvbmc8SlNHbG9iYWxTY29wZVByb3RvdHlwZT4gY29udGV4
dFByb3RvdHlwZSgqbV92bSwgSlNHbG9iYWxTY29wZVByb3RvdHlwZTo6Y3JlYXRlKCptX3ZtLCBu
dWxscHRyLCBjb250ZXh0UHJvdG90eXBlU3RydWN0dXJlKSk7CisgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBKU0dsb2JhbFNjb3BlOjpjcmVhdGVTdHJ1Y3R1cmUoKm1fdm0sIG51bGxwdHIsIGNv
bnRleHRQcm90b3R5cGUuZ2V0KCkpOworICAgIGF1dG8qIHByb3h5U3RydWN0dXJlID0gSlNQcm94
eTo6Y3JlYXRlU3RydWN0dXJlKCptX3ZtLCBudWxscHRyLCBqc051bGwoKSwgUHVyZUZvcndhcmRp
bmdQcm94eVR5cGUpOworICAgIGF1dG8qIHByb3h5ID0gSlNQcm94eTo6Y3JlYXRlKCptX3ZtLCBw
cm94eVN0cnVjdHVyZSk7CisKKyAgICBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIuc2V0KCpt
X3ZtLCBKU0dsb2JhbFNjb3BlOjpjcmVhdGUoKm1fdm0sIHN0cnVjdHVyZSwgc3RhdGljX2Nhc3Q8
R2xvYmFsU2NvcGUmPigqbV93b3JrbGV0R2xvYmFsU2NvcGUpLCBwcm94eSkpOworICAgIGNvbnRl
eHRQcm90b3R5cGVTdHJ1Y3R1cmUtPnNldEdsb2JhbE9iamVjdCgqbV92bSwgbV93b3JrbGV0R2xv
YmFsU2NvcGVXcmFwcGVyLmdldCgpKTsKKyAgICBBU1NFUlQoc3RydWN0dXJlLT5nbG9iYWxPYmpl
Y3QoKSA9PSBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpOworICAgIEFTU0VSVChtX3dvcmts
ZXRHbG9iYWxTY29wZVdyYXBwZXItPnN0cnVjdHVyZSgqbV92bSktPmdsb2JhbE9iamVjdCgpID09
IG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcik7CisgICAgY29udGV4dFByb3RvdHlwZS0+c3Ry
dWN0dXJlKCptX3ZtKS0+c2V0R2xvYmFsT2JqZWN0KCptX3ZtLCBtX3dvcmtsZXRHbG9iYWxTY29w
ZVdyYXBwZXIuZ2V0KCkpOworICAgIGNvbnRleHRQcm90b3R5cGUtPnN0cnVjdHVyZSgqbV92bSkt
PnNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9uKCptX3ZtLCBKU0dsb2JhbFNjb3BlOjpwcm90
b3R5cGUoKm1fdm0sICptX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpKTsKKworICAg
IHByb3h5LT5zZXRUYXJnZXQoKm1fdm0sIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci5nZXQo
KSk7CisgICAgcHJveHktPnN0cnVjdHVyZSgqbV92bSktPnNldEdsb2JhbE9iamVjdCgqbV92bSwg
bV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKTsKKworICAgIEFTU0VSVChtX3dvcmts
ZXRHbG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2xldEdsb2JhbFNj
b3BlV3JhcHBlcik7CisgICAgQVNTRVJUKGFzT2JqZWN0KG1fd29ya2xldEdsb2JhbFNjb3BlV3Jh
cHBlci0+Z2V0UHJvdG90eXBlRGlyZWN0KCptX3ZtKSktPmdsb2JhbE9iamVjdCgpID09IG1fd29y
a2xldEdsb2JhbFNjb3BlV3JhcHBlcik7CisKKyAgICBtX2NvbnNvbGVDbGllbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPFdvcmtsZXRDb25zb2xlQ2xpZW50PigqbV93b3JrbGV0R2xvYmFsU2NvcGUpOwor
ICAgIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+c2V0Q29uc29sZUNsaWVudChtX2NvbnNv
bGVDbGllbnQuZ2V0KCkpOworfQorCit2b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppbml0
U2NyaXB0KCkKK3sKKyAgICBpZiAobV93b3JrbGV0R2xvYmFsU2NvcGUtPmlzUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUoKSkgeworICAgICAgICBpbml0U2NyaXB0V2l0aFN1YmNsYXNzPEpTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGVQcm90b3R5cGUsIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUsIFBh
aW50V29ya2xldEdsb2JhbFNjb3BlPigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6
OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIFN0cmluZyogcmV0
dXJuZWRFeGNlcHRpb25NZXNzYWdlKQoreworICAgIGlmIChpc0V4ZWN1dGlvbkZvcmJpZGRlbigp
KQorICAgICAgICByZXR1cm47CisKKyAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gZXhjZXB0
aW9uOworICAgIGV2YWx1YXRlKHNvdXJjZUNvZGUsIGV4Y2VwdGlvbiwgcmV0dXJuZWRFeGNlcHRp
b25NZXNzYWdlKTsKKyAgICBpZiAoZXhjZXB0aW9uKSB7CisgICAgICAgIEpTTG9ja0hvbGRlciBs
b2NrKHZtKCkpOworICAgICAgICByZXBvcnRFeGNlcHRpb24obV93b3JrbGV0R2xvYmFsU2NvcGVX
cmFwcGVyLT5nbG9iYWxFeGVjKCksIGV4Y2VwdGlvbik7CisgICAgfQorfQorCit2b2lkIFdvcmts
ZXRTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3Vy
Y2VDb2RlLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uLCBTdHJp
bmcqIHJldHVybmVkRXhjZXB0aW9uTWVzc2FnZSkKK3sKKyAgICBpZiAoaXNFeGVjdXRpb25Gb3Ji
aWRkZW4oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW5pdFNjcmlwdElmTmVlZGVkKCk7CisK
KyAgICBhdXRvJiBzdGF0ZSA9ICptX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbEV4
ZWMoKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrIHsg
dm0gfTsKKworICAgIEpTRXhlY1N0YXRlOjpwcm9maWxlZEV2YWx1YXRlKCZzdGF0ZSwgSlNDOjpQ
cm9maWxpbmdSZWFzb246Ok90aGVyLCBzb3VyY2VDb2RlLmpzU291cmNlQ29kZSgpLCBtX3dvcmts
ZXRHbG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbFRoaXMoKSwgcmV0dXJuZWRFeGNlcHRpb24pOwor
CisgICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKSB7CisgICAgICAgIC8vIFRoaXMgRklYTUUgaXMg
ZnJvbSBpbiBXb3JrZXJTY3JpcHRDb250cm9sbGVyLgorICAgICAgICBpZiAoLyptX3dvcmtsZXRH
bG9iYWxTY29wZS0+Y2FuSW5jbHVkZUVycm9yRGV0YWlscyhzb3VyY2VDb2RlLmNhY2hlZFNjcmlw
dCgpLCBzb3VyY2VDb2RlLnVybCgpLnN0cmluZygpKSovIHRydWUpIHsKKyAgICAgICAgICAgIC8v
IEZJWE1FOiBJdCdzIG5vdCBncmVhdCB0aGF0IHRoaXMgY2FuIHJ1biBhcmJpdHJhcnkgY29kZSB0
byBzdHJpbmctaWZ5IHRoZSB2YWx1ZSBvZiB0aGUgZXhjZXB0aW9uLgorICAgICAgICAgICAgLy8g
RG8gd2UgbmVlZCB0byBkbyBhbnl0aGluZyB0byBoYW5kbGUgdGhhdCBwcm9wZXJseSwgaWYgaXQs
IHNheSwgcmFpc2VzIGFub3RoZXIgZXhjZXB0aW9uPworICAgICAgICAgICAgaWYgKHJldHVybmVk
RXhjZXB0aW9uTWVzc2FnZSkKKyAgICAgICAgICAgICAgICAqcmV0dXJuZWRFeGNlcHRpb25NZXNz
YWdlID0gcmV0dXJuZWRFeGNlcHRpb24tPnZhbHVlKCkudG9XVEZTdHJpbmcoJnN0YXRlKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIE92ZXJ3cml0ZSB0aGUgZGV0YWlsZWQgZXJy
b3Igd2l0aCBhIGdlbmVyaWMgZXJyb3IuCisgICAgICAgICAgICBTdHJpbmcgZ2VuZXJpY0Vycm9y
TWVzc2FnZSB7ICJTY3JpcHQgZXJyb3IuIl9zIH07CisgICAgICAgICAgICBpZiAocmV0dXJuZWRF
eGNlcHRpb25NZXNzYWdlKQorICAgICAgICAgICAgICAgICpyZXR1cm5lZEV4Y2VwdGlvbk1lc3Nh
Z2UgPSBnZW5lcmljRXJyb3JNZXNzYWdlOworICAgICAgICAgICAgcmV0dXJuZWRFeGNlcHRpb24g
PSBKU0M6OkV4Y2VwdGlvbjo6Y3JlYXRlKHZtLCBjcmVhdGVFcnJvcigmc3RhdGUsIGdlbmVyaWNF
cnJvck1lc3NhZ2UpKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBXb3JrbGV0U2NyaXB0
Q29udHJvbGxlcjo6c2V0RXhjZXB0aW9uKEpTQzo6RXhjZXB0aW9uKiBleGNlcHRpb24pCit7Cisg
ICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPmds
b2JhbEV4ZWMoKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwg
ZXhjZXB0aW9uKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iYTU3OGJiZjlhYjMyMWM5NzAxNDRlYjhmY2UzOGJlZTUzNjVlODdmCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIu
aApAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKwor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RlYnVnZ2VyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNSdW5Mb29wVGltZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmcu
aD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5j
bHVkZSA8d3RmL05ha2VkUHRyLmg+CisKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgVk07Cit9CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSlNXb3JrbGV0R2xvYmFsU2NvcGU7CitjbGFz
cyBTY3JpcHRTb3VyY2VDb2RlOworY2xhc3MgV29ya2xldENvbnNvbGVDbGllbnQ7CitjbGFzcyBX
b3JrbGV0R2xvYmFsU2NvcGU7CitjbGFzcyBXb3JrbGV0Q29uc29sZUNsaWVudDsKKworY2xhc3Mg
V29ya2xldFNjcmlwdENvbnRyb2xsZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdvcmts
ZXRTY3JpcHRDb250cm9sbGVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6Cisg
ICAgV29ya2xldFNjcmlwdENvbnRyb2xsZXIoV29ya2xldEdsb2JhbFNjb3BlKik7CisgICAgfldv
cmtsZXRTY3JpcHRDb250cm9sbGVyKCk7CisKKyAgICBKU1dvcmtsZXRHbG9iYWxTY29wZSogd29y
a2xldEdsb2JhbFNjb3BlV3JhcHBlcigpCisgICAgeworICAgICAgICBpbml0U2NyaXB0SWZOZWVk
ZWQoKTsKKyAgICAgICAgcmV0dXJuIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKTsK
KyAgICB9CisKKyAgICB2b2lkIGZvcmJpZEV4ZWN1dGlvbigpOworICAgIGJvb2wgaXNFeGVjdXRp
b25Gb3JiaWRkZW4oKSBjb25zdDsKKworICAgIHZvaWQgZGlzYWJsZUV2YWwoY29uc3QgU3RyaW5n
JiBlcnJvck1lc3NhZ2UpOworICAgIHZvaWQgZGlzYWJsZVdlYkFzc2VtYmx5KGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYWdlKTsKKworICAgIHZvaWQgZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNl
Q29kZSYsIFN0cmluZyogcmV0dXJuZWRFeGNlcHRpb25NZXNzYWdlID0gbnVsbHB0cik7CisgICAg
dm9pZCBldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgTmFrZWRQdHI8SlNDOjpFeGNl
cHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbiwgU3RyaW5nKiByZXR1cm5lZEV4Y2VwdGlvbk1lc3Nh
Z2UgPSBudWxscHRyKTsKKworICAgIHZvaWQgc2V0RXhjZXB0aW9uKEpTQzo6RXhjZXB0aW9uKik7
CisKKyAgICBKU0M6OlZNJiB2bSgpIHsgcmV0dXJuICptX3ZtOyB9CisKK3ByaXZhdGU6CisgICAg
dm9pZCBpbml0U2NyaXB0SWZOZWVkZWQoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3dvcmtsZXRH
bG9iYWxTY29wZVdyYXBwZXIpCisgICAgICAgICAgICBpbml0U2NyaXB0KCk7CisgICAgfQorICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdFNjcmlwdCgpOworCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgSlNHbG9iYWxTY29wZVByb3RvdHlwZSwgdHlwZW5hbWUgSlNHbG9iYWxTY29wZSwgdHlwZW5h
bWUgR2xvYmFsU2NvcGU+CisgICAgdm9pZCBpbml0U2NyaXB0V2l0aFN1YmNsYXNzKCk7CisKKyAg
ICBib29sIG1fZXhlY3V0aW9uRm9yYmlkZGVuIHsgZmFsc2UgfTsKKyAgICBSZWZQdHI8SlNDOjpW
TT4gbV92bTsKKyAgICBXb3JrbGV0R2xvYmFsU2NvcGUqIG1fd29ya2xldEdsb2JhbFNjb3BlOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXb3JrbGV0Q29uc29sZUNsaWVudD4gbV9jb25zb2xlQ2xpZW50
OworICAgIEpTQzo6U3Ryb25nPEpTV29ya2xldEdsb2JhbFNjb3BlPiBtX3dvcmtsZXRHbG9iYWxT
Y29wZVdyYXBwZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyY2EzZWRlNDVl
Yzc2ZTJiOTM2ZDM1OWIyNGY0ZTEzODBkM2Q4YmY4Li5lN2ExZTk1YTVmODYzZmIzNGYyNWM5NmNm
NWUzOTlkNjUwODZlMTcyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTgtMTAtMjkgIEp1c3RpbiBNaWNoYXVkICA8
anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBuZXcgZ2xvYmFsIG9iamVj
dCBhbmQgcHJlbGltaW5hcnkgV29ya2xldHMgc3VwcG9ydCBmb3IgQ1NTIHBhaW50aW5nIGFwaQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwOTc5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2JpbmRpbmdzL21haW4ucHk6CisgICAgICAgIChCaW5kaW5nc1Rlc3RzLmdlbmVy
YXRlX3N1cHBsZW1lbnRhbF9kZXBlbmRlbmN5KToKKyAgICAgICAgKEJpbmRpbmdzVGVzdHMubWFp
bik6CisKIDIwMTgtMTAtMjYgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMzc0NzkgYW5kIHIyMzc0ODQu
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2JpbmRpbmdzL21haW4ucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2JpbmRpbmdzL21haW4ucHkKaW5kZXggMDRjYmQ4NTA1Njcz
YmQ1YzZmMmU5ZDcwNTIwODFmMTJkNjZjNDRlMi4uMjA5MzdiZWQ2ZDlkN2I4YTYyMzgwMzg4Yjdl
ZWM1ZWJhZDRiNDkzMSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iaW5kaW5n
cy9tYWluLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmluZGluZ3MvbWFpbi5weQpA
QCAtNzAsNyArNzAsNyBAQCBjbGFzcyBCaW5kaW5nc1Rlc3RzOgogICAgICAgICAgICAgZXhpdF9j
b2RlID0gZS5leGl0X2NvZGUKICAgICAgICAgcmV0dXJuIGV4aXRfY29kZQogCi0gICAgZGVmIGdl
bmVyYXRlX3N1cHBsZW1lbnRhbF9kZXBlbmRlbmN5KHNlbGYsIGlucHV0X2RpcmVjdG9yeSwgc3Vw
cGxlbWVudGFsX2RlcGVuZGVuY3lfZmlsZSwgd2luZG93X2NvbnN0cnVjdG9yc19maWxlLCB3b3Jr
ZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSwgZGVkaWNhdGVkd29ya2VyZ2xvYmFsc2Nv
cGVfY29uc3RydWN0b3JzX2ZpbGUsIHNlcnZpY2V3b3JrZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3Rv
cnNfZmlsZSk6CisgICAgZGVmIGdlbmVyYXRlX3N1cHBsZW1lbnRhbF9kZXBlbmRlbmN5KHNlbGYs
IGlucHV0X2RpcmVjdG9yeSwgc3VwcGxlbWVudGFsX2RlcGVuZGVuY3lfZmlsZSwgd2luZG93X2Nv
bnN0cnVjdG9yc19maWxlLCB3b3JrZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSwgZGVk
aWNhdGVkd29ya2VyZ2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGUsIHNlcnZpY2V3b3JrZXJn
bG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSwgd29ya2xldGdsb2JhbHNjb3BlX2NvbnN0cnVj
dG9yc19maWxlLCBwYWludHdvcmtsZXRnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSk6CiAg
ICAgICAgIGlkbF9maWxlc19saXN0ID0gdGVtcGZpbGUubWtzdGVtcCgpCiAgICAgICAgIGZvciBp
bnB1dF9maWxlIGluIG9zLmxpc3RkaXIoaW5wdXRfZGlyZWN0b3J5KToKICAgICAgICAgICAgIChu
YW1lLCBleHRlbnNpb24pID0gb3MucGF0aC5zcGxpdGV4dChpbnB1dF9maWxlKQpAQCAtODgsNyAr
ODgsOSBAQCBjbGFzcyBCaW5kaW5nc1Rlc3RzOgogICAgICAgICAgICAgICAgJy0td2luZG93Q29u
c3RydWN0b3JzRmlsZScsIHdpbmRvd19jb25zdHJ1Y3RvcnNfZmlsZSwKICAgICAgICAgICAgICAg
ICctLXdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZScsIHdvcmtlcmdsb2JhbHNjb3Bl
X2NvbnN0cnVjdG9yc19maWxlLAogICAgICAgICAgICAgICAgJy0tZGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlJywgZGVkaWNhdGVkd29ya2VyZ2xvYmFsc2NvcGVfY29u
c3RydWN0b3JzX2ZpbGUsCi0gICAgICAgICAgICAgICAnLS1zZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGVDb25zdHJ1Y3RvcnNGaWxlJywgc2VydmljZXdvcmtlcmdsb2JhbHNjb3BlX2NvbnN0cnVjdG9y
c19maWxlXQorICAgICAgICAgICAgICAgJy0tc2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3JzRmlsZScsIHNlcnZpY2V3b3JrZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSwK
KyAgICAgICAgICAgICAgICctLXdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUnLCB3
b3JrbGV0Z2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGUsCisgICAgICAgICAgICAgICAnLS1w
YWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUnLCBwYWludHdvcmtsZXRnbG9i
YWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZV0KIAogICAgICAgICBleGl0X2NvZGUgPSAwCiAgICAg
ICAgIHRyeToKQEAgLTE4NSwxMyArMTg3LDE3IEBAIGNsYXNzIEJpbmRpbmdzVGVzdHM6CiAgICAg
ICAgIHdvcmtlcmdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlID0gdGVtcGZpbGUubWtzdGVt
cCgpCiAgICAgICAgIGRlZGljYXRlZHdvcmtlcmdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxl
ID0gdGVtcGZpbGUubWtzdGVtcCgpCiAgICAgICAgIHNlcnZpY2V3b3JrZXJnbG9iYWxzY29wZV9j
b25zdHJ1Y3RvcnNfZmlsZSA9IHRlbXBmaWxlLm1rc3RlbXAoKQotICAgICAgICBpZiBzZWxmLmdl
bmVyYXRlX3N1cHBsZW1lbnRhbF9kZXBlbmRlbmN5KGlucHV0X2RpcmVjdG9yeSwgc3VwcGxlbWVu
dGFsX2RlcGVuZGVuY3lfZmlsZVsxXSwgd2luZG93X2NvbnN0cnVjdG9yc19maWxlWzFdLCB3b3Jr
ZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZVsxXSwgZGVkaWNhdGVkd29ya2VyZ2xvYmFs
c2NvcGVfY29uc3RydWN0b3JzX2ZpbGVbMV0sIHNlcnZpY2V3b3JrZXJnbG9iYWxzY29wZV9jb25z
dHJ1Y3RvcnNfZmlsZVsxXSk6CisgICAgICAgIHdvcmtsZXRnbG9iYWxzY29wZV9jb25zdHJ1Y3Rv
cnNfZmlsZSA9IHRlbXBmaWxlLm1rc3RlbXAoKQorICAgICAgICBwYWludHdvcmtsZXRnbG9iYWxz
Y29wZV9jb25zdHJ1Y3RvcnNfZmlsZSA9IHRlbXBmaWxlLm1rc3RlbXAoKQorICAgICAgICBpZiBz
ZWxmLmdlbmVyYXRlX3N1cHBsZW1lbnRhbF9kZXBlbmRlbmN5KGlucHV0X2RpcmVjdG9yeSwgc3Vw
cGxlbWVudGFsX2RlcGVuZGVuY3lfZmlsZVsxXSwgd2luZG93X2NvbnN0cnVjdG9yc19maWxlWzFd
LCB3b3JrZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZVsxXSwgZGVkaWNhdGVkd29ya2Vy
Z2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGVbMV0sIHNlcnZpY2V3b3JrZXJnbG9iYWxzY29w
ZV9jb25zdHJ1Y3RvcnNfZmlsZVsxXSwgd29ya2xldGdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19m
aWxlWzFdLCBwYWludHdvcmtsZXRnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZVsxXSk6CiAg
ICAgICAgICAgICBwcmludCgnRmFpbGVkIHRvIGdlbmVyYXRlIGEgc3VwcGxlbWVudGFsIGRlcGVu
ZGVuY3kgZmlsZS4nKQogICAgICAgICAgICAgc2VsZi5jbG9zZV9hbmRfcmVtb3ZlKHN1cHBsZW1l
bnRhbF9kZXBlbmRlbmN5X2ZpbGUpCiAgICAgICAgICAgICBzZWxmLmNsb3NlX2FuZF9yZW1vdmUo
d2luZG93X2NvbnN0cnVjdG9yc19maWxlKQogICAgICAgICAgICAgc2VsZi5jbG9zZV9hbmRfcmVt
b3ZlKHdvcmtlcmdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlKQogICAgICAgICAgICAgc2Vs
Zi5jbG9zZV9hbmRfcmVtb3ZlKGRlZGljYXRlZHdvcmtlcmdsb2JhbHNjb3BlX2NvbnN0cnVjdG9y
c19maWxlKQogICAgICAgICAgICAgc2VsZi5jbG9zZV9hbmRfcmVtb3ZlKHNlcnZpY2V3b3JrZXJn
bG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSkKKyAgICAgICAgICAgIHNlbGYuY2xvc2VfYW5k
X3JlbW92ZSh3b3JrbGV0Z2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGUpCisgICAgICAgICAg
ICBzZWxmLmNsb3NlX2FuZF9yZW1vdmUocGFpbnR3b3JrbGV0Z2xvYmFsc2NvcGVfY29uc3RydWN0
b3JzX2ZpbGUpCiAgICAgICAgICAgICByZXR1cm4gLTEKIAogICAgICAgICBmb3IgZ2VuZXJhdG9y
IGluIHNlbGYuZ2VuZXJhdG9yczoKQEAgLTIwNSw2ICsyMTEsOCBAQCBjbGFzcyBCaW5kaW5nc1Rl
c3RzOgogICAgICAgICBzZWxmLmNsb3NlX2FuZF9yZW1vdmUod29ya2VyZ2xvYmFsc2NvcGVfY29u
c3RydWN0b3JzX2ZpbGUpCiAgICAgICAgIHNlbGYuY2xvc2VfYW5kX3JlbW92ZShkZWRpY2F0ZWR3
b3JrZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSkKICAgICAgICAgc2VsZi5jbG9zZV9h
bmRfcmVtb3ZlKHNlcnZpY2V3b3JrZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSkKKyAg
ICAgICAgc2VsZi5jbG9zZV9hbmRfcmVtb3ZlKHdvcmtsZXRnbG9iYWxzY29wZV9jb25zdHJ1Y3Rv
cnNfZmlsZSkKKyAgICAgICAgc2VsZi5jbG9zZV9hbmRfcmVtb3ZlKHBhaW50d29ya2xldGdsb2Jh
bHNjb3BlX2NvbnN0cnVjdG9yc19maWxlKQogCiAgICAgICAgIGlmIHNlbGYuanNvbl9maWxlX25h
bWU6CiAgICAgICAgICAgICBqc29uX2RhdGEgPSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMWI1ODBkOTQ5MDExZjQ2NDEz
YmRjNjNmODQ4OTQ3NjIwNzI0MDU0Yy4uOWRkMmNmZDE4ZjFiOTdjNTgwZmYyMDY2ZGY1YWVkMWYz
NjhkNTliYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE4LTEwLTI5ICBKdXN0aW4gTWljaGF1
ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgbmV3IGdsb2JhbCBv
YmplY3QgYW5kIHByZWxpbWluYXJ5IFdvcmtsZXRzIHN1cHBvcnQgZm9yIENTUyBwYWludGluZyBh
cGkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDk3
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBh
IG5ldyB0ZXN0IGhhcm5lc3MgZm9yIHdvcmtsZXQgdGVzdHMsIHNpbmNlIHRoZXkgZG8gbm90IGhh
dmUgYWNjZXNzIHRvIHRoZSBkb20uCisKKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQv
YmFzaWMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvY3NzLWN1c3RvbS1wYWludC9iYXNp
Yy5odG1sOgorICAgICAgICAqIGZhc3QvY3NzLWN1c3RvbS1wYWludC9yZWdpc3RlclBhaW50Qmlu
ZGluZ3MtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBh
aW50L3JlZ2lzdGVyUGFpbnRCaW5kaW5ncy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAg
ICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L3JlZ2lzdGVyUGFpbnRCaW5kaW5ncy5odG1sOgorICAg
ICAgICAqIGZhc3QvY3NzLWN1c3RvbS1wYWludC9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mtd29ya2xl
dC5qczogQWRkZWQuCisgICAgICAgIChmb3JtYXRfdmFsdWUpOgorICAgICAgICAqIGZhc3QvY3Nz
LWN1c3RvbS1wYWludC9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanM6IEFkZGVkLgorICAgICAgICAo
YXN5bmMuaW1wb3J0V29ya2xldCk6CisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L3dv
cmtsZXQtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBh
aW50L3dvcmtsZXQuaHRtbDogQWRkZWQuCisKIDIwMTgtMTAtMjYgIENvbW1pdCBRdWV1ZSAgPGNv
bW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHIyMzc0NzkgYW5kIHIyMzc0ODQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1j
dXN0b20tcGFpbnQvYmFzaWMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3Vz
dG9tLXBhaW50L2Jhc2ljLWV4cGVjdGVkLnR4dAppbmRleCBlYWExNzQzZTQzOTkwMGJmZDczYjBj
MTkxNmUzZDJlY2VlNmQ0YjU2Li4wMjA1OWY5ODM1ZTIzNmFhNWU5OTI5NTUxNDkxNzNiNWQ3NTI1
NWE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYmFzaWMt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9iYXNp
Yy1leHBlY3RlZC50eHQKQEAgLTEsMTAgKzEsMyBAQAogCi1QQVNTIHRlc3QgdGhhdCByZWdpc3Rl
clBhaW50IHJ1bnMgCi1QQVNTIHRlc3QgdGhhdCByZWdpc3RlclBhaW50IHJ1bnMgd2l0aG91dCBp
bnB1dFByb3BlcnRpZXMgCi1QQVNTIHRlc3QgdGhhdCByZWdpc3RlclBhaW50IHJ1bnMgd2l0aCBp
bnB1dEFyZ3VtZW50cyAKLVBBU1MgdGVzdCB0aGF0IHJlZ2lzdGVyUGFpbnQgcnVucyB3aXRoIGNv
bnRleHRPcHRpb25zIAotUEFTUyB0ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBydW5zIHdpdGggcHJl
ZGVmaW5lZCBjbGFzcyAKLVBBU1MgdGVzdCB0aGF0IHJlZ2lzdGVyUGFpbnQgYWNjZXB0cyBvbmx5
IGEgc3RyaW5nIGFuZCBhIGNsYXNzIGNvbnN0cnVjdG9yIAogUEFTUyB0ZXN0IHRoYXQgdGVzdCBk
aXYgaGFzIHBhaW50KCkgdmFsdWUgCi1QQVNTIHRlc3QgdGhhdCB0ZXN0IGRpdiBwYWludCBjYWxs
YmFjayBnZXRzIGNhbGxlZCAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3Vz
dG9tLXBhaW50L2Jhc2ljLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQv
YmFzaWMuaHRtbAppbmRleCAzZjRkYzNhMmQwMmVmMjFhMmU5NzJkNGM4YjRmMmZhZThjMzg5NDU4
Li40YzhiMGNmNTJlMTZkNWM4ZjAyODc4ZTJjZjc1Nzk1MzQwZTI4Zjk2IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYmFzaWMuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYmFzaWMuaHRtbApAQCAtMTYsNzAgKzE2LDcgQEAK
IDxkaXYgaWQ9InBhaW50Ij48L2Rpdj4KIAogPHNjcmlwdD4KLXRlc3QoZnVuY3Rpb24oKSB7Ci0g
IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCd0ZXN0MScsIGNsYXNz
IHsKLSAgICBzdGF0aWMgZ2V0IGlucHV0UHJvcGVydGllcygpIHsgcmV0dXJuIFsiLS10ZXN0Il07
IH0KLSAgICBwYWludCgpIHsgfQotICB9KTsKLX0sICd0ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBy
dW5zJyk7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gIENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5yZWdpc3RlclBhaW50KCd0ZXN0MicsIGNsYXNzIHsKLSAgICBwYWludCgpIHsgfQotICB9KTsK
LX0sICd0ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBydW5zIHdpdGhvdXQgaW5wdXRQcm9wZXJ0aWVz
Jyk7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gIENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5y
ZWdpc3RlclBhaW50KCd0ZXN0MycsIGNsYXNzIHsKLSAgICBzdGF0aWMgZ2V0IGlucHV0QXJndW1l
bnRzKCkgeyByZXR1cm4gWyI8bGVuZ3RoPiJdOyB9Ci0gICAgcGFpbnQoKSB7IH0KLSAgfSk7Ci19
LCAndGVzdCB0aGF0IHJlZ2lzdGVyUGFpbnQgcnVucyB3aXRoIGlucHV0QXJndW1lbnRzJyk7Ci0K
LXRlc3QoZnVuY3Rpb24oKSB7Ci0gIENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3Rl
clBhaW50KCd0ZXN0NCcsIGNsYXNzIHsKLSAgICBzdGF0aWMgZ2V0IGNvbnRleHRPcHRpb25zKCkg
eyByZXR1cm4geyBhbHBoYTogdHJ1ZSB9OyB9Ci0gICAgcGFpbnQoKSB7IH0KLSAgfSk7Ci19LCAn
dGVzdCB0aGF0IHJlZ2lzdGVyUGFpbnQgcnVucyB3aXRoIGNvbnRleHRPcHRpb25zJyk7Ci0KLWNs
YXNzIE15UGFpbnQgewotICBwYWludCgpIHsgfQotfQotCi10ZXN0KGZ1bmN0aW9uKCkgewotICBD
U1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgndGVzdDUnLCBNeVBhaW50
KTsKLSAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yJ30s
ICgpID0+IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCd0ZXN0NScs
IE15UGFpbnQpKTsKLSAgQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQo
J3Rlc3Q2JywgY2xhc3MgZXh0ZW5kcyBNeVBhaW50IHsgfSk7Ci19LCAndGVzdCB0aGF0IHJlZ2lz
dGVyUGFpbnQgcnVucyB3aXRoIHByZWRlZmluZWQgY2xhc3MnKTsKLQotdGVzdChmdW5jdGlvbigp
IHsKLSAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yJ30s
ICgpID0+IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCd0ZXN0Nics
ICd0ZXN0JykpOwotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gQ1NTLnBh
aW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3Q3JykpOwotICBhc3NlcnRf
dGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3Bl
LnJlZ2lzdGVyUGFpbnQoJ3Rlc3Q4JywgW10pKTsKLSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVy
cm9yKCksICgpID0+IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCd0
ZXN0OScsIHt9KSk7Ci0gIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBDU1Mu
cGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgndGVzdDEwJywgNSkpOwotICBh
c3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gQ1NTLnBhaW50V29ya2xldEdsb2Jh
bFNjb3BlLnJlZ2lzdGVyUGFpbnQoJycsIDUpKTsKLX0sICd0ZXN0IHRoYXQgcmVnaXN0ZXJQYWlu
dCBhY2NlcHRzIG9ubHkgYSBzdHJpbmcgYW5kIGEgY2xhc3MgY29uc3RydWN0b3InKTsKLQogdGVz
dChmdW5jdGlvbigpIHsKICAgYXNzZXJ0X2VxdWFscyhnZXRDb21wdXRlZFN0eWxlKHBhaW50KS5n
ZXRQcm9wZXJ0eVZhbHVlKCJiYWNrZ3JvdW5kLWltYWdlIiksICJwYWludChteS1wYWludCkiKTsK
IH0sICd0ZXN0IHRoYXQgdGVzdCBkaXYgaGFzIHBhaW50KCkgdmFsdWUnKTsKLQotbGV0IHBhaW50
X2NhbGxlZF90ZXN0ID0gYXN5bmNfdGVzdCgndGVzdCB0aGF0IHRlc3QgZGl2IHBhaW50IGNhbGxi
YWNrIGdldHMgY2FsbGVkJyk7Ci1wYWludF9jYWxsZWRfdGVzdC5zdGVwKGZ1bmN0aW9uKCkgewot
ICBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgnbXktcGFpbnQnLCBj
bGFzcyB7Ci0gICAgcGFpbnQoY3R4LCBnZW9tLCBwcm9wZXJ0aWVzKSB7Ci0gICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IDY7IGkrKyl7Ci0gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgNjsgaisr
KXsKLSAgICAgICAgICBjdHguZmlsbFN0eWxlID0gJ3JnYignICsgTWF0aC5mbG9vcigyNTUgLSA0
Mi41ICogaSkgKyAnLCcgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5mbG9vcigy
NTUgLSA0Mi41ICogaikgKyAnLDApJzsKLSAgICAgICAgICBjdHguZmlsbFJlY3QoaiAqIDI1LCBp
ICogMjUsIDI1LCAyNSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIHBhaW50X2NhbGxlZF90
ZXN0LmRvbmUoKTsKLSAgICB9Ci0gIH0pOwotfSk7Ci0KIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3JlZ2lzdGVyUGFpbnRCaW5kaW5ncy1l
eHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3JlZ2lzdGVy
UGFpbnRCaW5kaW5ncy1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiNDJiNjJkYTEzZWRhODE5
NjEwYjMxOTdiNGU0NWE1NDczYmRjZjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVnaXN0ZXJQYWludEJpbmRpbmdzLWV4cGVjdGVkLmh0bWwK
QEAgLTAsMCArMSwxNiBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIg
WyBleHBlcmltZW50YWw6Q1NTUGFpbnRpbmdBUElFbmFibGVkPXRydWUgXSAtLT4KKworPGNhbnZh
cyBpZD0icGFpbnQiIHdpZHRoPSIxNTBweCIgaGVpZ2h0PSIxNTBweCIgPjwvY2FudmFzPgorCis8
c2NyaXB0IGlkPSJjb2RlIj4KK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
cGFpbnQnKTsKK3ZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTsKKworZm9yICh2YXIg
aSA9IDA7IGkgPCA2OyBpKyspeworICBmb3IgKHZhciBqID0gMDsgaiA8IDY7IGorKyl7CisgICAg
Y3R4LmZpbGxTdHlsZSA9ICdyZ2IoJyArIE1hdGguZmxvb3IoMjU1IC0gNDIuNSAqIGkpICsgJywn
ICsKKyAgICAgICAgICAgICAgICAgICAgIE1hdGguZmxvb3IoMjU1IC0gNDIuNSAqIGopICsgJyww
KSc7CisgICAgY3R4LmZpbGxSZWN0KGogKiAyNSwgaSAqIDI1LCAyNSwgMjUpOworICB9Cit9Cis8
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9y
ZWdpc3RlclBhaW50QmluZGluZ3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mt
Y3VzdG9tLXBhaW50L3JlZ2lzdGVyUGFpbnRCaW5kaW5ncy1leHBlY3RlZC50eHQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwMTQzMTUyYmQ4NmM5ZGIwZDk3MjkyNDIyZDViOGFmODhh
NTEwNmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3JlZ2lzdGVyUGFpbnRCaW5kaW5ncy1leHBl
Y3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi0KLVBBU1MgcmVnaXN0ZXJQ
YWludCBtdXN0IGJlIGEgbWV0aG9kIAotUEFTUyBtdXN0IGdldCAicHJvdG90eXBlIiBwcm9wZXJ0
eSBvZiB0aGUgY29uc3RydWN0b3IgCi1QQVNTIG11c3QgcmV0aHJvdyBhbiBleGNlcHRpb24gdGhy
b3duIHdoaWxlIGdldHRpbmcgImlucHV0UHJvcGVydGllcyIgcHJvcGVydHkgb2YgdGhlIGNvbnN0
cnVjdG9yIAotUEFTUyBtdXN0IHJldGhyb3cgYW4gZXhjZXB0aW9uIHRocm93biB3aGlsZSBnZXR0
aW5nICJwcm90b3R5cGUiIHByb3BlcnR5IG9mIHRoZSBjb25zdHJ1Y3RvciAKLVBBU1MgbXVzdCB0
aHJvdyB3aGVuICJwcm90b3R5cGUiIHByb3BlcnR5IG9mIHRoZSBjb25zdHJ1Y3RvciBpcyBub3Qg
YW4gb2JqZWN0IAotUEFTUyBtdXN0IGdldCBwYWludCBjYWxsYmFjayBvZiB0aGUgY29uc3RydWN0
b3IgcHJvdG90eXBlIAotUEFTUyBtdXN0IHJldGhyb3cgYW4gZXhjZXB0aW9uIHRocm93biB3aGls
ZSBnZXR0aW5nIHBhaW50IGNhbGxiYWNrIG9uIHRoZSBjb25zdHJ1Y3RvciBwcm90b3R5cGUgCi1Q
QVNTIG11c3QgcmV0aHJvdyBhbiBleGNlcHRpb24gdGhyb3duIHdoaWxlIGNvbnZlcnRpbmcgcGFp
bnQgY2FsbGJhY2sgdmFsdWUgdG8gRnVuY3Rpb24gY2FsbGJhY2sgdHlwZSAKLVBBU1MgbXVzdCBy
ZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgY29udmVydGluZyB0aGUgdmFsdWUgb2Yg
aW5wdXRBcmd1bWVudHMgdG8gc2VxdWVuY2U8RE9NU3RyaW5nPiAKLVBBU1MgbXVzdCByZXRocm93
IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgaXRlcmF0aW5nIG92ZXIgaW5wdXRBcmd1bWVudHMg
dG8gc2VxdWVuY2U8RE9NU3RyaW5nPiAKLVBBU1MgbXVzdCByZXRocm93IGFuIGV4Y2VwdGlvbiB0
aHJvd24gd2hpbGUgcmV0cmlldmluZyBTeW1ib2wuaXRlcmF0b3Igb24gaW5wdXRBcmd1bWVudHMg
Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9yZWdpc3Rl
clBhaW50QmluZGluZ3MuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9y
ZWdpc3RlclBhaW50QmluZGluZ3MuaHRtbAppbmRleCBkYzkwMmM0Y2Q2NTkxMGQ1YjE4Y2FlMTU0
ZWYzMzhjYTk4OThiY2RjLi5mYzEzZWI5YmE0NTY1MzljOTRmNGY2MjYyODQ1MWNkZDg0NWYzNGI3
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVnaXN0ZXJQ
YWludEJpbmRpbmdzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50
L3JlZ2lzdGVyUGFpbnRCaW5kaW5ncy5odG1sCkBAIC0yLDE3ICsyLDY0IEBACiA8bWV0YSBuYW1l
PSJhdXRob3IiIHRpdGxlPSJKdXN0aW4gTWljaGF1ZCIgaHJlZj0ibWFpbHRvOmp1c3Rpbl9taWNo
YXVkQHdlYmtpdC5vcmciPgogPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJyZWdpc3RlclBh
aW50IGFjY2Vzc2VzIGFyZ3VtZW50cyBpbiB0aGUgY29ycmVjdCBvcmRlciI+CiA8bGluayByZWw9
ImhlbHAiIGNvbnRlbnQ9Imh0dHBzOi8vZHJhZnRzLmNzcy1ob3VkaW5pLm9yZy9jc3MtcGFpbnQt
YXBpLTEvIj4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90ZXN0aGFybmVz
cy5qcyI+PC9zY3JpcHQ+CisKKzxzdHlsZT4KKyAgI3BhaW50IHsKKyAgICBiYWNrZ3JvdW5kLWlt
YWdlOiBwYWludChteS1wYWludCk7CisgICAgd2lkdGg6IDE1MHB4OworICAgIGhlaWdodDogMTUw
cHg7CisgIH0KKzwvc3R5bGU+CisKKzxkaXYgaWQ9InBhaW50Ij48L2Rpdj4KKworPHNjcmlwdCBp
ZD0iY29kZSIgdHlwZT0idGV4dC93b3JrbGV0Ij4KIGNsYXNzIE15UGFpbnQgewogICBwYWludCgp
IHsgfQogfQogCi10ZXN0KGZ1bmN0aW9uICgpIHsKLSAgICBhc3NlcnRfdHJ1ZSgncmVnaXN0ZXJQ
YWludCcgaW4gQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLl9fcHJvdG9fXywgJyJyZWdpc3Rl
clBhaW50IiBleGlzdHMgb24gcHJvdG90eXBlJyk7Ci0gICAgYXNzZXJ0X3RydWUoJ3JlZ2lzdGVy
UGFpbnQnIGluIENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZSwgJyJyZWdpc3RlclBhaW50IiBl
eGlzdHMgb24gd2luZG93Jyk7Ci19LCAncmVnaXN0ZXJQYWludCBtdXN0IGJlIGEgbWV0aG9kJyk7
Cit0ZXN0KGZ1bmN0aW9uKCkgeworICByZWdpc3RlclBhaW50KCdiYXNpYzEnLCBjbGFzcyB7Cisg
ICAgc3RhdGljIGdldCBpbnB1dFByb3BlcnRpZXMoKSB7IHJldHVybiBbIi0tdGVzdCJdOyB9Cisg
ICAgcGFpbnQoKSB7IH0KKyAgfSk7Cit9LCAndGVzdCB0aGF0IHJlZ2lzdGVyUGFpbnQgcnVucycp
OworCit0ZXN0KGZ1bmN0aW9uKCkgeworICByZWdpc3RlclBhaW50KCdiYXNpYzInLCBjbGFzcyB7
CisgICAgcGFpbnQoKSB7IH0KKyAgfSk7Cit9LCAndGVzdCB0aGF0IHJlZ2lzdGVyUGFpbnQgcnVu
cyB3aXRob3V0IGlucHV0UHJvcGVydGllcycpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICByZWdp
c3RlclBhaW50KCdiYXNpYzMnLCBjbGFzcyB7CisgICAgc3RhdGljIGdldCBpbnB1dEFyZ3VtZW50
cygpIHsgcmV0dXJuIFsiPGxlbmd0aD4iXTsgfQorICAgIHBhaW50KCkgeyB9CisgIH0pOworfSwg
J3Rlc3QgdGhhdCByZWdpc3RlclBhaW50IHJ1bnMgd2l0aCBpbnB1dEFyZ3VtZW50cycpOworCit0
ZXN0KGZ1bmN0aW9uKCkgeworICByZWdpc3RlclBhaW50KCdiYXNpYzQnLCBjbGFzcyB7CisgICAg
c3RhdGljIGdldCBjb250ZXh0T3B0aW9ucygpIHsgcmV0dXJuIHsgYWxwaGE6IHRydWUgfTsgfQor
ICAgIHBhaW50KCkgeyB9CisgIH0pOworfSwgJ3Rlc3QgdGhhdCByZWdpc3RlclBhaW50IHJ1bnMg
d2l0aCBjb250ZXh0T3B0aW9ucycpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICByZWdpc3RlclBh
aW50KCdiYXNpYzUnLCBNeVBhaW50KTsKKyAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnSW52YWxp
ZE1vZGlmaWNhdGlvbkVycm9yJ30sICgpID0+IHJlZ2lzdGVyUGFpbnQoJ2Jhc2ljNScsIE15UGFp
bnQpKTsKKyAgcmVnaXN0ZXJQYWludCgnYmFzaWM2JywgY2xhc3MgZXh0ZW5kcyBNeVBhaW50IHsg
fSk7Cit9LCAndGVzdCB0aGF0IHJlZ2lzdGVyUGFpbnQgcnVucyB3aXRoIHByZWRlZmluZWQgY2xh
c3MnKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnSW52
YWxpZE1vZGlmaWNhdGlvbkVycm9yJ30sICgpID0+IHJlZ2lzdGVyUGFpbnQoJ2Jhc2ljNicsICd0
ZXN0JykpOworICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gcmVnaXN0ZXJQ
YWludCgnYmFzaWM4JykpOworICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4g
cmVnaXN0ZXJQYWludCgnYmFzaWM5JywgW10pKTsKKyAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVy
cm9yKCksICgpID0+IHJlZ2lzdGVyUGFpbnQoJ2Jhc2ljMTAnLCB7fSkpOworICBhc3NlcnRfdGhy
b3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gcmVnaXN0ZXJQYWludCgnYmFzaWMxMScsIDUpKTsK
KyAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHJlZ2lzdGVyUGFpbnQoJycs
IDUpKTsKK30sICd0ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBhY2NlcHRzIG9ubHkgYSBzdHJpbmcg
YW5kIGEgY2xhc3MgY29uc3RydWN0b3InKTsKIAogdGVzdChmdW5jdGlvbiAoKSB7CiAgICAgY29u
c3QgY2FsbHMgPSBbXTsKQEAgLTIyLDcgKzY5LDcgQEAgdGVzdChmdW5jdGlvbiAoKSB7CiAgICAg
ICAgICAgICByZXR1cm4gdGFyZ2V0W25hbWVdOwogICAgICAgICB9CiAgICAgfSk7Ci0gICAgQ1NT
LnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3QtcHJvdG8nLCBwcm94
eSk7CisgICAgcmVnaXN0ZXJQYWludCgndGVzdC1wcm90bycsIHByb3h5KTsKICAgICBhc3NlcnRf
YXJyYXlfZXF1YWxzKGNhbGxzLCBbImlucHV0UHJvcGVydGllcyIsICJpbnB1dEFyZ3VtZW50cyIs
ICJjb250ZXh0T3B0aW9ucyIsICJwcm90b3R5cGUiXSk7CiB9LCAnbXVzdCBnZXQgInByb3RvdHlw
ZSIgcHJvcGVydHkgb2YgdGhlIGNvbnN0cnVjdG9yJyk7CiAKQEAgLTM2LDcgKzgzLDcgQEAgdGVz
dChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0W25hbWVdOwogICAgICAg
ICB9CiAgICAgfSk7Ci0gICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnZXhwZWN0ZWRFcnJvcid9
LCBmdW5jdGlvbiAoKSB7IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50
KCd0ZXN0LXJldGhyb3ctaW5wdXRQcm9wZXJ0aWVzMCcsIHByb3h5KTsgfSk7CisgICAgYXNzZXJ0
X3Rocm93cyh7J25hbWUnOiAnZXhwZWN0ZWRFcnJvcid9LCBmdW5jdGlvbiAoKSB7IHJlZ2lzdGVy
UGFpbnQoJ3Rlc3QtcmV0aHJvdy1pbnB1dFByb3BlcnRpZXMwJywgcHJveHkpOyB9KTsKIH0sICdt
dXN0IHJldGhyb3cgYW4gZXhjZXB0aW9uIHRocm93biB3aGlsZSBnZXR0aW5nICJpbnB1dFByb3Bl
cnRpZXMiIHByb3BlcnR5IG9mIHRoZSBjb25zdHJ1Y3RvcicpOwogCiB0ZXN0KGZ1bmN0aW9uICgp
IHsKQEAgLTQ5LDcgKzk2LDcgQEAgdGVzdChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICByZXR1
cm4gdGFyZ2V0W25hbWVdOwogICAgICAgICB9CiAgICAgfSk7Ci0gICAgYXNzZXJ0X3Rocm93cyh7
J25hbWUnOiAnZXhwZWN0ZWRFcnJvcid9LCBmdW5jdGlvbiAoKSB7IENTUy5wYWludFdvcmtsZXRH
bG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCd0ZXN0LXJldGhyb3ctcHJvdG8nLCBwcm94eSk7IH0p
OworICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ2V4cGVjdGVkRXJyb3InfSwgZnVuY3Rpb24g
KCkgeyByZWdpc3RlclBhaW50KCd0ZXN0LXJldGhyb3ctcHJvdG8nLCBwcm94eSk7IH0pOwogfSwg
J211c3QgcmV0aHJvdyBhbiBleGNlcHRpb24gdGhyb3duIHdoaWxlIGdldHRpbmcgInByb3RvdHlw
ZSIgcHJvcGVydHkgb2YgdGhlIGNvbnN0cnVjdG9yJyk7CiAKIHRlc3QoZnVuY3Rpb24gKCkgewpA
QCAtNjMsMTYgKzExMCwxNiBAQCB0ZXN0KGZ1bmN0aW9uICgpIHsKICAgICB9KTsKIAogICAgIHJl
dHVybmVkVmFsdWUgPSBudWxsOwotICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1R5cGVFcnJv
cid9LCBmdW5jdGlvbiAoKSB7IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBh
aW50KCd0ZXN0LXJldGhyb3ctcHJvdG8tbm9vYmoxJywgcHJveHkpOyB9LAorICAgIGFzc2VydF90
aHJvd3MoeyduYW1lJzogJ1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IHJlZ2lzdGVyUGFpbnQo
J3Rlc3QtcmV0aHJvdy1wcm90by1ub29iajEnLCBwcm94eSk7IH0sCiAgICAgICAgICdtdXN0IHRo
cm93IHdoZW4gInByb3RvdHlwZSIgcHJvcGVydHkgb2YgdGhlIGNvbnN0cnVjdG9yIGlzIG51bGwn
KTsKICAgICByZXR1cm5lZFZhbHVlID0gdW5kZWZpbmVkOwotICAgIGFzc2VydF90aHJvd3Moeydu
YW1lJzogJ1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IENTUy5wYWludFdvcmtsZXRHbG9iYWxT
Y29wZS5yZWdpc3RlclBhaW50KCd0ZXN0LXJldGhyb3ctcHJvdG8tbm9vYmoyJywgcHJveHkpOyB9
LAorICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7
IHJlZ2lzdGVyUGFpbnQoJ3Rlc3QtcmV0aHJvdy1wcm90by1ub29iajInLCBwcm94eSk7IH0sCiAg
ICAgICAgICdtdXN0IHRocm93IHdoZW4gInByb3RvdHlwZSIgcHJvcGVydHkgb2YgdGhlIGNvbnN0
cnVjdG9yIGlzIHVuZGVmaW5lZCcpOwogICAgIHJldHVybmVkVmFsdWUgPSAnaGVsbG8nOwotICAg
IGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IENTUy5w
YWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCd0ZXN0LXJldGhyb3ctcHJvdG8t
bm9vYmozJywgcHJveHkpOzsgfSwKKyAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJy
b3InfSwgZnVuY3Rpb24gKCkgeyByZWdpc3RlclBhaW50KCd0ZXN0LXJldGhyb3ctcHJvdG8tbm9v
YmozJywgcHJveHkpOzsgfSwKICAgICAgICAgJ211c3QgdGhyb3cgd2hlbiAicHJvdG90eXBlIiBw
cm9wZXJ0eSBvZiB0aGUgY29uc3RydWN0b3IgaXMgYSBzdHJpbmcnKTsKICAgICByZXR1cm5lZFZh
bHVlID0gMTsKLSAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rp
b24gKCkgeyBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgndGVzdC1y
ZXRocm93LXByb3RvLW5vb2JqNCcsIHByb3h5KTs7IH0sCisgICAgYXNzZXJ0X3Rocm93cyh7J25h
bWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgcmVnaXN0ZXJQYWludCgndGVzdC1yZXRo
cm93LXByb3RvLW5vb2JqNCcsIHByb3h5KTs7IH0sCiAgICAgICAgICdtdXN0IHRocm93IHdoZW4g
InByb3RvdHlwZSIgcHJvcGVydHkgb2YgdGhlIGNvbnN0cnVjdG9yIGlzIGEgbnVtYmVyJyk7CiAK
IH0sICdtdXN0IHRocm93IHdoZW4gInByb3RvdHlwZSIgcHJvcGVydHkgb2YgdGhlIGNvbnN0cnVj
dG9yIGlzIG5vdCBhbiBvYmplY3QnKTsKQEAgLTg3LDcgKzEzNCw3IEBAIHRlc3QoZnVuY3Rpb24g
KCkgewogICAgICAgICAgICAgcmV0dXJuIHRhcmdldFtuYW1lXTsKICAgICAgICAgfQogICAgIH0p
OwotICAgIENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCdjYWxsYmFj
a3MnLCBjb25zdHJ1Y3Rvcik7CisgICAgcmVnaXN0ZXJQYWludCgnY2FsbGJhY2tzJywgY29uc3Ry
dWN0b3IpOwogICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2FsbHMsIFsncGFpbnQnXSk7CiB9LCAn
bXVzdCBnZXQgcGFpbnQgY2FsbGJhY2sgb2YgdGhlIGNvbnN0cnVjdG9yIHByb3RvdHlwZScpOwog
CkBAIC0xMDIsNyArMTQ5LDcgQEAgdGVzdChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICByZXR1
cm4gdGFyZ2V0W25hbWVdOwogICAgICAgICB9CiAgICAgfSk7Ci0gICAgYXNzZXJ0X3Rocm93cyh7
J25hbWUnOiAnZXhwZWN0ZWRFcnJvcid9LCBmdW5jdGlvbiAoKSB7IENTUy5wYWludFdvcmtsZXRH
bG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCdjYWxsYmFja3MtdGhyb3cnLCBjb25zdHJ1Y3Rvcik7
IH0pOworICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ2V4cGVjdGVkRXJyb3InfSwgZnVuY3Rp
b24gKCkgeyByZWdpc3RlclBhaW50KCdjYWxsYmFja3MtdGhyb3cnLCBjb25zdHJ1Y3Rvcik7IH0p
OwogICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2FsbHMsIFsncGFpbnQnXSk7CiB9LCAnbXVzdCBy
ZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgZ2V0dGluZyBwYWludCBjYWxsYmFjayBv
biB0aGUgY29uc3RydWN0b3IgcHJvdG90eXBlJyk7CiAKQEAgLTExNyw3ICsxNjQsNyBAQCB0ZXN0
KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIHJldHVybiB0YXJnZXRbbmFtZV07CiAgICAgICAg
IH0KICAgICB9KTsKLSAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwgZnVu
Y3Rpb24gKCkgeyBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgnY2Fs
bGJhY2tzLXRocm93MicsIGNvbnN0cnVjdG9yKTsgfSk7CisgICAgYXNzZXJ0X3Rocm93cyh7J25h
bWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgcmVnaXN0ZXJQYWludCgnY2FsbGJhY2tz
LXRocm93MicsIGNvbnN0cnVjdG9yKTsgfSk7CiAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjYWxs
cywgWydwYWludCddKTsKIH0sICdtdXN0IHJldGhyb3cgYW4gZXhjZXB0aW9uIHRocm93biB3aGls
ZSBjb252ZXJ0aW5nIHBhaW50IGNhbGxiYWNrIHZhbHVlIHRvIEZ1bmN0aW9uIGNhbGxiYWNrIHR5
cGUnKTsKIApAQCAtMTMxLDcgKzE3OCw3IEBAIHRlc3QoZnVuY3Rpb24gKCkgewogICAgICAgICAg
IHJldHVybiB0YXJnZXRbbmFtZV07CiAgICAgICB9CiAgIH0pOwotICBhc3NlcnRfdGhyb3dzKHsn
bmFtZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBDU1MucGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUucmVnaXN0ZXJQYWludCgnc2VxdWVuY2UtdGhyb3cnLCBwcm94eSk7IH0pOworICBhc3Nl
cnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyByZWdpc3RlclBh
aW50KCdzZXF1ZW5jZS10aHJvdycsIHByb3h5KTsgfSk7CiAgIGFzc2VydF9hcnJheV9lcXVhbHMo
Y2FsbHMsIFsiaW5wdXRQcm9wZXJ0aWVzIiwgImlucHV0QXJndW1lbnRzIl0pOwogfSwgJ211c3Qg
cmV0aHJvdyBhbiBleGNlcHRpb24gdGhyb3duIHdoaWxlIGNvbnZlcnRpbmcgdGhlIHZhbHVlIG9m
IGlucHV0QXJndW1lbnRzIHRvIHNlcXVlbmNlPERPTVN0cmluZz4nKTsKIApAQCAtMTQxLDEyICsx
ODgsMzYgQEAgdGVzdChmdW5jdGlvbiAoKSB7CiAgICAgICAgIHlpZWxkICc8bGVuZ3RoPic7CiAg
ICAgICAgIHRocm93IHtuYW1lOiAnU29tZUVycm9yJ307CiAgICAgfX07Ci0gICAgYXNzZXJ0X3Ro
cm93cyh7J25hbWUnOiAnU29tZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgQ1NTLnBhaW50V29ya2xl
dEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3NlcXVlbmNlLXRocm93MicsIGNvbnN0cnVjdG9y
KTsgfSk7CisgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnU29tZUVycm9yJ30sIGZ1bmN0aW9u
ICgpIHsgcmVnaXN0ZXJQYWludCgnc2VxdWVuY2UtdGhyb3cyJywgY29uc3RydWN0b3IpOyB9KTsK
IH0sICdtdXN0IHJldGhyb3cgYW4gZXhjZXB0aW9uIHRocm93biB3aGlsZSBpdGVyYXRpbmcgb3Zl
ciBpbnB1dEFyZ3VtZW50cyB0byBzZXF1ZW5jZTxET01TdHJpbmc+Jyk7CiAKIHRlc3QoZnVuY3Rp
b24gKCkgewogICAgIGNvbnN0IGNvbnN0cnVjdG9yID0gZnVuY3Rpb24gKCkge30KICAgICBjb25z
dHJ1Y3Rvci5pbnB1dEFyZ3VtZW50cyA9IHtbU3ltYm9sLml0ZXJhdG9yXTogMX07Ci0gICAgYXNz
ZXJ0X3Rocm93cyh7J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgQ1NTLnBhaW50
V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3N5bWJvbC1pdGVyYXRvci10aHJvdzIn
LCBjb25zdHJ1Y3Rvcik7IH0pOworICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1R5cGVFcnJv
cid9LCBmdW5jdGlvbiAoKSB7IHJlZ2lzdGVyUGFpbnQoJ3N5bWJvbC1pdGVyYXRvci10aHJvdzIn
LCBjb25zdHJ1Y3Rvcik7IH0pOwogfSwgJ211c3QgcmV0aHJvdyBhbiBleGNlcHRpb24gdGhyb3du
IHdoaWxlIHJldHJpZXZpbmcgU3ltYm9sLml0ZXJhdG9yIG9uIGlucHV0QXJndW1lbnRzJyk7CisK
K2Fzc2VydF90cnVlKFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmhhc1J1bkFUZXN0KTsKK2lmIChQ
YWludFdvcmtsZXRHbG9iYWxTY29wZS5lcnJvcnMpIHsKKyAgY29uc29sZS5sb2coIlRoZSBmb2xs
b3dpbmcgKCIgKyBQYWludFdvcmtsZXRHbG9iYWxTY29wZS5lcnJvcnMubGVuZ3RoICsgIikgdGVz
dHMgZmFpbGVkOiAiKQorICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShQYWludFdvcmtsZXRH
bG9iYWxTY29wZS5lcnJvcnMpKTsKKyAgYXNzZXJ0X3RydWUoZmFsc2UpOworfQorCitjbGFzcyBN
eVBhaW50MiB7CisgIHBhaW50KGN0eCwgZ2VvbSwgcHJvcGVydGllcykgeworICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgNjsgaSsrKXsKKyAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgNjsgaisrKXsK
KyAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2IoJyArIE1hdGguZmxvb3IoMjU1IC0gNDIuNSAq
IGkpICsgJywnICsKKyAgICAgICAgICAgICAgICAgICAgICAgICBNYXRoLmZsb29yKDI1NSAtIDQy
LjUgKiBqKSArICcsMCknOworICAgICAgICBjdHguZmlsbFJlY3QoaiAqIDI1LCBpICogMjUsIDI1
LCAyNSk7CisgICAgICB9CisgICAgfQorICB9Cit9CityZWdpc3RlclBhaW50KCdteS1wYWludCcs
IE15UGFpbnQyKTsKKzwvc2NyaXB0PgorCis8c2NyaXB0PgorICBpbXBvcnRXb3JrbGV0KENTUy5w
YWludFdvcmtsZXQsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2RlJykudGV4dENvbnRlbnQp
OwogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFp
bnQvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLXdvcmtsZXQuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy1jdXN0b20tcGFpbnQvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLXdvcmtsZXQuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNDVjM2U3NGVlNmMxMzE0MTljMTY4OWVlODlkMDFhNDFhYTcwMmVjYwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9yZXNvdXJjZXMvdGVzdGhh
cm5lc3Mtd29ya2xldC5qcwpAQCAtMCwwICsxLDczOSBAQAorLy8gVGhlc2UgYXJlIGhlbHBlcnMg
dG8gYmUgZXZhbHVhdGVkIGluc2lkZSBhIHdvcmtsZXQKKy8vIFRoZXkgYXJlIG1vc3RseSBmcm9t
IHRoZSB3cHQgdGVzdGhhcm5lc3MuanMuCisKKy8qCisgKiBDb252ZXJ0IGEgdmFsdWUgdG8gYSBu
aWNlLCBodW1hbi1yZWFkYWJsZSBzdHJpbmcKKyAqLworZnVuY3Rpb24gZm9ybWF0X3ZhbHVlKHZh
bCwgc2VlbikKK3sKKyAgICBpZiAoIXNlZW4pIHsKKyAgICAgICAgc2VlbiA9IFtdOworICAgIH0K
KyAgICBpZiAodHlwZW9mIHZhbCA9PT0gIm9iamVjdCIgJiYgdmFsICE9PSBudWxsKSB7CisgICAg
ICAgIGlmIChzZWVuLmluZGV4T2YodmFsKSA+PSAwKSB7CisgICAgICAgICAgICByZXR1cm4gIlsu
Li5dIjsKKyAgICAgICAgfQorICAgICAgICBzZWVuLnB1c2godmFsKTsKKyAgICB9CisgICAgaWYg
KEFycmF5LmlzQXJyYXkodmFsKSkgeworICAgICAgICByZXR1cm4gIlsiICsgdmFsLm1hcChmdW5j
dGlvbih4KSB7cmV0dXJuIGZvcm1hdF92YWx1ZSh4LCBzZWVuKTt9KS5qb2luKCIsICIpICsgIl0i
OworICAgIH0KKworICAgIHN3aXRjaCAodHlwZW9mIHZhbCkgeworICAgIGNhc2UgInN0cmluZyI6
CisgICAgICAgIHZhbCA9IHZhbC5yZXBsYWNlKCJcXCIsICJcXFxcIik7CisgICAgICAgIGZvciAo
dmFyIHAgaW4gcmVwbGFjZW1lbnRzKSB7CisgICAgICAgICAgICB2YXIgcmVwbGFjZSA9ICJcXCIg
KyByZXBsYWNlbWVudHNbcF07CisgICAgICAgICAgICB2YWwgPSB2YWwucmVwbGFjZShSZWdFeHAo
U3RyaW5nLmZyb21DaGFyQ29kZShwKSwgImciKSwgcmVwbGFjZSk7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuICciJyArIHZhbC5yZXBsYWNlKC8iL2csICdcXCInKSArICciJzsKKyAgICBjYXNl
ICJib29sZWFuIjoKKyAgICBjYXNlICJ1bmRlZmluZWQiOgorICAgICAgICByZXR1cm4gU3RyaW5n
KHZhbCk7CisgICAgY2FzZSAibnVtYmVyIjoKKyAgICAgICAgLy8gSW4gSmF2YVNjcmlwdCwgLTAg
PT09IDAgYW5kIFN0cmluZygtMCkgPT0gIjAiLCBzbyB3ZSBoYXZlIHRvCisgICAgICAgIC8vIHNw
ZWNpYWwtY2FzZS4KKyAgICAgICAgaWYgKHZhbCA9PT0gLTAgJiYgMS92YWwgPT09IC1JbmZpbml0
eSkgeworICAgICAgICAgICAgcmV0dXJuICItMCI7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IFN0cmluZyh2YWwpOworICAgIGNhc2UgIm9iamVjdCI6CisgICAgICAgIGlmICh2YWwgPT09IG51
bGwpIHsKKyAgICAgICAgICAgIHJldHVybiAibnVsbCI7CisgICAgICAgIH0KKworICAgICAgICAv
LyBTcGVjaWFsLWNhc2UgTm9kZSBvYmplY3RzLCBzaW5jZSB0aG9zZSBjb21lIHVwIGEgbG90IGlu
IG15IHRlc3RzLiAgSQorICAgICAgICAvLyBpZ25vcmUgbmFtZXNwYWNlcy4KKyAgICAgICAgaWYg
KGlzX25vZGUodmFsKSkgeworICAgICAgICAgICAgc3dpdGNoICh2YWwubm9kZVR5cGUpIHsKKyAg
ICAgICAgICAgIGNhc2UgTm9kZS5FTEVNRU5UX05PREU6CisgICAgICAgICAgICAgICAgdmFyIHJl
dCA9ICI8IiArIHZhbC5sb2NhbE5hbWU7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCB2YWwuYXR0cmlidXRlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBy
ZXQgKz0gIiAiICsgdmFsLmF0dHJpYnV0ZXNbaV0ubmFtZSArICc9IicgKyB2YWwuYXR0cmlidXRl
c1tpXS52YWx1ZSArICciJzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0
ICs9ICI+IiArIHZhbC5pbm5lckhUTUwgKyAiPC8iICsgdmFsLmxvY2FsTmFtZSArICI+IjsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gIkVsZW1lbnQgbm9kZSAiICsgdHJ1bmNhdGUocmV0LCA2MCk7
CisgICAgICAgICAgICBjYXNlIE5vZGUuVEVYVF9OT0RFOgorICAgICAgICAgICAgICAgIHJldHVy
biAnVGV4dCBub2RlICInICsgdHJ1bmNhdGUodmFsLmRhdGEsIDYwKSArICciJzsKKyAgICAgICAg
ICAgIGNhc2UgTm9kZS5QUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU6CisgICAgICAgICAgICAg
ICAgcmV0dXJuICJQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gbm9kZSB3aXRoIHRhcmdldCAiICsgZm9y
bWF0X3ZhbHVlKHRydW5jYXRlKHZhbC50YXJnZXQsIDYwKSkgKyAiIGFuZCBkYXRhICIgKyBmb3Jt
YXRfdmFsdWUodHJ1bmNhdGUodmFsLmRhdGEsIDYwKSk7CisgICAgICAgICAgICBjYXNlIE5vZGUu
Q09NTUVOVF9OT0RFOgorICAgICAgICAgICAgICAgIHJldHVybiAiQ29tbWVudCBub2RlIDwhLS0i
ICsgdHJ1bmNhdGUodmFsLmRhdGEsIDYwKSArICItLT4iOworICAgICAgICAgICAgY2FzZSBOb2Rl
LkRPQ1VNRU5UX05PREU6CisgICAgICAgICAgICAgICAgcmV0dXJuICJEb2N1bWVudCBub2RlIHdp
dGggIiArIHZhbC5jaGlsZE5vZGVzLmxlbmd0aCArICh2YWwuY2hpbGROb2Rlcy5sZW5ndGggPT0g
MSA/ICIgY2hpbGQiIDogIiBjaGlsZHJlbiIpOworICAgICAgICAgICAgY2FzZSBOb2RlLkRPQ1VN
RU5UX1RZUEVfTk9ERToKKyAgICAgICAgICAgICAgICByZXR1cm4gIkRvY3VtZW50VHlwZSBub2Rl
IjsKKyAgICAgICAgICAgIGNhc2UgTm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgorICAgICAg
ICAgICAgICAgIHJldHVybiAiRG9jdW1lbnRGcmFnbWVudCBub2RlIHdpdGggIiArIHZhbC5jaGls
ZE5vZGVzLmxlbmd0aCArICh2YWwuY2hpbGROb2Rlcy5sZW5ndGggPT0gMSA/ICIgY2hpbGQiIDog
IiBjaGlsZHJlbiIpOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1
cm4gIk5vZGUgb2JqZWN0IG9mIHVua25vd24gdHlwZSI7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKworICAgIC8qIGZhbGxzIHRocm91Z2ggKi8KKyAgICBkZWZhdWx0OgorICAgICAgICB0cnkg
eworICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWwgKyAnICInICsgdHJ1bmNhdGUoU3RyaW5n
KHZhbCksIDEwMDApICsgJyInOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHJl
dHVybiAoIltzdHJpbmdpZnlpbmcgb2JqZWN0IHRocmV3ICIgKyBTdHJpbmcoZSkgKworICAgICAg
ICAgICAgICAgICAgICAiIHdpdGggdHlwZSAiICsgU3RyaW5nKHR5cGVvZiBlKSArICJdIik7Cisg
ICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIGlzX3NpbmdsZV9ub2RlKHRlbXBsYXRlKQor
eworICAgIHJldHVybiB0eXBlb2YgdGVtcGxhdGVbMF0gPT09ICJzdHJpbmciOworfQorCitmdW5j
dGlvbiBzdWJzdGl0dXRlKHRlbXBsYXRlLCBzdWJzdGl0dXRpb25zKQoreworICAgIGlmICh0eXBl
b2YgdGVtcGxhdGUgPT09ICJmdW5jdGlvbiIpIHsKKyAgICAgICAgdmFyIHJlcGxhY2VtZW50ID0g
dGVtcGxhdGUoc3Vic3RpdHV0aW9ucyk7CisgICAgICAgIGlmICghcmVwbGFjZW1lbnQpIHsKKyAg
ICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHN1YnN0
aXR1dGUocmVwbGFjZW1lbnQsIHN1YnN0aXR1dGlvbnMpOworICAgIH0KKworICAgIGlmIChpc19z
aW5nbGVfbm9kZSh0ZW1wbGF0ZSkpIHsKKyAgICAgICAgcmV0dXJuIHN1YnN0aXR1dGVfc2luZ2xl
KHRlbXBsYXRlLCBzdWJzdGl0dXRpb25zKTsKKyAgICB9CisKKyAgICByZXR1cm4gZmlsdGVyKG1h
cCh0ZW1wbGF0ZSwgZnVuY3Rpb24oeCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gc3Vic3RpdHV0ZSh4LCBzdWJzdGl0dXRpb25zKTsKKyAgICAgICAgICAgICAgICAgICAgICB9
KSwgZnVuY3Rpb24oeCkge3JldHVybiB4ICE9PSBudWxsO30pOworfQorCitmdW5jdGlvbiBzdWJz
dGl0dXRlX3NpbmdsZSh0ZW1wbGF0ZSwgc3Vic3RpdHV0aW9ucykKK3sKKyAgICB2YXIgc3Vic3Rp
dHV0aW9uX3JlID0gL1wkXHsoW14gfV0qKVx9L2c7CisKKyAgICBmdW5jdGlvbiBkb19zdWJzdGl0
dXRpb24oaW5wdXQpIHsKKyAgICAgICAgdmFyIGNvbXBvbmVudHMgPSBpbnB1dC5zcGxpdChzdWJz
dGl0dXRpb25fcmUpOworICAgICAgICB2YXIgcnYgPSBbXTsKKyAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBjb21wb25lbnRzLmxlbmd0aDsgaSArPSAyKSB7CisgICAgICAgICAgICBydi5wdXNo
KGNvbXBvbmVudHNbaV0pOworICAgICAgICAgICAgaWYgKGNvbXBvbmVudHNbaSArIDFdKSB7Cisg
ICAgICAgICAgICAgICAgcnYucHVzaChTdHJpbmcoc3Vic3RpdHV0aW9uc1tjb21wb25lbnRzW2kg
KyAxXV0pKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcnY7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gc3Vic3RpdHV0ZV9hdHRycyhhdHRycywgcnYpCisgICAgewor
ICAgICAgICBydlsxXSA9IHt9OworICAgICAgICBmb3IgKHZhciBuYW1lIGluIHRlbXBsYXRlWzFd
KSB7CisgICAgICAgICAgICBpZiAoYXR0cnMuaGFzT3duUHJvcGVydHkobmFtZSkpIHsKKyAgICAg
ICAgICAgICAgICB2YXIgbmV3X25hbWUgPSBkb19zdWJzdGl0dXRpb24obmFtZSkuam9pbigiIik7
CisgICAgICAgICAgICAgICAgdmFyIG5ld192YWx1ZSA9IGRvX3N1YnN0aXR1dGlvbihhdHRyc1tu
YW1lXSkuam9pbigiIik7CisgICAgICAgICAgICAgICAgcnZbMV1bbmV3X25hbWVdID0gbmV3X3Zh
bHVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gc3Vi
c3RpdHV0ZV9jaGlsZHJlbihjaGlsZHJlbiwgcnYpCisgICAgeworICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBpZiAoY2hpbGRy
ZW5baV0gaW5zdGFuY2VvZiBPYmplY3QpIHsKKyAgICAgICAgICAgICAgICB2YXIgcmVwbGFjZW1l
bnQgPSBzdWJzdGl0dXRlKGNoaWxkcmVuW2ldLCBzdWJzdGl0dXRpb25zKTsKKyAgICAgICAgICAg
ICAgICBpZiAocmVwbGFjZW1lbnQgIT09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KGlzX3NpbmdsZV9ub2RlKHJlcGxhY2VtZW50KSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
cnYucHVzaChyZXBsYWNlbWVudCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBleHRlbmQocnYsIHJlcGxhY2VtZW50KTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgZXh0ZW5kKHJ2LCBkb19zdWJzdGl0dXRpb24oU3RyaW5nKGNoaWxkcmVuW2ld
KSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBydjsKKyAgICB9
CisKKyAgICB2YXIgcnYgPSBbXTsKKyAgICBydi5wdXNoKGRvX3N1YnN0aXR1dGlvbihTdHJpbmco
dGVtcGxhdGVbMF0pKS5qb2luKCIiKSk7CisKKyAgICBpZiAodGVtcGxhdGVbMF0gPT09ICJ7dGV4
dH0iKSB7CisgICAgICAgIHN1YnN0aXR1dGVfY2hpbGRyZW4odGVtcGxhdGUuc2xpY2UoMSksIHJ2
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBzdWJzdGl0dXRlX2F0dHJzKHRlbXBsYXRlWzFdLCBy
dik7CisgICAgICAgIHN1YnN0aXR1dGVfY2hpbGRyZW4odGVtcGxhdGUuc2xpY2UoMiksIHJ2KTsK
KyAgICB9CisKKyAgICByZXR1cm4gcnY7Cit9CisKK2Z1bmN0aW9uIGFzc2VydChleHBlY3RlZF90
cnVlLCBmdW5jdGlvbl9uYW1lLCBkZXNjcmlwdGlvbiwgZXJyb3IsIHN1YnN0aXR1dGlvbnMpCit7
CisgICAgaWYgKGV4cGVjdGVkX3RydWUgIT09IHRydWUpIHsKKyAgICAgICAgdmFyIG1zZyA9IG1h
a2VfbWVzc2FnZShmdW5jdGlvbl9uYW1lLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlcnJvciwgc3Vic3RpdHV0aW9ucyk7CisgICAgICAgIHRocm93IG5ldyBB
c3NlcnRpb25FcnJvcihtc2cpOworICAgIH0KK30KKworZnVuY3Rpb24gQXNzZXJ0aW9uRXJyb3Io
bWVzc2FnZSkKK3sKKyAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlOworICAgIHRoaXMuc3RhY2sg
PSB0aGlzLmdldF9zdGFjaygpOworfQorCitBc3NlcnRpb25FcnJvci5wcm90b3R5cGUgPSBPYmpl
Y3QuY3JlYXRlKEVycm9yLnByb3RvdHlwZSk7CisKK0Fzc2VydGlvbkVycm9yLnByb3RvdHlwZS5n
ZXRfc3RhY2sgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgc3RhY2sgPSBuZXcgRXJyb3IoKS5zdGFj
azsKKyAgICAvLyBJRTExIGRvZXMgbm90IGluaXRpYWxpemUgJ0Vycm9yLnN0YWNrJyB1bnRpbCB0
aGUgb2JqZWN0IGlzIHRocm93bi4KKyAgICBpZiAoIXN0YWNrKSB7CisgICAgICAgIHRyeSB7Cisg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAg
ICAgICAgICAgc3RhY2sgPSBlLnN0YWNrOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gJ0Vy
cm9yLnN0YWNrJyBpcyBub3Qgc3VwcG9ydGVkIGluIGFsbCBicm93c2Vycy92ZXJzaW9ucworICAg
IGlmICghc3RhY2spIHsKKyAgICAgICAgcmV0dXJuICIoU3RhY2sgdHJhY2UgdW5hdmFpbGFibGUp
IjsKKyAgICB9CisKKyAgICB2YXIgbGluZXMgPSBzdGFjay5zcGxpdCgiXG4iKTsKKworICAgIC8v
IENyZWF0ZSBhIHBhdHRlcm4gdG8gbWF0Y2ggc3RhY2sgZnJhbWVzIG9yaWdpbmF0aW5nIHdpdGhp
biB0ZXN0aGFybmVzcy5qcy4gIFRoZXNlIGluY2x1ZGUgdGhlCisgICAgLy8gc2NyaXB0IFVSTCwg
Zm9sbG93ZWQgYnkgdGhlIGxpbmUvY29sIChlLmcuLCAnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
czoxMjA6MjEnKS4KKyAgICAvLyBFc2NhcGUgdGhlIFVSTCBwZXIgaHR0cDovL3N0YWNrb3ZlcmZs
b3cuY29tL3F1ZXN0aW9ucy8zNTYxNDkzL2lzLXRoZXJlLWEtcmVnZXhwLWVzY2FwZS1mdW5jdGlv
bi1pbi1qYXZhc2NyaXB0CisgICAgLy8gaW4gY2FzZSBpdCBjb250YWlucyBSZWdFeHAgY2hhcmFj
dGVycy4KKyAgICB2YXIgc2NyaXB0X3VybCA9IGdldF9zY3JpcHRfdXJsKCk7CisgICAgdmFyIHJl
X3RleHQgPSBzY3JpcHRfdXJsID8gc2NyaXB0X3VybC5yZXBsYWNlKC9bLVwvXFxeJCorPy4oKXxb
XF17fV0vZywgJ1xcJCYnKSA6ICJcXGJ0ZXN0aGFybmVzcy5qcyI7CisgICAgdmFyIHJlID0gbmV3
IFJlZ0V4cChyZV90ZXh0ICsgIjpcXGQrOlxcZCsiKTsKKworICAgIC8vIFNvbWUgYnJvd3NlcnMg
aW5jbHVkZSBhIHByZWFtYmxlIHRoYXQgc3BlY2lmaWVzIHRoZSB0eXBlIG9mIHRoZSBlcnJvciBv
YmplY3QuICBTa2lwIHRoaXMgYnkKKyAgICAvLyBhZHZhbmNpbmcgdW50aWwgd2UgZmluZCB0aGUg
Zmlyc3Qgc3RhY2sgZnJhbWUgb3JpZ2luYXRpbmcgZnJvbSB0ZXN0aGFybmVzcy5qcy4KKyAgICB2
YXIgaSA9IDA7CisgICAgd2hpbGUgKCFyZS50ZXN0KGxpbmVzW2ldKSAmJiBpIDwgbGluZXMubGVu
Z3RoKSB7CisgICAgICAgIGkrKzsKKyAgICB9CisKKyAgICAvLyBUaGVuIHNraXAgdGhlIHRvcCBm
cmFtZXMgb3JpZ2luYXRpbmcgZnJvbSB0ZXN0aGFybmVzcy5qcyB0byBiZWdpbiB0aGUgc3RhY2sg
YXQgdGhlIHRlc3QgY29kZS4KKyAgICB3aGlsZSAocmUudGVzdChsaW5lc1tpXSkgJiYgaSA8IGxp
bmVzLmxlbmd0aCkgeworICAgICAgICBpKys7CisgICAgfQorCisgICAgLy8gUGFyYW5vaWQgY2hl
Y2sgdGhhdCB3ZSBkaWRuJ3Qgc2tpcCBhbGwgZnJhbWVzLiAgSWYgc28sIHJldHVybiB0aGUgb3Jp
Z2luYWwgc3RhY2sgdW5tb2RpZmllZC4KKyAgICBpZiAoaSA+PSBsaW5lcy5sZW5ndGgpIHsKKyAg
ICAgICAgcmV0dXJuIHN0YWNrOworICAgIH0KKworICAgIHJldHVybiBsaW5lcy5zbGljZShpKS5q
b2luKCJcbiIpOworfQorCitmdW5jdGlvbiBtYWtlX21lc3NhZ2UoZnVuY3Rpb25fbmFtZSwgZGVz
Y3JpcHRpb24sIGVycm9yLCBzdWJzdGl0dXRpb25zKQoreworICAgIGZvciAodmFyIHAgaW4gc3Vi
c3RpdHV0aW9ucykgeworICAgICAgICBpZiAoc3Vic3RpdHV0aW9ucy5oYXNPd25Qcm9wZXJ0eShw
KSkgeworICAgICAgICAgICAgc3Vic3RpdHV0aW9uc1twXSA9IGZvcm1hdF92YWx1ZShzdWJzdGl0
dXRpb25zW3BdKTsKKyAgICAgICAgfQorICAgIH0KKyAgICB2YXIgbm9kZV9mb3JtID0gc3Vic3Rp
dHV0ZShbInt0ZXh0fSIsICIke2Z1bmN0aW9uX25hbWV9OiAke2Rlc2NyaXB0aW9ufSIgKyBlcnJv
cl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2Uoe2Z1bmN0aW9uX25hbWU6
ZnVuY3Rpb25fbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVz
Y3JpcHRpb246KGRlc2NyaXB0aW9uP2Rlc2NyaXB0aW9uICsgIiAiOiIiKX0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnN0aXR1dGlvbnMpKTsKKyAgICByZXR1cm4g
bm9kZV9mb3JtLnNsaWNlKDEpLmpvaW4oIiIpOworfQorCitmdW5jdGlvbiBmaWx0ZXIoYXJyYXks
IGNhbGxhYmxlLCB0aGlzT2JqKSB7CisgICAgdmFyIHJ2ID0gW107CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykgeworICAgICAgICBpZiAoYXJyYXkuaGFzT3duUHJv
cGVydHkoaSkpIHsKKyAgICAgICAgICAgIHZhciBwYXNzID0gY2FsbGFibGUuY2FsbCh0aGlzT2Jq
LCBhcnJheVtpXSwgaSwgYXJyYXkpOworICAgICAgICAgICAgaWYgKHBhc3MpIHsKKyAgICAgICAg
ICAgICAgICBydi5wdXNoKGFycmF5W2ldKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KKyAgICByZXR1cm4gcnY7Cit9CisKK2Z1bmN0aW9uIG1hcChhcnJheSwgY2FsbGFibGUsIHRo
aXNPYmopCit7CisgICAgdmFyIHJ2ID0gW107CisgICAgcnYubGVuZ3RoID0gYXJyYXkubGVuZ3Ro
OworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHsKKyAgICAgICAg
aWYgKGFycmF5Lmhhc093blByb3BlcnR5KGkpKSB7CisgICAgICAgICAgICBydltpXSA9IGNhbGxh
YmxlLmNhbGwodGhpc09iaiwgYXJyYXlbaV0sIGksIGFycmF5KTsKKyAgICAgICAgfQorICAgIH0K
KyAgICByZXR1cm4gcnY7Cit9CisKK2Z1bmN0aW9uIGZvckVhY2goYXJyYXksIGNhbGxiYWNrLCB0
aGlzT2JqKQoreworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHsK
KyAgICAgICAgaWYgKGFycmF5Lmhhc093blByb3BlcnR5KGkpKSB7CisgICAgICAgICAgICBjYWxs
YmFjay5jYWxsKHRoaXNPYmosIGFycmF5W2ldLCBpLCBhcnJheSk7CisgICAgICAgIH0KKyAgICB9
Cit9CisKK2Z1bmN0aW9uIG1lcmdlKGEsYikKK3sKKyAgICB2YXIgcnYgPSB7fTsKKyAgICB2YXIg
cDsKKyAgICBmb3IgKHAgaW4gYSkgeworICAgICAgICBydltwXSA9IGFbcF07CisgICAgfQorICAg
IGZvciAocCBpbiBiKSB7CisgICAgICAgIHJ2W3BdID0gYltwXTsKKyAgICB9CisgICAgcmV0dXJu
IHJ2OworfQorCitmdW5jdGlvbiBzYW1lX3ZhbHVlKHgsIHkpIHsKKyAgICBpZiAoeSAhPT0geSkg
eworICAgICAgICAvL05hTiBjYXNlCisgICAgICAgIHJldHVybiB4ICE9PSB4OworICAgIH0KKyAg
ICBpZiAoeCA9PT0gMCAmJiB5ID09PSAwKSB7CisgICAgICAgIC8vRGlzdGluZ3Vpc2ggKzAgYW5k
IC0wCisgICAgICAgIHJldHVybiAxL3ggPT09IDEveTsKKyAgICB9CisgICAgcmV0dXJuIHggPT09
IHk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9lcXVhbHMoYWN0dWFsLCBleHBlY3RlZCwgZGVzY3Jp
cHRpb24pCit7CisgICAgIC8qCisgICAgICAqIFRlc3QgaWYgdHdvIHByaW1pdGl2ZXMgYXJlIGVx
dWFsIG9yIHR3byBvYmplY3RzCisgICAgICAqIGFyZSB0aGUgc2FtZSBvYmplY3QKKyAgICAgICov
CisgICAgaWYgKHR5cGVvZiBhY3R1YWwgIT0gdHlwZW9mIGV4cGVjdGVkKSB7CisgICAgICAgIGFz
c2VydChmYWxzZSwgImFzc2VydF9lcXVhbHMiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAiZXhwZWN0ZWQgKCIgKyB0eXBlb2YgZXhwZWN0ZWQgKyAiKSAke2V4cGVjdGVkfSBi
dXQgZ290ICgiICsgdHlwZW9mIGFjdHVhbCArICIpICR7YWN0dWFsfSIsCisgICAgICAgICAgICAg
ICAgICAgICAge2V4cGVjdGVkOmV4cGVjdGVkLCBhY3R1YWw6YWN0dWFsfSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgYXNzZXJ0KHNhbWVfdmFsdWUoYWN0dWFsLCBleHBlY3RlZCksICJh
c3NlcnRfZXF1YWxzIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJleHBlY3RlZCAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfSIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtleHBlY3RlZDpleHBlY3Rl
ZCwgYWN0dWFsOmFjdHVhbH0pOworfQorCitmdW5jdGlvbiBhc3NlcnRfbm90X2VxdWFscyhhY3R1
YWwsIGV4cGVjdGVkLCBkZXNjcmlwdGlvbikKK3sKKyAgICAgLyoKKyAgICAgICogVGVzdCBpZiB0
d28gcHJpbWl0aXZlcyBhcmUgdW5lcXVhbCBvciB0d28gb2JqZWN0cworICAgICAgKiBhcmUgZGlm
ZmVyZW50IG9iamVjdHMKKyAgICAgICovCisgICAgYXNzZXJ0KCFzYW1lX3ZhbHVlKGFjdHVhbCwg
ZXhwZWN0ZWQpLCAiYXNzZXJ0X25vdF9lcXVhbHMiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnb3QgZGlzYWxsb3dlZCB2YWx1ZSAke2Fj
dHVhbH0iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2FjdHVh
bDphY3R1YWx9KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X2luX2FycmF5KGFjdHVhbCwgZXhwZWN0
ZWQsIGRlc2NyaXB0aW9uKQoreworICAgIGFzc2VydChleHBlY3RlZC5pbmRleE9mKGFjdHVhbCkg
IT0gLTEsICJhc3NlcnRfaW5fYXJyYXkiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUgJHthY3R1YWx9IG5vdCBpbiBhcnJheSAk
e2V4cGVjdGVkfSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
e2FjdHVhbDphY3R1YWwsIGV4cGVjdGVkOmV4cGVjdGVkfSk7Cit9CisKK2Z1bmN0aW9uIGFzc2Vy
dF9vYmplY3RfZXF1YWxzKGFjdHVhbCwgZXhwZWN0ZWQsIGRlc2NyaXB0aW9uKQoreworICAgICAv
L1RoaXMgbmVlZHMgdG8gYmUgaW1wcm92ZWQgYSBncmVhdCBkZWFsCisgICAgIGZ1bmN0aW9uIGNo
ZWNrX2VxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIHN0YWNrKQorICAgICB7CisgICAgICAgICBzdGFj
ay5wdXNoKGFjdHVhbCk7CisKKyAgICAgICAgIHZhciBwOworICAgICAgICAgZm9yIChwIGluIGFj
dHVhbCkgeworICAgICAgICAgICAgIGFzc2VydChleHBlY3RlZC5oYXNPd25Qcm9wZXJ0eShwKSwg
ImFzc2VydF9vYmplY3RfZXF1YWxzIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5leHBlY3RlZCBwcm9wZXJ0eSAke3B9Iiwg
e3A6cH0pOworCisgICAgICAgICAgICAgaWYgKHR5cGVvZiBhY3R1YWxbcF0gPT09ICJvYmplY3Qi
ICYmIGFjdHVhbFtwXSAhPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICBpZiAoc3RhY2suaW5k
ZXhPZihhY3R1YWxbcF0pID09PSAtMSkgeworICAgICAgICAgICAgICAgICAgICAgY2hlY2tfZXF1
YWwoYWN0dWFsW3BdLCBleHBlY3RlZFtwXSwgc3RhY2spOworICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgYXNzZXJ0KHNhbWVfdmFsdWUo
YWN0dWFsW3BdLCBleHBlY3RlZFtwXSksICJhc3NlcnRfb2JqZWN0X2VxdWFscyIsIGRlc2NyaXB0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InByb3BlcnR5ICR7cH0gZXhwZWN0ZWQgJHtleHBlY3RlZH0gZ290ICR7YWN0dWFsfSIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cDpwLCBleHBl
Y3RlZDpleHBlY3RlZCwgYWN0dWFsOmFjdHVhbH0pOworICAgICAgICAgICAgIH0KKyAgICAgICAg
IH0KKyAgICAgICAgIGZvciAocCBpbiBleHBlY3RlZCkgeworICAgICAgICAgICAgIGFzc2VydChh
Y3R1YWwuaGFzT3duUHJvcGVydHkocCksCisgICAgICAgICAgICAgICAgICAgICJhc3NlcnRfb2Jq
ZWN0X2VxdWFscyIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQg
cHJvcGVydHkgJHtwfSBtaXNzaW5nIiwge3A6cH0pOworICAgICAgICAgfQorICAgICAgICAgc3Rh
Y2sucG9wKCk7CisgICAgIH0KKyAgICAgY2hlY2tfZXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgW10p
OworfQorCitmdW5jdGlvbiBhc3NlcnRfYXJyYXlfZXF1YWxzKGFjdHVhbCwgZXhwZWN0ZWQsIGRl
c2NyaXB0aW9uKQoreworICAgIGFzc2VydChhY3R1YWwubGVuZ3RoID09PSBleHBlY3RlZC5sZW5n
dGgsCisgICAgICAgICAgICJhc3NlcnRfYXJyYXlfZXF1YWxzIiwgZGVzY3JpcHRpb24sCisgICAg
ICAgICAgICJsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgJHtleHBlY3RlZH0gZ290ICR7YWN0dWFs
fSIsCisgICAgICAgICAgIHtleHBlY3RlZDpleHBlY3RlZC5sZW5ndGgsIGFjdHVhbDphY3R1YWwu
bGVuZ3RofSk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFjdHVhbC5sZW5ndGg7IGkrKykg
eworICAgICAgICBhc3NlcnQoYWN0dWFsLmhhc093blByb3BlcnR5KGkpID09PSBleHBlY3RlZC5o
YXNPd25Qcm9wZXJ0eShpKSwKKyAgICAgICAgICAgICAgICJhc3NlcnRfYXJyYXlfZXF1YWxzIiwg
ZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAicHJvcGVydHkgJHtpfSwgcHJvcGVydHkgZXhw
ZWN0ZWQgdG8gYmUgJHtleHBlY3RlZH0gYnV0IHdhcyAke2FjdHVhbH0iLAorICAgICAgICAgICAg
ICAge2k6aSwgZXhwZWN0ZWQ6ZXhwZWN0ZWQuaGFzT3duUHJvcGVydHkoaSkgPyAicHJlc2VudCIg
OiAibWlzc2luZyIsCisgICAgICAgICAgICAgICBhY3R1YWw6YWN0dWFsLmhhc093blByb3BlcnR5
KGkpID8gInByZXNlbnQiIDogIm1pc3NpbmcifSk7CisgICAgICAgIGFzc2VydChzYW1lX3ZhbHVl
KGV4cGVjdGVkW2ldLCBhY3R1YWxbaV0pLAorICAgICAgICAgICAgICAgImFzc2VydF9hcnJheV9l
cXVhbHMiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICJwcm9wZXJ0eSAke2l9LCBleHBl
Y3RlZCAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfSIsCisgICAgICAgICAgICAgICB7aTpp
LCBleHBlY3RlZDpleHBlY3RlZFtpXSwgYWN0dWFsOmFjdHVhbFtpXX0pOworICAgIH0KK30KKwor
ZnVuY3Rpb24gYXNzZXJ0X2FwcHJveF9lcXVhbHMoYWN0dWFsLCBleHBlY3RlZCwgZXBzaWxvbiwg
ZGVzY3JpcHRpb24pCit7CisgICAgLyoKKyAgICAgKiBUZXN0IGlmIHR3byBwcmltaXRpdmUgbnVt
YmVycyBhcmUgZXF1YWwgd2l0aGluZyArLy0gZXBzaWxvbgorICAgICAqLworICAgIGFzc2VydCh0
eXBlb2YgYWN0dWFsID09PSAibnVtYmVyIiwKKyAgICAgICAgICAgImFzc2VydF9hcHByb3hfZXF1
YWxzIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICJleHBlY3RlZCBhIG51bWJlciBidXQgZ290
IGEgJHt0eXBlX2FjdHVhbH0iLAorICAgICAgICAgICB7dHlwZV9hY3R1YWw6dHlwZW9mIGFjdHVh
bH0pOworCisgICAgYXNzZXJ0KE1hdGguYWJzKGFjdHVhbCAtIGV4cGVjdGVkKSA8PSBlcHNpbG9u
LAorICAgICAgICAgICAiYXNzZXJ0X2FwcHJveF9lcXVhbHMiLCBkZXNjcmlwdGlvbiwKKyAgICAg
ICAgICAgImV4cGVjdGVkICR7ZXhwZWN0ZWR9ICsvLSAke2Vwc2lsb259IGJ1dCBnb3QgJHthY3R1
YWx9IiwKKyAgICAgICAgICAge2V4cGVjdGVkOmV4cGVjdGVkLCBhY3R1YWw6YWN0dWFsLCBlcHNp
bG9uOmVwc2lsb259KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X2xlc3NfdGhhbihhY3R1YWwsIGV4
cGVjdGVkLCBkZXNjcmlwdGlvbikKK3sKKyAgICAvKgorICAgICAqIFRlc3QgaWYgYSBwcmltaXRp
dmUgbnVtYmVyIGlzIGxlc3MgdGhhbiBhbm90aGVyCisgICAgICovCisgICAgYXNzZXJ0KHR5cGVv
ZiBhY3R1YWwgPT09ICJudW1iZXIiLAorICAgICAgICAgICAiYXNzZXJ0X2xlc3NfdGhhbiIsIGRl
c2NyaXB0aW9uLAorICAgICAgICAgICAiZXhwZWN0ZWQgYSBudW1iZXIgYnV0IGdvdCBhICR7dHlw
ZV9hY3R1YWx9IiwKKyAgICAgICAgICAge3R5cGVfYWN0dWFsOnR5cGVvZiBhY3R1YWx9KTsKKwor
ICAgIGFzc2VydChhY3R1YWwgPCBleHBlY3RlZCwKKyAgICAgICAgICAgImFzc2VydF9sZXNzX3Ro
YW4iLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgImV4cGVjdGVkIGEgbnVtYmVyIGxlc3MgdGhh
biAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfSIsCisgICAgICAgICAgIHtleHBlY3RlZDpl
eHBlY3RlZCwgYWN0dWFsOmFjdHVhbH0pOworfQorCitmdW5jdGlvbiBhc3NlcnRfZ3JlYXRlcl90
aGFuKGFjdHVhbCwgZXhwZWN0ZWQsIGRlc2NyaXB0aW9uKQoreworICAgIC8qCisgICAgICogVGVz
dCBpZiBhIHByaW1pdGl2ZSBudW1iZXIgaXMgZ3JlYXRlciB0aGFuIGFub3RoZXIKKyAgICAgKi8K
KyAgICBhc3NlcnQodHlwZW9mIGFjdHVhbCA9PT0gIm51bWJlciIsCisgICAgICAgICAgICJhc3Nl
cnRfZ3JlYXRlcl90aGFuIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICJleHBlY3RlZCBhIG51
bWJlciBidXQgZ290IGEgJHt0eXBlX2FjdHVhbH0iLAorICAgICAgICAgICB7dHlwZV9hY3R1YWw6
dHlwZW9mIGFjdHVhbH0pOworCisgICAgYXNzZXJ0KGFjdHVhbCA+IGV4cGVjdGVkLAorICAgICAg
ICAgICAiYXNzZXJ0X2dyZWF0ZXJfdGhhbiIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAiZXhw
ZWN0ZWQgYSBudW1iZXIgZ3JlYXRlciB0aGFuICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9
IiwKKyAgICAgICAgICAge2V4cGVjdGVkOmV4cGVjdGVkLCBhY3R1YWw6YWN0dWFsfSk7Cit9CisK
K2Z1bmN0aW9uIGFzc2VydF9iZXR3ZWVuX2V4Y2x1c2l2ZShhY3R1YWwsIGxvd2VyLCB1cHBlciwg
ZGVzY3JpcHRpb24pCit7CisgICAgLyoKKyAgICAgKiBUZXN0IGlmIGEgcHJpbWl0aXZlIG51bWJl
ciBpcyBiZXR3ZWVuIHR3byBvdGhlcnMKKyAgICAgKi8KKyAgICBhc3NlcnQodHlwZW9mIGFjdHVh
bCA9PT0gIm51bWJlciIsCisgICAgICAgICAgICJhc3NlcnRfYmV0d2Vlbl9leGNsdXNpdmUiLCBk
ZXNjcmlwdGlvbiwKKyAgICAgICAgICAgImV4cGVjdGVkIGEgbnVtYmVyIGJ1dCBnb3QgYSAke3R5
cGVfYWN0dWFsfSIsCisgICAgICAgICAgIHt0eXBlX2FjdHVhbDp0eXBlb2YgYWN0dWFsfSk7CisK
KyAgICBhc3NlcnQoYWN0dWFsID4gbG93ZXIgJiYgYWN0dWFsIDwgdXBwZXIsCisgICAgICAgICAg
ICJhc3NlcnRfYmV0d2Vlbl9leGNsdXNpdmUiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgImV4
cGVjdGVkIGEgbnVtYmVyIGdyZWF0ZXIgdGhhbiAke2xvd2VyfSAiICsKKyAgICAgICAgICAgImFu
ZCBsZXNzIHRoYW4gJHt1cHBlcn0gYnV0IGdvdCAke2FjdHVhbH0iLAorICAgICAgICAgICB7bG93
ZXI6bG93ZXIsIHVwcGVyOnVwcGVyLCBhY3R1YWw6YWN0dWFsfSk7Cit9CisKK2Z1bmN0aW9uIGFz
c2VydF9sZXNzX3RoYW5fZXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgZGVzY3JpcHRpb24pCit7Cisg
ICAgLyoKKyAgICAgKiBUZXN0IGlmIGEgcHJpbWl0aXZlIG51bWJlciBpcyBsZXNzIHRoYW4gb3Ig
ZXF1YWwgdG8gYW5vdGhlcgorICAgICAqLworICAgIGFzc2VydCh0eXBlb2YgYWN0dWFsID09PSAi
bnVtYmVyIiwKKyAgICAgICAgICAgImFzc2VydF9sZXNzX3RoYW5fZXF1YWwiLCBkZXNjcmlwdGlv
biwKKyAgICAgICAgICAgImV4cGVjdGVkIGEgbnVtYmVyIGJ1dCBnb3QgYSAke3R5cGVfYWN0dWFs
fSIsCisgICAgICAgICAgIHt0eXBlX2FjdHVhbDp0eXBlb2YgYWN0dWFsfSk7CisKKyAgICBhc3Nl
cnQoYWN0dWFsIDw9IGV4cGVjdGVkLAorICAgICAgICAgICAiYXNzZXJ0X2xlc3NfdGhhbl9lcXVh
bCIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAiZXhwZWN0ZWQgYSBudW1iZXIgbGVzcyB0aGFu
IG9yIGVxdWFsIHRvICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9IiwKKyAgICAgICAgICAg
e2V4cGVjdGVkOmV4cGVjdGVkLCBhY3R1YWw6YWN0dWFsfSk7Cit9CisKK2Z1bmN0aW9uIGFzc2Vy
dF9ncmVhdGVyX3RoYW5fZXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgZGVzY3JpcHRpb24pCit7Cisg
ICAgLyoKKyAgICAgKiBUZXN0IGlmIGEgcHJpbWl0aXZlIG51bWJlciBpcyBncmVhdGVyIHRoYW4g
b3IgZXF1YWwgdG8gYW5vdGhlcgorICAgICAqLworICAgIGFzc2VydCh0eXBlb2YgYWN0dWFsID09
PSAibnVtYmVyIiwKKyAgICAgICAgICAgImFzc2VydF9ncmVhdGVyX3RoYW5fZXF1YWwiLCBkZXNj
cmlwdGlvbiwKKyAgICAgICAgICAgImV4cGVjdGVkIGEgbnVtYmVyIGJ1dCBnb3QgYSAke3R5cGVf
YWN0dWFsfSIsCisgICAgICAgICAgIHt0eXBlX2FjdHVhbDp0eXBlb2YgYWN0dWFsfSk7CisKKyAg
ICBhc3NlcnQoYWN0dWFsID49IGV4cGVjdGVkLAorICAgICAgICAgICAiYXNzZXJ0X2dyZWF0ZXJf
dGhhbl9lcXVhbCIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAiZXhwZWN0ZWQgYSBudW1iZXIg
Z3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9IiwK
KyAgICAgICAgICAge2V4cGVjdGVkOmV4cGVjdGVkLCBhY3R1YWw6YWN0dWFsfSk7Cit9CisKK2Z1
bmN0aW9uIGFzc2VydF9iZXR3ZWVuX2luY2x1c2l2ZShhY3R1YWwsIGxvd2VyLCB1cHBlciwgZGVz
Y3JpcHRpb24pCit7CisgICAgLyoKKyAgICAgKiBUZXN0IGlmIGEgcHJpbWl0aXZlIG51bWJlciBp
cyBiZXR3ZWVuIHRvIHR3byBvdGhlcnMgb3IgZXF1YWwgdG8gZWl0aGVyIG9mIHRoZW0KKyAgICAg
Ki8KKyAgICBhc3NlcnQodHlwZW9mIGFjdHVhbCA9PT0gIm51bWJlciIsCisgICAgICAgICAgICJh
c3NlcnRfYmV0d2Vlbl9pbmNsdXNpdmUiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgImV4cGVj
dGVkIGEgbnVtYmVyIGJ1dCBnb3QgYSAke3R5cGVfYWN0dWFsfSIsCisgICAgICAgICAgIHt0eXBl
X2FjdHVhbDp0eXBlb2YgYWN0dWFsfSk7CisKKyAgICBhc3NlcnQoYWN0dWFsID49IGxvd2VyICYm
IGFjdHVhbCA8PSB1cHBlciwKKyAgICAgICAgICAgImFzc2VydF9iZXR3ZWVuX2luY2x1c2l2ZSIs
IGRlc2NyaXB0aW9uLAorICAgICAgICAgICAiZXhwZWN0ZWQgYSBudW1iZXIgZ3JlYXRlciB0aGFu
IG9yIGVxdWFsIHRvICR7bG93ZXJ9ICIgKworICAgICAgICAgICAiYW5kIGxlc3MgdGhhbiBvciBl
cXVhbCB0byAke3VwcGVyfSBidXQgZ290ICR7YWN0dWFsfSIsCisgICAgICAgICAgIHtsb3dlcjps
b3dlciwgdXBwZXI6dXBwZXIsIGFjdHVhbDphY3R1YWx9KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0
X3Rocm93cyhjb2RlLCBmdW5jLCBkZXNjcmlwdGlvbikKK3sKKyAgICB0cnkgeworICAgICAgICBm
dW5jLmNhbGwodGhpcyk7CisgICAgICAgIGFzc2VydChmYWxzZSwgImFzc2VydF90aHJvd3MiLCBk
ZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICIke2Z1bmN9IGRpZCBub3QgdGhyb3ciLCB7ZnVu
YzpmdW5jfSk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIEFz
c2VydGlvbkVycm9yKSB7CisgICAgICAgICAgICB0aHJvdyBlOworICAgICAgICB9CisgICAgICAg
IGlmIChjb2RlID09PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKHR5cGVvZiBjb2RlID09PSAib2JqZWN0IikgeworICAgICAgICAgICAgYXNzZXJ0
KHR5cGVvZiBlID09ICJvYmplY3QiICYmICJuYW1lIiBpbiBlICYmIGUubmFtZSA9PSBjb2RlLm5h
bWUsCisgICAgICAgICAgICAgICAgICAgImFzc2VydF90aHJvd3MiLCBkZXNjcmlwdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAiJHtmdW5jfSB0aHJldyAke2FjdHVhbH0gKCR7YWN0dWFsX25hbWV9
KSBleHBlY3RlZCAke2V4cGVjdGVkfSAoJHtleHBlY3RlZF9uYW1lfSkiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7ZnVuYzpmdW5jLCBhY3R1YWw6ZSwgYWN0dWFsX25hbWU6ZS5u
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ6Y29kZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX25hbWU6Y29kZS5uYW1lfSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB2YXIgY29kZV9uYW1l
X21hcCA9IHsKKyAgICAgICAgICAgIElOREVYX1NJWkVfRVJSOiAnSW5kZXhTaXplRXJyb3InLAor
ICAgICAgICAgICAgSElFUkFSQ0hZX1JFUVVFU1RfRVJSOiAnSGllcmFyY2h5UmVxdWVzdEVycm9y
JywKKyAgICAgICAgICAgIFdST05HX0RPQ1VNRU5UX0VSUjogJ1dyb25nRG9jdW1lbnRFcnJvcics
CisgICAgICAgICAgICBJTlZBTElEX0NIQVJBQ1RFUl9FUlI6ICdJbnZhbGlkQ2hhcmFjdGVyRXJy
b3InLAorICAgICAgICAgICAgTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSOiAnTm9Nb2RpZmlj
YXRpb25BbGxvd2VkRXJyb3InLAorICAgICAgICAgICAgTk9UX0ZPVU5EX0VSUjogJ05vdEZvdW5k
RXJyb3InLAorICAgICAgICAgICAgTk9UX1NVUFBPUlRFRF9FUlI6ICdOb3RTdXBwb3J0ZWRFcnJv
cicsCisgICAgICAgICAgICBJTlVTRV9BVFRSSUJVVEVfRVJSOiAnSW5Vc2VBdHRyaWJ1dGVFcnJv
cicsCisgICAgICAgICAgICBJTlZBTElEX1NUQVRFX0VSUjogJ0ludmFsaWRTdGF0ZUVycm9yJywK
KyAgICAgICAgICAgIFNZTlRBWF9FUlI6ICdTeW50YXhFcnJvcicsCisgICAgICAgICAgICBJTlZB
TElEX01PRElGSUNBVElPTl9FUlI6ICdJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3InLAorICAgICAg
ICAgICAgTkFNRVNQQUNFX0VSUjogJ05hbWVzcGFjZUVycm9yJywKKyAgICAgICAgICAgIElOVkFM
SURfQUNDRVNTX0VSUjogJ0ludmFsaWRBY2Nlc3NFcnJvcicsCisgICAgICAgICAgICBUWVBFX01J
U01BVENIX0VSUjogJ1R5cGVNaXNtYXRjaEVycm9yJywKKyAgICAgICAgICAgIFNFQ1VSSVRZX0VS
UjogJ1NlY3VyaXR5RXJyb3InLAorICAgICAgICAgICAgTkVUV09SS19FUlI6ICdOZXR3b3JrRXJy
b3InLAorICAgICAgICAgICAgQUJPUlRfRVJSOiAnQWJvcnRFcnJvcicsCisgICAgICAgICAgICBV
UkxfTUlTTUFUQ0hfRVJSOiAnVVJMTWlzbWF0Y2hFcnJvcicsCisgICAgICAgICAgICBRVU9UQV9F
WENFRURFRF9FUlI6ICdRdW90YUV4Y2VlZGVkRXJyb3InLAorICAgICAgICAgICAgVElNRU9VVF9F
UlI6ICdUaW1lb3V0RXJyb3InLAorICAgICAgICAgICAgSU5WQUxJRF9OT0RFX1RZUEVfRVJSOiAn
SW52YWxpZE5vZGVUeXBlRXJyb3InLAorICAgICAgICAgICAgREFUQV9DTE9ORV9FUlI6ICdEYXRh
Q2xvbmVFcnJvcicKKyAgICAgICAgfTsKKworICAgICAgICB2YXIgbmFtZSA9IGNvZGUgaW4gY29k
ZV9uYW1lX21hcCA/IGNvZGVfbmFtZV9tYXBbY29kZV0gOiBjb2RlOworCisgICAgICAgIHZhciBu
YW1lX2NvZGVfbWFwID0geworICAgICAgICAgICAgSW5kZXhTaXplRXJyb3I6IDEsCisgICAgICAg
ICAgICBIaWVyYXJjaHlSZXF1ZXN0RXJyb3I6IDMsCisgICAgICAgICAgICBXcm9uZ0RvY3VtZW50
RXJyb3I6IDQsCisgICAgICAgICAgICBJbnZhbGlkQ2hhcmFjdGVyRXJyb3I6IDUsCisgICAgICAg
ICAgICBOb01vZGlmaWNhdGlvbkFsbG93ZWRFcnJvcjogNywKKyAgICAgICAgICAgIE5vdEZvdW5k
RXJyb3I6IDgsCisgICAgICAgICAgICBOb3RTdXBwb3J0ZWRFcnJvcjogOSwKKyAgICAgICAgICAg
IEluVXNlQXR0cmlidXRlRXJyb3I6IDEwLAorICAgICAgICAgICAgSW52YWxpZFN0YXRlRXJyb3I6
IDExLAorICAgICAgICAgICAgU3ludGF4RXJyb3I6IDEyLAorICAgICAgICAgICAgSW52YWxpZE1v
ZGlmaWNhdGlvbkVycm9yOiAxMywKKyAgICAgICAgICAgIE5hbWVzcGFjZUVycm9yOiAxNCwKKyAg
ICAgICAgICAgIEludmFsaWRBY2Nlc3NFcnJvcjogMTUsCisgICAgICAgICAgICBUeXBlTWlzbWF0
Y2hFcnJvcjogMTcsCisgICAgICAgICAgICBTZWN1cml0eUVycm9yOiAxOCwKKyAgICAgICAgICAg
IE5ldHdvcmtFcnJvcjogMTksCisgICAgICAgICAgICBBYm9ydEVycm9yOiAyMCwKKyAgICAgICAg
ICAgIFVSTE1pc21hdGNoRXJyb3I6IDIxLAorICAgICAgICAgICAgUXVvdGFFeGNlZWRlZEVycm9y
OiAyMiwKKyAgICAgICAgICAgIFRpbWVvdXRFcnJvcjogMjMsCisgICAgICAgICAgICBJbnZhbGlk
Tm9kZVR5cGVFcnJvcjogMjQsCisgICAgICAgICAgICBEYXRhQ2xvbmVFcnJvcjogMjUsCisKKyAg
ICAgICAgICAgIEVuY29kaW5nRXJyb3I6IDAsCisgICAgICAgICAgICBOb3RSZWFkYWJsZUVycm9y
OiAwLAorICAgICAgICAgICAgVW5rbm93bkVycm9yOiAwLAorICAgICAgICAgICAgQ29uc3RyYWlu
dEVycm9yOiAwLAorICAgICAgICAgICAgRGF0YUVycm9yOiAwLAorICAgICAgICAgICAgVHJhbnNh
Y3Rpb25JbmFjdGl2ZUVycm9yOiAwLAorICAgICAgICAgICAgUmVhZE9ubHlFcnJvcjogMCwKKyAg
ICAgICAgICAgIFZlcnNpb25FcnJvcjogMCwKKyAgICAgICAgICAgIE9wZXJhdGlvbkVycm9yOiAw
LAorICAgICAgICAgICAgTm90QWxsb3dlZEVycm9yOiAwCisgICAgICAgIH07CisKKyAgICAgICAg
aWYgKCEobmFtZSBpbiBuYW1lX2NvZGVfbWFwKSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEFz
c2VydGlvbkVycm9yKCdUZXN0IGJ1ZzogdW5yZWNvZ25pemVkIERPTUV4Y2VwdGlvbiBjb2RlICIn
ICsgY29kZSArICciIHBhc3NlZCB0byBhc3NlcnRfdGhyb3dzKCknKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHZhciByZXF1aXJlZF9wcm9wcyA9IHsgY29kZTogbmFtZV9jb2RlX21hcFtuYW1lXSB9
OworCisgICAgICAgIGlmIChyZXF1aXJlZF9wcm9wcy5jb2RlID09PSAwIHx8CisgICAgICAgICAg
ICh0eXBlb2YgZSA9PSAib2JqZWN0IiAmJgorICAgICAgICAgICAgIm5hbWUiIGluIGUgJiYKKyAg
ICAgICAgICAgIGUubmFtZSAhPT0gZS5uYW1lLnRvVXBwZXJDYXNlKCkgJiYKKyAgICAgICAgICAg
IGUubmFtZSAhPT0gIkRPTUV4Y2VwdGlvbiIpKSB7CisgICAgICAgICAgICAvLyBOZXcgc3R5bGUg
ZXhjZXB0aW9uOiBhbHNvIHRlc3QgdGhlIG5hbWUgcHJvcGVydHkuCisgICAgICAgICAgICByZXF1
aXJlZF9wcm9wcy5uYW1lID0gbmFtZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vV2UnZCBsaWtl
IHRvIHRlc3QgdGhhdCBlIGluc3RhbmNlb2YgdGhlIGFwcHJvcHJpYXRlIGludGVyZmFjZSwKKyAg
ICAgICAgLy9idXQgd2UgY2FuJ3QsIGJlY2F1c2Ugd2UgZG9uJ3Qga25vdyB3aGF0IHdpbmRvdyBp
dCB3YXMgY3JlYXRlZAorICAgICAgICAvL2luLiAgSXQgbWlnaHQgYmUgYW4gaW5zdGFuY2VvZiB0
aGUgYXBwcm9wcmlhdGUgaW50ZXJmYWNlIG9uIHNvbWUKKyAgICAgICAgLy91bmtub3duIG90aGVy
IHdpbmRvdy4gIFRPRE86IFdvcmsgYXJvdW5kIHRoaXMgc29tZWhvdz8KKworICAgICAgICBhc3Nl
cnQodHlwZW9mIGUgPT0gIm9iamVjdCIsCisgICAgICAgICAgICAgICAiYXNzZXJ0X3Rocm93cyIs
IGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgIiR7ZnVuY30gdGhyZXcgJHtlfSB3aXRoIHR5
cGUgJHt0eXBlfSwgbm90IGFuIG9iamVjdCIsCisgICAgICAgICAgICAgICB7ZnVuYzpmdW5jLCBl
OmUsIHR5cGU6dHlwZW9mIGV9KTsKKworICAgICAgICBmb3IgKHZhciBwcm9wIGluIHJlcXVpcmVk
X3Byb3BzKSB7CisgICAgICAgICAgICBhc3NlcnQodHlwZW9mIGUgPT0gIm9iamVjdCIgJiYgcHJv
cCBpbiBlICYmIGVbcHJvcF0gPT0gcmVxdWlyZWRfcHJvcHNbcHJvcF0sCisgICAgICAgICAgICAg
ICAgICAgImFzc2VydF90aHJvd3MiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAi
JHtmdW5jfSB0aHJldyAke2V9IHRoYXQgaXMgbm90IGEgRE9NRXhjZXB0aW9uICIgKyBjb2RlICsg
IjogcHJvcGVydHkgJHtwcm9wfSBpcyBlcXVhbCB0byAke2FjdHVhbH0sIGV4cGVjdGVkICR7ZXhw
ZWN0ZWR9IiwKKyAgICAgICAgICAgICAgICAgICB7ZnVuYzpmdW5jLCBlOmUsIHByb3A6cHJvcCwg
YWN0dWFsOmVbcHJvcF0sIGV4cGVjdGVkOnJlcXVpcmVkX3Byb3BzW3Byb3BdfSk7CisgICAgICAg
IH0KKyAgICB9Cit9CisKKy8qCisgKiBSZXR1cm4gdHJ1ZSBpZiBvYmplY3QgaXMgcHJvYmFibHkg
YSBOb2RlIG9iamVjdC4KKyAqLworZnVuY3Rpb24gaXNfbm9kZShvYmplY3QpCit7CisgICAgLy8g
SSB1c2UgZHVjay10eXBpbmcgaW5zdGVhZCBvZiBpbnN0YW5jZW9mLCBiZWNhdXNlCisgICAgLy8g
aW5zdGFuY2VvZiBkb2Vzbid0IHdvcmsgaWYgdGhlIG5vZGUgaXMgZnJvbSBhbm90aGVyIHdpbmRv
dyAobGlrZSBhbgorICAgIC8vIGlmcmFtZSdzIGNvbnRlbnRXaW5kb3cpOgorICAgIC8vIGh0dHA6
Ly93d3cudzMub3JnL0J1Z3MvUHVibGljL3Nob3dfYnVnLmNnaT9pZD0xMjI5NQorICAgIHRyeSB7
CisgICAgICAgIHZhciBoYXNfbm9kZV9wcm9wZXJ0aWVzID0gKCJub2RlVHlwZSIgaW4gb2JqZWN0
ICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub2RlTmFtZSIgaW4gb2Jq
ZWN0ICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub2RlVmFsdWUiIGlu
IG9iamVjdCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hpbGROb2Rl
cyIgaW4gb2JqZWN0KTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIC8vIFdlJ3JlIHByb2Jh
Ymx5IGNyb3NzLW9yaWdpbiwgd2hpY2ggbWVhbnMgd2UgYXJlbid0IGEgbm9kZQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKGhhc19ub2RlX3Byb3BlcnRpZXMpIHsKKyAg
ICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG9iamVjdC5ub2RlVHlwZTsKKyAgICAgICAgfSBjYXRj
aCAoZSkgeworICAgICAgICAgICAgLy8gVGhlIG9iamVjdCBpcyBwcm9iYWJseSBOb2RlLnByb3Rv
dHlwZSBvciBhbm90aGVyIHByb3RvdHlwZQorICAgICAgICAgICAgLy8gb2JqZWN0IHRoYXQgaW5o
ZXJpdHMgZnJvbSBpdCwgYW5kIG5vdCBhIE5vZGUgaW5zdGFuY2UuCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJl
dHVybiBmYWxzZTsKK30KKwordmFyIHJlcGxhY2VtZW50cyA9IHsKKyAgICAiMCI6ICIwIiwKKyAg
ICAiMSI6ICJ4MDEiLAorICAgICIyIjogIngwMiIsCisgICAgIjMiOiAieDAzIiwKKyAgICAiNCI6
ICJ4MDQiLAorICAgICI1IjogIngwNSIsCisgICAgIjYiOiAieDA2IiwKKyAgICAiNyI6ICJ4MDci
LAorICAgICI4IjogImIiLAorICAgICI5IjogInQiLAorICAgICIxMCI6ICJuIiwKKyAgICAiMTEi
OiAidiIsCisgICAgIjEyIjogImYiLAorICAgICIxMyI6ICJyIiwKKyAgICAiMTQiOiAieDBlIiwK
KyAgICAiMTUiOiAieDBmIiwKKyAgICAiMTYiOiAieDEwIiwKKyAgICAiMTciOiAieDExIiwKKyAg
ICAiMTgiOiAieDEyIiwKKyAgICAiMTkiOiAieDEzIiwKKyAgICAiMjAiOiAieDE0IiwKKyAgICAi
MjEiOiAieDE1IiwKKyAgICAiMjIiOiAieDE2IiwKKyAgICAiMjMiOiAieDE3IiwKKyAgICAiMjQi
OiAieDE4IiwKKyAgICAiMjUiOiAieDE5IiwKKyAgICAiMjYiOiAieDFhIiwKKyAgICAiMjciOiAi
eDFiIiwKKyAgICAiMjgiOiAieDFjIiwKKyAgICAiMjkiOiAieDFkIiwKKyAgICAiMzAiOiAieDFl
IiwKKyAgICAiMzEiOiAieDFmIiwKKyAgICAiMHhmZmZkIjogInVmZmZkIiwKKyAgICAiMHhmZmZl
IjogInVmZmZlIiwKKyAgICAiMHhmZmZmIjogInVmZmZmIiwKK307CisKK2Z1bmN0aW9uIGV4dGVu
ZChhcnJheSwgaXRlbXMpCit7CisgICAgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoYXJyYXks
IGl0ZW1zKTsKK30KKworZnVuY3Rpb24gZ2V0X3NjcmlwdF91cmwoKQoreworICAgIHJldHVybiAi
LyI7Cit9CisKKy8qCisgKiBSZXR1cm4gYSBzdHJpbmcgdHJ1bmNhdGVkIHRvIHRoZSBnaXZlbiBs
ZW5ndGgsIHdpdGggLi4uIGFkZGVkIGF0IHRoZSBlbmQKKyAqIGlmIGl0IHdhcyBsb25nZXIuCisg
Ki8KK2Z1bmN0aW9uIHRydW5jYXRlKHMsIGxlbikKK3sKKyAgICBpZiAocy5sZW5ndGggPiBsZW4p
IHsKKyAgICAgICAgcmV0dXJuIHMuc3Vic3RyaW5nKDAsIGxlbiAtIDMpICsgIi4uLiI7CisgICAg
fQorICAgIHJldHVybiBzOworfQorCitmdW5jdGlvbiBhc3NlcnRfdHJ1ZShhY3R1YWwsIGRlc2Ny
aXB0aW9uKQoreworICAgIGFzc2VydChhY3R1YWwgPT09IHRydWUsICJhc3NlcnRfdHJ1ZSIsIGRl
c2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCB0cnVlIGdv
dCAke2FjdHVhbH0iLCB7YWN0dWFsOmFjdHVhbH0pOworfQorCitmdW5jdGlvbiBhc3NlcnRfZmFs
c2UoYWN0dWFsLCBkZXNjcmlwdGlvbikKK3sKKyAgICBhc3NlcnQoYWN0dWFsID09PSBmYWxzZSwg
ImFzc2VydF9mYWxzZSIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiZXhwZWN0ZWQgZmFsc2UgZ290ICR7YWN0dWFsfSIsIHthY3R1YWw6YWN0dWFsfSk7Cit9CisK
K2Z1bmN0aW9uIHRlc3QodHN0LCBuYW1lKSB7CisgIHRyeSB7CisgICAgdHN0KCk7CisgIH0gY2F0
Y2ggKGUpIHsKKyAgICBpZiAoIVBhaW50V29ya2xldEdsb2JhbFNjb3BlLmVycm9ycykKKyAgICAg
IFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmVycm9ycyA9IFtdOworICAgICAgUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUuZXJyb3JzLnB1c2goeyBuYW1lOiBuYW1lLCBlcnJvcjogZS5tZXNzYWdlIH0p
OworICB9CisgIFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmhhc1J1bkFUZXN0ID0gdHJ1ZTsKK30K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFiMTNkNDMyOTBmODM0ZDBmOWE2OTkzMDUw
MGE2N2FjMTViZjVlZGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1j
dXN0b20tcGFpbnQvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzCkBAIC0wLDAgKzEsMjMgQEAKK2lm
ICh3aW5kb3cudGVzdFJ1bm5lcikgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKKy8vIElt
cG9ydHMgY29kZSBpbnRvIGEgd29ya2xldCwgd2l0aCBzb21lIGhlbHBlcnMuCithc3luYyBmdW5j
dGlvbiBpbXBvcnRXb3JrbGV0KHdvcmtsZXQsIGNvZGUpIHsKKyAgY29uc3QgcmVzcG9uc2UgPSBh
d2FpdCBmZXRjaCgicmVzb3VyY2VzL3Rlc3RoYXJuZXNzLXdvcmtsZXQuanMiKTsKKyAgY29uc3Qg
ZmluYWxDb2RlID0gKGF3YWl0IHJlc3BvbnNlLnRleHQoKSkgKyBjb2RlOworCisgIGxldCB1cmw7
CisgIC8vIEZJWE1FOiBUaGlzIGlzIHRlbXBvcmFyeSwgdW50aWwgd2Ugc3VwcG9ydCBsb2FkaW5n
IHNjcmlwdHMgYnkgdXJsCisgIGlmICh3aW5kb3cuY2hyb21lKSB7CisgICAgY29uc3QgYmxvYiA9
IG5ldyBCbG9iKFtmaW5hbENvZGVdLCB7dHlwZTogJ3RleHQvamF2YXNjcmlwdCd9KTsKKyAgICB1
cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpOworICB9IGVsc2UgeworICAgIHVybCA9IGZp
bmFsQ29kZTsKKyAgfQorCisgIHdvcmtsZXQuYWRkTW9kdWxlKHVybCk7CisgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikgeworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKKyAgICB9LCAzMDAwKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3dvcmtsZXQtZXhwZWN0ZWQuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC93b3JrbGV0LWV4cGVjdGVkLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGI0MmI2MmRhMTNlZGE4MTk2MTBiMzE5N2I0ZTQ1YTU0NzNiZGNmMwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC93b3JrbGV0LWV4
cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxNiBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQt
dGVzdC1ydW5uZXIgWyBleHBlcmltZW50YWw6Q1NTUGFpbnRpbmdBUElFbmFibGVkPXRydWUgXSAt
LT4KKworPGNhbnZhcyBpZD0icGFpbnQiIHdpZHRoPSIxNTBweCIgaGVpZ2h0PSIxNTBweCIgPjwv
Y2FudmFzPgorCis8c2NyaXB0IGlkPSJjb2RlIj4KK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgncGFpbnQnKTsKK3ZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTsK
KworZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspeworICBmb3IgKHZhciBqID0gMDsgaiA8IDY7
IGorKyl7CisgICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2IoJyArIE1hdGguZmxvb3IoMjU1IC0gNDIu
NSAqIGkpICsgJywnICsKKyAgICAgICAgICAgICAgICAgICAgIE1hdGguZmxvb3IoMjU1IC0gNDIu
NSAqIGopICsgJywwKSc7CisgICAgY3R4LmZpbGxSZWN0KGogKiAyNSwgaSAqIDI1LCAyNSwgMjUp
OworICB9Cit9Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1
c3RvbS1wYWludC93b3JrbGV0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFp
bnQvd29ya2xldC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjZmY5MzU2ODUzNDIwNGEyYWEwY2M2ZThkOWU4
OTQ0MDEyZTJlNjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0
b20tcGFpbnQvd29ya2xldC5odG1sCkBAIC0wLDAgKzEsNDIgQEAKKzwhRE9DVFlQRSBodG1sPjwh
LS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFsOkNTU1BhaW50aW5nQVBJRW5hYmxl
ZD10cnVlIF0gLS0+Cis8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxlPSJKdXN0aW4gTWljaGF1ZCIg
aHJlZj0ibWFpbHRvOmp1c3Rpbl9taWNoYXVkQHdlYmtpdC5vcmciPgorPG1ldGEgbmFtZT0iYXNz
ZXJ0IiBjb250ZW50PSJUZXN0IHdvcmtsZXQgYWRkTW9kdWxlIGFuZCBnbG9iYWwgb2JqZWN0Ij4K
KzxsaW5rIHJlbD0iaGVscCIgY29udGVudD0iaHR0cHM6Ly9kcmFmdHMuY3NzLWhvdWRpbmkub3Jn
L2Nzcy1wYWludC1hcGktMS8iPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90ZXN0aGFybmVzcy5q
cyI+PC9zY3JpcHQ+CisKKzxzdHlsZT4KKyAgI3BhaW50IHsKKyAgICBiYWNrZ3JvdW5kLWltYWdl
OiBwYWludChteS1wYWludCk7CisgICAgd2lkdGg6IDE1MHB4OworICAgIGhlaWdodDogMTUwcHg7
CisgIH0KKzwvc3R5bGU+CisKKzxkaXYgaWQ9InBhaW50Ij48L2Rpdj4KKworPHNjcmlwdCBpZD0i
Y29kZSIgdHlwZT0idGV4dC93b3JrbGV0Ij4KK2NsYXNzIE15UGFpbnQgeworICBwYWludChjdHgs
IGdlb20sIHByb3BlcnRpZXMpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKyl7Cisg
ICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDY7IGorKyl7CisgICAgICAgIGN0eC5maWxsU3R5bGUg
PSAncmdiKCcgKyBNYXRoLmZsb29yKDI1NSAtIDQyLjUgKiBpKSArICcsJyArCisgICAgICAgICAg
ICAgICAgICAgICAgICAgTWF0aC5mbG9vcigyNTUgLSA0Mi41ICogaikgKyAnLDApJzsKKyAgICAg
ICAgY3R4LmZpbGxSZWN0KGogKiAyNSwgaSAqIDI1LCAyNSwgMjUpOworICAgICAgfQorICAgIH0K
KyAgICBjb25zb2xlLmxvZygiSGVsbG8gZnJvbSBwYWludCBjYWxsYmFjayEiKTsKKyAgICBhc3Nl
cnRfZ3JlYXRlcl90aGFuKGV2YWwoImRldmljZVBpeGVsUmF0aW8iKSwgMCk7CisgICAgYXNzZXJ0
X3Rocm93cyh7J25hbWUnOiAnUmVmZXJlbmNlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBldmFsKCJ3
aW5kb3ciKTsgfSk7CisKKyAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUs
IHJlamVjdCkgPT4geyBjb25zb2xlLmxvZygiSW4gcHJvbWlzZSIpOyByZXNvbHZlKCkgfSk7Cisg
ICAgcHJvbWlzZS50aGVuKCgpID0+IGNvbnNvbGUubG9nKCJQcm9taXNlIHdhcyByZXNvbHZlZCIp
KTsKKyAgfQorfQorY29uc29sZS5sb2coIkhlbGxvIGZyb20gcGFpbnQgd29ya2xldCEiKTsKK3Jl
Z2lzdGVyUGFpbnQoJ215LXBhaW50JywgTXlQYWludCk7Citjb25zb2xlLmxvZyhXaW5kb3cpOyAv
LyB0ZXN0IHRoYXQgdW5jYXVnaHQgZXhjZXB0aW9ucyBkbyBub3QgYWZmZWN0IHJlZ2lzdGVyZWQg
cGFpbnQgY2FsbGJhY2tzCis8L3NjcmlwdD4KKworPHNjcmlwdD4KK2ltcG9ydFdvcmtsZXQoQ1NT
LnBhaW50V29ya2xldCwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvZGUnKS50ZXh0Q29udGVu
dCk7Cis8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353423</attachid>
            <date>2018-10-30 16:00:29 -0700</date>
            <delta_ts>2018-10-31 16:32:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190979-20181030160028.patch</filename>
            <type>text/plain</type>
            <size>188171</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjQ4NmIwMmU1NmRmOTIz
MGM2MTUyMTYzZWI3MmZkYzA0OTBmMzgxNS4uZjI0NTI5MzNmZjAwMzQ0OGRlYzEzNmRiMWJmZjQy
ODVmYmMyNWRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MyBAQAorMjAxOC0xMC0yOSAgSnVz
dGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIG5l
dyBnbG9iYWwgb2JqZWN0IGFuZCBwcmVsaW1pbmFyeSBXb3JrbGV0cyBzdXBwb3J0IGZvciBDU1Mg
cGFpbnRpbmcgYXBpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTA5NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUZXN0OiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvd29ya2xldC5odG1sCisKKyAgICAgICAg
QWRkIGEgbmV3IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgYW5kIGdsb2JhbCBvYmplY3QgdG8gcnVu
IHdvcmtsZXRzIGluLiBUaGlzIGlzIG1vc3RseSBjb3B5K3Bhc3RlCisgICAgICAgIGZyb20gV29y
a2VycywgYnV0IHdpdGhvdXQgYW55IG9mIHRoZSB0aHJlYWRpbmcuIFdvcmtsZXQuYWRkTW9kdWxl
IGRvZXMgbm90IHlldCBzdXBwb3J0IGxvYWRpbmcgc2NyaXB0cworICAgICAgICBvciBkb2luZyBj
cm9zcyBvcmlnaW4gY2hlY2tpbmcuIFRoZXJlIGFyZSBxdWl0ZSBhIGZldyBwYXJ0cyBvZiB0aGUg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCBhcGkgdGhhdCBhcmUKKyAgICAgICAgbGVmdCBhcyBBU1NF
UlRfTk9UX1JFQUNIRUQoKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2Jq
ZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0IGNvbnN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20u
Y3BwLgorICAgICAgICAoV2ViQ29yZTo6SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6dmlzaXRB
ZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNQYWludFdvcmtsZXRHbG9i
YWxTY29wZTo6cmVnaXN0ZXJQYWludCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrbGV0
R2xvYmFsU2NvcGVCYXNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtsZXRH
bG9iYWxTY29wZUJhc2U6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZSk6CisgICAgICAgIChXZWJD
b3JlOjpKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6Y2xlYXJET01HdWFyZGVkT2JqZWN0
cyk6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnZpc2l0Q2hp
bGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpkZXN0
cm95KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtsZXRHbG9i
YWxTY29wZUJhc2U6OnN1cHBvcnRzUmljaFNvdXJjZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6
SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzaG91bGRJbnRlcnJ1cHRTY3JpcHQpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzaG91bGRJbnRlcnJ1cHRTY3Jp
cHRCZWZvcmVUaW1lb3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3Bl
QmFzZTo6amF2YVNjcmlwdFJ1bnRpbWVGbGFncyk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToK
KyAgICAgICAgKFdlYkNvcmU6OnRvSlNXb3JrbGV0R2xvYmFsU2NvcGUpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6d3JhcHBlZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnByb3h5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6Y3JlYXRlU3RydWN0dXJlKToK
KyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFN0
YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29w
ZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjU3RhdGVGcm9tV29ya2xldEdsb2JhbFNjb3BlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKElzRE9NR2xvYmFsT2JqZWN0KToKKyAgICAgICAg
KFNob3VsZFVzZUdsb2JhbE9iamVjdFByb3RvdHlwZSk6CisgICAgICAgIChHZW5lcmF0ZUhlYWRl
cik6CisgICAgICAgIChHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZ0ZvckV4
cG9zZWQpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGw6CisgICAgICAgICogY3NzL0NTU1BhaW50
SW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYWludEltYWdlVmFsdWU6Omlt
YWdlKToKKyAgICAgICAgKiBjc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRPTUNTU1BhaW50V29ya2xldDo6ZW5zdXJlUGFpbnRXb3JrbGV0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTUNTU1BhaW50V29ya2xldDo6ZW5zdXJlUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9ET01DU1NQYWludFdvcmtsZXQuaDoKKyAgICAg
ICAgKiBjc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmlkbDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVuc3VyZUNTU1BhaW50V29ya2xldCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVuc3VyZUNTU1BhaW50V29ya2xldEds
b2JhbFNjb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpnZXRDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSk6CisgICAg
ICAgICogZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbjoKKyAgICAgICAgKiBkb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0Ojp2bSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpleGVj
U3RhdGUpOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojppc1dvcmtsZXRHbG9iYWxTY29wZSBj
b25zdCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dlckFnZW50OjppbmplY3Rl
ZFNjcmlwdEZvckV2YWwpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtl
clJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1lQWdlbnQ6
OmluamVjdGVkU2NyaXB0Rm9yRXZhbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3Vz
dG9tUGFpbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludEltYWdlOjpD
dXN0b21QYWludEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50SW1hZ2U6OmRv
Q3VzdG9tUGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1h
Z2UuaDoKKyAgICAgICAgKiB3b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHA6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5j
cHAuCisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludFdvcmtsZXRH
bG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6
ZGV2aWNlUGl4ZWxSYXRpbyk6CisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxT
Y29wZTo6YWRkUmVnaXN0ZXJlZFBhaW50KToKKyAgICAgICAgKiB3b3JrbGV0cy9QYWludFdvcmts
ZXRHbG9iYWxTY29wZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50
V29ya2xldEdsb2JhbFNjb3BlLmguCisgICAgICAgICogd29ya2xldHMvUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUuaWRsLgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXQuY3BwOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
LgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtsZXQ6OldvcmtsZXQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldDo6YWRkTW9kdWxl
KToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwLgorICAgICAgICAqIHdvcmts
ZXRzL1dvcmtsZXQuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUuaWRsLgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRDb25zb2xl
Q2xpZW50LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93
b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0
Q29uc29sZUNsaWVudDo6V29ya2xldENvbnNvbGVDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2xldENvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtsZXRDb25zb2xlQ2xpZW50Ojpjb3VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrbGV0Q29uc29sZUNsaWVudDo6dGltZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0
Q29uc29sZUNsaWVudDo6dGltZUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29s
ZUNsaWVudDo6cHJvZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29sZUNsaWVu
dDo6cHJvZmlsZUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29sZUNsaWVudDo6
dGFrZUhlYXBTbmFwc2hvdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29sZUNsaWVu
dDo6dGltZVN0YW1wKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRDb25zb2xlQ2xpZW50Ojpy
ZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldENvbnNvbGVDbGllbnQ6OnJlY29yZEVu
ZCk6CisgICAgICAgICogd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuaDogQWRkZWQuCisg
ICAgICAgICogd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxTY29wZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6On5Xb3JrbGV0R2xvYmFsU2NvcGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpldmFsdWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmlzSlNFeGVjdXRpb25Gb3JiaWRkZW4gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpkaXNhYmxlRXZhbCk6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmRpc2FibGVXZWJBc3NlbWJs
eSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmNvbXBsZXRlVVJMIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6bG9nRXhjZXB0aW9u
VG9Db25zb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29u
c29sZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjphZGRN
ZXNzYWdlKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmlzUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpp
ZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6
c2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6anNSdW50aW1l
RmxhZ3MgY29uc3QpOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3Jr
bGV0R2xvYmFsU2NvcGUuaWRsOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlLmlkbC4KKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0U2Ny
aXB0Q29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlw
dENvbnRyb2xsZXI6OldvcmtsZXRTY3JpcHRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjp+V29ya2xldFNjcmlwdENvbnRyb2xsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmZvcmJpZEV4ZWN1dGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6aXNFeGVjdXRpb25G
b3JiaWRkZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xs
ZXI6OmRpc2FibGVFdmFsKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRTY3JpcHRDb250cm9s
bGVyOjpkaXNhYmxlV2ViQXNzZW1ibHkpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlw
dENvbnRyb2xsZXI6OmluaXRTY3JpcHRXaXRoU3ViY2xhc3MpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtsZXRTY3JpcHRDb250cm9sbGVyOjpzZXRFeGNlcHRpb24pOgorICAgICAgICAqIHdvcmtsZXRz
L1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V29y
a2xldFNjcmlwdENvbnRyb2xsZXI6OndvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OnZtKToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0SWZOZWVkZWQpOgorCiAyMDE4
LTEwLTI2ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjM3NDU4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRl
eCAxMjliNmM1NDkzMmY5ZTRlODg0NjZkY2Y5MThjYmQ2ZTE3NDY0MmQ1Li5jNmZlMjM1ZTA5YzEz
M2M5OWRlMTMyN2EyODBhYzUzYTEwMjc5NDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTQz
LDYgKzE0Myw3IEBAIHNldChXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJD
T1JFX0RJUn0vd29ya2Vycy9zZXJ2aWNlIgogICAgICIke1dFQkNPUkVfRElSfS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dCIKICAgICAiJHtXRUJDT1JFX0RJUn0vd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ciIKKyAgICAiJHtXRUJDT1JFX0RJUn0vd29ya2xldHMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3ht
bCIKICAgICAiJHtXRUJDT1JFX0RJUn0veG1sL3BhcnNlciIKICAgICAiJHtERVJJVkVEX1NPVVJD
RVNfV0VCQ09SRV9ESVJ9IgpAQCAtNTM3LDcgKzUzOCw2IEBAIHNldChXZWJDb3JlX05PTl9TVkdf
SURMX0ZJTEVTCiAgICAgY3NzL0NTU01lZGlhUnVsZS5pZGwKICAgICBjc3MvQ1NTTmFtZXNwYWNl
UnVsZS5pZGwKICAgICBjc3MvQ1NTUGFpbnRDYWxsYmFjay5pZGwKLSAgICBjc3MvQ1NTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUuaWRsCiAgICAgY3NzL0NTU1BhZ2VSdWxlLmlkbAogICAgIGNzcy9D
U1NSdWxlLmlkbAogICAgIGNzcy9DU1NSdWxlTGlzdC5pZGwKQEAgLTkwNiw2ICs5MDYsMTAgQEAg
c2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICB3b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlclVwZGF0ZVZpYUNhY2hlLmlkbAogICAgIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyV2luZG93Q2xpZW50LmlkbAogCisgICAgd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUuaWRsCisgICAgd29ya2xldHMvV29ya2xldC5pZGwKKyAgICB3b3JrbGV0cy9Xb3JrbGV0R2xv
YmFsU2NvcGUuaWRsCisKICAgICB4bWwvRE9NUGFyc2VyLmlkbAogICAgIHhtbC9YTUxIdHRwUmVx
dWVzdC5pZGwKICAgICB4bWwvWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5pZGwKQEAgLTE2ODQs
NiArMTY4OCw4IEBAIHNldChXSU5ET1dfQ09OU1RSVUNUT1JTX0ZJTEUgJHtERVJJVkVEX1NPVVJD
RVNfV0VCQ09SRV9ESVJ9L0RPTVdpbmRvd0NvbnN0cnVjdG9yCiBzZXQoV09SS0VSR0xPQkFMU0NP
UEVfQ09OU1RSVUNUT1JTX0ZJTEUgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L1dvcmtl
ckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCkKIHNldChERURJQ0FURURXT1JLRVJHTE9CQUxT
Q09QRV9DT05TVFJVQ1RPUlNfRklMRSAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsKQogc2V0KFNFUlZJQ0VXT1JL
RVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSAke0RFUklWRURfU09VUkNFU19XRUJDT1JF
X0RJUn0vU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCkKK3NldChXT1JL
TEVUR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09S
RV9ESVJ9L1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwpCitzZXQoUEFJTlRXT1JL
TEVUR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09S
RV9ESVJ9L1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCkKIAogV0VCS0lU
X0ZSQU1FV09SS19ERUNMQVJFKFdlYkNvcmUpCiBXRUJLSVRfSU5DTFVERV9DT05GSUdfRklMRVNf
SUZfRVhJU1RTKCkKQEAgLTE4NjMsNyArMTg2OSw5IEBAIEdFTkVSQVRFX0JJTkRJTkdTKFdlYkNv
cmVCaW5kaW5ncwogICAgICAgICAtLXdpbmRvd0NvbnN0cnVjdG9yc0ZpbGUgJHtXSU5ET1dfQ09O
U1RSVUNUT1JTX0ZJTEV9CiAgICAgICAgIC0td29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNG
aWxlICR7V09SS0VSR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEV9CiAgICAgICAgIC0tZGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlICR7REVESUNBVEVEV09SS0VS
R0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEV9Ci0gICAgICAgIC0tc2VydmljZVdvcmtlckds
b2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSAke1NFUlZJQ0VXT1JLRVJHTE9CQUxTQ09QRV9DT05T
VFJVQ1RPUlNfRklMRX0pCisgICAgICAgIC0tc2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3JzRmlsZSAke1NFUlZJQ0VXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRX0K
KyAgICAgICAgLS13b3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlICR7V09SS0xFVEdM
T0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFfQorICAgICAgICAtLXBhaW50V29ya2xldEdsb2Jh
bFNjb3BlQ29uc3RydWN0b3JzRmlsZSAke1BBSU5UV09SS0xFVEdMT0JBTFNDT1BFX0NPTlNUUlVD
VE9SU19GSUxFfSkKIAogR0VORVJBVEVfQklORElOR1MoV2ViQ29yZVRlc3RTdXBwb3J0QmluZGlu
Z3MKICAgICBPVVRQVVRfU09VUkNFIFdlYkNvcmVUZXN0U3VwcG9ydF9TT1VSQ0VTCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA2NjM5MGQ0OWZiMzlkNmM0YjJjNDc2MjYwNWQyNjA1
ZmIyYjViMTBkLi44ZTkwMTcxNzAzM2U1YzYyZThhYzgyZTBjN2Y2YTk3NTIwM2VjZjEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTg2LDYgKzg2LDcgQEAgVlBBVEggPSBcCiAg
ICAgJChXZWJDb3JlKS93ZWJzb2NrZXRzIFwKICAgICAkKFdlYkNvcmUpL3dvcmtlcnMgXAogICAg
ICQoV2ViQ29yZSkvd29ya2Vycy9zZXJ2aWNlIFwKKyAgICAkKFdlYkNvcmUpL3dvcmtsZXRzIFwK
ICAgICAkKFdlYkNvcmUpL3htbCBcCiAjCiAKQEAgLTQ1Miw3ICs0NTMsNiBAQCBKU19CSU5ESU5H
X0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9jc3MvQ1NTTmFtZXNwYWNlUnVsZS5pZGwgXAogICAg
ICQoV2ViQ29yZSkvY3NzL0NTU1BhZ2VSdWxlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9jc3MvQ1NT
UGFpbnRDYWxsYmFjay5pZGwgXAotICAgICQoV2ViQ29yZSkvY3NzL0NTU1BhaW50V29ya2xldEds
b2JhbFNjb3BlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9jc3MvQ1NTUnVsZS5pZGwgXAogICAgICQo
V2ViQ29yZSkvY3NzL0NTU1J1bGVMaXN0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9jc3MvQ1NTU3R5
bGVEZWNsYXJhdGlvbi5pZGwgXApAQCAtMTAyNCw2ICsxMDI0LDkgQEAgSlNfQklORElOR19JRExT
ID0gXAogICAgICQoV2ViQ29yZSkvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb24uaWRsIFwKICAgICAkKFdlYkNvcmUpL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
VXBkYXRlVmlhQ2FjaGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyV2luZG93Q2xpZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS93b3JrbGV0cy9QYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5pZGwgXAorICAgICQoV2ViQ29yZSkvd29ya2xldHMvV29ya2xl
dC5pZGwgXAorICAgICQoV2ViQ29yZSkvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmlkbCBc
CiAgICAgJChXZWJDb3JlKS94bWwvRE9NUGFyc2VyLmlkbCBcCiAgICAgJChXZWJDb3JlKS94bWwv
WE1MSHR0cFJlcXVlc3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL3htbC9YTUxIdHRwUmVxdWVzdEV2
ZW50VGFyZ2V0LmlkbCBcCkBAIC0xMTU2LDYgKzExNTksNyBAQCBhbGwgOiBcCiAgICAgJChTVVBQ
TEVNRU5UQUxfREVQRU5ERU5DWV9GSUxFKSBcCiAgICAgJChXSU5ET1dfQ09OU1RSVUNUT1JTX0ZJ
TEUpIFwKICAgICAkKFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFKSBcCisgICAg
JChXT1JLTEVUR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUpIFwKICAgICAkKEpTX0RPTV9I
RUFERVJTKSBcCiAgICAgJChXRUJfRE9NX0hFQURFUlMpIFwKICAgICBcCkBAIC0xNTA0LDYgKzE1
MDgsNyBAQCBJRExfSU5DTFVERVMgPSBcCiAgICAgJChXZWJDb3JlKS9zdmcgXAogICAgICQoV2Vi
Q29yZSkvdGVzdGluZyBcCiAgICAgJChXZWJDb3JlKS93b3JrZXJzIFwKKyAgICAkKFdlYkNvcmUp
L3dvcmtsZXRzIFwKICAgICAkKFdlYkNvcmUpL3htbAogCiBJRExfQ09NTU9OX0FSR1MgPSAkKElE
TF9JTkNMVURFUzolPS0taW5jbHVkZSAlKSAtLXdyaXRlLWRlcGVuZGVuY2llcyAtLW91dHB1dERp
ciAuCkBAIC0xNTE2LDYgKzE1MjEsOCBAQCBXSU5ET1dfQ09OU1RSVUNUT1JTX0ZJTEUgPSAuL0RP
TVdpbmRvd0NvbnN0cnVjdG9ycy5pZGwKIFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19G
SUxFID0gLi9Xb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKIERFRElDQVRFRFdPUktF
UkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFID0gLi9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZUNvbnN0cnVjdG9ycy5pZGwKIFNFUlZJQ0VXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RP
UlNfRklMRSA9IC4vU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbAorV09S
S0xFVEdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFID0gLi9Xb3JrbGV0R2xvYmFsU2NvcGVD
b25zdHJ1Y3RvcnMuaWRsCitQQUlOVFdPUktMRVRHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklM
RSA9IC4vUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCiBJRExfRklMRVNf
VE1QID0gLi9pZGxfZmlsZXMudG1wCiBJRExfQVRUUklCVVRFU19GSUxFID0gJChXZWJDb3JlKS9i
aW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgogCkBAIC0xNTI4LDEwICsxNTM1LDEw
IEBAIGVuZGVmCiAKICQoU1VQUExFTUVOVEFMX01BS0VGSUxFX0RFUFMpIDogJChQUkVQUk9DRVNT
X0lETFNfU0NSSVBUUykgJChKU19CSU5ESU5HX0lETFMpICQoUExBVEZPUk1fRkVBVFVSRV9ERUZJ
TkVTKSBEZXJpdmVkU291cmNlcy5tYWtlCiAJJChmb3JlYWNoIGYsJChKU19CSU5ESU5HX0lETFMp
LEBlY2hvICQoZik+PiQoSURMX0ZJTEVTX1RNUCkkKE5MKSkKLQkkKFBFUkwpICQoV2ViQ29yZSkv
YmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGwgLS1kZWZpbmVzICIkKEZFQVRVUkVf
QU5EX1BMQVRGT1JNX0RFRklORVMpICQoQURESVRJT05BTF9JRExfREVGSU5FUykgTEFOR1VBR0Vf
SkFWQVNDUklQVCIgLS1pZGxGaWxlc0xpc3QgJChJRExfRklMRVNfVE1QKSAtLXN1cHBsZW1lbnRh
bERlcGVuZGVuY3lGaWxlICQoU1VQUExFTUVOVEFMX0RFUEVOREVOQ1lfRklMRSkgLS13aW5kb3dD
b25zdHJ1Y3RvcnNGaWxlICQoV0lORE9XX0NPTlNUUlVDVE9SU19GSUxFKSAtLXdvcmtlckdsb2Jh
bFNjb3BlQ29uc3RydWN0b3JzRmlsZSAkKFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19G
SUxFKSAtLWRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSAkKERFRElD
QVRFRFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFKSAtLXNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgJChTRVJWSUNFV09SS0VSR0xPQkFMU0NPUEVfQ09O
U1RSVUNUT1JTX0ZJTEUpIC0tc3VwcGxlbWVudGFsTWFrZWZpbGVEZXBzICRACisJJChQRVJMKSAk
KFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsIC0tZGVmaW5lcyAi
JChGRUFUVVJFX0FORF9QTEFURk9STV9ERUZJTkVTKSAkKEFERElUSU9OQUxfSURMX0RFRklORVMp
IExBTkdVQUdFX0pBVkFTQ1JJUFQiIC0taWRsRmlsZXNMaXN0ICQoSURMX0ZJTEVTX1RNUCkgLS1z
dXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZSAkKFNVUFBMRU1FTlRBTF9ERVBFTkRFTkNZX0ZJTEUp
IC0td2luZG93Q29uc3RydWN0b3JzRmlsZSAkKFdJTkRPV19DT05TVFJVQ1RPUlNfRklMRSkgLS13
b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgJChXT1JLRVJHTE9CQUxTQ09QRV9DT05T
VFJVQ1RPUlNfRklMRSkgLS1kZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0Zp
bGUgJChERURJQ0FURURXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSkgLS1zZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlICQoU0VSVklDRVdPUktFUkdMT0JB
TFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFKSAtLXdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9y
c0ZpbGUgJChXT1JLTEVUR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUpIC0tcGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlICQoUEFJTlRXT1JLTEVUR0xPQkFMU0NPUEVf
Q09OU1RSVUNUT1JTX0ZJTEUpIC0tc3VwcGxlbWVudGFsTWFrZWZpbGVEZXBzICRACiAJJChERUxF
VEUpICQoSURMX0ZJTEVTX1RNUCkKIAotSlMlLmNwcCBKUyUuaCA6ICUuaWRsICQoSlNfQklORElO
R1NfU0NSSVBUUykgJChJRExfQVRUUklCVVRFU19GSUxFKSAkKFdJTkRPV19DT05TVFJVQ1RPUlNf
RklMRSkgJChXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSkgJChQTEFURk9STV9G
RUFUVVJFX0RFRklORVMpCitKUyUuY3BwIEpTJS5oIDogJS5pZGwgJChKU19CSU5ESU5HU19TQ1JJ
UFRTKSAkKElETF9BVFRSSUJVVEVTX0ZJTEUpICQoV0lORE9XX0NPTlNUUlVDVE9SU19GSUxFKSAk
KFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFKSAkKFdPUktMRVRHTE9CQUxTQ09Q
RV9DT05TVFJVQ1RPUlNfRklMRSkgJChQTEFURk9STV9GRUFUVVJFX0RFRklORVMpCiAJJChQRVJM
KSAkKFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGwgJChJRExf
Q09NTU9OX0FSR1MpIC0tZGVmaW5lcyAiJChGRUFUVVJFX0FORF9QTEFURk9STV9ERUZJTkVTKSAk
KEFERElUSU9OQUxfSURMX0RFRklORVMpIExBTkdVQUdFX0pBVkFTQ1JJUFQiIC0tZ2VuZXJhdG9y
IEpTIC0taWRsQXR0cmlidXRlc0ZpbGUgJChJRExfQVRUUklCVVRFU19GSUxFKSAtLXN1cHBsZW1l
bnRhbERlcGVuZGVuY3lGaWxlICQoU1VQUExFTUVOVEFMX0RFUEVOREVOQ1lfRklMRSkgJDwKIAog
LWluY2x1ZGUgJChTVVBQTEVNRU5UQUxfTUFLRUZJTEVfREVQUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXgg
YWViNjYyZWIyZjAwZTBjMmJkY2ViNWM3YWExZmU1NDBiMGMxYmI3Yy4uMTFiNmMwMjRhZGEwZDFi
NTA4MDIwYzU0ODgyYmNjMjQ4YWQ2NTEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTM4NSw3ICszODUs
NyBAQCBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRTdHJpbmdzLmNwcAogYmluZGluZ3MvanMvSlNE
T01Db252ZXJ0V2ViR0wuY3BwCiBiaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmNwcAogYmluZGlu
Z3MvanMvSlNEZXByZWNhdGVkQ1NTT01WYWx1ZUN1c3RvbS5jcHAKLWJpbmRpbmdzL2pzL0pTQ1NT
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwCitiaW5kaW5ncy9qcy9KU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcAogYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuY3Bw
CiBiaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAKIGJpbmRp
bmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAKQEAgLTQ3OCw2ICs0NzgsNyBAQCBi
aW5kaW5ncy9qcy9KU1dpbmRvd1Byb3h5LmNwcAogYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxT
Y29wZUJhc2UuY3BwCiBiaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcAog
YmluZGluZ3MvanMvSlNXb3JrZXJOYXZpZ2F0b3JDdXN0b20uY3BwCitiaW5kaW5ncy9qcy9KU1dv
cmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwCiBiaW5kaW5ncy9qcy9KU1hNTERvY3VtZW50Q3VzdG9t
LmNwcAogYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKIGJpbmRpbmdzL2pz
L0pTWFBhdGhOU1Jlc29sdmVyQ3VzdG9tLmNwcApAQCAtNjEzLDcgKzYxNCw2IEBAIGNzcy9DU1NO
YW1lZEltYWdlVmFsdWUuY3BwCiBjc3MvQ1NTTmFtZXNwYWNlUnVsZS5jcHAKIGNzcy9DU1NQYWdl
UnVsZS5jcHAKIGNzcy9DU1NQYWludEltYWdlVmFsdWUuY3BwCi1jc3MvQ1NTUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUuY3BwCiBjc3MvQ1NTUGVuZGluZ1N1YnN0aXR1dGlvblZhbHVlLmNwcAogY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAogY3NzL0NTU1Byb3BlcnR5LmNwcApAQCAtMjM3MSw2ICsy
MzcxLDEyIEBAIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3Bw
CiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAK
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCiAKK3dvcmtsZXRzL1dv
cmtsZXQuY3BwCit3b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5jcHAKK3dvcmtsZXRzL1dv
cmtsZXRHbG9iYWxTY29wZS5jcHAKK3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNw
cAord29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisKIHhtbC9ET01QYXJzZXIu
Y3BwCiB4bWwvTmF0aXZlWFBhdGhOU1Jlc29sdmVyLmNwcAogeG1sL1hNTEVycm9ycy5jcHAKQEAg
LTI0ODAsNyArMjQ4Niw5IEBAIEpTQ1NTS2V5ZnJhbWVzUnVsZS5jcHAKIEpTQ1NTTWVkaWFSdWxl
LmNwcAogSlNDU1NOYW1lc3BhY2VSdWxlLmNwcAogSlNDU1NQYWludENhbGxiYWNrLmNwcAotSlND
U1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKK0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUu
Y3BwCitKU1dvcmtsZXQuY3BwCitKU1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKIEpTQ1NTUGFnZVJ1
bGUuY3BwCiBKU0NTU1J1bGUuY3BwCiBKU0NTU1J1bGVMaXN0LmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZjMmQ3MWVmYzc3
MTU3ZGRlM2QzNDRmMmFmZTQ3OTY3MzYxNDZhODMuLmFiYjA0MmU4YzQxODMwOWRjZGY4YWRiMTNm
MTg3OGM4OWM3YmE0NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTEzNTIsMTQgKzEzNTIsMTkgQEAKIAkJNEIzNDgwOTQwRUVG
NTBENDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCMzQ4MDkyMEVFRjUwRDQwMEFDMUI0MSAvKiBJbWFnZVNv
dXJjZUNHLmggKi87IH07CiAJCTRCNUJERDlCMjE2NThBMTUwMERENDI2MiAvKiBDU1NQYWludENh
bGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
QjVCREQ5QTIxNjU4QTE1MDBERDQyNjIgLyogQ1NTUGFpbnRDYWxsYmFjay5oICovOyB9OwogCQk0
QjZCNUNCRDIxNjQwRUZGMDA2MDM4MTcgLyogRE9NQ1NTUGFpbnRXb3JrbGV0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjZCNUNCODIxNjNFQzA3MDA2
MDM4MTcgLyogRE9NQ1NTUGFpbnRXb3JrbGV0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNEI2QjVDQzAyMTY0Mzg2NDAwNjAzODE3IC8qIENTU1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0QjZCNUNCRjIxNjQzODY0MDA2MDM4MTcgLyogQ1NTUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUuaCAqLzsgfTsKKwkJNEI2QjVDQzAyMTY0Mzg2NDAwNjAzODE3IC8qIFBhaW50
V29ya2xldEdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0QjZCNUNCRjIxNjQzODY0MDA2MDM4MTcgLyogUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUuaCAqLzsgfTsKIAkJNEI2RTg3NjkyMTc2RDY5MjAwNDIwRTVFIC8qIENTU1BhaW50SW1h
Z2VWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NEI2RTg3NjgyMTc2RDY5MjAwNDIwRTVFIC8qIENTU1BhaW50SW1hZ2VWYWx1ZS5oICovOyB9Owog
CQk0QjZGQTZGNDBDMzlFNDhDMDAwODcwMTEgLyogU21hcnRSZXBsYWNlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjZGQTZGMjBDMzlFNDhDMDAwODcw
MTEgLyogU21hcnRSZXBsYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNEI3QUU0OTMyMTc3QjU2RjAwQzU5OTU5IC8qIEN1c3RvbVBhaW50SW1h
Z2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCN0FF
NDkyMjE3N0I1NkYwMEM1OTk1OSAvKiBDdXN0b21QYWludEltYWdlLmggKi87IH07CisJCTRCN0Y5
QzUyMjE4M0I1RTUwMDFDRUJBMCAvKiBXb3JrbGV0Q29uc29sZUNsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI3RjlDNTEyMTgzQjVFNTAwMUNF
QkEwIC8qIFdvcmtsZXRDb25zb2xlQ2xpZW50LmggKi87IH07CiAJCTRCQUU5NUIxMEIyRkE5Q0Uw
MEFFRDhBMCAvKiBFZGl0b3JEZWxldGVBY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCQUU5NUIwMEIyRkE5Q0UwMEFFRDhBMCAvKiBFZGl0b3JE
ZWxldGVBY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0QkRBM0ZGRTIxNTFCNkY1MDBGRDY2MDQgLyogRE9NQ1NTQ3VzdG9tUHJvcGVydHlE
ZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0QkRBM0ZGODIxNTFCNkYyMDBGRDY2MDQgLyogRE9NQ1NTQ3VzdG9tUHJvcGVydHlEZXNjcmlw
dG9yLmggKi87IH07CiAJCTRCREEzRkZGMjE1MUI2RjUwMEZENjYwNCAvKiBET01DU1NSZWdpc3Rl
ckN1c3RvbVByb3BlcnR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0QkRBM0ZGOTIxNTFCNkYzMDBGRDY2MDQgLyogRE9NQ1NTUmVnaXN0ZXJDdXN0b21Q
cm9wZXJ0eS5oICovOyB9OwogCQk0QkRBNDAwMTIxNTFCNkY1MDBGRDY2MDQgLyogQ1NTUmVnaXN0
ZXJlZEN1c3RvbVByb3BlcnR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0QkRBM0ZGQjIxNTFCNkY0MDBGRDY2MDQgLyogQ1NTUmVnaXN0ZXJlZEN1c3Rv
bVByb3BlcnR5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJNEJERUEzMjAyMTdFQzU1RjAwNTJERkNEIC8qIFdvcmtsZXQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCREVBMzFGMjE3RUM1NUYwMDUyREZD
RCAvKiBXb3JrbGV0LmggKi87IH07CisJCTRCREVBMzI1MjE3RkUyRTQwMDUyREZDRCAvKiBXb3Jr
bGV0R2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDRCREVBMzI0MjE3RkUyRTQwMDUyREZDRCAvKiBXb3JrbGV0R2xvYmFsU2NvcGUuaCAq
LzsgfTsKKwkJNEJERUEzMjgyMTgwMDNGNzAwNTJERkNEIC8qIFdvcmtsZXRTY3JpcHRDb250cm9s
bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QkRF
QTMyNzIxODAwM0Y3MDA1MkRGQ0QgLyogV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCAqLzsgfTsK
KwkJNEJERUEzMkMyMTgwMzNFQjAwNTJERkNEIC8qIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJERUEzMkIy
MTgwMzNFQjAwNTJERkNEIC8qIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5oICovOyB9OwogCQk0
RDNCMDBBQjIxNUQ2OUE3MDA3NkI5ODMgLyogTWVkaWFSZWNvcmRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEQzQjAwQTkyMTVENjlBNzAwNzZCOTgz
IC8qIE1lZGlhUmVjb3JkZXIuaCAqLzsgfTsKIAkJNEQzQjAwQUYyMTVENkE2OTAwNzZCOTgzIC8q
IEJsb2JFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNEQzQjAwQUQyMTVENkE2OTAwNzZCOTgzIC8qIEJsb2JFdmVudC5oICovOyB9OwogCQk0REI3
MTMwRDIxNkVDQjREMDA5NkE0REQgLyogTWVkaWFSZWNvcmRlckVycm9yRXZlbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDREQjcxMzBDMjE2RUMyQkQw
MDk2QTRERCAvKiBNZWRpYVJlY29yZGVyRXJyb3JFdmVudC5oICovOyB9OwpAQCAtNzkwMSwxNiAr
NzkwNiwxOCBAQAogCQk0QjZCNUNCNjIxNjNEQzFBMDA2MDM4MTcgLyogRE9NQ1NTUGFpbnRXb3Jr
bGV0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBET01DU1NQYWludFdvcmtsZXQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0QjZCNUNCODIxNjNFQzA3MDA2MDM4MTcgLyogRE9NQ1NTUGFpbnRXb3JrbGV0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERPTUNTU1BhaW50V29ya2xldC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0QjZCNUNCOTIxNjNFRDMyMDA2MDM4MTcgLyogRE9NQ1NTUGFpbnRXb3Jr
bGV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTUNTU1BhaW50V29ya2xldC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTRCNkI1Q0JFMjE2NDM0RkIwMDYwMzgxNyAvKiBKU0NT
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk0QjZCNUNCRjIxNjQzODY0MDA2MDM4MTcgLyogQ1NTUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNEI2QjVDQzEyMTY0MzlDRjAwNjAzODE3IC8q
IENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NEI2QjVDQzMyMTY0M0E4RTAwNjAzODE3IC8qIENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTRCNkI1Q0JFMjE2NDM0RkIwMDYwMzgxNyAvKiBKU1BhaW50V29ya2xldEds
b2JhbFNjb3BlQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QjZCNUNC
RjIxNjQzODY0MDA2MDM4MTcgLyogUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNEI2QjVDQzEyMTY0MzlDRjAwNjAzODE3IC8qIFBhaW50V29ya2xldEdsb2JhbFNjb3Bl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEI2QjVDQzMyMTY0M0E4RTAwNjAzODE3IC8qIFBh
aW50V29ya2xldEdsb2JhbFNjb3BlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQYWludFdvcmtsZXRHbG9iYWxTY29wZS5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCNkU4NzY4MjE3NkQ2OTIwMDQyMEU1
RSAvKiBDU1NQYWludEltYWdlVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTUGFpbnRJbWFnZVZh
bHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCNkU4NzZCMjE3NkQ4QTEwMDQy
MEU1RSAvKiBDU1NQYWludEltYWdlVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTUGFp
bnRJbWFnZVZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI2RkE2RjIw
QzM5RTQ4QzAwMDg3MDExIC8qIFNtYXJ0UmVwbGFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTbWFydFJlcGxhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NEI2RkE2RjYwQzM5RTRBMTAwMDg3MDExIC8qIFNtYXJ0UmVwbGFjZUNGLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNtYXJ0UmVwbGFjZUNGLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI3QUU0OTIyMTc3QjU2RjAwQzU5OTU5IC8qIEN1c3RvbVBh
aW50SW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3VzdG9tUGFpbnRJbWFnZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0QjdBRTQ5NTIxNzdCNjNFMDBDNTk5NTkgLyogQ3VzdG9tUGFp
bnRJbWFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDdXN0b21QYWludEltYWdlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEI3RjlDNTEyMTgzQjVFNTAwMUNFQkEwIC8qIFdv
cmtsZXRDb25zb2xlQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtsZXRDb25zb2xlQ2xpZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRCN0Y5QzU0MjE4M0I2MzQwMDFDRUJB
MCAvKiBXb3JrbGV0Q29uc29sZUNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrbGV0
Q29uc29sZUNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCQUU5NUIw
MEIyRkE5Q0UwMEFFRDhBMCAvKiBFZGl0b3JEZWxldGVBY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRWRpdG9yRGVsZXRlQWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTRCREEzRkY1MjE1MUI2RjAwMEZENjYwNCAvKiBET01DU1NSZWdpc3RlckN1
c3RvbVByb3BlcnR5LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBET01DU1NSZWdpc3RlckN1
c3RvbVByb3BlcnR5LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEJEQTNGRjcy
MTUxQjZGMTAwRkQ2NjA0IC8qIERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9w
ZXJ0eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03OTE4LDYgKzc5MjUsMTYg
QEAKIAkJNEJEQTNGRjkyMTUxQjZGMzAwRkQ2NjA0IC8qIERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJv
cGVydHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NQ1NTUmVnaXN0ZXJD
dXN0b21Qcm9wZXJ0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QkRBM0ZGQTIx
NTFCNkYzMDBGRDY2MDQgLyogRE9NQ1NTQ3VzdG9tUHJvcGVydHlEZXNjcmlwdG9yLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBET01DU1NDdXN0b21Qcm9wZXJ0eURlc2NyaXB0b3IuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QkRBM0ZGQjIxNTFCNkY0MDBGRDY2MDQgLyog
Q1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0QkRFQTMxQzIxN0VCQ0Y1MDA1MkRGQ0QgLyogV29ya2xldC5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
V29ya2xldC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRCREVBMzFGMjE3RUM1
NUYwMDUyREZDRCAvKiBXb3JrbGV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtsZXQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEJERUEzMjMyMTdFQzk2QTAwNTJERkNEIC8qIFdvcmts
ZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2xldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTRCREVBMzI0MjE3RkUyRTQwMDUyREZDRCAvKiBXb3JrbGV0R2xvYmFsU2Nv
cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2xldEdsb2JhbFNjb3BlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTRCREVBMzI2MjE3RkUyRkEwMDUyREZDRCAvKiBXb3JrbGV0R2xvYmFs
U2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2xldEdsb2JhbFNjb3BlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEJERUEzMjcyMTgwMDNGNzAwNTJERkNEIC8qIFdv
cmtsZXRTY3JpcHRDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtsZXRTY3JpcHRDb250
cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRCREVBMzI5MjE4MDA0MEMw
MDUyREZDRCAvKiBXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTRCREVBMzJBMjE4MDEwNzIwMDUyREZDRCAvKiBXb3JrbGV0R2xvYmFsU2NvcGUuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFdvcmtsZXRHbG9iYWxTY29wZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTRCREVBMzJCMjE4MDMzRUIwMDUyREZDRCAvKiBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTRCREVBMzJEMjE4MDM0MDUwMDUyREZDRCAvKiBKU1dvcmtsZXRHbG9i
YWxTY29wZUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXb3JrbGV0R2xvYmFsU2NvcGVC
YXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEQzQjAwQTQyMTVENjEwNDAw
NzZCOTgzIC8qIE1lZGlhUmVjb3JkZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlh
UmVjb3JkZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RDNCMDBBNjIxNUQ2
NDVCMDA3NkI5ODMgLyogQmxvYkV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBCbG9i
RXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RDNCMDBBODIxNUQ2OUE2
MDA3NkI5ODMgLyogTWVkaWFSZWNvcmRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBNZWRpYVJlY29yZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE1ODAxLDYgKzE1ODE4LDcgQEAKIAkJCQlCMjIyNzdDQTBEMDBCRjFFMDA3MUI3ODIgLyog
c3ZnICovLAogCQkJCTQxN0RBNENEMTM3MzQyMDQwMDdDNTdGQiAvKiB0ZXN0aW5nICovLAogCQkJ
CTJFNDM0NjMxMEY1NDZBNjgwMEIwRjFCQSAvKiB3b3JrZXJzICovLAorCQkJCTRCREVBMzE4MjE3
RUJCODgwMDUyREZDRCAvKiB3b3JrbGV0cyAqLywKIAkJCQlFMUYwNDI0MzA5ODM5Mzg5MDA2Njk0
RUEgLyogeG1sICovLAogCQkJCTY1NjU4MEVDMDlEMTJCMjAwMDBFNjFENyAvKiBEZXJpdmVkIFNv
dXJjZXMgKi8sCiAJCQkJMDg5QzE2NjVGRTg0MTE1OEMwMkFBQzA3IC8qIFJlc291cmNlcyAqLywK
QEAgLTE4MDM2LDYgKzE4MDU0LDI2IEBACiAJCQlwYXRoID0gYW5pbWF0aW9uOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJNEJERUEzMTgyMTdFQkI4ODAwNTJERkNEIC8qIHdv
cmtsZXRzICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk0
QjZCNUNDMTIxNjQzOUNGMDA2MDM4MTcgLyogUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwICov
LAorCQkJCTRCNkI1Q0JGMjE2NDM4NjQwMDYwMzgxNyAvKiBQYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5oICovLAorCQkJCTRCNkI1Q0MzMjE2NDNBOEUwMDYwMzgxNyAvKiBQYWludFdvcmtsZXRHbG9i
YWxTY29wZS5pZGwgKi8sCisJCQkJNEJERUEzMjMyMTdFQzk2QTAwNTJERkNEIC8qIFdvcmtsZXQu
Y3BwICovLAorCQkJCTRCREVBMzFGMjE3RUM1NUYwMDUyREZDRCAvKiBXb3JrbGV0LmggKi8sCisJ
CQkJNEJERUEzMUMyMTdFQkNGNTAwNTJERkNEIC8qIFdvcmtsZXQuaWRsICovLAorCQkJCTRCN0Y5
QzU0MjE4M0I2MzQwMDFDRUJBMCAvKiBXb3JrbGV0Q29uc29sZUNsaWVudC5jcHAgKi8sCisJCQkJ
NEI3RjlDNTEyMTgzQjVFNTAwMUNFQkEwIC8qIFdvcmtsZXRDb25zb2xlQ2xpZW50LmggKi8sCisJ
CQkJNEJERUEzMjYyMTdGRTJGQTAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxTY29wZS5jcHAgKi8s
CisJCQkJNEJERUEzMjQyMTdGRTJFNDAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxTY29wZS5oICov
LAorCQkJCTRCREVBMzJBMjE4MDEwNzIwMDUyREZDRCAvKiBXb3JrbGV0R2xvYmFsU2NvcGUuaWRs
ICovLAorCQkJCTRCREVBMzI5MjE4MDA0MEMwMDUyREZDRCAvKiBXb3JrbGV0U2NyaXB0Q29udHJv
bGxlci5jcHAgKi8sCisJCQkJNEJERUEzMjcyMTgwMDNGNzAwNTJERkNEIC8qIFdvcmtsZXRTY3Jp
cHRDb250cm9sbGVyLmggKi8sCisJCQkpOworCQkJcGF0aCA9IHdvcmtsZXRzOworCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJNEQzQjAwQTAyMTVENUMwRjAwNzZCOTgzIC8qIG1l
ZGlhcmVjb3JkZXIgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApA
QCAtMjQ0MDksNiArMjQ0NDcsOCBAQAogCQkJCUJDQkZCNTNCMERDRDI5Q0YwMDE5QjNFNSAvKiBK
U1dpbmRvd1Byb3h5LmggKi8sCiAJCQkJRTFDMzZEMzIwRUIwQTA5NDAwNzQxMEJDIC8qIEpTV29y
a2VyR2xvYmFsU2NvcGVCYXNlLmNwcCAqLywKIAkJCQlFMUMzNkQzMzBFQjBBMDk0MDA3NDEwQkMg
LyogSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuaCAqLywKKwkJCQk0QkRFQTMyRDIxODAzNDA1MDA1
MkRGQ0QgLyogSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcCAqLywKKwkJCQk0QkRFQTMyQjIx
ODAzM0VCMDA1MkRGQ0QgLyogSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmggKi8sCiAJCQkJNzA5
QTAxRkQxRTNEMEJDQzAwNkIwRDRDIC8qIE1vZHVsZUZldGNoRmFpbHVyZUtpbmQuaCAqLywKIAkJ
CQk0MUI0NTlFRDFGNTVFQkM3MDAwMEY2RkQgLyogUmVhZGFibGVTdHJlYW0uY3BwICovLAogCQkJ
CTQxQjQ1OURBMUY0Q0FEQjkwMDAwRjZGRCAvKiBSZWFkYWJsZVN0cmVhbS5oICovLApAQCAtMjQ0
NDksMTIgKzI0NDg5LDEyIEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk3Q0QzNDQxQjFGMzJERTMw
MDAwRENENDkgLyogQ2FjaGVkIEF0dHJpYnV0ZXMgdy8gSW52YWxpZGF0aW9uICovLAogCQkJCTdD
M0Q4RUU0MUUwOEJBQkUwMDIzQjA4NCAvKiBHQyAvIFdyYXBwaW5nIE9ubHkgKi8sCi0JCQkJNEI2
QjVDQkUyMTY0MzRGQjAwNjAzODE3IC8qIEpTQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0
b20uY3BwICovLAogCQkJCTlCQzVGOURGMUQ1QUFGNkEwMDJCNzQ5RCAvKiBKU0N1c3RvbUVsZW1l
bnRSZWdpc3RyeUN1c3RvbS5jcHAgKi8sCiAJCQkJQkNEOUMyNUUwQzE3QUE2NzAwNUM5MEEyIC8q
IEpTRE9NV2luZG93Q3VzdG9tLmNwcCAqLywKIAkJCQk2NTJGQkJCQjBERTI3Q0I2MDAwMUQzODYg
LyogSlNET01XaW5kb3dDdXN0b20uaCAqLywKIAkJCQlCQzU4MjNGNDBDMEE5OERGMDA1M0YxQjUg
LyogSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAgKi8sCiAJCQkJQkNFMUM0M0YwRDk4MzBGNDAwM0Iw
MkYyIC8qIEpTTG9jYXRpb25DdXN0b20uY3BwICovLAorCQkJCTRCNkI1Q0JFMjE2NDM0RkIwMDYw
MzgxNyAvKiBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcCAqLywKIAkJCQk0MThD
Mzk1RDFDOEYwQUFCMDA1MUM4QTMgLyogSlNSZWFkYWJsZVN0cmVhbVNvdXJjZUN1c3RvbS5jcHAg
Ki8sCiAJCQkJNDZCQ0JCQkUyMDg1MDA1QjAwNzEwNjM4IC8qIEpTUmVtb3RlRE9NV2luZG93Q3Vz
dG9tLmNwcCAqLywKIAkJCSk7CkBAIC0yNjA1Miw5ICsyNjA5Miw2IEBACiAJCQkJNEI1QkREOTky
MTY1ODhFNTAwREQ0MjYyIC8qIENTU1BhaW50Q2FsbGJhY2suaWRsICovLAogCQkJCTRCNkU4NzZC
MjE3NkQ4QTEwMDQyMEU1RSAvKiBDU1NQYWludEltYWdlVmFsdWUuY3BwICovLAogCQkJCTRCNkU4
NzY4MjE3NkQ2OTIwMDQyMEU1RSAvKiBDU1NQYWludEltYWdlVmFsdWUuaCAqLywKLQkJCQk0QjZC
NUNDMTIxNjQzOUNGMDA2MDM4MTcgLyogQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwICov
LAotCQkJCTRCNkI1Q0JGMjE2NDM4NjQwMDYwMzgxNyAvKiBDU1NQYWludFdvcmtsZXRHbG9iYWxT
Y29wZS5oICovLAotCQkJCTRCNkI1Q0MzMjE2NDNBOEUwMDYwMzgxNyAvKiBDU1NQYWludFdvcmts
ZXRHbG9iYWxTY29wZS5pZGwgKi8sCiAJCQkJOTQxODI3OEMxRDhDQUU5NTAwNDkyNzY0IC8qIENT
U1BlbmRpbmdTdWJzdGl0dXRpb25WYWx1ZS5jcHAgKi8sCiAJCQkJOTQxODI3OEQxRDhDQUU5NTAw
NDkyNzY0IC8qIENTU1BlbmRpbmdTdWJzdGl0dXRpb25WYWx1ZS5oICovLAogCQkJCUE4MEU2Q0RC
MEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NQcmltaXRpdmVWYWx1ZS5jcHAgKi8sCkBAIC0yODA1NSw3
ICsyODA5Miw2IEBACiAJCQkJQTgwRTZEMDAwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1BhZ2VSdWxl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0QjVCREQ5QjIxNjU4QTE1MDBERDQyNjIgLyogQ1NTUGFp
bnRDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEI2RTg3NjkyMTc2RDY5MjAwNDIwRTVF
IC8qIENTU1BhaW50SW1hZ2VWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNEI2QjVDQzAyMTY0
Mzg2NDAwNjAzODE3IC8qIENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5NDZEMzcyRTFENkNCMjk0MDA3NzA4NEYgLyogQ1NTUGFyc2VyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFNEE3OTk1MjIwRUU0QjE0MDBDMTk1NjggLyogQ1NTUGFyc2VyQ29udGV4dC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTQ5Qzc3MDExRDZFMUQ5ODAwQzBERTRGIC8qIENTU1BhcnNl
ckZhc3RQYXRocy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTc1OCw2ICsyOTc5NCw3IEBACiAJCQkJ
RTFDMzYyRUYwRUFGMkFBOTAwNzQxMEJDIC8qIEpTV29ya2VyTG9jYXRpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCUUxMjcxQTU4MEVFRUNERTQwMEY2MTIxMyAvKiBKU1dvcmtlck5hdmlnYXRvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGMTc1MDYxRjM1OEJGNzAwQzc0OTUwIC8qIEpTV29ya2Vy
VHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNEJERUEzMkMyMTgwMzNFQjAwNTJERkNEIC8qIEpT
V29ya2xldEdsb2JhbFNjb3BlQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M0Qzk2REQxQUQ0
NDgzNTAwMzY1QTYwIC8qIEpTV3JpdGFibGVTdHJlYW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTgz
NThDQjcwMUM1MzI3NzUwMEUwQzJEOCAvKiBKU1hNTERvY3VtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzM0OEJENDBEQjdGODA0MDA0QUJBQjkgLyogSlNYTUxIdHRwUmVxdWVzdC5oIGluIEhl
YWRlcnMgKi8sCkBAIC0zMDE0NCw2ICszMDE4MSw3IEBACiAJCQkJMDg4NTA2N0YxMURBMDQ1QjAw
MTgyQjk4IC8qIFBhaW50SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg4NTA2ODAxMURBMDQ1
QjAwMTgyQjk4IC8qIFBhaW50UGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTRCMUUxM0VCMjE3
OTM3QjMwMDQyQ0Y5OCAvKiBQYWludFJlbmRlcmluZ0NvbnRleHQyRC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNEI2QjVDQzAyMTY0Mzg2NDAwNjAzODE3IC8qIFBhaW50V29ya2xldEdsb2JhbFNjb3Bl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODBFNkNGQjBBMTk4OUNBMDA3RkI4QzUgLyogUGFpci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwQTMxMkIwMjZGNzAwQzFBMzU5IC8qIFBhbm5lci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwMUExMkIwMjY3NjAwQzFBMzU5IC8qIFBhbm5lck5v
ZGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzE1NjIsNiArMzE2MDAsMTAgQEAKIAkJCQk5N0FBQkQy
RDE0RkEwOUQ1MDA3NDU3QUUgLyogV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCBp
biBIZWFkZXJzICovLAogCQkJCUE1NEEwQzY4MURCODA3RDkwMDE3QTkwQiAvKiBXb3JrZXJUb1Bh
Z2VGcm9udGVuZENoYW5uZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRjE3NEZFMUYzNTg5OTIw
MEM3NDk1MCAvKiBXb3JrZXJUeXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0QkRFQTMyMDIxN0VD
NTVGMDA1MkRGQ0QgLyogV29ya2xldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNEI3RjlDNTIyMTgz
QjVFNTAwMUNFQkEwIC8qIFdvcmtsZXRDb25zb2xlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk0QkRFQTMyNTIxN0ZFMkU0MDA1MkRGQ0QgLyogV29ya2xldEdsb2JhbFNjb3BlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk0QkRFQTMyODIxODAwM0Y3MDA1MkRGQ0QgLyogV29ya2xldFNjcmlwdENv
bnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTI0MDk5RTY0OTIwMDU2RTU4MSAv
KiBXcmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQx
NkU2RkU5MUJCRDEyRTUwMDBBNjA1MyAvKiBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MTZFNkZFODFCQkQxMkRGMDAwQTYwNTMgLyogV3JpdGFibGVTdHJlYW1J
bnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVD
dXN0b20uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOWZhMzQ1YTVlMzhmMzlm
M2MxZGVkY2Q1M2I2ZmEzNzM4NTUxM2I3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTMzICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiSlNDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgotCi0j
aWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCi0KLSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2lu
Y2x1ZGUgIkpTQ1NTUGFpbnRDYWxsYmFjay5oIgotI2luY2x1ZGUgIkpTRE9NQ29udmVydENhbGxi
YWNrcy5oIgotI2luY2x1ZGUgIkpTRE9NQ29udmVydFNlcXVlbmNlcy5oIgotI2luY2x1ZGUgPHd0
Zi9TZXRGb3JTY29wZS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci11c2luZyBuYW1lc3BhY2Ug
SlNDOwotCi1zdGF0aWMgSlNWYWx1ZSB0aHJvd0ludmFsaWRNb2RpZmljYXRpb25FcnJvcihFeGVj
U3RhdGUmIHN0YXRlLCBUaHJvd1Njb3BlJiBzY29wZSwgQVNDSUlMaXRlcmFsIG1lc3NhZ2UpCi17
Ci0gICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKLSAgICB0aHJvd0V4Y2VwdGlvbigmc3Rh
dGUsIHNjb3BlLCBjcmVhdGVET01FeGNlcHRpb24oJnN0YXRlLCBJbnZhbGlkTW9kaWZpY2F0aW9u
RXJyb3IsIG1lc3NhZ2UpKTsKLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQotdm9pZCBK
U0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihKU0M6
OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQotewotICAgIGZvciAoYXV0byYgcmVnaXN0ZXJlZCA6IHdy
YXBwZWQoKS5wYWludERlZmluaXRpb25NYXAoKS52YWx1ZXMoKSkKLSAgICAgICAgcmVnaXN0ZXJl
ZC0+cGFpbnRDYWxsYmFjay0+dmlzaXRKU0Z1bmN0aW9uKHZpc2l0b3IpOwotfQotCi0vLyBodHRw
czovL2RyYWZ0cy5jc3MtaG91ZGluaS5vcmcvY3NzLXBhaW50LWFwaS8jcmVnaXN0ZXJpbmctY3Vz
dG9tLXBhaW50Ci1KU1ZhbHVlIEpTQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVy
UGFpbnQoRXhlY1N0YXRlJiBzdGF0ZSkKLXsKLSAgICB1c2luZyBQYWludERlZmluaXRpb24gPSBD
U1NQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6UGFpbnREZWZpbml0aW9uOwotCi0gICAgQ1NTUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtsZXRHbG9iYWxTY29wZSA9IHdyYXBwZWQoKTsKLSAg
ICBWTSYgdm0gPSBzdGF0ZS52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKLQotICAgIGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAyKSkK
LSAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwotCi0gICAgQXRvbWljU3RyaW5nIG5hbWUoc3Rh
dGUudW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJpbmcoJnN0YXRlKS0+dG9BdG9taWNTdHJpbmco
JnN0YXRlKSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKLSAg
ICBKU1ZhbHVlIGNvbnN0cnVjdG9yVmFsdWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKTsK
LSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwotCi0gICAgaWYgKG5h
bWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29w
ZSwgIlRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IG5vdCBiZSB0aGUgZW1wdHkgc3RyaW5nIl9zKTsK
LQotICAgIGF1dG8mIHBhaW50RGVmaW5pdGlvbk1hcCA9IHdvcmtsZXRHbG9iYWxTY29wZS5wYWlu
dERlZmluaXRpb25NYXAoKTsKLQotICAgIGlmIChwYWludERlZmluaXRpb25NYXAuY29udGFpbnMo
bmFtZSkpCi0gICAgICAgIHJldHVybiB0aHJvd0ludmFsaWRNb2RpZmljYXRpb25FcnJvcihzdGF0
ZSwgc2NvcGUsICJUaGlzIG5hbWUgaGFzIGFscmVhZHkgYmVlbiByZWdpc3RlcmVkIl9zKTsKLQot
ICAgIFZlY3RvcjxTdHJpbmc+IGlucHV0UHJvcGVydGllczsKLQotICAgIEpTVmFsdWUgaW5wdXRQ
cm9wZXJ0aWVzSXRlcmFibGVWYWx1ZSA9IGNvbnN0cnVjdG9yVmFsdWUuZ2V0KCZzdGF0ZSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJpbnB1dFByb3BlcnRpZXMiKSk7Ci0gICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKLQotICAgIGlmICghaW5wdXRQcm9wZXJ0
aWVzSXRlcmFibGVWYWx1ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICBpbnB1dFByb3BlcnRpZXMg
PSBjb252ZXJ0PElETFNlcXVlbmNlPElETERPTVN0cmluZz4+KHN0YXRlLCBpbnB1dFByb3BlcnRp
ZXNJdGVyYWJsZVZhbHVlKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVl
KCkpOwotCi0gICAgLy8gRklYTUU6IFZhbGlkYXRlIGlucHV0IHByb3BlcnRpZXMgaGVyZSAoc3Rl
cCA3KS4KLQotICAgIFZlY3RvcjxTdHJpbmc+IGlucHV0QXJndW1lbnRzOwotCi0gICAgSlNWYWx1
ZSBpbnB1dEFyZ3VtZW50c0l0ZXJhYmxlVmFsdWUgPSBjb25zdHJ1Y3RvclZhbHVlLmdldCgmc3Rh
dGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiaW5wdXRBcmd1bWVudHMiKSk7Ci0gICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKLQotICAgIGlmICghaW5wdXRB
cmd1bWVudHNJdGVyYWJsZVZhbHVlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIGlucHV0QXJndW1l
bnRzID0gY29udmVydDxJRExTZXF1ZW5jZTxJRExET01TdHJpbmc+PihzdGF0ZSwgaW5wdXRBcmd1
bWVudHNJdGVyYWJsZVZhbHVlKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1Zh
bHVlKCkpOwotCi0gICAgLy8gRklYTUU6IFBhcnNlIHN5bnRheCBmb3IgaW5wdXRBcmd1bWVudHMg
aGVyZSAoc3RlcHMgMTEgYW5kIDEyKS4KLQotICAgIEpTVmFsdWUgY29udGV4dE9wdGlvbnNWYWx1
ZSA9IGNvbnN0cnVjdG9yVmFsdWUuZ2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygm
dm0sICJjb250ZXh0T3B0aW9ucyIpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBK
U1ZhbHVlKCkpOwotICAgIFVOVVNFRF9QQVJBTShjb250ZXh0T3B0aW9uc1ZhbHVlKTsKLQotICAg
IC8vIEZJWE1FOiBDb252ZXJ0IHRvIFBhaW50UmVuZGVyaW5nQ29udGV4dDJEU2V0dGluZ3MgaGVy
ZSAoc3RlcCAxNCkuCi0KLSAgICBpZiAoIWNvbnN0cnVjdG9yVmFsdWUuaXNDb25zdHJ1Y3Rvcih2
bSkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCAiVGhlIHNl
Y29uZCBhcmd1bWVudCBtdXN0IGJlIGEgY29uc3RydWN0b3IiX3MpOwotCi0gICAgSlNWYWx1ZSBw
cm90b3R5cGVWYWx1ZSA9IGNvbnN0cnVjdG9yVmFsdWUuZ2V0KCZzdGF0ZSwgdm0ucHJvcGVydHlO
YW1lcy0+cHJvdG90eXBlKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVl
KCkpOwotCi0gICAgaWYgKCFwcm90b3R5cGVWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgIlRoZSBzZWNvbmQgYXJndW1lbnQgbXVz
dCBoYXZlIGEgcHJvdG90eXBlIHRoYXQgaXMgYW4gb2JqZWN0Il9zKTsKLQotICAgIEpTVmFsdWUg
cGFpbnRWYWx1ZSA9IHByb3RvdHlwZVZhbHVlLmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoJnZtLCAicGFpbnQiKSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNW
YWx1ZSgpKTsKLQotICAgIGlmIChwYWludFZhbHVlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCAiVGhlIGNsYXNzIG11c3QgaGF2ZSBh
IHBhaW50IG1ldGhvZCJfcyk7Ci0KLSAgICBSZWZQdHI8SlNDU1NQYWludENhbGxiYWNrPiBwYWlu
dCA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU0NTU1BhaW50Q2FsbGJhY2s+PihzdGF0
ZSwgcGFpbnRWYWx1ZSwgKmdsb2JhbE9iamVjdCgpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBKU1ZhbHVlKCkpOwotCi0gICAgYXV0byBwYWludERlZmluaXRpb24gPSBzdGQ6OnVu
aXF1ZV9wdHI8UGFpbnREZWZpbml0aW9uPihuZXcgUGFpbnREZWZpbml0aW9uIHsgbmFtZSwgcGFp
bnQucmVsZWFzZU5vbk51bGwoKSwgaW5wdXRQcm9wZXJ0aWVzLCBpbnB1dEFyZ3VtZW50cyB9KTsK
LSAgICBwYWludERlZmluaXRpb25NYXAuYWRkKG5hbWUsIFdURk1vdmUocGFpbnREZWZpbml0aW9u
KSk7Ci0KLSAgICAvLyBGSVhNRTogY29uc3RydWN0IGRvY3VtZW50RGVmaW5pdGlvbiAoc3RlcCAy
MikuCi0KLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQotfQotI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKaW5kZXggZWJi
MmY2MWRkY2MzMjVhMDFkYzUyNGIyYjUyZWI4YjExNDE0MzA1OC4uN2RkYTI1ODZlZjdiMzVjNzU2
YjFiMDIzOWYxYzFmNzYxNmRlMzExMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkpT
UmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmgiCiAjaW5jbHVkZSAiSlNSZW1vdGVE
T01XaW5kb3cuaCIKICNpbmNsdWRlICJKU1dvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAi
SlNXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJSZWplY3RlZFByb21pc2VUcmFja2Vy
LmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlN0cnVj
dHVyZWRDbG9uZS5oIgpAQCAtMTk0LDYgKzE5NSwxMCBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBKU0RPTUdsb2JhbE9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIGlmIChpbmhlcml0czxKU1dvcmtlckdsb2JhbFNjb3Bl
QmFzZT4odm0oKSkpCiAgICAgICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgSlNXb3JrZXJHbG9iYWxT
Y29wZUJhc2UqPih0aGlzKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworI2lmIEVOQUJMRShD
U1NfUEFJTlRJTkdfQVBJKQorICAgIGlmIChpbmhlcml0czxKU1dvcmtsZXRHbG9iYWxTY29wZUJh
c2U+KHZtKCkpKQorICAgICAgICByZXR1cm4ganNDYXN0PGNvbnN0IEpTV29ya2xldEdsb2JhbFNj
b3BlQmFzZSo+KHRoaXMpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisjZW5kaWYKICAgICBk
YXRhTG9nKCJVbmV4cGVjdGVkIGdsb2JhbCBvYmplY3Q6ICIsIEpTVmFsdWUodGhpcyksICJcbiIp
OwogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BhaW50V29ya2xldEds
b2JhbFNjb3BlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhOGY4YWJjMTkwYzA0MjQ0
Yjg3MTg0NTRhOWM2NTg0ZjkyNmRhNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcApAQCAtMCww
ICsxLDEzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
LmgiCisKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKworI2luY2x1ZGUgIkRvY3VtZW50
LmgiCisjaW5jbHVkZSAiSlNDU1NQYWludENhbGxiYWNrLmgiCisjaW5jbHVkZSAiSlNET01Db252
ZXJ0Q2FsbGJhY2tzLmgiCisjaW5jbHVkZSAiSlNET01Db252ZXJ0U2VxdWVuY2VzLmgiCisjaW5j
bHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5h
bWVzcGFjZSBKU0M7CisKK3N0YXRpYyBKU1ZhbHVlIHRocm93SW52YWxpZE1vZGlmaWNhdGlvbkVy
cm9yKEV4ZWNTdGF0ZSYgc3RhdGUsIFRocm93U2NvcGUmIHNjb3BlLCBBU0NJSUxpdGVyYWwgbWVz
c2FnZSkKK3sKKyAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOworICAgIHRocm93RXhjZXB0
aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZURPTUV4Y2VwdGlvbigmc3RhdGUsIEludmFsaWRNb2Rp
ZmljYXRpb25FcnJvciwgbWVzc2FnZSkpOworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQor
Cit2b2lkIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVu
KEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgZm9yIChhdXRvJiByZWdpc3RlcmVk
IDogd3JhcHBlZCgpLnBhaW50RGVmaW5pdGlvbk1hcCgpLnZhbHVlcygpKQorICAgICAgICByZWdp
c3RlcmVkLT5wYWludENhbGxiYWNrLT52aXNpdEpTRnVuY3Rpb24odmlzaXRvcik7Cit9CisKKy8v
IGh0dHBzOi8vZHJhZnRzLmNzcy1ob3VkaW5pLm9yZy9jc3MtcGFpbnQtYXBpLyNyZWdpc3Rlcmlu
Zy1jdXN0b20tcGFpbnQKK0pTVmFsdWUgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6cmVnaXN0
ZXJQYWludChFeGVjU3RhdGUmIHN0YXRlKQoreworICAgIHVzaW5nIFBhaW50RGVmaW5pdGlvbiA9
IFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb247CisKKyAgICBQYWludFdv
cmtsZXRHbG9iYWxTY29wZSYgd29ya2xldEdsb2JhbFNjb3BlID0gd3JhcHBlZCgpOworICAgIFZN
JiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDIpKQorICAg
ICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisKKyAgICBBdG9taWNTdHJpbmcgbmFtZShzdGF0ZS51
bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT50b0F0b21pY1N0cmluZygmc3Rh
dGUpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOworICAgIEpT
VmFsdWUgY29uc3RydWN0b3JWYWx1ZSA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CisKKyAgICBpZiAobmFtZS5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCAi
VGhlIGZpcnN0IGFyZ3VtZW50IG11c3Qgbm90IGJlIHRoZSBlbXB0eSBzdHJpbmciX3MpOworCisg
ICAgYXV0byYgcGFpbnREZWZpbml0aW9uTWFwID0gd29ya2xldEdsb2JhbFNjb3BlLnBhaW50RGVm
aW5pdGlvbk1hcCgpOworCisgICAgaWYgKHBhaW50RGVmaW5pdGlvbk1hcC5jb250YWlucyhuYW1l
KSkKKyAgICAgICAgcmV0dXJuIHRocm93SW52YWxpZE1vZGlmaWNhdGlvbkVycm9yKHN0YXRlLCBz
Y29wZSwgIlRoaXMgbmFtZSBoYXMgYWxyZWFkeSBiZWVuIHJlZ2lzdGVyZWQiX3MpOworCisgICAg
VmVjdG9yPFN0cmluZz4gaW5wdXRQcm9wZXJ0aWVzOworCisgICAgSlNWYWx1ZSBpbnB1dFByb3Bl
cnRpZXNJdGVyYWJsZVZhbHVlID0gY29uc3RydWN0b3JWYWx1ZS5nZXQoJnN0YXRlLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZ2bSwgImlucHV0UHJvcGVydGllcyIpKTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOworCisgICAgaWYgKCFpbnB1dFByb3BlcnRpZXNJ
dGVyYWJsZVZhbHVlLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIGlucHV0UHJvcGVydGllcyA9IGNv
bnZlcnQ8SURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj4oc3RhdGUsIGlucHV0UHJvcGVydGllc0l0
ZXJhYmxlVmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7
CisKKyAgICAvLyBGSVhNRTogVmFsaWRhdGUgaW5wdXQgcHJvcGVydGllcyBoZXJlIChzdGVwIDcp
LgorCisgICAgVmVjdG9yPFN0cmluZz4gaW5wdXRBcmd1bWVudHM7CisKKyAgICBKU1ZhbHVlIGlu
cHV0QXJndW1lbnRzSXRlcmFibGVWYWx1ZSA9IGNvbnN0cnVjdG9yVmFsdWUuZ2V0KCZzdGF0ZSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJpbnB1dEFyZ3VtZW50cyIpKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOworCisgICAgaWYgKCFpbnB1dEFyZ3Vt
ZW50c0l0ZXJhYmxlVmFsdWUuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgaW5wdXRBcmd1bWVudHMg
PSBjb252ZXJ0PElETFNlcXVlbmNlPElETERPTVN0cmluZz4+KHN0YXRlLCBpbnB1dEFyZ3VtZW50
c0l0ZXJhYmxlVmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUo
KSk7CisKKyAgICAvLyBGSVhNRTogUGFyc2Ugc3ludGF4IGZvciBpbnB1dEFyZ3VtZW50cyBoZXJl
IChzdGVwcyAxMSBhbmQgMTIpLgorCisgICAgSlNWYWx1ZSBjb250ZXh0T3B0aW9uc1ZhbHVlID0g
Y29uc3RydWN0b3JWYWx1ZS5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwg
ImNvbnRleHRPcHRpb25zIikpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFs
dWUoKSk7CisgICAgVU5VU0VEX1BBUkFNKGNvbnRleHRPcHRpb25zVmFsdWUpOworCisgICAgLy8g
RklYTUU6IENvbnZlcnQgdG8gUGFpbnRSZW5kZXJpbmdDb250ZXh0MkRTZXR0aW5ncyBoZXJlIChz
dGVwIDE0KS4KKworICAgIGlmICghY29uc3RydWN0b3JWYWx1ZS5pc0NvbnN0cnVjdG9yKHZtKSkK
KyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsICJUaGUgc2Vjb25k
IGFyZ3VtZW50IG11c3QgYmUgYSBjb25zdHJ1Y3RvciJfcyk7CisKKyAgICBKU1ZhbHVlIHByb3Rv
dHlwZVZhbHVlID0gY29uc3RydWN0b3JWYWx1ZS5nZXQoJnN0YXRlLCB2bS5wcm9wZXJ0eU5hbWVz
LT5wcm90b3R5cGUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7
CisKKyAgICBpZiAoIXByb3RvdHlwZVZhbHVlLmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCAiVGhlIHNlY29uZCBhcmd1bWVudCBtdXN0IGhh
dmUgYSBwcm90b3R5cGUgdGhhdCBpcyBhbiBvYmplY3QiX3MpOworCisgICAgSlNWYWx1ZSBwYWlu
dFZhbHVlID0gcHJvdG90eXBlVmFsdWUuZ2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zygmdm0sICJwYWludCIpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVl
KCkpOworCisgICAgaWYgKHBhaW50VmFsdWUuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsICJUaGUgY2xhc3MgbXVzdCBoYXZlIGEgcGFp
bnQgbWV0aG9kIl9zKTsKKworICAgIFJlZlB0cjxKU0NTU1BhaW50Q2FsbGJhY2s+IHBhaW50ID0g
Y29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTQ1NTUGFpbnRDYWxsYmFjaz4+KHN0YXRlLCBw
YWludFZhbHVlLCAqZ2xvYmFsT2JqZWN0KCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIEpTVmFsdWUoKSk7CisKKyAgICBhdXRvIHBhaW50RGVmaW5pdGlvbiA9IHN0ZDo6dW5pcXVl
X3B0cjxQYWludERlZmluaXRpb24+KG5ldyBQYWludERlZmluaXRpb24geyBuYW1lLCBwYWludC5y
ZWxlYXNlTm9uTnVsbCgpLCBpbnB1dFByb3BlcnRpZXMsIGlucHV0QXJndW1lbnRzIH0pOworICAg
IHBhaW50RGVmaW5pdGlvbk1hcC5hZGQobmFtZSwgV1RGTW92ZShwYWludERlZmluaXRpb24pKTsK
KworICAgIC8vIEZJWE1FOiBjb25zdHJ1Y3QgZG9jdW1lbnREZWZpbml0aW9uIChzdGVwIDIyKS4K
KworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCit9CisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQxNTMyMjBmZDk1YmVlNTEyNjM3NjA2YzVkNWZkMzQyYzA1MGNkZGMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9i
YWxTY29wZUJhc2UuY3BwCkBAIC0wLDAgKzEsMTUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuaCIKKworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdf
QVBJKQorCisjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCisjaW5jbHVkZSAiSlNET01HbG9i
YWxPYmplY3RUYXNrLmgiCisjaW5jbHVkZSAiSlNXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNs
dWRlICJXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrbGV0U2NyaXB0Q29udHJv
bGxlci5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0NKU1ZhbHVlSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9MYW5n
dWFnZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisK
K2NvbnN0IENsYXNzSW5mbyBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnNfaW5mbyA9IHsgIldv
cmtsZXRHbG9iYWxTY29wZSIsICZKU0RPTUdsb2JhbE9iamVjdDo6c19pbmZvLCBudWxscHRyLCBu
dWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZSkgfTsK
KworY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNl
OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geworICAgICZzdXBwb3J0c1JpY2hTb3VyY2VJ
bmZvLAorICAgICZzaG91bGRJbnRlcnJ1cHRTY3JpcHQsCisgICAgJmphdmFTY3JpcHRSdW50aW1l
RmxhZ3MsCisgICAgbnVsbHB0ciwgLy8gcXVldWVUYXNrVG9FdmVudExvb3AKKyAgICAmc2hvdWxk
SW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dCwKKyAgICBudWxscHRyLCAvLyBtb2R1bGVMb2Fk
ZXJJbXBvcnRNb2R1bGUKKyAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJSZXNvbHZlCisgICAg
bnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVyRmV0Y2gKKyAgICBudWxscHRyLCAvLyBtb2R1bGVMb2Fk
ZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcworICAgIG51bGxwdHIsIC8vIG1vZHVsZUxvYWRl
ckV2YWx1YXRlCisgICAgJnByb21pc2VSZWplY3Rpb25UcmFja2VyLAorICAgICZkZWZhdWx0TGFu
Z3VhZ2UsCisgICAgbnVsbHB0ciwgLy8gY29tcGlsZVN0cmVhbWluZworICAgIG51bGxwdHIsIC8v
IGluc3RhbnRpYXRlU3RyZWFtaW5nCit9OworCitKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OkpT
V29ya2xldEdsb2JhbFNjb3BlQmFzZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgUmVmUHRyPFdvcmtsZXRHbG9iYWxTY29wZT4mJiBpbXBsKQorICAgIDogSlNET01HbG9i
YWxPYmplY3Qodm0sIHN0cnVjdHVyZSwgbm9ybWFsV29ybGQodm0pLCAmc19nbG9iYWxPYmplY3RN
ZXRob2RUYWJsZSkKKyAgICAsIG1fd3JhcHBlZChXVEZNb3ZlKGltcGwpKQoreworfQorCit2b2lk
IEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1Byb3h5
KiBwcm94eSkKK3sKKyAgICBtX3Byb3h5LnNldCh2bSwgdGhpcywgcHJveHkpOworCisgICAgQmFz
ZTo6ZmluaXNoQ3JlYXRpb24odm0sIG1fcHJveHkuZ2V0KCkpOworICAgIEFTU0VSVChpbmhlcml0
cyh2bSwgaW5mbygpKSk7Cit9CisKK3ZvaWQgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpjbGVh
ckRPTUd1YXJkZWRPYmplY3RzKCkKK3sKKyAgICBhdXRvIGd1YXJkZWRPYmplY3RzID0gbV9ndWFy
ZGVkT2JqZWN0czsKKyAgICBmb3IgKGF1dG8mIGd1YXJkZWQgOiBndWFyZGVkT2JqZWN0cykKKyAg
ICAgICAgZ3VhcmRlZC0+Y2xlYXIoKTsKK30KKwordm9pZCBKU1dvcmtsZXRHbG9iYWxTY29wZUJh
c2U6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sK
KyAgICBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNXb3Jr
bGV0R2xvYmFsU2NvcGVCYXNlKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVj
dCwgdmlzaXRvcik7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9wcm94eSk7Cit9
CisKK3ZvaWQgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkK
K3sKKyAgICBzdGF0aWNfY2FzdDxKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UqPihjZWxsKS0+SlNX
b3JrbGV0R2xvYmFsU2NvcGVCYXNlOjp+SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlKCk7Cit9CisK
K1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd3JhcHBlZC5nZXQoKTsK
K30KKworYm9vbCBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnN1cHBvcnRzUmljaFNvdXJjZUlu
Zm8oY29uc3QgSlNHbG9iYWxPYmplY3QqIG9iamVjdCkKK3sKKyAgICByZXR1cm4gSlNHbG9iYWxP
YmplY3Q6OnN1cHBvcnRzUmljaFNvdXJjZUluZm8ob2JqZWN0KTsKK30KKworYm9vbCBKU1dvcmts
ZXRHbG9iYWxTY29wZUJhc2U6OnNob3VsZEludGVycnVwdFNjcmlwdChjb25zdCBKU0dsb2JhbE9i
amVjdCogb2JqZWN0KQoreworICAgIHJldHVybiBKU0dsb2JhbE9iamVjdDo6c2hvdWxkSW50ZXJy
dXB0U2NyaXB0KG9iamVjdCk7Cit9CisKK2Jvb2wgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpz
aG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0KGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBv
YmplY3QpCit7CisgICAgcmV0dXJuIEpTR2xvYmFsT2JqZWN0OjpzaG91bGRJbnRlcnJ1cHRTY3Jp
cHRCZWZvcmVUaW1lb3V0KG9iamVjdCk7Cit9CisKK1J1bnRpbWVGbGFncyBKU1dvcmtsZXRHbG9i
YWxTY29wZUJhc2U6OmphdmFTY3JpcHRSdW50aW1lRmxhZ3MoY29uc3QgSlNHbG9iYWxPYmplY3Qq
IG9iamVjdCkKK3sKKyAgICBjb25zdCBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8Y29uc3QgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlKj4ob2JqZWN0KTsKKyAg
ICByZXR1cm4gdGhpc09iamVjdC0+bV93cmFwcGVkLT5qc1J1bnRpbWVGbGFncygpOworfQorCitK
U1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCosIFdvcmtsZXRH
bG9iYWxTY29wZSYgd29ya2xldEdsb2JhbFNjb3BlKQoreworICAgIHJldHVybiB0b0pTKGV4ZWMs
IHdvcmtsZXRHbG9iYWxTY29wZSk7Cit9CisKK0pTVmFsdWUgdG9KUyhFeGVjU3RhdGUqLCBXb3Jr
bGV0R2xvYmFsU2NvcGUmIHdvcmtsZXRHbG9iYWxTY29wZSkKK3sKKyAgICBXb3JrbGV0U2NyaXB0
Q29udHJvbGxlciogc2NyaXB0ID0gd29ya2xldEdsb2JhbFNjb3BlLnNjcmlwdCgpOworICAgIGlm
ICghc2NyaXB0KQorICAgICAgICByZXR1cm4ganNOdWxsKCk7CisgICAgSlNXb3JrbGV0R2xvYmFs
U2NvcGUqIGNvbnRleHRXcmFwcGVyID0gc2NyaXB0LT53b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVy
KCk7CisgICAgQVNTRVJUKGNvbnRleHRXcmFwcGVyKTsKKyAgICByZXR1cm4gY29udGV4dFdyYXBw
ZXItPnByb3h5KCk7Cit9CisKK0pTV29ya2xldEdsb2JhbFNjb3BlKiB0b0pTV29ya2xldEdsb2Jh
bFNjb3BlKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpZiAoIXZhbHVlLmlzT2JqZWN0
KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJ
bmZvID0gYXNPYmplY3QodmFsdWUpLT5jbGFzc0luZm8odm0pOworCisgICAgaWYgKGNsYXNzSW5m
byA9PSBKU1Byb3h5OjppbmZvKCkpCisgICAgICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTV29y
a2xldEdsb2JhbFNjb3BlKj4odm0sIGpzQ2FzdDxKU1Byb3h5Kj4oYXNPYmplY3QodmFsdWUpKS0+
dGFyZ2V0KCkpOworCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
b3JrbGV0R2xvYmFsU2NvcGVCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dv
cmtsZXRHbG9iYWxTY29wZUJhc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNTU4MjdiOThkM2RjYmNlNjQ1ZWJl
YzU2ODM1YjBkMzEzMmRhNzMwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmgKQEAgLTAsMCArMSw4NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorCisjaW5jbHVkZSAiSlNET01HbG9i
YWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0RPTVdyYXBwZXIuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBKU1dvcmtsZXRHbG9iYWxTY29wZTsKK2NsYXNzIFdvcmtsZXRHbG9iYWxT
Y29wZTsKKworY2xhc3MgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlIDogcHVibGljIEpTRE9NR2xv
YmFsT2JqZWN0IHsKKyAgICB0eXBlZGVmIEpTRE9NR2xvYmFsT2JqZWN0IEJhc2U7CitwdWJsaWM6
CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOworCisgICAgREVDTEFSRV9J
TkZPOworCisgICAgV29ya2xldEdsb2JhbFNjb3BlJiB3cmFwcGVkKCkgY29uc3QgeyByZXR1cm4g
Km1fd3JhcHBlZDsgfQorICAgIEpTQzo6SlNQcm94eSogcHJveHkoKSBjb25zdCB7IEFTU0VSVCht
X3Byb3h5KTsgcmV0dXJuIG1fcHJveHkuZ2V0KCk7IH0KKyAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CisKKyAgICBzdGF0aWMgSlNDOjpT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBKU0M6OlR5cGVJbmZvKEpTQzo6R2xvYmFsT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCkpOworICAgIH0KKworICAgIHN0YXRpYyBjb25zdCBKU0M6Okdsb2JhbE9iamVjdE1ldGhv
ZFRhYmxlIHNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGU7CisKKyAgICBzdGF0aWMgYm9vbCBzdXBw
b3J0c1JpY2hTb3VyY2VJbmZvKGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0
aWMgYm9vbCBzaG91bGRJbnRlcnJ1cHRTY3JpcHQoY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCop
OworICAgIHN0YXRpYyBib29sIHNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQoY29u
c3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHN0YXRpYyBKU0M6OlJ1bnRpbWVGbGFncyBq
YXZhU2NyaXB0UnVudGltZUZsYWdzKGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBz
dGF0aWMgdm9pZCBxdWV1ZVRhc2tUb0V2ZW50TG9vcChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgUmVm
PEpTQzo6TWljcm90YXNrPiYmKTsKKworICAgIHZvaWQgY2xlYXJET01HdWFyZGVkT2JqZWN0cygp
OworCitwcm90ZWN0ZWQ6CisgICAgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlKEpTQzo6Vk0mLCBK
U0M6OlN0cnVjdHVyZSosIFJlZlB0cjxXb3JrbGV0R2xvYmFsU2NvcGU+JiYpOworICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYsIEpTQzo6SlNQcm94eSopOworCisgICAgc3RhdGljIHZv
aWQgdmlzaXRDaGlsZHJlbihKU0M6OkpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKTsKKworcHJp
dmF0ZToKKyAgICBSZWZQdHI8V29ya2xldEdsb2JhbFNjb3BlPiBtX3dyYXBwZWQ7CisgICAgSlND
OjpXcml0ZUJhcnJpZXI8SlNDOjpKU1Byb3h5PiBtX3Byb3h5OworfTsKKworLy8gUmV0dXJucyBh
IEpTV29ya2xldEdsb2JhbFNjb3BlIG9yIGpzTnVsbCgpCisvLyBBbHdheXMgaWdub3JlcyB0aGUg
ZXhlY1N0YXRlIGFuZCBwYXNzZWQgZ2xvYmFsT2JqZWN0LCBXb3JrbGV0R2xvYmFsU2NvcGUgaXMg
aXRzZWxmIGEgZ2xvYmFsT2JqZWN0IGFuZCB3aWxsIGFsd2F5cyB1c2UgaXRzIG93biBwcm90b3R5
cGUgY2hhaW4uCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFs
T2JqZWN0KiwgV29ya2xldEdsb2JhbFNjb3BlJik7CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMo
SlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFdv
cmtsZXRHbG9iYWxTY29wZSogc2NvcGUpIHsgcmV0dXJuIHNjb3BlID8gdG9KUyhleGVjLCBnbG9i
YWxPYmplY3QsICpzY29wZSkgOiBKU0M6OmpzTnVsbCgpOyB9CitKU0M6OkpTVmFsdWUgdG9KUyhK
U0M6OkV4ZWNTdGF0ZSosIFdvcmtsZXRHbG9iYWxTY29wZSYpOworaW5saW5lIEpTQzo6SlNWYWx1
ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBXb3JrbGV0R2xvYmFsU2NvcGUqIHNjb3BlKSB7
IHJldHVybiBzY29wZSA/IHRvSlMoZXhlYywgKnNjb3BlKSA6IEpTQzo6anNOdWxsKCk7IH0KKwor
SlNXb3JrbGV0R2xvYmFsU2NvcGUqIHRvSlNXb3JrbGV0R2xvYmFsU2NvcGUoSlNDOjpWTSYsIEpT
Qzo6SlNWYWx1ZSk7Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcAppbmRleCBlZWU4MzljYzQyNjRmYmU0YTI5
ZGZiOTkxYjVmZGU1MGQ2MGJhYjFjLi5hMWJhMTQ1MjgzNGQ4Y2EzY2U2YWY0NzcxMWU5NzBiMzg4
Y2MxYjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwCkBA
IC0zNSwxMSArMzUsMTQgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkpTRE9NV2lu
ZG93QmFzZS5oIgogI2luY2x1ZGUgIkpTV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJK
U1dvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIldvcmtlckdsb2Jh
bFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUg
IldvcmtsZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtsZXRTY3JpcHRDb250cm9sbGVy
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ2FsbEZyYW1lLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNHbG9iYWxPYmplY3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9T
dHJvbmdJbmxpbmVzLmg+CkBAIC05NSw5ICs5OCwxNiBAQCBKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0
YXRlRnJvbVBhZ2UoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgUGFnZSogcGFnZSkKICAgICByZXR1
cm4gcGFnZSA/IHBhZ2UtPm1haW5GcmFtZSgpLnNjcmlwdCgpLmdsb2JhbE9iamVjdCh3b3JsZCkt
Pmdsb2JhbEV4ZWMoKSA6IG51bGxwdHI7CiB9CiAKLUpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGVG
cm9tV29ya2VyR2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlckdsb2JhbFNjb3Bl
KQorSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZShXb3JrZXJH
bG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCiB7Ci0gICAgcmV0dXJuIHdvcmtlckdsb2Jh
bFNjb3BlLT5zY3JpcHQoKS0+d29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKCktPmdsb2JhbEV4ZWMo
KTsKKyAgICByZXR1cm4gd29ya2VyR2xvYmFsU2NvcGUuc2NyaXB0KCktPndvcmtlckdsb2JhbFNj
b3BlV3JhcHBlcigpLT5nbG9iYWxFeGVjKCk7CiB9CiAKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5H
X0FQSSkKK0pTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tV29ya2xldEdsb2JhbFNjb3BlKFdv
cmtsZXRHbG9iYWxTY29wZSYgd29ya2xldEdsb2JhbFNjb3BlKQoreworICAgIHJldHVybiB3b3Jr
bGV0R2xvYmFsU2NvcGUuc2NyaXB0KCktPndvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIoKS0+Z2xv
YmFsRXhlYygpOworfQorI2VuZGlmCisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdFN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRTdGF0ZS5oCmluZGV4IDc0NDIxZmQ5NWJhMTc3NTZlYjg5YzAwNDI2YzMzZmI1NDU0OTgzOTAu
LjE1Mzg0YTcxMWYzNTZjZWU0NzhjYTk5ZTI1NTViMWVlYTI0ODJhZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaApAQCAtNDQsNiArNDQsOSBAQCBjbGFzcyBOb2Rl
OwogY2xhc3MgUGFnZTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBXb3Jr
ZXJHbG9iYWxTY29wZTsKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKK2NsYXNzIFdvcmts
ZXRHbG9iYWxTY29wZTsKKyNlbmRpZgogCiBET01XaW5kb3cqIGRvbVdpbmRvd0Zyb21FeGVjU3Rh
dGUoSlNDOjpFeGVjU3RhdGUqKTsKIEZyYW1lKiBmcmFtZUZyb21FeGVjU3RhdGUoSlNDOjpFeGVj
U3RhdGUqKTsKQEAgLTUzLDYgKzU2LDkgQEAgSlNDOjpFeGVjU3RhdGUqIG1haW5Xb3JsZEV4ZWNT
dGF0ZShGcmFtZSopOwogCiBKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbU5vZGUoRE9NV3Jh
cHBlcldvcmxkJiwgTm9kZSopOwogV0VCQ09SRV9FWFBPUlQgSlNDOjpFeGVjU3RhdGUqIGV4ZWNT
dGF0ZUZyb21QYWdlKERPTVdyYXBwZXJXb3JsZCYsIFBhZ2UqKTsKLUpTQzo6RXhlY1N0YXRlKiBl
eGVjU3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUqKTsKK0pTQzo6
RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2Nv
cGUmKTsKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKK0pTQzo6RXhlY1N0YXRlKiBleGVj
U3RhdGVGcm9tV29ya2xldEdsb2JhbFNjb3BlKFdvcmtsZXRHbG9iYWxTY29wZSYpOworI2VuZGlm
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAppbmRleCAxYzkzODU5ZWNjMTY4NzRjMGMwN2UzNzNi
Mjk3M2M0MjUwNWRlYTgwLi4yOTJmZDk3OTI0NDlkMzc3ZDI3NWMyODI0YmUxNTJkY2E2ZmQ2OTFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5h
bWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1l
cy5oCkBAIC01MSw3ICs1MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhDcmVk
ZW50aWFsKSBcCiAgICAgbWFjcm8oQ3JlZGVudGlhbHNDb250YWluZXIpIFwKICAgICBtYWNybyhD
U1NBbmltYXRpb24pIFwKLSAgICBtYWNybyhDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSkgXAog
ICAgIG1hY3JvKENTU1RyYW5zaXRpb24pIFwKICAgICBtYWNybyhDdXN0b21FbGVtZW50UmVnaXN0
cnkpIFwKICAgICBtYWNybyhEYXRhYmFzZSkgXApAQCAtMTIzLDYgKzEyMiw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBtYWNybyhTUUxSZXN1bHRTZXQpIFwKICAgICBtYWNybyhTUUxSZXN1
bHRTZXRSb3dMaXN0KSBcCiAgICAgbWFjcm8oU1FMVHJhbnNhY3Rpb24pIFwKKyAgICBtYWNybyhQ
YWludFdvcmtsZXRHbG9iYWxTY29wZSkgXAogICAgIG1hY3JvKFBlcmZvcm1hbmNlRW50cnkpIFwK
ICAgICBtYWNybyhQZXJmb3JtYW5jZUVudHJ5TGlzdCkgXAogICAgIG1hY3JvKFBlcmZvcm1hbmNl
TWFyaykgXApAQCAtMjEwLDYgKzIxMCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNy
byhXZWJLaXRNZWRpYUtleXMpIFwKICAgICBtYWNybyhXZWJTb2NrZXQpIFwKICAgICBtYWNybyhX
aW5kb3dDbGllbnQpIFwKKyAgICBtYWNybyhXb3JrbGV0KSBcCisgICAgbWFjcm8oV29ya2xldEds
b2JhbFNjb3BlKSBcCiAgICAgbWFjcm8oV3JpdGFibGVTdHJlYW0pIFwKICAgICBtYWNybyhYTUxI
dHRwUmVxdWVzdCkgXAogICAgIG1hY3JvKGFwcGVuZEZyb21KUykgXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCA0OGZjZTdi
YzE2YTg4MGQ2M2Y0MzJhMDE4ZjFmZWUyZjY3YmY1YmRjLi45YmRkZGVkMzAxNjcxZmI0NDc5NWIz
MzJlZmZlMTJlYTAzNWE4MzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtNDk3LDcgKzQ5Nyw3IEBAIHN1YiBHZXRDdXN0
b21Jc1JlYWNoYWJsZQogc3ViIElzRE9NR2xvYmFsT2JqZWN0CiB7CiAgICAgbXkgJGludGVyZmFj
ZSA9IHNoaWZ0OwotICAgIHJldHVybiAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIGVxICJET01XaW5k
b3ciIHx8ICRpbnRlcmZhY2UtPnR5cGUtPm5hbWUgZXEgIlJlbW90ZURPTVdpbmRvdyIgfHwgJGNv
ZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrZXJHbG9iYWxT
Y29wZSIpIHx8ICRpbnRlcmZhY2UtPnR5cGUtPm5hbWUgZXEgIlRlc3RHbG9iYWxPYmplY3QiOwor
ICAgIHJldHVybiAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIGVxICJET01XaW5kb3ciIHx8ICRpbnRl
cmZhY2UtPnR5cGUtPm5hbWUgZXEgIlJlbW90ZURPTVdpbmRvdyIgfHwgJGNvZGVHZW5lcmF0b3It
PkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrZXJHbG9iYWxTY29wZSIpIHx8ICRj
b2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiV29ya2xldEdsb2Jh
bFNjb3BlIikgfHwgJGludGVyZmFjZS0+dHlwZS0+bmFtZSBlcSAiVGVzdEdsb2JhbE9iamVjdCI7
CiB9CiAKIHN1YiBTaG91bGRVc2VHbG9iYWxPYmplY3RQcm90b3R5cGUKQEAgLTUwNiw2ICs1MDYs
NyBAQCBzdWIgU2hvdWxkVXNlR2xvYmFsT2JqZWN0UHJvdG90eXBlCiAKICAgICAjIEZvciB3b3Jr
ZXJzLCB0aGUgZ2xvYmFsIG9iamVjdCBpcyBhIERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLgog
ICAgIHJldHVybiAwIGlmICRpbnRlcmZhY2UtPnR5cGUtPm5hbWUgZXEgIldvcmtlckdsb2JhbFNj
b3BlIjsKKyAgICByZXR1cm4gMCBpZiAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIGVxICJXb3JrbGV0
R2xvYmFsU2NvcGUiOwogCiAgICAgcmV0dXJuIElzRE9NR2xvYmFsT2JqZWN0KCRpbnRlcmZhY2Up
OwogfQpAQCAtMjUzNyw3ICsyNTM4LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0sIHByb3h5
KTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICByZXR1cm4gcHRy
O1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgfVxuXG4iKTsKLSAgICB9
IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldv
cmtlckdsb2JhbFNjb3BlIikpIHsKKyAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SW5oZXJp
dHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldvcmtlckdsb2JhbFNjb3BlIikgfHwgJGNvZGVHZW5l
cmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrbGV0R2xvYmFsU2NvcGUi
KSkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyAkY2xhc3NOYW1l
KiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZjwkaW1w
bFR5cGU+JiYgaW1wbCwgSlNDOjpKU1Byb3h5KiBwcm94eSlcbiIpOwogICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgIHtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
ICAgICAgICAkY2xhc3NOYW1lKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxs
PCRjbGFzc05hbWU+KHZtLmhlYXApKSAke2NsYXNzTmFtZX0odm0sIHN0cnVjdHVyZSwgV1RGTW92
ZShpbXBsKSk7XG4iKTsKQEAgLTI4NDUsNyArMjg0Niw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgog
ICAgICMgQ29uc3RydWN0b3IKICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIg
fHwgJGludGVyZmFjZU5hbWUgZXEgIlJlbW90ZURPTVdpbmRvdyIpIHsKICAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICAkY2xhc3NOYW1lKEpTQzo6Vk0mLCBKU0M6OlN0cnVjdHVyZSos
IFJlZjwkaW1wbFR5cGU+JiYsIEpTV2luZG93UHJveHkqKTtcbiIpOwotICAgIH0gZWxzaWYgKCRj
b2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiV29ya2VyR2xvYmFs
U2NvcGUiKSkgeworICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFj
ZSgkaW50ZXJmYWNlLCAiV29ya2VyR2xvYmFsU2NvcGUiKSB8fCAkY29kZUdlbmVyYXRvci0+SW5o
ZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldvcmtsZXRHbG9iYWxTY29wZSIpKSB7CiAgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgJGNsYXNzTmFtZShKU0M6OlZNJiwgSlNDOjpT
dHJ1Y3R1cmUqLCBSZWY8JGltcGxUeXBlPiYmKTtcbiIpOwogICAgIH0gZWxzaWYgKCFOZWVkc0lt
cGxlbWVudGF0aW9uQ2xhc3MoJGludGVyZmFjZSkpIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICAkY2xhc3NOYW1lKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3Qm
KTtcblxuIik7CkBAIC0yODU1LDcgKzI4NTYsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAg
IGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IiB8fCAkaW50ZXJmYWNlTmFtZSBlcSAi
UmVtb3RlRE9NV2luZG93IikgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYsIEpTV2luZG93UHJveHkqKTtcbiIpOwotICAgIH0g
ZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiV29y
a2VyR2xvYmFsU2NvcGUiKSkgeworICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0
c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiV29ya2VyR2xvYmFsU2NvcGUiKSB8fCAkY29kZUdlbmVy
YXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldvcmtsZXRHbG9iYWxTY29wZSIp
KSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihKU0M6OlZNJiwgSlNDOjpKU1Byb3h5Kik7XG4iKTsKICAgICB9IGVsc2UgewogICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpO1xu
Iik7CkBAIC0zNjYyLDYgKzM2NjMsOCBAQCBzdWIgR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0
aW9uYWxTdHJpbmdGb3JFeHBvc2VkCiAgICAgICAgIHB1c2goQCRjb25qdW5jdHMsICJqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPigiIC4gJGdsb2JhbE9iamVjdFB0ciAuICIpLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPmlzRG9jdW1lbnQoKSIpOwogICAgIH0gZWxzaWYgKCRleHBvc2VkIGVx
ICJXb3JrZXIiKSB7CiAgICAgICAgIHB1c2goQCRjb25qdW5jdHMsICJqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPigiIC4gJGdsb2JhbE9iamVjdFB0ciAuICIpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPmlzV29ya2VyR2xvYmFsU2NvcGUoKSIpOworICAgIH0gZWxzaWYgKCRleHBvc2VkIGVx
ICJXb3JrbGV0IikgeworICAgICAgICBwdXNoKEAkY29uanVuY3RzLCAianNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oIiAuICRnbG9iYWxPYmplY3RQdHIgLiAiKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5pc1dvcmtsZXRHbG9iYWxTY29wZSgpIik7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
YXNzZXJ0KCJVbnJlY29nbml6ZWQgdmFsdWUgJyIgLiBEdW1wZXIoJGNvbnRleHQtPmV4dGVuZGVk
QXR0cmlidXRlcy0+e0V4cG9zZWR9KSAuICInIGZvciB0aGUgRXhwb3NlZCBleHRlbmRlZCBhdHRy
aWJ1dGUgb24gJyIgLiByZWYoJGNvbnRleHQpIC4gIicuIik7CiAgICAgfQpAQCAtNDI1Miw3ICs0
MjU1LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgOiAkcGFyZW50Q2xhc3NOYW1lKHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUoaW1w
bCksIHByb3h5KVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKLSAgICB9IGVsc2lmICgkY29kZUdlbmVy
YXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldvcmtlckdsb2JhbFNjb3BlIikp
IHsKKyAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVy
ZmFjZSwgIldvcmtlckdsb2JhbFNjb3BlIikgfHwgJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50
ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrbGV0R2xvYmFsU2NvcGUiKSkgewogICAgICAgICBBZGRJ
bmNsdWRlc0ZvckltcGxlbWVudGF0aW9uVHlwZUluSW1wbCgkaW50ZXJmYWNlTmFtZSk7CiAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiJHtjbGFzc05hbWV9OjokY2xhc3NOYW1lKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZjwkaW1wbFR5cGU+JiYgaW1wbClcbiIpOwogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICA6ICRwYXJlbnRDbGFzc05hbWUodm0sIHN0cnVjdHVy
ZSwgV1RGTW92ZShpbXBsKSlcbiIpOwpAQCAtNDI3Myw3ICs0Mjc2LDcgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7Y2xhc3NO
YW1lfTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1dpbmRvd1Byb3h5KiBwcm94eSlcbiIpOwog
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgcHJveHkpO1xuXG4iKTsKLSAgICB9
IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldv
cmtlckdsb2JhbFNjb3BlIikpIHsKKyAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SW5oZXJp
dHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldvcmtlckdsb2JhbFNjb3BlIikgfHwgJGNvZGVHZW5l
cmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrbGV0R2xvYmFsU2NvcGUi
KSkgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtjbGFzc05hbWV9OjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIEpTUHJveHkqIHByb3h5KVxuIik7CiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAie1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKHZtLCBwcm94eSk7XG5cbiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGwgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbAppbmRleCAzZTA1YzdiNDk2ODJi
ZWU2NGY2ODk4YjRkZjQ0ODQyNTEzNDM4YjUxLi40NmNkM2I4ZjljYTljMTFhYTUxZmJkOWZhODc2
MGZhN2IwZmQ5MzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3ByZXByb2Nlc3MtaWRscy5wbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3ByZXByb2Nlc3MtaWRscy5wbApAQCAtMzYsNiArMzYsOCBAQCBteSAkd2luZG93Q29uc3RydWN0
b3JzRmlsZTsKIG15ICR3b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGU7CiBteSAkZGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlOwogbXkgJHNlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGU7CitteSAkd29ya2xldEdsb2JhbFNjb3BlQ29u
c3RydWN0b3JzRmlsZTsKK215ICRwYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0Zp
bGU7CiBteSAkc3VwcGxlbWVudGFsTWFrZWZpbGVEZXBzOwogCiBHZXRPcHRpb25zKCdkZWZpbmVz
PXMnID0+IFwkZGVmaW5lcywKQEAgLTQ2LDYgKzQ4LDggQEAgR2V0T3B0aW9ucygnZGVmaW5lcz1z
JyA9PiBcJGRlZmluZXMsCiAgICAgICAgICAgICd3b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9y
c0ZpbGU9cycgPT4gXCR3b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUsCiAgICAgICAg
ICAgICdkZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGU9cycgPT4gXCRk
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUsCiAgICAgICAgICAgICdz
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlPXMnID0+IFwkc2VydmljZVdv
cmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSwKKyAgICAgICAgICAgJ3dvcmtsZXRHbG9i
YWxTY29wZUNvbnN0cnVjdG9yc0ZpbGU9cycgPT4gXCR3b3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1
Y3RvcnNGaWxlLAorICAgICAgICAgICAncGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3Rv
cnNGaWxlPXMnID0+IFwkcGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlLAog
ICAgICAgICAgICAnc3VwcGxlbWVudGFsTWFrZWZpbGVEZXBzPXMnID0+IFwkc3VwcGxlbWVudGFs
TWFrZWZpbGVEZXBzKTsKIAogZGllKCdNdXN0IHNwZWNpZnkgI2RlZmluZSBtYWNyb3MgdXNpbmcg
LS1kZWZpbmVzLicpIHVubGVzcyBkZWZpbmVkKCRkZWZpbmVzKTsKQEAgLTU0LDYgKzU4LDggQEAg
ZGllKCdNdXN0IHNwZWNpZnkgYW4gb3V0cHV0IGZpbGUgdXNpbmcgLS13aW5kb3dDb25zdHJ1Y3Rv
cnNGaWxlLicpIHVubGVzcyBkZWZpbmUKIGRpZSgnTXVzdCBzcGVjaWZ5IGFuIG91dHB1dCBmaWxl
IHVzaW5nIC0td29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlLicpIHVubGVzcyBkZWZp
bmVkKCR3b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOwogZGllKCdNdXN0IHNwZWNp
ZnkgYW4gb3V0cHV0IGZpbGUgdXNpbmcgLS1kZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0
cnVjdG9yc0ZpbGUuJykgdW5sZXNzIGRlZmluZWQoJGRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3Bl
Q29uc3RydWN0b3JzRmlsZSk7CiBkaWUoJ011c3Qgc3BlY2lmeSBhbiBvdXRwdXQgZmlsZSB1c2lu
ZyAtLXNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUuJykgdW5sZXNzIGRl
ZmluZWQoJHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOworZGllKCdN
dXN0IHNwZWNpZnkgYW4gb3V0cHV0IGZpbGUgdXNpbmcgLS13b3JrbGV0R2xvYmFsU2NvcGVDb25z
dHJ1Y3RvcnNGaWxlLicpIHVubGVzcyBkZWZpbmVkKCR3b3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1
Y3RvcnNGaWxlKTsKK2RpZSgnTXVzdCBzcGVjaWZ5IGFuIG91dHB1dCBmaWxlIHVzaW5nIC0tcGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlLicpIHVubGVzcyBkZWZpbmVkKCRw
YWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOwogZGllKCdNdXN0IHNwZWNp
ZnkgdGhlIGZpbGUgbGlzdGluZyBhbGwgSURMcyB1c2luZyAtLWlkbEZpbGVzTGlzdC4nKSB1bmxl
c3MgZGVmaW5lZCgkaWRsRmlsZXNMaXN0KTsKIAogJHN1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxl
ID0gQ3lnd2luUGF0aElmTmVlZGVkKCRzdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZSk7CkBAIC02
MSw2ICs2Nyw4IEBAICR3aW5kb3dDb25zdHJ1Y3RvcnNGaWxlID0gQ3lnd2luUGF0aElmTmVlZGVk
KCR3aW5kb3dDb25zdHJ1Y3RvcnNGaWxlKTsKICR3b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9y
c0ZpbGUgPSBDeWd3aW5QYXRoSWZOZWVkZWQoJHdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3Jz
RmlsZSk7CiAkZGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlID0gQ3ln
d2luUGF0aElmTmVlZGVkKCRkZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0Zp
bGUpOwogJHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgPSBDeWd3aW5Q
YXRoSWZOZWVkZWQoJHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOwor
JHdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgPSBDeWd3aW5QYXRoSWZOZWVkZWQo
JHdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOworJHBhaW50V29ya2xldEdsb2Jh
bFNjb3BlQ29uc3RydWN0b3JzRmlsZSA9IEN5Z3dpblBhdGhJZk5lZWRlZCgkcGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlKTsKICRzdXBwbGVtZW50YWxNYWtlZmlsZURlcHMg
PSBDeWd3aW5QYXRoSWZOZWVkZWQoJHN1cHBsZW1lbnRhbE1ha2VmaWxlRGVwcyk7CiAKIG9wZW4g
RkgsICI8ICRpZGxGaWxlc0xpc3QiIG9yIGRpZSAiQ2Fubm90IG9wZW4gJGlkbEZpbGVzTGlzdFxu
IjsKQEAgLTgwLDYgKzg4LDggQEAgbXkgJHdpbmRvd0NvbnN0cnVjdG9yc0NvZGUgPSAiIjsKIG15
ICR3b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0NvZGUgPSAiIjsKIG15ICRkZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0NvZGUgPSAiIjsKIG15ICRzZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNDb2RlID0gIiI7CitteSAkd29ya2xldEdsb2JhbFNjb3Bl
Q29uc3RydWN0b3JzQ29kZSA9ICIiOworbXkgJHBhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3JzQ29kZSA9ICIiOwogCiAjIEdldCByaWQgb2YgZHVwbGljYXRlcyBpbiBpZGxGaWxlcyBh
cnJheS4KIG15ICVpZGxGaWxlSGFzaCA9IG1hcCB7ICRfLCAxIH0gQGlkbEZpbGVzOwpAQCAtMTQz
LDYgKzE1MywxMCBAQCBmb3JlYWNoIG15ICRpZGxGaWxlIChzb3J0IGtleXMgJWlkbEZpbGVIYXNo
KSB7CiAgICAgICAgICAgICAgICAgICAgICRkZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0
cnVjdG9yc0NvZGUgLj0gJGF0dHJpYnV0ZUNvZGU7CiAgICAgICAgICAgICAgICAgfSBlbHNpZiAo
JGdsb2JhbENvbnRleHQgZXEgIlNlcnZpY2VXb3JrZXIiKSB7CiAgICAgICAgICAgICAgICAgICAg
ICRzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNDb2RlIC49ICRhdHRyaWJ1dGVD
b2RlOworICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRnbG9iYWxDb250ZXh0IGVxICJXb3JrbGV0
IikgeworICAgICAgICAgICAgICAgICAgICAkd29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3Jz
Q29kZSAuPSAkYXR0cmlidXRlQ29kZTsKKyAgICAgICAgICAgICAgICB9IGVsc2lmICgkZ2xvYmFs
Q29udGV4dCBlcSAiUGFpbnRXb3JrbGV0IikgeworICAgICAgICAgICAgICAgICAgICAkcGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNDb2RlIC49ICRhdHRyaWJ1dGVDb2RlOwogICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIGRpZSAiVW5zdXBwb3J0
ZWQgZ2xvYmFsIGNvbnRleHQgJyRnbG9iYWxDb250ZXh0JyB1c2VkIGluIFtFeHBvc2VkXSBhdCAk
aWRsRmlsZSI7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTU3LDYgKzE3MSw4IEBAIEdlbmVyYXRl
UGFydGlhbEludGVyZmFjZSgiRE9NV2luZG93IiwgJHdpbmRvd0NvbnN0cnVjdG9yc0NvZGUsICR3
aW5kb3dDb25zdHJ1Y3RvCiBHZW5lcmF0ZVBhcnRpYWxJbnRlcmZhY2UoIldvcmtlckdsb2JhbFNj
b3BlIiwgJHdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzQ29kZSwgJHdvcmtlckdsb2JhbFNj
b3BlQ29uc3RydWN0b3JzRmlsZSk7CiBHZW5lcmF0ZVBhcnRpYWxJbnRlcmZhY2UoIkRlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlIiwgJGRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0
b3JzQ29kZSwgJGRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSk7CiBH
ZW5lcmF0ZVBhcnRpYWxJbnRlcmZhY2UoIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSIsICRzZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNDb2RlLCAkc2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlQ29uc3RydWN0b3JzRmlsZSk7CitHZW5lcmF0ZVBhcnRpYWxJbnRlcmZhY2UoIldvcmts
ZXRHbG9iYWxTY29wZSIsICR3b3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNDb2RlLCAkd29y
a2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSk7CitHZW5lcmF0ZVBhcnRpYWxJbnRlcmZh
Y2UoIlBhaW50V29ya2xldEdsb2JhbFNjb3BlIiwgJHBhaW50V29ya2xldEdsb2JhbFNjb3BlQ29u
c3RydWN0b3JzQ29kZSwgJHBhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSk7
CiAKICMgUmVzb2x2ZXMgcGFydGlhbCBpbnRlcmZhY2VzIGFuZCBpbXBsZW1lbnRzIGRlcGVuZGVu
Y2llcy4KIGZvcmVhY2ggbXkgJGlkbEZpbGUgKHNvcnQga2V5cyAlc3VwcGxlbWVudGFsRGVwZW5k
ZW5jaWVzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRJbWFnZVZh
bHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludEltYWdlVmFsdWUuY3BwCmluZGV4
IGE2OTBlNDFkNzY3MWRlYTAzNTMyMWZhZmU3YjdmYTk3MTFhYmRhNTIuLmI3N2Q4ZDgxNDhjNjE1
M2UzMmMyZjNjNGZkYzA1NjgwZjJiNTMzMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYWludEltYWdlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWlu
dEltYWdlVmFsdWUuY3BwCkBAIC0yOSw4ICsyOSw4IEBACiAKICNpZiBFTkFCTEUoQ1NTX1BBSU5U
SU5HX0FQSSkKIAotI2luY2x1ZGUgIkNTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5j
bHVkZSAiQ3VzdG9tUGFpbnRJbWFnZS5oIgorI2luY2x1ZGUgIlBhaW50V29ya2xldEdsb2JhbFNj
b3BlLmgiCiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaD4KIApAQCAtNTAsOCArNTAsMTAgQEAgUmVmUHRyPEltYWdlPiBDU1NQYWlu
dEltYWdlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQmIHJlbmRlckVsZW1lbnQsIGNvbnN0IEZs
b2EKIHsKICAgICBpZiAoc2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIGF1dG8mIHNlbGVjdGVkR2xvYmFsU2NvcGUgPSByZW5kZXJFbGVtZW50LmRvY3VtZW50KCku
ZW5zdXJlQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoKTsKLSAgICBhdXRvKiByZWdpc3RyYXRp
b24gPSBzZWxlY3RlZEdsb2JhbFNjb3BlLnBhaW50RGVmaW5pdGlvbk1hcCgpLmdldChtX25hbWUp
OworICAgIGF1dG8qIHNlbGVjdGVkR2xvYmFsU2NvcGUgPSByZW5kZXJFbGVtZW50LmRvY3VtZW50
KCkuZ2V0UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoKTsKKyAgICBpZiAoIXNlbGVjdGVkR2xvYmFs
U2NvcGUpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8qIHJlZ2lzdHJhdGlvbiA9
IHNlbGVjdGVkR2xvYmFsU2NvcGUtPnBhaW50RGVmaW5pdGlvbk1hcCgpLmdldChtX25hbWUpOwog
CiAgICAgaWYgKCFyZWdpc3RyYXRpb24pCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkOTczY2QzOGQ2OGU0M2NjNTI4NWM1ODEwNGIyNWRk
YjZlMTBjMjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDU0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ1NTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUuaCIKLQotI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLVJlZjxDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZT4gQ1NTUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGU6OmNyZWF0ZSgpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoKSk7Ci19Ci0KLUNTU1BhaW50V29ya2xldEds
b2JhbFNjb3BlOjpDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSgpCi17Ci19Ci0KLWRvdWJsZSBD
U1NQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6ZGV2aWNlUGl4ZWxSYXRpbygpCi17Ci0gICAgcmV0
dXJuIDEuMDsKLX0KLQotRXhjZXB0aW9uT3I8dm9pZD4gQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGU6OmFkZFJlZ2lzdGVyZWRQYWludCgpCi17Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIz
YjBkOWQ4ZjNmMDIzN2UyNzkyZmNlZjdlNDc3ZmU1OGM2MmEzMDguLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50
V29ya2xldEdsb2JhbFNjb3BlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKLQotI2luY2x1ZGUgIkNTU1BhaW50Q2FsbGJh
Y2suaCIKLSNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0K
LW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBKU1ZhbHVlOwotCi19IC8vIG5hbWVzcGFjZSBKU0MK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29w
ZSA6IHB1YmxpYyBSZWZDb3VudGVkPENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlPiB7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZT4gY3JlYXRlKCk7
Ci0KLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBhZGRSZWdpc3RlcmVkUGFpbnQoKTsKLSAgICBkb3Vi
bGUgZGV2aWNlUGl4ZWxSYXRpbygpOwotCi0gICAgc3RydWN0IFBhaW50RGVmaW5pdGlvbiB7Ci0g
ICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyBuYW1lOwotICAgICAgICBjb25zdCBSZWY8Q1NTUGFp
bnRDYWxsYmFjaz4gcGFpbnRDYWxsYmFjazsKLSAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4g
aW5wdXRQcm9wZXJ0aWVzOwotICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiBpbnB1dEFyZ3Vt
ZW50czsKLSAgICB9OwotCi0gICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxQYWlu
dERlZmluaXRpb24+PiYgcGFpbnREZWZpbml0aW9uTWFwKCkgeyByZXR1cm4gbV9wYWludERlZmlu
aXRpb25NYXA7IH0KLQotcHJpdmF0ZToKLSAgICBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSgp
OwotCi0gICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxQYWludERlZmluaXRpb24+
PiBtX3BhaW50RGVmaW5pdGlvbk1hcDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLSNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1MzZjMGE0MTM5NWMwYTFhMDg0
ZmExZjdlYjVhNmMyYmE3MmE2MWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
LmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0qIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0qCi0qIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSogYXJlIG1ldDoKLSogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0qICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0qCi0qIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0qIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0qIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0qIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotKi8K
LQotWwotICAgIEVuYWJsZWRBdFJ1bnRpbWU9Q1NTUGFpbnRpbmdBUEksCi0gICAgQ29uZGl0aW9u
YWw9Q1NTX1BBSU5USU5HX0FQSSwKLSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAotICAg
IEpTQ3VzdG9tTWFya0Z1bmN0aW9uLAotICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdAotXSBp
bnRlcmZhY2UgQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUgewotICAgIFtDdXN0b20sIE1heVRo
cm93RXhjZXB0aW9uXSB2b2lkIHJlZ2lzdGVyUGFpbnQoRE9NU3RyaW5nIG5hbWUsIEZ1bmN0aW9u
IHBhaW50Q3Rvcik7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUg
ZGV2aWNlUGl4ZWxSYXRpbzsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9N
Q1NTUGFpbnRXb3JrbGV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmts
ZXQuY3BwCmluZGV4IDEyMDY4MWI4ZDc2MTM0NmRhNzJhY2M1YTBiMjI2OWUxNDA3MzU4OWIuLjY1
YTJmZGY4ZGZhY2I0ZDdmNzFkNzYxY2IyMTY2YjFhOTI4NGMwNzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9ET01DU1NQYWludFdvcmtsZXQuY3BwCkBAIC0yOCwxNiArMjgsMTcgQEAKIAogI2lmIEVO
QUJMRShDU1NfUEFJTlRJTkdfQVBJKQogCi0jaW5jbHVkZSAiQ1NTUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUuaCIKICNpbmNsdWRlICJET01DU1NOYW1lc3BhY2UuaCIKICNpbmNsdWRlICJEb2N1bWVu
dC5oIgorI2luY2x1ZGUgIldvcmtsZXQuaCIKKwogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNTU1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
JiBET01DU1NQYWludFdvcmtsZXQ6OmVuc3VyZVBhaW50V29ya2xldEdsb2JhbFNjb3BlKERvY3Vt
ZW50JiBkb2N1bWVudCkKK1dvcmtsZXQmIERPTUNTU1BhaW50V29ya2xldDo6ZW5zdXJlUGFpbnRX
b3JrbGV0KERvY3VtZW50JiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gZG9jdW1lbnQuZW5zdXJl
Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoKTsKKyAgICByZXR1cm4gZG9jdW1lbnQuZW5zdXJl
UGFpbnRXb3JrbGV0KCk7CiB9CiAKIERPTUNTU1BhaW50V29ya2xldCogRE9NQ1NTUGFpbnRXb3Jr
bGV0Ojpmcm9tKERPTUNTU05hbWVzcGFjZSYgY3NzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1Bh
aW50V29ya2xldC5oCmluZGV4IGVlNWVmYjExZDE5YmI2MmYzOGU1NmUxMGU1ZDYxNjNjYzlkOGZi
M2YuLmEyY2IzNzNmNmEwMzQxM2QxMjFiNDAxNDM0YmZkOWVmOTlhOTc2ZjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmgKQEAgLTM1LDE0ICszNSwxNCBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKLWNsYXNzIENTU1BhaW50V29ya2xldEds
b2JhbFNjb3BlOworY2xhc3MgV29ya2xldDsKIGNsYXNzIERPTUNTU05hbWVzcGFjZTsKIAogY2xh
c3MgRE9NQ1NTUGFpbnRXb3JrbGV0IGZpbmFsIDogcHVibGljIFN1cHBsZW1lbnQ8RE9NQ1NTTmFt
ZXNwYWNlPiB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgRE9NQ1NTUGFpbnRXb3JrbGV0KERPTUNT
U05hbWVzcGFjZSYpIHsgfQogCi0gICAgc3RhdGljIENTU1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
JiBlbnN1cmVQYWludFdvcmtsZXRHbG9iYWxTY29wZShEb2N1bWVudCYpOworICAgIHN0YXRpYyBX
b3JrbGV0JiBlbnN1cmVQYWludFdvcmtsZXQoRG9jdW1lbnQmKTsKIAogcHJpdmF0ZToKICAgICBz
dGF0aWMgRE9NQ1NTUGFpbnRXb3JrbGV0KiBmcm9tKERPTUNTU05hbWVzcGFjZSYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmlkbAppbmRleCAxOTBjZGI0NWVjNzUzZGVi
YmU5NmY4ZDgzMzgxM2Y0NDYzNWFlOGMzLi5hYTU5ZTVlZTJkZTkxODFkMzA0N2ZlMzQ4MDRmZTUy
N2EyNmY3NDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRXb3Jr
bGV0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmlkbApA
QCAtMjcsNiArMjcsNSBAQAogICAgIEVuYWJsZWRBdFJ1bnRpbWU9Q1NTUGFpbnRpbmdBUEksCiAg
ICAgQ29uZGl0aW9uYWw9Q1NTX1BBSU5USU5HX0FQSSwKIF0gcGFydGlhbCBpbnRlcmZhY2UgRE9N
Q1NTTmFtZXNwYWNlIHsKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBub3QgYWN0dWFsbHkgcGFydCBv
ZiB0aGUgc3BlYywgYW5kIHNob3VsZCBiZSByZXBsYWNlZCB3aGVuIHdvcmtsZXRzIGFyZSBpbXBs
ZW1lbnRlZAotICAgIFtJbXBsZW1lbnRlZEFzPWVuc3VyZVBhaW50V29ya2xldEdsb2JhbFNjb3Bl
LENhbGxXaXRoPURvY3VtZW50XSBzdGF0aWMgcmVhZG9ubHkgYXR0cmlidXRlIENTU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlIHBhaW50V29ya2xldEdsb2JhbFNjb3BlOworICAgIFtJbXBsZW1lbnRl
ZEFzPWVuc3VyZVBhaW50V29ya2xldCxDYWxsV2l0aD1Eb2N1bWVudF0gc3RhdGljIHJlYWRvbmx5
IGF0dHJpYnV0ZSBXb3JrbGV0IHBhaW50V29ya2xldDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAppbmRleCA3YjQ4MDhiZTZhMzg2NzUxMDA4MGMwYmE0MDJjMTcxZjFlNTgwMzA4Li4zZDk1MGZm
ZDM0YWZhNmJiN2JiMjI2NzU3ZjU1ZmRhODQ3NDllNTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJDREFUQVNlY3Rpb24uaCIKICNpbmNsdWRl
ICJDU1NBbmltYXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiQ1NTRm9udFNlbGVjdG9yLmgi
Ci0jaW5jbHVkZSAiQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJDU1NT
dHlsZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVTaGVldC5oIgogI2luY2x1ZGUg
IkNhY2hlZENTU1N0eWxlU2hlZXQuaCIKQEAgLTE0MCw2ICsxMzksNyBAQAogI2luY2x1ZGUgIlBh
Z2VDb25zb2xlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiUGFn
ZVRyYW5zaXRpb25FdmVudC5oIgorI2luY2x1ZGUgIlBhaW50V29ya2xldEdsb2JhbFNjb3BlLmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1Mb2NhbGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgpAQCAtMjE3LDYgKzIx
Nyw3IEBACiAjaW5jbHVkZSAiV2ViQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiV2hlZWxFdmVudC5o
IgogI2luY2x1ZGUgIldpbmRvd0ZlYXR1cmVzLmgiCisjaW5jbHVkZSAiV29ya2xldC5oIgogI2lu
Y2x1ZGUgIlhNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAiWE1MRG9jdW1lbnRQYXJzZXIuaCIKICNp
bmNsdWRlICJYTUxOU05hbWVzLmgiCkBAIC04Mzc3LDExICs4Mzc4LDE2IEBAIHZvaWQgRG9jdW1l
bnQ6OmZyYW1lV2FzRGlzY29ubmVjdGVkRnJvbU93bmVyKCkKIH0KIAogI2lmIEVOQUJMRShDU1Nf
UEFJTlRJTkdfQVBJKQotQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUmIERvY3VtZW50OjplbnN1
cmVDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSgpCitXb3JrbGV0JiBEb2N1bWVudDo6ZW5zdXJl
UGFpbnRXb3JrbGV0KCkKIHsKLSAgICBpZiAoIW1fQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUp
Ci0gICAgICAgIG1fQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUgPSBDU1NQYWludFdvcmtsZXRH
bG9iYWxTY29wZTo6Y3JlYXRlKCk7Ci0gICAgcmV0dXJuICptX0NTU1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlOworICAgIGlmICghbV9wYWludFdvcmtsZXQpCisgICAgICAgIG1fcGFpbnRXb3JrbGV0
ID0gV29ya2xldDo6Y3JlYXRlKCk7CisgICAgcmV0dXJuICptX3BhaW50V29ya2xldDsKK30KKwor
dm9pZCBEb2N1bWVudDo6c2V0UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoUmVmPFBhaW50V29ya2xl
dEdsb2JhbFNjb3BlPiYmIHNjb3BlKQoreworICAgIG1fcGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUg
PSBXVEZNb3ZlKHNjb3BlKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDg1
NDJjMTU1NjcxN2YyN2I2MDg5MDdkMmQxNGVlMTRjZGEyNDhmZDguLmY3ZDNjOTBiY2RmNDNmZGY4
NWVmMGU1Y2EwMzk0OTIwN2E1N2Y3OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC04OCw3ICs4
OCw2IEBAIGNsYXNzIEF0dHI7CiBjbGFzcyBDREFUQVNlY3Rpb247CiBjbGFzcyBDU1NDdXN0b21Q
cm9wZXJ0eVZhbHVlOwogY2xhc3MgQ1NTRm9udFNlbGVjdG9yOwotY2xhc3MgQ1NTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGU7CiBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uOwogY2xhc3MgQ1NTU3R5
bGVTaGVldDsKIGNsYXNzIENhY2hlZENTU1N0eWxlU2hlZXQ7CkBAIC0xNTQsNiArMTUzLDcgQEAg
Y2xhc3MgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0czsKIGNsYXNzIE5vZGVGaWx0ZXI7CiBj
bGFzcyBOb2RlSXRlcmF0b3I7CiBjbGFzcyBQYWdlOworY2xhc3MgUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGU7CiBjbGFzcyBQbGF0Zm9ybU1vdXNlRXZlbnQ7CiBjbGFzcyBQcm9jZXNzaW5nSW5zdHJ1
Y3Rpb247CiBjbGFzcyBRdWFsaWZpZWROYW1lOwpAQCAtMTk0LDYgKzE5NCw3IEBAIGNsYXNzIFdl
YkdMUmVuZGVyaW5nQ29udGV4dDsKIGNsYXNzIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ7CiBjbGFz
cyBXZWJNZXRhbFJlbmRlcmluZ0NvbnRleHQ7CiBjbGFzcyBXaW5kb3dQcm94eTsKK2NsYXNzIFdv
cmtsZXQ7CiBjbGFzcyBYUGF0aEV2YWx1YXRvcjsKIGNsYXNzIFhQYXRoRXhwcmVzc2lvbjsKIGNs
YXNzIFhQYXRoTlNSZXNvbHZlcjsKQEAgLTEzNTAsNiArMTM1MSwxMCBAQCBwdWJsaWM6CiAgICAg
Ly8gQ2FsbGVycyBzaG91bGQgdHJ5IHRvIGNyZWF0ZSB0aGUgQ29uc29sZU1lc3NhZ2UgdGhlbXNl
bHZlcy4KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VT
b3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsb25n
IHJlcXVlc3RJZGVudGlmaWVyID0gMCkgZmluYWw7CiAKKyAgICAvLyBUaGUgZm9sbG93aW5nIGFk
ZE1lc3NhZ2UgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZC4KKyAgICAvLyBDYWxsZXJzIHNob3VsZCB0
cnkgdG8gY3JlYXRlIHRoZSBDb25zb2xlTWVzc2FnZSB0aGVtc2VsdmVzLgorICAgIHZvaWQgYWRk
TWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVk
IGNvbHVtbk51bWJlciwgUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPiYmLCBKU0M6
OkV4ZWNTdGF0ZSogPSBudWxscHRyLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyID0g
MCkgZmluYWw7CisKICAgICBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7
IHJldHVybiAqU2VjdXJpdHlDb250ZXh0OjpzZWN1cml0eU9yaWdpbigpOyB9CiAgICAgU2VjdXJp
dHlPcmlnaW4mIHRvcE9yaWdpbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRvcERvY3VtZW50KCku
c2VjdXJpdHlPcmlnaW4oKTsgfQogCkBAIC0xNTE3LDcgKzE1MjIsOSBAQCBwdWJsaWM6CiAgICAg
Ym9vbCByZWdpc3RlckNTU1Byb3BlcnR5KENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eSYmKTsK
IAogI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQotICAgIENTU1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlJiBlbnN1cmVDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSgpOworICAgIFdvcmtsZXQm
IGVuc3VyZVBhaW50V29ya2xldCgpOworICAgIFBhaW50V29ya2xldEdsb2JhbFNjb3BlKiBnZXRQ
YWludFdvcmtsZXRHbG9iYWxTY29wZSgpIHsgcmV0dXJuIG1fcGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUuZ2V0KCk7IH0KKyAgICB2b2lkIHNldFBhaW50V29ya2xldEdsb2JhbFNjb3BlKFJlZjxQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZT4mJik7CiAjZW5kaWYKIAogICAgIHZvaWQgc2V0QXNSdW5uaW5n
VXNlclNjcmlwdHMoKSB7IG1faXNSdW5uaW5nVXNlclNjcmlwdHMgPSB0cnVlOyB9CkBAIC0xNTcw
LDEwICsxNTc3LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSBmaW5hbCB7IHJlZigpOyB9CiAgICAgdm9pZCBkZXJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KIAotICAgIC8vIFRoZSBmb2xsb3dpbmcgYWRkTWVzc2Fn
ZSBmdW5jdGlvbiBpcyBkZXByZWNhdGVkLgotICAgIC8vIENhbGxlcnMgc2hvdWxkIHRyeSB0byBj
cmVhdGUgdGhlIENvbnNvbGVNZXNzYWdlIHRoZW1zZWx2ZXMuCi0gICAgdm9pZCBhZGRNZXNzYWdl
KE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25z
dCBTdHJpbmcmIHNvdXJjZVVSTCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1u
TnVtYmVyLCBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s+JiYsIEpTQzo6RXhlY1N0
YXRlKiA9IG51bGxwdHIsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIgPSAwKSBmaW5h
bDsKLQogICAgIFNlY29uZHMgbWluaW11bURPTVRpbWVySW50ZXJ2YWwoKSBjb25zdCBmaW5hbDsK
IAogICAgIFNlY29uZHMgZG9tVGltZXJBbGlnbm1lbnRJbnRlcnZhbChib29sIGhhc1JlYWNoZWRN
YXhOZXN0aW5nTGV2ZWwpIGNvbnN0IGZpbmFsOwpAQCAtMjA2MCw3ICsyMDYzLDggQEAgcHJpdmF0
ZToKICAgICBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlTZXQgbV9DU1NSZWdpc3RlcmVkUHJv
cGVydHlTZXQ7CiAKICNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKLSAgICBSZWZQdHI8Q1NT
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+IG1fQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU7Cisg
ICAgUmVmUHRyPFdvcmtsZXQ+IG1fcGFpbnRXb3JrbGV0OworICAgIFJlZlB0cjxQYWludFdvcmts
ZXRHbG9iYWxTY29wZT4gbV9wYWludFdvcmtsZXRHbG9iYWxTY29wZTsKICNlbmRpZgogCiAgICAg
Ym9vbCBtX2lzUnVubmluZ1VzZXJTY3JpcHRzIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4gYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRUYXJnZXRGYWN0b3J5LmluCmluZGV4IDYwYWIxYTU4Mjg4YmU5OWEyOTdlZTkyM2I4ODk0
MGYxOTNmNmY1NWYuLjc4YTIyYjMxNmE0YzQ2ODBiMWQ3YzIyNzRhY2I2YWI3ZmQ1NjQ4YmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgpAQCAtNTIsNiArNTIsNyBA
QCBXZWJBbmltYXRpb24KIFdlYktpdE1lZGlhS2V5U2Vzc2lvbiBjb25kaXRpb25hbD1MRUdBQ1lf
RU5DUllQVEVEX01FRElBCiBXZWJTb2NrZXQKIFdvcmtlcgorV29ya2xldEdsb2JhbFNjb3BlIGNv
bmRpdGlvbmFsPUNTU19QQUlOVElOR19BUEkKIFhNTEh0dHBSZXF1ZXN0CiBYTUxIdHRwUmVxdWVz
dFVwbG9hZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5j
cHAKaW5kZXggYmE1YzM2MzI0YmM4MzQwMGU0NGI4YzljMTViMTU1ZTU4MzcwY2ZiZi4uZWVlMzhi
NWJiYWYyYzkzYjRhNWFmMmY4MmQ5M2NhNTEwZWNkMTM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcApAQCAtNTQsNiArNTQsOCBAQAogI2luY2x1
ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyTmF2aWdhdG9yLmgiCiAj
aW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCisjaW5jbHVkZSAiV29ya2xldEdsb2JhbFNjb3BlLmgi
CisjaW5jbHVkZSAiV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9DYXRjaFNjb3BlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRXhjZXB0aW9u
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNQcm9taXNlLmg+CkBAIC00NzYsOCArNDc4
LDE1IEBAIEpTQzo6Vk0mIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnZtKCkKIHsKICAgICBpZiAo
aXM8RG9jdW1lbnQ+KCp0aGlzKSkKICAgICAgICAgcmV0dXJuIGNvbW1vblZNKCk7CisgICAgaWYg
KGlzPFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxX
b3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpLnNjcmlwdCgpLT52bSgpOworI2lmIEVOQUJMRShDU1Nf
UEFJTlRJTkdfQVBJKQorICAgIGlmIChpczxXb3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlzKSkKKyAg
ICAgICAgcmV0dXJuIGRvd25jYXN0PFdvcmtsZXRHbG9iYWxTY29wZT4oKnRoaXMpLnNjcmlwdCgp
LT52bSgpOworI2VuZGlmCiAKLSAgICByZXR1cm4gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+
KCp0aGlzKS5zY3JpcHQoKS0+dm0oKTsKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiBjb21tb25WTSgpOwogfQogCiBSZWplY3RlZFByb21pc2VUcmFja2VyJiBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjplbnN1cmVSZWplY3RlZFByb21pc2VUcmFja2VyU2xvdygp
CkBAIC01MTksOCArNTI4LDE5IEBAIEpTQzo6RXhlY1N0YXRlKiBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpleGVjU3RhdGUoKQogICAgICAgICByZXR1cm4gZXhlY1N0YXRlRnJvbVBhZ2UobWFpblRo
cmVhZE5vcm1hbFdvcmxkKCksIGRvY3VtZW50LnBhZ2UoKSk7CiAgICAgfQogCi0gICAgV29ya2Vy
R2xvYmFsU2NvcGUqIHdvcmtlckdsb2JhbFNjb3BlID0gc3RhdGljX2Nhc3Q8V29ya2VyR2xvYmFs
U2NvcGUqPih0aGlzKTsKLSAgICByZXR1cm4gZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3Bl
KHdvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KCp0aGlz
KSkgeworICAgICAgICBXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUgPSBkb3du
Y2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpOworICAgICAgICByZXR1cm4gZXhlY1N0YXRl
RnJvbVdvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKTsKKyAgICB9CisjaWYgRU5B
QkxFKENTU19QQUlOVElOR19BUEkpCisgICAgaWYgKGlzPFdvcmtsZXRHbG9iYWxTY29wZT4oKnRo
aXMpKSB7CisgICAgICAgIFdvcmtsZXRHbG9iYWxTY29wZSYgd29ya2xldEdsb2JhbFNjb3BlID0g
ZG93bmNhc3Q8V29ya2xldEdsb2JhbFNjb3BlPigqdGhpcyk7CisgICAgICAgIHJldHVybiBleGVj
U3RhdGVGcm9tV29ya2xldEdsb2JhbFNjb3BlKHdvcmtsZXRHbG9iYWxTY29wZSk7CisgICAgfQor
I2VuZGlmCisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAogU3RyaW5nIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRvbWFpbkZvckNhY2hlUGFydGl0
aW9uKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRp
b25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
CmluZGV4IDJiNjQ3NWU2MjdkY2VmZDVkZGI2NDM0ZTE1MTU1NDY1ZTU1YzQ3ZTQuLjc4NTkwNDU4
MjNiN2M2MzA1MGFlMDFmMWE2NDViYWQzMGIyZGM3OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtODksNiArODksNyBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIGJvb2wgaXNEb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dmlydHVhbCBib29sIGlzV29ya2VyR2xvYmFsU2NvcGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBpc1dvcmtsZXRHbG9iYWxTY29wZSgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNDb250ZXh0VGhyZWFkKCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkg
Y29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93
b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcAppbmRleCBjYWMwNjI1Njk5YTQx
OGI4OTBkM2QxMTNkM2M0OTI3YmRlNmZlYzlkLi5iMjBjYmJjOTUwNzAyODExYjY1ODlhYzFkZmJk
NTczMzkxOTNkMzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcApAQCAtNjAsNyArNjAs
NyBAQCBJbmplY3RlZFNjcmlwdCBXb3JrZXJEZWJ1Z2dlckFnZW50OjppbmplY3RlZFNjcmlwdEZv
ckV2YWwoRXJyb3JTdHJpbmcmIGVycm9yU3RyaQogICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3Jp
cHQoKTsKICAgICB9CiAKLSAgICBKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUgPSBleGVjU3Rh
dGVGcm9tV29ya2VyR2xvYmFsU2NvcGUoJm1fd29ya2VyR2xvYmFsU2NvcGUpOworICAgIEpTQzo6
RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSA9IGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZSht
X3dvcmtlckdsb2JhbFNjb3BlKTsKICAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCku
aW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3RhdGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50
LmNwcAppbmRleCA5Y2M2OWQxNzI0Y2RhZDE4Zjk4ZTNkM2IzMmYyOTY4YTU1NGUwNjdkLi44YzMy
MTQ4N2M2ODVmZDM0ZmFlYWE3NTUwYzk4YTIyOTA4NzVkMzIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVB
Z2VudC5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgSW5qZWN0ZWRTY3JpcHQgV29ya2VyUnVudGltZUFn
ZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW4KICAgICAg
ICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KCk7CiAgICAgfQogCi0gICAgSlNDOjpFeGVjU3RhdGUq
IHNjcmlwdFN0YXRlID0gZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3BlKCZtX3dvcmtlckds
b2JhbFNjb3BlKTsKKyAgICBKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUgPSBleGVjU3RhdGVG
cm9tV29ya2VyR2xvYmFsU2NvcGUobV93b3JrZXJHbG9iYWxTY29wZSk7CiAgICAgcmV0dXJuIGlu
amVjdGVkU2NyaXB0TWFuYWdlcigpLmluamVjdGVkU2NyaXB0Rm9yKHNjcmlwdFN0YXRlKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFp
bnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWlu
dEltYWdlLmNwcAppbmRleCBkMmU0MmMwYzllNjE5OWY1Mjc0MjkxNjcwZjE3YTA2ZTlkZTgyMGZi
Li4xNWFhOTI0YzJiNjE3MWU1MzUwYzEwMWQ0NDBiZTZjM2NjYTUwYzkzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmNwcApA
QCAtMzcsNyArMzcsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUN1c3RvbVBhaW50SW1h
Z2U6OkN1c3RvbVBhaW50SW1hZ2UoY29uc3QgQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OlBh
aW50RGVmaW5pdGlvbiYgZGVmaW5pdGlvbiwgY29uc3QgRmxvYXRTaXplJiBzaXplKQorQ3VzdG9t
UGFpbnRJbWFnZTo6Q3VzdG9tUGFpbnRJbWFnZShjb25zdCBQYWludFdvcmtsZXRHbG9iYWxTY29w
ZTo6UGFpbnREZWZpbml0aW9uJiBkZWZpbml0aW9uLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCiAg
ICAgOiBtX3BhaW50Q2FsbGJhY2soZGVmaW5pdGlvbi5wYWludENhbGxiYWNrLmdldCgpKQogewog
ICAgIHNldENvbnRhaW5lclNpemUoc2l6ZSk7CkBAIC02Myw3ICs2Myw2IEBAIEltYWdlRHJhd1Jl
c3VsdCBDdXN0b21QYWludEltYWdlOjpkb0N1c3RvbVBhaW50KEdyYXBoaWNzQ29udGV4dCYgZGVz
dENvbnRleHQsIGNvCiAgICAgaWYgKHJlc3VsdC50eXBlKCkgIT0gQ2FsbGJhY2tSZXN1bHRUeXBl
OjpTdWNjZXNzKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwog
Ci0gICAgVU5VU0VEX1BBUkFNKGRlc3RDb250ZXh0KTsKICAgICBhdXRvIGltYWdlID0gY2FudmFz
LT5jb3BpZWRJbWFnZSgpOwogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBJbWFnZURy
YXdSZXN1bHQ6OkRpZE5vdGhpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9DdXN0b21QYWludEltYWdlLmgKaW5kZXggMDNhYjJhODg4NjgzYTNmNTM4NzFkYWM1
YjUxZjg5MTlkYTRjNGRkMi4uZWI2YTgxYmFlMjRkMTE3ZTBjZDM0ODhkYzQ3YTc2ZTYyYjA0MjBj
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFp
bnRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBh
aW50SW1hZ2UuaApAQCAtMjcsOCArMjcsOCBAQAogCiAjaWYgRU5BQkxFKENTU19QQUlOVElOR19B
UEkpCiAKLSNpbmNsdWRlICJDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUg
IkdlbmVyYXRlZEltYWdlLmgiCisjaW5jbHVkZSAiUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIEltYWdlQnVm
ZmVyOwogCiBjbGFzcyBDdXN0b21QYWludEltYWdlIGZpbmFsIDogcHVibGljIEdlbmVyYXRlZElt
YWdlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEN1c3RvbVBhaW50SW1hZ2U+IGNyZWF0ZShj
b25zdCBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6UGFpbnREZWZpbml0aW9uJiBkZWZpbml0
aW9uLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCisgICAgc3RhdGljIFJlZjxDdXN0b21QYWludElt
YWdlPiBjcmVhdGUoY29uc3QgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OlBhaW50RGVmaW5pdGlv
biYgZGVmaW5pdGlvbiwgY29uc3QgRmxvYXRTaXplJiBzaXplKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQ3VzdG9tUGFpbnRJbWFnZShkZWZpbml0aW9uLCBzaXplKSk7CiAg
ICAgfQpAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0N1c3RvbVBhaW50SW1h
Z2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKIHByaXZhdGU6Ci0gICAgQ3Vz
dG9tUGFpbnRJbWFnZShjb25zdCBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6UGFpbnREZWZp
bml0aW9uJiwgY29uc3QgRmxvYXRTaXplJik7CisgICAgQ3VzdG9tUGFpbnRJbWFnZShjb25zdCBQ
YWludFdvcmtsZXRHbG9iYWxTY29wZTo6UGFpbnREZWZpbml0aW9uJiwgY29uc3QgRmxvYXRTaXpl
Jik7CiAKICAgICBJbWFnZURyYXdSZXN1bHQgZG9DdXN0b21QYWludChHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFNpemUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xl
dHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMv
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1N2ZlNDQ3OTY0YjNiZjA2
MjQwMDczZDM2Mjk5YzI1MjFlNDk3MzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTAsMCArMSw2MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgorCisjaWYgRU5B
QkxFKENTU19QQUlOVElOR19BUEkpCisKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKKyNpbmNsdWRl
ICJEb2N1bWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxQYWludFdvcmtsZXRH
bG9iYWxTY29wZT4gUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OmNyZWF0ZShEb2N1bWVudCYgZG9j
dW1lbnQsIFNjcmlwdFNvdXJjZUNvZGUmJiBjb2RlKQoreworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFBhaW50V29ya2xldEdsb2JhbFNjb3BlKG1ha2VXZWFrUHRyKGRvY3VtZW50KSwgV1RGTW92
ZShjb2RlKSkpOworfQorCitQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6UGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUoV2Vha1B0cjxEb2N1bWVudD4mJiBkb2N1bWVudCwgU2NyaXB0U291cmNlQ29kZSYm
IGNvZGUpCisgICAgOiBXb3JrbGV0R2xvYmFsU2NvcGUoV1RGTW92ZShkb2N1bWVudCksIFdURk1v
dmUoY29kZSkpCit7Cit9CisKK2RvdWJsZSBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6ZGV2aWNl
UGl4ZWxSYXRpbygpCit7CisgICAgQVNTRVJUKG1fZG9jdW1lbnQpOworICAgIEFTU0VSVChtX2Rv
Y3VtZW50LT5kb21XaW5kb3coKSk7CisgICAgcmV0dXJuIG1fZG9jdW1lbnQtPmRvbVdpbmRvdygp
LT5kZXZpY2VQaXhlbFJhdGlvKCk7Cit9CisKK0V4Y2VwdGlvbk9yPHZvaWQ+IFBhaW50V29ya2xl
dEdsb2JhbFNjb3BlOjphZGRSZWdpc3RlcmVkUGFpbnQoKQoreworICAgIHJldHVybiB7IH07Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDc4NDdi
MTliZGUwOGE2ZDFmOGIwNWU0NzdiYjNkY2Q1OGM3MTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaApAQCAtMCwwICsx
LDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKworI2luY2x1ZGUgIkNT
U1BhaW50Q2FsbGJhY2suaCIKKyNpbmNsdWRlICJXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CitjbGFzcyBKU1ZhbHVlOworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUgOiBwdWJsaWMg
V29ya2xldEdsb2JhbFNjb3BlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFBhaW50V29ya2xl
dEdsb2JhbFNjb3BlPiBjcmVhdGUoRG9jdW1lbnQmLCBTY3JpcHRTb3VyY2VDb2RlJiYpOworCisg
ICAgYm9vbCBpc1BhaW50V29ya2xldEdsb2JhbFNjb3BlKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
dHJ1ZTsgfQorCisgICAgRXhjZXB0aW9uT3I8dm9pZD4gYWRkUmVnaXN0ZXJlZFBhaW50KCk7Cisg
ICAgZG91YmxlIGRldmljZVBpeGVsUmF0aW8oKTsKKworICAgIHN0cnVjdCBQYWludERlZmluaXRp
b24geworICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcgbmFtZTsKKyAgICAgICAgY29uc3QgUmVm
PENTU1BhaW50Q2FsbGJhY2s+IHBhaW50Q2FsbGJhY2s7CisgICAgICAgIGNvbnN0IFZlY3RvcjxT
dHJpbmc+IGlucHV0UHJvcGVydGllczsKKyAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4gaW5w
dXRBcmd1bWVudHM7CisgICAgfTsKKworICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9w
dHI8UGFpbnREZWZpbml0aW9uPj4mIHBhaW50RGVmaW5pdGlvbk1hcCgpIHsgcmV0dXJuIG1fcGFp
bnREZWZpbml0aW9uTWFwOyB9CisKK3ByaXZhdGU6CisgICAgUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUoV2Vha1B0cjxEb2N1bWVudD4mJiwgU2NyaXB0U291cmNlQ29kZSYmKTsKKworICAgIEhhc2hN
YXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8UGFpbnREZWZpbml0aW9uPj4gbV9wYWludERlZmlu
aXRpb25NYXA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmlkbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hNTQ5Y2NmMDQzYmUwNGRiNjkxZGVkN2Y2MGM0ZWU1ZWE3YWNjZGI0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUuaWRsCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyog
YXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworWworICAgIEV4
cG9zZWQ9UGFpbnRXb3JrbGV0LAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9Q1NTUGFpbnRpbmdBUEks
CisgICAgQ29uZGl0aW9uYWw9Q1NTX1BBSU5USU5HX0FQSSwKKyAgICBKU0N1c3RvbU1hcmtGdW5j
dGlvbiwKKyAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCisgICAgSW1wbGljaXRUaGlzLAor
ICAgIElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0LAorICAgIElzSW1tdXRhYmxlUHJv
dG90eXBlRXhvdGljT2JqZWN0T25Qcm90b3R5cGUsCisgICAgR2xvYmFsPShXb3JrbGV0LFBhaW50
V29ya2xldCksCitdIGludGVyZmFjZSBQYWludFdvcmtsZXRHbG9iYWxTY29wZSA6IFdvcmtsZXRH
bG9iYWxTY29wZSB7CisgICAgW0N1c3RvbSwgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgcmVnaXN0
ZXJQYWludChET01TdHJpbmcgbmFtZSwgRnVuY3Rpb24gcGFpbnRDdG9yKTsKKyAgICByZWFkb25s
eSBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBkZXZpY2VQaXhlbFJhdGlvOworfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2xldHMvV29ya2xldC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzRlZTNmMTU5YjI4NDQxYWEx
ZmNmNzY0OTRmZjdmMjYwMTI5YTVhMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1dvcmtsZXQuY3BwCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV29ya2xldC5oIgorCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisKKyNpbmNsdWRl
ICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIlBhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCisjaW5j
bHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxX
b3JrbGV0PiBXb3JrbGV0OjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdv
cmtsZXQoKSk7Cit9CisKKworV29ya2xldDo6V29ya2xldCgpCit7Cit9CisKK3ZvaWQgV29ya2xl
dDo6YWRkTW9kdWxlKERvY3VtZW50JiBkb2N1bWVudCwgU3RyaW5nIG1vZHVsZVVSTCkKK3sKKyAg
ICBhdXRvIGNvbnRleHQgPSBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6Y3JlYXRlKGRvY3VtZW50
LCBTY3JpcHRTb3VyY2VDb2RlKG1vZHVsZVVSTCkpOworICAgIGNvbnRleHQtPmV2YWx1YXRlKCk7
CisgICAgZG9jdW1lbnQuc2V0UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoV1RGTW92ZShjb250ZXh0
KSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0
cy9Xb3JrbGV0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjEzZjQ5NDcwNDQ0ZWJmNDdhOTRkNGRmNzA2NzRlYjcw
ZGNkMmI5NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmts
ZXQuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgRG9jdW1lbnQ7CisKK2NsYXNzIFdvcmtsZXQg
OiBwdWJsaWMgUmVmQ291bnRlZDxXb3JrbGV0PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxX
b3JrbGV0PiBjcmVhdGUoKTsKKyAgICAKKyAgICB2b2lkIGFkZE1vZHVsZShEb2N1bWVudCYsIFN0
cmluZyBtb2R1bGVVUkwpOworCitwcm90ZWN0ZWQ6CisgICAgV29ya2xldCgpOworCit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1dvcmtsZXQuaWRsIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5p
ZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTc0Y2M5MTM4MDBiNzllZTcwYTVjNDQ2NzllZjE1ZmU3ZWM4NDlmYQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQuaWRsCkBA
IC0wLDAgKzEsMzMgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoK
KyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworWworICAgIEVuYWJsZWRBdFJ1
bnRpbWU9Q1NTUGFpbnRpbmdBUEksCisgICAgQ29uZGl0aW9uYWw9Q1NTX1BBSU5USU5HX0FQSSwK
KyAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAorICAgIEdsb2JhbD1Xb3JrbGV0LAorXSBp
bnRlcmZhY2UgV29ya2xldCB7CisgICAgW0NhbGxXaXRoPURvY3VtZW50XSB2b2lkIGFkZE1vZHVs
ZShVU1ZTdHJpbmcgbW9kdWxlVVJMLyosIG9wdGlvbmFsIFdvcmtsZXRPcHRpb25zIG9wdGlvbnMq
Lyk7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldENvbnNv
bGVDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldENvbnNvbGVDbGll
bnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjg5NTA2YjllMzkzMTM0Y2VjMzM2MzZjYTY2ZjFjNWRjMjRiODgx
ODIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0Q29u
c29sZUNsaWVudC5jcHAKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJXb3JrbGV0Q29uc29sZUNsaWVudC5oIgorCisjaWYgRU5BQkxF
KENTU19QQUlOVElOR19BUEkpCisKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlTWVzc2FnZS5oPgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1NjcmlwdEFyZ3VtZW50cy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL1NjcmlwdENhbGxTdGFjay5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdENh
bGxTdGFja0ZhY3RvcnkuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKKworV29ya2xldENvbnNvbGVDbGllbnQ6OldvcmtsZXRDb25zb2xlQ2xpZW50
KFdvcmtsZXRHbG9iYWxTY29wZSYgd29ya2xldEdsb2JhbFNjb3BlKQorICAgIDogbV93b3JrbGV0
R2xvYmFsU2NvcGUod29ya2xldEdsb2JhbFNjb3BlKQoreworfQorCitXb3JrbGV0Q29uc29sZUNs
aWVudDo6fldvcmtsZXRDb25zb2xlQ2xpZW50KCkgPSBkZWZhdWx0OworCit2b2lkIFdvcmtsZXRD
b25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlwZSB0eXBlLCBN
ZXNzYWdlTGV2ZWwgbGV2ZWwsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBSZWY8SW5zcGVjdG9yOjpT
Y3JpcHRBcmd1bWVudHM+JiYgYXJndW1lbnRzKQoreworICAgIFN0cmluZyBtZXNzYWdlVGV4dDsK
KyAgICBhcmd1bWVudHMtPmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyhtZXNzYWdlVGV4dCk7Cisg
ICAgYXV0byBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNz
YWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2FnZVRleHQs
IFdURk1vdmUoYXJndW1lbnRzKSwgZXhlYyk7CisgICAgbV93b3JrbGV0R2xvYmFsU2NvcGUuYWRk
Q29uc29sZU1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7Cit9CisKK3ZvaWQgV29ya2xldENvbnNv
bGVDbGllbnQ6OmNvdW50KEpTQzo6RXhlY1N0YXRlKiwgUmVmPFNjcmlwdEFyZ3VtZW50cz4mJikg
eyB9CisKK3ZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6OnRpbWUoSlNDOjpFeGVjU3RhdGUqLCBj
b25zdCBTdHJpbmcmKSB7IH0KK3ZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6OnRpbWVFbmQoSlND
OjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmKSB7IH0KKwordm9pZCBXb3JrbGV0Q29uc29sZUNs
aWVudDo6cHJvZmlsZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpIHsgfQordm9pZCBX
b3JrbGV0Q29uc29sZUNsaWVudDo6cHJvZmlsZUVuZChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0
cmluZyYpIHsgfQorCit2b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50Ojp0YWtlSGVhcFNuYXBzaG90
KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJikgeyB9Cit2b2lkIFdvcmtsZXRDb25zb2xl
Q2xpZW50Ojp0aW1lU3RhbXAoSlNDOjpFeGVjU3RhdGUqLCBSZWY8U2NyaXB0QXJndW1lbnRzPiYm
KSB7IH0KKwordm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6cmVjb3JkKEpTQzo6RXhlY1N0YXRl
KiwgUmVmPFNjcmlwdEFyZ3VtZW50cz4mJikgeyB9Cit2b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50
OjpyZWNvcmRFbmQoSlNDOjpFeGVjU3RhdGUqLCBSZWY8U2NyaXB0QXJndW1lbnRzPiYmKSB7IH0K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MGUyNzRlZjczZDEyM2Rm
ZTc4NzgwOTJhOGZhMzUxNjk0Mzg1NDQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuaApAQCAtMCwwICsxLDYzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKwor
I2luY2x1ZGUgIldvcmtsZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0NvbnNvbGVDbGllbnQuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2Ug
SlNDIHsKK2NsYXNzIEV4ZWNTdGF0ZTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBXb3JrbGV0Q29uc29sZUNsaWVudCBmaW5hbCA6IHB1YmxpYyBKU0M6OkNvbnNvbGVDbGllbnQg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFdv
cmtsZXRDb25zb2xlQ2xpZW50KFdvcmtsZXRHbG9iYWxTY29wZSYpOworICAgIHZpcnR1YWwgfldv
cmtsZXRDb25zb2xlQ2xpZW50KCk7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIG1lc3NhZ2VXaXRo
VHlwZUFuZExldmVsKE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIEpTQzo6RXhlY1N0YXRlKiwg
UmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNv
dW50KEpTQzo6RXhlY1N0YXRlKiwgUmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmKSBv
dmVycmlkZTsKKyAgICB2b2lkIHByb2ZpbGUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcm
IHRpdGxlKSBvdmVycmlkZTsKKyAgICB2b2lkIHByb2ZpbGVFbmQoSlNDOjpFeGVjU3RhdGUqLCBj
b25zdCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKKyAgICB2b2lkIHRha2VIZWFwU25hcHNob3Qo
SlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKKyAgICB2b2lk
IHRpbWUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHRpbWVFbmQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHRpdGxlKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHRpbWVTdGFtcChKU0M6OkV4ZWNTdGF0ZSosIFJlZjxJbnNwZWN0b3I6
OlNjcmlwdEFyZ3VtZW50cz4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCByZWNvcmQoSlNDOjpFeGVj
U3RhdGUqLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYpIG92ZXJyaWRlOworICAg
IHZvaWQgcmVjb3JkRW5kKEpTQzo6RXhlY1N0YXRlKiwgUmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJn
dW1lbnRzPiYmKSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBXb3JrbGV0R2xvYmFsU2NvcGUm
IG1fd29ya2xldEdsb2JhbFNjb3BlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2Nv
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wMGJjODIwMzY2ZjEzYmFkNWMwODY4YjJjY2FjMTM1NzQwNTU0NjRlCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3Bl
LmNwcApAQCAtMCwwICsxLDEzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV29ya2xldEds
b2JhbFNjb3BlLmgiCisKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKworI2luY2x1ZGUg
IkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uaCIKKyNpbmNsdWRlICJKU1dvcmtsZXRHbG9iYWxTY29wZS5oIgorI2luY2x1
ZGUgIlBhZ2VDb25zb2xlQ2xpZW50LmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5Qb2xpY3ku
aCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIldvcmtsZXRTY3JpcHRDb250cm9s
bGVyLmgiCisKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FeGNlcHRpb24uaD4KKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9JZGVudGlmaWVyc0ZhY3RvcnkuaD4KKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0xvY2suaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxsU3Rh
Y2suaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsK
KworV29ya2xldEdsb2JhbFNjb3BlOjpXb3JrbGV0R2xvYmFsU2NvcGUoV2Vha1B0cjxEb2N1bWVu
dD4mJiBkb2N1bWVudCwgU2NyaXB0U291cmNlQ29kZSYmIGNvZGUpCisgICAgOiBtX2RvY3VtZW50
KFdURk1vdmUoZG9jdW1lbnQpKQorICAgICwgbV9zZXNzaW9uSUQobV9kb2N1bWVudC0+c2Vzc2lv
bklEKCkpCisgICAgLCBtX3NjcmlwdChzdGQ6Om1ha2VfdW5pcXVlPFdvcmtsZXRTY3JpcHRDb250
cm9sbGVyPih0aGlzKSkKKyAgICAsIG1fdG9wT3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVV
bmlxdWUoKSkKKyAgICAsIG1faWRlbnRpZmllcigiV29ya2xldEdsb2JhbFNjb3BlOiIgKyBJbnNw
ZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpKQorICAgICwgbV9l
dmVudFF1ZXVlKCp0aGlzKQorICAgICwgbV9jb2RlKFdURk1vdmUoY29kZSkpCit7CisgICAgQVNT
RVJUKG1fZG9jdW1lbnQpOworICAgIEZyYW1lKiBmcmFtZSA9IG1fZG9jdW1lbnQtPmZyYW1lKCk7
CisgICAgbV9qc1J1bnRpbWVGbGFncyA9IChmcmFtZSA/IGZyYW1lLT5zZXR0aW5ncygpLmphdmFT
Y3JpcHRSdW50aW1lRmxhZ3MoKSA6IEpTQzo6UnVudGltZUZsYWdzKCkpOworICAgIEFTU0VSVCht
X2RvY3VtZW50LT5wYWdlKCkpOworCisgICAgc2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koU2VjdXJp
dHlPcmlnaW5Qb2xpY3k6OmNyZWF0ZShtX2RvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpKSk7Cisg
ICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudFNlY3Vy
aXR5UG9saWN5PihVUkwgeyBjb2RlLnVybCgpIH0sICp0aGlzKSk7Cit9CisKK1dvcmtsZXRHbG9i
YWxTY29wZTo6fldvcmtsZXRHbG9iYWxTY29wZSgpCit7CisgICAgcmVtb3ZlRnJvbUNvbnRleHRz
TWFwKCk7CisgICAgbV9zY3JpcHQtPndvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIoKS0+c2V0Q29u
c29sZUNsaWVudChudWxscHRyKTsKK30KKworU3RyaW5nIFdvcmtsZXRHbG9iYWxTY29wZTo6b3Jp
Z2luKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90b3BPcmlnaW4tPnRvU3RyaW5nKCk7Cit9CisK
K1N0cmluZyBXb3JrbGV0R2xvYmFsU2NvcGU6OnVzZXJBZ2VudChjb25zdCBVUkwmIHVybCkgY29u
c3QKK3sKKyAgICBBU1NFUlQobV9kb2N1bWVudCk7CisgICAgcmV0dXJuIG1fZG9jdW1lbnQtPnVz
ZXJBZ2VudCh1cmwpOworfQorCit2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6ZXZhbHVhdGUoKQor
eworICAgIG1fc2NyaXB0LT5ldmFsdWF0ZShtX2NvZGUpOworfQorCitib29sIFdvcmtsZXRHbG9i
YWxTY29wZTo6aXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
c2NyaXB0LT5pc0V4ZWN1dGlvbkZvcmJpZGRlbigpOworfQorCit2b2lkIFdvcmtsZXRHbG9iYWxT
Y29wZTo6ZGlzYWJsZUV2YWwoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCit7CisgICAgbV9z
Y3JpcHQtPmRpc2FibGVFdmFsKGVycm9yTWVzc2FnZSk7Cit9CisKK3ZvaWQgV29ya2xldEdsb2Jh
bFNjb3BlOjpkaXNhYmxlV2ViQXNzZW1ibHkoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCit7
CisgICAgbV9zY3JpcHQtPmRpc2FibGVXZWJBc3NlbWJseShlcnJvck1lc3NhZ2UpOworfQorCitV
UkwgV29ya2xldEdsb2JhbFNjb3BlOjpjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHVybCkgY29u
c3QKK3sKKyAgICAvLyBBbHdheXMgcmV0dXJuIGEgbnVsbCBVUkwgd2hlbiBwYXNzZWQgYSBudWxs
IHN0cmluZy4KKyAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGNoYW5nZSB0aGUgVVJMIGNvbnN0cnVj
dG9yIHRvIGhhdmUgdGhpcyBiZWhhdmlvcj8KKyAgICBpZiAodXJsLmlzTnVsbCgpKQorICAgICAg
ICByZXR1cm4gVVJMKCk7CisgICAgLy8gQWx3YXlzIHVzZSBVVEYtOCBpbiBXb3JrZXJzLgorICAg
IHJldHVybiBVUkwobV9jb2RlLnVybCgpLCB1cmwpOworfQorCit2b2lkIFdvcmtsZXRHbG9iYWxT
Y29wZTo6bG9nRXhjZXB0aW9uVG9Db25zb2xlKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBj
b25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIs
IFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+JiYgc3RhY2spCit7CisgICAgQVNTRVJUKG1fZG9jdW1l
bnQpOworICAgIG1fZG9jdW1lbnQtPmxvZ0V4Y2VwdGlvblRvQ29uc29sZShlcnJvck1lc3NhZ2Us
IHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBXVEZNb3ZlKHN0YWNrKSk7Cit9
CisKK3ZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjphZGRDb25zb2xlTWVzc2FnZShzdGQ6OnVuaXF1
ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4mJiBtZXNzYWdlKQoreworICAgIEFTU0VS
VChtX2RvY3VtZW50KTsKKyAgICBtX2RvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShXVEZNb3Zl
KG1lc3NhZ2UpKTsKK30KKwordm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNz
YWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKK3sKKyAgICBBU1NF
UlQobV9kb2N1bWVudCk7CisgICAgbV9kb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2Uoc291cmNl
LCBsZXZlbCwgbWVzc2FnZSwgcmVxdWVzdElkZW50aWZpZXIpOworfQorCit2b2lkIFdvcmtsZXRH
bG9iYWxTY29wZTo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVs
IGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2VUZXh0LCBjb25zdCBTdHJpbmcmIHNvdXJjZVVS
TCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBSZWZQdHI8U2Ny
aXB0Q2FsbFN0YWNrPiYmIGNhbGxTdGFjaywgSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB1bnNpZ25l
ZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQoreworICAgIEFTU0VSVChtX2RvY3VtZW50KTsKKyAg
ICBtX2RvY3VtZW50LT5hZGRNZXNzYWdlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBzb3Vy
Y2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgV1RGTW92ZShjYWxsU3RhY2spLCBzdGF0
ZSwgcmVxdWVzdElkZW50aWZpZXIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29w
ZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODc5YzgzZTNhNTQzNDgzNDY3MDIyNWMwZmQ1OTdkMzAzZTgzYzcxYQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5oCkBA
IC0wLDAgKzEsMTM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
KgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisK
KyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCisjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNv
ZGUuaCIKKyNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgorI2luY2x1ZGUgIlVSTC5oIgorI2lu
Y2x1ZGUgIldvcmtlckV2ZW50UXVldWUuaCIKKworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Nv
bnNvbGVNZXNzYWdlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUnVudGltZUZsYWdzLmg+
CisjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOworY2xh
c3MgU2NyaXB0U291cmNlQ29kZTsKKworY2xhc3MgV29ya2xldEdsb2JhbFNjb3BlIDogcHVibGlj
IFJlZkNvdW50ZWQ8V29ya2xldEdsb2JhbFNjb3BlPiwgcHVibGljIFN1cHBsZW1lbnRhYmxlPFdv
cmtsZXRHbG9iYWxTY29wZT4sIHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0LCBwdWJsaWMg
RXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V29ya2xl
dEdsb2JhbFNjb3BlKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNQYWludFdvcmtsZXRHbG9iYWxT
Y29wZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBjb25zdCBVUkwmIHVybCgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fY29kZS51cmwoKTsgfQorICAgIFN0cmluZyBvcmlnaW4oKSBj
b25zdCBmaW5hbDsKKyAgICBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX2lkZW50aWZpZXI7IH0KKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorICAgIElE
QkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiBpZGJDb25uZWN0aW9uUHJveHkoKSBmaW5hbCB7
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCisKKyAgICB2
b2lkIHBvc3RUYXNrKFRhc2smJikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorCisg
ICAgdm9pZCBldmFsdWF0ZSgpOworCisgICAgdXNpbmcgUmVmQ291bnRlZDo6cmVmOworICAgIHVz
aW5nIFJlZkNvdW50ZWQ6OmRlcmVmOworCisgICAgV29ya2xldFNjcmlwdENvbnRyb2xsZXIqIHNj
cmlwdCgpIHsgcmV0dXJuIG1fc2NyaXB0LmdldCgpOyB9CisKKyAgICB2b2lkIGFkZENvbnNvbGVN
ZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiYmKSBmaW5h
bDsKKworICAgIGJvb2wgaXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0IGZpbmFsOworICAg
IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3RvcE9y
aWdpbi5nZXQoKTsgfQorCisgICAgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyKCkgZmlu
YWwgeyByZXR1cm4gbnVsbHB0cjsgfQorCisgICAgYm9vbCBpc0NvbnRleHRUaHJlYWQoKSBjb25z
dCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBpc1NlY3VyZUNvbnRleHQoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorCisgICAgSlNDOjpSdW50aW1lRmxhZ3MganNSdW50
aW1lRmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX2pzUnVudGltZUZsYWdzOyB9CisKK3Byb3RlY3Rl
ZDoKKyAgICBXb3JrbGV0R2xvYmFsU2NvcGUoV2Vha1B0cjxEb2N1bWVudD4mJiwgU2NyaXB0U291
cmNlQ29kZSYmKTsKKworICAgIFdlYWtQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CisKK3ByaXZh
dGU6CisgICAgdm9pZCByZWZTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgZmluYWwgeyByZWYoKTsg
fQorICAgIHZvaWQgZGVyZWZTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgZmluYWwgeyBkZXJlZigp
OyB9CisKKyAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQorICAgIHZv
aWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQorCisgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIGNvbnN0X2Nhc3Q8V29ya2xldEdsb2JhbFNjb3BlKj4odGhpcyk7IH0KKyAgICBFdmVudFRh
cmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IFdvcmtsZXRHbG9iYWxTY29wZUV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQorCisgICAgYm9v
bCBpc1dvcmtsZXRHbG9iYWxTY29wZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKwor
ICAgIHZvaWQgbG9nRXhjZXB0aW9uVG9Db25zb2xlKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
LCBjb25zdCBTdHJpbmcmLCBpbnQsIGludCwgUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0
YWNrPiYmKSBmaW5hbDsKKyAgICB2b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2Fn
ZUxldmVsLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCwgdW5zaWduZWQs
IFJlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFjaz4mJiwgSlNDOjpFeGVjU3RhdGUqLCB1
bnNpZ25lZCBsb25nKSBmaW5hbDsKKyAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VT
b3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgbG9uZykgZmluYWw7
CisKKyAgICBFdmVudFRhcmdldCogZXJyb3JFdmVudFRhcmdldCgpIGZpbmFsIHsgcmV0dXJuIHRo
aXM7IH0KKyAgICBFdmVudFF1ZXVlJiBldmVudFF1ZXVlKCkgY29uc3QgZmluYWwgeyBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgcmV0dXJuIG1fZXZlbnRRdWV1ZTsgfQorCisjaWYgRU5BQkxFKFNVQlRM
RV9DUllQVE8pCisgICAgYm9vbCB3cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYs
IFZlY3Rvcjx1aW50OF90PiYpIGZpbmFsIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsg
cmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCB1bndyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiwgVmVjdG9yPHVpbnQ4X3Q+JikgZmluYWwgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KKyNlbmRpZgorICAgIFVSTCBjb21wbGV0ZVVSTChjb25z
dCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKKyAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQorICAgIFN0cmluZyB1c2VyQWdlbnQo
Y29uc3QgVVJMJikgY29uc3QgZmluYWw7CisgICAgdm9pZCBkaXNhYmxlRXZhbChjb25zdCBTdHJp
bmcmKSBmaW5hbDsKKyAgICB2b2lkIGRpc2FibGVXZWJBc3NlbWJseShjb25zdCBTdHJpbmcmKSBm
aW5hbDsKKworICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxXb3JrbGV0U2NyaXB0Q29udHJvbGxlcj4gbV9zY3JpcHQ7CisKKyAgICBSZWY8U2VjdXJp
dHlPcmlnaW4+IG1fdG9wT3JpZ2luOworICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CisKKyAgICAv
LyBGSVhNRTogVGhpcyBpcyBub3QgaW1wbGVtZW50ZWQgcHJvcGVybHksIGl0IGp1c3Qgc2F0aXNm
aWVzIHRoZSBjb21waWxlci4KKyAgICBtdXRhYmxlIFdvcmtlckV2ZW50UXVldWUgbV9ldmVudFF1
ZXVlOworCisgICAgSlNDOjpSdW50aW1lRmxhZ3MgbV9qc1J1bnRpbWVGbGFnczsKKyAgICBTY3Jp
cHRTb3VyY2VDb2RlIG1fY29kZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGUpCitz
dGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkgeyByZXR1cm4gY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpOyB9CitTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
bGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3NTlmMGNlMWQxNmY4Njkx
ODYwMTI3NzZmMGRiMTZiNjFiYWE0NzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaWRsCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorKi8KKworWworICAgIEN1c3RvbVByb3h5VG9KU09iamVjdCwKKyAgICBFeHBv
c2VkPVdvcmtsZXQsCisgICAgRW5hYmxlZEF0UnVudGltZT1DU1NQYWludGluZ0FQSSwKKyAgICBD
b25kaXRpb25hbD1DU1NfUEFJTlRJTkdfQVBJLAorICAgIEpTTGVnYWN5UGFyZW50PUpTV29ya2xl
dEdsb2JhbFNjb3BlQmFzZSwKKyAgICBJbXBsaWNpdFRoaXMsCisgICAgSXNJbW11dGFibGVQcm90
b3R5cGVFeG90aWNPYmplY3QsCisgICAgSXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3RP
blByb3RvdHlwZSwKKyAgICBHbG9iYWw9V29ya2xldCwKK10gaW50ZXJmYWNlIFdvcmtsZXRHbG9i
YWxTY29wZSA6IEV2ZW50VGFyZ2V0IHsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
bGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjY5ZWZkNWQwOGNj
YjEyMmY0ZjhiYTY4OGMzZDRkNjI2MWU5YTZiOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMCwwICsxLDE5
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgorCisj
aWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIK
KyNpbmNsdWRlICJKU0V2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiSlNFeGVjU3RhdGUuaCIKKyNp
bmNsdWRlICJKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiU2NyaXB0U291
cmNlQ29kZS5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKKyNpbmNsdWRlICJX
b3JrbGV0Q29uc29sZUNsaWVudC5oIgorCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29tcGxl
dGlvbi5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0V4Y2VwdGlvbi5oPgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0V4Y2VwdGlvbkhlbHBlcnMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xv
Y2suaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9taXNlRGVmZXJyZWRUaW1lci5oPgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgewordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworV29ya2xldFNjcmlwdENvbnRyb2xsZXI6
OldvcmtsZXRTY3JpcHRDb250cm9sbGVyKFdvcmtsZXRHbG9iYWxTY29wZSogd29ya2xldEdsb2Jh
bFNjb3BlKQorICAgIDogbV92bShWTTo6Y3JlYXRlKCkpCisgICAgLCBtX3dvcmtsZXRHbG9iYWxT
Y29wZSh3b3JrbGV0R2xvYmFsU2NvcGUpCisgICAgLCBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBw
ZXIoKm1fdm0pCit7CisgICAgbV92bS0+aGVhcC5hY3F1aXJlQWNjZXNzKCk7IC8vIEl0J3Mgbm90
IGNsZWFyIHRoYXQgd2UgaGF2ZSBnb29kIGRpc2NpcGxpbmUgZm9yIGhlYXAgYWNjZXNzLCBzbyB0
dXJuIGl0IG9uIHBlcm1hbmVudGx5LgorICAgIEpTVk1DbGllbnREYXRhOjppbml0Tm9ybWFsV29y
bGQobV92bS5nZXQoKSk7Cit9CisKK1dvcmtsZXRTY3JpcHRDb250cm9sbGVyOjp+V29ya2xldFNj
cmlwdENvbnRyb2xsZXIoKQoreworICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKCkpOworICAgIG1f
d29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci5jbGVhcigpOworICAgIG1fdm0gPSBudWxscHRyOwor
ICAgIGlmIChtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpIHsKKyAgICAgICAgbV93b3JrbGV0
R2xvYmFsU2NvcGVXcmFwcGVyLT5jbGVhckRPTUd1YXJkZWRPYmplY3RzKCk7CisgICAgICAgIG1f
d29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+c2V0Q29uc29sZUNsaWVudChudWxscHRyKTsKKyAg
ICAgICAgbV9jb25zb2xlQ2xpZW50ID0gbnVsbHB0cjsKKyAgICB9Cit9CisKK3ZvaWQgV29ya2xl
dFNjcmlwdENvbnRyb2xsZXI6OmZvcmJpZEV4ZWN1dGlvbigpCit7CisgICAgQVNTRVJUKG1fd29y
a2xldEdsb2JhbFNjb3BlLT5pc0NvbnRleHRUaHJlYWQoKSk7CisgICAgbV9leGVjdXRpb25Gb3Ji
aWRkZW4gPSB0cnVlOworfQorCitib29sIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppc0V4ZWN1
dGlvbkZvcmJpZGRlbigpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fd29ya2xldEdsb2JhbFNjb3Bl
LT5pc0NvbnRleHRUaHJlYWQoKSk7CisgICAgcmV0dXJuIG1fZXhlY3V0aW9uRm9yYmlkZGVuOwor
fQorCit2b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpkaXNhYmxlRXZhbChjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSkKK3sKKyAgICBpbml0U2NyaXB0SWZOZWVkZWQoKTsKKyAgICBKU0xv
Y2tIb2xkZXIgbG9jayB7IHZtKCkgfTsKKworICAgIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBl
ci0+c2V0RXZhbEVuYWJsZWQoZmFsc2UsIGVycm9yTWVzc2FnZSk7Cit9CisKK3ZvaWQgV29ya2xl
dFNjcmlwdENvbnRyb2xsZXI6OmRpc2FibGVXZWJBc3NlbWJseShjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSkKK3sKKyAgICBpbml0U2NyaXB0SWZOZWVkZWQoKTsKKyAgICBKU0xvY2tIb2xkZXIg
bG9jayB7IHZtKCkgfTsKKworICAgIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+c2V0V2Vi
QXNzZW1ibHlFbmFibGVkKGZhbHNlLCBlcnJvck1lc3NhZ2UpOworfQorCisKK3RlbXBsYXRlPHR5
cGVuYW1lIEpTR2xvYmFsU2NvcGVQcm90b3R5cGUsIHR5cGVuYW1lIEpTR2xvYmFsU2NvcGUsIHR5
cGVuYW1lIEdsb2JhbFNjb3BlPgordm9pZCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6aW5pdFNj
cmlwdFdpdGhTdWJjbGFzcygpCit7CisgICAgQVNTRVJUKCFtX3dvcmtsZXRHbG9iYWxTY29wZVdy
YXBwZXIpOworCisgICAgSlNMb2NrSG9sZGVyIGxvY2sobV92bS5nZXQoKSk7CisKKyAgICAvLyBF
eHBsaWNpdGx5IHByb3RlY3QgdGhlIGdsb2JhbCBvYmplY3QncyBwcm90b3R5cGUgc28gaXQgaXNu
J3QgY29sbGVjdGVkCisgICAgLy8gd2hlbiB3ZSBhbGxvY2F0ZSB0aGUgZ2xvYmFsIG9iamVjdC4g
KE9uY2UgdGhlIGdsb2JhbCBvYmplY3QgaXMgZnVsbHkKKyAgICAvLyBjb25zdHJ1Y3RlZCwgaXQg
Y2FuIG1hcmsgaXRzIG93biBwcm90b3R5cGUuKQorICAgIFN0cnVjdHVyZSogY29udGV4dFByb3Rv
dHlwZVN0cnVjdHVyZSA9IEpTR2xvYmFsU2NvcGVQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSgq
bV92bSwgbnVsbHB0ciwganNOdWxsKCkpOworICAgIFN0cm9uZzxKU0dsb2JhbFNjb3BlUHJvdG90
eXBlPiBjb250ZXh0UHJvdG90eXBlKCptX3ZtLCBKU0dsb2JhbFNjb3BlUHJvdG90eXBlOjpjcmVh
dGUoKm1fdm0sIG51bGxwdHIsIGNvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUpKTsKKyAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IEpTR2xvYmFsU2NvcGU6OmNyZWF0ZVN0cnVjdHVyZSgqbV92bSwg
bnVsbHB0ciwgY29udGV4dFByb3RvdHlwZS5nZXQoKSk7CisgICAgYXV0byogcHJveHlTdHJ1Y3R1
cmUgPSBKU1Byb3h5OjpjcmVhdGVTdHJ1Y3R1cmUoKm1fdm0sIG51bGxwdHIsIGpzTnVsbCgpLCBQ
dXJlRm9yd2FyZGluZ1Byb3h5VHlwZSk7CisgICAgYXV0byogcHJveHkgPSBKU1Byb3h5OjpjcmVh
dGUoKm1fdm0sIHByb3h5U3RydWN0dXJlKTsKKworICAgIG1fd29ya2xldEdsb2JhbFNjb3BlV3Jh
cHBlci5zZXQoKm1fdm0sIEpTR2xvYmFsU2NvcGU6OmNyZWF0ZSgqbV92bSwgc3RydWN0dXJlLCBz
dGF0aWNfY2FzdDxHbG9iYWxTY29wZSY+KCptX3dvcmtsZXRHbG9iYWxTY29wZSksIHByb3h5KSk7
CisgICAgY29udGV4dFByb3RvdHlwZVN0cnVjdHVyZS0+c2V0R2xvYmFsT2JqZWN0KCptX3ZtLCBt
X3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpOworICAgIEFTU0VSVChzdHJ1Y3R1cmUt
Pmdsb2JhbE9iamVjdCgpID09IG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcik7CisgICAgQVNT
RVJUKG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+c3RydWN0dXJlKCptX3ZtKS0+Z2xvYmFs
T2JqZWN0KCkgPT0gbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKTsKKyAgICBjb250ZXh0UHJv
dG90eXBlLT5zdHJ1Y3R1cmUoKm1fdm0pLT5zZXRHbG9iYWxPYmplY3QoKm1fdm0sIG1fd29ya2xl
dEdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7CisgICAgY29udGV4dFByb3RvdHlwZS0+c3RydWN0
dXJlKCptX3ZtKS0+c2V0UHJvdG90eXBlV2l0aG91dFRyYW5zaXRpb24oKm1fdm0sIEpTR2xvYmFs
U2NvcGU6OnByb3RvdHlwZSgqbV92bSwgKm1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci5nZXQo
KSkpOworCisgICAgcHJveHktPnNldFRhcmdldCgqbV92bSwgbV93b3JrbGV0R2xvYmFsU2NvcGVX
cmFwcGVyLmdldCgpKTsKKyAgICBwcm94eS0+c3RydWN0dXJlKCptX3ZtKS0+c2V0R2xvYmFsT2Jq
ZWN0KCptX3ZtLCBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpOworCisgICAgQVNT
RVJUKG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3Jr
bGV0R2xvYmFsU2NvcGVXcmFwcGVyKTsKKyAgICBBU1NFUlQoYXNPYmplY3QobV93b3JrbGV0R2xv
YmFsU2NvcGVXcmFwcGVyLT5nZXRQcm90b3R5cGVEaXJlY3QoKm1fdm0pKS0+Z2xvYmFsT2JqZWN0
KCkgPT0gbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKTsKKworICAgIG1fY29uc29sZUNsaWVu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8V29ya2xldENvbnNvbGVDbGllbnQ+KCptX3dvcmtsZXRHbG9i
YWxTY29wZSk7CisgICAgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5zZXRDb25zb2xlQ2xp
ZW50KG1fY29uc29sZUNsaWVudC5nZXQoKSk7Cit9CisKK3ZvaWQgV29ya2xldFNjcmlwdENvbnRy
b2xsZXI6OmluaXRTY3JpcHQoKQoreworICAgIGlmIChtX3dvcmtsZXRHbG9iYWxTY29wZS0+aXNQ
YWludFdvcmtsZXRHbG9iYWxTY29wZSgpKSB7CisgICAgICAgIGluaXRTY3JpcHRXaXRoU3ViY2xh
c3M8SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZVByb3RvdHlwZSwgSlNQYWludFdvcmtsZXRHbG9i
YWxTY29wZSwgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+KCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBXb3JrbGV0U2NyaXB0
Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwg
U3RyaW5nKiByZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2UpCit7CisgICAgaWYgKGlzRXhlY3V0aW9u
Rm9yYmlkZGVuKCkpCisgICAgICAgIHJldHVybjsKKworICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0
aW9uPiBleGNlcHRpb247CisgICAgZXZhbHVhdGUoc291cmNlQ29kZSwgZXhjZXB0aW9uLCByZXR1
cm5lZEV4Y2VwdGlvbk1lc3NhZ2UpOworICAgIGlmIChleGNlcHRpb24pIHsKKyAgICAgICAgSlNM
b2NrSG9sZGVyIGxvY2sodm0oKSk7CisgICAgICAgIHJlcG9ydEV4Y2VwdGlvbihtX3dvcmtsZXRH
bG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbEV4ZWMoKSwgZXhjZXB0aW9uKTsKKyAgICB9Cit9CisK
K3ZvaWQgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJj
ZUNvZGUmIHNvdXJjZUNvZGUsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNl
cHRpb24sIFN0cmluZyogcmV0dXJuZWRFeGNlcHRpb25NZXNzYWdlKQoreworICAgIGlmIChpc0V4
ZWN1dGlvbkZvcmJpZGRlbigpKQorICAgICAgICByZXR1cm47CisKKyAgICBpbml0U2NyaXB0SWZO
ZWVkZWQoKTsKKworICAgIGF1dG8mIHN0YXRlID0gKm1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBl
ci0+Z2xvYmFsRXhlYygpOworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgSlNMb2NrSG9s
ZGVyIGxvY2sgeyB2bSB9OworCisgICAgSlNFeGVjU3RhdGU6OnByb2ZpbGVkRXZhbHVhdGUoJnN0
YXRlLCBKU0M6OlByb2ZpbGluZ1JlYXNvbjo6T3RoZXIsIHNvdXJjZUNvZGUuanNTb3VyY2VDb2Rl
KCksIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+Z2xvYmFsVGhpcygpLCByZXR1cm5lZEV4
Y2VwdGlvbik7CisKKyAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pIHsKKyAgICAgICAgLy8gVGhp
cyBGSVhNRSBpcyBmcm9tIFdvcmtlclNjcmlwdENvbnRyb2xsZXIuCisgICAgICAgIGlmIChtX3dv
cmtsZXRHbG9iYWxTY29wZS0+Y2FuSW5jbHVkZUVycm9yRGV0YWlscyhzb3VyY2VDb2RlLmNhY2hl
ZFNjcmlwdCgpLCBzb3VyY2VDb2RlLnVybCgpLnN0cmluZygpKSkgeworICAgICAgICAgICAgLy8g
RklYTUU6IEl0J3Mgbm90IGdyZWF0IHRoYXQgdGhpcyBjYW4gcnVuIGFyYml0cmFyeSBjb2RlIHRv
IHN0cmluZy1pZnkgdGhlIHZhbHVlIG9mIHRoZSBleGNlcHRpb24uCisgICAgICAgICAgICAvLyBE
byB3ZSBuZWVkIHRvIGRvIGFueXRoaW5nIHRvIGhhbmRsZSB0aGF0IHByb3Blcmx5LCBpZiBpdCwg
c2F5LCByYWlzZXMgYW5vdGhlciBleGNlcHRpb24/CisgICAgICAgICAgICBpZiAocmV0dXJuZWRF
eGNlcHRpb25NZXNzYWdlKQorICAgICAgICAgICAgICAgICpyZXR1cm5lZEV4Y2VwdGlvbk1lc3Nh
Z2UgPSByZXR1cm5lZEV4Y2VwdGlvbi0+dmFsdWUoKS50b1dURlN0cmluZygmc3RhdGUpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gT3ZlcndyaXRlIHRoZSBkZXRhaWxlZCBlcnJv
ciB3aXRoIGEgZ2VuZXJpYyBlcnJvci4KKyAgICAgICAgICAgIFN0cmluZyBnZW5lcmljRXJyb3JN
ZXNzYWdlIHsgIlNjcmlwdCBlcnJvci4iX3MgfTsKKyAgICAgICAgICAgIGlmIChyZXR1cm5lZEV4
Y2VwdGlvbk1lc3NhZ2UpCisgICAgICAgICAgICAgICAgKnJldHVybmVkRXhjZXB0aW9uTWVzc2Fn
ZSA9IGdlbmVyaWNFcnJvck1lc3NhZ2U7CisgICAgICAgICAgICByZXR1cm5lZEV4Y2VwdGlvbiA9
IEpTQzo6RXhjZXB0aW9uOjpjcmVhdGUodm0sIGNyZWF0ZUVycm9yKCZzdGF0ZSwgZ2VuZXJpY0Vy
cm9yTWVzc2FnZSkpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFdvcmtsZXRTY3JpcHRD
b250cm9sbGVyOjpzZXRFeGNlcHRpb24oSlNDOjpFeGNlcHRpb24qIGV4Y2VwdGlvbikKK3sKKyAg
ICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+Z2xv
YmFsRXhlYygpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBl
eGNlcHRpb24pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmJhNTc4YmJmOWFiMzIxYzk3MDE0NGViOGZjZTM4YmVlNTM2NWU4N2YKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5o
CkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorCisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGVidWdnZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU1J1bkxvb3BUaW1lci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZy5o
PgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNs
dWRlIDx3dGYvTmFrZWRQdHIuaD4KKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBWTTsKK30KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBKU1dvcmtsZXRHbG9iYWxTY29wZTsKK2NsYXNz
IFNjcmlwdFNvdXJjZUNvZGU7CitjbGFzcyBXb3JrbGV0Q29uc29sZUNsaWVudDsKK2NsYXNzIFdv
cmtsZXRHbG9iYWxTY29wZTsKK2NsYXNzIFdvcmtsZXRDb25zb2xlQ2xpZW50OworCitjbGFzcyBX
b3JrbGV0U2NyaXB0Q29udHJvbGxlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV29ya2xl
dFNjcmlwdENvbnRyb2xsZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAg
ICBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcihXb3JrbGV0R2xvYmFsU2NvcGUqKTsKKyAgICB+V29y
a2xldFNjcmlwdENvbnRyb2xsZXIoKTsKKworICAgIEpTV29ya2xldEdsb2JhbFNjb3BlKiB3b3Jr
bGV0R2xvYmFsU2NvcGVXcmFwcGVyKCkKKyAgICB7CisgICAgICAgIGluaXRTY3JpcHRJZk5lZWRl
ZCgpOworICAgICAgICByZXR1cm4gbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpOwor
ICAgIH0KKworICAgIHZvaWQgZm9yYmlkRXhlY3V0aW9uKCk7CisgICAgYm9vbCBpc0V4ZWN1dGlv
bkZvcmJpZGRlbigpIGNvbnN0OworCisgICAgdm9pZCBkaXNhYmxlRXZhbChjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSk7CisgICAgdm9pZCBkaXNhYmxlV2ViQXNzZW1ibHkoY29uc3QgU3RyaW5n
JiBlcnJvck1lc3NhZ2UpOworCisgICAgdm9pZCBldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VD
b2RlJiwgU3RyaW5nKiByZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2UgPSBudWxscHRyKTsKKyAgICB2
b2lkIGV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBOYWtlZFB0cjxKU0M6OkV4Y2Vw
dGlvbj4mIHJldHVybmVkRXhjZXB0aW9uLCBTdHJpbmcqIHJldHVybmVkRXhjZXB0aW9uTWVzc2Fn
ZSA9IG51bGxwdHIpOworCisgICAgdm9pZCBzZXRFeGNlcHRpb24oSlNDOjpFeGNlcHRpb24qKTsK
KworICAgIEpTQzo6Vk0mIHZtKCkgeyByZXR1cm4gKm1fdm07IH0KKworcHJpdmF0ZToKKyAgICB2
b2lkIGluaXRTY3JpcHRJZk5lZWRlZCgpCisgICAgeworICAgICAgICBpZiAoIW1fd29ya2xldEds
b2JhbFNjb3BlV3JhcHBlcikKKyAgICAgICAgICAgIGluaXRTY3JpcHQoKTsKKyAgICB9CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0U2NyaXB0KCk7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBKU0dsb2JhbFNjb3BlUHJvdG90eXBlLCB0eXBlbmFtZSBKU0dsb2JhbFNjb3BlLCB0eXBlbmFt
ZSBHbG9iYWxTY29wZT4KKyAgICB2b2lkIGluaXRTY3JpcHRXaXRoU3ViY2xhc3MoKTsKKworICAg
IGJvb2wgbV9leGVjdXRpb25Gb3JiaWRkZW4geyBmYWxzZSB9OworICAgIFJlZlB0cjxKU0M6OlZN
PiBtX3ZtOworICAgIFdvcmtsZXRHbG9iYWxTY29wZSogbV93b3JrbGV0R2xvYmFsU2NvcGU7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPFdvcmtsZXRDb25zb2xlQ2xpZW50PiBtX2NvbnNvbGVDbGllbnQ7
CisgICAgSlNDOjpTdHJvbmc8SlNXb3JrbGV0R2xvYmFsU2NvcGU+IG1fd29ya2xldEdsb2JhbFNj
b3BlV3JhcHBlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDJjYTNlZGU0NWVj
NzZlMmI5MzZkMzU5YjI0ZjRlMTM4MGQzZDhiZjguLmU3YTFlOTVhNWY4NjNmYjM0ZjI1Yzk2Y2Y1
ZTM5OWQ2NTA4NmUxNzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOC0xMC0yOSAgSnVzdGluIE1pY2hhdWQgIDxq
dXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIG5ldyBnbG9iYWwgb2JqZWN0
IGFuZCBwcmVsaW1pbmFyeSBXb3JrbGV0cyBzdXBwb3J0IGZvciBDU1MgcGFpbnRpbmcgYXBpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA5NzkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvYmluZGluZ3MvbWFpbi5weToKKyAgICAgICAgKEJpbmRpbmdzVGVzdHMuZ2VuZXJh
dGVfc3VwcGxlbWVudGFsX2RlcGVuZGVuY3kpOgorICAgICAgICAoQmluZGluZ3NUZXN0cy5tYWlu
KToKKwogMjAxOC0xMC0yNiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIzNzQ3OSBhbmQgcjIzNzQ4NC4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmluZGluZ3MvbWFpbi5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvYmluZGluZ3MvbWFpbi5weQppbmRleCAwNGNiZDg1MDU2NzNi
ZDVjNmYyZTlkNzA1MjA4MWYxMmQ2NmM0NGUyLi4yMDkzN2JlZDZkOWQ3YjhhNjIzODAzODhiN2Vl
YzVlYmFkNGI0OTMxIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2JpbmRpbmdz
L21haW4ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iaW5kaW5ncy9tYWluLnB5CkBA
IC03MCw3ICs3MCw3IEBAIGNsYXNzIEJpbmRpbmdzVGVzdHM6CiAgICAgICAgICAgICBleGl0X2Nv
ZGUgPSBlLmV4aXRfY29kZQogICAgICAgICByZXR1cm4gZXhpdF9jb2RlCiAKLSAgICBkZWYgZ2Vu
ZXJhdGVfc3VwcGxlbWVudGFsX2RlcGVuZGVuY3koc2VsZiwgaW5wdXRfZGlyZWN0b3J5LCBzdXBw
bGVtZW50YWxfZGVwZW5kZW5jeV9maWxlLCB3aW5kb3dfY29uc3RydWN0b3JzX2ZpbGUsIHdvcmtl
cmdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlLCBkZWRpY2F0ZWR3b3JrZXJnbG9iYWxzY29w
ZV9jb25zdHJ1Y3RvcnNfZmlsZSwgc2VydmljZXdvcmtlcmdsb2JhbHNjb3BlX2NvbnN0cnVjdG9y
c19maWxlKToKKyAgICBkZWYgZ2VuZXJhdGVfc3VwcGxlbWVudGFsX2RlcGVuZGVuY3koc2VsZiwg
aW5wdXRfZGlyZWN0b3J5LCBzdXBwbGVtZW50YWxfZGVwZW5kZW5jeV9maWxlLCB3aW5kb3dfY29u
c3RydWN0b3JzX2ZpbGUsIHdvcmtlcmdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlLCBkZWRp
Y2F0ZWR3b3JrZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSwgc2VydmljZXdvcmtlcmds
b2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlLCB3b3JrbGV0Z2xvYmFsc2NvcGVfY29uc3RydWN0
b3JzX2ZpbGUsIHBhaW50d29ya2xldGdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlKToKICAg
ICAgICAgaWRsX2ZpbGVzX2xpc3QgPSB0ZW1wZmlsZS5ta3N0ZW1wKCkKICAgICAgICAgZm9yIGlu
cHV0X2ZpbGUgaW4gb3MubGlzdGRpcihpbnB1dF9kaXJlY3RvcnkpOgogICAgICAgICAgICAgKG5h
bWUsIGV4dGVuc2lvbikgPSBvcy5wYXRoLnNwbGl0ZXh0KGlucHV0X2ZpbGUpCkBAIC04OCw3ICs4
OCw5IEBAIGNsYXNzIEJpbmRpbmdzVGVzdHM6CiAgICAgICAgICAgICAgICAnLS13aW5kb3dDb25z
dHJ1Y3RvcnNGaWxlJywgd2luZG93X2NvbnN0cnVjdG9yc19maWxlLAogICAgICAgICAgICAgICAg
Jy0td29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlJywgd29ya2VyZ2xvYmFsc2NvcGVf
Y29uc3RydWN0b3JzX2ZpbGUsCiAgICAgICAgICAgICAgICAnLS1kZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUnLCBkZWRpY2F0ZWR3b3JrZXJnbG9iYWxzY29wZV9jb25z
dHJ1Y3RvcnNfZmlsZSwKLSAgICAgICAgICAgICAgICctLXNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZUNvbnN0cnVjdG9yc0ZpbGUnLCBzZXJ2aWNld29ya2VyZ2xvYmFsc2NvcGVfY29uc3RydWN0b3Jz
X2ZpbGVdCisgICAgICAgICAgICAgICAnLS1zZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1
Y3RvcnNGaWxlJywgc2VydmljZXdvcmtlcmdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlLAor
ICAgICAgICAgICAgICAgJy0td29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZScsIHdv
cmtsZXRnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSwKKyAgICAgICAgICAgICAgICctLXBh
aW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZScsIHBhaW50d29ya2xldGdsb2Jh
bHNjb3BlX2NvbnN0cnVjdG9yc19maWxlXQogCiAgICAgICAgIGV4aXRfY29kZSA9IDAKICAgICAg
ICAgdHJ5OgpAQCAtMTg1LDEzICsxODcsMTcgQEAgY2xhc3MgQmluZGluZ3NUZXN0czoKICAgICAg
ICAgd29ya2VyZ2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGUgPSB0ZW1wZmlsZS5ta3N0ZW1w
KCkKICAgICAgICAgZGVkaWNhdGVkd29ya2VyZ2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGUg
PSB0ZW1wZmlsZS5ta3N0ZW1wKCkKICAgICAgICAgc2VydmljZXdvcmtlcmdsb2JhbHNjb3BlX2Nv
bnN0cnVjdG9yc19maWxlID0gdGVtcGZpbGUubWtzdGVtcCgpCi0gICAgICAgIGlmIHNlbGYuZ2Vu
ZXJhdGVfc3VwcGxlbWVudGFsX2RlcGVuZGVuY3koaW5wdXRfZGlyZWN0b3J5LCBzdXBwbGVtZW50
YWxfZGVwZW5kZW5jeV9maWxlWzFdLCB3aW5kb3dfY29uc3RydWN0b3JzX2ZpbGVbMV0sIHdvcmtl
cmdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlWzFdLCBkZWRpY2F0ZWR3b3JrZXJnbG9iYWxz
Y29wZV9jb25zdHJ1Y3RvcnNfZmlsZVsxXSwgc2VydmljZXdvcmtlcmdsb2JhbHNjb3BlX2NvbnN0
cnVjdG9yc19maWxlWzFdKToKKyAgICAgICAgd29ya2xldGdsb2JhbHNjb3BlX2NvbnN0cnVjdG9y
c19maWxlID0gdGVtcGZpbGUubWtzdGVtcCgpCisgICAgICAgIHBhaW50d29ya2xldGdsb2JhbHNj
b3BlX2NvbnN0cnVjdG9yc19maWxlID0gdGVtcGZpbGUubWtzdGVtcCgpCisgICAgICAgIGlmIHNl
bGYuZ2VuZXJhdGVfc3VwcGxlbWVudGFsX2RlcGVuZGVuY3koaW5wdXRfZGlyZWN0b3J5LCBzdXBw
bGVtZW50YWxfZGVwZW5kZW5jeV9maWxlWzFdLCB3aW5kb3dfY29uc3RydWN0b3JzX2ZpbGVbMV0s
IHdvcmtlcmdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlWzFdLCBkZWRpY2F0ZWR3b3JrZXJn
bG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZVsxXSwgc2VydmljZXdvcmtlcmdsb2JhbHNjb3Bl
X2NvbnN0cnVjdG9yc19maWxlWzFdLCB3b3JrbGV0Z2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2Zp
bGVbMV0sIHBhaW50d29ya2xldGdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlWzFdKToKICAg
ICAgICAgICAgIHByaW50KCdGYWlsZWQgdG8gZ2VuZXJhdGUgYSBzdXBwbGVtZW50YWwgZGVwZW5k
ZW5jeSBmaWxlLicpCiAgICAgICAgICAgICBzZWxmLmNsb3NlX2FuZF9yZW1vdmUoc3VwcGxlbWVu
dGFsX2RlcGVuZGVuY3lfZmlsZSkKICAgICAgICAgICAgIHNlbGYuY2xvc2VfYW5kX3JlbW92ZSh3
aW5kb3dfY29uc3RydWN0b3JzX2ZpbGUpCiAgICAgICAgICAgICBzZWxmLmNsb3NlX2FuZF9yZW1v
dmUod29ya2VyZ2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGUpCiAgICAgICAgICAgICBzZWxm
LmNsb3NlX2FuZF9yZW1vdmUoZGVkaWNhdGVkd29ya2VyZ2xvYmFsc2NvcGVfY29uc3RydWN0b3Jz
X2ZpbGUpCiAgICAgICAgICAgICBzZWxmLmNsb3NlX2FuZF9yZW1vdmUoc2VydmljZXdvcmtlcmds
b2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlKQorICAgICAgICAgICAgc2VsZi5jbG9zZV9hbmRf
cmVtb3ZlKHdvcmtsZXRnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSkKKyAgICAgICAgICAg
IHNlbGYuY2xvc2VfYW5kX3JlbW92ZShwYWludHdvcmtsZXRnbG9iYWxzY29wZV9jb25zdHJ1Y3Rv
cnNfZmlsZSkKICAgICAgICAgICAgIHJldHVybiAtMQogCiAgICAgICAgIGZvciBnZW5lcmF0b3Ig
aW4gc2VsZi5nZW5lcmF0b3JzOgpAQCAtMjA1LDYgKzIxMSw4IEBAIGNsYXNzIEJpbmRpbmdzVGVz
dHM6CiAgICAgICAgIHNlbGYuY2xvc2VfYW5kX3JlbW92ZSh3b3JrZXJnbG9iYWxzY29wZV9jb25z
dHJ1Y3RvcnNfZmlsZSkKICAgICAgICAgc2VsZi5jbG9zZV9hbmRfcmVtb3ZlKGRlZGljYXRlZHdv
cmtlcmdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlKQogICAgICAgICBzZWxmLmNsb3NlX2Fu
ZF9yZW1vdmUoc2VydmljZXdvcmtlcmdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlKQorICAg
ICAgICBzZWxmLmNsb3NlX2FuZF9yZW1vdmUod29ya2xldGdsb2JhbHNjb3BlX2NvbnN0cnVjdG9y
c19maWxlKQorICAgICAgICBzZWxmLmNsb3NlX2FuZF9yZW1vdmUocGFpbnR3b3JrbGV0Z2xvYmFs
c2NvcGVfY29uc3RydWN0b3JzX2ZpbGUpCiAKICAgICAgICAgaWYgc2VsZi5qc29uX2ZpbGVfbmFt
ZToKICAgICAgICAgICAgIGpzb25fZGF0YSA9IHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxYjU4MGQ5NDkwMTFmNDY0MTNi
ZGM2M2Y4NDg5NDc2MjA3MjQwNTRjLi45ZGQyY2ZkMThmMWI5N2M1ODBmZjIwNjZkZjVhZWQxZjM2
OGQ1OWJjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTgtMTAtMjkgIEp1c3RpbiBNaWNoYXVk
ICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBuZXcgZ2xvYmFsIG9i
amVjdCBhbmQgcHJlbGltaW5hcnkgV29ya2xldHMgc3VwcG9ydCBmb3IgQ1NTIHBhaW50aW5nIGFw
aQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwOTc5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEg
bmV3IHRlc3QgaGFybmVzcyBmb3Igd29ya2xldCB0ZXN0cywgc2luY2UgdGhleSBkbyBub3QgaGF2
ZSBhY2Nlc3MgdG8gdGhlIGRvbS4KKworICAgICAgICAqIGZhc3QvY3NzLWN1c3RvbS1wYWludC9i
YXNpYy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L2Jhc2lj
Lmh0bWw6CisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L3JlZ2lzdGVyUGFpbnRCaW5k
aW5ncy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFp
bnQvcmVnaXN0ZXJQYWludEJpbmRpbmdzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAg
KiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVnaXN0ZXJQYWludEJpbmRpbmdzLmh0bWw6CisgICAg
ICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Jlc291cmNlcy90ZXN0aGFybmVzcy13b3JrbGV0
LmpzOiBBZGRlZC4KKyAgICAgICAgKGZvcm1hdF92YWx1ZSk6CisgICAgICAgICogZmFzdC9jc3Mt
Y3VzdG9tLXBhaW50L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qczogQWRkZWQuCisgICAgICAgIChh
c3luYy5pbXBvcnRXb3JrbGV0KToKKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvd29y
a2xldC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFp
bnQvd29ya2xldC5odG1sOiBBZGRlZC4KKwogMjAxOC0xMC0yNiAgQ29tbWl0IFF1ZXVlICA8Y29t
bWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjIzNzQ3OSBhbmQgcjIzNzQ4NC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1
c3RvbS1wYWludC9iYXNpYy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0
b20tcGFpbnQvYmFzaWMtZXhwZWN0ZWQudHh0CmluZGV4IGVhYTE3NDNlNDM5OTAwYmZkNzNiMGMx
OTE2ZTNkMmVjZWU2ZDRiNTYuLjAyMDU5Zjk4MzVlMjM2YWE1ZTk5Mjk1NTE0OTE3M2I1ZDc1MjU1
YTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9iYXNpYy1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2Jhc2lj
LWV4cGVjdGVkLnR4dApAQCAtMSwxMCArMSwzIEBACiAKLVBBU1MgdGVzdCB0aGF0IHJlZ2lzdGVy
UGFpbnQgcnVucyAKLVBBU1MgdGVzdCB0aGF0IHJlZ2lzdGVyUGFpbnQgcnVucyB3aXRob3V0IGlu
cHV0UHJvcGVydGllcyAKLVBBU1MgdGVzdCB0aGF0IHJlZ2lzdGVyUGFpbnQgcnVucyB3aXRoIGlu
cHV0QXJndW1lbnRzIAotUEFTUyB0ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBydW5zIHdpdGggY29u
dGV4dE9wdGlvbnMgCi1QQVNTIHRlc3QgdGhhdCByZWdpc3RlclBhaW50IHJ1bnMgd2l0aCBwcmVk
ZWZpbmVkIGNsYXNzIAotUEFTUyB0ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBhY2NlcHRzIG9ubHkg
YSBzdHJpbmcgYW5kIGEgY2xhc3MgY29uc3RydWN0b3IgCiBQQVNTIHRlc3QgdGhhdCB0ZXN0IGRp
diBoYXMgcGFpbnQoKSB2YWx1ZSAKLVBBU1MgdGVzdCB0aGF0IHRlc3QgZGl2IHBhaW50IGNhbGxi
YWNrIGdldHMgY2FsbGVkIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0
b20tcGFpbnQvYmFzaWMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9i
YXNpYy5odG1sCmluZGV4IDNmNGRjM2EyZDAyZWYyMWEyZTk3MmQ0YzhiNGYyZmFlOGMzODk0NTgu
LjRjOGIwY2Y1MmUxNmQ1YzhmMDI4NzhlMmNmNzU3OTUzNDBlMjhmOTYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9iYXNpYy5odG1sCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9iYXNpYy5odG1sCkBAIC0xNiw3MCArMTYsNyBAQAog
PGRpdiBpZD0icGFpbnQiPjwvZGl2PgogCiA8c2NyaXB0PgotdGVzdChmdW5jdGlvbigpIHsKLSAg
Q1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3QxJywgY2xhc3Mg
ewotICAgIHN0YXRpYyBnZXQgaW5wdXRQcm9wZXJ0aWVzKCkgeyByZXR1cm4gWyItLXRlc3QiXTsg
fQotICAgIHBhaW50KCkgeyB9Ci0gIH0pOwotfSwgJ3Rlc3QgdGhhdCByZWdpc3RlclBhaW50IHJ1
bnMnKTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3Bl
LnJlZ2lzdGVyUGFpbnQoJ3Rlc3QyJywgY2xhc3MgewotICAgIHBhaW50KCkgeyB9Ci0gIH0pOwot
fSwgJ3Rlc3QgdGhhdCByZWdpc3RlclBhaW50IHJ1bnMgd2l0aG91dCBpbnB1dFByb3BlcnRpZXMn
KTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJl
Z2lzdGVyUGFpbnQoJ3Rlc3QzJywgY2xhc3MgewotICAgIHN0YXRpYyBnZXQgaW5wdXRBcmd1bWVu
dHMoKSB7IHJldHVybiBbIjxsZW5ndGg+Il07IH0KLSAgICBwYWludCgpIHsgfQotICB9KTsKLX0s
ICd0ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBydW5zIHdpdGggaW5wdXRBcmd1bWVudHMnKTsKLQot
dGVzdChmdW5jdGlvbigpIHsKLSAgQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVy
UGFpbnQoJ3Rlc3Q0JywgY2xhc3MgewotICAgIHN0YXRpYyBnZXQgY29udGV4dE9wdGlvbnMoKSB7
IHJldHVybiB7IGFscGhhOiB0cnVlIH07IH0KLSAgICBwYWludCgpIHsgfQotICB9KTsKLX0sICd0
ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBydW5zIHdpdGggY29udGV4dE9wdGlvbnMnKTsKLQotY2xh
c3MgTXlQYWludCB7Ci0gIHBhaW50KCkgeyB9Ci19Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gIENT
Uy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCd0ZXN0NScsIE15UGFpbnQp
OwotICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3InfSwg
KCkgPT4gQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3Q1Jywg
TXlQYWludCkpOwotICBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgn
dGVzdDYnLCBjbGFzcyBleHRlbmRzIE15UGFpbnQgeyB9KTsKLX0sICd0ZXN0IHRoYXQgcmVnaXN0
ZXJQYWludCBydW5zIHdpdGggcHJlZGVmaW5lZCBjbGFzcycpOwotCi10ZXN0KGZ1bmN0aW9uKCkg
ewotICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3InfSwg
KCkgPT4gQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3Q2Jywg
J3Rlc3QnKSk7Ci0gIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBDU1MucGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgndGVzdDcnKSk7Ci0gIGFzc2VydF90
aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUu
cmVnaXN0ZXJQYWludCgndGVzdDgnLCBbXSkpOwotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJy
b3IoKSwgKCkgPT4gQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rl
c3Q5Jywge30pKTsKLSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IENTUy5w
YWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCd0ZXN0MTAnLCA1KSk7Ci0gIGFz
c2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBDU1MucGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUucmVnaXN0ZXJQYWludCgnJywgNSkpOwotfSwgJ3Rlc3QgdGhhdCByZWdpc3RlclBhaW50
IGFjY2VwdHMgb25seSBhIHN0cmluZyBhbmQgYSBjbGFzcyBjb25zdHJ1Y3RvcicpOwotCiB0ZXN0
KGZ1bmN0aW9uKCkgewogICBhc3NlcnRfZXF1YWxzKGdldENvbXB1dGVkU3R5bGUocGFpbnQpLmdl
dFByb3BlcnR5VmFsdWUoImJhY2tncm91bmQtaW1hZ2UiKSwgInBhaW50KG15LXBhaW50KSIpOwog
fSwgJ3Rlc3QgdGhhdCB0ZXN0IGRpdiBoYXMgcGFpbnQoKSB2YWx1ZScpOwotCi1sZXQgcGFpbnRf
Y2FsbGVkX3Rlc3QgPSBhc3luY190ZXN0KCd0ZXN0IHRoYXQgdGVzdCBkaXYgcGFpbnQgY2FsbGJh
Y2sgZ2V0cyBjYWxsZWQnKTsKLXBhaW50X2NhbGxlZF90ZXN0LnN0ZXAoZnVuY3Rpb24oKSB7Ci0g
IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCdteS1wYWludCcsIGNs
YXNzIHsKLSAgICBwYWludChjdHgsIGdlb20sIHByb3BlcnRpZXMpIHsKLSAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgNjsgaSsrKXsKLSAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA2OyBqKysp
ewotICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSAncmdiKCcgKyBNYXRoLmZsb29yKDI1NSAtIDQy
LjUgKiBpKSArICcsJyArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRoLmZsb29yKDI1
NSAtIDQyLjUgKiBqKSArICcsMCknOwotICAgICAgICAgIGN0eC5maWxsUmVjdChqICogMjUsIGkg
KiAyNSwgMjUsIDI1KTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgcGFpbnRfY2FsbGVkX3Rl
c3QuZG9uZSgpOwotICAgIH0KLSAgfSk7Ci19KTsKLQogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVnaXN0ZXJQYWludEJpbmRpbmdzLWV4
cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVnaXN0ZXJQ
YWludEJpbmRpbmdzLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGI0MmI2MmRhMTNlZGE4MTk2
MTBiMzE5N2I0ZTQ1YTU0NzNiZGNmMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvY3NzLWN1c3RvbS1wYWludC9yZWdpc3RlclBhaW50QmluZGluZ3MtZXhwZWN0ZWQuaHRtbApA
QCAtMCwwICsxLDE2IEBACis8IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBb
IGV4cGVyaW1lbnRhbDpDU1NQYWludGluZ0FQSUVuYWJsZWQ9dHJ1ZSBdIC0tPgorCis8Y2FudmFz
IGlkPSJwYWludCIgd2lkdGg9IjE1MHB4IiBoZWlnaHQ9IjE1MHB4IiA+PC9jYW52YXM+CisKKzxz
Y3JpcHQgaWQ9ImNvZGUiPgordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdw
YWludCcpOwordmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpOworCitmb3IgKHZhciBp
ID0gMDsgaSA8IDY7IGkrKyl7CisgIGZvciAodmFyIGogPSAwOyBqIDwgNjsgaisrKXsKKyAgICBj
dHguZmlsbFN0eWxlID0gJ3JnYignICsgTWF0aC5mbG9vcigyNTUgLSA0Mi41ICogaSkgKyAnLCcg
KworICAgICAgICAgICAgICAgICAgICAgTWF0aC5mbG9vcigyNTUgLSA0Mi41ICogaikgKyAnLDAp
JzsKKyAgICBjdHguZmlsbFJlY3QoaiAqIDI1LCBpICogMjUsIDI1LCAyNSk7CisgIH0KK30KKzwv
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Jl
Z2lzdGVyUGFpbnRCaW5kaW5ncy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1j
dXN0b20tcGFpbnQvcmVnaXN0ZXJQYWludEJpbmRpbmdzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMzAxNDMxNTJiZDg2YzlkYjBkOTcyOTI0MjJkNWI4YWY4OGE1
MTA2Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVnaXN0ZXJQYWludEJpbmRpbmdzLWV4cGVj
dGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLQotUEFTUyByZWdpc3RlclBh
aW50IG11c3QgYmUgYSBtZXRob2QgCi1QQVNTIG11c3QgZ2V0ICJwcm90b3R5cGUiIHByb3BlcnR5
IG9mIHRoZSBjb25zdHJ1Y3RvciAKLVBBU1MgbXVzdCByZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJv
d24gd2hpbGUgZ2V0dGluZyAiaW5wdXRQcm9wZXJ0aWVzIiBwcm9wZXJ0eSBvZiB0aGUgY29uc3Ry
dWN0b3IgCi1QQVNTIG11c3QgcmV0aHJvdyBhbiBleGNlcHRpb24gdGhyb3duIHdoaWxlIGdldHRp
bmcgInByb3RvdHlwZSIgcHJvcGVydHkgb2YgdGhlIGNvbnN0cnVjdG9yIAotUEFTUyBtdXN0IHRo
cm93IHdoZW4gInByb3RvdHlwZSIgcHJvcGVydHkgb2YgdGhlIGNvbnN0cnVjdG9yIGlzIG5vdCBh
biBvYmplY3QgCi1QQVNTIG11c3QgZ2V0IHBhaW50IGNhbGxiYWNrIG9mIHRoZSBjb25zdHJ1Y3Rv
ciBwcm90b3R5cGUgCi1QQVNTIG11c3QgcmV0aHJvdyBhbiBleGNlcHRpb24gdGhyb3duIHdoaWxl
IGdldHRpbmcgcGFpbnQgY2FsbGJhY2sgb24gdGhlIGNvbnN0cnVjdG9yIHByb3RvdHlwZSAKLVBB
U1MgbXVzdCByZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgY29udmVydGluZyBwYWlu
dCBjYWxsYmFjayB2YWx1ZSB0byBGdW5jdGlvbiBjYWxsYmFjayB0eXBlIAotUEFTUyBtdXN0IHJl
dGhyb3cgYW4gZXhjZXB0aW9uIHRocm93biB3aGlsZSBjb252ZXJ0aW5nIHRoZSB2YWx1ZSBvZiBp
bnB1dEFyZ3VtZW50cyB0byBzZXF1ZW5jZTxET01TdHJpbmc+IAotUEFTUyBtdXN0IHJldGhyb3cg
YW4gZXhjZXB0aW9uIHRocm93biB3aGlsZSBpdGVyYXRpbmcgb3ZlciBpbnB1dEFyZ3VtZW50cyB0
byBzZXF1ZW5jZTxET01TdHJpbmc+IAotUEFTUyBtdXN0IHJldGhyb3cgYW4gZXhjZXB0aW9uIHRo
cm93biB3aGlsZSByZXRyaWV2aW5nIFN5bWJvbC5pdGVyYXRvciBvbiBpbnB1dEFyZ3VtZW50cyAK
LQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3JlZ2lzdGVy
UGFpbnRCaW5kaW5ncy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Jl
Z2lzdGVyUGFpbnRCaW5kaW5ncy5odG1sCmluZGV4IGRjOTAyYzRjZDY1OTEwZDViMThjYWUxNTRl
ZjMzOGNhOTg5OGJjZGMuLmZjMTNlYjliYTQ1NjUzOWM5NGY0ZjYyNjI4NDUxY2RkODQ1ZjM0Yjcg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9yZWdpc3RlclBh
aW50QmluZGluZ3MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQv
cmVnaXN0ZXJQYWludEJpbmRpbmdzLmh0bWwKQEAgLTIsMTcgKzIsNjQgQEAKIDxtZXRhIG5hbWU9
ImF1dGhvciIgdGl0bGU9Ikp1c3RpbiBNaWNoYXVkIiBocmVmPSJtYWlsdG86anVzdGluX21pY2hh
dWRAd2Via2l0Lm9yZyI+CiA8bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9InJlZ2lzdGVyUGFp
bnQgYWNjZXNzZXMgYXJndW1lbnRzIGluIHRoZSBjb3JyZWN0IG9yZGVyIj4KIDxsaW5rIHJlbD0i
aGVscCIgY29udGVudD0iaHR0cHM6Ly9kcmFmdHMuY3NzLWhvdWRpbmkub3JnL2Nzcy1wYWludC1h
cGktMS8iPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0Lmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KKworPHN0eWxlPgorICAjcGFpbnQgeworICAgIGJhY2tncm91bmQtaW1h
Z2U6IHBhaW50KG15LXBhaW50KTsKKyAgICB3aWR0aDogMTUwcHg7CisgICAgaGVpZ2h0OiAxNTBw
eDsKKyAgfQorPC9zdHlsZT4KKworPGRpdiBpZD0icGFpbnQiPjwvZGl2PgorCis8c2NyaXB0IGlk
PSJjb2RlIiB0eXBlPSJ0ZXh0L3dvcmtsZXQiPgogY2xhc3MgTXlQYWludCB7CiAgIHBhaW50KCkg
eyB9CiB9CiAKLXRlc3QoZnVuY3Rpb24gKCkgewotICAgIGFzc2VydF90cnVlKCdyZWdpc3RlclBh
aW50JyBpbiBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuX19wcm90b19fLCAnInJlZ2lzdGVy
UGFpbnQiIGV4aXN0cyBvbiBwcm90b3R5cGUnKTsKLSAgICBhc3NlcnRfdHJ1ZSgncmVnaXN0ZXJQ
YWludCcgaW4gQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLCAnInJlZ2lzdGVyUGFpbnQiIGV4
aXN0cyBvbiB3aW5kb3cnKTsKLX0sICdyZWdpc3RlclBhaW50IG11c3QgYmUgYSBtZXRob2QnKTsK
K3Rlc3QoZnVuY3Rpb24oKSB7CisgIHJlZ2lzdGVyUGFpbnQoJ2Jhc2ljMScsIGNsYXNzIHsKKyAg
ICBzdGF0aWMgZ2V0IGlucHV0UHJvcGVydGllcygpIHsgcmV0dXJuIFsiLS10ZXN0Il07IH0KKyAg
ICBwYWludCgpIHsgfQorICB9KTsKK30sICd0ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBydW5zJyk7
CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgIHJlZ2lzdGVyUGFpbnQoJ2Jhc2ljMicsIGNsYXNzIHsK
KyAgICBwYWludCgpIHsgfQorICB9KTsKK30sICd0ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBydW5z
IHdpdGhvdXQgaW5wdXRQcm9wZXJ0aWVzJyk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgIHJlZ2lz
dGVyUGFpbnQoJ2Jhc2ljMycsIGNsYXNzIHsKKyAgICBzdGF0aWMgZ2V0IGlucHV0QXJndW1lbnRz
KCkgeyByZXR1cm4gWyI8bGVuZ3RoPiJdOyB9CisgICAgcGFpbnQoKSB7IH0KKyAgfSk7Cit9LCAn
dGVzdCB0aGF0IHJlZ2lzdGVyUGFpbnQgcnVucyB3aXRoIGlucHV0QXJndW1lbnRzJyk7CisKK3Rl
c3QoZnVuY3Rpb24oKSB7CisgIHJlZ2lzdGVyUGFpbnQoJ2Jhc2ljNCcsIGNsYXNzIHsKKyAgICBz
dGF0aWMgZ2V0IGNvbnRleHRPcHRpb25zKCkgeyByZXR1cm4geyBhbHBoYTogdHJ1ZSB9OyB9Cisg
ICAgcGFpbnQoKSB7IH0KKyAgfSk7Cit9LCAndGVzdCB0aGF0IHJlZ2lzdGVyUGFpbnQgcnVucyB3
aXRoIGNvbnRleHRPcHRpb25zJyk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgIHJlZ2lzdGVyUGFp
bnQoJ2Jhc2ljNScsIE15UGFpbnQpOworICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdJbnZhbGlk
TW9kaWZpY2F0aW9uRXJyb3InfSwgKCkgPT4gcmVnaXN0ZXJQYWludCgnYmFzaWM1JywgTXlQYWlu
dCkpOworICByZWdpc3RlclBhaW50KCdiYXNpYzYnLCBjbGFzcyBleHRlbmRzIE15UGFpbnQgeyB9
KTsKK30sICd0ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBydW5zIHdpdGggcHJlZGVmaW5lZCBjbGFz
cycpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdJbnZh
bGlkTW9kaWZpY2F0aW9uRXJyb3InfSwgKCkgPT4gcmVnaXN0ZXJQYWludCgnYmFzaWM2JywgJ3Rl
c3QnKSk7CisgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiByZWdpc3RlclBh
aW50KCdiYXNpYzgnKSk7CisgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBy
ZWdpc3RlclBhaW50KCdiYXNpYzknLCBbXSkpOworICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJy
b3IoKSwgKCkgPT4gcmVnaXN0ZXJQYWludCgnYmFzaWMxMCcsIHt9KSk7CisgIGFzc2VydF90aHJv
d3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiByZWdpc3RlclBhaW50KCdiYXNpYzExJywgNSkpOwor
ICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gcmVnaXN0ZXJQYWludCgnJywg
NSkpOworfSwgJ3Rlc3QgdGhhdCByZWdpc3RlclBhaW50IGFjY2VwdHMgb25seSBhIHN0cmluZyBh
bmQgYSBjbGFzcyBjb25zdHJ1Y3RvcicpOwogCiB0ZXN0KGZ1bmN0aW9uICgpIHsKICAgICBjb25z
dCBjYWxscyA9IFtdOwpAQCAtMjIsNyArNjksNyBAQCB0ZXN0KGZ1bmN0aW9uICgpIHsKICAgICAg
ICAgICAgIHJldHVybiB0YXJnZXRbbmFtZV07CiAgICAgICAgIH0KICAgICB9KTsKLSAgICBDU1Mu
cGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgndGVzdC1wcm90bycsIHByb3h5
KTsKKyAgICByZWdpc3RlclBhaW50KCd0ZXN0LXByb3RvJywgcHJveHkpOwogICAgIGFzc2VydF9h
cnJheV9lcXVhbHMoY2FsbHMsIFsiaW5wdXRQcm9wZXJ0aWVzIiwgImlucHV0QXJndW1lbnRzIiwg
ImNvbnRleHRPcHRpb25zIiwgInByb3RvdHlwZSJdKTsKIH0sICdtdXN0IGdldCAicHJvdG90eXBl
IiBwcm9wZXJ0eSBvZiB0aGUgY29uc3RydWN0b3InKTsKIApAQCAtMzYsNyArODMsNyBAQCB0ZXN0
KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIHJldHVybiB0YXJnZXRbbmFtZV07CiAgICAgICAg
IH0KICAgICB9KTsKLSAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdleHBlY3RlZEVycm9yJ30s
IGZ1bmN0aW9uICgpIHsgQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQo
J3Rlc3QtcmV0aHJvdy1pbnB1dFByb3BlcnRpZXMwJywgcHJveHkpOyB9KTsKKyAgICBhc3NlcnRf
dGhyb3dzKHsnbmFtZSc6ICdleHBlY3RlZEVycm9yJ30sIGZ1bmN0aW9uICgpIHsgcmVnaXN0ZXJQ
YWludCgndGVzdC1yZXRocm93LWlucHV0UHJvcGVydGllczAnLCBwcm94eSk7IH0pOwogfSwgJ211
c3QgcmV0aHJvdyBhbiBleGNlcHRpb24gdGhyb3duIHdoaWxlIGdldHRpbmcgImlucHV0UHJvcGVy
dGllcyIgcHJvcGVydHkgb2YgdGhlIGNvbnN0cnVjdG9yJyk7CiAKIHRlc3QoZnVuY3Rpb24gKCkg
ewpAQCAtNDksNyArOTYsNyBAQCB0ZXN0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIHJldHVy
biB0YXJnZXRbbmFtZV07CiAgICAgICAgIH0KICAgICB9KTsKLSAgICBhc3NlcnRfdGhyb3dzKHsn
bmFtZSc6ICdleHBlY3RlZEVycm9yJ30sIGZ1bmN0aW9uICgpIHsgQ1NTLnBhaW50V29ya2xldEds
b2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3QtcmV0aHJvdy1wcm90bycsIHByb3h5KTsgfSk7
CisgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnZXhwZWN0ZWRFcnJvcid9LCBmdW5jdGlvbiAo
KSB7IHJlZ2lzdGVyUGFpbnQoJ3Rlc3QtcmV0aHJvdy1wcm90bycsIHByb3h5KTsgfSk7CiB9LCAn
bXVzdCByZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgZ2V0dGluZyAicHJvdG90eXBl
IiBwcm9wZXJ0eSBvZiB0aGUgY29uc3RydWN0b3InKTsKIAogdGVzdChmdW5jdGlvbiAoKSB7CkBA
IC02MywxNiArMTEwLDE2IEBAIHRlc3QoZnVuY3Rpb24gKCkgewogICAgIH0pOwogCiAgICAgcmV0
dXJuZWRWYWx1ZSA9IG51bGw7Ci0gICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnVHlwZUVycm9y
J30sIGZ1bmN0aW9uICgpIHsgQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFp
bnQoJ3Rlc3QtcmV0aHJvdy1wcm90by1ub29iajEnLCBwcm94eSk7IH0sCisgICAgYXNzZXJ0X3Ro
cm93cyh7J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgcmVnaXN0ZXJQYWludCgn
dGVzdC1yZXRocm93LXByb3RvLW5vb2JqMScsIHByb3h5KTsgfSwKICAgICAgICAgJ211c3QgdGhy
b3cgd2hlbiAicHJvdG90eXBlIiBwcm9wZXJ0eSBvZiB0aGUgY29uc3RydWN0b3IgaXMgbnVsbCcp
OwogICAgIHJldHVybmVkVmFsdWUgPSB1bmRlZmluZWQ7Ci0gICAgYXNzZXJ0X3Rocm93cyh7J25h
bWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgQ1NTLnBhaW50V29ya2xldEdsb2JhbFNj
b3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3QtcmV0aHJvdy1wcm90by1ub29iajInLCBwcm94eSk7IH0s
CisgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsg
cmVnaXN0ZXJQYWludCgndGVzdC1yZXRocm93LXByb3RvLW5vb2JqMicsIHByb3h5KTsgfSwKICAg
ICAgICAgJ211c3QgdGhyb3cgd2hlbiAicHJvdG90eXBlIiBwcm9wZXJ0eSBvZiB0aGUgY29uc3Ry
dWN0b3IgaXMgdW5kZWZpbmVkJyk7CiAgICAgcmV0dXJuZWRWYWx1ZSA9ICdoZWxsbyc7Ci0gICAg
YXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgQ1NTLnBh
aW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3QtcmV0aHJvdy1wcm90by1u
b29iajMnLCBwcm94eSk7OyB9LAorICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1R5cGVFcnJv
cid9LCBmdW5jdGlvbiAoKSB7IHJlZ2lzdGVyUGFpbnQoJ3Rlc3QtcmV0aHJvdy1wcm90by1ub29i
ajMnLCBwcm94eSk7OyB9LAogICAgICAgICAnbXVzdCB0aHJvdyB3aGVuICJwcm90b3R5cGUiIHBy
b3BlcnR5IG9mIHRoZSBjb25zdHJ1Y3RvciBpcyBhIHN0cmluZycpOwogICAgIHJldHVybmVkVmFs
dWUgPSAxOwotICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1R5cGVFcnJvcid9LCBmdW5jdGlv
biAoKSB7IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCd0ZXN0LXJl
dGhyb3ctcHJvdG8tbm9vYmo0JywgcHJveHkpOzsgfSwKKyAgICBhc3NlcnRfdGhyb3dzKHsnbmFt
ZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyByZWdpc3RlclBhaW50KCd0ZXN0LXJldGhy
b3ctcHJvdG8tbm9vYmo0JywgcHJveHkpOzsgfSwKICAgICAgICAgJ211c3QgdGhyb3cgd2hlbiAi
cHJvdG90eXBlIiBwcm9wZXJ0eSBvZiB0aGUgY29uc3RydWN0b3IgaXMgYSBudW1iZXInKTsKIAog
fSwgJ211c3QgdGhyb3cgd2hlbiAicHJvdG90eXBlIiBwcm9wZXJ0eSBvZiB0aGUgY29uc3RydWN0
b3IgaXMgbm90IGFuIG9iamVjdCcpOwpAQCAtODcsNyArMTM0LDcgQEAgdGVzdChmdW5jdGlvbiAo
KSB7CiAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0W25hbWVdOwogICAgICAgICB9CiAgICAgfSk7
Ci0gICAgQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ2NhbGxiYWNr
cycsIGNvbnN0cnVjdG9yKTsKKyAgICByZWdpc3RlclBhaW50KCdjYWxsYmFja3MnLCBjb25zdHJ1
Y3Rvcik7CiAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjYWxscywgWydwYWludCddKTsKIH0sICdt
dXN0IGdldCBwYWludCBjYWxsYmFjayBvZiB0aGUgY29uc3RydWN0b3IgcHJvdG90eXBlJyk7CiAK
QEAgLTEwMiw3ICsxNDksNyBAQCB0ZXN0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIHJldHVy
biB0YXJnZXRbbmFtZV07CiAgICAgICAgIH0KICAgICB9KTsKLSAgICBhc3NlcnRfdGhyb3dzKHsn
bmFtZSc6ICdleHBlY3RlZEVycm9yJ30sIGZ1bmN0aW9uICgpIHsgQ1NTLnBhaW50V29ya2xldEds
b2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ2NhbGxiYWNrcy10aHJvdycsIGNvbnN0cnVjdG9yKTsg
fSk7CisgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnZXhwZWN0ZWRFcnJvcid9LCBmdW5jdGlv
biAoKSB7IHJlZ2lzdGVyUGFpbnQoJ2NhbGxiYWNrcy10aHJvdycsIGNvbnN0cnVjdG9yKTsgfSk7
CiAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjYWxscywgWydwYWludCddKTsKIH0sICdtdXN0IHJl
dGhyb3cgYW4gZXhjZXB0aW9uIHRocm93biB3aGlsZSBnZXR0aW5nIHBhaW50IGNhbGxiYWNrIG9u
IHRoZSBjb25zdHJ1Y3RvciBwcm90b3R5cGUnKTsKIApAQCAtMTE3LDcgKzE2NCw3IEBAIHRlc3Qo
ZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgcmV0dXJuIHRhcmdldFtuYW1lXTsKICAgICAgICAg
fQogICAgIH0pOwotICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1R5cGVFcnJvcid9LCBmdW5j
dGlvbiAoKSB7IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCdjYWxs
YmFja3MtdGhyb3cyJywgY29uc3RydWN0b3IpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzKHsnbmFt
ZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyByZWdpc3RlclBhaW50KCdjYWxsYmFja3Mt
dGhyb3cyJywgY29uc3RydWN0b3IpOyB9KTsKICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNhbGxz
LCBbJ3BhaW50J10pOwogfSwgJ211c3QgcmV0aHJvdyBhbiBleGNlcHRpb24gdGhyb3duIHdoaWxl
IGNvbnZlcnRpbmcgcGFpbnQgY2FsbGJhY2sgdmFsdWUgdG8gRnVuY3Rpb24gY2FsbGJhY2sgdHlw
ZScpOwogCkBAIC0xMzEsNyArMTc4LDcgQEAgdGVzdChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAg
cmV0dXJuIHRhcmdldFtuYW1lXTsKICAgICAgIH0KICAgfSk7Ci0gIGFzc2VydF90aHJvd3Moeydu
YW1lJzogJ1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IENTUy5wYWludFdvcmtsZXRHbG9iYWxT
Y29wZS5yZWdpc3RlclBhaW50KCdzZXF1ZW5jZS10aHJvdycsIHByb3h5KTsgfSk7CisgIGFzc2Vy
dF90aHJvd3MoeyduYW1lJzogJ1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IHJlZ2lzdGVyUGFp
bnQoJ3NlcXVlbmNlLXRocm93JywgcHJveHkpOyB9KTsKICAgYXNzZXJ0X2FycmF5X2VxdWFscyhj
YWxscywgWyJpbnB1dFByb3BlcnRpZXMiLCAiaW5wdXRBcmd1bWVudHMiXSk7CiB9LCAnbXVzdCBy
ZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgY29udmVydGluZyB0aGUgdmFsdWUgb2Yg
aW5wdXRBcmd1bWVudHMgdG8gc2VxdWVuY2U8RE9NU3RyaW5nPicpOwogCkBAIC0xNDEsMTIgKzE4
OCwzNiBAQCB0ZXN0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgeWllbGQgJzxsZW5ndGg+JzsKICAg
ICAgICAgdGhyb3cge25hbWU6ICdTb21lRXJyb3InfTsKICAgICB9fTsKLSAgICBhc3NlcnRfdGhy
b3dzKHsnbmFtZSc6ICdTb21lRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBDU1MucGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgnc2VxdWVuY2UtdGhyb3cyJywgY29uc3RydWN0b3Ip
OyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdTb21lRXJyb3InfSwgZnVuY3Rpb24g
KCkgeyByZWdpc3RlclBhaW50KCdzZXF1ZW5jZS10aHJvdzInLCBjb25zdHJ1Y3Rvcik7IH0pOwog
fSwgJ211c3QgcmV0aHJvdyBhbiBleGNlcHRpb24gdGhyb3duIHdoaWxlIGl0ZXJhdGluZyBvdmVy
IGlucHV0QXJndW1lbnRzIHRvIHNlcXVlbmNlPERPTVN0cmluZz4nKTsKIAogdGVzdChmdW5jdGlv
biAoKSB7CiAgICAgY29uc3QgY29uc3RydWN0b3IgPSBmdW5jdGlvbiAoKSB7fQogICAgIGNvbnN0
cnVjdG9yLmlucHV0QXJndW1lbnRzID0ge1tTeW1ib2wuaXRlcmF0b3JdOiAxfTsKLSAgICBhc3Nl
cnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBDU1MucGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgnc3ltYm9sLWl0ZXJhdG9yLXRocm93Mics
IGNvbnN0cnVjdG9yKTsgfSk7CisgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnVHlwZUVycm9y
J30sIGZ1bmN0aW9uICgpIHsgcmVnaXN0ZXJQYWludCgnc3ltYm9sLWl0ZXJhdG9yLXRocm93Mics
IGNvbnN0cnVjdG9yKTsgfSk7CiB9LCAnbXVzdCByZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJvd24g
d2hpbGUgcmV0cmlldmluZyBTeW1ib2wuaXRlcmF0b3Igb24gaW5wdXRBcmd1bWVudHMnKTsKKwor
YXNzZXJ0X3RydWUoUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaGFzUnVuQVRlc3QpOworaWYgKFBh
aW50V29ya2xldEdsb2JhbFNjb3BlLmVycm9ycykgeworICBjb25zb2xlLmxvZygiVGhlIGZvbGxv
d2luZyAoIiArIFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmVycm9ycy5sZW5ndGggKyAiKSB0ZXN0
cyBmYWlsZWQ6ICIpCisgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KFBhaW50V29ya2xldEds
b2JhbFNjb3BlLmVycm9ycykpOworICBhc3NlcnRfdHJ1ZShmYWxzZSk7Cit9CisKK2NsYXNzIE15
UGFpbnQyIHsKKyAgcGFpbnQoY3R4LCBnZW9tLCBwcm9wZXJ0aWVzKSB7CisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCA2OyBpKyspeworICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA2OyBqKyspewor
ICAgICAgICBjdHguZmlsbFN0eWxlID0gJ3JnYignICsgTWF0aC5mbG9vcigyNTUgLSA0Mi41ICog
aSkgKyAnLCcgKworICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGguZmxvb3IoMjU1IC0gNDIu
NSAqIGopICsgJywwKSc7CisgICAgICAgIGN0eC5maWxsUmVjdChqICogMjUsIGkgKiAyNSwgMjUs
IDI1KTsKKyAgICAgIH0KKyAgICB9CisgIH0KK30KK3JlZ2lzdGVyUGFpbnQoJ215LXBhaW50Jywg
TXlQYWludDIpOworPC9zY3JpcHQ+CisKKzxzY3JpcHQ+CisgIGltcG9ydFdvcmtsZXQoQ1NTLnBh
aW50V29ya2xldCwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvZGUnKS50ZXh0Q29udGVudCk7
CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWlu
dC9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mtd29ya2xldC5qcyBiL0xheW91dFRlc3RzL2Zhc3QvY3Nz
LWN1c3RvbS1wYWludC9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mtd29ya2xldC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40NWMzZTc0ZWU2YzEzMTQxOWMxNjg5ZWU4OWQwMWE0MWFhNzAyZWNjCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Jlc291cmNlcy90ZXN0aGFy
bmVzcy13b3JrbGV0LmpzCkBAIC0wLDAgKzEsNzM5IEBACisvLyBUaGVzZSBhcmUgaGVscGVycyB0
byBiZSBldmFsdWF0ZWQgaW5zaWRlIGEgd29ya2xldAorLy8gVGhleSBhcmUgbW9zdGx5IGZyb20g
dGhlIHdwdCB0ZXN0aGFybmVzcy5qcy4KKworLyoKKyAqIENvbnZlcnQgYSB2YWx1ZSB0byBhIG5p
Y2UsIGh1bWFuLXJlYWRhYmxlIHN0cmluZworICovCitmdW5jdGlvbiBmb3JtYXRfdmFsdWUodmFs
LCBzZWVuKQoreworICAgIGlmICghc2VlbikgeworICAgICAgICBzZWVuID0gW107CisgICAgfQor
ICAgIGlmICh0eXBlb2YgdmFsID09PSAib2JqZWN0IiAmJiB2YWwgIT09IG51bGwpIHsKKyAgICAg
ICAgaWYgKHNlZW4uaW5kZXhPZih2YWwpID49IDApIHsKKyAgICAgICAgICAgIHJldHVybiAiWy4u
Ll0iOworICAgICAgICB9CisgICAgICAgIHNlZW4ucHVzaCh2YWwpOworICAgIH0KKyAgICBpZiAo
QXJyYXkuaXNBcnJheSh2YWwpKSB7CisgICAgICAgIHJldHVybiAiWyIgKyB2YWwubWFwKGZ1bmN0
aW9uKHgpIHtyZXR1cm4gZm9ybWF0X3ZhbHVlKHgsIHNlZW4pO30pLmpvaW4oIiwgIikgKyAiXSI7
CisgICAgfQorCisgICAgc3dpdGNoICh0eXBlb2YgdmFsKSB7CisgICAgY2FzZSAic3RyaW5nIjoK
KyAgICAgICAgdmFsID0gdmFsLnJlcGxhY2UoIlxcIiwgIlxcXFwiKTsKKyAgICAgICAgZm9yICh2
YXIgcCBpbiByZXBsYWNlbWVudHMpIHsKKyAgICAgICAgICAgIHZhciByZXBsYWNlID0gIlxcIiAr
IHJlcGxhY2VtZW50c1twXTsKKyAgICAgICAgICAgIHZhbCA9IHZhbC5yZXBsYWNlKFJlZ0V4cChT
dHJpbmcuZnJvbUNoYXJDb2RlKHApLCAiZyIpLCByZXBsYWNlKTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gJyInICsgdmFsLnJlcGxhY2UoLyIvZywgJ1xcIicpICsgJyInOworICAgIGNhc2Ug
ImJvb2xlYW4iOgorICAgIGNhc2UgInVuZGVmaW5lZCI6CisgICAgICAgIHJldHVybiBTdHJpbmco
dmFsKTsKKyAgICBjYXNlICJudW1iZXIiOgorICAgICAgICAvLyBJbiBKYXZhU2NyaXB0LCAtMCA9
PT0gMCBhbmQgU3RyaW5nKC0wKSA9PSAiMCIsIHNvIHdlIGhhdmUgdG8KKyAgICAgICAgLy8gc3Bl
Y2lhbC1jYXNlLgorICAgICAgICBpZiAodmFsID09PSAtMCAmJiAxL3ZhbCA9PT0gLUluZmluaXR5
KSB7CisgICAgICAgICAgICByZXR1cm4gIi0wIjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
U3RyaW5nKHZhbCk7CisgICAgY2FzZSAib2JqZWN0IjoKKyAgICAgICAgaWYgKHZhbCA9PT0gbnVs
bCkgeworICAgICAgICAgICAgcmV0dXJuICJudWxsIjsKKyAgICAgICAgfQorCisgICAgICAgIC8v
IFNwZWNpYWwtY2FzZSBOb2RlIG9iamVjdHMsIHNpbmNlIHRob3NlIGNvbWUgdXAgYSBsb3QgaW4g
bXkgdGVzdHMuICBJCisgICAgICAgIC8vIGlnbm9yZSBuYW1lc3BhY2VzLgorICAgICAgICBpZiAo
aXNfbm9kZSh2YWwpKSB7CisgICAgICAgICAgICBzd2l0Y2ggKHZhbC5ub2RlVHlwZSkgeworICAg
ICAgICAgICAgY2FzZSBOb2RlLkVMRU1FTlRfTk9ERToKKyAgICAgICAgICAgICAgICB2YXIgcmV0
ID0gIjwiICsgdmFsLmxvY2FsTmFtZTsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHZhbC5hdHRyaWJ1dGVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIHJl
dCArPSAiICIgKyB2YWwuYXR0cmlidXRlc1tpXS5uYW1lICsgJz0iJyArIHZhbC5hdHRyaWJ1dGVz
W2ldLnZhbHVlICsgJyInOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXQg
Kz0gIj4iICsgdmFsLmlubmVySFRNTCArICI8LyIgKyB2YWwubG9jYWxOYW1lICsgIj4iOworICAg
ICAgICAgICAgICAgIHJldHVybiAiRWxlbWVudCBub2RlICIgKyB0cnVuY2F0ZShyZXQsIDYwKTsK
KyAgICAgICAgICAgIGNhc2UgTm9kZS5URVhUX05PREU6CisgICAgICAgICAgICAgICAgcmV0dXJu
ICdUZXh0IG5vZGUgIicgKyB0cnVuY2F0ZSh2YWwuZGF0YSwgNjApICsgJyInOworICAgICAgICAg
ICAgY2FzZSBOb2RlLlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERToKKyAgICAgICAgICAgICAg
ICByZXR1cm4gIlByb2Nlc3NpbmdJbnN0cnVjdGlvbiBub2RlIHdpdGggdGFyZ2V0ICIgKyBmb3Jt
YXRfdmFsdWUodHJ1bmNhdGUodmFsLnRhcmdldCwgNjApKSArICIgYW5kIGRhdGEgIiArIGZvcm1h
dF92YWx1ZSh0cnVuY2F0ZSh2YWwuZGF0YSwgNjApKTsKKyAgICAgICAgICAgIGNhc2UgTm9kZS5D
T01NRU5UX05PREU6CisgICAgICAgICAgICAgICAgcmV0dXJuICJDb21tZW50IG5vZGUgPCEtLSIg
KyB0cnVuY2F0ZSh2YWwuZGF0YSwgNjApICsgIi0tPiI7CisgICAgICAgICAgICBjYXNlIE5vZGUu
RE9DVU1FTlRfTk9ERToKKyAgICAgICAgICAgICAgICByZXR1cm4gIkRvY3VtZW50IG5vZGUgd2l0
aCAiICsgdmFsLmNoaWxkTm9kZXMubGVuZ3RoICsgKHZhbC5jaGlsZE5vZGVzLmxlbmd0aCA9PSAx
ID8gIiBjaGlsZCIgOiAiIGNoaWxkcmVuIik7CisgICAgICAgICAgICBjYXNlIE5vZGUuRE9DVU1F
TlRfVFlQRV9OT0RFOgorICAgICAgICAgICAgICAgIHJldHVybiAiRG9jdW1lbnRUeXBlIG5vZGUi
OworICAgICAgICAgICAgY2FzZSBOb2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU6CisgICAgICAg
ICAgICAgICAgcmV0dXJuICJEb2N1bWVudEZyYWdtZW50IG5vZGUgd2l0aCAiICsgdmFsLmNoaWxk
Tm9kZXMubGVuZ3RoICsgKHZhbC5jaGlsZE5vZGVzLmxlbmd0aCA9PSAxID8gIiBjaGlsZCIgOiAi
IGNoaWxkcmVuIik7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJldHVy
biAiTm9kZSBvYmplY3Qgb2YgdW5rbm93biB0eXBlIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorCisgICAgLyogZmFsbHMgdGhyb3VnaCAqLworICAgIGRlZmF1bHQ6CisgICAgICAgIHRyeSB7
CisgICAgICAgICAgICByZXR1cm4gdHlwZW9mIHZhbCArICcgIicgKyB0cnVuY2F0ZShTdHJpbmco
dmFsKSwgMTAwMCkgKyAnIic7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgcmV0
dXJuICgiW3N0cmluZ2lmeWluZyBvYmplY3QgdGhyZXcgIiArIFN0cmluZyhlKSArCisgICAgICAg
ICAgICAgICAgICAgICIgd2l0aCB0eXBlICIgKyBTdHJpbmcodHlwZW9mIGUpICsgIl0iKTsKKyAg
ICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gaXNfc2luZ2xlX25vZGUodGVtcGxhdGUpCit7
CisgICAgcmV0dXJuIHR5cGVvZiB0ZW1wbGF0ZVswXSA9PT0gInN0cmluZyI7Cit9CisKK2Z1bmN0
aW9uIHN1YnN0aXR1dGUodGVtcGxhdGUsIHN1YnN0aXR1dGlvbnMpCit7CisgICAgaWYgKHR5cGVv
ZiB0ZW1wbGF0ZSA9PT0gImZ1bmN0aW9uIikgeworICAgICAgICB2YXIgcmVwbGFjZW1lbnQgPSB0
ZW1wbGF0ZShzdWJzdGl0dXRpb25zKTsKKyAgICAgICAgaWYgKCFyZXBsYWNlbWVudCkgeworICAg
ICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gc3Vic3Rp
dHV0ZShyZXBsYWNlbWVudCwgc3Vic3RpdHV0aW9ucyk7CisgICAgfQorCisgICAgaWYgKGlzX3Np
bmdsZV9ub2RlKHRlbXBsYXRlKSkgeworICAgICAgICByZXR1cm4gc3Vic3RpdHV0ZV9zaW5nbGUo
dGVtcGxhdGUsIHN1YnN0aXR1dGlvbnMpOworICAgIH0KKworICAgIHJldHVybiBmaWx0ZXIobWFw
KHRlbXBsYXRlLCBmdW5jdGlvbih4KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBzdWJzdGl0dXRlKHgsIHN1YnN0aXR1dGlvbnMpOworICAgICAgICAgICAgICAgICAgICAgIH0p
LCBmdW5jdGlvbih4KSB7cmV0dXJuIHggIT09IG51bGw7fSk7Cit9CisKK2Z1bmN0aW9uIHN1YnN0
aXR1dGVfc2luZ2xlKHRlbXBsYXRlLCBzdWJzdGl0dXRpb25zKQoreworICAgIHZhciBzdWJzdGl0
dXRpb25fcmUgPSAvXCRceyhbXiB9XSopXH0vZzsKKworICAgIGZ1bmN0aW9uIGRvX3N1YnN0aXR1
dGlvbihpbnB1dCkgeworICAgICAgICB2YXIgY29tcG9uZW50cyA9IGlucHV0LnNwbGl0KHN1YnN0
aXR1dGlvbl9yZSk7CisgICAgICAgIHZhciBydiA9IFtdOworICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGNvbXBvbmVudHMubGVuZ3RoOyBpICs9IDIpIHsKKyAgICAgICAgICAgIHJ2LnB1c2go
Y29tcG9uZW50c1tpXSk7CisgICAgICAgICAgICBpZiAoY29tcG9uZW50c1tpICsgMV0pIHsKKyAg
ICAgICAgICAgICAgICBydi5wdXNoKFN0cmluZyhzdWJzdGl0dXRpb25zW2NvbXBvbmVudHNbaSAr
IDFdXSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBydjsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBzdWJzdGl0dXRlX2F0dHJzKGF0dHJzLCBydikKKyAgICB7Cisg
ICAgICAgIHJ2WzFdID0ge307CisgICAgICAgIGZvciAodmFyIG5hbWUgaW4gdGVtcGxhdGVbMV0p
IHsKKyAgICAgICAgICAgIGlmIChhdHRycy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkgeworICAgICAg
ICAgICAgICAgIHZhciBuZXdfbmFtZSA9IGRvX3N1YnN0aXR1dGlvbihuYW1lKS5qb2luKCIiKTsK
KyAgICAgICAgICAgICAgICB2YXIgbmV3X3ZhbHVlID0gZG9fc3Vic3RpdHV0aW9uKGF0dHJzW25h
bWVdKS5qb2luKCIiKTsKKyAgICAgICAgICAgICAgICBydlsxXVtuZXdfbmFtZV0gPSBuZXdfdmFs
dWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdWJz
dGl0dXRlX2NoaWxkcmVuKGNoaWxkcmVuLCBydikKKyAgICB7CisgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChjaGlsZHJl
bltpXSBpbnN0YW5jZW9mIE9iamVjdCkgeworICAgICAgICAgICAgICAgIHZhciByZXBsYWNlbWVu
dCA9IHN1YnN0aXR1dGUoY2hpbGRyZW5baV0sIHN1YnN0aXR1dGlvbnMpOworICAgICAgICAgICAg
ICAgIGlmIChyZXBsYWNlbWVudCAhPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBpZiAo
aXNfc2luZ2xlX25vZGUocmVwbGFjZW1lbnQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBy
di5wdXNoKHJlcGxhY2VtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGV4dGVuZChydiwgcmVwbGFjZW1lbnQpOworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBleHRlbmQocnYsIGRvX3N1YnN0aXR1dGlvbihTdHJpbmcoY2hpbGRyZW5baV0p
KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJ2OworICAgIH0K
KworICAgIHZhciBydiA9IFtdOworICAgIHJ2LnB1c2goZG9fc3Vic3RpdHV0aW9uKFN0cmluZyh0
ZW1wbGF0ZVswXSkpLmpvaW4oIiIpKTsKKworICAgIGlmICh0ZW1wbGF0ZVswXSA9PT0gInt0ZXh0
fSIpIHsKKyAgICAgICAgc3Vic3RpdHV0ZV9jaGlsZHJlbih0ZW1wbGF0ZS5zbGljZSgxKSwgcnYp
OworICAgIH0gZWxzZSB7CisgICAgICAgIHN1YnN0aXR1dGVfYXR0cnModGVtcGxhdGVbMV0sIHJ2
KTsKKyAgICAgICAgc3Vic3RpdHV0ZV9jaGlsZHJlbih0ZW1wbGF0ZS5zbGljZSgyKSwgcnYpOwor
ICAgIH0KKworICAgIHJldHVybiBydjsKK30KKworZnVuY3Rpb24gYXNzZXJ0KGV4cGVjdGVkX3Ry
dWUsIGZ1bmN0aW9uX25hbWUsIGRlc2NyaXB0aW9uLCBlcnJvciwgc3Vic3RpdHV0aW9ucykKK3sK
KyAgICBpZiAoZXhwZWN0ZWRfdHJ1ZSAhPT0gdHJ1ZSkgeworICAgICAgICB2YXIgbXNnID0gbWFr
ZV9tZXNzYWdlKGZ1bmN0aW9uX25hbWUsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVycm9yLCBzdWJzdGl0dXRpb25zKTsKKyAgICAgICAgdGhyb3cgbmV3IEFz
c2VydGlvbkVycm9yKG1zZyk7CisgICAgfQorfQorCitmdW5jdGlvbiBBc3NlcnRpb25FcnJvciht
ZXNzYWdlKQoreworICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7CisgICAgdGhpcy5zdGFjayA9
IHRoaXMuZ2V0X3N0YWNrKCk7Cit9CisKK0Fzc2VydGlvbkVycm9yLnByb3RvdHlwZSA9IE9iamVj
dC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKTsKKworQXNzZXJ0aW9uRXJyb3IucHJvdG90eXBlLmdl
dF9zdGFjayA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBzdGFjayA9IG5ldyBFcnJvcigpLnN0YWNr
OworICAgIC8vIElFMTEgZG9lcyBub3QgaW5pdGlhbGl6ZSAnRXJyb3Iuc3RhY2snIHVudGlsIHRo
ZSBvYmplY3QgaXMgdGhyb3duLgorICAgIGlmICghc3RhY2spIHsKKyAgICAgICAgdHJ5IHsKKyAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcigpOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAg
ICAgICAgICBzdGFjayA9IGUuc3RhY2s7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyAnRXJy
b3Iuc3RhY2snIGlzIG5vdCBzdXBwb3J0ZWQgaW4gYWxsIGJyb3dzZXJzL3ZlcnNpb25zCisgICAg
aWYgKCFzdGFjaykgeworICAgICAgICByZXR1cm4gIihTdGFjayB0cmFjZSB1bmF2YWlsYWJsZSki
OworICAgIH0KKworICAgIHZhciBsaW5lcyA9IHN0YWNrLnNwbGl0KCJcbiIpOworCisgICAgLy8g
Q3JlYXRlIGEgcGF0dGVybiB0byBtYXRjaCBzdGFjayBmcmFtZXMgb3JpZ2luYXRpbmcgd2l0aGlu
IHRlc3RoYXJuZXNzLmpzLiAgVGhlc2UgaW5jbHVkZSB0aGUKKyAgICAvLyBzY3JpcHQgVVJMLCBm
b2xsb3dlZCBieSB0aGUgbGluZS9jb2wgKGUuZy4sICcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpz
OjEyMDoyMScpLgorICAgIC8vIEVzY2FwZSB0aGUgVVJMIHBlciBodHRwOi8vc3RhY2tvdmVyZmxv
dy5jb20vcXVlc3Rpb25zLzM1NjE0OTMvaXMtdGhlcmUtYS1yZWdleHAtZXNjYXBlLWZ1bmN0aW9u
LWluLWphdmFzY3JpcHQKKyAgICAvLyBpbiBjYXNlIGl0IGNvbnRhaW5zIFJlZ0V4cCBjaGFyYWN0
ZXJzLgorICAgIHZhciBzY3JpcHRfdXJsID0gZ2V0X3NjcmlwdF91cmwoKTsKKyAgICB2YXIgcmVf
dGV4dCA9IHNjcmlwdF91cmwgPyBzY3JpcHRfdXJsLnJlcGxhY2UoL1stXC9cXF4kKis/LigpfFtc
XXt9XS9nLCAnXFwkJicpIDogIlxcYnRlc3RoYXJuZXNzLmpzIjsKKyAgICB2YXIgcmUgPSBuZXcg
UmVnRXhwKHJlX3RleHQgKyAiOlxcZCs6XFxkKyIpOworCisgICAgLy8gU29tZSBicm93c2VycyBp
bmNsdWRlIGEgcHJlYW1ibGUgdGhhdCBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgdGhlIGVycm9yIG9i
amVjdC4gIFNraXAgdGhpcyBieQorICAgIC8vIGFkdmFuY2luZyB1bnRpbCB3ZSBmaW5kIHRoZSBm
aXJzdCBzdGFjayBmcmFtZSBvcmlnaW5hdGluZyBmcm9tIHRlc3RoYXJuZXNzLmpzLgorICAgIHZh
ciBpID0gMDsKKyAgICB3aGlsZSAoIXJlLnRlc3QobGluZXNbaV0pICYmIGkgPCBsaW5lcy5sZW5n
dGgpIHsKKyAgICAgICAgaSsrOworICAgIH0KKworICAgIC8vIFRoZW4gc2tpcCB0aGUgdG9wIGZy
YW1lcyBvcmlnaW5hdGluZyBmcm9tIHRlc3RoYXJuZXNzLmpzIHRvIGJlZ2luIHRoZSBzdGFjayBh
dCB0aGUgdGVzdCBjb2RlLgorICAgIHdoaWxlIChyZS50ZXN0KGxpbmVzW2ldKSAmJiBpIDwgbGlu
ZXMubGVuZ3RoKSB7CisgICAgICAgIGkrKzsKKyAgICB9CisKKyAgICAvLyBQYXJhbm9pZCBjaGVj
ayB0aGF0IHdlIGRpZG4ndCBza2lwIGFsbCBmcmFtZXMuICBJZiBzbywgcmV0dXJuIHRoZSBvcmln
aW5hbCBzdGFjayB1bm1vZGlmaWVkLgorICAgIGlmIChpID49IGxpbmVzLmxlbmd0aCkgeworICAg
ICAgICByZXR1cm4gc3RhY2s7CisgICAgfQorCisgICAgcmV0dXJuIGxpbmVzLnNsaWNlKGkpLmpv
aW4oIlxuIik7Cit9CisKK2Z1bmN0aW9uIG1ha2VfbWVzc2FnZShmdW5jdGlvbl9uYW1lLCBkZXNj
cmlwdGlvbiwgZXJyb3IsIHN1YnN0aXR1dGlvbnMpCit7CisgICAgZm9yICh2YXIgcCBpbiBzdWJz
dGl0dXRpb25zKSB7CisgICAgICAgIGlmIChzdWJzdGl0dXRpb25zLmhhc093blByb3BlcnR5KHAp
KSB7CisgICAgICAgICAgICBzdWJzdGl0dXRpb25zW3BdID0gZm9ybWF0X3ZhbHVlKHN1YnN0aXR1
dGlvbnNbcF0pOworICAgICAgICB9CisgICAgfQorICAgIHZhciBub2RlX2Zvcm0gPSBzdWJzdGl0
dXRlKFsie3RleHR9IiwgIiR7ZnVuY3Rpb25fbmFtZX06ICR7ZGVzY3JpcHRpb259IiArIGVycm9y
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZSh7ZnVuY3Rpb25fbmFtZTpm
dW5jdGlvbl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNj
cmlwdGlvbjooZGVzY3JpcHRpb24/ZGVzY3JpcHRpb24gKyAiICI6IiIpfSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic3RpdHV0aW9ucykpOworICAgIHJldHVybiBu
b2RlX2Zvcm0uc2xpY2UoMSkuam9pbigiIik7Cit9CisKK2Z1bmN0aW9uIGZpbHRlcihhcnJheSwg
Y2FsbGFibGUsIHRoaXNPYmopIHsKKyAgICB2YXIgcnYgPSBbXTsKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmIChhcnJheS5oYXNPd25Qcm9w
ZXJ0eShpKSkgeworICAgICAgICAgICAgdmFyIHBhc3MgPSBjYWxsYWJsZS5jYWxsKHRoaXNPYmos
IGFycmF5W2ldLCBpLCBhcnJheSk7CisgICAgICAgICAgICBpZiAocGFzcykgeworICAgICAgICAg
ICAgICAgIHJ2LnB1c2goYXJyYXlbaV0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorICAgIHJldHVybiBydjsKK30KKworZnVuY3Rpb24gbWFwKGFycmF5LCBjYWxsYWJsZSwgdGhp
c09iaikKK3sKKyAgICB2YXIgcnYgPSBbXTsKKyAgICBydi5sZW5ndGggPSBhcnJheS5sZW5ndGg7
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykgeworICAgICAgICBp
ZiAoYXJyYXkuaGFzT3duUHJvcGVydHkoaSkpIHsKKyAgICAgICAgICAgIHJ2W2ldID0gY2FsbGFi
bGUuY2FsbCh0aGlzT2JqLCBhcnJheVtpXSwgaSwgYXJyYXkpOworICAgICAgICB9CisgICAgfQor
ICAgIHJldHVybiBydjsKK30KKworZnVuY3Rpb24gZm9yRWFjaChhcnJheSwgY2FsbGJhY2ssIHRo
aXNPYmopCit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykgewor
ICAgICAgICBpZiAoYXJyYXkuaGFzT3duUHJvcGVydHkoaSkpIHsKKyAgICAgICAgICAgIGNhbGxi
YWNrLmNhbGwodGhpc09iaiwgYXJyYXlbaV0sIGksIGFycmF5KTsKKyAgICAgICAgfQorICAgIH0K
K30KKworZnVuY3Rpb24gbWVyZ2UoYSxiKQoreworICAgIHZhciBydiA9IHt9OworICAgIHZhciBw
OworICAgIGZvciAocCBpbiBhKSB7CisgICAgICAgIHJ2W3BdID0gYVtwXTsKKyAgICB9CisgICAg
Zm9yIChwIGluIGIpIHsKKyAgICAgICAgcnZbcF0gPSBiW3BdOworICAgIH0KKyAgICByZXR1cm4g
cnY7Cit9CisKK2Z1bmN0aW9uIHNhbWVfdmFsdWUoeCwgeSkgeworICAgIGlmICh5ICE9PSB5KSB7
CisgICAgICAgIC8vTmFOIGNhc2UKKyAgICAgICAgcmV0dXJuIHggIT09IHg7CisgICAgfQorICAg
IGlmICh4ID09PSAwICYmIHkgPT09IDApIHsKKyAgICAgICAgLy9EaXN0aW5ndWlzaCArMCBhbmQg
LTAKKyAgICAgICAgcmV0dXJuIDEveCA9PT0gMS95OworICAgIH0KKyAgICByZXR1cm4geCA9PT0g
eTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X2VxdWFscyhhY3R1YWwsIGV4cGVjdGVkLCBkZXNjcmlw
dGlvbikKK3sKKyAgICAgLyoKKyAgICAgICogVGVzdCBpZiB0d28gcHJpbWl0aXZlcyBhcmUgZXF1
YWwgb3IgdHdvIG9iamVjdHMKKyAgICAgICogYXJlIHRoZSBzYW1lIG9iamVjdAorICAgICAgKi8K
KyAgICBpZiAodHlwZW9mIGFjdHVhbCAhPSB0eXBlb2YgZXhwZWN0ZWQpIHsKKyAgICAgICAgYXNz
ZXJ0KGZhbHNlLCAiYXNzZXJ0X2VxdWFscyIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICJleHBlY3RlZCAoIiArIHR5cGVvZiBleHBlY3RlZCArICIpICR7ZXhwZWN0ZWR9IGJ1
dCBnb3QgKCIgKyB0eXBlb2YgYWN0dWFsICsgIikgJHthY3R1YWx9IiwKKyAgICAgICAgICAgICAg
ICAgICAgICB7ZXhwZWN0ZWQ6ZXhwZWN0ZWQsIGFjdHVhbDphY3R1YWx9KTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBhc3NlcnQoc2FtZV92YWx1ZShhY3R1YWwsIGV4cGVjdGVkKSwgImFz
c2VydF9lcXVhbHMiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9IiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2V4cGVjdGVkOmV4cGVjdGVk
LCBhY3R1YWw6YWN0dWFsfSk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9ub3RfZXF1YWxzKGFjdHVh
bCwgZXhwZWN0ZWQsIGRlc2NyaXB0aW9uKQoreworICAgICAvKgorICAgICAgKiBUZXN0IGlmIHR3
byBwcmltaXRpdmVzIGFyZSB1bmVxdWFsIG9yIHR3byBvYmplY3RzCisgICAgICAqIGFyZSBkaWZm
ZXJlbnQgb2JqZWN0cworICAgICAgKi8KKyAgICBhc3NlcnQoIXNhbWVfdmFsdWUoYWN0dWFsLCBl
eHBlY3RlZCksICJhc3NlcnRfbm90X2VxdWFscyIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdvdCBkaXNhbGxvd2VkIHZhbHVlICR7YWN0
dWFsfSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7YWN0dWFs
OmFjdHVhbH0pOworfQorCitmdW5jdGlvbiBhc3NlcnRfaW5fYXJyYXkoYWN0dWFsLCBleHBlY3Rl
ZCwgZGVzY3JpcHRpb24pCit7CisgICAgYXNzZXJ0KGV4cGVjdGVkLmluZGV4T2YoYWN0dWFsKSAh
PSAtMSwgImFzc2VydF9pbl9hcnJheSIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSAke2FjdHVhbH0gbm90IGluIGFycmF5ICR7
ZXhwZWN0ZWR9IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7
YWN0dWFsOmFjdHVhbCwgZXhwZWN0ZWQ6ZXhwZWN0ZWR9KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0
X29iamVjdF9lcXVhbHMoYWN0dWFsLCBleHBlY3RlZCwgZGVzY3JpcHRpb24pCit7CisgICAgIC8v
VGhpcyBuZWVkcyB0byBiZSBpbXByb3ZlZCBhIGdyZWF0IGRlYWwKKyAgICAgZnVuY3Rpb24gY2hl
Y2tfZXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgc3RhY2spCisgICAgIHsKKyAgICAgICAgIHN0YWNr
LnB1c2goYWN0dWFsKTsKKworICAgICAgICAgdmFyIHA7CisgICAgICAgICBmb3IgKHAgaW4gYWN0
dWFsKSB7CisgICAgICAgICAgICAgYXNzZXJ0KGV4cGVjdGVkLmhhc093blByb3BlcnR5KHApLCAi
YXNzZXJ0X29iamVjdF9lcXVhbHMiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmV4cGVjdGVkIHByb3BlcnR5ICR7cH0iLCB7
cDpwfSk7CisKKyAgICAgICAgICAgICBpZiAodHlwZW9mIGFjdHVhbFtwXSA9PT0gIm9iamVjdCIg
JiYgYWN0dWFsW3BdICE9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgIGlmIChzdGFjay5pbmRl
eE9mKGFjdHVhbFtwXSkgPT09IC0xKSB7CisgICAgICAgICAgICAgICAgICAgICBjaGVja19lcXVh
bChhY3R1YWxbcF0sIGV4cGVjdGVkW3BdLCBzdGFjayk7CisgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICBhc3NlcnQoc2FtZV92YWx1ZShh
Y3R1YWxbcF0sIGV4cGVjdGVkW3BdKSwgImFzc2VydF9vYmplY3RfZXF1YWxzIiwgZGVzY3JpcHRp
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
cHJvcGVydHkgJHtwfSBleHBlY3RlZCAke2V4cGVjdGVkfSBnb3QgJHthY3R1YWx9IiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwOnAsIGV4cGVj
dGVkOmV4cGVjdGVkLCBhY3R1YWw6YWN0dWFsfSk7CisgICAgICAgICAgICAgfQorICAgICAgICAg
fQorICAgICAgICAgZm9yIChwIGluIGV4cGVjdGVkKSB7CisgICAgICAgICAgICAgYXNzZXJ0KGFj
dHVhbC5oYXNPd25Qcm9wZXJ0eShwKSwKKyAgICAgICAgICAgICAgICAgICAgImFzc2VydF9vYmpl
Y3RfZXF1YWxzIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCBw
cm9wZXJ0eSAke3B9IG1pc3NpbmciLCB7cDpwfSk7CisgICAgICAgICB9CisgICAgICAgICBzdGFj
ay5wb3AoKTsKKyAgICAgfQorICAgICBjaGVja19lcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBbXSk7
Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9hcnJheV9lcXVhbHMoYWN0dWFsLCBleHBlY3RlZCwgZGVz
Y3JpcHRpb24pCit7CisgICAgYXNzZXJ0KGFjdHVhbC5sZW5ndGggPT09IGV4cGVjdGVkLmxlbmd0
aCwKKyAgICAgICAgICAgImFzc2VydF9hcnJheV9lcXVhbHMiLCBkZXNjcmlwdGlvbiwKKyAgICAg
ICAgICAgImxlbmd0aHMgZGlmZmVyLCBleHBlY3RlZCAke2V4cGVjdGVkfSBnb3QgJHthY3R1YWx9
IiwKKyAgICAgICAgICAge2V4cGVjdGVkOmV4cGVjdGVkLmxlbmd0aCwgYWN0dWFsOmFjdHVhbC5s
ZW5ndGh9KTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYWN0dWFsLmxlbmd0aDsgaSsrKSB7
CisgICAgICAgIGFzc2VydChhY3R1YWwuaGFzT3duUHJvcGVydHkoaSkgPT09IGV4cGVjdGVkLmhh
c093blByb3BlcnR5KGkpLAorICAgICAgICAgICAgICAgImFzc2VydF9hcnJheV9lcXVhbHMiLCBk
ZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICJwcm9wZXJ0eSAke2l9LCBwcm9wZXJ0eSBleHBl
Y3RlZCB0byBiZSAke2V4cGVjdGVkfSBidXQgd2FzICR7YWN0dWFsfSIsCisgICAgICAgICAgICAg
ICB7aTppLCBleHBlY3RlZDpleHBlY3RlZC5oYXNPd25Qcm9wZXJ0eShpKSA/ICJwcmVzZW50IiA6
ICJtaXNzaW5nIiwKKyAgICAgICAgICAgICAgIGFjdHVhbDphY3R1YWwuaGFzT3duUHJvcGVydHko
aSkgPyAicHJlc2VudCIgOiAibWlzc2luZyJ9KTsKKyAgICAgICAgYXNzZXJ0KHNhbWVfdmFsdWUo
ZXhwZWN0ZWRbaV0sIGFjdHVhbFtpXSksCisgICAgICAgICAgICAgICAiYXNzZXJ0X2FycmF5X2Vx
dWFscyIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgInByb3BlcnR5ICR7aX0sIGV4cGVj
dGVkICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9IiwKKyAgICAgICAgICAgICAgIHtpOmks
IGV4cGVjdGVkOmV4cGVjdGVkW2ldLCBhY3R1YWw6YWN0dWFsW2ldfSk7CisgICAgfQorfQorCitm
dW5jdGlvbiBhc3NlcnRfYXBwcm94X2VxdWFscyhhY3R1YWwsIGV4cGVjdGVkLCBlcHNpbG9uLCBk
ZXNjcmlwdGlvbikKK3sKKyAgICAvKgorICAgICAqIFRlc3QgaWYgdHdvIHByaW1pdGl2ZSBudW1i
ZXJzIGFyZSBlcXVhbCB3aXRoaW5nICsvLSBlcHNpbG9uCisgICAgICovCisgICAgYXNzZXJ0KHR5
cGVvZiBhY3R1YWwgPT09ICJudW1iZXIiLAorICAgICAgICAgICAiYXNzZXJ0X2FwcHJveF9lcXVh
bHMiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgImV4cGVjdGVkIGEgbnVtYmVyIGJ1dCBnb3Qg
YSAke3R5cGVfYWN0dWFsfSIsCisgICAgICAgICAgIHt0eXBlX2FjdHVhbDp0eXBlb2YgYWN0dWFs
fSk7CisKKyAgICBhc3NlcnQoTWF0aC5hYnMoYWN0dWFsIC0gZXhwZWN0ZWQpIDw9IGVwc2lsb24s
CisgICAgICAgICAgICJhc3NlcnRfYXBwcm94X2VxdWFscyIsIGRlc2NyaXB0aW9uLAorICAgICAg
ICAgICAiZXhwZWN0ZWQgJHtleHBlY3RlZH0gKy8tICR7ZXBzaWxvbn0gYnV0IGdvdCAke2FjdHVh
bH0iLAorICAgICAgICAgICB7ZXhwZWN0ZWQ6ZXhwZWN0ZWQsIGFjdHVhbDphY3R1YWwsIGVwc2ls
b246ZXBzaWxvbn0pOworfQorCitmdW5jdGlvbiBhc3NlcnRfbGVzc190aGFuKGFjdHVhbCwgZXhw
ZWN0ZWQsIGRlc2NyaXB0aW9uKQoreworICAgIC8qCisgICAgICogVGVzdCBpZiBhIHByaW1pdGl2
ZSBudW1iZXIgaXMgbGVzcyB0aGFuIGFub3RoZXIKKyAgICAgKi8KKyAgICBhc3NlcnQodHlwZW9m
IGFjdHVhbCA9PT0gIm51bWJlciIsCisgICAgICAgICAgICJhc3NlcnRfbGVzc190aGFuIiwgZGVz
Y3JpcHRpb24sCisgICAgICAgICAgICJleHBlY3RlZCBhIG51bWJlciBidXQgZ290IGEgJHt0eXBl
X2FjdHVhbH0iLAorICAgICAgICAgICB7dHlwZV9hY3R1YWw6dHlwZW9mIGFjdHVhbH0pOworCisg
ICAgYXNzZXJ0KGFjdHVhbCA8IGV4cGVjdGVkLAorICAgICAgICAgICAiYXNzZXJ0X2xlc3NfdGhh
biIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAiZXhwZWN0ZWQgYSBudW1iZXIgbGVzcyB0aGFu
ICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9IiwKKyAgICAgICAgICAge2V4cGVjdGVkOmV4
cGVjdGVkLCBhY3R1YWw6YWN0dWFsfSk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9ncmVhdGVyX3Ro
YW4oYWN0dWFsLCBleHBlY3RlZCwgZGVzY3JpcHRpb24pCit7CisgICAgLyoKKyAgICAgKiBUZXN0
IGlmIGEgcHJpbWl0aXZlIG51bWJlciBpcyBncmVhdGVyIHRoYW4gYW5vdGhlcgorICAgICAqLwor
ICAgIGFzc2VydCh0eXBlb2YgYWN0dWFsID09PSAibnVtYmVyIiwKKyAgICAgICAgICAgImFzc2Vy
dF9ncmVhdGVyX3RoYW4iLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgImV4cGVjdGVkIGEgbnVt
YmVyIGJ1dCBnb3QgYSAke3R5cGVfYWN0dWFsfSIsCisgICAgICAgICAgIHt0eXBlX2FjdHVhbDp0
eXBlb2YgYWN0dWFsfSk7CisKKyAgICBhc3NlcnQoYWN0dWFsID4gZXhwZWN0ZWQsCisgICAgICAg
ICAgICJhc3NlcnRfZ3JlYXRlcl90aGFuIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICJleHBl
Y3RlZCBhIG51bWJlciBncmVhdGVyIHRoYW4gJHtleHBlY3RlZH0gYnV0IGdvdCAke2FjdHVhbH0i
LAorICAgICAgICAgICB7ZXhwZWN0ZWQ6ZXhwZWN0ZWQsIGFjdHVhbDphY3R1YWx9KTsKK30KKwor
ZnVuY3Rpb24gYXNzZXJ0X2JldHdlZW5fZXhjbHVzaXZlKGFjdHVhbCwgbG93ZXIsIHVwcGVyLCBk
ZXNjcmlwdGlvbikKK3sKKyAgICAvKgorICAgICAqIFRlc3QgaWYgYSBwcmltaXRpdmUgbnVtYmVy
IGlzIGJldHdlZW4gdHdvIG90aGVycworICAgICAqLworICAgIGFzc2VydCh0eXBlb2YgYWN0dWFs
ID09PSAibnVtYmVyIiwKKyAgICAgICAgICAgImFzc2VydF9iZXR3ZWVuX2V4Y2x1c2l2ZSIsIGRl
c2NyaXB0aW9uLAorICAgICAgICAgICAiZXhwZWN0ZWQgYSBudW1iZXIgYnV0IGdvdCBhICR7dHlw
ZV9hY3R1YWx9IiwKKyAgICAgICAgICAge3R5cGVfYWN0dWFsOnR5cGVvZiBhY3R1YWx9KTsKKwor
ICAgIGFzc2VydChhY3R1YWwgPiBsb3dlciAmJiBhY3R1YWwgPCB1cHBlciwKKyAgICAgICAgICAg
ImFzc2VydF9iZXR3ZWVuX2V4Y2x1c2l2ZSIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAiZXhw
ZWN0ZWQgYSBudW1iZXIgZ3JlYXRlciB0aGFuICR7bG93ZXJ9ICIgKworICAgICAgICAgICAiYW5k
IGxlc3MgdGhhbiAke3VwcGVyfSBidXQgZ290ICR7YWN0dWFsfSIsCisgICAgICAgICAgIHtsb3dl
cjpsb3dlciwgdXBwZXI6dXBwZXIsIGFjdHVhbDphY3R1YWx9KTsKK30KKworZnVuY3Rpb24gYXNz
ZXJ0X2xlc3NfdGhhbl9lcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBkZXNjcmlwdGlvbikKK3sKKyAg
ICAvKgorICAgICAqIFRlc3QgaWYgYSBwcmltaXRpdmUgbnVtYmVyIGlzIGxlc3MgdGhhbiBvciBl
cXVhbCB0byBhbm90aGVyCisgICAgICovCisgICAgYXNzZXJ0KHR5cGVvZiBhY3R1YWwgPT09ICJu
dW1iZXIiLAorICAgICAgICAgICAiYXNzZXJ0X2xlc3NfdGhhbl9lcXVhbCIsIGRlc2NyaXB0aW9u
LAorICAgICAgICAgICAiZXhwZWN0ZWQgYSBudW1iZXIgYnV0IGdvdCBhICR7dHlwZV9hY3R1YWx9
IiwKKyAgICAgICAgICAge3R5cGVfYWN0dWFsOnR5cGVvZiBhY3R1YWx9KTsKKworICAgIGFzc2Vy
dChhY3R1YWwgPD0gZXhwZWN0ZWQsCisgICAgICAgICAgICJhc3NlcnRfbGVzc190aGFuX2VxdWFs
IiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICJleHBlY3RlZCBhIG51bWJlciBsZXNzIHRoYW4g
b3IgZXF1YWwgdG8gJHtleHBlY3RlZH0gYnV0IGdvdCAke2FjdHVhbH0iLAorICAgICAgICAgICB7
ZXhwZWN0ZWQ6ZXhwZWN0ZWQsIGFjdHVhbDphY3R1YWx9KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0
X2dyZWF0ZXJfdGhhbl9lcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBkZXNjcmlwdGlvbikKK3sKKyAg
ICAvKgorICAgICAqIFRlc3QgaWYgYSBwcmltaXRpdmUgbnVtYmVyIGlzIGdyZWF0ZXIgdGhhbiBv
ciBlcXVhbCB0byBhbm90aGVyCisgICAgICovCisgICAgYXNzZXJ0KHR5cGVvZiBhY3R1YWwgPT09
ICJudW1iZXIiLAorICAgICAgICAgICAiYXNzZXJ0X2dyZWF0ZXJfdGhhbl9lcXVhbCIsIGRlc2Ny
aXB0aW9uLAorICAgICAgICAgICAiZXhwZWN0ZWQgYSBudW1iZXIgYnV0IGdvdCBhICR7dHlwZV9h
Y3R1YWx9IiwKKyAgICAgICAgICAge3R5cGVfYWN0dWFsOnR5cGVvZiBhY3R1YWx9KTsKKworICAg
IGFzc2VydChhY3R1YWwgPj0gZXhwZWN0ZWQsCisgICAgICAgICAgICJhc3NlcnRfZ3JlYXRlcl90
aGFuX2VxdWFsIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICJleHBlY3RlZCBhIG51bWJlciBn
cmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJHtleHBlY3RlZH0gYnV0IGdvdCAke2FjdHVhbH0iLAor
ICAgICAgICAgICB7ZXhwZWN0ZWQ6ZXhwZWN0ZWQsIGFjdHVhbDphY3R1YWx9KTsKK30KKworZnVu
Y3Rpb24gYXNzZXJ0X2JldHdlZW5faW5jbHVzaXZlKGFjdHVhbCwgbG93ZXIsIHVwcGVyLCBkZXNj
cmlwdGlvbikKK3sKKyAgICAvKgorICAgICAqIFRlc3QgaWYgYSBwcmltaXRpdmUgbnVtYmVyIGlz
IGJldHdlZW4gdG8gdHdvIG90aGVycyBvciBlcXVhbCB0byBlaXRoZXIgb2YgdGhlbQorICAgICAq
LworICAgIGFzc2VydCh0eXBlb2YgYWN0dWFsID09PSAibnVtYmVyIiwKKyAgICAgICAgICAgImFz
c2VydF9iZXR3ZWVuX2luY2x1c2l2ZSIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAiZXhwZWN0
ZWQgYSBudW1iZXIgYnV0IGdvdCBhICR7dHlwZV9hY3R1YWx9IiwKKyAgICAgICAgICAge3R5cGVf
YWN0dWFsOnR5cGVvZiBhY3R1YWx9KTsKKworICAgIGFzc2VydChhY3R1YWwgPj0gbG93ZXIgJiYg
YWN0dWFsIDw9IHVwcGVyLAorICAgICAgICAgICAiYXNzZXJ0X2JldHdlZW5faW5jbHVzaXZlIiwg
ZGVzY3JpcHRpb24sCisgICAgICAgICAgICJleHBlY3RlZCBhIG51bWJlciBncmVhdGVyIHRoYW4g
b3IgZXF1YWwgdG8gJHtsb3dlcn0gIiArCisgICAgICAgICAgICJhbmQgbGVzcyB0aGFuIG9yIGVx
dWFsIHRvICR7dXBwZXJ9IGJ1dCBnb3QgJHthY3R1YWx9IiwKKyAgICAgICAgICAge2xvd2VyOmxv
d2VyLCB1cHBlcjp1cHBlciwgYWN0dWFsOmFjdHVhbH0pOworfQorCitmdW5jdGlvbiBhc3NlcnRf
dGhyb3dzKGNvZGUsIGZ1bmMsIGRlc2NyaXB0aW9uKQoreworICAgIHRyeSB7CisgICAgICAgIGZ1
bmMuY2FsbCh0aGlzKTsKKyAgICAgICAgYXNzZXJ0KGZhbHNlLCAiYXNzZXJ0X3Rocm93cyIsIGRl
c2NyaXB0aW9uLAorICAgICAgICAgICAgICAgIiR7ZnVuY30gZGlkIG5vdCB0aHJvdyIsIHtmdW5j
OmZ1bmN9KTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGlmIChlIGluc3RhbmNlb2YgQXNz
ZXJ0aW9uRXJyb3IpIHsKKyAgICAgICAgICAgIHRocm93IGU7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKGNvZGUgPT09IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
ICAgICBpZiAodHlwZW9mIGNvZGUgPT09ICJvYmplY3QiKSB7CisgICAgICAgICAgICBhc3NlcnQo
dHlwZW9mIGUgPT0gIm9iamVjdCIgJiYgIm5hbWUiIGluIGUgJiYgZS5uYW1lID09IGNvZGUubmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAiYXNzZXJ0X3Rocm93cyIsIGRlc2NyaXB0aW9uLAorICAg
ICAgICAgICAgICAgICAgICIke2Z1bmN9IHRocmV3ICR7YWN0dWFsfSAoJHthY3R1YWxfbmFtZX0p
IGV4cGVjdGVkICR7ZXhwZWN0ZWR9ICgke2V4cGVjdGVkX25hbWV9KSIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHtmdW5jOmZ1bmMsIGFjdHVhbDplLCBhY3R1YWxfbmFtZTplLm5h
bWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZDpjb2RlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfbmFtZTpjb2RlLm5hbWV9KTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBjb2RlX25hbWVf
bWFwID0geworICAgICAgICAgICAgSU5ERVhfU0laRV9FUlI6ICdJbmRleFNpemVFcnJvcicsCisg
ICAgICAgICAgICBISUVSQVJDSFlfUkVRVUVTVF9FUlI6ICdIaWVyYXJjaHlSZXF1ZXN0RXJyb3In
LAorICAgICAgICAgICAgV1JPTkdfRE9DVU1FTlRfRVJSOiAnV3JvbmdEb2N1bWVudEVycm9yJywK
KyAgICAgICAgICAgIElOVkFMSURfQ0hBUkFDVEVSX0VSUjogJ0ludmFsaWRDaGFyYWN0ZXJFcnJv
cicsCisgICAgICAgICAgICBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlI6ICdOb01vZGlmaWNh
dGlvbkFsbG93ZWRFcnJvcicsCisgICAgICAgICAgICBOT1RfRk9VTkRfRVJSOiAnTm90Rm91bmRF
cnJvcicsCisgICAgICAgICAgICBOT1RfU1VQUE9SVEVEX0VSUjogJ05vdFN1cHBvcnRlZEVycm9y
JywKKyAgICAgICAgICAgIElOVVNFX0FUVFJJQlVURV9FUlI6ICdJblVzZUF0dHJpYnV0ZUVycm9y
JywKKyAgICAgICAgICAgIElOVkFMSURfU1RBVEVfRVJSOiAnSW52YWxpZFN0YXRlRXJyb3InLAor
ICAgICAgICAgICAgU1lOVEFYX0VSUjogJ1N5bnRheEVycm9yJywKKyAgICAgICAgICAgIElOVkFM
SURfTU9ESUZJQ0FUSU9OX0VSUjogJ0ludmFsaWRNb2RpZmljYXRpb25FcnJvcicsCisgICAgICAg
ICAgICBOQU1FU1BBQ0VfRVJSOiAnTmFtZXNwYWNlRXJyb3InLAorICAgICAgICAgICAgSU5WQUxJ
RF9BQ0NFU1NfRVJSOiAnSW52YWxpZEFjY2Vzc0Vycm9yJywKKyAgICAgICAgICAgIFRZUEVfTUlT
TUFUQ0hfRVJSOiAnVHlwZU1pc21hdGNoRXJyb3InLAorICAgICAgICAgICAgU0VDVVJJVFlfRVJS
OiAnU2VjdXJpdHlFcnJvcicsCisgICAgICAgICAgICBORVRXT1JLX0VSUjogJ05ldHdvcmtFcnJv
cicsCisgICAgICAgICAgICBBQk9SVF9FUlI6ICdBYm9ydEVycm9yJywKKyAgICAgICAgICAgIFVS
TF9NSVNNQVRDSF9FUlI6ICdVUkxNaXNtYXRjaEVycm9yJywKKyAgICAgICAgICAgIFFVT1RBX0VY
Q0VFREVEX0VSUjogJ1F1b3RhRXhjZWVkZWRFcnJvcicsCisgICAgICAgICAgICBUSU1FT1VUX0VS
UjogJ1RpbWVvdXRFcnJvcicsCisgICAgICAgICAgICBJTlZBTElEX05PREVfVFlQRV9FUlI6ICdJ
bnZhbGlkTm9kZVR5cGVFcnJvcicsCisgICAgICAgICAgICBEQVRBX0NMT05FX0VSUjogJ0RhdGFD
bG9uZUVycm9yJworICAgICAgICB9OworCisgICAgICAgIHZhciBuYW1lID0gY29kZSBpbiBjb2Rl
X25hbWVfbWFwID8gY29kZV9uYW1lX21hcFtjb2RlXSA6IGNvZGU7CisKKyAgICAgICAgdmFyIG5h
bWVfY29kZV9tYXAgPSB7CisgICAgICAgICAgICBJbmRleFNpemVFcnJvcjogMSwKKyAgICAgICAg
ICAgIEhpZXJhcmNoeVJlcXVlc3RFcnJvcjogMywKKyAgICAgICAgICAgIFdyb25nRG9jdW1lbnRF
cnJvcjogNCwKKyAgICAgICAgICAgIEludmFsaWRDaGFyYWN0ZXJFcnJvcjogNSwKKyAgICAgICAg
ICAgIE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yOiA3LAorICAgICAgICAgICAgTm90Rm91bmRF
cnJvcjogOCwKKyAgICAgICAgICAgIE5vdFN1cHBvcnRlZEVycm9yOiA5LAorICAgICAgICAgICAg
SW5Vc2VBdHRyaWJ1dGVFcnJvcjogMTAsCisgICAgICAgICAgICBJbnZhbGlkU3RhdGVFcnJvcjog
MTEsCisgICAgICAgICAgICBTeW50YXhFcnJvcjogMTIsCisgICAgICAgICAgICBJbnZhbGlkTW9k
aWZpY2F0aW9uRXJyb3I6IDEzLAorICAgICAgICAgICAgTmFtZXNwYWNlRXJyb3I6IDE0LAorICAg
ICAgICAgICAgSW52YWxpZEFjY2Vzc0Vycm9yOiAxNSwKKyAgICAgICAgICAgIFR5cGVNaXNtYXRj
aEVycm9yOiAxNywKKyAgICAgICAgICAgIFNlY3VyaXR5RXJyb3I6IDE4LAorICAgICAgICAgICAg
TmV0d29ya0Vycm9yOiAxOSwKKyAgICAgICAgICAgIEFib3J0RXJyb3I6IDIwLAorICAgICAgICAg
ICAgVVJMTWlzbWF0Y2hFcnJvcjogMjEsCisgICAgICAgICAgICBRdW90YUV4Y2VlZGVkRXJyb3I6
IDIyLAorICAgICAgICAgICAgVGltZW91dEVycm9yOiAyMywKKyAgICAgICAgICAgIEludmFsaWRO
b2RlVHlwZUVycm9yOiAyNCwKKyAgICAgICAgICAgIERhdGFDbG9uZUVycm9yOiAyNSwKKworICAg
ICAgICAgICAgRW5jb2RpbmdFcnJvcjogMCwKKyAgICAgICAgICAgIE5vdFJlYWRhYmxlRXJyb3I6
IDAsCisgICAgICAgICAgICBVbmtub3duRXJyb3I6IDAsCisgICAgICAgICAgICBDb25zdHJhaW50
RXJyb3I6IDAsCisgICAgICAgICAgICBEYXRhRXJyb3I6IDAsCisgICAgICAgICAgICBUcmFuc2Fj
dGlvbkluYWN0aXZlRXJyb3I6IDAsCisgICAgICAgICAgICBSZWFkT25seUVycm9yOiAwLAorICAg
ICAgICAgICAgVmVyc2lvbkVycm9yOiAwLAorICAgICAgICAgICAgT3BlcmF0aW9uRXJyb3I6IDAs
CisgICAgICAgICAgICBOb3RBbGxvd2VkRXJyb3I6IDAKKyAgICAgICAgfTsKKworICAgICAgICBp
ZiAoIShuYW1lIGluIG5hbWVfY29kZV9tYXApKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgQXNz
ZXJ0aW9uRXJyb3IoJ1Rlc3QgYnVnOiB1bnJlY29nbml6ZWQgRE9NRXhjZXB0aW9uIGNvZGUgIicg
KyBjb2RlICsgJyIgcGFzc2VkIHRvIGFzc2VydF90aHJvd3MoKScpOworICAgICAgICB9CisKKyAg
ICAgICAgdmFyIHJlcXVpcmVkX3Byb3BzID0geyBjb2RlOiBuYW1lX2NvZGVfbWFwW25hbWVdIH07
CisKKyAgICAgICAgaWYgKHJlcXVpcmVkX3Byb3BzLmNvZGUgPT09IDAgfHwKKyAgICAgICAgICAg
KHR5cGVvZiBlID09ICJvYmplY3QiICYmCisgICAgICAgICAgICAibmFtZSIgaW4gZSAmJgorICAg
ICAgICAgICAgZS5uYW1lICE9PSBlLm5hbWUudG9VcHBlckNhc2UoKSAmJgorICAgICAgICAgICAg
ZS5uYW1lICE9PSAiRE9NRXhjZXB0aW9uIikpIHsKKyAgICAgICAgICAgIC8vIE5ldyBzdHlsZSBl
eGNlcHRpb246IGFsc28gdGVzdCB0aGUgbmFtZSBwcm9wZXJ0eS4KKyAgICAgICAgICAgIHJlcXVp
cmVkX3Byb3BzLm5hbWUgPSBuYW1lOworICAgICAgICB9CisKKyAgICAgICAgLy9XZSdkIGxpa2Ug
dG8gdGVzdCB0aGF0IGUgaW5zdGFuY2VvZiB0aGUgYXBwcm9wcmlhdGUgaW50ZXJmYWNlLAorICAg
ICAgICAvL2J1dCB3ZSBjYW4ndCwgYmVjYXVzZSB3ZSBkb24ndCBrbm93IHdoYXQgd2luZG93IGl0
IHdhcyBjcmVhdGVkCisgICAgICAgIC8vaW4uICBJdCBtaWdodCBiZSBhbiBpbnN0YW5jZW9mIHRo
ZSBhcHByb3ByaWF0ZSBpbnRlcmZhY2Ugb24gc29tZQorICAgICAgICAvL3Vua25vd24gb3RoZXIg
d2luZG93LiAgVE9ETzogV29yayBhcm91bmQgdGhpcyBzb21laG93PworCisgICAgICAgIGFzc2Vy
dCh0eXBlb2YgZSA9PSAib2JqZWN0IiwKKyAgICAgICAgICAgICAgICJhc3NlcnRfdGhyb3dzIiwg
ZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAiJHtmdW5jfSB0aHJldyAke2V9IHdpdGggdHlw
ZSAke3R5cGV9LCBub3QgYW4gb2JqZWN0IiwKKyAgICAgICAgICAgICAgIHtmdW5jOmZ1bmMsIGU6
ZSwgdHlwZTp0eXBlb2YgZX0pOworCisgICAgICAgIGZvciAodmFyIHByb3AgaW4gcmVxdWlyZWRf
cHJvcHMpIHsKKyAgICAgICAgICAgIGFzc2VydCh0eXBlb2YgZSA9PSAib2JqZWN0IiAmJiBwcm9w
IGluIGUgJiYgZVtwcm9wXSA9PSByZXF1aXJlZF9wcm9wc1twcm9wXSwKKyAgICAgICAgICAgICAg
ICAgICAiYXNzZXJ0X3Rocm93cyIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICIk
e2Z1bmN9IHRocmV3ICR7ZX0gdGhhdCBpcyBub3QgYSBET01FeGNlcHRpb24gIiArIGNvZGUgKyAi
OiBwcm9wZXJ0eSAke3Byb3B9IGlzIGVxdWFsIHRvICR7YWN0dWFsfSwgZXhwZWN0ZWQgJHtleHBl
Y3RlZH0iLAorICAgICAgICAgICAgICAgICAgIHtmdW5jOmZ1bmMsIGU6ZSwgcHJvcDpwcm9wLCBh
Y3R1YWw6ZVtwcm9wXSwgZXhwZWN0ZWQ6cmVxdWlyZWRfcHJvcHNbcHJvcF19KTsKKyAgICAgICAg
fQorICAgIH0KK30KKworLyoKKyAqIFJldHVybiB0cnVlIGlmIG9iamVjdCBpcyBwcm9iYWJseSBh
IE5vZGUgb2JqZWN0LgorICovCitmdW5jdGlvbiBpc19ub2RlKG9iamVjdCkKK3sKKyAgICAvLyBJ
IHVzZSBkdWNrLXR5cGluZyBpbnN0ZWFkIG9mIGluc3RhbmNlb2YsIGJlY2F1c2UKKyAgICAvLyBp
bnN0YW5jZW9mIGRvZXNuJ3Qgd29yayBpZiB0aGUgbm9kZSBpcyBmcm9tIGFub3RoZXIgd2luZG93
IChsaWtlIGFuCisgICAgLy8gaWZyYW1lJ3MgY29udGVudFdpbmRvdyk6CisgICAgLy8gaHR0cDov
L3d3dy53My5vcmcvQnVncy9QdWJsaWMvc2hvd19idWcuY2dpP2lkPTEyMjk1CisgICAgdHJ5IHsK
KyAgICAgICAgdmFyIGhhc19ub2RlX3Byb3BlcnRpZXMgPSAoIm5vZGVUeXBlIiBpbiBvYmplY3Qg
JiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vZGVOYW1lIiBpbiBvYmpl
Y3QgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vZGVWYWx1ZSIgaW4g
b2JqZWN0ICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjaGlsZE5vZGVz
IiBpbiBvYmplY3QpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgLy8gV2UncmUgcHJvYmFi
bHkgY3Jvc3Mtb3JpZ2luLCB3aGljaCBtZWFucyB3ZSBhcmVuJ3QgYSBub2RlCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoaGFzX25vZGVfcHJvcGVydGllcykgeworICAg
ICAgICB0cnkgeworICAgICAgICAgICAgb2JqZWN0Lm5vZGVUeXBlOworICAgICAgICB9IGNhdGNo
IChlKSB7CisgICAgICAgICAgICAvLyBUaGUgb2JqZWN0IGlzIHByb2JhYmx5IE5vZGUucHJvdG90
eXBlIG9yIGFub3RoZXIgcHJvdG90eXBlCisgICAgICAgICAgICAvLyBvYmplY3QgdGhhdCBpbmhl
cml0cyBmcm9tIGl0LCBhbmQgbm90IGEgTm9kZSBpbnN0YW5jZS4KKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0
dXJuIGZhbHNlOworfQorCit2YXIgcmVwbGFjZW1lbnRzID0geworICAgICIwIjogIjAiLAorICAg
ICIxIjogIngwMSIsCisgICAgIjIiOiAieDAyIiwKKyAgICAiMyI6ICJ4MDMiLAorICAgICI0Ijog
IngwNCIsCisgICAgIjUiOiAieDA1IiwKKyAgICAiNiI6ICJ4MDYiLAorICAgICI3IjogIngwNyIs
CisgICAgIjgiOiAiYiIsCisgICAgIjkiOiAidCIsCisgICAgIjEwIjogIm4iLAorICAgICIxMSI6
ICJ2IiwKKyAgICAiMTIiOiAiZiIsCisgICAgIjEzIjogInIiLAorICAgICIxNCI6ICJ4MGUiLAor
ICAgICIxNSI6ICJ4MGYiLAorICAgICIxNiI6ICJ4MTAiLAorICAgICIxNyI6ICJ4MTEiLAorICAg
ICIxOCI6ICJ4MTIiLAorICAgICIxOSI6ICJ4MTMiLAorICAgICIyMCI6ICJ4MTQiLAorICAgICIy
MSI6ICJ4MTUiLAorICAgICIyMiI6ICJ4MTYiLAorICAgICIyMyI6ICJ4MTciLAorICAgICIyNCI6
ICJ4MTgiLAorICAgICIyNSI6ICJ4MTkiLAorICAgICIyNiI6ICJ4MWEiLAorICAgICIyNyI6ICJ4
MWIiLAorICAgICIyOCI6ICJ4MWMiLAorICAgICIyOSI6ICJ4MWQiLAorICAgICIzMCI6ICJ4MWUi
LAorICAgICIzMSI6ICJ4MWYiLAorICAgICIweGZmZmQiOiAidWZmZmQiLAorICAgICIweGZmZmUi
OiAidWZmZmUiLAorICAgICIweGZmZmYiOiAidWZmZmYiLAorfTsKKworZnVuY3Rpb24gZXh0ZW5k
KGFycmF5LCBpdGVtcykKK3sKKyAgICBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShhcnJheSwg
aXRlbXMpOworfQorCitmdW5jdGlvbiBnZXRfc2NyaXB0X3VybCgpCit7CisgICAgcmV0dXJuICIv
IjsKK30KKworLyoKKyAqIFJldHVybiBhIHN0cmluZyB0cnVuY2F0ZWQgdG8gdGhlIGdpdmVuIGxl
bmd0aCwgd2l0aCAuLi4gYWRkZWQgYXQgdGhlIGVuZAorICogaWYgaXQgd2FzIGxvbmdlci4KKyAq
LworZnVuY3Rpb24gdHJ1bmNhdGUocywgbGVuKQoreworICAgIGlmIChzLmxlbmd0aCA+IGxlbikg
eworICAgICAgICByZXR1cm4gcy5zdWJzdHJpbmcoMCwgbGVuIC0gMykgKyAiLi4uIjsKKyAgICB9
CisgICAgcmV0dXJuIHM7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF90cnVlKGFjdHVhbCwgZGVzY3Jp
cHRpb24pCit7CisgICAgYXNzZXJ0KGFjdHVhbCA9PT0gdHJ1ZSwgImFzc2VydF90cnVlIiwgZGVz
Y3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIHRydWUgZ290
ICR7YWN0dWFsfSIsIHthY3R1YWw6YWN0dWFsfSk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9mYWxz
ZShhY3R1YWwsIGRlc2NyaXB0aW9uKQoreworICAgIGFzc2VydChhY3R1YWwgPT09IGZhbHNlLCAi
YXNzZXJ0X2ZhbHNlIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJleHBlY3RlZCBmYWxzZSBnb3QgJHthY3R1YWx9Iiwge2FjdHVhbDphY3R1YWx9KTsKK30KKwor
ZnVuY3Rpb24gdGVzdCh0c3QsIG5hbWUpIHsKKyAgdHJ5IHsKKyAgICB0c3QoKTsKKyAgfSBjYXRj
aCAoZSkgeworICAgIGlmICghUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuZXJyb3JzKQorICAgICAg
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuZXJyb3JzID0gW107CisgICAgICBQYWludFdvcmtsZXRH
bG9iYWxTY29wZS5lcnJvcnMucHVzaCh7IG5hbWU6IG5hbWUsIGVycm9yOiBlLm1lc3NhZ2UgfSk7
CisgIH0KKyAgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaGFzUnVuQVRlc3QgPSB0cnVlOworfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWIxM2Q0MzI5MGY4MzRkMGY5YTY5OTMwNTAw
YTY3YWMxNWJmNWVkZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1
c3RvbS1wYWludC9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMKQEAgLTAsMCArMSwyMyBAQAoraWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworLy8gSW1w
b3J0cyBjb2RlIGludG8gYSB3b3JrbGV0LCB3aXRoIHNvbWUgaGVscGVycy4KK2FzeW5jIGZ1bmN0
aW9uIGltcG9ydFdvcmtsZXQod29ya2xldCwgY29kZSkgeworICBjb25zdCByZXNwb25zZSA9IGF3
YWl0IGZldGNoKCJyZXNvdXJjZXMvdGVzdGhhcm5lc3Mtd29ya2xldC5qcyIpOworICBjb25zdCBm
aW5hbENvZGUgPSAoYXdhaXQgcmVzcG9uc2UudGV4dCgpKSArIGNvZGU7CisKKyAgbGV0IHVybDsK
KyAgLy8gRklYTUU6IFRoaXMgaXMgdGVtcG9yYXJ5LCB1bnRpbCB3ZSBzdXBwb3J0IGxvYWRpbmcg
c2NyaXB0cyBieSB1cmwKKyAgaWYgKHdpbmRvdy5jaHJvbWUpIHsKKyAgICBjb25zdCBibG9iID0g
bmV3IEJsb2IoW2ZpbmFsQ29kZV0sIHt0eXBlOiAndGV4dC9qYXZhc2NyaXB0J30pOworICAgIHVy
bCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7CisgIH0gZWxzZSB7CisgICAgdXJsID0gZmlu
YWxDb2RlOworICB9CisKKyAgd29ya2xldC5hZGRNb2R1bGUodXJsKTsKKyAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOworICAgIH0sIDMwMDApOworICB9Cit9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvd29ya2xldC1leHBlY3RlZC5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3dvcmtsZXQtZXhwZWN0ZWQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40YjQyYjYyZGExM2VkYTgxOTYxMGIzMTk3YjRlNDVhNTQ3M2JkY2YzCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3dvcmtsZXQtZXhw
ZWN0ZWQuaHRtbApAQCAtMCwwICsxLDE2IEBACis8IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtpdC10
ZXN0LXJ1bm5lciBbIGV4cGVyaW1lbnRhbDpDU1NQYWludGluZ0FQSUVuYWJsZWQ9dHJ1ZSBdIC0t
PgorCis8Y2FudmFzIGlkPSJwYWludCIgd2lkdGg9IjE1MHB4IiBoZWlnaHQ9IjE1MHB4IiA+PC9j
YW52YXM+CisKKzxzY3JpcHQgaWQ9ImNvZGUiPgordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdwYWludCcpOwordmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpOwor
Citmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKyl7CisgIGZvciAodmFyIGogPSAwOyBqIDwgNjsg
aisrKXsKKyAgICBjdHguZmlsbFN0eWxlID0gJ3JnYignICsgTWF0aC5mbG9vcigyNTUgLSA0Mi41
ICogaSkgKyAnLCcgKworICAgICAgICAgICAgICAgICAgICAgTWF0aC5mbG9vcigyNTUgLSA0Mi41
ICogaikgKyAnLDApJzsKKyAgICBjdHguZmlsbFJlY3QoaiAqIDI1LCBpICogMjUsIDI1LCAyNSk7
CisgIH0KK30KKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3Vz
dG9tLXBhaW50L3dvcmtsZXQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWlu
dC93b3JrbGV0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmNmZjkzNTY4NTM0MjA0YTJhYTBjYzZlOGQ5ZTg5
NDQwMTJlMmU2NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3Rv
bS1wYWludC93b3JrbGV0Lmh0bWwKQEAgLTAsMCArMSw0MiBAQAorPCFET0NUWVBFIGh0bWw+PCEt
LSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBleHBlcmltZW50YWw6Q1NTUGFpbnRpbmdBUElFbmFibGVk
PXRydWUgXSAtLT4KKzxtZXRhIG5hbWU9ImF1dGhvciIgdGl0bGU9Ikp1c3RpbiBNaWNoYXVkIiBo
cmVmPSJtYWlsdG86anVzdGluX21pY2hhdWRAd2Via2l0Lm9yZyI+Cis8bWV0YSBuYW1lPSJhc3Nl
cnQiIGNvbnRlbnQ9IlRlc3Qgd29ya2xldCBhZGRNb2R1bGUgYW5kIGdsb2JhbCBvYmplY3QiPgor
PGxpbmsgcmVsPSJoZWxwIiBjb250ZW50PSJodHRwczovL2RyYWZ0cy5jc3MtaG91ZGluaS5vcmcv
Y3NzLXBhaW50LWFwaS0xLyI+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpz
Ij48L3NjcmlwdD4KKworPHN0eWxlPgorICAjcGFpbnQgeworICAgIGJhY2tncm91bmQtaW1hZ2U6
IHBhaW50KG15LXBhaW50KTsKKyAgICB3aWR0aDogMTUwcHg7CisgICAgaGVpZ2h0OiAxNTBweDsK
KyAgfQorPC9zdHlsZT4KKworPGRpdiBpZD0icGFpbnQiPjwvZGl2PgorCis8c2NyaXB0IGlkPSJj
b2RlIiB0eXBlPSJ0ZXh0L3dvcmtsZXQiPgorY2xhc3MgTXlQYWludCB7CisgIHBhaW50KGN0eCwg
Z2VvbSwgcHJvcGVydGllcykgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKXsKKyAg
ICAgIGZvciAodmFyIGogPSAwOyBqIDwgNjsgaisrKXsKKyAgICAgICAgY3R4LmZpbGxTdHlsZSA9
ICdyZ2IoJyArIE1hdGguZmxvb3IoMjU1IC0gNDIuNSAqIGkpICsgJywnICsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBNYXRoLmZsb29yKDI1NSAtIDQyLjUgKiBqKSArICcsMCknOworICAgICAg
ICBjdHguZmlsbFJlY3QoaiAqIDI1LCBpICogMjUsIDI1LCAyNSk7CisgICAgICB9CisgICAgfQor
ICAgIGNvbnNvbGUubG9nKCJIZWxsbyBmcm9tIHBhaW50IGNhbGxiYWNrISIpOworICAgIGFzc2Vy
dF9ncmVhdGVyX3RoYW4oZXZhbCgiZGV2aWNlUGl4ZWxSYXRpbyIpLCAwKTsKKyAgICBhc3NlcnRf
dGhyb3dzKHsnbmFtZSc6ICdSZWZlcmVuY2VFcnJvcid9LCBmdW5jdGlvbiAoKSB7IGV2YWwoIndp
bmRvdyIpOyB9KTsKKworICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwg
cmVqZWN0KSA9PiB7IGNvbnNvbGUubG9nKCJJbiBwcm9taXNlIik7IHJlc29sdmUoKSB9KTsKKyAg
ICBwcm9taXNlLnRoZW4oKCkgPT4gY29uc29sZS5sb2coIlByb21pc2Ugd2FzIHJlc29sdmVkIikp
OworICB9Cit9Citjb25zb2xlLmxvZygiSGVsbG8gZnJvbSBwYWludCB3b3JrbGV0ISIpOworcmVn
aXN0ZXJQYWludCgnbXktcGFpbnQnLCBNeVBhaW50KTsKK2NvbnNvbGUubG9nKFdpbmRvdyk7IC8v
IHRlc3QgdGhhdCB1bmNhdWdodCBleGNlcHRpb25zIGRvIG5vdCBhZmZlY3QgcmVnaXN0ZXJlZCBw
YWludCBjYWxsYmFja3MKKzwvc2NyaXB0PgorCis8c2NyaXB0PgoraW1wb3J0V29ya2xldChDU1Mu
cGFpbnRXb3JrbGV0LCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29kZScpLnRleHRDb250ZW50
KTsKKzwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353551</attachid>
            <date>2018-10-31 16:32:32 -0700</date>
            <delta_ts>2018-10-31 16:47:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190979-20181031163226.patch</filename>
            <type>text/plain</type>
            <size>188566</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjQ4NmIwMmU1NmRmOTIz
MGM2MTUyMTYzZWI3MmZkYzA0OTBmMzgxNS4uZjI0NTI5MzNmZjAwMzQ0OGRlYzEzNmRiMWJmZjQy
ODVmYmMyNWRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MyBAQAorMjAxOC0xMC0yOSAgSnVz
dGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIG5l
dyBnbG9iYWwgb2JqZWN0IGFuZCBwcmVsaW1pbmFyeSBXb3JrbGV0cyBzdXBwb3J0IGZvciBDU1Mg
cGFpbnRpbmcgYXBpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTA5NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUZXN0OiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvd29ya2xldC5odG1sCisKKyAgICAgICAg
QWRkIGEgbmV3IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgYW5kIGdsb2JhbCBvYmplY3QgdG8gcnVu
IHdvcmtsZXRzIGluLiBUaGlzIGlzIG1vc3RseSBjb3B5K3Bhc3RlCisgICAgICAgIGZyb20gV29y
a2VycywgYnV0IHdpdGhvdXQgYW55IG9mIHRoZSB0aHJlYWRpbmcuIFdvcmtsZXQuYWRkTW9kdWxl
IGRvZXMgbm90IHlldCBzdXBwb3J0IGxvYWRpbmcgc2NyaXB0cworICAgICAgICBvciBkb2luZyBj
cm9zcyBvcmlnaW4gY2hlY2tpbmcuIFRoZXJlIGFyZSBxdWl0ZSBhIGZldyBwYXJ0cyBvZiB0aGUg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCBhcGkgdGhhdCBhcmUKKyAgICAgICAgbGVmdCBhcyBBU1NF
UlRfTk9UX1JFQUNIRUQoKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2Jq
ZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0IGNvbnN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20u
Y3BwLgorICAgICAgICAoV2ViQ29yZTo6SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6dmlzaXRB
ZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNQYWludFdvcmtsZXRHbG9i
YWxTY29wZTo6cmVnaXN0ZXJQYWludCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrbGV0
R2xvYmFsU2NvcGVCYXNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtsZXRH
bG9iYWxTY29wZUJhc2U6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZSk6CisgICAgICAgIChXZWJD
b3JlOjpKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6Y2xlYXJET01HdWFyZGVkT2JqZWN0
cyk6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnZpc2l0Q2hp
bGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpkZXN0
cm95KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtsZXRHbG9i
YWxTY29wZUJhc2U6OnN1cHBvcnRzUmljaFNvdXJjZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6
SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzaG91bGRJbnRlcnJ1cHRTY3JpcHQpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzaG91bGRJbnRlcnJ1cHRTY3Jp
cHRCZWZvcmVUaW1lb3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3Bl
QmFzZTo6amF2YVNjcmlwdFJ1bnRpbWVGbGFncyk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToK
KyAgICAgICAgKFdlYkNvcmU6OnRvSlNXb3JrbGV0R2xvYmFsU2NvcGUpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6d3JhcHBlZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnByb3h5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6Y3JlYXRlU3RydWN0dXJlKToK
KyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFN0
YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29w
ZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjU3RhdGVGcm9tV29ya2xldEdsb2JhbFNjb3BlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKElzRE9NR2xvYmFsT2JqZWN0KToKKyAgICAgICAg
KFNob3VsZFVzZUdsb2JhbE9iamVjdFByb3RvdHlwZSk6CisgICAgICAgIChHZW5lcmF0ZUhlYWRl
cik6CisgICAgICAgIChHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZ0ZvckV4
cG9zZWQpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGw6CisgICAgICAgICogY3NzL0NTU1BhaW50
SW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYWludEltYWdlVmFsdWU6Omlt
YWdlKToKKyAgICAgICAgKiBjc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRPTUNTU1BhaW50V29ya2xldDo6ZW5zdXJlUGFpbnRXb3JrbGV0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTUNTU1BhaW50V29ya2xldDo6ZW5zdXJlUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9ET01DU1NQYWludFdvcmtsZXQuaDoKKyAgICAg
ICAgKiBjc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmlkbDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVuc3VyZUNTU1BhaW50V29ya2xldCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVuc3VyZUNTU1BhaW50V29ya2xldEds
b2JhbFNjb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpnZXRDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSk6CisgICAg
ICAgICogZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbjoKKyAgICAgICAgKiBkb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0Ojp2bSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpleGVj
U3RhdGUpOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojppc1dvcmtsZXRHbG9iYWxTY29wZSBj
b25zdCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dlckFnZW50OjppbmplY3Rl
ZFNjcmlwdEZvckV2YWwpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtl
clJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1lQWdlbnQ6
OmluamVjdGVkU2NyaXB0Rm9yRXZhbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3Vz
dG9tUGFpbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludEltYWdlOjpD
dXN0b21QYWludEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50SW1hZ2U6OmRv
Q3VzdG9tUGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1h
Z2UuaDoKKyAgICAgICAgKiB3b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHA6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5j
cHAuCisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludFdvcmtsZXRH
bG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6
ZGV2aWNlUGl4ZWxSYXRpbyk6CisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxT
Y29wZTo6YWRkUmVnaXN0ZXJlZFBhaW50KToKKyAgICAgICAgKiB3b3JrbGV0cy9QYWludFdvcmts
ZXRHbG9iYWxTY29wZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50
V29ya2xldEdsb2JhbFNjb3BlLmguCisgICAgICAgICogd29ya2xldHMvUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUuaWRsLgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXQuY3BwOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
LgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtsZXQ6OldvcmtsZXQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldDo6YWRkTW9kdWxl
KToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwLgorICAgICAgICAqIHdvcmts
ZXRzL1dvcmtsZXQuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUuaWRsLgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRDb25zb2xl
Q2xpZW50LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93
b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0
Q29uc29sZUNsaWVudDo6V29ya2xldENvbnNvbGVDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2xldENvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtsZXRDb25zb2xlQ2xpZW50Ojpjb3VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrbGV0Q29uc29sZUNsaWVudDo6dGltZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0
Q29uc29sZUNsaWVudDo6dGltZUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29s
ZUNsaWVudDo6cHJvZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29sZUNsaWVu
dDo6cHJvZmlsZUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29sZUNsaWVudDo6
dGFrZUhlYXBTbmFwc2hvdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29sZUNsaWVu
dDo6dGltZVN0YW1wKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRDb25zb2xlQ2xpZW50Ojpy
ZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldENvbnNvbGVDbGllbnQ6OnJlY29yZEVu
ZCk6CisgICAgICAgICogd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuaDogQWRkZWQuCisg
ICAgICAgICogd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxTY29wZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6On5Xb3JrbGV0R2xvYmFsU2NvcGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpldmFsdWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmlzSlNFeGVjdXRpb25Gb3JiaWRkZW4gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpkaXNhYmxlRXZhbCk6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmRpc2FibGVXZWJBc3NlbWJs
eSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmNvbXBsZXRlVVJMIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6bG9nRXhjZXB0aW9u
VG9Db25zb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29u
c29sZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjphZGRN
ZXNzYWdlKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmlzUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpp
ZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6
c2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6anNSdW50aW1l
RmxhZ3MgY29uc3QpOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3Jr
bGV0R2xvYmFsU2NvcGUuaWRsOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlLmlkbC4KKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0U2Ny
aXB0Q29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlw
dENvbnRyb2xsZXI6OldvcmtsZXRTY3JpcHRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjp+V29ya2xldFNjcmlwdENvbnRyb2xsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmZvcmJpZEV4ZWN1dGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6aXNFeGVjdXRpb25G
b3JiaWRkZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xs
ZXI6OmRpc2FibGVFdmFsKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRTY3JpcHRDb250cm9s
bGVyOjpkaXNhYmxlV2ViQXNzZW1ibHkpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlw
dENvbnRyb2xsZXI6OmluaXRTY3JpcHRXaXRoU3ViY2xhc3MpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtsZXRTY3JpcHRDb250cm9sbGVyOjpzZXRFeGNlcHRpb24pOgorICAgICAgICAqIHdvcmtsZXRz
L1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V29y
a2xldFNjcmlwdENvbnRyb2xsZXI6OndvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OnZtKToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0SWZOZWVkZWQpOgorCiAyMDE4
LTEwLTI2ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjM3NDU4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRl
eCAxMjliNmM1NDkzMmY5ZTRlODg0NjZkY2Y5MThjYmQ2ZTE3NDY0MmQ1Li5jNmZlMjM1ZTA5YzEz
M2M5OWRlMTMyN2EyODBhYzUzYTEwMjc5NDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTQz
LDYgKzE0Myw3IEBAIHNldChXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJD
T1JFX0RJUn0vd29ya2Vycy9zZXJ2aWNlIgogICAgICIke1dFQkNPUkVfRElSfS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dCIKICAgICAiJHtXRUJDT1JFX0RJUn0vd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ciIKKyAgICAiJHtXRUJDT1JFX0RJUn0vd29ya2xldHMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3ht
bCIKICAgICAiJHtXRUJDT1JFX0RJUn0veG1sL3BhcnNlciIKICAgICAiJHtERVJJVkVEX1NPVVJD
RVNfV0VCQ09SRV9ESVJ9IgpAQCAtNTM3LDcgKzUzOCw2IEBAIHNldChXZWJDb3JlX05PTl9TVkdf
SURMX0ZJTEVTCiAgICAgY3NzL0NTU01lZGlhUnVsZS5pZGwKICAgICBjc3MvQ1NTTmFtZXNwYWNl
UnVsZS5pZGwKICAgICBjc3MvQ1NTUGFpbnRDYWxsYmFjay5pZGwKLSAgICBjc3MvQ1NTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUuaWRsCiAgICAgY3NzL0NTU1BhZ2VSdWxlLmlkbAogICAgIGNzcy9D
U1NSdWxlLmlkbAogICAgIGNzcy9DU1NSdWxlTGlzdC5pZGwKQEAgLTkwNiw2ICs5MDYsMTAgQEAg
c2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICB3b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlclVwZGF0ZVZpYUNhY2hlLmlkbAogICAgIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyV2luZG93Q2xpZW50LmlkbAogCisgICAgd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUuaWRsCisgICAgd29ya2xldHMvV29ya2xldC5pZGwKKyAgICB3b3JrbGV0cy9Xb3JrbGV0R2xv
YmFsU2NvcGUuaWRsCisKICAgICB4bWwvRE9NUGFyc2VyLmlkbAogICAgIHhtbC9YTUxIdHRwUmVx
dWVzdC5pZGwKICAgICB4bWwvWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5pZGwKQEAgLTE2ODQs
NiArMTY4OCw4IEBAIHNldChXSU5ET1dfQ09OU1RSVUNUT1JTX0ZJTEUgJHtERVJJVkVEX1NPVVJD
RVNfV0VCQ09SRV9ESVJ9L0RPTVdpbmRvd0NvbnN0cnVjdG9yCiBzZXQoV09SS0VSR0xPQkFMU0NP
UEVfQ09OU1RSVUNUT1JTX0ZJTEUgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L1dvcmtl
ckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCkKIHNldChERURJQ0FURURXT1JLRVJHTE9CQUxT
Q09QRV9DT05TVFJVQ1RPUlNfRklMRSAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsKQogc2V0KFNFUlZJQ0VXT1JL
RVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSAke0RFUklWRURfU09VUkNFU19XRUJDT1JF
X0RJUn0vU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCkKK3NldChXT1JL
TEVUR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09S
RV9ESVJ9L1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwpCitzZXQoUEFJTlRXT1JL
TEVUR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09S
RV9ESVJ9L1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCkKIAogV0VCS0lU
X0ZSQU1FV09SS19ERUNMQVJFKFdlYkNvcmUpCiBXRUJLSVRfSU5DTFVERV9DT05GSUdfRklMRVNf
SUZfRVhJU1RTKCkKQEAgLTE4NjMsNyArMTg2OSw5IEBAIEdFTkVSQVRFX0JJTkRJTkdTKFdlYkNv
cmVCaW5kaW5ncwogICAgICAgICAtLXdpbmRvd0NvbnN0cnVjdG9yc0ZpbGUgJHtXSU5ET1dfQ09O
U1RSVUNUT1JTX0ZJTEV9CiAgICAgICAgIC0td29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNG
aWxlICR7V09SS0VSR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEV9CiAgICAgICAgIC0tZGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlICR7REVESUNBVEVEV09SS0VS
R0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEV9Ci0gICAgICAgIC0tc2VydmljZVdvcmtlckds
b2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSAke1NFUlZJQ0VXT1JLRVJHTE9CQUxTQ09QRV9DT05T
VFJVQ1RPUlNfRklMRX0pCisgICAgICAgIC0tc2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3JzRmlsZSAke1NFUlZJQ0VXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRX0K
KyAgICAgICAgLS13b3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlICR7V09SS0xFVEdM
T0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFfQorICAgICAgICAtLXBhaW50V29ya2xldEdsb2Jh
bFNjb3BlQ29uc3RydWN0b3JzRmlsZSAke1BBSU5UV09SS0xFVEdMT0JBTFNDT1BFX0NPTlNUUlVD
VE9SU19GSUxFfSkKIAogR0VORVJBVEVfQklORElOR1MoV2ViQ29yZVRlc3RTdXBwb3J0QmluZGlu
Z3MKICAgICBPVVRQVVRfU09VUkNFIFdlYkNvcmVUZXN0U3VwcG9ydF9TT1VSQ0VTCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA2NjM5MGQ0OWZiMzlkNmM0YjJjNDc2MjYwNWQyNjA1
ZmIyYjViMTBkLi44ZTkwMTcxNzAzM2U1YzYyZThhYzgyZTBjN2Y2YTk3NTIwM2VjZjEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTg2LDYgKzg2LDcgQEAgVlBBVEggPSBcCiAg
ICAgJChXZWJDb3JlKS93ZWJzb2NrZXRzIFwKICAgICAkKFdlYkNvcmUpL3dvcmtlcnMgXAogICAg
ICQoV2ViQ29yZSkvd29ya2Vycy9zZXJ2aWNlIFwKKyAgICAkKFdlYkNvcmUpL3dvcmtsZXRzIFwK
ICAgICAkKFdlYkNvcmUpL3htbCBcCiAjCiAKQEAgLTQ1Miw3ICs0NTMsNiBAQCBKU19CSU5ESU5H
X0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9jc3MvQ1NTTmFtZXNwYWNlUnVsZS5pZGwgXAogICAg
ICQoV2ViQ29yZSkvY3NzL0NTU1BhZ2VSdWxlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9jc3MvQ1NT
UGFpbnRDYWxsYmFjay5pZGwgXAotICAgICQoV2ViQ29yZSkvY3NzL0NTU1BhaW50V29ya2xldEds
b2JhbFNjb3BlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9jc3MvQ1NTUnVsZS5pZGwgXAogICAgICQo
V2ViQ29yZSkvY3NzL0NTU1J1bGVMaXN0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9jc3MvQ1NTU3R5
bGVEZWNsYXJhdGlvbi5pZGwgXApAQCAtMTAyNCw2ICsxMDI0LDkgQEAgSlNfQklORElOR19JRExT
ID0gXAogICAgICQoV2ViQ29yZSkvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb24uaWRsIFwKICAgICAkKFdlYkNvcmUpL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
VXBkYXRlVmlhQ2FjaGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyV2luZG93Q2xpZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS93b3JrbGV0cy9QYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5pZGwgXAorICAgICQoV2ViQ29yZSkvd29ya2xldHMvV29ya2xl
dC5pZGwgXAorICAgICQoV2ViQ29yZSkvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmlkbCBc
CiAgICAgJChXZWJDb3JlKS94bWwvRE9NUGFyc2VyLmlkbCBcCiAgICAgJChXZWJDb3JlKS94bWwv
WE1MSHR0cFJlcXVlc3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL3htbC9YTUxIdHRwUmVxdWVzdEV2
ZW50VGFyZ2V0LmlkbCBcCkBAIC0xMTU2LDYgKzExNTksNyBAQCBhbGwgOiBcCiAgICAgJChTVVBQ
TEVNRU5UQUxfREVQRU5ERU5DWV9GSUxFKSBcCiAgICAgJChXSU5ET1dfQ09OU1RSVUNUT1JTX0ZJ
TEUpIFwKICAgICAkKFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFKSBcCisgICAg
JChXT1JLTEVUR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUpIFwKICAgICAkKEpTX0RPTV9I
RUFERVJTKSBcCiAgICAgJChXRUJfRE9NX0hFQURFUlMpIFwKICAgICBcCkBAIC0xNTA0LDYgKzE1
MDgsNyBAQCBJRExfSU5DTFVERVMgPSBcCiAgICAgJChXZWJDb3JlKS9zdmcgXAogICAgICQoV2Vi
Q29yZSkvdGVzdGluZyBcCiAgICAgJChXZWJDb3JlKS93b3JrZXJzIFwKKyAgICAkKFdlYkNvcmUp
L3dvcmtsZXRzIFwKICAgICAkKFdlYkNvcmUpL3htbAogCiBJRExfQ09NTU9OX0FSR1MgPSAkKElE
TF9JTkNMVURFUzolPS0taW5jbHVkZSAlKSAtLXdyaXRlLWRlcGVuZGVuY2llcyAtLW91dHB1dERp
ciAuCkBAIC0xNTE2LDYgKzE1MjEsOCBAQCBXSU5ET1dfQ09OU1RSVUNUT1JTX0ZJTEUgPSAuL0RP
TVdpbmRvd0NvbnN0cnVjdG9ycy5pZGwKIFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19G
SUxFID0gLi9Xb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKIERFRElDQVRFRFdPUktF
UkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFID0gLi9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZUNvbnN0cnVjdG9ycy5pZGwKIFNFUlZJQ0VXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RP
UlNfRklMRSA9IC4vU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbAorV09S
S0xFVEdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFID0gLi9Xb3JrbGV0R2xvYmFsU2NvcGVD
b25zdHJ1Y3RvcnMuaWRsCitQQUlOVFdPUktMRVRHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklM
RSA9IC4vUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCiBJRExfRklMRVNf
VE1QID0gLi9pZGxfZmlsZXMudG1wCiBJRExfQVRUUklCVVRFU19GSUxFID0gJChXZWJDb3JlKS9i
aW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgogCkBAIC0xNTI4LDEwICsxNTM1LDEw
IEBAIGVuZGVmCiAKICQoU1VQUExFTUVOVEFMX01BS0VGSUxFX0RFUFMpIDogJChQUkVQUk9DRVNT
X0lETFNfU0NSSVBUUykgJChKU19CSU5ESU5HX0lETFMpICQoUExBVEZPUk1fRkVBVFVSRV9ERUZJ
TkVTKSBEZXJpdmVkU291cmNlcy5tYWtlCiAJJChmb3JlYWNoIGYsJChKU19CSU5ESU5HX0lETFMp
LEBlY2hvICQoZik+PiQoSURMX0ZJTEVTX1RNUCkkKE5MKSkKLQkkKFBFUkwpICQoV2ViQ29yZSkv
YmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGwgLS1kZWZpbmVzICIkKEZFQVRVUkVf
QU5EX1BMQVRGT1JNX0RFRklORVMpICQoQURESVRJT05BTF9JRExfREVGSU5FUykgTEFOR1VBR0Vf
SkFWQVNDUklQVCIgLS1pZGxGaWxlc0xpc3QgJChJRExfRklMRVNfVE1QKSAtLXN1cHBsZW1lbnRh
bERlcGVuZGVuY3lGaWxlICQoU1VQUExFTUVOVEFMX0RFUEVOREVOQ1lfRklMRSkgLS13aW5kb3dD
b25zdHJ1Y3RvcnNGaWxlICQoV0lORE9XX0NPTlNUUlVDVE9SU19GSUxFKSAtLXdvcmtlckdsb2Jh
bFNjb3BlQ29uc3RydWN0b3JzRmlsZSAkKFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19G
SUxFKSAtLWRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSAkKERFRElD
QVRFRFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFKSAtLXNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgJChTRVJWSUNFV09SS0VSR0xPQkFMU0NPUEVfQ09O
U1RSVUNUT1JTX0ZJTEUpIC0tc3VwcGxlbWVudGFsTWFrZWZpbGVEZXBzICRACisJJChQRVJMKSAk
KFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsIC0tZGVmaW5lcyAi
JChGRUFUVVJFX0FORF9QTEFURk9STV9ERUZJTkVTKSAkKEFERElUSU9OQUxfSURMX0RFRklORVMp
IExBTkdVQUdFX0pBVkFTQ1JJUFQiIC0taWRsRmlsZXNMaXN0ICQoSURMX0ZJTEVTX1RNUCkgLS1z
dXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZSAkKFNVUFBMRU1FTlRBTF9ERVBFTkRFTkNZX0ZJTEUp
IC0td2luZG93Q29uc3RydWN0b3JzRmlsZSAkKFdJTkRPV19DT05TVFJVQ1RPUlNfRklMRSkgLS13
b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgJChXT1JLRVJHTE9CQUxTQ09QRV9DT05T
VFJVQ1RPUlNfRklMRSkgLS1kZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0Zp
bGUgJChERURJQ0FURURXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSkgLS1zZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlICQoU0VSVklDRVdPUktFUkdMT0JB
TFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFKSAtLXdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9y
c0ZpbGUgJChXT1JLTEVUR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUpIC0tcGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlICQoUEFJTlRXT1JLTEVUR0xPQkFMU0NPUEVf
Q09OU1RSVUNUT1JTX0ZJTEUpIC0tc3VwcGxlbWVudGFsTWFrZWZpbGVEZXBzICRACiAJJChERUxF
VEUpICQoSURMX0ZJTEVTX1RNUCkKIAotSlMlLmNwcCBKUyUuaCA6ICUuaWRsICQoSlNfQklORElO
R1NfU0NSSVBUUykgJChJRExfQVRUUklCVVRFU19GSUxFKSAkKFdJTkRPV19DT05TVFJVQ1RPUlNf
RklMRSkgJChXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSkgJChQTEFURk9STV9G
RUFUVVJFX0RFRklORVMpCitKUyUuY3BwIEpTJS5oIDogJS5pZGwgJChKU19CSU5ESU5HU19TQ1JJ
UFRTKSAkKElETF9BVFRSSUJVVEVTX0ZJTEUpICQoV0lORE9XX0NPTlNUUlVDVE9SU19GSUxFKSAk
KFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFKSAkKFdPUktMRVRHTE9CQUxTQ09Q
RV9DT05TVFJVQ1RPUlNfRklMRSkgJChQTEFURk9STV9GRUFUVVJFX0RFRklORVMpCiAJJChQRVJM
KSAkKFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGwgJChJRExf
Q09NTU9OX0FSR1MpIC0tZGVmaW5lcyAiJChGRUFUVVJFX0FORF9QTEFURk9STV9ERUZJTkVTKSAk
KEFERElUSU9OQUxfSURMX0RFRklORVMpIExBTkdVQUdFX0pBVkFTQ1JJUFQiIC0tZ2VuZXJhdG9y
IEpTIC0taWRsQXR0cmlidXRlc0ZpbGUgJChJRExfQVRUUklCVVRFU19GSUxFKSAtLXN1cHBsZW1l
bnRhbERlcGVuZGVuY3lGaWxlICQoU1VQUExFTUVOVEFMX0RFUEVOREVOQ1lfRklMRSkgJDwKIAog
LWluY2x1ZGUgJChTVVBQTEVNRU5UQUxfTUFLRUZJTEVfREVQUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXgg
YWViNjYyZWIyZjAwZTBjMmJkY2ViNWM3YWExZmU1NDBiMGMxYmI3Yy4uMTE4ZjU5MzYxN2Y5MWI4
ZTg1NGVlODc0MTlmMjIxNzYzYTYzMjEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTM4NSw3ICszODUs
NiBAQCBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRTdHJpbmdzLmNwcAogYmluZGluZ3MvanMvSlNE
T01Db252ZXJ0V2ViR0wuY3BwCiBiaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmNwcAogYmluZGlu
Z3MvanMvSlNEZXByZWNhdGVkQ1NTT01WYWx1ZUN1c3RvbS5jcHAKLWJpbmRpbmdzL2pzL0pTQ1NT
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwCiBiaW5kaW5ncy9qcy9KU0NhbGxiYWNr
RGF0YS5jcHAKIGJpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNw
cAogYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcApAQCAtNDQ2LDYgKzQ0
NSw3IEBAIGJpbmRpbmdzL2pzL0pTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcAogYmluZGluZ3MvanMv
SlNOb2RlTGlzdEN1c3RvbS5jcHAKIGJpbmRpbmdzL2pzL0pTT2Zmc2NyZWVuQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQ3VzdG9tLmNwcAogYmluZGluZ3MvanMvSlNQYWludFJlbmRlcmluZ0NvbnRl
eHQyREN1c3RvbS5jcHAKK2JpbmRpbmdzL2pzL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0
b20uY3BwCiBiaW5kaW5ncy9qcy9KU1BheW1lbnRNZXRob2RDaGFuZ2VFdmVudEN1c3RvbS5jcHAK
IGJpbmRpbmdzL2pzL0pTUGF5bWVudFJlc3BvbnNlQ3VzdG9tLmNwcAogYmluZGluZ3MvanMvSlNQ
ZXJmb3JtYW5jZUVudHJ5Q3VzdG9tLmNwcApAQCAtNDc4LDYgKzQ3OCw3IEBAIGJpbmRpbmdzL2pz
L0pTV2luZG93UHJveHkuY3BwCiBiaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5j
cHAKIGJpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwCiBiaW5kaW5ncy9q
cy9KU1dvcmtlck5hdmlnYXRvckN1c3RvbS5jcHAKK2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2Jh
bFNjb3BlQmFzZS5jcHAKIGJpbmRpbmdzL2pzL0pTWE1MRG9jdW1lbnRDdXN0b20uY3BwCiBiaW5k
aW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAogYmluZGluZ3MvanMvSlNYUGF0aE5T
UmVzb2x2ZXJDdXN0b20uY3BwCkBAIC02MTMsNyArNjE0LDYgQEAgY3NzL0NTU05hbWVkSW1hZ2VW
YWx1ZS5jcHAKIGNzcy9DU1NOYW1lc3BhY2VSdWxlLmNwcAogY3NzL0NTU1BhZ2VSdWxlLmNwcAog
Y3NzL0NTU1BhaW50SW1hZ2VWYWx1ZS5jcHAKLWNzcy9DU1NQYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5jcHAKIGNzcy9DU1NQZW5kaW5nU3Vic3RpdHV0aW9uVmFsdWUuY3BwCiBjc3MvQ1NTUHJpbWl0
aXZlVmFsdWUuY3BwCiBjc3MvQ1NTUHJvcGVydHkuY3BwCkBAIC0yMzcxLDYgKzIzNzEsMTIgQEAg
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKIHdvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAogd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKIAord29ya2xldHMvV29ya2xldC5jcHAK
K3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcAord29ya2xldHMvV29ya2xldEdsb2Jh
bFNjb3BlLmNwcAord29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCit3b3JrbGV0
cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKKwogeG1sL0RPTVBhcnNlci5jcHAKIHhtbC9O
YXRpdmVYUGF0aE5TUmVzb2x2ZXIuY3BwCiB4bWwvWE1MRXJyb3JzLmNwcApAQCAtMjQ4MCw3ICsy
NDg2LDkgQEAgSlNDU1NLZXlmcmFtZXNSdWxlLmNwcAogSlNDU1NNZWRpYVJ1bGUuY3BwCiBKU0NT
U05hbWVzcGFjZVJ1bGUuY3BwCiBKU0NTU1BhaW50Q2FsbGJhY2suY3BwCi1KU0NTU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlLmNwcAorSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKK0pTV29y
a2xldC5jcHAKK0pTV29ya2xldEdsb2JhbFNjb3BlLmNwcAogSlNDU1NQYWdlUnVsZS5jcHAKIEpT
Q1NTUnVsZS5jcHAKIEpTQ1NTUnVsZUxpc3QuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmMyZDcxZWZjNzcxNTdkZGUzZDM0
NGYyYWZlNDc5NjczNjE0NmE4My4uYWJiMDQyZThjNDE4MzA5ZGNkZjhhZGIxM2YxODc4Yzg5Yzdi
YTQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTM1MiwxNCArMTM1MiwxOSBAQAogCQk0QjM0ODA5NDBFRUY1MEQ0MDBBQzFC
NDEgLyogSW1hZ2VTb3VyY2VDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEIzNDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0cuaCAq
LzsgfTsKIAkJNEI1QkREOUIyMTY1OEExNTAwREQ0MjYyIC8qIENTU1BhaW50Q2FsbGJhY2suaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCNUJERDlBMjE2
NThBMTUwMERENDI2MiAvKiBDU1NQYWludENhbGxiYWNrLmggKi87IH07CiAJCTRCNkI1Q0JEMjE2
NDBFRkYwMDYwMzgxNyAvKiBET01DU1NQYWludFdvcmtsZXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCNkI1Q0I4MjE2M0VDMDcwMDYwMzgxNyAvKiBE
T01DU1NQYWludFdvcmtsZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwotCQk0QjZCNUNDMDIxNjQzODY0MDA2MDM4MTcgLyogQ1NTUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDRCNkI1Q0JGMjE2NDM4NjQwMDYwMzgxNyAvKiBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5oICovOyB9OworCQk0QjZCNUNDMDIxNjQzODY0MDA2MDM4MTcgLyogUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRCNkI1Q0JGMjE2NDM4NjQwMDYwMzgxNyAvKiBQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oICov
OyB9OwogCQk0QjZFODc2OTIxNzZENjkyMDA0MjBFNUUgLyogQ1NTUGFpbnRJbWFnZVZhbHVlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjZFODc2ODIx
NzZENjkyMDA0MjBFNUUgLyogQ1NTUGFpbnRJbWFnZVZhbHVlLmggKi87IH07CiAJCTRCNkZBNkY0
MEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCNkZBNkYyMEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFy
dFJlcGxhY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0QjdBRTQ5MzIxNzdCNTZGMDBDNTk5NTkgLyogQ3VzdG9tUGFpbnRJbWFnZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI3QUU0OTIyMTc3QjU2
RjAwQzU5OTU5IC8qIEN1c3RvbVBhaW50SW1hZ2UuaCAqLzsgfTsKKwkJNEI3RjlDNTIyMTgzQjVF
NTAwMUNFQkEwIC8qIFdvcmtsZXRDb25zb2xlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjdGOUM1MTIxODNCNUU1MDAxQ0VCQTAgLyogV29y
a2xldENvbnNvbGVDbGllbnQuaCAqLzsgfTsKIAkJNEJBRTk1QjEwQjJGQTlDRTAwQUVEOEEwIC8q
IEVkaXRvckRlbGV0ZUFjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEJBRTk1QjAwQjJGQTlDRTAwQUVEOEEwIC8qIEVkaXRvckRlbGV0ZUFjdGlv
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRC
REEzRkZFMjE1MUI2RjUwMEZENjYwNCAvKiBET01DU1NDdXN0b21Qcm9wZXJ0eURlc2NyaXB0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCREEzRkY4
MjE1MUI2RjIwMEZENjYwNCAvKiBET01DU1NDdXN0b21Qcm9wZXJ0eURlc2NyaXB0b3IuaCAqLzsg
fTsKIAkJNEJEQTNGRkYyMTUxQjZGNTAwRkQ2NjA0IC8qIERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJv
cGVydHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRC
REEzRkY5MjE1MUI2RjMwMEZENjYwNCAvKiBET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5Lmgg
Ki87IH07CiAJCTRCREE0MDAxMjE1MUI2RjUwMEZENjYwNCAvKiBDU1NSZWdpc3RlcmVkQ3VzdG9t
UHJvcGVydHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRCREEzRkZCMjE1MUI2RjQwMEZENjYwNCAvKiBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0QkRF
QTMyMDIxN0VDNTVGMDA1MkRGQ0QgLyogV29ya2xldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJERUEzMUYyMTdFQzU1RjAwNTJERkNEIC8qIFdvcmts
ZXQuaCAqLzsgfTsKKwkJNEJERUEzMjUyMTdGRTJFNDAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxT
Y29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJE
RUEzMjQyMTdGRTJFNDAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxTY29wZS5oICovOyB9OworCQk0
QkRFQTMyODIxODAwM0Y3MDA1MkRGQ0QgLyogV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCREVBMzI3MjE4MDAz
RjcwMDUyREZDRCAvKiBXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oICovOyB9OworCQk0QkRFQTMy
QzIxODAzM0VCMDA1MkRGQ0QgLyogSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QkRFQTMyQjIxODAzM0VCMDA1
MkRGQ0QgLyogSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmggKi87IH07CiAJCTREM0IwMEFCMjE1
RDY5QTcwMDc2Qjk4MyAvKiBNZWRpYVJlY29yZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RDNCMDBBOTIxNUQ2OUE3MDA3NkI5ODMgLyogTWVkaWFS
ZWNvcmRlci5oICovOyB9OwogCQk0RDNCMDBBRjIxNUQ2QTY5MDA3NkI5ODMgLyogQmxvYkV2ZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RDNCMDBB
RDIxNUQ2QTY5MDA3NkI5ODMgLyogQmxvYkV2ZW50LmggKi87IH07CiAJCTREQjcxMzBEMjE2RUNC
NEQwMDk2QTRERCAvKiBNZWRpYVJlY29yZGVyRXJyb3JFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNERCNzEzMEMyMTZFQzJCRDAwOTZBNEREIC8q
IE1lZGlhUmVjb3JkZXJFcnJvckV2ZW50LmggKi87IH07CkBAIC03OTAxLDE2ICs3OTA2LDE4IEBA
CiAJCTRCNkI1Q0I2MjE2M0RDMUEwMDYwMzgxNyAvKiBET01DU1NQYWludFdvcmtsZXQuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IERPTUNTU1BhaW50V29ya2xldC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTRCNkI1Q0I4MjE2M0VDMDcwMDYwMzgxNyAvKiBET01DU1NQYWludFdvcmtsZXQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRE9NQ1NTUGFpbnRXb3JrbGV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTRCNkI1Q0I5MjE2M0VEMzIwMDYwMzgxNyAvKiBET01DU1NQYWludFdvcmtsZXQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRE9NQ1NTUGFpbnRXb3JrbGV0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNEI2QjVDQkUyMTY0MzRGQjAwNjAzODE3IC8qIEpTQ1NTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDU1NQYWludFdv
cmtsZXRHbG9iYWxTY29wZUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTRCNkI1Q0JGMjE2NDM4NjQwMDYwMzgxNyAvKiBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk0QjZCNUNDMTIxNjQzOUNGMDA2MDM4MTcgLyogQ1NTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0QjZCNUNDMzIx
NjQzQThFMDA2MDM4MTcgLyogQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENT
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNEI2QjVDQkUyMTY0MzRGQjAwNjAzODE3IC8qIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZUN1
c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRCNkI1Q0JGMjE2NDM4NjQw
MDYwMzgxNyAvKiBQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QjZC
NUNDMTIxNjQzOUNGMDA2MDM4MTcgLyogUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0QjZCNUNDMzIxNjQzQThFMDA2MDM4MTcgLyogUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI2RTg3NjgyMTc2RDY5MjAwNDIwRTVFIC8qIENTU1Bh
aW50SW1hZ2VWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NQYWludEltYWdlVmFsdWUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI2RTg3NkIyMTc2RDhBMTAwNDIwRTVFIC8qIENT
U1BhaW50SW1hZ2VWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NQYWludEltYWdlVmFs
dWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QjZGQTZGMjBDMzlFNDhDMDAw
ODcwMTEgLyogU21hcnRSZXBsYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNtYXJ0UmVwbGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QjZGQTZGNjBD
MzlFNEExMDAwODcwMTEgLyogU21hcnRSZXBsYWNlQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU21hcnRSZXBsYWNlQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0QjdBRTQ5MjIxNzdCNTZGMDBDNTk5NTkgLyogQ3VzdG9tUGFpbnRJbWFnZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDdXN0b21QYWludEltYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTRCN0FFNDk1MjE3N0I2M0UwMEM1OTk1OSAvKiBDdXN0b21QYWludEltYWdlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEN1c3RvbVBhaW50SW1hZ2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0QjdGOUM1MTIxODNCNUU1MDAxQ0VCQTAgLyogV29ya2xldENvbnNv
bGVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2xldENvbnNvbGVDbGllbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEI3RjlDNTQyMTgzQjYzNDAwMUNFQkEwIC8qIFdvcmts
ZXRDb25zb2xlQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtsZXRDb25zb2xlQ2xp
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEJBRTk1QjAwQjJGQTlDRTAw
QUVEOEEwIC8qIEVkaXRvckRlbGV0ZUFjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBFZGl0b3JEZWxldGVBY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNEJEQTNGRjUyMTUxQjZGMDAwRkQ2NjA0IC8qIERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVy
dHkuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVy
dHkuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QkRBM0ZGNzIxNTFCNkYxMDBG
RDY2MDQgLyogRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc5MTgsNiArNzkyNSwxNiBAQAogCQk0QkRB
M0ZGOTIxNTFCNkYzMDBGRDY2MDQgLyogRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01DU1NSZWdpc3RlckN1c3RvbVByb3Bl
cnR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCREEzRkZBMjE1MUI2RjMwMEZE
NjYwNCAvKiBET01DU1NDdXN0b21Qcm9wZXJ0eURlc2NyaXB0b3IuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IERPTUNTU0N1c3RvbVByb3BlcnR5RGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTRCREEzRkZCMjE1MUI2RjQwMEZENjYwNCAvKiBDU1NSZWdpc3Rl
cmVkQ3VzdG9tUHJvcGVydHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NT
UmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTRCREVBMzFDMjE3RUJDRjUwMDUyREZDRCAvKiBXb3JrbGV0LmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXb3JrbGV0Lmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEJERUEzMUYyMTdFQzU1RjAwNTJERkNE
IC8qIFdvcmtsZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2xldC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0QkRFQTMyMzIxN0VDOTZBMDA1MkRGQ0QgLyogV29ya2xldC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXb3JrbGV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNEJERUEzMjQyMTdGRTJFNDAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxTY29wZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXb3JrbGV0R2xvYmFsU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNEJERUEzMjYyMTdGRTJGQTAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxTY29wZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrbGV0R2xvYmFsU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0QkRFQTMyNzIxODAwM0Y3MDA1MkRGQ0QgLyogV29ya2xldFNjcmlw
dENvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEJERUEzMjkyMTgwMDQwQzAwNTJERkNEIC8q
IFdvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtsZXRT
Y3JpcHRDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEJERUEz
MkEyMTgwMTA3MjAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxTY29wZS5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV29ya2xl
dEdsb2JhbFNjb3BlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEJERUEzMkIy
MTgwMzNFQjAwNTJERkNEIC8qIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNEJERUEzMkQyMTgwMzQwNTAwNTJERkNEIC8qIEpTV29ya2xldEdsb2JhbFNjb3BlQmFz
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RDNCMDBBNDIxNUQ2MTA0MDA3NkI5ODMgLyog
TWVkaWFSZWNvcmRlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTWVkaWFSZWNvcmRlci5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTREM0IwMEE2MjE1RDY0NUIwMDc2Qjk4
MyAvKiBCbG9iRXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEJsb2JFdmVudC5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTREM0IwMEE4MjE1RDY5QTYwMDc2Qjk4MyAv
KiBNZWRpYVJlY29yZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE1lZGlhUmVjb3JkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU4MDEs
NiArMTU4MTgsNyBAQAogCQkJCUIyMjI3N0NBMEQwMEJGMUUwMDcxQjc4MiAvKiBzdmcgKi8sCiAJ
CQkJNDE3REE0Q0QxMzczNDIwNDAwN0M1N0ZCIC8qIHRlc3RpbmcgKi8sCiAJCQkJMkU0MzQ2MzEw
RjU0NkE2ODAwQjBGMUJBIC8qIHdvcmtlcnMgKi8sCisJCQkJNEJERUEzMTgyMTdFQkI4ODAwNTJE
RkNEIC8qIHdvcmtsZXRzICovLAogCQkJCUUxRjA0MjQzMDk4MzkzODkwMDY2OTRFQSAvKiB4bWwg
Ki8sCiAJCQkJNjU2NTgwRUMwOUQxMkIyMDAwMEU2MUQ3IC8qIERlcml2ZWQgU291cmNlcyAqLywK
IAkJCQkwODlDMTY2NUZFODQxMTU4QzAyQUFDMDcgLyogUmVzb3VyY2VzICovLApAQCAtMTgwMzYs
NiArMTgwNTQsMjYgQEAKIAkJCXBhdGggPSBhbmltYXRpb247CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwogCQl9OworCQk0QkRFQTMxODIxN0VCQjg4MDA1MkRGQ0QgLyogd29ya2xldHMgKi8g
PSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTRCNkI1Q0MxMjE2
NDM5Q0YwMDYwMzgxNyAvKiBQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAgKi8sCisJCQkJNEI2
QjVDQkYyMTY0Mzg2NDAwNjAzODE3IC8qIFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmggKi8sCisJ
CQkJNEI2QjVDQzMyMTY0M0E4RTAwNjAzODE3IC8qIFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmlk
bCAqLywKKwkJCQk0QkRFQTMyMzIxN0VDOTZBMDA1MkRGQ0QgLyogV29ya2xldC5jcHAgKi8sCisJ
CQkJNEJERUEzMUYyMTdFQzU1RjAwNTJERkNEIC8qIFdvcmtsZXQuaCAqLywKKwkJCQk0QkRFQTMx
QzIxN0VCQ0Y1MDA1MkRGQ0QgLyogV29ya2xldC5pZGwgKi8sCisJCQkJNEI3RjlDNTQyMTgzQjYz
NDAwMUNFQkEwIC8qIFdvcmtsZXRDb25zb2xlQ2xpZW50LmNwcCAqLywKKwkJCQk0QjdGOUM1MTIx
ODNCNUU1MDAxQ0VCQTAgLyogV29ya2xldENvbnNvbGVDbGllbnQuaCAqLywKKwkJCQk0QkRFQTMy
NjIxN0ZFMkZBMDA1MkRGQ0QgLyogV29ya2xldEdsb2JhbFNjb3BlLmNwcCAqLywKKwkJCQk0QkRF
QTMyNDIxN0ZFMkU0MDA1MkRGQ0QgLyogV29ya2xldEdsb2JhbFNjb3BlLmggKi8sCisJCQkJNEJE
RUEzMkEyMTgwMTA3MjAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxTY29wZS5pZGwgKi8sCisJCQkJ
NEJERUEzMjkyMTgwMDQwQzAwNTJERkNEIC8qIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcCAq
LywKKwkJCQk0QkRFQTMyNzIxODAwM0Y3MDA1MkRGQ0QgLyogV29ya2xldFNjcmlwdENvbnRyb2xs
ZXIuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gd29ya2xldHM7CisJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOworCQl9OwogCQk0RDNCMDBBMDIxNUQ1QzBGMDA3NkI5ODMgLyogbWVkaWFyZWNvcmRl
ciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yNDQwOSw2
ICsyNDQ0Nyw4IEBACiAJCQkJQkNCRkI1M0IwRENEMjlDRjAwMTlCM0U1IC8qIEpTV2luZG93UHJv
eHkuaCAqLywKIAkJCQlFMUMzNkQzMjBFQjBBMDk0MDA3NDEwQkMgLyogSlNXb3JrZXJHbG9iYWxT
Y29wZUJhc2UuY3BwICovLAogCQkJCUUxQzM2RDMzMEVCMEEwOTQwMDc0MTBCQyAvKiBKU1dvcmtl
ckdsb2JhbFNjb3BlQmFzZS5oICovLAorCQkJCTRCREVBMzJEMjE4MDM0MDUwMDUyREZDRCAvKiBK
U1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwICovLAorCQkJCTRCREVBMzJCMjE4MDMzRUIwMDUy
REZDRCAvKiBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuaCAqLywKIAkJCQk3MDlBMDFGRDFFM0Qw
QkNDMDA2QjBENEMgLyogTW9kdWxlRmV0Y2hGYWlsdXJlS2luZC5oICovLAogCQkJCTQxQjQ1OUVE
MUY1NUVCQzcwMDAwRjZGRCAvKiBSZWFkYWJsZVN0cmVhbS5jcHAgKi8sCiAJCQkJNDFCNDU5REEx
RjRDQURCOTAwMDBGNkZEIC8qIFJlYWRhYmxlU3RyZWFtLmggKi8sCkBAIC0yNDQ0OSwxMiArMjQ0
ODksMTIgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTdDRDM0NDFCMUYzMkRFMzAwMDBEQ0Q0OSAv
KiBDYWNoZWQgQXR0cmlidXRlcyB3LyBJbnZhbGlkYXRpb24gKi8sCiAJCQkJN0MzRDhFRTQxRTA4
QkFCRTAwMjNCMDg0IC8qIEdDIC8gV3JhcHBpbmcgT25seSAqLywKLQkJCQk0QjZCNUNCRTIxNjQz
NEZCMDA2MDM4MTcgLyogSlNDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZUN1c3RvbS5jcHAgKi8s
CiAJCQkJOUJDNUY5REYxRDVBQUY2QTAwMkI3NDlEIC8qIEpTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5
Q3VzdG9tLmNwcCAqLywKIAkJCQlCQ0Q5QzI1RTBDMTdBQTY3MDA1QzkwQTIgLyogSlNET01XaW5k
b3dDdXN0b20uY3BwICovLAogCQkJCTY1MkZCQkJCMERFMjdDQjYwMDAxRDM4NiAvKiBKU0RPTVdp
bmRvd0N1c3RvbS5oICovLAogCQkJCUJDNTgyM0Y0MEMwQTk4REYwMDUzRjFCNSAvKiBKU0hUTUxF
bGVtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlCQ0UxQzQzRjBEOTgzMEY0MDAzQjAyRjIgLyogSlNM
b2NhdGlvbkN1c3RvbS5jcHAgKi8sCisJCQkJNEI2QjVDQkUyMTY0MzRGQjAwNjAzODE3IC8qIEpT
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwICovLAogCQkJCTQxOEMzOTVEMUM4RjBB
QUIwMDUxQzhBMyAvKiBKU1JlYWRhYmxlU3RyZWFtU291cmNlQ3VzdG9tLmNwcCAqLywKIAkJCQk0
NkJDQkJCRTIwODUwMDVCMDA3MTA2MzggLyogSlNSZW1vdGVET01XaW5kb3dDdXN0b20uY3BwICov
LAogCQkJKTsKQEAgLTI2MDUyLDkgKzI2MDkyLDYgQEAKIAkJCQk0QjVCREQ5OTIxNjU4OEU1MDBE
RDQyNjIgLyogQ1NTUGFpbnRDYWxsYmFjay5pZGwgKi8sCiAJCQkJNEI2RTg3NkIyMTc2RDhBMTAw
NDIwRTVFIC8qIENTU1BhaW50SW1hZ2VWYWx1ZS5jcHAgKi8sCiAJCQkJNEI2RTg3NjgyMTc2RDY5
MjAwNDIwRTVFIC8qIENTU1BhaW50SW1hZ2VWYWx1ZS5oICovLAotCQkJCTRCNkI1Q0MxMjE2NDM5
Q0YwMDYwMzgxNyAvKiBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAgKi8sCi0JCQkJNEI2
QjVDQkYyMTY0Mzg2NDAwNjAzODE3IC8qIENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmggKi8s
Ci0JCQkJNEI2QjVDQzMyMTY0M0E4RTAwNjAzODE3IC8qIENTU1BhaW50V29ya2xldEdsb2JhbFNj
b3BlLmlkbCAqLywKIAkJCQk5NDE4Mjc4QzFEOENBRTk1MDA0OTI3NjQgLyogQ1NTUGVuZGluZ1N1
YnN0aXR1dGlvblZhbHVlLmNwcCAqLywKIAkJCQk5NDE4Mjc4RDFEOENBRTk1MDA0OTI3NjQgLyog
Q1NTUGVuZGluZ1N1YnN0aXR1dGlvblZhbHVlLmggKi8sCiAJCQkJQTgwRTZDREIwQTE5ODlDQTAw
N0ZCOEM1IC8qIENTU1ByaW1pdGl2ZVZhbHVlLmNwcCAqLywKQEAgLTI4MDU1LDcgKzI4MDkyLDYg
QEAKIAkJCQlBODBFNkQwMDBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTUGFnZVJ1bGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTRCNUJERDlCMjE2NThBMTUwMERENDI2MiAvKiBDU1NQYWludENhbGxiYWNr
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0QjZFODc2OTIxNzZENjkyMDA0MjBFNUUgLyogQ1NTUGFp
bnRJbWFnZVZhbHVlLmggaW4gSGVhZGVycyAqLywKLQkJCQk0QjZCNUNDMDIxNjQzODY0MDA2MDM4
MTcgLyogQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk0
NkQzNzJFMUQ2Q0IyOTQwMDc3MDg0RiAvKiBDU1NQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUU0QTc5OTUyMjBFRTRCMTQwMEMxOTU2OCAvKiBDU1NQYXJzZXJDb250ZXh0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5NDlDNzcwMTFENkUxRDk4MDBDMERFNEYgLyogQ1NTUGFyc2VyRmFzdFBhdGhz
LmggaW4gSGVhZGVycyAqLywKQEAgLTI5NzU4LDYgKzI5Nzk0LDcgQEAKIAkJCQlFMUMzNjJFRjBF
QUYyQUE5MDA3NDEwQkMgLyogSlNXb3JrZXJMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTEyNzFBNTgwRUVFQ0RFNDAwRjYxMjEzIC8qIEpTV29ya2VyTmF2aWdhdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MUYxNzUwNjFGMzU4QkY3MDBDNzQ5NTAgLyogSlNXb3JrZXJUeXBlLmggaW4g
SGVhZGVycyAqLywKKwkJCQk0QkRFQTMyQzIxODAzM0VCMDA1MkRGQ0QgLyogSlNXb3JrbGV0R2xv
YmFsU2NvcGVCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzRDOTZERDFBRDQ0ODM1MDAzNjVB
NjAgLyogSlNXcml0YWJsZVN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM1OENCNzAxQzUz
Mjc3NTAwRTBDMkQ4IC8qIEpTWE1MRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMzQ4
QkQ0MERCN0Y4MDQwMDRBQkFCOSAvKiBKU1hNTEh0dHBSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywK
QEAgLTMwMTQ0LDYgKzMwMTgxLDcgQEAKIAkJCQkwODg1MDY3RjExREEwNDVCMDAxODJCOTggLyog
UGFpbnRJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODg1MDY4MDExREEwNDVCMDAxODJCOTgg
LyogUGFpbnRQaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEIxRTEzRUIyMTc5MzdCMzAwNDJD
Rjk4IC8qIFBhaW50UmVuZGVyaW5nQ29udGV4dDJELmggaW4gSGVhZGVycyAqLywKKwkJCQk0QjZC
NUNDMDIxNjQzODY0MDA2MDM4MTcgLyogUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4MEU2Q0ZCMEExOTg5Q0EwMDdGQjhDNSAvKiBQYWlyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRDMxNjBBMzEyQjAyNkY3MDBDMUEzNTkgLyogUGFubmVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRDMxNjAxQTEyQjAyNjc2MDBDMUEzNTkgLyogUGFubmVyTm9kZS5oIGluIEhl
YWRlcnMgKi8sCkBAIC0zMTU2Miw2ICszMTYwMCwxMCBAQAogCQkJCTk3QUFCRDJEMTRGQTA5RDUw
MDc0NTdBRSAvKiBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTU0QTBDNjgxREI4MDdEOTAwMTdBOTBCIC8qIFdvcmtlclRvUGFnZUZyb250ZW5k
Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGMTc0RkUxRjM1ODk5MjAwQzc0OTUwIC8q
IFdvcmtlclR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTRCREVBMzIwMjE3RUM1NUYwMDUyREZD
RCAvKiBXb3JrbGV0LmggaW4gSGVhZGVycyAqLywKKwkJCQk0QjdGOUM1MjIxODNCNUU1MDAxQ0VC
QTAgLyogV29ya2xldENvbnNvbGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTRCREVBMzI1
MjE3RkUyRTQwMDUyREZDRCAvKiBXb3JrbGV0R2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTRCREVBMzI4MjE4MDAzRjcwMDUyREZDRCAvKiBXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMjQwOTlFNjQ5MjAwNTZFNTgxIC8qIFdyYXBDb250
ZW50c0luRHVtbXlTcGFuQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE2RTZGRTkxQkJE
MTJFNTAwMEE2MDUzIC8qIFdyaXRhYmxlU3RyZWFtQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxNkU2RkU4MUJCRDEyREYwMDBBNjA1MyAvKiBXcml0YWJsZVN0cmVhbUludGVybmFsc0J1
aWx0aW5zLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZUN1c3RvbS5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5ZmEzNDVhNWUzOGYzOWYzYzFkZWRjZDUz
YjZmYTM3Mzg1NTEzYjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NQYWludFdvcmtsZXRHbG9iYWxT
Y29wZUN1c3RvbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzMgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJKU0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCi0KLSNpZiBFTkFCTEUo
Q1NTX1BBSU5USU5HX0FQSSkKLQotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiSlND
U1NQYWludENhbGxiYWNrLmgiCi0jaW5jbHVkZSAiSlNET01Db252ZXJ0Q2FsbGJhY2tzLmgiCi0j
aW5jbHVkZSAiSlNET01Db252ZXJ0U2VxdWVuY2VzLmgiCi0jaW5jbHVkZSA8d3RmL1NldEZvclNj
b3BlLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLXN0
YXRpYyBKU1ZhbHVlIHRocm93SW52YWxpZE1vZGlmaWNhdGlvbkVycm9yKEV4ZWNTdGF0ZSYgc3Rh
dGUsIFRocm93U2NvcGUmIHNjb3BlLCBBU0NJSUxpdGVyYWwgbWVzc2FnZSkKLXsKLSAgICBzY29w
ZS5hc3NlcnROb0V4Y2VwdGlvbigpOwotICAgIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUs
IGNyZWF0ZURPTUV4Y2VwdGlvbigmc3RhdGUsIEludmFsaWRNb2RpZmljYXRpb25FcnJvciwgbWVz
c2FnZSkpOwotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCi12b2lkIEpTQ1NTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGU6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKEpTQzo6U2xvdFZpc2l0
b3ImIHZpc2l0b3IpCi17Ci0gICAgZm9yIChhdXRvJiByZWdpc3RlcmVkIDogd3JhcHBlZCgpLnBh
aW50RGVmaW5pdGlvbk1hcCgpLnZhbHVlcygpKQotICAgICAgICByZWdpc3RlcmVkLT5wYWludENh
bGxiYWNrLT52aXNpdEpTRnVuY3Rpb24odmlzaXRvcik7Ci19Ci0KLS8vIGh0dHBzOi8vZHJhZnRz
LmNzcy1ob3VkaW5pLm9yZy9jc3MtcGFpbnQtYXBpLyNyZWdpc3RlcmluZy1jdXN0b20tcGFpbnQK
LUpTVmFsdWUgSlNDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6cmVnaXN0ZXJQYWludChFeGVj
U3RhdGUmIHN0YXRlKQotewotICAgIHVzaW5nIFBhaW50RGVmaW5pdGlvbiA9IENTU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb247Ci0KLSAgICBDU1NQYWludFdvcmtsZXRH
bG9iYWxTY29wZSYgd29ya2xldEdsb2JhbFNjb3BlID0gd3JhcHBlZCgpOwotICAgIFZNJiB2bSA9
IHN0YXRlLnZtKCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwot
Ci0gICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDIpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3IoJnN0YXRlKSk7Ci0KLSAgICBBdG9taWNTdHJpbmcgbmFtZShzdGF0ZS51bmNoZWNr
ZWRBcmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT50b0F0b21pY1N0cmluZygmc3RhdGUpKTsK
LSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwotICAgIEpTVmFsdWUg
Y29uc3RydWN0b3JWYWx1ZSA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpOwotICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7Ci0KLSAgICBpZiAobmFtZS5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCAiVGhlIGZp
cnN0IGFyZ3VtZW50IG11c3Qgbm90IGJlIHRoZSBlbXB0eSBzdHJpbmciX3MpOwotCi0gICAgYXV0
byYgcGFpbnREZWZpbml0aW9uTWFwID0gd29ya2xldEdsb2JhbFNjb3BlLnBhaW50RGVmaW5pdGlv
bk1hcCgpOwotCi0gICAgaWYgKHBhaW50RGVmaW5pdGlvbk1hcC5jb250YWlucyhuYW1lKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93SW52YWxpZE1vZGlmaWNhdGlvbkVycm9yKHN0YXRlLCBzY29wZSwg
IlRoaXMgbmFtZSBoYXMgYWxyZWFkeSBiZWVuIHJlZ2lzdGVyZWQiX3MpOwotCi0gICAgVmVjdG9y
PFN0cmluZz4gaW5wdXRQcm9wZXJ0aWVzOwotCi0gICAgSlNWYWx1ZSBpbnB1dFByb3BlcnRpZXNJ
dGVyYWJsZVZhbHVlID0gY29uc3RydWN0b3JWYWx1ZS5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZ2bSwgImlucHV0UHJvcGVydGllcyIpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwotCi0gICAgaWYgKCFpbnB1dFByb3BlcnRpZXNJdGVyYWJs
ZVZhbHVlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIGlucHV0UHJvcGVydGllcyA9IGNvbnZlcnQ8
SURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj4oc3RhdGUsIGlucHV0UHJvcGVydGllc0l0ZXJhYmxl
VmFsdWUpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7Ci0KLSAg
ICAvLyBGSVhNRTogVmFsaWRhdGUgaW5wdXQgcHJvcGVydGllcyBoZXJlIChzdGVwIDcpLgotCi0g
ICAgVmVjdG9yPFN0cmluZz4gaW5wdXRBcmd1bWVudHM7Ci0KLSAgICBKU1ZhbHVlIGlucHV0QXJn
dW1lbnRzSXRlcmFibGVWYWx1ZSA9IGNvbnN0cnVjdG9yVmFsdWUuZ2V0KCZzdGF0ZSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmdm0sICJpbnB1dEFyZ3VtZW50cyIpKTsKLSAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwotCi0gICAgaWYgKCFpbnB1dEFyZ3VtZW50c0l0
ZXJhYmxlVmFsdWUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgaW5wdXRBcmd1bWVudHMgPSBjb252
ZXJ0PElETFNlcXVlbmNlPElETERPTVN0cmluZz4+KHN0YXRlLCBpbnB1dEFyZ3VtZW50c0l0ZXJh
YmxlVmFsdWUpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7Ci0K
LSAgICAvLyBGSVhNRTogUGFyc2Ugc3ludGF4IGZvciBpbnB1dEFyZ3VtZW50cyBoZXJlIChzdGVw
cyAxMSBhbmQgMTIpLgotCi0gICAgSlNWYWx1ZSBjb250ZXh0T3B0aW9uc1ZhbHVlID0gY29uc3Ry
dWN0b3JWYWx1ZS5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImNvbnRl
eHRPcHRpb25zIikpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7
Ci0gICAgVU5VU0VEX1BBUkFNKGNvbnRleHRPcHRpb25zVmFsdWUpOwotCi0gICAgLy8gRklYTUU6
IENvbnZlcnQgdG8gUGFpbnRSZW5kZXJpbmdDb250ZXh0MkRTZXR0aW5ncyBoZXJlIChzdGVwIDE0
KS4KLQotICAgIGlmICghY29uc3RydWN0b3JWYWx1ZS5pc0NvbnN0cnVjdG9yKHZtKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsICJUaGUgc2Vjb25kIGFyZ3Vt
ZW50IG11c3QgYmUgYSBjb25zdHJ1Y3RvciJfcyk7Ci0KLSAgICBKU1ZhbHVlIHByb3RvdHlwZVZh
bHVlID0gY29uc3RydWN0b3JWYWx1ZS5nZXQoJnN0YXRlLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90
b3R5cGUpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7Ci0KLSAg
ICBpZiAoIXByb3RvdHlwZVZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcigmc3RhdGUsIHNjb3BlLCAiVGhlIHNlY29uZCBhcmd1bWVudCBtdXN0IGhhdmUgYSBw
cm90b3R5cGUgdGhhdCBpcyBhbiBvYmplY3QiX3MpOwotCi0gICAgSlNWYWx1ZSBwYWludFZhbHVl
ID0gcHJvdG90eXBlVmFsdWUuZ2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0s
ICJwYWludCIpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwot
Ci0gICAgaWYgKHBhaW50VmFsdWUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsICJUaGUgY2xhc3MgbXVzdCBoYXZlIGEgcGFpbnQgbWV0
aG9kIl9zKTsKLQotICAgIFJlZlB0cjxKU0NTU1BhaW50Q2FsbGJhY2s+IHBhaW50ID0gY29udmVy
dDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTQ1NTUGFpbnRDYWxsYmFjaz4+KHN0YXRlLCBwYWludFZh
bHVlLCAqZ2xvYmFsT2JqZWN0KCkpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpT
VmFsdWUoKSk7Ci0KLSAgICBhdXRvIHBhaW50RGVmaW5pdGlvbiA9IHN0ZDo6dW5pcXVlX3B0cjxQ
YWludERlZmluaXRpb24+KG5ldyBQYWludERlZmluaXRpb24geyBuYW1lLCBwYWludC5yZWxlYXNl
Tm9uTnVsbCgpLCBpbnB1dFByb3BlcnRpZXMsIGlucHV0QXJndW1lbnRzIH0pOwotICAgIHBhaW50
RGVmaW5pdGlvbk1hcC5hZGQobmFtZSwgV1RGTW92ZShwYWludERlZmluaXRpb24pKTsKLQotICAg
IC8vIEZJWE1FOiBjb25zdHJ1Y3QgZG9jdW1lbnREZWZpbml0aW9uIChzdGVwIDIyKS4KLQotICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCi19Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAppbmRleCBlYmIyZjYxZGRjYzMy
NWEwMWRjNTI0YjJiNTJlYjhiMTE0MTQzMDU4Li43ZGRhMjU4NmVmN2IzNWM3NTZiMWIwMjM5ZjFj
MWY3NjE2ZGUzMTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01H
bG9iYWxPYmplY3QuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiSlNSZWFkYWJsZVN0
cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuaCIKICNpbmNsdWRlICJKU1JlbW90ZURPTVdpbmRvdy5o
IgogI2luY2x1ZGUgIkpTV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJKU1dvcmtsZXRH
bG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIlJlamVjdGVkUHJvbWlzZVRyYWNrZXIuaCIKICNpbmNs
dWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlZENsb25l
LmgiCkBAIC0xOTQsNiArMTk1LDEwIEBAIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIEpTRE9NR2xv
YmFsT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgaWYgKGluaGVyaXRzPEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlPih2bSgp
KSkKICAgICAgICAgcmV0dXJuIGpzQ2FzdDxjb25zdCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZSo+
KHRoaXMpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisjaWYgRU5BQkxFKENTU19QQUlOVElO
R19BUEkpCisgICAgaWYgKGluaGVyaXRzPEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZT4odm0oKSkp
CisgICAgICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlKj4o
dGhpcyktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyNlbmRpZgogICAgIGRhdGFMb2coIlVu
ZXhwZWN0ZWQgZ2xvYmFsIG9iamVjdDogIiwgSlNWYWx1ZSh0aGlzKSwgIlxuIik7CiAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQYWludFdvcmtsZXRHbG9i
YWxTY29wZUN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDIzZjZlNTdlMDQyODljOTE5YTk1Y2QyZmI4
YmY1Y2M4MTllZmE4OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwCkBAIC0wLDAgKzEsMTM2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKworI2lm
IEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNs
dWRlICJKU0NTU1BhaW50Q2FsbGJhY2suaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnRDYWxsYmFj
a3MuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnRTZXF1ZW5jZXMuaCIKKyNpbmNsdWRlIDx3dGYv
U2V0Rm9yU2NvcGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNwYWNlIEpT
QzsKKworc3RhdGljIEpTVmFsdWUgdGhyb3dJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3IoRXhlY1N0
YXRlJiBzdGF0ZSwgVGhyb3dTY29wZSYgc2NvcGUsIEFTQ0lJTGl0ZXJhbCBtZXNzYWdlKQorewor
ICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CisgICAgdGhyb3dFeGNlcHRpb24oJnN0YXRl
LCBzY29wZSwgY3JlYXRlRE9NRXhjZXB0aW9uKCZzdGF0ZSwgSW52YWxpZE1vZGlmaWNhdGlvbkVy
cm9yLCBtZXNzYWdlKSk7CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKK3ZvaWQgSlNQ
YWludFdvcmtsZXRHbG9iYWxTY29wZTo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oSlNDOjpTbG90
VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHdyYXBwZWQo
KS5sb2NrKCkpOworICAgIGZvciAoYXV0byYgcmVnaXN0ZXJlZCA6IHdyYXBwZWQoKS5wYWludERl
ZmluaXRpb25NYXAoKS52YWx1ZXMoKSkKKyAgICAgICAgcmVnaXN0ZXJlZC0+cGFpbnRDYWxsYmFj
ay0+dmlzaXRKU0Z1bmN0aW9uKHZpc2l0b3IpOworfQorCisvLyBodHRwczovL2RyYWZ0cy5jc3Mt
aG91ZGluaS5vcmcvY3NzLXBhaW50LWFwaS8jcmVnaXN0ZXJpbmctY3VzdG9tLXBhaW50CisvLyBU
aGlzIGN1c3RvbSBiaW5kaW5nIGlzIHJlcXVpcmVkIHRvIGhhbmRsZSB0aGUgcGFpbnQgY2FsbGJh
Y2sgY29udmVyc2lvbiBhY2NvcmRpbmcgdG8gdGhlIHNwZWMuCitKU1ZhbHVlIEpTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUGFpbnQoRXhlY1N0YXRlJiBzdGF0ZSkKK3sKKyAgICB1
c2luZyBQYWludERlZmluaXRpb24gPSBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6UGFpbnREZWZp
bml0aW9uOworCisgICAgYXV0byYgd29ya2xldEdsb2JhbFNjb3BlID0gd3JhcHBlZCgpOworICAg
IGF1dG8mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMikp
CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKworICAgIEF0b21pY1N0cmluZyBuYW1lKHN0
YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnRvQXRvbWljU3RyaW5n
KCZzdGF0ZSkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7Cisg
ICAgSlNWYWx1ZSBjb25zdHJ1Y3RvclZhbHVlID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKKworICAgIGlmIChu
YW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2Nv
cGUsICJUaGUgZmlyc3QgYXJndW1lbnQgbXVzdCBub3QgYmUgdGhlIGVtcHR5IHN0cmluZyJfcyk7
CisKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHdvcmtsZXRHbG9iYWxTY29wZS5sb2NrKCkp
OworICAgIGF1dG8mIHBhaW50RGVmaW5pdGlvbk1hcCA9IHdvcmtsZXRHbG9iYWxTY29wZS5wYWlu
dERlZmluaXRpb25NYXAoKTsKKworICAgIGlmIChwYWludERlZmluaXRpb25NYXAuY29udGFpbnMo
bmFtZSkpCisgICAgICAgIHJldHVybiB0aHJvd0ludmFsaWRNb2RpZmljYXRpb25FcnJvcihzdGF0
ZSwgc2NvcGUsICJUaGlzIG5hbWUgaGFzIGFscmVhZHkgYmVlbiByZWdpc3RlcmVkIl9zKTsKKwor
ICAgIFZlY3RvcjxTdHJpbmc+IGlucHV0UHJvcGVydGllczsKKworICAgIEpTVmFsdWUgaW5wdXRQ
cm9wZXJ0aWVzSXRlcmFibGVWYWx1ZSA9IGNvbnN0cnVjdG9yVmFsdWUuZ2V0KCZzdGF0ZSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJpbnB1dFByb3BlcnRpZXMiKSk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKKworICAgIGlmICghaW5wdXRQcm9wZXJ0
aWVzSXRlcmFibGVWYWx1ZS5pc1VuZGVmaW5lZCgpKQorICAgICAgICBpbnB1dFByb3BlcnRpZXMg
PSBjb252ZXJ0PElETFNlcXVlbmNlPElETERPTVN0cmluZz4+KHN0YXRlLCBpbnB1dFByb3BlcnRp
ZXNJdGVyYWJsZVZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVl
KCkpOworCisgICAgLy8gRklYTUU6IFZhbGlkYXRlIGlucHV0IHByb3BlcnRpZXMgaGVyZSAoc3Rl
cCA3KS4KKworICAgIFZlY3RvcjxTdHJpbmc+IGlucHV0QXJndW1lbnRzOworCisgICAgSlNWYWx1
ZSBpbnB1dEFyZ3VtZW50c0l0ZXJhYmxlVmFsdWUgPSBjb25zdHJ1Y3RvclZhbHVlLmdldCgmc3Rh
dGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiaW5wdXRBcmd1bWVudHMiKSk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKKworICAgIGlmICghaW5wdXRB
cmd1bWVudHNJdGVyYWJsZVZhbHVlLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIGlucHV0QXJndW1l
bnRzID0gY29udmVydDxJRExTZXF1ZW5jZTxJRExET01TdHJpbmc+PihzdGF0ZSwgaW5wdXRBcmd1
bWVudHNJdGVyYWJsZVZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1Zh
bHVlKCkpOworCisgICAgLy8gRklYTUU6IFBhcnNlIHN5bnRheCBmb3IgaW5wdXRBcmd1bWVudHMg
aGVyZSAoc3RlcHMgMTEgYW5kIDEyKS4KKworICAgIEpTVmFsdWUgY29udGV4dE9wdGlvbnNWYWx1
ZSA9IGNvbnN0cnVjdG9yVmFsdWUuZ2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygm
dm0sICJjb250ZXh0T3B0aW9ucyIpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBK
U1ZhbHVlKCkpOworICAgIFVOVVNFRF9QQVJBTShjb250ZXh0T3B0aW9uc1ZhbHVlKTsKKworICAg
IC8vIEZJWE1FOiBDb252ZXJ0IHRvIFBhaW50UmVuZGVyaW5nQ29udGV4dDJEU2V0dGluZ3MgaGVy
ZSAoc3RlcCAxNCkuCisKKyAgICBpZiAoIWNvbnN0cnVjdG9yVmFsdWUuaXNDb25zdHJ1Y3Rvcih2
bSkpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCAiVGhlIHNl
Y29uZCBhcmd1bWVudCBtdXN0IGJlIGEgY29uc3RydWN0b3IiX3MpOworCisgICAgSlNWYWx1ZSBw
cm90b3R5cGVWYWx1ZSA9IGNvbnN0cnVjdG9yVmFsdWUuZ2V0KCZzdGF0ZSwgdm0ucHJvcGVydHlO
YW1lcy0+cHJvdG90eXBlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVl
KCkpOworCisgICAgaWYgKCFwcm90b3R5cGVWYWx1ZS5pc09iamVjdCgpKQorICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgIlRoZSBzZWNvbmQgYXJndW1lbnQgbXVz
dCBoYXZlIGEgcHJvdG90eXBlIHRoYXQgaXMgYW4gb2JqZWN0Il9zKTsKKworICAgIEpTVmFsdWUg
cGFpbnRWYWx1ZSA9IHByb3RvdHlwZVZhbHVlLmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoJnZtLCAicGFpbnQiKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNW
YWx1ZSgpKTsKKworICAgIGlmIChwYWludFZhbHVlLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCAiVGhlIGNsYXNzIG11c3QgaGF2ZSBh
IHBhaW50IG1ldGhvZCJfcyk7CisKKyAgICBSZWZQdHI8SlNDU1NQYWludENhbGxiYWNrPiBwYWlu
dCA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU0NTU1BhaW50Q2FsbGJhY2s+PihzdGF0
ZSwgcGFpbnRWYWx1ZSwgKmdsb2JhbE9iamVjdCgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBKU1ZhbHVlKCkpOworCisgICAgYXV0byBwYWludERlZmluaXRpb24gPSBzdGQ6OnVu
aXF1ZV9wdHI8UGFpbnREZWZpbml0aW9uPihuZXcgUGFpbnREZWZpbml0aW9uIHsgbmFtZSwgcGFp
bnQucmVsZWFzZU5vbk51bGwoKSwgaW5wdXRQcm9wZXJ0aWVzLCBpbnB1dEFyZ3VtZW50cyB9KTsK
KyAgICBwYWludERlZmluaXRpb25NYXAuYWRkKG5hbWUsIFdURk1vdmUocGFpbnREZWZpbml0aW9u
KSk7CisKKyAgICAvLyBGSVhNRTogY29uc3RydWN0IGRvY3VtZW50RGVmaW5pdGlvbiAoc3RlcCAy
MikuCisKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKworfQorI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNl
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xMDYwZWIxNTBhNjkwYzUzYzNlMjQ3ZTNhMzNjZmFiN2M2MjE3MGFm
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0
R2xvYmFsU2NvcGVCYXNlLmNwcApAQCAtMCwwICsxLDE1MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmgiCisKKyNpZiBFTkFCTEUoQ1NTX1BBSU5U
SU5HX0FQSSkKKworI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgorI2luY2x1ZGUgIkpTRE9N
R2xvYmFsT2JqZWN0VGFzay5oIgorI2luY2x1ZGUgIkpTV29ya2xldEdsb2JhbFNjb3BlLmgiCisj
aW5jbHVkZSAiV29ya2xldEdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29ya2xldFNjcmlwdENv
bnRyb2xsZXIuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1ZUlubGluZXMuaD4KKyNpbmNsdWRlIDx3dGYv
TGFuZ3VhZ2UuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgSlND
OworCitjb25zdCBDbGFzc0luZm8gSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzX2luZm8gPSB7
ICJXb3JrbGV0R2xvYmFsU2NvcGUiLCAmSlNET01HbG9iYWxPYmplY3Q6OnNfaW5mbywgbnVsbHB0
ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2Up
IH07CisKK2NvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTV29ya2xldEdsb2JhbFNjb3Bl
QmFzZTo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsKKyAgICAmc3VwcG9ydHNSaWNoU291
cmNlSW5mbywKKyAgICAmc2hvdWxkSW50ZXJydXB0U2NyaXB0LAorICAgICZqYXZhU2NyaXB0UnVu
dGltZUZsYWdzLAorICAgIG51bGxwdHIsIC8vIHF1ZXVlVGFza1RvRXZlbnRMb29wCisgICAgJnNo
b3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQsCisgICAgbnVsbHB0ciwgLy8gbW9kdWxl
TG9hZGVySW1wb3J0TW9kdWxlCisgICAgbnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVyUmVzb2x2ZQor
ICAgIG51bGxwdHIsIC8vIG1vZHVsZUxvYWRlckZldGNoCisgICAgbnVsbHB0ciwgLy8gbW9kdWxl
TG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMKKyAgICBudWxscHRyLCAvLyBtb2R1bGVM
b2FkZXJFdmFsdWF0ZQorICAgICZwcm9taXNlUmVqZWN0aW9uVHJhY2tlciwKKyAgICAmZGVmYXVs
dExhbmd1YWdlLAorICAgIG51bGxwdHIsIC8vIGNvbXBpbGVTdHJlYW1pbmcKKyAgICBudWxscHRy
LCAvLyBpbnN0YW50aWF0ZVN0cmVhbWluZworfTsKKworSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNl
OjpKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIFJlZlB0cjxXb3JrbGV0R2xvYmFsU2NvcGU+JiYgaW1wbCkKKyAgICA6IEpTRE9N
R2xvYmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUsIG5vcm1hbFdvcmxkKHZtKSwgJnNfZ2xvYmFsT2Jq
ZWN0TWV0aG9kVGFibGUpCisgICAgLCBtX3dyYXBwZWQoV1RGTW92ZShpbXBsKSkKK3sKK30KKwor
dm9pZCBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNQ
cm94eSogcHJveHkpCit7CisgICAgbV9wcm94eS5zZXQodm0sIHRoaXMsIHByb3h5KTsKKworICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBtX3Byb3h5LmdldCgpKTsKKyAgICBBU1NFUlQoaW5o
ZXJpdHModm0sIGluZm8oKSkpOworfQorCit2b2lkIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6
Y2xlYXJET01HdWFyZGVkT2JqZWN0cygpCit7CisgICAgYXV0byBndWFyZGVkT2JqZWN0cyA9IG1f
Z3VhcmRlZE9iamVjdHM7CisgICAgZm9yIChhdXRvJiBndWFyZGVkIDogZ3VhcmRlZE9iamVjdHMp
CisgICAgICAgIGd1YXJkZWQtPmNsZWFyKCk7Cit9CisKK3ZvaWQgSlNXb3JrbGV0R2xvYmFsU2Nv
cGVCYXNlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
Cit7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1dvcmtsZXRHbG9iYWxTY29wZUJh
c2UqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGlu
Zm8oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAg
ICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3Byb3h5KTsKK30KKwordm9pZCBKU1dvcmts
ZXRHbG9iYWxTY29wZUJhc2U6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIHN0YXRpY19j
YXN0PEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZSo+KGNlbGwpLT5KU1dvcmtsZXRHbG9iYWxTY29w
ZUJhc2U6On5KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UoKTsKK30KKworU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93cmFwcGVkLmdldCgpOworfQorCitib29sIEpTV29y
a2xldEdsb2JhbFNjb3BlQmFzZTo6c3VwcG9ydHNSaWNoU291cmNlSW5mbyhjb25zdCBKU0dsb2Jh
bE9iamVjdCogb2JqZWN0KQoreworICAgIHJldHVybiBKU0dsb2JhbE9iamVjdDo6c3VwcG9ydHNS
aWNoU291cmNlSW5mbyhvYmplY3QpOworfQorCitib29sIEpTV29ya2xldEdsb2JhbFNjb3BlQmFz
ZTo6c2hvdWxkSW50ZXJydXB0U2NyaXB0KGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvYmplY3QpCit7
CisgICAgcmV0dXJuIEpTR2xvYmFsT2JqZWN0OjpzaG91bGRJbnRlcnJ1cHRTY3JpcHQob2JqZWN0
KTsKK30KKworYm9vbCBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnNob3VsZEludGVycnVwdFNj
cmlwdEJlZm9yZVRpbWVvdXQoY29uc3QgSlNHbG9iYWxPYmplY3QqIG9iamVjdCkKK3sKKyAgICBy
ZXR1cm4gSlNHbG9iYWxPYmplY3Q6OnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQo
b2JqZWN0KTsKK30KKworUnVudGltZUZsYWdzIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6amF2
YVNjcmlwdFJ1bnRpbWVGbGFncyhjb25zdCBKU0dsb2JhbE9iamVjdCogb2JqZWN0KQoreworICAg
IGNvbnN0IGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Y29uc3QgSlNXb3JrbGV0R2xvYmFsU2Nv
cGVCYXNlKj4ob2JqZWN0KTsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+bV93cmFwcGVkLT5qc1J1
bnRpbWVGbGFncygpOworfQorCitKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUds
b2JhbE9iamVjdCosIFdvcmtsZXRHbG9iYWxTY29wZSYgd29ya2xldEdsb2JhbFNjb3BlKQorewor
ICAgIHJldHVybiB0b0pTKGV4ZWMsIHdvcmtsZXRHbG9iYWxTY29wZSk7Cit9CisKK0pTVmFsdWUg
dG9KUyhFeGVjU3RhdGUqLCBXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtsZXRHbG9iYWxTY29wZSkK
K3sKKyAgICBhdXRvKiBzY3JpcHQgPSB3b3JrbGV0R2xvYmFsU2NvcGUuc2NyaXB0KCk7CisgICAg
aWYgKCFzY3JpcHQpCisgICAgICAgIHJldHVybiBqc051bGwoKTsKKyAgICBhdXRvKiBjb250ZXh0
V3JhcHBlciA9IHNjcmlwdC0+d29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcigpOworICAgIEFTU0VS
VChjb250ZXh0V3JhcHBlcik7CisgICAgcmV0dXJuIGNvbnRleHRXcmFwcGVyLT5wcm94eSgpOwor
fQorCitKU1dvcmtsZXRHbG9iYWxTY29wZSogdG9KU1dvcmtsZXRHbG9iYWxTY29wZShWTSYgdm0s
IEpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbyA9IGFzT2JqZWN0
KHZhbHVlKS0+Y2xhc3NJbmZvKHZtKTsKKworICAgIGlmIChjbGFzc0luZm8gPT0gSlNQcm94eTo6
aW5mbygpKQorICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1dvcmtsZXRHbG9iYWxTY29w
ZSo+KHZtLCBqc0Nhc3Q8SlNQcm94eSo+KGFzT2JqZWN0KHZhbHVlKSktPnRhcmdldCgpKTsKKwor
ICAgIHJldHVybiBudWxscHRyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNj
b3BlQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2Nv
cGVCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjFjM2EyMWExNDIxNDY2MGYwMWM4MzgzMzk5ZWVlNWJiNDcw
ODYxMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29y
a2xldEdsb2JhbFNjb3BlQmFzZS5oCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoQ1NTX1BBSU5USU5HX0FQSSkKKworI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCisj
aW5jbHVkZSAiSlNET01XcmFwcGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
SlNXb3JrbGV0R2xvYmFsU2NvcGU7CitjbGFzcyBXb3JrbGV0R2xvYmFsU2NvcGU7CisKK2NsYXNz
IEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZSA6IHB1YmxpYyBKU0RPTUdsb2JhbE9iamVjdCB7Cisg
ICAgdXNpbmcgQmFzZSA9IEpTRE9NR2xvYmFsT2JqZWN0OworcHVibGljOgorICAgIHN0YXRpYyB2
b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIFdv
cmtsZXRHbG9iYWxTY29wZSYgd3JhcHBlZCgpIGNvbnN0IHsgcmV0dXJuICptX3dyYXBwZWQ7IH0K
KyAgICBKU0M6OkpTUHJveHkqIHByb3h5KCkgY29uc3QgeyBBU1NFUlQobV9wcm94eSk7IHJldHVy
biBtX3Byb3h5LmdldCgpOyB9CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpIGNvbnN0OworCisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5m
byhKU0M6Okdsb2JhbE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9
CisKKyAgICBzdGF0aWMgY29uc3QgSlNDOjpHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBzX2dsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlOworCisgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNSaWNoU291cmNl
SW5mbyhjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIGJvb2wgc2hvdWxk
SW50ZXJydXB0U2NyaXB0KGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMg
Ym9vbCBzaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0KGNvbnN0IEpTQzo6SlNHbG9i
YWxPYmplY3QqKTsKKyAgICBzdGF0aWMgSlNDOjpSdW50aW1lRmxhZ3MgamF2YVNjcmlwdFJ1bnRp
bWVGbGFncyhjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIHZvaWQgcXVl
dWVUYXNrVG9FdmVudExvb3AoSlNDOjpKU0dsb2JhbE9iamVjdCYsIFJlZjxKU0M6Ok1pY3JvdGFz
az4mJik7CisKKyAgICB2b2lkIGNsZWFyRE9NR3VhcmRlZE9iamVjdHMoKTsKKworcHJvdGVjdGVk
OgorICAgIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZShKU0M6OlZNJiwgSlNDOjpTdHJ1Y3R1cmUq
LCBSZWZQdHI8V29ya2xldEdsb2JhbFNjb3BlPiYmKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KEpTQzo6Vk0mLCBKU0M6OkpTUHJveHkqKTsKKworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRy
ZW4oSlNDOjpKU0NlbGwqLCBKU0M6OlNsb3RWaXNpdG9yJik7CisKK3ByaXZhdGU6CisgICAgUmVm
UHRyPFdvcmtsZXRHbG9iYWxTY29wZT4gbV93cmFwcGVkOworICAgIEpTQzo6V3JpdGVCYXJyaWVy
PEpTQzo6SlNQcm94eT4gbV9wcm94eTsKK307CisKKy8vIFJldHVybnMgYSBKU1dvcmtsZXRHbG9i
YWxTY29wZSBvciBqc051bGwoKQorLy8gQWx3YXlzIGlnbm9yZXMgdGhlIGV4ZWNTdGF0ZSBhbmQg
cGFzc2VkIGdsb2JhbE9iamVjdCwgV29ya2xldEdsb2JhbFNjb3BlIGlzIGl0c2VsZiBhIGdsb2Jh
bE9iamVjdCBhbmQgd2lsbCBhbHdheXMgdXNlIGl0cyBvd24gcHJvdG90eXBlIGNoYWluLgorSlND
OjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFdvcmts
ZXRHbG9iYWxTY29wZSYpOworaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRl
KiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBXb3JrbGV0R2xvYmFsU2Nv
cGUqIHNjb3BlKSB7IHJldHVybiBzY29wZSA/IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCAqc2Nv
cGUpIDogSlNDOjpqc051bGwoKTsgfQorSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUq
LCBXb3JrbGV0R2xvYmFsU2NvcGUmKTsKK2lubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4
ZWNTdGF0ZSogZXhlYywgV29ya2xldEdsb2JhbFNjb3BlKiBzY29wZSkgeyByZXR1cm4gc2NvcGUg
PyB0b0pTKGV4ZWMsICpzY29wZSkgOiBKU0M6OmpzTnVsbCgpOyB9CisKK0pTV29ya2xldEdsb2Jh
bFNjb3BlKiB0b0pTV29ya2xldEdsb2JhbFNjb3BlKEpTQzo6Vk0mLCBKU0M6OkpTVmFsdWUpOwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKENTU19QQUlOVElOR19B
UEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKaW5kZXggZWVl
ODM5Y2M0MjY0ZmJlNGEyOWRmYjk5MWI1ZmRlNTBkNjBiYWIxYy4uYTFiYTE0NTI4MzRkOGNhM2Nl
NmFmNDc3MTFlOTcwYjM4OGNjMWIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdFN0YXRlLmNwcApAQCAtMzUsMTEgKzM1LDE0IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNp
bmNsdWRlICJKU0RPTVdpbmRvd0Jhc2UuaCIKICNpbmNsdWRlICJKU1dvcmtlckdsb2JhbFNjb3Bl
LmgiCisjaW5jbHVkZSAiSlNXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJOb2RlLmgi
CiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNs
dWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtlclNjcmlwdENvbnRyb2xs
ZXIuaCIKKyNpbmNsdWRlICJXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrbGV0
U2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NhbGxGcmFtZS5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTR2xvYmFsT2JqZWN0Lmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvU3Ryb25nSW5saW5lcy5oPgpAQCAtOTUsOSArOTgsMTYgQEAgSlNDOjpF
eGVjU3RhdGUqIGV4ZWNTdGF0ZUZyb21QYWdlKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIFBhZ2Uq
IHBhZ2UpCiAgICAgcmV0dXJuIHBhZ2UgPyBwYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5nbG9i
YWxPYmplY3Qod29ybGQpLT5nbG9iYWxFeGVjKCkgOiBudWxscHRyOwogfQogCi1KU0M6OkV4ZWNT
dGF0ZSogZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlKiB3
b3JrZXJHbG9iYWxTY29wZSkKK0pTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tV29ya2VyR2xv
YmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQogewotICAgIHJl
dHVybiB3b3JrZXJHbG9iYWxTY29wZS0+c2NyaXB0KCktPndvcmtlckdsb2JhbFNjb3BlV3JhcHBl
cigpLT5nbG9iYWxFeGVjKCk7CisgICAgcmV0dXJuIHdvcmtlckdsb2JhbFNjb3BlLnNjcmlwdCgp
LT53b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIoKS0+Z2xvYmFsRXhlYygpOwogfQogCisjaWYgRU5B
QkxFKENTU19QQUlOVElOR19BUEkpCitKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbVdvcmts
ZXRHbG9iYWxTY29wZShXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtsZXRHbG9iYWxTY29wZSkKK3sK
KyAgICByZXR1cm4gd29ya2xldEdsb2JhbFNjb3BlLnNjcmlwdCgpLT53b3JrbGV0R2xvYmFsU2Nv
cGVXcmFwcGVyKCktPmdsb2JhbEV4ZWMoKTsKK30KKyNlbmRpZgorCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaAppbmRleCA3NDQyMWZkOTViYTE3NzU2ZWI4OWMwMDQy
NmMzM2ZiNTQ1NDk4MzkwLi4xNTM4NGE3MTFmMzU2Y2VlNDc4Y2E5OWUyNTU1YjFlZWEyNDgyYWQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgKQEAgLTQ0LDYgKzQ0
LDkgQEAgY2xhc3MgTm9kZTsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CisjaWYgRU5BQkxFKENTU19QQUlOVElOR19B
UEkpCitjbGFzcyBXb3JrbGV0R2xvYmFsU2NvcGU7CisjZW5kaWYKIAogRE9NV2luZG93KiBkb21X
aW5kb3dGcm9tRXhlY1N0YXRlKEpTQzo6RXhlY1N0YXRlKik7CiBGcmFtZSogZnJhbWVGcm9tRXhl
Y1N0YXRlKEpTQzo6RXhlY1N0YXRlKik7CkBAIC01Myw2ICs1Niw5IEBAIEpTQzo6RXhlY1N0YXRl
KiBtYWluV29ybGRFeGVjU3RhdGUoRnJhbWUqKTsKIAogSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0
ZUZyb21Ob2RlKERPTVdyYXBwZXJXb3JsZCYsIE5vZGUqKTsKIFdFQkNPUkVfRVhQT1JUIEpTQzo6
RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tUGFnZShET01XcmFwcGVyV29ybGQmLCBQYWdlKik7Ci1K
U0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2Jh
bFNjb3BlKik7CitKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3Bl
KFdvcmtlckdsb2JhbFNjb3BlJik7CisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCitKU0M6
OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbVdvcmtsZXRHbG9iYWxTY29wZShXb3JrbGV0R2xvYmFs
U2NvcGUmKTsKKyNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKaW5kZXggMWM5Mzg1OWVj
YzE2ODc0YzBjMDdlMzczYjI5NzNjNDI1MDVkZWE4MC4uMjkyZmQ5NzkyNDQ5ZDM3N2QyNzVjMjgy
NGJlMTUyZGNhNmZkNjkxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
V2ViQ29yZUJ1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dl
YkNvcmVCdWlsdGluTmFtZXMuaApAQCAtNTEsNyArNTEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgbWFjcm8oQ3JlZGVudGlhbCkgXAogICAgIG1hY3JvKENyZWRlbnRpYWxzQ29udGFpbmVy
KSBcCiAgICAgbWFjcm8oQ1NTQW5pbWF0aW9uKSBcCi0gICAgbWFjcm8oQ1NTUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUpIFwKICAgICBtYWNybyhDU1NUcmFuc2l0aW9uKSBcCiAgICAgbWFjcm8oQ3Vz
dG9tRWxlbWVudFJlZ2lzdHJ5KSBcCiAgICAgbWFjcm8oRGF0YWJhc2UpIFwKQEAgLTEyMyw2ICsx
MjIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oU1FMUmVzdWx0U2V0KSBcCiAg
ICAgbWFjcm8oU1FMUmVzdWx0U2V0Um93TGlzdCkgXAogICAgIG1hY3JvKFNRTFRyYW5zYWN0aW9u
KSBcCisgICAgbWFjcm8oUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUpIFwKICAgICBtYWNybyhQZXJm
b3JtYW5jZUVudHJ5KSBcCiAgICAgbWFjcm8oUGVyZm9ybWFuY2VFbnRyeUxpc3QpIFwKICAgICBt
YWNybyhQZXJmb3JtYW5jZU1hcmspIFwKQEAgLTIxMCw2ICsyMTAsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgbWFjcm8oV2ViS2l0TWVkaWFLZXlzKSBcCiAgICAgbWFjcm8oV2ViU29ja2V0
KSBcCiAgICAgbWFjcm8oV2luZG93Q2xpZW50KSBcCisgICAgbWFjcm8oV29ya2xldCkgXAorICAg
IG1hY3JvKFdvcmtsZXRHbG9iYWxTY29wZSkgXAogICAgIG1hY3JvKFdyaXRhYmxlU3RyZWFtKSBc
CiAgICAgbWFjcm8oWE1MSHR0cFJlcXVlc3QpIFwKICAgICBtYWNybyhhcHBlbmRGcm9tSlMpIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0KaW5kZXggNDhmY2U3YmMxNmE4ODBkNjNmNDMyYTAxOGYxZmVlMmY2N2JmNWJkYy4uNjMxYzM5
NDRlY2QyN2U1MmE3ZDUyMzJhYjY2MGMwZDY5ZDdmYjVkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTQ5Nyw3ICs0OTcs
NyBAQCBzdWIgR2V0Q3VzdG9tSXNSZWFjaGFibGUKIHN1YiBJc0RPTUdsb2JhbE9iamVjdAogewog
ICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKLSAgICByZXR1cm4gJGludGVyZmFjZS0+dHlwZS0+
bmFtZSBlcSAiRE9NV2luZG93IiB8fCAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIGVxICJSZW1vdGVE
T01XaW5kb3ciIHx8ICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNl
LCAiV29ya2VyR2xvYmFsU2NvcGUiKSB8fCAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIGVxICJUZXN0
R2xvYmFsT2JqZWN0IjsKKyAgICByZXR1cm4gJGludGVyZmFjZS0+dHlwZS0+bmFtZSBlcSAiRE9N
V2luZG93IiB8fCAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIGVxICJSZW1vdGVET01XaW5kb3ciIHx8
ICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiV29ya2VyR2xv
YmFsU2NvcGUiKSB8fCAkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFj
ZSwgIldvcmtsZXRHbG9iYWxTY29wZSIpIHx8ICRpbnRlcmZhY2UtPnR5cGUtPm5hbWUgZXEgIlRl
c3RHbG9iYWxPYmplY3QiOwogfQogCiBzdWIgU2hvdWxkVXNlR2xvYmFsT2JqZWN0UHJvdG90eXBl
CkBAIC01MDYsNiArNTA2LDggQEAgc3ViIFNob3VsZFVzZUdsb2JhbE9iamVjdFByb3RvdHlwZQog
CiAgICAgIyBGb3Igd29ya2VycywgdGhlIGdsb2JhbCBvYmplY3QgaXMgYSBEZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZS4KICAgICByZXR1cm4gMCBpZiAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIGVx
ICJXb3JrZXJHbG9iYWxTY29wZSI7CisgICAgIyBGb3Igd29ya2xldHMsIHRoZSBnbG9iYWwgb2Jq
ZWN0IGlzIGEgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuCisgICAgcmV0dXJuIDAgaWYgJGludGVy
ZmFjZS0+dHlwZS0+bmFtZSBlcSAiV29ya2xldEdsb2JhbFNjb3BlIjsKIAogICAgIHJldHVybiBJ
c0RPTUdsb2JhbE9iamVjdCgkaW50ZXJmYWNlKTsKIH0KQEAgLTI1MzcsNyArMjUzOSw3IEBAIHN1
YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICBw
dHItPmZpbmlzaENyZWF0aW9uKHZtLCBwcm94eSk7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiAgICAgICAgcmV0dXJuIHB0cjtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgIH1cblxuIik7Ci0gICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVy
aXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrZXJHbG9iYWxTY29wZSIpKSB7CisgICAgfSBl
bHNpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3Jr
ZXJHbG9iYWxTY29wZSIpIHx8ICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50
ZXJmYWNlLCAiV29ya2xldEdsb2JhbFNjb3BlIikpIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICBzdGF0aWMgJGNsYXNzTmFtZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0
cnVjdHVyZSogc3RydWN0dXJlLCBSZWY8JGltcGxUeXBlPiYmIGltcGwsIEpTQzo6SlNQcm94eSog
cHJveHkpXG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB7XG4iKTsKICAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgJGNsYXNzTmFtZSogcHRyID0gbmV3
IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDwkY2xhc3NOYW1lPih2bS5oZWFwKSkgJHtjbGFz
c05hbWV9KHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUoaW1wbCkpO1xuIik7CkBAIC0yODQ1LDcgKzI4
NDcsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAjIENvbnN0cnVjdG9yCiAgICAgaWYgKCRp
bnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciIHx8ICRpbnRlcmZhY2VOYW1lIGVxICJSZW1vdGVE
T01XaW5kb3ciKSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgJGNsYXNzTmFt
ZShKU0M6OlZNJiwgSlNDOjpTdHJ1Y3R1cmUqLCBSZWY8JGltcGxUeXBlPiYmLCBKU1dpbmRvd1By
b3h5Kik7XG4iKTsKLSAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZh
Y2UoJGludGVyZmFjZSwgIldvcmtlckdsb2JhbFNjb3BlIikpIHsKKyAgICB9IGVsc2lmICgkY29k
ZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldvcmtlckdsb2JhbFNj
b3BlIikgfHwgJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJX
b3JrbGV0R2xvYmFsU2NvcGUiKSkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAg
ICRjbGFzc05hbWUoSlNDOjpWTSYsIEpTQzo6U3RydWN0dXJlKiwgUmVmPCRpbXBsVHlwZT4mJik7
XG4iKTsKICAgICB9IGVsc2lmICghTmVlZHNJbXBsZW1lbnRhdGlvbkNsYXNzKCRpbnRlcmZhY2Up
KSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgJGNsYXNzTmFtZShKU0M6OlN0
cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Jik7XG5cbiIpOwpAQCAtMjg1NSw3ICsyODU3LDcg
QEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAKICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdp
bmRvdyIgfHwgJGludGVyZmFjZU5hbWUgZXEgIlJlbW90ZURPTVdpbmRvdyIpIHsKICAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mLCBK
U1dpbmRvd1Byb3h5Kik7XG4iKTsKLSAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SW5oZXJp
dHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldvcmtlckdsb2JhbFNjb3BlIikpIHsKKyAgICB9IGVs
c2lmICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldvcmtl
ckdsb2JhbFNjb3BlIikgfHwgJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRl
cmZhY2UsICJXb3JrbGV0R2xvYmFsU2NvcGUiKSkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYsIEpTQzo6SlNQcm94eSopO1xu
Iik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTtcbiIpOwpAQCAtMzY2Miw2ICszNjY0LDggQEAgc3Vi
IEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nRm9yRXhwb3NlZAogICAgICAg
ICBwdXNoKEAkY29uanVuY3RzLCAianNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oIiAuICRnbG9i
YWxPYmplY3RQdHIgLiAiKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0RvY3VtZW50KCki
KTsKICAgICB9IGVsc2lmICgkZXhwb3NlZCBlcSAiV29ya2VyIikgewogICAgICAgICBwdXNoKEAk
Y29uanVuY3RzLCAianNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oIiAuICRnbG9iYWxPYmplY3RQ
dHIgLiAiKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1dvcmtlckdsb2JhbFNjb3BlKCki
KTsKKyAgICB9IGVsc2lmICgkZXhwb3NlZCBlcSAiV29ya2xldCIpIHsKKyAgICAgICAgcHVzaChA
JGNvbmp1bmN0cywgImpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCIgLiAkZ2xvYmFsT2JqZWN0
UHRyIC4gIiktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNXb3JrbGV0R2xvYmFsU2NvcGUo
KSIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGFzc2VydCgiVW5yZWNvZ25pemVkIHZhbHVlICci
IC4gRHVtcGVyKCRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFeHBvc2VkfSkgLiAiJyBm
b3IgdGhlIEV4cG9zZWQgZXh0ZW5kZWQgYXR0cmlidXRlIG9uICciIC4gcmVmKCRjb250ZXh0KSAu
ICInLiIpOwogICAgIH0KQEAgLTQyNTIsNyArNDI1Niw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIDogJHBhcmVudENsYXNzTmFt
ZSh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKGltcGwpLCBwcm94eSlcbiIpOwogICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxu
Iik7Ci0gICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRl
cmZhY2UsICJXb3JrZXJHbG9iYWxTY29wZSIpKSB7CisgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0
b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrZXJHbG9iYWxTY29wZSIpIHx8
ICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiV29ya2xldEds
b2JhbFNjb3BlIikpIHsKICAgICAgICAgQWRkSW5jbHVkZXNGb3JJbXBsZW1lbnRhdGlvblR5cGVJ
bkltcGwoJGludGVyZmFjZU5hbWUpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiR7Y2xh
c3NOYW1lfTo6JGNsYXNzTmFtZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWY8JGlt
cGxUeXBlPiYmIGltcGwpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgOiAk
cGFyZW50Q2xhc3NOYW1lKHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUoaW1wbCkpXG4iKTsKQEAgLTQy
NzMsNyArNDI3Nyw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFtZX06OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
SlNXaW5kb3dQcm94eSogcHJveHkpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7
XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24odm0sIHByb3h5KTtcblxuIik7Ci0gICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVy
aXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrZXJHbG9iYWxTY29wZSIpKSB7CisgICAgfSBl
bHNpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3Jr
ZXJHbG9iYWxTY29wZSIpIHx8ICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50
ZXJmYWNlLCAiV29ya2xldEdsb2JhbFNjb3BlIikpIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJ2b2lkICR7Y2xhc3NOYW1lfTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1Byb3h5KiBw
cm94eSlcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgcHJveHkpO1xu
XG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJv
Y2Vzcy1pZGxzLnBsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNz
LWlkbHMucGwKaW5kZXggM2UwNWM3YjQ5NjgyYmVlNjRmNjg5OGI0ZGY0NDg0MjUxMzQzOGI1MS4u
NDZjZDNiOGY5Y2E5YzExYWE1MWZiZDlmYTg3NjBmYTdiMGZkOTMzNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGwKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGwKQEAgLTM2LDYg
KzM2LDggQEAgbXkgJHdpbmRvd0NvbnN0cnVjdG9yc0ZpbGU7CiBteSAkd29ya2VyR2xvYmFsU2Nv
cGVDb25zdHJ1Y3RvcnNGaWxlOwogbXkgJGRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3JzRmlsZTsKIG15ICRzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxl
OworbXkgJHdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGU7CitteSAkcGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlOwogbXkgJHN1cHBsZW1lbnRhbE1ha2VmaWxl
RGVwczsKIAogR2V0T3B0aW9ucygnZGVmaW5lcz1zJyA9PiBcJGRlZmluZXMsCkBAIC00Niw2ICs0
OCw4IEBAIEdldE9wdGlvbnMoJ2RlZmluZXM9cycgPT4gXCRkZWZpbmVzLAogICAgICAgICAgICAn
d29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlPXMnID0+IFwkd29ya2VyR2xvYmFsU2Nv
cGVDb25zdHJ1Y3RvcnNGaWxlLAogICAgICAgICAgICAnZGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGVDb25zdHJ1Y3RvcnNGaWxlPXMnID0+IFwkZGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25z
dHJ1Y3RvcnNGaWxlLAogICAgICAgICAgICAnc2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3JzRmlsZT1zJyA9PiBcJHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0Zp
bGUsCisgICAgICAgICAgICd3b3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlPXMnID0+
IFwkd29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSwKKyAgICAgICAgICAgJ3BhaW50
V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZT1zJyA9PiBcJHBhaW50V29ya2xldEds
b2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSwKICAgICAgICAgICAgJ3N1cHBsZW1lbnRhbE1ha2Vm
aWxlRGVwcz1zJyA9PiBcJHN1cHBsZW1lbnRhbE1ha2VmaWxlRGVwcyk7CiAKIGRpZSgnTXVzdCBz
cGVjaWZ5ICNkZWZpbmUgbWFjcm9zIHVzaW5nIC0tZGVmaW5lcy4nKSB1bmxlc3MgZGVmaW5lZCgk
ZGVmaW5lcyk7CkBAIC01NCw2ICs1OCw4IEBAIGRpZSgnTXVzdCBzcGVjaWZ5IGFuIG91dHB1dCBm
aWxlIHVzaW5nIC0td2luZG93Q29uc3RydWN0b3JzRmlsZS4nKSB1bmxlc3MgZGVmaW5lCiBkaWUo
J011c3Qgc3BlY2lmeSBhbiBvdXRwdXQgZmlsZSB1c2luZyAtLXdvcmtlckdsb2JhbFNjb3BlQ29u
c3RydWN0b3JzRmlsZS4nKSB1bmxlc3MgZGVmaW5lZCgkd29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1
Y3RvcnNGaWxlKTsKIGRpZSgnTXVzdCBzcGVjaWZ5IGFuIG91dHB1dCBmaWxlIHVzaW5nIC0tZGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlLicpIHVubGVzcyBkZWZpbmVk
KCRkZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOwogZGllKCdNdXN0
IHNwZWNpZnkgYW4gb3V0cHV0IGZpbGUgdXNpbmcgLS1zZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVD
b25zdHJ1Y3RvcnNGaWxlLicpIHVubGVzcyBkZWZpbmVkKCRzZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGVDb25zdHJ1Y3RvcnNGaWxlKTsKK2RpZSgnTXVzdCBzcGVjaWZ5IGFuIG91dHB1dCBmaWxlIHVz
aW5nIC0td29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZS4nKSB1bmxlc3MgZGVmaW5l
ZCgkd29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSk7CitkaWUoJ011c3Qgc3BlY2lm
eSBhbiBvdXRwdXQgZmlsZSB1c2luZyAtLXBhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0
b3JzRmlsZS4nKSB1bmxlc3MgZGVmaW5lZCgkcGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1
Y3RvcnNGaWxlKTsKIGRpZSgnTXVzdCBzcGVjaWZ5IHRoZSBmaWxlIGxpc3RpbmcgYWxsIElETHMg
dXNpbmcgLS1pZGxGaWxlc0xpc3QuJykgdW5sZXNzIGRlZmluZWQoJGlkbEZpbGVzTGlzdCk7CiAK
ICRzdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZSA9IEN5Z3dpblBhdGhJZk5lZWRlZCgkc3VwcGxl
bWVudGFsRGVwZW5kZW5jeUZpbGUpOwpAQCAtNjEsNiArNjcsOCBAQCAkd2luZG93Q29uc3RydWN0
b3JzRmlsZSA9IEN5Z3dpblBhdGhJZk5lZWRlZCgkd2luZG93Q29uc3RydWN0b3JzRmlsZSk7CiAk
d29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlID0gQ3lnd2luUGF0aElmTmVlZGVkKCR3
b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOwogJGRlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlQ29uc3RydWN0b3JzRmlsZSA9IEN5Z3dpblBhdGhJZk5lZWRlZCgkZGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlKTsKICRzZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGVDb25zdHJ1Y3RvcnNGaWxlID0gQ3lnd2luUGF0aElmTmVlZGVkKCRzZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlKTsKKyR3b3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3Rv
cnNGaWxlID0gQ3lnd2luUGF0aElmTmVlZGVkKCR3b3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3Rv
cnNGaWxlKTsKKyRwYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgPSBDeWd3
aW5QYXRoSWZOZWVkZWQoJHBhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSk7
CiAkc3VwcGxlbWVudGFsTWFrZWZpbGVEZXBzID0gQ3lnd2luUGF0aElmTmVlZGVkKCRzdXBwbGVt
ZW50YWxNYWtlZmlsZURlcHMpOwogCiBvcGVuIEZILCAiPCAkaWRsRmlsZXNMaXN0IiBvciBkaWUg
IkNhbm5vdCBvcGVuICRpZGxGaWxlc0xpc3RcbiI7CkBAIC04MCw2ICs4OCw4IEBAIG15ICR3aW5k
b3dDb25zdHJ1Y3RvcnNDb2RlID0gIiI7CiBteSAkd29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rv
cnNDb2RlID0gIiI7CiBteSAkZGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnND
b2RlID0gIiI7CiBteSAkc2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzQ29kZSA9
ICIiOworbXkgJHdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0NvZGUgPSAiIjsKK215ICRw
YWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0NvZGUgPSAiIjsKIAogIyBHZXQgcmlk
IG9mIGR1cGxpY2F0ZXMgaW4gaWRsRmlsZXMgYXJyYXkuCiBteSAlaWRsRmlsZUhhc2ggPSBtYXAg
eyAkXywgMSB9IEBpZGxGaWxlczsKQEAgLTE0Myw2ICsxNTMsMTAgQEAgZm9yZWFjaCBteSAkaWRs
RmlsZSAoc29ydCBrZXlzICVpZGxGaWxlSGFzaCkgewogICAgICAgICAgICAgICAgICAgICAkZGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNDb2RlIC49ICRhdHRyaWJ1dGVDb2Rl
OwogICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRnbG9iYWxDb250ZXh0IGVxICJTZXJ2aWNlV29y
a2VyIikgewogICAgICAgICAgICAgICAgICAgICAkc2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29u
c3RydWN0b3JzQ29kZSAuPSAkYXR0cmlidXRlQ29kZTsKKyAgICAgICAgICAgICAgICB9IGVsc2lm
ICgkZ2xvYmFsQ29udGV4dCBlcSAiV29ya2xldCIpIHsKKyAgICAgICAgICAgICAgICAgICAgJHdv
cmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0NvZGUgLj0gJGF0dHJpYnV0ZUNvZGU7CisgICAg
ICAgICAgICAgICAgfSBlbHNpZiAoJGdsb2JhbENvbnRleHQgZXEgIlBhaW50V29ya2xldCIpIHsK
KyAgICAgICAgICAgICAgICAgICAgJHBhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3Jz
Q29kZSAuPSAkYXR0cmlidXRlQ29kZTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgICAgICBkaWUgIlVuc3VwcG9ydGVkIGdsb2JhbCBjb250ZXh0ICckZ2xvYmFsQ29u
dGV4dCcgdXNlZCBpbiBbRXhwb3NlZF0gYXQgJGlkbEZpbGUiOwogICAgICAgICAgICAgICAgIH0K
QEAgLTE1Nyw2ICsxNzEsOCBAQCBHZW5lcmF0ZVBhcnRpYWxJbnRlcmZhY2UoIkRPTVdpbmRvdyIs
ICR3aW5kb3dDb25zdHJ1Y3RvcnNDb2RlLCAkd2luZG93Q29uc3RydWN0bwogR2VuZXJhdGVQYXJ0
aWFsSW50ZXJmYWNlKCJXb3JrZXJHbG9iYWxTY29wZSIsICR3b3JrZXJHbG9iYWxTY29wZUNvbnN0
cnVjdG9yc0NvZGUsICR3b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOwogR2VuZXJh
dGVQYXJ0aWFsSW50ZXJmYWNlKCJEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSIsICRkZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0NvZGUsICRkZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOwogR2VuZXJhdGVQYXJ0aWFsSW50ZXJmYWNlKCJTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUiLCAkc2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0
b3JzQ29kZSwgJHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOworR2Vu
ZXJhdGVQYXJ0aWFsSW50ZXJmYWNlKCJXb3JrbGV0R2xvYmFsU2NvcGUiLCAkd29ya2xldEdsb2Jh
bFNjb3BlQ29uc3RydWN0b3JzQ29kZSwgJHdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0Zp
bGUpOworR2VuZXJhdGVQYXJ0aWFsSW50ZXJmYWNlKCJQYWludFdvcmtsZXRHbG9iYWxTY29wZSIs
ICRwYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0NvZGUsICRwYWludFdvcmtsZXRH
bG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOwogCiAjIFJlc29sdmVzIHBhcnRpYWwgaW50ZXJm
YWNlcyBhbmQgaW1wbGVtZW50cyBkZXBlbmRlbmNpZXMuCiBmb3JlYWNoIG15ICRpZGxGaWxlIChz
b3J0IGtleXMgJXN1cHBsZW1lbnRhbERlcGVuZGVuY2llcykgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1BhaW50SW1hZ2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUGFpbnRJbWFnZVZhbHVlLmNwcAppbmRleCBhNjkwZTQxZDc2NzFkZWEwMzUzMjFmYWZlN2I3
ZmE5NzExYWJkYTUyLi4zYTRjY2Y1OTc2NDIwYjQyOTEzY2M4M2ZkYTI5ZjM4ZmJmMmRhYjc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmNwcApAQCAtMjksOCArMjks
OCBAQAogCiAjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCiAKLSNpbmNsdWRlICJDU1NQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIkN1c3RvbVBhaW50SW1hZ2UuaCIKKyNp
bmNsdWRlICJQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1l
bnQuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAgLTUwLDggKzUw
LDExIEBAIFJlZlB0cjxJbWFnZT4gQ1NTUGFpbnRJbWFnZVZhbHVlOjppbWFnZShSZW5kZXJFbGVt
ZW50JiByZW5kZXJFbGVtZW50LCBjb25zdCBGbG9hCiB7CiAgICAgaWYgKHNpemUuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvJiBzZWxlY3RlZEdsb2JhbFNjb3Bl
ID0gcmVuZGVyRWxlbWVudC5kb2N1bWVudCgpLmVuc3VyZUNTU1BhaW50V29ya2xldEdsb2JhbFNj
b3BlKCk7Ci0gICAgYXV0byogcmVnaXN0cmF0aW9uID0gc2VsZWN0ZWRHbG9iYWxTY29wZS5wYWlu
dERlZmluaXRpb25NYXAoKS5nZXQobV9uYW1lKTsKKyAgICBhdXRvKiBzZWxlY3RlZEdsb2JhbFNj
b3BlID0gcmVuZGVyRWxlbWVudC5kb2N1bWVudCgpLnBhaW50V29ya2xldEdsb2JhbFNjb3BlKCk7
CisgICAgaWYgKCFzZWxlY3RlZEdsb2JhbFNjb3BlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHNlbGVjdGVkR2xvYmFsU2NvcGUtPmxvY2soKSk7
CisgICAgYXV0byogcmVnaXN0cmF0aW9uID0gc2VsZWN0ZWRHbG9iYWxTY29wZS0+cGFpbnREZWZp
bml0aW9uTWFwKCkuZ2V0KG1fbmFtZSk7CiAKICAgICBpZiAoIXJlZ2lzdHJhdGlvbikKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQ5NzNj
ZDM4ZDY4ZTQzY2M1Mjg1YzU4MTA0YjI1ZGRiNmUxMGMyOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgotCi0jaWYgRU5BQkxF
KENTU19QQUlOVElOR19BUEkpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmPENTU1BhaW50
V29ya2xldEdsb2JhbFNjb3BlPiBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6Y3JlYXRlKCkK
LXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSgp
KTsKLX0KLQotQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OkNTU1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlKCkKLXsKLX0KLQotZG91YmxlIENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlOjpkZXZp
Y2VQaXhlbFJhdGlvKCkKLXsKLSAgICByZXR1cm4gMS4wOwotfQotCi1FeGNlcHRpb25Pcjx2b2lk
PiBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6YWRkUmVnaXN0ZXJlZFBhaW50KCkKLXsKLSAg
ICByZXR1cm4geyB9OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjNiMGQ5ZDhmM2YwMjM3ZTI3OTJmY2VmN2U0NzdmZTU4
YzYyYTMwOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDY3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQot
Ci0jaW5jbHVkZSAiQ1NTUGFpbnRDYWxsYmFjay5oIgotI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgi
Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgot
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIEpTVmFs
dWU7Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNz
IENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlIDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGU+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENTU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlPiBjcmVhdGUoKTsKLQotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGFkZFJl
Z2lzdGVyZWRQYWludCgpOwotICAgIGRvdWJsZSBkZXZpY2VQaXhlbFJhdGlvKCk7Ci0KLSAgICBz
dHJ1Y3QgUGFpbnREZWZpbml0aW9uIHsKLSAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nIG5hbWU7
Ci0gICAgICAgIGNvbnN0IFJlZjxDU1NQYWludENhbGxiYWNrPiBwYWludENhbGxiYWNrOwotICAg
ICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiBpbnB1dFByb3BlcnRpZXM7Ci0gICAgICAgIGNvbnN0
IFZlY3RvcjxTdHJpbmc+IGlucHV0QXJndW1lbnRzOwotICAgIH07Ci0KLSAgICBIYXNoTWFwPFN0
cmluZywgc3RkOjp1bmlxdWVfcHRyPFBhaW50RGVmaW5pdGlvbj4+JiBwYWludERlZmluaXRpb25N
YXAoKSB7IHJldHVybiBtX3BhaW50RGVmaW5pdGlvbk1hcDsgfQotCi1wcml2YXRlOgotICAgIENT
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlKCk7Ci0KLSAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1
bmlxdWVfcHRyPFBhaW50RGVmaW5pdGlvbj4+IG1fcGFpbnREZWZpbml0aW9uTWFwOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaWRsIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYTUzNmMwYTQxMzk1YzBhMWEwODRmYTFmN2ViNWE2YzJiYTcyYTYxZi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAs
MCBAQAotLyoKLSogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSoKLSogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0qIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotKiBhcmUgbWV0OgotKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0qIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0qICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSoKLSogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0qIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0qIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0qIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0qLwotCi1bCi0gICAgRW5hYmxlZEF0UnVudGltZT1DU1NQ
YWludGluZ0FQSSwKLSAgICBDb25kaXRpb25hbD1DU1NfUEFJTlRJTkdfQVBJLAotICAgIEltcGxl
bWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAgSlNDdXN0b21NYXJrRnVuY3Rpb24sCi0gICAgSlNH
ZW5lcmF0ZVRvTmF0aXZlT2JqZWN0Ci1dIGludGVyZmFjZSBDU1NQYWludFdvcmtsZXRHbG9iYWxT
Y29wZSB7Ci0gICAgW0N1c3RvbSwgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgcmVnaXN0ZXJQYWlu
dChET01TdHJpbmcgbmFtZSwgRnVuY3Rpb24gcGFpbnRDdG9yKTsKLSAgICByZWFkb25seSBhdHRy
aWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBkZXZpY2VQaXhlbFJhdGlvOwotfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5jcHAKaW5kZXggMTIwNjgxYjhkNzYxMzQ2ZGE3
MmFjYzVhMGIyMjY5ZTE0MDczNTg5Yi4uNjVhMmZkZjhkZmFjYjRkN2Y3MWQ3NjFjYjIxNjZiMWE5
Mjg0YzA3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xl
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5jcHAKQEAg
LTI4LDE2ICsyOCwxNyBAQAogCiAjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCiAKLSNpbmNs
dWRlICJDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIkRPTUNTU05hbWVz
cGFjZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiV29ya2xldC5oIgorCiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUmIERPTUNTU1BhaW50V29ya2xldDo6ZW5zdXJlUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGUoRG9jdW1lbnQmIGRvY3VtZW50KQorV29ya2xldCYgRE9NQ1NT
UGFpbnRXb3JrbGV0OjplbnN1cmVQYWludFdvcmtsZXQoRG9jdW1lbnQmIGRvY3VtZW50KQogewot
ICAgIHJldHVybiBkb2N1bWVudC5lbnN1cmVDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSgpOwor
ICAgIHJldHVybiBkb2N1bWVudC5lbnN1cmVQYWludFdvcmtsZXQoKTsKIH0KIAogRE9NQ1NTUGFp
bnRXb3JrbGV0KiBET01DU1NQYWludFdvcmtsZXQ6OmZyb20oRE9NQ1NTTmFtZXNwYWNlJiBjc3Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmgKaW5kZXggZWU1ZWZiMTFkMTli
YjYyZjM4ZTU2ZTEwZTVkNjE2M2NjOWQ4ZmIzZi4uYTJjYjM3M2Y2YTAzNDEzZDEyMWI0MDE0MzRi
ZmQ5ZWY5OWE5NzZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50
V29ya2xldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuaApA
QCAtMzUsMTQgKzM1LDE0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50
OwotY2xhc3MgQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU7CitjbGFzcyBXb3JrbGV0OwogY2xh
c3MgRE9NQ1NTTmFtZXNwYWNlOwogCiBjbGFzcyBET01DU1NQYWludFdvcmtsZXQgZmluYWwgOiBw
dWJsaWMgU3VwcGxlbWVudDxET01DU1NOYW1lc3BhY2U+IHsKIHB1YmxpYzoKICAgICBleHBsaWNp
dCBET01DU1NQYWludFdvcmtsZXQoRE9NQ1NTTmFtZXNwYWNlJikgeyB9CiAKLSAgICBzdGF0aWMg
Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUmIGVuc3VyZVBhaW50V29ya2xldEdsb2JhbFNjb3Bl
KERvY3VtZW50Jik7CisgICAgc3RhdGljIFdvcmtsZXQmIGVuc3VyZVBhaW50V29ya2xldChEb2N1
bWVudCYpOwogCiBwcml2YXRlOgogICAgIHN0YXRpYyBET01DU1NQYWludFdvcmtsZXQqIGZyb20o
RE9NQ1NTTmFtZXNwYWNlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NT
UGFpbnRXb3JrbGV0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQu
aWRsCmluZGV4IDE5MGNkYjQ1ZWM3NTNkZWJiZTk2ZjhkODMzODEzZjQ0NjM1YWU4YzMuLmFhNTll
NWVlMmRlOTE4MWQzMDQ3ZmUzNDgwNGZlNTI3YTI2Zjc0MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9ET01DU1NQYWludFdvcmtsZXQuaWRsCkBAIC0yNyw2ICsyNyw1IEBACiAgICAgRW5hYmxlZEF0
UnVudGltZT1DU1NQYWludGluZ0FQSSwKICAgICBDb25kaXRpb25hbD1DU1NfUEFJTlRJTkdfQVBJ
LAogXSBwYXJ0aWFsIGludGVyZmFjZSBET01DU1NOYW1lc3BhY2UgewotICAgIC8vIEZJWE1FOiBU
aGlzIGlzIG5vdCBhY3R1YWxseSBwYXJ0IG9mIHRoZSBzcGVjLCBhbmQgc2hvdWxkIGJlIHJlcGxh
Y2VkIHdoZW4gd29ya2xldHMgYXJlIGltcGxlbWVudGVkCi0gICAgW0ltcGxlbWVudGVkQXM9ZW5z
dXJlUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUsQ2FsbFdpdGg9RG9jdW1lbnRdIHN0YXRpYyByZWFk
b25seSBhdHRyaWJ1dGUgQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUgcGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGU7CisgICAgW0ltcGxlbWVudGVkQXM9ZW5zdXJlUGFpbnRXb3JrbGV0LENhbGxXaXRo
PURvY3VtZW50XSBzdGF0aWMgcmVhZG9ubHkgYXR0cmlidXRlIFdvcmtsZXQgcGFpbnRXb3JrbGV0
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDdiNDgwOGJlNmEzODY3NTEwMDgwYzBi
YTQwMmMxNzFmMWU1ODAzMDguLjNkOTUwZmZkMzRhZmE2YmI3YmIyMjY3NTdmNTVmZGE4NDc0OWU1
NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUg
IkNEQVRBU2VjdGlvbi5oIgogI2luY2x1ZGUgIkNTU0FuaW1hdGlvbkNvbnRyb2xsZXIuaCIKICNp
bmNsdWRlICJDU1NGb250U2VsZWN0b3IuaCIKLSNpbmNsdWRlICJDU1NQYWludFdvcmtsZXRHbG9i
YWxTY29wZS5oIgogI2luY2x1ZGUgIkNTU1N0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJD
U1NTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIgpAQCAtMTQw
LDYgKzEzOSw3IEBACiAjaW5jbHVkZSAiUGFnZUNvbnNvbGVDbGllbnQuaCIKICNpbmNsdWRlICJQ
YWdlR3JvdXAuaCIKICNpbmNsdWRlICJQYWdlVHJhbnNpdGlvbkV2ZW50LmgiCisjaW5jbHVkZSAi
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxvY2FsZS5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtU2NyZWVuLmgiCkBAIC0yMTcsNiArMjE3LDcgQEAKICNpbmNsdWRlICJXZWJBbmltYXRpb24u
aCIKICNpbmNsdWRlICJXaGVlbEV2ZW50LmgiCiAjaW5jbHVkZSAiV2luZG93RmVhdHVyZXMuaCIK
KyNpbmNsdWRlICJXb3JrbGV0LmgiCiAjaW5jbHVkZSAiWE1MRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJYTUxEb2N1bWVudFBhcnNlci5oIgogI2luY2x1ZGUgIlhNTE5TTmFtZXMuaCIKQEAgLTgzNzcs
MTEgKzgzNzgsMTYgQEAgdm9pZCBEb2N1bWVudDo6ZnJhbWVXYXNEaXNjb25uZWN0ZWRGcm9tT3du
ZXIoKQogfQogCiAjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCi1DU1NQYWludFdvcmtsZXRH
bG9iYWxTY29wZSYgRG9jdW1lbnQ6OmVuc3VyZUNTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlKCkK
K1dvcmtsZXQmIERvY3VtZW50OjplbnN1cmVQYWludFdvcmtsZXQoKQogewotICAgIGlmICghbV9D
U1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSkKLSAgICAgICAgbV9DU1NQYWludFdvcmtsZXRHbG9i
YWxTY29wZSA9IENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlOjpjcmVhdGUoKTsKLSAgICByZXR1
cm4gKm1fQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU7CisgICAgaWYgKCFtX3BhaW50V29ya2xl
dCkKKyAgICAgICAgbV9wYWludFdvcmtsZXQgPSBXb3JrbGV0OjpjcmVhdGUoKTsKKyAgICByZXR1
cm4gKm1fcGFpbnRXb3JrbGV0OworfQorCit2b2lkIERvY3VtZW50OjpzZXRQYWludFdvcmtsZXRH
bG9iYWxTY29wZShSZWY8UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+JiYgc2NvcGUpCit7CisgICAg
bV9wYWludFdvcmtsZXRHbG9iYWxTY29wZSA9IFdURk1vdmUoc2NvcGUpOwogfQogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKaW5kZXggODU0MmMxNTU2NzE3ZjI3YjYwODkwN2QyZDE0ZWUxNGNk
YTI0OGZkOC4uNmRkZjE0NWVkYTViYWI2NTdjZmY5OGViYmMwZjcwOTM5NGU5MTA5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKQEAgLTg4LDcgKzg4LDYgQEAgY2xhc3MgQXR0cjsKIGNsYXNzIENEQVRB
U2VjdGlvbjsKIGNsYXNzIENTU0N1c3RvbVByb3BlcnR5VmFsdWU7CiBjbGFzcyBDU1NGb250U2Vs
ZWN0b3I7Ci1jbGFzcyBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZTsKIGNsYXNzIENTU1N0eWxl
RGVjbGFyYXRpb247CiBjbGFzcyBDU1NTdHlsZVNoZWV0OwogY2xhc3MgQ2FjaGVkQ1NTU3R5bGVT
aGVldDsKQEAgLTE1NCw2ICsxNTMsNyBAQCBjbGFzcyBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1
bHRzOwogY2xhc3MgTm9kZUZpbHRlcjsKIGNsYXNzIE5vZGVJdGVyYXRvcjsKIGNsYXNzIFBhZ2U7
CitjbGFzcyBQYWludFdvcmtsZXRHbG9iYWxTY29wZTsKIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVu
dDsKIGNsYXNzIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjsKIGNsYXNzIFF1YWxpZmllZE5hbWU7CkBA
IC0xOTQsNiArMTk0LDcgQEAgY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0OwogY2xhc3MgV2Vi
R1BVUmVuZGVyaW5nQ29udGV4dDsKIGNsYXNzIFdlYk1ldGFsUmVuZGVyaW5nQ29udGV4dDsKIGNs
YXNzIFdpbmRvd1Byb3h5OworY2xhc3MgV29ya2xldDsKIGNsYXNzIFhQYXRoRXZhbHVhdG9yOwog
Y2xhc3MgWFBhdGhFeHByZXNzaW9uOwogY2xhc3MgWFBhdGhOU1Jlc29sdmVyOwpAQCAtMTM1MCw2
ICsxMzUxLDEwIEBAIHB1YmxpYzoKICAgICAvLyBDYWxsZXJzIHNob3VsZCB0cnkgdG8gY3JlYXRl
IHRoZSBDb25zb2xlTWVzc2FnZSB0aGVtc2VsdmVzLgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIgPSAwKSBmaW5hbDsK
IAorICAgIC8vIFRoZSBmb2xsb3dpbmcgYWRkTWVzc2FnZSBmdW5jdGlvbiBpcyBkZXByZWNhdGVk
LgorICAgIC8vIENhbGxlcnMgc2hvdWxkIHRyeSB0byBjcmVhdGUgdGhlIENvbnNvbGVNZXNzYWdl
IHRoZW1zZWx2ZXMuCisgICAgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VM
ZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgdW5z
aWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBSZWZQdHI8SW5zcGVjdG9y
OjpTY3JpcHRDYWxsU3RhY2s+JiYsIEpTQzo6RXhlY1N0YXRlKiA9IG51bGxwdHIsIHVuc2lnbmVk
IGxvbmcgcmVxdWVzdElkZW50aWZpZXIgPSAwKSBmaW5hbDsKKwogICAgIFNlY3VyaXR5T3JpZ2lu
JiBzZWN1cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuICpTZWN1cml0eUNvbnRleHQ6OnNlY3Vy
aXR5T3JpZ2luKCk7IH0KICAgICBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gdG9wRG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpOyB9CiAKQEAgLTE1MTcs
NyArMTUyMiw5IEBAIHB1YmxpYzoKICAgICBib29sIHJlZ2lzdGVyQ1NTUHJvcGVydHkoQ1NTUmVn
aXN0ZXJlZEN1c3RvbVByb3BlcnR5JiYpOwogCiAjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkp
Ci0gICAgQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUmIGVuc3VyZUNTU1BhaW50V29ya2xldEds
b2JhbFNjb3BlKCk7CisgICAgV29ya2xldCYgZW5zdXJlUGFpbnRXb3JrbGV0KCk7CisgICAgUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGUqIHBhaW50V29ya2xldEdsb2JhbFNjb3BlKCkgeyByZXR1cm4g
bV9wYWludFdvcmtsZXRHbG9iYWxTY29wZS5nZXQoKTsgfQorICAgIHZvaWQgc2V0UGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUoUmVmPFBhaW50V29ya2xldEdsb2JhbFNjb3BlPiYmKTsKICNlbmRpZgog
CiAgICAgdm9pZCBzZXRBc1J1bm5pbmdVc2VyU2NyaXB0cygpIHsgbV9pc1J1bm5pbmdVc2VyU2Ny
aXB0cyA9IHRydWU7IH0KQEAgLTE1NzAsMTAgKzE1NzcsNiBAQCBwcml2YXRlOgogICAgIHZvaWQg
cmVmU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGZpbmFsIHsgcmVmKCk7IH0KICAgICB2b2lkIGRl
cmVmU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGZpbmFsIHsgZGVyZWYoKTsgfQogCi0gICAgLy8g
VGhlIGZvbGxvd2luZyBhZGRNZXNzYWdlIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQuCi0gICAgLy8g
Q2FsbGVycyBzaG91bGQgdHJ5IHRvIGNyZWF0ZSB0aGUgQ29uc29sZU1lc3NhZ2UgdGhlbXNlbHZl
cy4KLSAgICB2b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCB1bnNpZ25lZCBsaW5l
TnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdENh
bGxTdGFjaz4mJiwgSlNDOjpFeGVjU3RhdGUqID0gbnVsbHB0ciwgdW5zaWduZWQgbG9uZyByZXF1
ZXN0SWRlbnRpZmllciA9IDApIGZpbmFsOwotCiAgICAgU2Vjb25kcyBtaW5pbXVtRE9NVGltZXJJ
bnRlcnZhbCgpIGNvbnN0IGZpbmFsOwogCiAgICAgU2Vjb25kcyBkb21UaW1lckFsaWdubWVudElu
dGVydmFsKGJvb2wgaGFzUmVhY2hlZE1heE5lc3RpbmdMZXZlbCkgY29uc3QgZmluYWw7CkBAIC0y
MDYwLDcgKzIwNjMsOCBAQCBwcml2YXRlOgogICAgIENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0
eVNldCBtX0NTU1JlZ2lzdGVyZWRQcm9wZXJ0eVNldDsKIAogI2lmIEVOQUJMRShDU1NfUEFJTlRJ
TkdfQVBJKQotICAgIFJlZlB0cjxDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZT4gbV9DU1NQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZTsKKyAgICBSZWZQdHI8V29ya2xldD4gbV9wYWludFdvcmtsZXQ7
CisgICAgUmVmUHRyPFBhaW50V29ya2xldEdsb2JhbFNjb3BlPiBtX3BhaW50V29ya2xldEdsb2Jh
bFNjb3BlOwogI2VuZGlmCiAKICAgICBib29sIG1faXNSdW5uaW5nVXNlclNjcmlwdHMgeyBmYWxz
ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5p
biBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KaW5kZXggNjBhYjFh
NTgyODhiZTk5YTI5N2VlOTIzYjg4OTQwZjE5M2Y2ZjU1Zi4uNzhhMjJiMzE2YTRjNDY4MGIxZDdj
MjI3NGFjYjZhYjdmZDU2NDhiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
VGFyZ2V0RmFjdG9yeS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0
b3J5LmluCkBAIC01Miw2ICs1Miw3IEBAIFdlYkFuaW1hdGlvbgogV2ViS2l0TWVkaWFLZXlTZXNz
aW9uIGNvbmRpdGlvbmFsPUxFR0FDWV9FTkNSWVBURURfTUVESUEKIFdlYlNvY2tldAogV29ya2Vy
CitXb3JrbGV0R2xvYmFsU2NvcGUgY29uZGl0aW9uYWw9Q1NTX1BBSU5USU5HX0FQSQogWE1MSHR0
cFJlcXVlc3QKIFhNTEh0dHBSZXF1ZXN0VXBsb2FkCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAppbmRleCBiYTVjMzYzMjRiYzgzNDAwZTQ0YjhjOWMx
NWIxNTVlNTgzNzBjZmJmLi5lZWUzOGI1YmJhZjJjOTNiNGE1YWYyZjgyZDkzY2E1MTBlY2QxMzdl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBA
IC01NCw2ICs1NCw4IEBACiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRl
ICJXb3JrZXJOYXZpZ2F0b3IuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKKyNpbmNsdWRl
ICJXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrbGV0U2NyaXB0Q29udHJvbGxl
ci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NhdGNoU2NvcGUuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9FeGNlcHRpb24uaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1By
b21pc2UuaD4KQEAgLTQ3Niw4ICs0NzgsMTUgQEAgSlNDOjpWTSYgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6dm0oKQogewogICAgIGlmIChpczxEb2N1bWVudD4oKnRoaXMpKQogICAgICAgICByZXR1
cm4gY29tbW9uVk0oKTsKKyAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KCp0aGlzKSkKKyAg
ICAgICAgcmV0dXJuIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykuc2NyaXB0KCkt
PnZtKCk7CisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisgICAgaWYgKGlzPFdvcmtsZXRH
bG9iYWxTY29wZT4oKnRoaXMpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8V29ya2xldEdsb2Jh
bFNjb3BlPigqdGhpcykuc2NyaXB0KCktPnZtKCk7CisjZW5kaWYKIAotICAgIHJldHVybiBkb3du
Y2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpLnNjcmlwdCgpLT52bSgpOworICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGNvbW1vblZNKCk7CiB9CiAKIFJl
amVjdGVkUHJvbWlzZVRyYWNrZXImIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmVuc3VyZVJlamVj
dGVkUHJvbWlzZVRyYWNrZXJTbG93KCkKQEAgLTUxOSw4ICs1MjgsMTkgQEAgSlNDOjpFeGVjU3Rh
dGUqIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmV4ZWNTdGF0ZSgpCiAgICAgICAgIHJldHVybiBl
eGVjU3RhdGVGcm9tUGFnZShtYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgZG9jdW1lbnQucGFnZSgp
KTsKICAgICB9CiAKLSAgICBXb3JrZXJHbG9iYWxTY29wZSogd29ya2VyR2xvYmFsU2NvcGUgPSBz
dGF0aWNfY2FzdDxXb3JrZXJHbG9iYWxTY29wZSo+KHRoaXMpOwotICAgIHJldHVybiBleGVjU3Rh
dGVGcm9tV29ya2VyR2xvYmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUpOworICAgIGlmIChpczxX
b3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpKSB7CisgICAgICAgIFdvcmtlckdsb2JhbFNjb3BlJiB3
b3JrZXJHbG9iYWxTY29wZSA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcyk7Cisg
ICAgICAgIHJldHVybiBleGVjU3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUod29ya2VyR2xvYmFs
U2NvcGUpOworICAgIH0KKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKyAgICBpZiAoaXM8
V29ya2xldEdsb2JhbFNjb3BlPigqdGhpcykpIHsKKyAgICAgICAgV29ya2xldEdsb2JhbFNjb3Bl
JiB3b3JrbGV0R2xvYmFsU2NvcGUgPSBkb3duY2FzdDxXb3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlz
KTsKKyAgICAgICAgcmV0dXJuIGV4ZWNTdGF0ZUZyb21Xb3JrbGV0R2xvYmFsU2NvcGUod29ya2xl
dEdsb2JhbFNjb3BlKTsKKyAgICB9CisjZW5kaWYKKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiBudWxscHRyOwogfQogCiBTdHJpbmcgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggMmI2NDc1ZTYyN2RjZWZkNWRkYjY0MzRlMTUx
NTU0NjVlNTVjNDdlNC4uNzg1OTA0NTgyM2I3YzYzMDUwYWUwMWYxYTY0NWJhZDMwYjJkYzc5YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC04OSw2
ICs4OSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpc0RvY3VtZW50KCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNXb3JrZXJHbG9iYWxTY29wZSgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzV29ya2xldEdsb2Jh
bFNjb3BlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc0Nv
bnRleHRUaHJlYWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIGlz
SlNFeGVjdXRpb25Gb3JiaWRkZW4oKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQu
Y3BwCmluZGV4IGNhYzA2MjU2OTlhNDE4Yjg5MGQzZDExM2QzYzQ5MjdiZGU2ZmVjOWQuLmIyMGNi
YmM5NTA3MDI4MTFiNjU4OWFjMWRmYmQ1NzMzOTE5M2QzMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2Vy
QWdlbnQuY3BwCkBAIC02MCw3ICs2MCw3IEBAIEluamVjdGVkU2NyaXB0IFdvcmtlckRlYnVnZ2Vy
QWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYgZXJyb3JTdHJpCiAgICAg
ICAgIHJldHVybiBJbmplY3RlZFNjcmlwdCgpOwogICAgIH0KIAotICAgIEpTQzo6RXhlY1N0YXRl
KiBzY3JpcHRTdGF0ZSA9IGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZSgmbV93b3JrZXJH
bG9iYWxTY29wZSk7CisgICAgSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlID0gZXhlY1N0YXRl
RnJvbVdvcmtlckdsb2JhbFNjb3BlKG1fd29ya2VyR2xvYmFsU2NvcGUpOwogICAgIHJldHVybiBp
bmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dv
cmtlclJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dv
cmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCmluZGV4IDljYzY5ZDE3MjRjZGFkMThmOThlM2Qz
YjMyZjI5NjhhNTU0ZTA2N2QuLjhjMzIxNDg3YzY4NWZkMzRmYWVhYTc1NTBjOThhMjI5MDg3NWQz
MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dv
cmtlclJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmNwcApAQCAtNjUsNyArNjUsNyBAQCBJbmplY3Rl
ZFNjcmlwdCBXb3JrZXJSdW50aW1lQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0
cmluZyYgZXJyb3JTdHJpbgogICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKICAgICB9
CiAKLSAgICBKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUgPSBleGVjU3RhdGVGcm9tV29ya2Vy
R2xvYmFsU2NvcGUoJm1fd29ya2VyR2xvYmFsU2NvcGUpOworICAgIEpTQzo6RXhlY1N0YXRlKiBz
Y3JpcHRTdGF0ZSA9IGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZShtX3dvcmtlckdsb2Jh
bFNjb3BlKTsKICAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3Jp
cHRGb3Ioc2NyaXB0U3RhdGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwCmluZGV4IGQyZTQyYzBjOWU2MTk5ZjUy
NzQyOTE2NzBmMTdhMDZlOWRlODIwZmIuLjE1YWE5MjRjMmI2MTcxZTUzNTBjMTAxZDQ0MGJlNmMz
Y2NhNTBjOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1
c3RvbVBhaW50SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0N1c3RvbVBhaW50SW1hZ2UuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotQ3VzdG9tUGFpbnRJbWFnZTo6Q3VzdG9tUGFpbnRJbWFnZShjb25zdCBDU1NQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZTo6UGFpbnREZWZpbml0aW9uJiBkZWZpbml0aW9uLCBjb25zdCBG
bG9hdFNpemUmIHNpemUpCitDdXN0b21QYWludEltYWdlOjpDdXN0b21QYWludEltYWdlKGNvbnN0
IFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb24mIGRlZmluaXRpb24sIGNv
bnN0IEZsb2F0U2l6ZSYgc2l6ZSkKICAgICA6IG1fcGFpbnRDYWxsYmFjayhkZWZpbml0aW9uLnBh
aW50Q2FsbGJhY2suZ2V0KCkpCiB7CiAgICAgc2V0Q29udGFpbmVyU2l6ZShzaXplKTsKQEAgLTYz
LDcgKzYzLDYgQEAgSW1hZ2VEcmF3UmVzdWx0IEN1c3RvbVBhaW50SW1hZ2U6OmRvQ3VzdG9tUGFp
bnQoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY28KICAgICBpZiAocmVzdWx0LnR5cGUo
KSAhPSBDYWxsYmFja1Jlc3VsdFR5cGU6OlN1Y2Nlc3MpCiAgICAgICAgIHJldHVybiBJbWFnZURy
YXdSZXN1bHQ6OkRpZE5vdGhpbmc7CiAKLSAgICBVTlVTRURfUEFSQU0oZGVzdENvbnRleHQpOwog
ICAgIGF1dG8gaW1hZ2UgPSBjYW52YXMtPmNvcGllZEltYWdlKCk7CiAgICAgaWYgKCFpbWFnZSkK
ICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuaAppbmRleCAw
M2FiMmE4ODg2ODNhM2Y1Mzg3MWRhYzViNTFmODkxOWRhNGM0ZGQyLi5lYjZhODFiYWUyNGQxMTdl
MGNkMzQ4OGRjNDdhNzZlNjJiMDQyMGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5oCkBAIC0yNyw4ICsyNyw4IEBACiAKICNp
ZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKIAotI2luY2x1ZGUgIkNTU1BhaW50V29ya2xldEds
b2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiR2VuZXJhdGVkSW1hZ2UuaCIKKyNpbmNsdWRlICJQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM2LDcg
KzM2LDcgQEAgY2xhc3MgSW1hZ2VCdWZmZXI7CiAKIGNsYXNzIEN1c3RvbVBhaW50SW1hZ2UgZmlu
YWwgOiBwdWJsaWMgR2VuZXJhdGVkSW1hZ2UgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q3Vz
dG9tUGFpbnRJbWFnZT4gY3JlYXRlKGNvbnN0IENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQ
YWludERlZmluaXRpb24mIGRlZmluaXRpb24sIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKKyAgICBz
dGF0aWMgUmVmPEN1c3RvbVBhaW50SW1hZ2U+IGNyZWF0ZShjb25zdCBQYWludFdvcmtsZXRHbG9i
YWxTY29wZTo6UGFpbnREZWZpbml0aW9uJiBkZWZpbml0aW9uLCBjb25zdCBGbG9hdFNpemUmIHNp
emUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDdXN0b21QYWludEltYWdl
KGRlZmluaXRpb24sIHNpemUpKTsKICAgICB9CkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAg
ICBib29sIGlzQ3VzdG9tUGFpbnRJbWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KIAogcHJpdmF0ZToKLSAgICBDdXN0b21QYWludEltYWdlKGNvbnN0IENTU1BhaW50V29ya2xl
dEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb24mLCBjb25zdCBGbG9hdFNpemUmKTsKKyAgICBD
dXN0b21QYWludEltYWdlKGNvbnN0IFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmlu
aXRpb24mLCBjb25zdCBGbG9hdFNpemUmKTsKIAogICAgIEltYWdlRHJhd1Jlc3VsdCBkb0N1c3Rv
bVBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNjYxOTIzNmU1YmM0MDg1ZGI1Y2Y3Y2YyMmE5NTYwMTAyMGE5ZjRmMAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
LmNwcApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBhaW50V29ya2xldEds
b2JhbFNjb3BlLmgiCisKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKworI2luY2x1ZGUg
IkRPTVdpbmRvdy5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworUmVmPFBhaW50V29ya2xldEdsb2JhbFNjb3BlPiBQYWludFdvcmtsZXRHbG9iYWxTY29w
ZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgU2NyaXB0U291cmNlQ29kZSYmIGNvZGUpCit7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoZG9jdW1l
bnQsIFdURk1vdmUoY29kZSkpKTsKK30KKworUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OlBhaW50
V29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50JiBkb2N1bWVudCwgU2NyaXB0U291cmNlQ29kZSYm
IGNvZGUpCisgICAgOiBXb3JrbGV0R2xvYmFsU2NvcGUoZG9jdW1lbnQsIFdURk1vdmUoY29kZSkp
Cit7Cit9CisKK2RvdWJsZSBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6ZGV2aWNlUGl4ZWxSYXRp
bygpCit7CisgICAgQVNTRVJUKG1fZG9jdW1lbnQpOworICAgIEFTU0VSVChtX2RvY3VtZW50LT5k
b21XaW5kb3coKSk7CisgICAgcmV0dXJuIG1fZG9jdW1lbnQtPmRvbVdpbmRvdygpLT5kZXZpY2VQ
aXhlbFJhdGlvKCk7Cit9CisKK0V4Y2VwdGlvbk9yPHZvaWQ+IFBhaW50V29ya2xldEdsb2JhbFNj
b3BlOjphZGRSZWdpc3RlcmVkUGFpbnQoKQoreworICAgIHJldHVybiB7IH07Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xl
dHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYTg4YTAxNzAzZDU1NjNi
NTM5OWRjOWVmZjhmNWQwOGEwZWIzMjM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaApAQCAtMCwwICsxLDY2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKworI2luY2x1ZGUgIkNTU1BhaW50Q2Fs
bGJhY2suaCIKKyNpbmNsdWRlICJXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKworbmFtZXNwYWNlIEpT
QyB7CitjbGFzcyBKU1ZhbHVlOworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUgOiBwdWJsaWMgV29ya2xldEds
b2JhbFNjb3BlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFBhaW50V29ya2xldEdsb2JhbFNj
b3BlPiBjcmVhdGUoRG9jdW1lbnQmLCBTY3JpcHRTb3VyY2VDb2RlJiYpOworICAgIGJvb2wgaXNQ
YWludFdvcmtsZXRHbG9iYWxTY29wZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKwor
ICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGFkZFJlZ2lzdGVyZWRQYWludCgpOworICAgIGRvdWJsZSBk
ZXZpY2VQaXhlbFJhdGlvKCk7CisKKyAgICBzdHJ1Y3QgUGFpbnREZWZpbml0aW9uIHsKKyAgICAg
ICAgY29uc3QgQXRvbWljU3RyaW5nIG5hbWU7CisgICAgICAgIGNvbnN0IFJlZjxDU1NQYWludENh
bGxiYWNrPiBwYWludENhbGxiYWNrOworICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiBpbnB1
dFByb3BlcnRpZXM7CisgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+IGlucHV0QXJndW1lbnRz
OworICAgIH07CisKKyAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFBhaW50RGVm
aW5pdGlvbj4+JiBwYWludERlZmluaXRpb25NYXAoKSB7IHJldHVybiBtX3BhaW50RGVmaW5pdGlv
bk1hcDsgfQorICAgIExvY2smIGxvY2soKSB7IHJldHVybiBtX2xvY2s7IH0KKworcHJpdmF0ZToK
KyAgICBQYWludFdvcmtsZXRHbG9iYWxTY29wZShEb2N1bWVudCYsIFNjcmlwdFNvdXJjZUNvZGUm
Jik7CisKKyAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFBhaW50RGVmaW5pdGlv
bj4+IG1fcGFpbnREZWZpbml0aW9uTWFwOworICAgIExvY2sgbV9sb2NrOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKENTU19QQUlOVElOR19BUEkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5p
ZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYTU0OWNjZjA0M2JlMDRkYjY5MWRlZDdmNjBjNGVlNWVhN2FjY2RiNAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEds
b2JhbFNjb3BlLmlkbApAQCAtMCwwICsxLDM5IEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKK1sK
KyAgICBFeHBvc2VkPVBhaW50V29ya2xldCwKKyAgICBFbmFibGVkQXRSdW50aW1lPUNTU1BhaW50
aW5nQVBJLAorICAgIENvbmRpdGlvbmFsPUNTU19QQUlOVElOR19BUEksCisgICAgSlNDdXN0b21N
YXJrRnVuY3Rpb24sCisgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAorICAgIEltcGxpY2l0
VGhpcywKKyAgICBJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdCwKKyAgICBJc0ltbXV0
YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdE9uUHJvdG90eXBlLAorICAgIEdsb2JhbD0oV29ya2xl
dCxQYWludFdvcmtsZXQpLAorXSBpbnRlcmZhY2UgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUgOiBX
b3JrbGV0R2xvYmFsU2NvcGUgeworICAgIFtDdXN0b20sIE1heVRocm93RXhjZXB0aW9uXSB2b2lk
IHJlZ2lzdGVyUGFpbnQoRE9NU3RyaW5nIG5hbWUsIEZ1bmN0aW9uIHBhaW50Q3Rvcik7CisgICAg
cmVhZG9ubHkgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgZGV2aWNlUGl4ZWxSYXRpbzsK
K307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4ZjJjNTg5NmYy
Y2JkOWZmODZjZDU4MDAxMjE5ZTE4OTQ0Njc3NzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmNwcApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIldvcmtsZXQuaCIKKworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorCisj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJQYWludFdvcmtsZXRHbG9iYWxTY29wZS5o
IgorI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitSZWY8V29ya2xldD4gV29ya2xldDo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBXb3JrbGV0KCkpOworfQorCitXb3JrbGV0OjpXb3JrbGV0KCkKK3sKK30KKwordm9pZCBX
b3JrbGV0OjphZGRNb2R1bGUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIG1vZHVs
ZVVSTCkKK3sKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGRvd25sb2FkIHRoZSBzb3VyY2UgZnJv
bSB0aGUgVVJMCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5MTEzNgorICAgIGF1dG8gY29udGV4dCA9IFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpjcmVh
dGUoZG9jdW1lbnQsIFNjcmlwdFNvdXJjZUNvZGUobW9kdWxlVVJMKSk7CisgICAgY29udGV4dC0+
ZXZhbHVhdGUoKTsKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHN0b3JlIG11bHRpcGxlIGdsb2Jh
bCBzY29wZXMgYW5kIGNob29zZSBiZXR3ZWVuIHRoZW0KKyAgICAvLyBUaGlzIHdpbGwgbm90IGZ1
bmN0aW9uIGNvcnJlY3RseSBpZiBtdWx0aXBsZSBtb2R1bGVzIGFyZSBhZGRlZC4KKyAgICBkb2N1
bWVudC5zZXRQYWludFdvcmtsZXRHbG9iYWxTY29wZShXVEZNb3ZlKGNvbnRleHQpKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtsZXRzL1dvcmtsZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wMDgwOGY4OTVlMDViZmUyNmNmM2FjYmJhZjYyOGZkYTRhZmVkYzMxCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5oCkBAIC0w
LDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgorCisjaWYgRU5B
QkxFKENTU19QQUlOVElOR19BUEkpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIERvY3Vt
ZW50OworCitjbGFzcyBXb3JrbGV0IDogcHVibGljIFJlZkNvdW50ZWQ8V29ya2xldD4sIHB1Ymxp
YyBTY3JpcHRXcmFwcGFibGUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8V29ya2xldD4gY3Jl
YXRlKCk7CisgICAgCisgICAgdm9pZCBhZGRNb2R1bGUoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcm
IG1vZHVsZVVSTCk7CisKK3Byb3RlY3RlZDoKKyAgICBXb3JrbGV0KCk7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2xldHMvV29ya2xldC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmlkbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xNzRjYzkxMzgwMGI3OWVlNzBhNWM0NDY3OWVmMTVmZTdlYzg0OWZhCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5pZGwKQEAgLTAs
MCArMSwzMyBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCitbCisgICAgRW5hYmxlZEF0UnVudGlt
ZT1DU1NQYWludGluZ0FQSSwKKyAgICBDb25kaXRpb25hbD1DU1NfUEFJTlRJTkdfQVBJLAorICAg
IEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCisgICAgR2xvYmFsPVdvcmtsZXQsCitdIGludGVy
ZmFjZSBXb3JrbGV0IHsKKyAgICBbQ2FsbFdpdGg9RG9jdW1lbnRdIHZvaWQgYWRkTW9kdWxlKFVT
VlN0cmluZyBtb2R1bGVVUkwvKiwgb3B0aW9uYWwgV29ya2xldE9wdGlvbnMgb3B0aW9ucyovKTsK
K307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uODk1MDZiOWUzOTMxMzRjZWMzMzYzNmNhNjZmMWM1ZGMyNGI4ODE4Mgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xl
Q2xpZW50LmNwcApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIldvcmtsZXRDb25zb2xlQ2xpZW50LmgiCisKKyNpZiBFTkFCTEUoQ1NT
X1BBSU5USU5HX0FQSSkKKworI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVNZXNzYWdlLmg+CisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvU2NyaXB0QXJndW1lbnRzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
U2NyaXB0Q2FsbFN0YWNrLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0Q2FsbFN0
YWNrRmFjdG9yeS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSW5z
cGVjdG9yOworCitXb3JrbGV0Q29uc29sZUNsaWVudDo6V29ya2xldENvbnNvbGVDbGllbnQoV29y
a2xldEdsb2JhbFNjb3BlJiB3b3JrbGV0R2xvYmFsU2NvcGUpCisgICAgOiBtX3dvcmtsZXRHbG9i
YWxTY29wZSh3b3JrbGV0R2xvYmFsU2NvcGUpCit7Cit9CisKK1dvcmtsZXRDb25zb2xlQ2xpZW50
Ojp+V29ya2xldENvbnNvbGVDbGllbnQoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgV29ya2xldENvbnNv
bGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3Nh
Z2VMZXZlbCBsZXZlbCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIFJlZjxJbnNwZWN0b3I6OlNjcmlw
dEFyZ3VtZW50cz4mJiBhcmd1bWVudHMpCit7CisgICAgU3RyaW5nIG1lc3NhZ2VUZXh0OworICAg
IGFyZ3VtZW50cy0+Z2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKG1lc3NhZ2VUZXh0KTsKKyAgICBh
dXRvIG1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+
KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIHR5cGUsIGxldmVsLCBtZXNzYWdlVGV4dCwgV1RG
TW92ZShhcmd1bWVudHMpLCBleGVjKTsKKyAgICBtX3dvcmtsZXRHbG9iYWxTY29wZS5hZGRDb25z
b2xlTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpKTsKK30KKwordm9pZCBXb3JrbGV0Q29uc29sZUNs
aWVudDo6Y291bnQoSlNDOjpFeGVjU3RhdGUqLCBSZWY8U2NyaXB0QXJndW1lbnRzPiYmKSB7IH0K
Kwordm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6dGltZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0
IFN0cmluZyYpIHsgfQordm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6dGltZUVuZChKU0M6OkV4
ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpIHsgfQorCit2b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50
Ojpwcm9maWxlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJikgeyB9Cit2b2lkIFdvcmts
ZXRDb25zb2xlQ2xpZW50Ojpwcm9maWxlRW5kKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5n
JikgeyB9CisKK3ZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6OnRha2VIZWFwU25hcHNob3QoSlND
OjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmKSB7IH0KK3ZvaWQgV29ya2xldENvbnNvbGVDbGll
bnQ6OnRpbWVTdGFtcChKU0M6OkV4ZWNTdGF0ZSosIFJlZjxTY3JpcHRBcmd1bWVudHM+JiYpIHsg
fQorCit2b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50OjpyZWNvcmQoSlNDOjpFeGVjU3RhdGUqLCBS
ZWY8U2NyaXB0QXJndW1lbnRzPiYmKSB7IH0KK3ZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6OnJl
Y29yZEVuZChKU0M6OkV4ZWNTdGF0ZSosIFJlZjxTY3JpcHRBcmd1bWVudHM+JiYpIHsgfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0
cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwZTI3NGVmNzNkMTIzZGZlNzg3
ODA5MmE4ZmEzNTE2OTQzODU0NDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorCisjaW5j
bHVkZSAiV29ya2xldEdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29u
c29sZUNsaWVudC5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBKU0Mg
eworY2xhc3MgRXhlY1N0YXRlOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdv
cmtsZXRDb25zb2xlQ2xpZW50IGZpbmFsIDogcHVibGljIEpTQzo6Q29uc29sZUNsaWVudCB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQgV29ya2xl
dENvbnNvbGVDbGllbnQoV29ya2xldEdsb2JhbFNjb3BlJik7CisgICAgdmlydHVhbCB+V29ya2xl
dENvbnNvbGVDbGllbnQoKTsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgbWVzc2FnZVdpdGhUeXBl
QW5kTGV2ZWwoTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgSlNDOjpFeGVjU3RhdGUqLCBSZWY8
SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY291bnQo
SlNDOjpFeGVjU3RhdGUqLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYpIG92ZXJy
aWRlOworICAgIHZvaWQgcHJvZmlsZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgdGl0
bGUpIG92ZXJyaWRlOworICAgIHZvaWQgcHJvZmlsZUVuZChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0
IFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOworICAgIHZvaWQgdGFrZUhlYXBTbmFwc2hvdChKU0M6
OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOworICAgIHZvaWQgdGlt
ZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOworICAgIHZv
aWQgdGltZUVuZChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgdGl0bGUpIG92ZXJyaWRl
OworICAgIHZvaWQgdGltZVN0YW1wKEpTQzo6RXhlY1N0YXRlKiwgUmVmPEluc3BlY3Rvcjo6U2Ny
aXB0QXJndW1lbnRzPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlY29yZChKU0M6OkV4ZWNTdGF0
ZSosIFJlZjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4mJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCByZWNvcmRFbmQoSlNDOjpFeGVjU3RhdGUqLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVu
dHM+JiYpIG92ZXJyaWRlOworCitwcml2YXRlOgorICAgIFdvcmtsZXRHbG9iYWxTY29wZSYgbV93
b3JrbGV0R2xvYmFsU2NvcGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjU0ODY3YTNhNDAxYWM0MDgzOGVhNGVlYmQ4ZWZlMmJiZDBiNDc2YWIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
CkBAIC0wLDAgKzEsMTM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXb3JrbGV0R2xvYmFs
U2NvcGUuaCIKKworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorCisjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5oIgorI2luY2x1ZGUgIkpTV29ya2xldEdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAi
UGFnZUNvbnNvbGVDbGllbnQuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpblBvbGljeS5oIgor
I2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAiV29ya2xldFNjcmlwdENvbnRyb2xsZXIu
aCIKKworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0V4Y2VwdGlvbi5oPgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0lkZW50aWZpZXJzRmFjdG9yeS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTTG9jay5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdENhbGxTdGFjay5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCitX
b3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxTY29wZShEb2N1bWVudCYgZG9jdW1lbnQs
IFNjcmlwdFNvdXJjZUNvZGUmJiBjb2RlKQorICAgIDogbV9kb2N1bWVudChtYWtlV2Vha1B0cihk
b2N1bWVudCkpCisgICAgLCBtX3Nlc3Npb25JRChtX2RvY3VtZW50LT5zZXNzaW9uSUQoKSkKKyAg
ICAsIG1fc2NyaXB0KG1ha2VVbmlxdWVSZWY8V29ya2xldFNjcmlwdENvbnRyb2xsZXI+KHRoaXMp
KQorICAgICwgbV90b3BPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZVVuaXF1ZSgpKQorICAg
ICwgbV9pZGVudGlmaWVyKCJXb3JrbGV0R2xvYmFsU2NvcGU6IiArIEluc3BlY3Rvcjo6SWRlbnRp
ZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlmaWVyKCkpCisgICAgLCBtX2V2ZW50UXVldWUoKnRo
aXMpCisgICAgLCBtX2NvZGUoV1RGTW92ZShjb2RlKSkKK3sKKyAgICBhdXRvKiBmcmFtZSA9IG1f
ZG9jdW1lbnQtPmZyYW1lKCk7CisgICAgbV9qc1J1bnRpbWVGbGFncyA9IGZyYW1lID8gZnJhbWUt
PnNldHRpbmdzKCkuamF2YVNjcmlwdFJ1bnRpbWVGbGFncygpIDogSlNDOjpSdW50aW1lRmxhZ3Mo
KTsKKyAgICBBU1NFUlQobV9kb2N1bWVudC0+cGFnZSgpKTsKKworICAgIHNldFNlY3VyaXR5T3Jp
Z2luUG9saWN5KFNlY3VyaXR5T3JpZ2luUG9saWN5OjpjcmVhdGUobV90b3BPcmlnaW4uY29weVJl
ZigpKSk7CisgICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KHN0ZDo6bWFrZV91bmlxdWU8Q29u
dGVudFNlY3VyaXR5UG9saWN5PihVUkwgeyBjb2RlLnVybCgpIH0sICp0aGlzKSk7Cit9CisKK1dv
cmtsZXRHbG9iYWxTY29wZTo6fldvcmtsZXRHbG9iYWxTY29wZSgpCit7CisgICAgcmVtb3ZlRnJv
bUNvbnRleHRzTWFwKCk7CisgICAgbV9zY3JpcHQtPndvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIo
KS0+c2V0Q29uc29sZUNsaWVudChudWxscHRyKTsKK30KKworU3RyaW5nIFdvcmtsZXRHbG9iYWxT
Y29wZTo6b3JpZ2luKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90b3BPcmlnaW4tPnRvU3RyaW5n
KCk7Cit9CisKK1N0cmluZyBXb3JrbGV0R2xvYmFsU2NvcGU6OnVzZXJBZ2VudChjb25zdCBVUkwm
IHVybCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9kb2N1bWVudCk7CisgICAgcmV0dXJuIG1fZG9j
dW1lbnQtPnVzZXJBZ2VudCh1cmwpOworfQorCit2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6ZXZh
bHVhdGUoKQoreworICAgIG1fc2NyaXB0LT5ldmFsdWF0ZShtX2NvZGUpOworfQorCitib29sIFdv
cmtsZXRHbG9iYWxTY29wZTo6aXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fc2NyaXB0LT5pc0V4ZWN1dGlvbkZvcmJpZGRlbigpOworfQorCit2b2lkIFdvcmts
ZXRHbG9iYWxTY29wZTo6ZGlzYWJsZUV2YWwoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCit7
CisgICAgbV9zY3JpcHQtPmRpc2FibGVFdmFsKGVycm9yTWVzc2FnZSk7Cit9CisKK3ZvaWQgV29y
a2xldEdsb2JhbFNjb3BlOjpkaXNhYmxlV2ViQXNzZW1ibHkoY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UpCit7CisgICAgbV9zY3JpcHQtPmRpc2FibGVXZWJBc3NlbWJseShlcnJvck1lc3NhZ2Up
OworfQorCitVUkwgV29ya2xldEdsb2JhbFNjb3BlOjpjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcm
IHVybCkgY29uc3QKK3sKKyAgICBpZiAodXJsLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gVVJM
KCk7CisgICAgcmV0dXJuIFVSTChtX2NvZGUudXJsKCksIHVybCk7Cit9CisKK3ZvaWQgV29ya2xl
dEdsb2JhbFNjb3BlOjpsb2dFeGNlcHRpb25Ub0NvbnNvbGUoY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlciwgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4mJiBzdGFjaykKK3sKKyAgICBBU1NFUlQo
bV9kb2N1bWVudCk7CisgICAgbV9kb2N1bWVudC0+bG9nRXhjZXB0aW9uVG9Db25zb2xlKGVycm9y
TWVzc2FnZSwgc291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFdURk1vdmUoc3Rh
Y2spKTsKK30KKwordm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKHN0
ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiYmIG1lc3NhZ2UpCit7Cisg
ICAgQVNTRVJUKG1fZG9jdW1lbnQpOworICAgIG1fZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdl
KFdURk1vdmUobWVzc2FnZSkpOworfQorCit2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29u
c29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQorewor
ICAgIEFTU0VSVChtX2RvY3VtZW50KTsKKyAgICBtX2RvY3VtZW50LT5hZGRDb25zb2xlTWVzc2Fn
ZShzb3VyY2UsIGxldmVsLCBtZXNzYWdlLCByZXF1ZXN0SWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
V29ya2xldEdsb2JhbFNjb3BlOjphZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNz
YWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZVRleHQsIGNvbnN0IFN0cmluZyYg
c291cmNlVVJMLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIFJl
ZlB0cjxTY3JpcHRDYWxsU3RhY2s+JiYgY2FsbFN0YWNrLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUs
IHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCit7CisgICAgQVNTRVJUKG1fZG9jdW1l
bnQpOworICAgIG1fZG9jdW1lbnQtPmFkZE1lc3NhZ2Uoc291cmNlLCBsZXZlbCwgbWVzc2FnZVRl
eHQsIHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBXVEZNb3ZlKGNhbGxTdGFj
ayksIHN0YXRlLCByZXF1ZXN0SWRlbnRpZmllcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEds
b2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kMDljNWU4ZTM2YjdkMjFkZjQ5MzUyMDRjMTQ5ZTIyOGM4ZjcwYzM4Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNj
b3BlLmgKQEAgLTAsMCArMSwxMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5H
X0FQSSkKKworI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uT3Iu
aCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiU2NyaXB0
U291cmNlQ29kZS5oIgorI2luY2x1ZGUgIlN1cHBsZW1lbnRhYmxlLmgiCisjaW5jbHVkZSAiVVJM
LmgiCisjaW5jbHVkZSAiV29ya2VyRXZlbnRRdWV1ZS5oIgorCisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvQ29uc29sZU1lc3NhZ2UuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SdW50aW1l
RmxhZ3MuaD4KKyNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1
ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOworY2xhc3MgU2NyaXB0U291cmNlQ29kZTsK
KworY2xhc3MgV29ya2xldEdsb2JhbFNjb3BlIDogcHVibGljIFJlZkNvdW50ZWQ8V29ya2xldEds
b2JhbFNjb3BlPiwgcHVibGljIFN1cHBsZW1lbnRhYmxlPFdvcmtsZXRHbG9iYWxTY29wZT4sIHB1
YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5l
RGF0YSB7CitwdWJsaWM6CisgICAgfldvcmtsZXRHbG9iYWxTY29wZSgpOworCisgICAgdmlydHVh
bCBib29sIGlzUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQorCisgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvZGUudXJs
KCk7IH0KKyAgICBTdHJpbmcgb3JpZ2luKCkgY29uc3QgZmluYWw7CisgICAgY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisKKyAgICB2b2lk
IGV2YWx1YXRlKCk7CisKKyAgICB1c2luZyBSZWZDb3VudGVkOjpyZWY7CisgICAgdXNpbmcgUmVm
Q291bnRlZDo6ZGVyZWY7CisKKyAgICBXb3JrbGV0U2NyaXB0Q29udHJvbGxlciogc2NyaXB0KCkg
eyByZXR1cm4gJm1fc2NyaXB0LmdldCgpOyB9CisKKyAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdl
KHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiYmKSBmaW5hbDsKKwor
ICAgIGJvb2wgaXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0IGZpbmFsOworICAgIFNlY3Vy
aXR5T3JpZ2luJiB0b3BPcmlnaW4oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3RvcE9yaWdpbi5n
ZXQoKTsgfQorCisgICAgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyKCkgZmluYWwgeyBy
ZXR1cm4gbnVsbHB0cjsgfQorCisgICAgYm9vbCBpc0NvbnRleHRUaHJlYWQoKSBjb25zdCBmaW5h
bCB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBpc1NlY3VyZUNvbnRleHQoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBmYWxzZTsgfQorCisgICAgSlNDOjpSdW50aW1lRmxhZ3MganNSdW50aW1lRmxh
Z3MoKSBjb25zdCB7IHJldHVybiBtX2pzUnVudGltZUZsYWdzOyB9CisKK3Byb3RlY3RlZDoKKyAg
ICBXb3JrbGV0R2xvYmFsU2NvcGUoRG9jdW1lbnQmLCBTY3JpcHRTb3VyY2VDb2RlJiYpOworCisg
ICAgV2Vha1B0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKKworcHJpdmF0ZToKKyNpZiBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKKyAgICBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogaWRi
Q29ubmVjdGlvblByb3h5KCkgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIG51
bGxwdHI7IH0KKyNlbmRpZgorCisgICAgdm9pZCBwb3N0VGFzayhUYXNrJiYpIGZpbmFsIHsgQVNT
RVJUX05PVF9SRUFDSEVEKCk7IH0KKworICAgIHZvaWQgcmVmU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpIGZpbmFsIHsgcmVmKCk7IH0KKyAgICB2b2lkIGRlcmVmU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpIGZpbmFsIHsgZGVyZWYoKTsgfQorCisgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIGZpbmFs
IHsgcmVmKCk7IH0KKyAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IGRlcmVmKCk7
IH0KKworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBjb25zdF9jYXN0PFdvcmtsZXRHbG9iYWxTY29wZSo+KHRo
aXMpOyB9CisgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBXb3JrbGV0R2xvYmFsU2NvcGVFdmVudFRhcmdldEludGVyZmFj
ZVR5cGU7IH0KKworICAgIGJvb2wgaXNXb3JrbGV0R2xvYmFsU2NvcGUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiB0cnVlOyB9CisKKyAgICB2b2lkIGxvZ0V4Y2VwdGlvblRvQ29uc29sZShjb25zdCBT
dHJpbmcmIGVycm9yTWVzc2FnZSwgY29uc3QgU3RyaW5nJiwgaW50LCBpbnQsIFJlZlB0cjxJbnNw
ZWN0b3I6OlNjcmlwdENhbGxTdGFjaz4mJikgZmluYWw7CisgICAgdm9pZCBhZGRNZXNzYWdlKE1l
c3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwg
dW5zaWduZWQsIHVuc2lnbmVkLCBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s+JiYs
IEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgbG9uZykgZmluYWw7CisgICAgdm9pZCBhZGRDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYsIHVu
c2lnbmVkIGxvbmcpIGZpbmFsOworCisgICAgRXZlbnRUYXJnZXQqIGVycm9yRXZlbnRUYXJnZXQo
KSBmaW5hbCB7IHJldHVybiB0aGlzOyB9CisgICAgRXZlbnRRdWV1ZSYgZXZlbnRRdWV1ZSgpIGNv
bnN0IGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBtX2V2ZW50UXVldWU7IH0K
KworI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQorICAgIGJvb2wgd3JhcENyeXB0b0tleShjb25z
dCBWZWN0b3I8dWludDhfdD4mLCBWZWN0b3I8dWludDhfdD4mKSBmaW5hbCB7IFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgdW53cmFwQ3J5cHRv
S2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIFZlY3Rvcjx1aW50OF90PiYpIGZpbmFsIHsgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CisjZW5kaWYKKyAgICBV
UkwgY29tcGxldGVVUkwoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7CisgICAgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KKyAg
ICBTdHJpbmcgdXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgZGlz
YWJsZUV2YWwoY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBkaXNhYmxlV2ViQXNzZW1i
bHkoY29uc3QgU3RyaW5nJikgZmluYWw7CisKKyAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25J
RDsKKyAgICBVbmlxdWVSZWY8V29ya2xldFNjcmlwdENvbnRyb2xsZXI+IG1fc2NyaXB0OworCisg
ICAgUmVmPFNlY3VyaXR5T3JpZ2luPiBtX3RvcE9yaWdpbjsKKyAgICBTdHJpbmcgbV9pZGVudGlm
aWVyOworCisgICAgLy8gRklYTUU6IFRoaXMgaXMgbm90IGltcGxlbWVudGVkIHByb3Blcmx5LCBp
dCBqdXN0IHNhdGlzZmllcyB0aGUgY29tcGlsZXIuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTEzNgorICAgIG11dGFibGUgV29ya2VyRXZlbnRRdWV1
ZSBtX2V2ZW50UXVldWU7CisKKyAgICBKU0M6OlJ1bnRpbWVGbGFncyBtX2pzUnVudGltZUZsYWdz
OworICAgIFNjcmlwdFNvdXJjZUNvZGUgbV9jb2RlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OldvcmtsZXRHbG9i
YWxTY29wZSkKK3N0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0KSB7IHJldHVybiBjb250ZXh0LmlzV29ya2xldEdsb2JhbFNjb3Bl
KCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDc1OWYw
Y2UxZDE2Zjg2OTE4NjAxMjc3NmYwZGIxNmI2MWJhYTQ3OAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5pZGwKQEAgLTAsMCArMSwz
NyBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCitbCisgICAgQ3VzdG9tUHJveHlUb0pTT2JqZWN0
LAorICAgIEV4cG9zZWQ9V29ya2xldCwKKyAgICBFbmFibGVkQXRSdW50aW1lPUNTU1BhaW50aW5n
QVBJLAorICAgIENvbmRpdGlvbmFsPUNTU19QQUlOVElOR19BUEksCisgICAgSlNMZWdhY3lQYXJl
bnQ9SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLAorICAgIEltcGxpY2l0VGhpcywKKyAgICBJc0lt
bXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdCwKKyAgICBJc0ltbXV0YWJsZVByb3RvdHlwZUV4
b3RpY09iamVjdE9uUHJvdG90eXBlLAorICAgIEdsb2JhbD1Xb3JrbGV0LAorXSBpbnRlcmZhY2Ug
V29ya2xldEdsb2JhbFNjb3BlIDogRXZlbnRUYXJnZXQgeworfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
NjE0MjQxOTJkM2Y0OWRhMjY3NWIwYTViNjIwYjI4M2VkZWU4YzY5Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCkBA
IC0wLDAgKzEsMTg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldvcmtsZXRTY3JpcHRDb250cm9s
bGVyLmgiCisKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKworI2luY2x1ZGUgIkpTRE9N
QmluZGluZy5oIgorI2luY2x1ZGUgIkpTRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJKU0V4ZWNT
dGF0ZS5oIgorI2luY2x1ZGUgIkpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRl
ICJTY3JpcHRTb3VyY2VDb2RlLmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgor
I2luY2x1ZGUgIldvcmtsZXRDb25zb2xlQ2xpZW50LmgiCisKKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9Db21wbGV0aW9uLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRXhjZXB0aW9uLmg+
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRXhjZXB0aW9uSGVscGVycy5oPgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0dDQWN0aXZpdHlDYWxsYmFjay5oPgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTTG9jay5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb21pc2VEZWZlcnJl
ZFRpbWVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nSW5saW5lcy5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSlNDOworCitXb3JrbGV0U2NyaXB0
Q29udHJvbGxlcjo6V29ya2xldFNjcmlwdENvbnRyb2xsZXIoV29ya2xldEdsb2JhbFNjb3BlKiB3
b3JrbGV0R2xvYmFsU2NvcGUpCisgICAgOiBtX3ZtKFZNOjpjcmVhdGUoKSkKKyAgICAsIG1fd29y
a2xldEdsb2JhbFNjb3BlKHdvcmtsZXRHbG9iYWxTY29wZSkKKyAgICAsIG1fd29ya2xldEdsb2Jh
bFNjb3BlV3JhcHBlcigqbV92bSkKK3sKKyAgICBtX3ZtLT5oZWFwLmFjcXVpcmVBY2Nlc3MoKTsg
Ly8gSXQncyBub3QgY2xlYXIgdGhhdCB3ZSBoYXZlIGdvb2QgZGlzY2lwbGluZSBmb3IgaGVhcCBh
Y2Nlc3MsIHNvIHR1cm4gaXQgb24gcGVybWFuZW50bHkuCisgICAgSlNWTUNsaWVudERhdGE6Omlu
aXROb3JtYWxXb3JsZChtX3ZtLmdldCgpKTsKK30KKworV29ya2xldFNjcmlwdENvbnRyb2xsZXI6
On5Xb3JrbGV0U2NyaXB0Q29udHJvbGxlcigpCit7CisgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0o
KSk7CisgICAgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLmNsZWFyKCk7CisgICAgbV92bSA9
IG51bGxwdHI7CisgICAgaWYgKG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcikgeworICAgICAg
ICBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPmNsZWFyRE9NR3VhcmRlZE9iamVjdHMoKTsK
KyAgICAgICAgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5zZXRDb25zb2xlQ2xpZW50KG51
bGxwdHIpOworICAgICAgICBtX2NvbnNvbGVDbGllbnQgPSBudWxscHRyOworICAgIH0KK30KKwor
dm9pZCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6Zm9yYmlkRXhlY3V0aW9uKCkKK3sKKyAgICBB
U1NFUlQobV93b3JrbGV0R2xvYmFsU2NvcGUtPmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBtX2V4
ZWN1dGlvbkZvcmJpZGRlbiA9IHRydWU7Cit9CisKK2Jvb2wgV29ya2xldFNjcmlwdENvbnRyb2xs
ZXI6OmlzRXhlY3V0aW9uRm9yYmlkZGVuKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV93b3JrbGV0
R2xvYmFsU2NvcGUtPmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICByZXR1cm4gbV9leGVjdXRpb25G
b3JiaWRkZW47Cit9CisKK3ZvaWQgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmRpc2FibGVFdmFs
KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQoreworICAgIGluaXRTY3JpcHRJZk5lZWRlZCgp
OworICAgIEpTTG9ja0hvbGRlciBsb2NrIHsgdm0oKSB9OworCisgICAgbV93b3JrbGV0R2xvYmFs
U2NvcGVXcmFwcGVyLT5zZXRFdmFsRW5hYmxlZChmYWxzZSwgZXJyb3JNZXNzYWdlKTsKK30KKwor
dm9pZCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6ZGlzYWJsZVdlYkFzc2VtYmx5KGNvbnN0IFN0
cmluZyYgZXJyb3JNZXNzYWdlKQoreworICAgIGluaXRTY3JpcHRJZk5lZWRlZCgpOworICAgIEpT
TG9ja0hvbGRlciBsb2NrIHsgdm0oKSB9OworCisgICAgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFw
cGVyLT5zZXRXZWJBc3NlbWJseUVuYWJsZWQoZmFsc2UsIGVycm9yTWVzc2FnZSk7Cit9CisKKwor
dGVtcGxhdGU8dHlwZW5hbWUgSlNHbG9iYWxTY29wZVByb3RvdHlwZSwgdHlwZW5hbWUgSlNHbG9i
YWxTY29wZSwgdHlwZW5hbWUgR2xvYmFsU2NvcGU+Cit2b2lkIFdvcmtsZXRTY3JpcHRDb250cm9s
bGVyOjppbml0U2NyaXB0V2l0aFN1YmNsYXNzKCkKK3sKKyAgICBBU1NFUlQoIW1fd29ya2xldEds
b2JhbFNjb3BlV3JhcHBlcik7CisKKyAgICBKU0xvY2tIb2xkZXIgbG9jayB7IHZtKCkgfTsKKwor
ICAgIC8vIEV4cGxpY2l0bHkgcHJvdGVjdCB0aGUgZ2xvYmFsIG9iamVjdCdzIHByb3RvdHlwZSBz
byBpdCBpc24ndCBjb2xsZWN0ZWQKKyAgICAvLyB3aGVuIHdlIGFsbG9jYXRlIHRoZSBnbG9iYWwg
b2JqZWN0LiAoT25jZSB0aGUgZ2xvYmFsIG9iamVjdCBpcyBmdWxseQorICAgIC8vIGNvbnN0cnVj
dGVkLCBpdCBjYW4gbWFyayBpdHMgb3duIHByb3RvdHlwZS4pCisgICAgU3RydWN0dXJlKiBjb250
ZXh0UHJvdG90eXBlU3RydWN0dXJlID0gSlNHbG9iYWxTY29wZVByb3RvdHlwZTo6Y3JlYXRlU3Ry
dWN0dXJlKCptX3ZtLCBudWxscHRyLCBqc051bGwoKSk7CisgICAgYXV0byogY29udGV4dFByb3Rv
dHlwZSA9IEpTR2xvYmFsU2NvcGVQcm90b3R5cGU6OmNyZWF0ZSgqbV92bSwgbnVsbHB0ciwgY29u
dGV4dFByb3RvdHlwZVN0cnVjdHVyZSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU0ds
b2JhbFNjb3BlOjpjcmVhdGVTdHJ1Y3R1cmUoKm1fdm0sIG51bGxwdHIsIGNvbnRleHRQcm90b3R5
cGUpOworICAgIGF1dG8qIHByb3h5U3RydWN0dXJlID0gSlNQcm94eTo6Y3JlYXRlU3RydWN0dXJl
KCptX3ZtLCBudWxscHRyLCBqc051bGwoKSwgUHVyZUZvcndhcmRpbmdQcm94eVR5cGUpOworICAg
IGF1dG8qIHByb3h5ID0gSlNQcm94eTo6Y3JlYXRlKCptX3ZtLCBwcm94eVN0cnVjdHVyZSk7CisK
KyAgICBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIuc2V0KCptX3ZtLCBKU0dsb2JhbFNjb3Bl
OjpjcmVhdGUoKm1fdm0sIHN0cnVjdHVyZSwgc3RhdGljX2Nhc3Q8R2xvYmFsU2NvcGUmPigqbV93
b3JrbGV0R2xvYmFsU2NvcGUpLCBwcm94eSkpOworICAgIGNvbnRleHRQcm90b3R5cGVTdHJ1Y3R1
cmUtPnNldEdsb2JhbE9iamVjdCgqbV92bSwgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLmdl
dCgpKTsKKyAgICBBU1NFUlQoc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtsZXRH
bG9iYWxTY29wZVdyYXBwZXIpOworICAgIEFTU0VSVChtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBw
ZXItPnN0cnVjdHVyZSgqbV92bSktPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2xldEdsb2JhbFNj
b3BlV3JhcHBlcik7CisgICAgY29udGV4dFByb3RvdHlwZS0+c3RydWN0dXJlKCptX3ZtKS0+c2V0
R2xvYmFsT2JqZWN0KCptX3ZtLCBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpOwor
ICAgIGNvbnRleHRQcm90b3R5cGUtPnN0cnVjdHVyZSgqbV92bSktPnNldFByb3RvdHlwZVdpdGhv
dXRUcmFuc2l0aW9uKCptX3ZtLCBKU0dsb2JhbFNjb3BlOjpwcm90b3R5cGUoKm1fdm0sICptX3dv
cmtsZXRHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpKTsKKworICAgIHByb3h5LT5zZXRUYXJnZXQo
Km1fdm0sIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7CisgICAgcHJveHktPnN0
cnVjdHVyZSgqbV92bSktPnNldEdsb2JhbE9iamVjdCgqbV92bSwgbV93b3JrbGV0R2xvYmFsU2Nv
cGVXcmFwcGVyLmdldCgpKTsKKworICAgIEFTU0VSVChtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBw
ZXItPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcik7CisgICAg
QVNTRVJUKGFzT2JqZWN0KG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+Z2V0UHJvdG90eXBl
RGlyZWN0KCptX3ZtKSktPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2xldEdsb2JhbFNjb3BlV3Jh
cHBlcik7CisKKyAgICBtX2NvbnNvbGVDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtsZXRD
b25zb2xlQ2xpZW50PigqbV93b3JrbGV0R2xvYmFsU2NvcGUpOworICAgIG1fd29ya2xldEdsb2Jh
bFNjb3BlV3JhcHBlci0+c2V0Q29uc29sZUNsaWVudChtX2NvbnNvbGVDbGllbnQuZ2V0KCkpOwor
fQorCit2b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KCkKK3sKKyAgICBp
ZiAobV93b3JrbGV0R2xvYmFsU2NvcGUtPmlzUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoKSkgewor
ICAgICAgICBpbml0U2NyaXB0V2l0aFN1YmNsYXNzPEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVQ
cm90b3R5cGUsIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUsIFBhaW50V29ya2xldEdsb2JhbFNj
b3BlPigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Cit9CisKK3ZvaWQgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNj
cmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIFN0cmluZyogcmV0dXJuZWRFeGNlcHRpb25NZXNz
YWdlKQoreworICAgIGlmIChpc0V4ZWN1dGlvbkZvcmJpZGRlbigpKQorICAgICAgICByZXR1cm47
CisKKyAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gZXhjZXB0aW9uOworICAgIGV2YWx1YXRl
KHNvdXJjZUNvZGUsIGV4Y2VwdGlvbiwgcmV0dXJuZWRFeGNlcHRpb25NZXNzYWdlKTsKKyAgICBp
ZiAoZXhjZXB0aW9uKSB7CisgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKCkpOworICAgICAg
ICByZXBvcnRFeGNlcHRpb24obV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxFeGVj
KCksIGV4Y2VwdGlvbik7CisgICAgfQorfQorCisvLyBJbXBvcnRhbnQ6IFRoZSBjYWxsZXIgb2Yg
dGhpcyBmdW5jdGlvbiBtdXN0IHZlcmlmeSB0aGF0IHRoZSByZXR1cm5lZCBleGNlcHRpb24gbWVz
c2FnZSBkb2VzIG5vdCB2aW9sYXRlIENPUlMgaWYgaXQgaXMgZ29pbmcgdG8gYmUgcGFzc2VkIGJh
Y2sgdG8gSlMuCit2b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBT
Y3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJl
dHVybmVkRXhjZXB0aW9uLCBTdHJpbmcqIHJldHVybmVkRXhjZXB0aW9uTWVzc2FnZSkKK3sKKyAg
ICBpZiAoaXNFeGVjdXRpb25Gb3JiaWRkZW4oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW5p
dFNjcmlwdElmTmVlZGVkKCk7CisKKyAgICBhdXRvJiBzdGF0ZSA9ICptX3dvcmtsZXRHbG9iYWxT
Y29wZVdyYXBwZXItPmdsb2JhbEV4ZWMoKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAg
IEpTTG9ja0hvbGRlciBsb2NrIHsgdm0gfTsKKworICAgIEpTRXhlY1N0YXRlOjpwcm9maWxlZEV2
YWx1YXRlKCZzdGF0ZSwgSlNDOjpQcm9maWxpbmdSZWFzb246Ok90aGVyLCBzb3VyY2VDb2RlLmpz
U291cmNlQ29kZSgpLCBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbFRoaXMoKSwg
cmV0dXJuZWRFeGNlcHRpb24pOworCisgICAgaWYgKHJldHVybmVkRXhjZXB0aW9uICYmIHJldHVy
bmVkRXhjZXB0aW9uTWVzc2FnZSkgeworICAgICAgICAvLyBUaGlzIEZJWE1FIGlzIGZyb20gV29y
a2VyU2NyaXB0Q29udHJvbGxlci4KKyAgICAgICAgLy8gRklYTUU6IEl0J3Mgbm90IGdyZWF0IHRo
YXQgdGhpcyBjYW4gcnVuIGFyYml0cmFyeSBjb2RlIHRvIHN0cmluZy1pZnkgdGhlIHZhbHVlIG9m
IHRoZSBleGNlcHRpb24uCisgICAgICAgIC8vIERvIHdlIG5lZWQgdG8gZG8gYW55dGhpbmcgdG8g
aGFuZGxlIHRoYXQgcHJvcGVybHksIGlmIGl0LCBzYXksIHJhaXNlcyBhbm90aGVyIGV4Y2VwdGlv
bj8KKyAgICAgICAgKnJldHVybmVkRXhjZXB0aW9uTWVzc2FnZSA9IHJldHVybmVkRXhjZXB0aW9u
LT52YWx1ZSgpLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CisgICAgfQorfQorCit2b2lkIFdvcmtsZXRT
Y3JpcHRDb250cm9sbGVyOjpzZXRFeGNlcHRpb24oSlNDOjpFeGNlcHRpb24qIGV4Y2VwdGlvbikK
K3sKKyAgICBhdXRvKiBleGVjID0gbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxF
eGVjKCk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGV4Y2Vw
dGlvbik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YmE1NzhiYmY5YWIzMjFjOTcwMTQ0ZWI4ZmNlMzhiZWU1MzY1ZTg3ZgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgKQEAg
LTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisKKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9EZWJ1Z2dlci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTUnVuTG9vcFRpbWVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nLmg+Cisj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUg
PHd0Zi9OYWtlZFB0ci5oPgorCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIFZNOworfQorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEpTV29ya2xldEdsb2JhbFNjb3BlOworY2xhc3MgU2Ny
aXB0U291cmNlQ29kZTsKK2NsYXNzIFdvcmtsZXRDb25zb2xlQ2xpZW50OworY2xhc3MgV29ya2xl
dEdsb2JhbFNjb3BlOworY2xhc3MgV29ya2xldENvbnNvbGVDbGllbnQ7CisKK2NsYXNzIFdvcmts
ZXRTY3JpcHRDb250cm9sbGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXb3JrbGV0U2Ny
aXB0Q29udHJvbGxlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFdv
cmtsZXRTY3JpcHRDb250cm9sbGVyKFdvcmtsZXRHbG9iYWxTY29wZSopOworICAgIH5Xb3JrbGV0
U2NyaXB0Q29udHJvbGxlcigpOworCisgICAgSlNXb3JrbGV0R2xvYmFsU2NvcGUqIHdvcmtsZXRH
bG9iYWxTY29wZVdyYXBwZXIoKQorICAgIHsKKyAgICAgICAgaW5pdFNjcmlwdElmTmVlZGVkKCk7
CisgICAgICAgIHJldHVybiBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCk7CisgICAg
fQorCisgICAgdm9pZCBmb3JiaWRFeGVjdXRpb24oKTsKKyAgICBib29sIGlzRXhlY3V0aW9uRm9y
YmlkZGVuKCkgY29uc3Q7CisKKyAgICB2b2lkIGRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJy
b3JNZXNzYWdlKTsKKyAgICB2b2lkIGRpc2FibGVXZWJBc3NlbWJseShjb25zdCBTdHJpbmcmIGVy
cm9yTWVzc2FnZSk7CisKKyAgICB2b2lkIGV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUm
LCBTdHJpbmcqIHJldHVybmVkRXhjZXB0aW9uTWVzc2FnZSA9IG51bGxwdHIpOworICAgIHZvaWQg
ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9u
PiYgcmV0dXJuZWRFeGNlcHRpb24sIFN0cmluZyogcmV0dXJuZWRFeGNlcHRpb25NZXNzYWdlID0g
bnVsbHB0cik7CisKKyAgICB2b2lkIHNldEV4Y2VwdGlvbihKU0M6OkV4Y2VwdGlvbiopOworCisg
ICAgSlNDOjpWTSYgdm0oKSB7IHJldHVybiAqbV92bTsgfQorCitwcml2YXRlOgorICAgIHZvaWQg
aW5pdFNjcmlwdElmTmVlZGVkKCkKKyAgICB7CisgICAgICAgIGlmICghbV93b3JrbGV0R2xvYmFs
U2NvcGVXcmFwcGVyKQorICAgICAgICAgICAgaW5pdFNjcmlwdCgpOworICAgIH0KKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGluaXRTY3JpcHQoKTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEpT
R2xvYmFsU2NvcGVQcm90b3R5cGUsIHR5cGVuYW1lIEpTR2xvYmFsU2NvcGUsIHR5cGVuYW1lIEds
b2JhbFNjb3BlPgorICAgIHZvaWQgaW5pdFNjcmlwdFdpdGhTdWJjbGFzcygpOworCisgICAgYm9v
bCBtX2V4ZWN1dGlvbkZvcmJpZGRlbiB7IGZhbHNlIH07CisgICAgUmVmUHRyPEpTQzo6Vk0+IG1f
dm07CisgICAgV29ya2xldEdsb2JhbFNjb3BlKiBtX3dvcmtsZXRHbG9iYWxTY29wZTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8V29ya2xldENvbnNvbGVDbGllbnQ+IG1fY29uc29sZUNsaWVudDsKKyAg
ICBKU0M6OlN0cm9uZzxKU1dvcmtsZXRHbG9iYWxTY29wZT4gbV93b3JrbGV0R2xvYmFsU2NvcGVX
cmFwcGVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorI2VuZGlmCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMmNhM2VkZTQ1ZWM3NmUy
YjkzNmQzNTliMjRmNGUxMzgwZDNkOGJmOC4uZTdhMWU5NWE1Zjg2M2ZiMzRmMjVjOTZjZjVlMzk5
ZDY1MDg2ZTE3MiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE4LTEwLTI5ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rp
bl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgbmV3IGdsb2JhbCBvYmplY3QgYW5k
IHByZWxpbWluYXJ5IFdvcmtsZXRzIHN1cHBvcnQgZm9yIENTUyBwYWludGluZyBhcGkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDk3OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9iaW5kaW5ncy9tYWluLnB5OgorICAgICAgICAoQmluZGluZ3NUZXN0cy5nZW5lcmF0ZV9z
dXBwbGVtZW50YWxfZGVwZW5kZW5jeSk6CisgICAgICAgIChCaW5kaW5nc1Rlc3RzLm1haW4pOgor
CiAyMDE4LTEwLTI2ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjM3NDc5IGFuZCByMjM3NDg0LgpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iaW5kaW5ncy9tYWluLnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9iaW5kaW5ncy9tYWluLnB5CmluZGV4IDA0Y2JkODUwNTY3M2JkNWM2
ZjJlOWQ3MDUyMDgxZjEyZDY2YzQ0ZTIuLjIwOTM3YmVkNmQ5ZDdiOGE2MjM4MDM4OGI3ZWVjNWVi
YWQ0YjQ5MzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmluZGluZ3MvbWFp
bi5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2JpbmRpbmdzL21haW4ucHkKQEAgLTcw
LDcgKzcwLDcgQEAgY2xhc3MgQmluZGluZ3NUZXN0czoKICAgICAgICAgICAgIGV4aXRfY29kZSA9
IGUuZXhpdF9jb2RlCiAgICAgICAgIHJldHVybiBleGl0X2NvZGUKIAotICAgIGRlZiBnZW5lcmF0
ZV9zdXBwbGVtZW50YWxfZGVwZW5kZW5jeShzZWxmLCBpbnB1dF9kaXJlY3RvcnksIHN1cHBsZW1l
bnRhbF9kZXBlbmRlbmN5X2ZpbGUsIHdpbmRvd19jb25zdHJ1Y3RvcnNfZmlsZSwgd29ya2VyZ2xv
YmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGUsIGRlZGljYXRlZHdvcmtlcmdsb2JhbHNjb3BlX2Nv
bnN0cnVjdG9yc19maWxlLCBzZXJ2aWNld29ya2VyZ2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2Zp
bGUpOgorICAgIGRlZiBnZW5lcmF0ZV9zdXBwbGVtZW50YWxfZGVwZW5kZW5jeShzZWxmLCBpbnB1
dF9kaXJlY3RvcnksIHN1cHBsZW1lbnRhbF9kZXBlbmRlbmN5X2ZpbGUsIHdpbmRvd19jb25zdHJ1
Y3RvcnNfZmlsZSwgd29ya2VyZ2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGUsIGRlZGljYXRl
ZHdvcmtlcmdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlLCBzZXJ2aWNld29ya2VyZ2xvYmFs
c2NvcGVfY29uc3RydWN0b3JzX2ZpbGUsIHdvcmtsZXRnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNf
ZmlsZSwgcGFpbnR3b3JrbGV0Z2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGUpOgogICAgICAg
ICBpZGxfZmlsZXNfbGlzdCA9IHRlbXBmaWxlLm1rc3RlbXAoKQogICAgICAgICBmb3IgaW5wdXRf
ZmlsZSBpbiBvcy5saXN0ZGlyKGlucHV0X2RpcmVjdG9yeSk6CiAgICAgICAgICAgICAobmFtZSwg
ZXh0ZW5zaW9uKSA9IG9zLnBhdGguc3BsaXRleHQoaW5wdXRfZmlsZSkKQEAgLTg4LDcgKzg4LDkg
QEAgY2xhc3MgQmluZGluZ3NUZXN0czoKICAgICAgICAgICAgICAgICctLXdpbmRvd0NvbnN0cnVj
dG9yc0ZpbGUnLCB3aW5kb3dfY29uc3RydWN0b3JzX2ZpbGUsCiAgICAgICAgICAgICAgICAnLS13
b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUnLCB3b3JrZXJnbG9iYWxzY29wZV9jb25z
dHJ1Y3RvcnNfZmlsZSwKICAgICAgICAgICAgICAgICctLWRlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlQ29uc3RydWN0b3JzRmlsZScsIGRlZGljYXRlZHdvcmtlcmdsb2JhbHNjb3BlX2NvbnN0cnVj
dG9yc19maWxlLAotICAgICAgICAgICAgICAgJy0tc2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29u
c3RydWN0b3JzRmlsZScsIHNlcnZpY2V3b3JrZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmls
ZV0KKyAgICAgICAgICAgICAgICctLXNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9y
c0ZpbGUnLCBzZXJ2aWNld29ya2VyZ2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGUsCisgICAg
ICAgICAgICAgICAnLS13b3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlJywgd29ya2xl
dGdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlLAorICAgICAgICAgICAgICAgJy0tcGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlJywgcGFpbnR3b3JrbGV0Z2xvYmFsc2Nv
cGVfY29uc3RydWN0b3JzX2ZpbGVdCiAKICAgICAgICAgZXhpdF9jb2RlID0gMAogICAgICAgICB0
cnk6CkBAIC0xODUsMTMgKzE4NywxNyBAQCBjbGFzcyBCaW5kaW5nc1Rlc3RzOgogICAgICAgICB3
b3JrZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSA9IHRlbXBmaWxlLm1rc3RlbXAoKQog
ICAgICAgICBkZWRpY2F0ZWR3b3JrZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSA9IHRl
bXBmaWxlLm1rc3RlbXAoKQogICAgICAgICBzZXJ2aWNld29ya2VyZ2xvYmFsc2NvcGVfY29uc3Ry
dWN0b3JzX2ZpbGUgPSB0ZW1wZmlsZS5ta3N0ZW1wKCkKLSAgICAgICAgaWYgc2VsZi5nZW5lcmF0
ZV9zdXBwbGVtZW50YWxfZGVwZW5kZW5jeShpbnB1dF9kaXJlY3RvcnksIHN1cHBsZW1lbnRhbF9k
ZXBlbmRlbmN5X2ZpbGVbMV0sIHdpbmRvd19jb25zdHJ1Y3RvcnNfZmlsZVsxXSwgd29ya2VyZ2xv
YmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGVbMV0sIGRlZGljYXRlZHdvcmtlcmdsb2JhbHNjb3Bl
X2NvbnN0cnVjdG9yc19maWxlWzFdLCBzZXJ2aWNld29ya2VyZ2xvYmFsc2NvcGVfY29uc3RydWN0
b3JzX2ZpbGVbMV0pOgorICAgICAgICB3b3JrbGV0Z2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2Zp
bGUgPSB0ZW1wZmlsZS5ta3N0ZW1wKCkKKyAgICAgICAgcGFpbnR3b3JrbGV0Z2xvYmFsc2NvcGVf
Y29uc3RydWN0b3JzX2ZpbGUgPSB0ZW1wZmlsZS5ta3N0ZW1wKCkKKyAgICAgICAgaWYgc2VsZi5n
ZW5lcmF0ZV9zdXBwbGVtZW50YWxfZGVwZW5kZW5jeShpbnB1dF9kaXJlY3RvcnksIHN1cHBsZW1l
bnRhbF9kZXBlbmRlbmN5X2ZpbGVbMV0sIHdpbmRvd19jb25zdHJ1Y3RvcnNfZmlsZVsxXSwgd29y
a2VyZ2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGVbMV0sIGRlZGljYXRlZHdvcmtlcmdsb2Jh
bHNjb3BlX2NvbnN0cnVjdG9yc19maWxlWzFdLCBzZXJ2aWNld29ya2VyZ2xvYmFsc2NvcGVfY29u
c3RydWN0b3JzX2ZpbGVbMV0sIHdvcmtsZXRnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZVsx
XSwgcGFpbnR3b3JrbGV0Z2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGVbMV0pOgogICAgICAg
ICAgICAgcHJpbnQoJ0ZhaWxlZCB0byBnZW5lcmF0ZSBhIHN1cHBsZW1lbnRhbCBkZXBlbmRlbmN5
IGZpbGUuJykKICAgICAgICAgICAgIHNlbGYuY2xvc2VfYW5kX3JlbW92ZShzdXBwbGVtZW50YWxf
ZGVwZW5kZW5jeV9maWxlKQogICAgICAgICAgICAgc2VsZi5jbG9zZV9hbmRfcmVtb3ZlKHdpbmRv
d19jb25zdHJ1Y3RvcnNfZmlsZSkKICAgICAgICAgICAgIHNlbGYuY2xvc2VfYW5kX3JlbW92ZSh3
b3JrZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSkKICAgICAgICAgICAgIHNlbGYuY2xv
c2VfYW5kX3JlbW92ZShkZWRpY2F0ZWR3b3JrZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmls
ZSkKICAgICAgICAgICAgIHNlbGYuY2xvc2VfYW5kX3JlbW92ZShzZXJ2aWNld29ya2VyZ2xvYmFs
c2NvcGVfY29uc3RydWN0b3JzX2ZpbGUpCisgICAgICAgICAgICBzZWxmLmNsb3NlX2FuZF9yZW1v
dmUod29ya2xldGdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlKQorICAgICAgICAgICAgc2Vs
Zi5jbG9zZV9hbmRfcmVtb3ZlKHBhaW50d29ya2xldGdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19m
aWxlKQogICAgICAgICAgICAgcmV0dXJuIC0xCiAKICAgICAgICAgZm9yIGdlbmVyYXRvciBpbiBz
ZWxmLmdlbmVyYXRvcnM6CkBAIC0yMDUsNiArMjExLDggQEAgY2xhc3MgQmluZGluZ3NUZXN0czoK
ICAgICAgICAgc2VsZi5jbG9zZV9hbmRfcmVtb3ZlKHdvcmtlcmdsb2JhbHNjb3BlX2NvbnN0cnVj
dG9yc19maWxlKQogICAgICAgICBzZWxmLmNsb3NlX2FuZF9yZW1vdmUoZGVkaWNhdGVkd29ya2Vy
Z2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGUpCiAgICAgICAgIHNlbGYuY2xvc2VfYW5kX3Jl
bW92ZShzZXJ2aWNld29ya2VyZ2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGUpCisgICAgICAg
IHNlbGYuY2xvc2VfYW5kX3JlbW92ZSh3b3JrbGV0Z2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2Zp
bGUpCisgICAgICAgIHNlbGYuY2xvc2VfYW5kX3JlbW92ZShwYWludHdvcmtsZXRnbG9iYWxzY29w
ZV9jb25zdHJ1Y3RvcnNfZmlsZSkKIAogICAgICAgICBpZiBzZWxmLmpzb25fZmlsZV9uYW1lOgog
ICAgICAgICAgICAganNvbl9kYXRhID0gewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDFiNTgwZDk0OTAxMWY0NjQxM2JkYzYz
Zjg0ODk0NzYyMDcyNDA1NGMuLjlkZDJjZmQxOGYxYjk3YzU4MGZmMjA2NmRmNWFlZDFmMzY4ZDU5
YmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxOC0xMC0yOSAgSnVzdGluIE1pY2hhdWQgIDxq
dXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIG5ldyBnbG9iYWwgb2JqZWN0
IGFuZCBwcmVsaW1pbmFyeSBXb3JrbGV0cyBzdXBwb3J0IGZvciBDU1MgcGFpbnRpbmcgYXBpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA5NzkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcg
dGVzdCBoYXJuZXNzIGZvciB3b3JrbGV0IHRlc3RzLCBzaW5jZSB0aGV5IGRvIG5vdCBoYXZlIGFj
Y2VzcyB0byB0aGUgZG9tLgorCisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L2Jhc2lj
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvYmFzaWMuaHRt
bDoKKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVnaXN0ZXJQYWludEJpbmRpbmdz
LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzLWN1c3RvbS1wYWludC9y
ZWdpc3RlclBhaW50QmluZGluZ3MtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGZh
c3QvY3NzLWN1c3RvbS1wYWludC9yZWdpc3RlclBhaW50QmluZGluZ3MuaHRtbDoKKyAgICAgICAg
KiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLXdvcmtsZXQuanM6
IEFkZGVkLgorICAgICAgICAoZm9ybWF0X3ZhbHVlKToKKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0
b20tcGFpbnQvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzeW5j
LmltcG9ydFdvcmtsZXQpOgorICAgICAgICAqIGZhc3QvY3NzLWN1c3RvbS1wYWludC93b3JrbGV0
LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzLWN1c3RvbS1wYWludC93
b3JrbGV0Lmh0bWw6IEFkZGVkLgorCiAyMDE4LTEwLTI2ICBDb21taXQgUXVldWUgIDxjb21taXQt
cXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjM3
NDc5IGFuZCByMjM3NDg0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9t
LXBhaW50L2Jhc2ljLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1w
YWludC9iYXNpYy1leHBlY3RlZC50eHQKaW5kZXggZWFhMTc0M2U0Mzk5MDBiZmQ3M2IwYzE5MTZl
M2QyZWNlZTZkNGI1Ni4uMDIwNTlmOTgzNWUyMzZhYTVlOTkyOTU1MTQ5MTczYjVkNzUyNTVhOSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2Jhc2ljLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYmFzaWMtZXhw
ZWN0ZWQudHh0CkBAIC0xLDEwICsxLDMgQEAKIAotUEFTUyB0ZXN0IHRoYXQgcmVnaXN0ZXJQYWlu
dCBydW5zIAotUEFTUyB0ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBydW5zIHdpdGhvdXQgaW5wdXRQ
cm9wZXJ0aWVzIAotUEFTUyB0ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBydW5zIHdpdGggaW5wdXRB
cmd1bWVudHMgCi1QQVNTIHRlc3QgdGhhdCByZWdpc3RlclBhaW50IHJ1bnMgd2l0aCBjb250ZXh0
T3B0aW9ucyAKLVBBU1MgdGVzdCB0aGF0IHJlZ2lzdGVyUGFpbnQgcnVucyB3aXRoIHByZWRlZmlu
ZWQgY2xhc3MgCi1QQVNTIHRlc3QgdGhhdCByZWdpc3RlclBhaW50IGFjY2VwdHMgb25seSBhIHN0
cmluZyBhbmQgYSBjbGFzcyBjb25zdHJ1Y3RvciAKIFBBU1MgdGVzdCB0aGF0IHRlc3QgZGl2IGhh
cyBwYWludCgpIHZhbHVlIAotUEFTUyB0ZXN0IHRoYXQgdGVzdCBkaXYgcGFpbnQgY2FsbGJhY2sg
Z2V0cyBjYWxsZWQgCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1w
YWludC9iYXNpYy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2Jhc2lj
Lmh0bWwKaW5kZXggM2Y0ZGMzYTJkMDJlZjIxYTJlOTcyZDRjOGI0ZjJmYWU4YzM4OTQ1OC4uNGM4
YjBjZjUyZTE2ZDVjOGYwMjg3OGUyY2Y3NTc5NTM0MGUyOGY5NiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2Jhc2ljLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MtY3VzdG9tLXBhaW50L2Jhc2ljLmh0bWwKQEAgLTE2LDcwICsxNiw3IEBACiA8ZGl2
IGlkPSJwYWludCI+PC9kaXY+CiAKIDxzY3JpcHQ+Ci10ZXN0KGZ1bmN0aW9uKCkgewotICBDU1Mu
cGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgndGVzdDEnLCBjbGFzcyB7Ci0g
ICAgc3RhdGljIGdldCBpbnB1dFByb3BlcnRpZXMoKSB7IHJldHVybiBbIi0tdGVzdCJdOyB9Ci0g
ICAgcGFpbnQoKSB7IH0KLSAgfSk7Ci19LCAndGVzdCB0aGF0IHJlZ2lzdGVyUGFpbnQgcnVucycp
OwotCi10ZXN0KGZ1bmN0aW9uKCkgewotICBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVn
aXN0ZXJQYWludCgndGVzdDInLCBjbGFzcyB7Ci0gICAgcGFpbnQoKSB7IH0KLSAgfSk7Ci19LCAn
dGVzdCB0aGF0IHJlZ2lzdGVyUGFpbnQgcnVucyB3aXRob3V0IGlucHV0UHJvcGVydGllcycpOwot
Ci10ZXN0KGZ1bmN0aW9uKCkgewotICBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0
ZXJQYWludCgndGVzdDMnLCBjbGFzcyB7Ci0gICAgc3RhdGljIGdldCBpbnB1dEFyZ3VtZW50cygp
IHsgcmV0dXJuIFsiPGxlbmd0aD4iXTsgfQotICAgIHBhaW50KCkgeyB9Ci0gIH0pOwotfSwgJ3Rl
c3QgdGhhdCByZWdpc3RlclBhaW50IHJ1bnMgd2l0aCBpbnB1dEFyZ3VtZW50cycpOwotCi10ZXN0
KGZ1bmN0aW9uKCkgewotICBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWlu
dCgndGVzdDQnLCBjbGFzcyB7Ci0gICAgc3RhdGljIGdldCBjb250ZXh0T3B0aW9ucygpIHsgcmV0
dXJuIHsgYWxwaGE6IHRydWUgfTsgfQotICAgIHBhaW50KCkgeyB9Ci0gIH0pOwotfSwgJ3Rlc3Qg
dGhhdCByZWdpc3RlclBhaW50IHJ1bnMgd2l0aCBjb250ZXh0T3B0aW9ucycpOwotCi1jbGFzcyBN
eVBhaW50IHsKLSAgcGFpbnQoKSB7IH0KLX0KLQotdGVzdChmdW5jdGlvbigpIHsKLSAgQ1NTLnBh
aW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3Q1JywgTXlQYWludCk7Ci0g
IGFzc2VydF90aHJvd3MoeyduYW1lJzogJ0ludmFsaWRNb2RpZmljYXRpb25FcnJvcid9LCAoKSA9
PiBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgndGVzdDUnLCBNeVBh
aW50KSk7Ci0gIENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCd0ZXN0
NicsIGNsYXNzIGV4dGVuZHMgTXlQYWludCB7IH0pOwotfSwgJ3Rlc3QgdGhhdCByZWdpc3RlclBh
aW50IHJ1bnMgd2l0aCBwcmVkZWZpbmVkIGNsYXNzJyk7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0g
IGFzc2VydF90aHJvd3MoeyduYW1lJzogJ0ludmFsaWRNb2RpZmljYXRpb25FcnJvcid9LCAoKSA9
PiBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgndGVzdDYnLCAndGVz
dCcpKTsKLSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IENTUy5wYWludFdv
cmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCd0ZXN0NycpKTsKLSAgYXNzZXJ0X3Rocm93
cyhuZXcgVHlwZUVycm9yKCksICgpID0+IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdp
c3RlclBhaW50KCd0ZXN0OCcsIFtdKSk7Ci0gIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigp
LCAoKSA9PiBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgndGVzdDkn
LCB7fSkpOwotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gQ1NTLnBhaW50
V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3QxMCcsIDUpKTsKLSAgYXNzZXJ0
X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5yZWdpc3RlclBhaW50KCcnLCA1KSk7Ci19LCAndGVzdCB0aGF0IHJlZ2lzdGVyUGFpbnQgYWNj
ZXB0cyBvbmx5IGEgc3RyaW5nIGFuZCBhIGNsYXNzIGNvbnN0cnVjdG9yJyk7Ci0KIHRlc3QoZnVu
Y3Rpb24oKSB7CiAgIGFzc2VydF9lcXVhbHMoZ2V0Q29tcHV0ZWRTdHlsZShwYWludCkuZ2V0UHJv
cGVydHlWYWx1ZSgiYmFja2dyb3VuZC1pbWFnZSIpLCAicGFpbnQobXktcGFpbnQpIik7CiB9LCAn
dGVzdCB0aGF0IHRlc3QgZGl2IGhhcyBwYWludCgpIHZhbHVlJyk7Ci0KLWxldCBwYWludF9jYWxs
ZWRfdGVzdCA9IGFzeW5jX3Rlc3QoJ3Rlc3QgdGhhdCB0ZXN0IGRpdiBwYWludCBjYWxsYmFjayBn
ZXRzIGNhbGxlZCcpOwotcGFpbnRfY2FsbGVkX3Rlc3Quc3RlcChmdW5jdGlvbigpIHsKLSAgQ1NT
LnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ215LXBhaW50JywgY2xhc3Mg
ewotICAgIHBhaW50KGN0eCwgZ2VvbSwgcHJvcGVydGllcykgewotICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCA2OyBpKyspewotICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDY7IGorKyl7Ci0g
ICAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2IoJyArIE1hdGguZmxvb3IoMjU1IC0gNDIuNSAq
IGkpICsgJywnICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGguZmxvb3IoMjU1IC0g
NDIuNSAqIGopICsgJywwKSc7Ci0gICAgICAgICAgY3R4LmZpbGxSZWN0KGogKiAyNSwgaSAqIDI1
LCAyNSwgMjUpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBwYWludF9jYWxsZWRfdGVzdC5k
b25lKCk7Ci0gICAgfQotICB9KTsKLX0pOwotCiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9yZWdpc3RlclBhaW50QmluZGluZ3MtZXhwZWN0
ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9yZWdpc3RlclBhaW50
QmluZGluZ3MtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YjQyYjYyZGExM2VkYTgxOTYxMGIz
MTk3YjRlNDVhNTQ3M2JkY2YzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9j
c3MtY3VzdG9tLXBhaW50L3JlZ2lzdGVyUGFpbnRCaW5kaW5ncy1leHBlY3RlZC5odG1sCkBAIC0w
LDAgKzEsMTYgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhw
ZXJpbWVudGFsOkNTU1BhaW50aW5nQVBJRW5hYmxlZD10cnVlIF0gLS0+CisKKzxjYW52YXMgaWQ9
InBhaW50IiB3aWR0aD0iMTUwcHgiIGhlaWdodD0iMTUwcHgiID48L2NhbnZhcz4KKworPHNjcmlw
dCBpZD0iY29kZSI+Cit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhaW50
Jyk7Cit2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7CisKK2ZvciAodmFyIGkgPSAw
OyBpIDwgNjsgaSsrKXsKKyAgZm9yICh2YXIgaiA9IDA7IGogPCA2OyBqKyspeworICAgIGN0eC5m
aWxsU3R5bGUgPSAncmdiKCcgKyBNYXRoLmZsb29yKDI1NSAtIDQyLjUgKiBpKSArICcsJyArCisg
ICAgICAgICAgICAgICAgICAgICBNYXRoLmZsb29yKDI1NSAtIDQyLjUgKiBqKSArICcsMCknOwor
ICAgIGN0eC5maWxsUmVjdChqICogMjUsIGkgKiAyNSwgMjUsIDI1KTsKKyAgfQorfQorPC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVnaXN0
ZXJQYWludEJpbmRpbmdzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3Rv
bS1wYWludC9yZWdpc3RlclBhaW50QmluZGluZ3MtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAzMDE0MzE1MmJkODZjOWRiMGQ5NzI5MjQyMmQ1YjhhZjg4YTUxMDZm
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9yZWdpc3RlclBhaW50QmluZGluZ3MtZXhwZWN0ZWQu
dHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotCi1QQVNTIHJlZ2lzdGVyUGFpbnQg
bXVzdCBiZSBhIG1ldGhvZCAKLVBBU1MgbXVzdCBnZXQgInByb3RvdHlwZSIgcHJvcGVydHkgb2Yg
dGhlIGNvbnN0cnVjdG9yIAotUEFTUyBtdXN0IHJldGhyb3cgYW4gZXhjZXB0aW9uIHRocm93biB3
aGlsZSBnZXR0aW5nICJpbnB1dFByb3BlcnRpZXMiIHByb3BlcnR5IG9mIHRoZSBjb25zdHJ1Y3Rv
ciAKLVBBU1MgbXVzdCByZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgZ2V0dGluZyAi
cHJvdG90eXBlIiBwcm9wZXJ0eSBvZiB0aGUgY29uc3RydWN0b3IgCi1QQVNTIG11c3QgdGhyb3cg
d2hlbiAicHJvdG90eXBlIiBwcm9wZXJ0eSBvZiB0aGUgY29uc3RydWN0b3IgaXMgbm90IGFuIG9i
amVjdCAKLVBBU1MgbXVzdCBnZXQgcGFpbnQgY2FsbGJhY2sgb2YgdGhlIGNvbnN0cnVjdG9yIHBy
b3RvdHlwZSAKLVBBU1MgbXVzdCByZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgZ2V0
dGluZyBwYWludCBjYWxsYmFjayBvbiB0aGUgY29uc3RydWN0b3IgcHJvdG90eXBlIAotUEFTUyBt
dXN0IHJldGhyb3cgYW4gZXhjZXB0aW9uIHRocm93biB3aGlsZSBjb252ZXJ0aW5nIHBhaW50IGNh
bGxiYWNrIHZhbHVlIHRvIEZ1bmN0aW9uIGNhbGxiYWNrIHR5cGUgCi1QQVNTIG11c3QgcmV0aHJv
dyBhbiBleGNlcHRpb24gdGhyb3duIHdoaWxlIGNvbnZlcnRpbmcgdGhlIHZhbHVlIG9mIGlucHV0
QXJndW1lbnRzIHRvIHNlcXVlbmNlPERPTVN0cmluZz4gCi1QQVNTIG11c3QgcmV0aHJvdyBhbiBl
eGNlcHRpb24gdGhyb3duIHdoaWxlIGl0ZXJhdGluZyBvdmVyIGlucHV0QXJndW1lbnRzIHRvIHNl
cXVlbmNlPERPTVN0cmluZz4gCi1QQVNTIG11c3QgcmV0aHJvdyBhbiBleGNlcHRpb24gdGhyb3du
IHdoaWxlIHJldHJpZXZpbmcgU3ltYm9sLml0ZXJhdG9yIG9uIGlucHV0QXJndW1lbnRzIAotCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVnaXN0ZXJQYWlu
dEJpbmRpbmdzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVnaXN0
ZXJQYWludEJpbmRpbmdzLmh0bWwKaW5kZXggZGM5MDJjNGNkNjU5MTBkNWIxOGNhZTE1NGVmMzM4
Y2E5ODk4YmNkYy4uZmMxM2ViOWJhNDU2NTM5Yzk0ZjRmNjI2Mjg0NTFjZGQ4NDVmMzRiNyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3JlZ2lzdGVyUGFpbnRC
aW5kaW5ncy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9yZWdp
c3RlclBhaW50QmluZGluZ3MuaHRtbApAQCAtMiwxNyArMiw2NCBAQAogPG1ldGEgbmFtZT0iYXV0
aG9yIiB0aXRsZT0iSnVzdGluIE1pY2hhdWQiIGhyZWY9Im1haWx0bzpqdXN0aW5fbWljaGF1ZEB3
ZWJraXQub3JnIj4KIDxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0icmVnaXN0ZXJQYWludCBh
Y2Nlc3NlcyBhcmd1bWVudHMgaW4gdGhlIGNvcnJlY3Qgb3JkZXIiPgogPGxpbmsgcmVsPSJoZWxw
IiBjb250ZW50PSJodHRwczovL2RyYWZ0cy5jc3MtaG91ZGluaS5vcmcvY3NzLXBhaW50LWFwaS0x
LyI+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgotPHNjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgorCis8c3R5bGU+CisgICNwYWludCB7CisgICAgYmFja2dyb3VuZC1pbWFnZTog
cGFpbnQobXktcGFpbnQpOworICAgIHdpZHRoOiAxNTBweDsKKyAgICBoZWlnaHQ6IDE1MHB4Owor
ICB9Cis8L3N0eWxlPgorCis8ZGl2IGlkPSJwYWludCI+PC9kaXY+CisKKzxzY3JpcHQgaWQ9ImNv
ZGUiIHR5cGU9InRleHQvd29ya2xldCI+CiBjbGFzcyBNeVBhaW50IHsKICAgcGFpbnQoKSB7IH0K
IH0KIAotdGVzdChmdW5jdGlvbiAoKSB7Ci0gICAgYXNzZXJ0X3RydWUoJ3JlZ2lzdGVyUGFpbnQn
IGluIENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5fX3Byb3RvX18sICcicmVnaXN0ZXJQYWlu
dCIgZXhpc3RzIG9uIHByb3RvdHlwZScpOwotICAgIGFzc2VydF90cnVlKCdyZWdpc3RlclBhaW50
JyBpbiBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUsICcicmVnaXN0ZXJQYWludCIgZXhpc3Rz
IG9uIHdpbmRvdycpOwotfSwgJ3JlZ2lzdGVyUGFpbnQgbXVzdCBiZSBhIG1ldGhvZCcpOwordGVz
dChmdW5jdGlvbigpIHsKKyAgcmVnaXN0ZXJQYWludCgnYmFzaWMxJywgY2xhc3MgeworICAgIHN0
YXRpYyBnZXQgaW5wdXRQcm9wZXJ0aWVzKCkgeyByZXR1cm4gWyItLXRlc3QiXTsgfQorICAgIHBh
aW50KCkgeyB9CisgIH0pOworfSwgJ3Rlc3QgdGhhdCByZWdpc3RlclBhaW50IHJ1bnMnKTsKKwor
dGVzdChmdW5jdGlvbigpIHsKKyAgcmVnaXN0ZXJQYWludCgnYmFzaWMyJywgY2xhc3MgeworICAg
IHBhaW50KCkgeyB9CisgIH0pOworfSwgJ3Rlc3QgdGhhdCByZWdpc3RlclBhaW50IHJ1bnMgd2l0
aG91dCBpbnB1dFByb3BlcnRpZXMnKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgcmVnaXN0ZXJQ
YWludCgnYmFzaWMzJywgY2xhc3MgeworICAgIHN0YXRpYyBnZXQgaW5wdXRBcmd1bWVudHMoKSB7
IHJldHVybiBbIjxsZW5ndGg+Il07IH0KKyAgICBwYWludCgpIHsgfQorICB9KTsKK30sICd0ZXN0
IHRoYXQgcmVnaXN0ZXJQYWludCBydW5zIHdpdGggaW5wdXRBcmd1bWVudHMnKTsKKwordGVzdChm
dW5jdGlvbigpIHsKKyAgcmVnaXN0ZXJQYWludCgnYmFzaWM0JywgY2xhc3MgeworICAgIHN0YXRp
YyBnZXQgY29udGV4dE9wdGlvbnMoKSB7IHJldHVybiB7IGFscGhhOiB0cnVlIH07IH0KKyAgICBw
YWludCgpIHsgfQorICB9KTsKK30sICd0ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBydW5zIHdpdGgg
Y29udGV4dE9wdGlvbnMnKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgcmVnaXN0ZXJQYWludCgn
YmFzaWM1JywgTXlQYWludCk7CisgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ0ludmFsaWRNb2Rp
ZmljYXRpb25FcnJvcid9LCAoKSA9PiByZWdpc3RlclBhaW50KCdiYXNpYzUnLCBNeVBhaW50KSk7
CisgIHJlZ2lzdGVyUGFpbnQoJ2Jhc2ljNicsIGNsYXNzIGV4dGVuZHMgTXlQYWludCB7IH0pOwor
fSwgJ3Rlc3QgdGhhdCByZWdpc3RlclBhaW50IHJ1bnMgd2l0aCBwcmVkZWZpbmVkIGNsYXNzJyk7
CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ0ludmFsaWRN
b2RpZmljYXRpb25FcnJvcid9LCAoKSA9PiByZWdpc3RlclBhaW50KCdiYXNpYzYnLCAndGVzdCcp
KTsKKyAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHJlZ2lzdGVyUGFpbnQo
J2Jhc2ljOCcpKTsKKyAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHJlZ2lz
dGVyUGFpbnQoJ2Jhc2ljOScsIFtdKSk7CisgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigp
LCAoKSA9PiByZWdpc3RlclBhaW50KCdiYXNpYzEwJywge30pKTsKKyAgYXNzZXJ0X3Rocm93cyhu
ZXcgVHlwZUVycm9yKCksICgpID0+IHJlZ2lzdGVyUGFpbnQoJ2Jhc2ljMTEnLCA1KSk7CisgIGFz
c2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiByZWdpc3RlclBhaW50KCcnLCA1KSk7
Cit9LCAndGVzdCB0aGF0IHJlZ2lzdGVyUGFpbnQgYWNjZXB0cyBvbmx5IGEgc3RyaW5nIGFuZCBh
IGNsYXNzIGNvbnN0cnVjdG9yJyk7CiAKIHRlc3QoZnVuY3Rpb24gKCkgewogICAgIGNvbnN0IGNh
bGxzID0gW107CkBAIC0yMiw3ICs2OSw3IEBAIHRlc3QoZnVuY3Rpb24gKCkgewogICAgICAgICAg
ICAgcmV0dXJuIHRhcmdldFtuYW1lXTsKICAgICAgICAgfQogICAgIH0pOwotICAgIENTUy5wYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCd0ZXN0LXByb3RvJywgcHJveHkpOwor
ICAgIHJlZ2lzdGVyUGFpbnQoJ3Rlc3QtcHJvdG8nLCBwcm94eSk7CiAgICAgYXNzZXJ0X2FycmF5
X2VxdWFscyhjYWxscywgWyJpbnB1dFByb3BlcnRpZXMiLCAiaW5wdXRBcmd1bWVudHMiLCAiY29u
dGV4dE9wdGlvbnMiLCAicHJvdG90eXBlIl0pOwogfSwgJ211c3QgZ2V0ICJwcm90b3R5cGUiIHBy
b3BlcnR5IG9mIHRoZSBjb25zdHJ1Y3RvcicpOwogCkBAIC0zNiw3ICs4Myw3IEBAIHRlc3QoZnVu
Y3Rpb24gKCkgewogICAgICAgICAgICAgcmV0dXJuIHRhcmdldFtuYW1lXTsKICAgICAgICAgfQog
ICAgIH0pOwotICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ2V4cGVjdGVkRXJyb3InfSwgZnVu
Y3Rpb24gKCkgeyBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgndGVz
dC1yZXRocm93LWlucHV0UHJvcGVydGllczAnLCBwcm94eSk7IH0pOworICAgIGFzc2VydF90aHJv
d3MoeyduYW1lJzogJ2V4cGVjdGVkRXJyb3InfSwgZnVuY3Rpb24gKCkgeyByZWdpc3RlclBhaW50
KCd0ZXN0LXJldGhyb3ctaW5wdXRQcm9wZXJ0aWVzMCcsIHByb3h5KTsgfSk7CiB9LCAnbXVzdCBy
ZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgZ2V0dGluZyAiaW5wdXRQcm9wZXJ0aWVz
IiBwcm9wZXJ0eSBvZiB0aGUgY29uc3RydWN0b3InKTsKIAogdGVzdChmdW5jdGlvbiAoKSB7CkBA
IC00OSw3ICs5Niw3IEBAIHRlc3QoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgcmV0dXJuIHRh
cmdldFtuYW1lXTsKICAgICAgICAgfQogICAgIH0pOwotICAgIGFzc2VydF90aHJvd3MoeyduYW1l
JzogJ2V4cGVjdGVkRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBDU1MucGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUucmVnaXN0ZXJQYWludCgndGVzdC1yZXRocm93LXByb3RvJywgcHJveHkpOyB9KTsKKyAg
ICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdleHBlY3RlZEVycm9yJ30sIGZ1bmN0aW9uICgpIHsg
cmVnaXN0ZXJQYWludCgndGVzdC1yZXRocm93LXByb3RvJywgcHJveHkpOyB9KTsKIH0sICdtdXN0
IHJldGhyb3cgYW4gZXhjZXB0aW9uIHRocm93biB3aGlsZSBnZXR0aW5nICJwcm90b3R5cGUiIHBy
b3BlcnR5IG9mIHRoZSBjb25zdHJ1Y3RvcicpOwogCiB0ZXN0KGZ1bmN0aW9uICgpIHsKQEAgLTYz
LDE2ICsxMTAsMTYgQEAgdGVzdChmdW5jdGlvbiAoKSB7CiAgICAgfSk7CiAKICAgICByZXR1cm5l
ZFZhbHVlID0gbnVsbDsKLSAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwg
ZnVuY3Rpb24gKCkgeyBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgn
dGVzdC1yZXRocm93LXByb3RvLW5vb2JqMScsIHByb3h5KTsgfSwKKyAgICBhc3NlcnRfdGhyb3dz
KHsnbmFtZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyByZWdpc3RlclBhaW50KCd0ZXN0
LXJldGhyb3ctcHJvdG8tbm9vYmoxJywgcHJveHkpOyB9LAogICAgICAgICAnbXVzdCB0aHJvdyB3
aGVuICJwcm90b3R5cGUiIHByb3BlcnR5IG9mIHRoZSBjb25zdHJ1Y3RvciBpcyBudWxsJyk7CiAg
ICAgcmV0dXJuZWRWYWx1ZSA9IHVuZGVmaW5lZDsKLSAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6
ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUu
cmVnaXN0ZXJQYWludCgndGVzdC1yZXRocm93LXByb3RvLW5vb2JqMicsIHByb3h5KTsgfSwKKyAg
ICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyByZWdp
c3RlclBhaW50KCd0ZXN0LXJldGhyb3ctcHJvdG8tbm9vYmoyJywgcHJveHkpOyB9LAogICAgICAg
ICAnbXVzdCB0aHJvdyB3aGVuICJwcm90b3R5cGUiIHByb3BlcnR5IG9mIHRoZSBjb25zdHJ1Y3Rv
ciBpcyB1bmRlZmluZWQnKTsKICAgICByZXR1cm5lZFZhbHVlID0gJ2hlbGxvJzsKLSAgICBhc3Nl
cnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBDU1MucGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgndGVzdC1yZXRocm93LXByb3RvLW5vb2Jq
MycsIHByb3h5KTs7IH0sCisgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnVHlwZUVycm9yJ30s
IGZ1bmN0aW9uICgpIHsgcmVnaXN0ZXJQYWludCgndGVzdC1yZXRocm93LXByb3RvLW5vb2JqMycs
IHByb3h5KTs7IH0sCiAgICAgICAgICdtdXN0IHRocm93IHdoZW4gInByb3RvdHlwZSIgcHJvcGVy
dHkgb2YgdGhlIGNvbnN0cnVjdG9yIGlzIGEgc3RyaW5nJyk7CiAgICAgcmV0dXJuZWRWYWx1ZSA9
IDE7Ci0gICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9uICgp
IHsgQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3QtcmV0aHJv
dy1wcm90by1ub29iajQnLCBwcm94eSk7OyB9LAorICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzog
J1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IHJlZ2lzdGVyUGFpbnQoJ3Rlc3QtcmV0aHJvdy1w
cm90by1ub29iajQnLCBwcm94eSk7OyB9LAogICAgICAgICAnbXVzdCB0aHJvdyB3aGVuICJwcm90
b3R5cGUiIHByb3BlcnR5IG9mIHRoZSBjb25zdHJ1Y3RvciBpcyBhIG51bWJlcicpOwogCiB9LCAn
bXVzdCB0aHJvdyB3aGVuICJwcm90b3R5cGUiIHByb3BlcnR5IG9mIHRoZSBjb25zdHJ1Y3RvciBp
cyBub3QgYW4gb2JqZWN0Jyk7CkBAIC04Nyw3ICsxMzQsNyBAQCB0ZXN0KGZ1bmN0aW9uICgpIHsK
ICAgICAgICAgICAgIHJldHVybiB0YXJnZXRbbmFtZV07CiAgICAgICAgIH0KICAgICB9KTsKLSAg
ICBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgnY2FsbGJhY2tzJywg
Y29uc3RydWN0b3IpOworICAgIHJlZ2lzdGVyUGFpbnQoJ2NhbGxiYWNrcycsIGNvbnN0cnVjdG9y
KTsKICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNhbGxzLCBbJ3BhaW50J10pOwogfSwgJ211c3Qg
Z2V0IHBhaW50IGNhbGxiYWNrIG9mIHRoZSBjb25zdHJ1Y3RvciBwcm90b3R5cGUnKTsKIApAQCAt
MTAyLDcgKzE0OSw3IEBAIHRlc3QoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgcmV0dXJuIHRh
cmdldFtuYW1lXTsKICAgICAgICAgfQogICAgIH0pOwotICAgIGFzc2VydF90aHJvd3MoeyduYW1l
JzogJ2V4cGVjdGVkRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBDU1MucGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUucmVnaXN0ZXJQYWludCgnY2FsbGJhY2tzLXRocm93JywgY29uc3RydWN0b3IpOyB9KTsK
KyAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdleHBlY3RlZEVycm9yJ30sIGZ1bmN0aW9uICgp
IHsgcmVnaXN0ZXJQYWludCgnY2FsbGJhY2tzLXRocm93JywgY29uc3RydWN0b3IpOyB9KTsKICAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNhbGxzLCBbJ3BhaW50J10pOwogfSwgJ211c3QgcmV0aHJv
dyBhbiBleGNlcHRpb24gdGhyb3duIHdoaWxlIGdldHRpbmcgcGFpbnQgY2FsbGJhY2sgb24gdGhl
IGNvbnN0cnVjdG9yIHByb3RvdHlwZScpOwogCkBAIC0xMTcsNyArMTY0LDcgQEAgdGVzdChmdW5j
dGlvbiAoKSB7CiAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0W25hbWVdOwogICAgICAgICB9CiAg
ICAgfSk7Ci0gICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9u
ICgpIHsgQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ2NhbGxiYWNr
cy10aHJvdzInLCBjb25zdHJ1Y3Rvcik7IH0pOworICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzog
J1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IHJlZ2lzdGVyUGFpbnQoJ2NhbGxiYWNrcy10aHJv
dzInLCBjb25zdHJ1Y3Rvcik7IH0pOwogICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2FsbHMsIFsn
cGFpbnQnXSk7CiB9LCAnbXVzdCByZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgY29u
dmVydGluZyBwYWludCBjYWxsYmFjayB2YWx1ZSB0byBGdW5jdGlvbiBjYWxsYmFjayB0eXBlJyk7
CiAKQEAgLTEzMSw3ICsxNzgsNyBAQCB0ZXN0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICByZXR1
cm4gdGFyZ2V0W25hbWVdOwogICAgICAgfQogICB9KTsKLSAgYXNzZXJ0X3Rocm93cyh7J25hbWUn
OiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3Bl
LnJlZ2lzdGVyUGFpbnQoJ3NlcXVlbmNlLXRocm93JywgcHJveHkpOyB9KTsKKyAgYXNzZXJ0X3Ro
cm93cyh7J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgcmVnaXN0ZXJQYWludCgn
c2VxdWVuY2UtdGhyb3cnLCBwcm94eSk7IH0pOwogICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNhbGxz
LCBbImlucHV0UHJvcGVydGllcyIsICJpbnB1dEFyZ3VtZW50cyJdKTsKIH0sICdtdXN0IHJldGhy
b3cgYW4gZXhjZXB0aW9uIHRocm93biB3aGlsZSBjb252ZXJ0aW5nIHRoZSB2YWx1ZSBvZiBpbnB1
dEFyZ3VtZW50cyB0byBzZXF1ZW5jZTxET01TdHJpbmc+Jyk7CiAKQEAgLTE0MSwxMiArMTg4LDM2
IEBAIHRlc3QoZnVuY3Rpb24gKCkgewogICAgICAgICB5aWVsZCAnPGxlbmd0aD4nOwogICAgICAg
ICB0aHJvdyB7bmFtZTogJ1NvbWVFcnJvcid9OwogICAgIH19OwotICAgIGFzc2VydF90aHJvd3Mo
eyduYW1lJzogJ1NvbWVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IENTUy5wYWludFdvcmtsZXRHbG9i
YWxTY29wZS5yZWdpc3RlclBhaW50KCdzZXF1ZW5jZS10aHJvdzInLCBjb25zdHJ1Y3Rvcik7IH0p
OworICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1NvbWVFcnJvcid9LCBmdW5jdGlvbiAoKSB7
IHJlZ2lzdGVyUGFpbnQoJ3NlcXVlbmNlLXRocm93MicsIGNvbnN0cnVjdG9yKTsgfSk7CiB9LCAn
bXVzdCByZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgaXRlcmF0aW5nIG92ZXIgaW5w
dXRBcmd1bWVudHMgdG8gc2VxdWVuY2U8RE9NU3RyaW5nPicpOwogCiB0ZXN0KGZ1bmN0aW9uICgp
IHsKICAgICBjb25zdCBjb25zdHJ1Y3RvciA9IGZ1bmN0aW9uICgpIHt9CiAgICAgY29uc3RydWN0
b3IuaW5wdXRBcmd1bWVudHMgPSB7W1N5bWJvbC5pdGVyYXRvcl06IDF9OwotICAgIGFzc2VydF90
aHJvd3MoeyduYW1lJzogJ1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IENTUy5wYWludFdvcmts
ZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCdzeW1ib2wtaXRlcmF0b3ItdGhyb3cyJywgY29u
c3RydWN0b3IpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwg
ZnVuY3Rpb24gKCkgeyByZWdpc3RlclBhaW50KCdzeW1ib2wtaXRlcmF0b3ItdGhyb3cyJywgY29u
c3RydWN0b3IpOyB9KTsKIH0sICdtdXN0IHJldGhyb3cgYW4gZXhjZXB0aW9uIHRocm93biB3aGls
ZSByZXRyaWV2aW5nIFN5bWJvbC5pdGVyYXRvciBvbiBpbnB1dEFyZ3VtZW50cycpOworCithc3Nl
cnRfdHJ1ZShQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oYXNSdW5BVGVzdCk7CitpZiAoUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUuZXJyb3JzKSB7CisgIGNvbnNvbGUubG9nKCJUaGUgZm9sbG93aW5n
ICgiICsgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuZXJyb3JzLmxlbmd0aCArICIpIHRlc3RzIGZh
aWxlZDogIikKKyAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUuZXJyb3JzKSk7CisgIGFzc2VydF90cnVlKGZhbHNlKTsKK30KKworY2xhc3MgTXlQYWlu
dDIgeworICBwYWludChjdHgsIGdlb20sIHByb3BlcnRpZXMpIHsKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IDY7IGkrKyl7CisgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDY7IGorKyl7CisgICAg
ICAgIGN0eC5maWxsU3R5bGUgPSAncmdiKCcgKyBNYXRoLmZsb29yKDI1NSAtIDQyLjUgKiBpKSAr
ICcsJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5mbG9vcigyNTUgLSA0Mi41ICog
aikgKyAnLDApJzsKKyAgICAgICAgY3R4LmZpbGxSZWN0KGogKiAyNSwgaSAqIDI1LCAyNSwgMjUp
OworICAgICAgfQorICAgIH0KKyAgfQorfQorcmVnaXN0ZXJQYWludCgnbXktcGFpbnQnLCBNeVBh
aW50Mik7Cis8L3NjcmlwdD4KKworPHNjcmlwdD4KKyAgaW1wb3J0V29ya2xldChDU1MucGFpbnRX
b3JrbGV0LCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29kZScpLnRleHRDb250ZW50KTsKIDwv
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Jl
c291cmNlcy90ZXN0aGFybmVzcy13b3JrbGV0LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3Vz
dG9tLXBhaW50L3Jlc291cmNlcy90ZXN0aGFybmVzcy13b3JrbGV0LmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ1
YzNlNzRlZTZjMTMxNDE5YzE2ODllZTg5ZDAxYTQxYWE3MDJlY2MKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LXdvcmtsZXQuanMKQEAgLTAsMCArMSw3MzkgQEAKKy8vIFRoZXNlIGFyZSBoZWxwZXJzIHRvIGJl
IGV2YWx1YXRlZCBpbnNpZGUgYSB3b3JrbGV0CisvLyBUaGV5IGFyZSBtb3N0bHkgZnJvbSB0aGUg
d3B0IHRlc3RoYXJuZXNzLmpzLgorCisvKgorICogQ29udmVydCBhIHZhbHVlIHRvIGEgbmljZSwg
aHVtYW4tcmVhZGFibGUgc3RyaW5nCisgKi8KK2Z1bmN0aW9uIGZvcm1hdF92YWx1ZSh2YWwsIHNl
ZW4pCit7CisgICAgaWYgKCFzZWVuKSB7CisgICAgICAgIHNlZW4gPSBbXTsKKyAgICB9CisgICAg
aWYgKHR5cGVvZiB2YWwgPT09ICJvYmplY3QiICYmIHZhbCAhPT0gbnVsbCkgeworICAgICAgICBp
ZiAoc2Vlbi5pbmRleE9mKHZhbCkgPj0gMCkgeworICAgICAgICAgICAgcmV0dXJuICJbLi4uXSI7
CisgICAgICAgIH0KKyAgICAgICAgc2Vlbi5wdXNoKHZhbCk7CisgICAgfQorICAgIGlmIChBcnJh
eS5pc0FycmF5KHZhbCkpIHsKKyAgICAgICAgcmV0dXJuICJbIiArIHZhbC5tYXAoZnVuY3Rpb24o
eCkge3JldHVybiBmb3JtYXRfdmFsdWUoeCwgc2Vlbik7fSkuam9pbigiLCAiKSArICJdIjsKKyAg
ICB9CisKKyAgICBzd2l0Y2ggKHR5cGVvZiB2YWwpIHsKKyAgICBjYXNlICJzdHJpbmciOgorICAg
ICAgICB2YWwgPSB2YWwucmVwbGFjZSgiXFwiLCAiXFxcXCIpOworICAgICAgICBmb3IgKHZhciBw
IGluIHJlcGxhY2VtZW50cykgeworICAgICAgICAgICAgdmFyIHJlcGxhY2UgPSAiXFwiICsgcmVw
bGFjZW1lbnRzW3BdOworICAgICAgICAgICAgdmFsID0gdmFsLnJlcGxhY2UoUmVnRXhwKFN0cmlu
Zy5mcm9tQ2hhckNvZGUocCksICJnIiksIHJlcGxhY2UpOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiAnIicgKyB2YWwucmVwbGFjZSgvIi9nLCAnXFwiJykgKyAnIic7CisgICAgY2FzZSAiYm9v
bGVhbiI6CisgICAgY2FzZSAidW5kZWZpbmVkIjoKKyAgICAgICAgcmV0dXJuIFN0cmluZyh2YWwp
OworICAgIGNhc2UgIm51bWJlciI6CisgICAgICAgIC8vIEluIEphdmFTY3JpcHQsIC0wID09PSAw
IGFuZCBTdHJpbmcoLTApID09ICIwIiwgc28gd2UgaGF2ZSB0bworICAgICAgICAvLyBzcGVjaWFs
LWNhc2UuCisgICAgICAgIGlmICh2YWwgPT09IC0wICYmIDEvdmFsID09PSAtSW5maW5pdHkpIHsK
KyAgICAgICAgICAgIHJldHVybiAiLTAiOworICAgICAgICB9CisgICAgICAgIHJldHVybiBTdHJp
bmcodmFsKTsKKyAgICBjYXNlICJvYmplY3QiOgorICAgICAgICBpZiAodmFsID09PSBudWxsKSB7
CisgICAgICAgICAgICByZXR1cm4gIm51bGwiOworICAgICAgICB9CisKKyAgICAgICAgLy8gU3Bl
Y2lhbC1jYXNlIE5vZGUgb2JqZWN0cywgc2luY2UgdGhvc2UgY29tZSB1cCBhIGxvdCBpbiBteSB0
ZXN0cy4gIEkKKyAgICAgICAgLy8gaWdub3JlIG5hbWVzcGFjZXMuCisgICAgICAgIGlmIChpc19u
b2RlKHZhbCkpIHsKKyAgICAgICAgICAgIHN3aXRjaCAodmFsLm5vZGVUeXBlKSB7CisgICAgICAg
ICAgICBjYXNlIE5vZGUuRUxFTUVOVF9OT0RFOgorICAgICAgICAgICAgICAgIHZhciByZXQgPSAi
PCIgKyB2YWwubG9jYWxOYW1lOworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
dmFsLmF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0ICs9
ICIgIiArIHZhbC5hdHRyaWJ1dGVzW2ldLm5hbWUgKyAnPSInICsgdmFsLmF0dHJpYnV0ZXNbaV0u
dmFsdWUgKyAnIic7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldCArPSAi
PiIgKyB2YWwuaW5uZXJIVE1MICsgIjwvIiArIHZhbC5sb2NhbE5hbWUgKyAiPiI7CisgICAgICAg
ICAgICAgICAgcmV0dXJuICJFbGVtZW50IG5vZGUgIiArIHRydW5jYXRlKHJldCwgNjApOworICAg
ICAgICAgICAgY2FzZSBOb2RlLlRFWFRfTk9ERToKKyAgICAgICAgICAgICAgICByZXR1cm4gJ1Rl
eHQgbm9kZSAiJyArIHRydW5jYXRlKHZhbC5kYXRhLCA2MCkgKyAnIic7CisgICAgICAgICAgICBj
YXNlIE5vZGUuUFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFOgorICAgICAgICAgICAgICAgIHJl
dHVybiAiUHJvY2Vzc2luZ0luc3RydWN0aW9uIG5vZGUgd2l0aCB0YXJnZXQgIiArIGZvcm1hdF92
YWx1ZSh0cnVuY2F0ZSh2YWwudGFyZ2V0LCA2MCkpICsgIiBhbmQgZGF0YSAiICsgZm9ybWF0X3Zh
bHVlKHRydW5jYXRlKHZhbC5kYXRhLCA2MCkpOworICAgICAgICAgICAgY2FzZSBOb2RlLkNPTU1F
TlRfTk9ERToKKyAgICAgICAgICAgICAgICByZXR1cm4gIkNvbW1lbnQgbm9kZSA8IS0tIiArIHRy
dW5jYXRlKHZhbC5kYXRhLCA2MCkgKyAiLS0+IjsKKyAgICAgICAgICAgIGNhc2UgTm9kZS5ET0NV
TUVOVF9OT0RFOgorICAgICAgICAgICAgICAgIHJldHVybiAiRG9jdW1lbnQgbm9kZSB3aXRoICIg
KyB2YWwuY2hpbGROb2Rlcy5sZW5ndGggKyAodmFsLmNoaWxkTm9kZXMubGVuZ3RoID09IDEgPyAi
IGNoaWxkIiA6ICIgY2hpbGRyZW4iKTsKKyAgICAgICAgICAgIGNhc2UgTm9kZS5ET0NVTUVOVF9U
WVBFX05PREU6CisgICAgICAgICAgICAgICAgcmV0dXJuICJEb2N1bWVudFR5cGUgbm9kZSI7Cisg
ICAgICAgICAgICBjYXNlIE5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERToKKyAgICAgICAgICAg
ICAgICByZXR1cm4gIkRvY3VtZW50RnJhZ21lbnQgbm9kZSB3aXRoICIgKyB2YWwuY2hpbGROb2Rl
cy5sZW5ndGggKyAodmFsLmNoaWxkTm9kZXMubGVuZ3RoID09IDEgPyAiIGNoaWxkIiA6ICIgY2hp
bGRyZW4iKTsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuICJO
b2RlIG9iamVjdCBvZiB1bmtub3duIHR5cGUiOworICAgICAgICAgICAgfQorICAgICAgICB9CisK
KyAgICAvKiBmYWxscyB0aHJvdWdoICovCisgICAgZGVmYXVsdDoKKyAgICAgICAgdHJ5IHsKKyAg
ICAgICAgICAgIHJldHVybiB0eXBlb2YgdmFsICsgJyAiJyArIHRydW5jYXRlKFN0cmluZyh2YWwp
LCAxMDAwKSArICciJzsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICByZXR1cm4g
KCJbc3RyaW5naWZ5aW5nIG9iamVjdCB0aHJldyAiICsgU3RyaW5nKGUpICsKKyAgICAgICAgICAg
ICAgICAgICAgIiB3aXRoIHR5cGUgIiArIFN0cmluZyh0eXBlb2YgZSkgKyAiXSIpOworICAgICAg
ICB9CisgICAgfQorfQorCitmdW5jdGlvbiBpc19zaW5nbGVfbm9kZSh0ZW1wbGF0ZSkKK3sKKyAg
ICByZXR1cm4gdHlwZW9mIHRlbXBsYXRlWzBdID09PSAic3RyaW5nIjsKK30KKworZnVuY3Rpb24g
c3Vic3RpdHV0ZSh0ZW1wbGF0ZSwgc3Vic3RpdHV0aW9ucykKK3sKKyAgICBpZiAodHlwZW9mIHRl
bXBsYXRlID09PSAiZnVuY3Rpb24iKSB7CisgICAgICAgIHZhciByZXBsYWNlbWVudCA9IHRlbXBs
YXRlKHN1YnN0aXR1dGlvbnMpOworICAgICAgICBpZiAoIXJlcGxhY2VtZW50KSB7CisgICAgICAg
ICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBzdWJzdGl0dXRl
KHJlcGxhY2VtZW50LCBzdWJzdGl0dXRpb25zKTsKKyAgICB9CisKKyAgICBpZiAoaXNfc2luZ2xl
X25vZGUodGVtcGxhdGUpKSB7CisgICAgICAgIHJldHVybiBzdWJzdGl0dXRlX3NpbmdsZSh0ZW1w
bGF0ZSwgc3Vic3RpdHV0aW9ucyk7CisgICAgfQorCisgICAgcmV0dXJuIGZpbHRlcihtYXAodGVt
cGxhdGUsIGZ1bmN0aW9uKHgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1
YnN0aXR1dGUoeCwgc3Vic3RpdHV0aW9ucyk7CisgICAgICAgICAgICAgICAgICAgICAgfSksIGZ1
bmN0aW9uKHgpIHtyZXR1cm4geCAhPT0gbnVsbDt9KTsKK30KKworZnVuY3Rpb24gc3Vic3RpdHV0
ZV9zaW5nbGUodGVtcGxhdGUsIHN1YnN0aXR1dGlvbnMpCit7CisgICAgdmFyIHN1YnN0aXR1dGlv
bl9yZSA9IC9cJFx7KFteIH1dKilcfS9nOworCisgICAgZnVuY3Rpb24gZG9fc3Vic3RpdHV0aW9u
KGlucHV0KSB7CisgICAgICAgIHZhciBjb21wb25lbnRzID0gaW5wdXQuc3BsaXQoc3Vic3RpdHV0
aW9uX3JlKTsKKyAgICAgICAgdmFyIHJ2ID0gW107CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgY29tcG9uZW50cy5sZW5ndGg7IGkgKz0gMikgeworICAgICAgICAgICAgcnYucHVzaChjb21w
b25lbnRzW2ldKTsKKyAgICAgICAgICAgIGlmIChjb21wb25lbnRzW2kgKyAxXSkgeworICAgICAg
ICAgICAgICAgIHJ2LnB1c2goU3RyaW5nKHN1YnN0aXR1dGlvbnNbY29tcG9uZW50c1tpICsgMV1d
KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJ2OworICAgIH0K
KworICAgIGZ1bmN0aW9uIHN1YnN0aXR1dGVfYXR0cnMoYXR0cnMsIHJ2KQorICAgIHsKKyAgICAg
ICAgcnZbMV0gPSB7fTsKKyAgICAgICAgZm9yICh2YXIgbmFtZSBpbiB0ZW1wbGF0ZVsxXSkgewor
ICAgICAgICAgICAgaWYgKGF0dHJzLmhhc093blByb3BlcnR5KG5hbWUpKSB7CisgICAgICAgICAg
ICAgICAgdmFyIG5ld19uYW1lID0gZG9fc3Vic3RpdHV0aW9uKG5hbWUpLmpvaW4oIiIpOworICAg
ICAgICAgICAgICAgIHZhciBuZXdfdmFsdWUgPSBkb19zdWJzdGl0dXRpb24oYXR0cnNbbmFtZV0p
LmpvaW4oIiIpOworICAgICAgICAgICAgICAgIHJ2WzFdW25ld19uYW1lXSA9IG5ld192YWx1ZTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIHN1YnN0aXR1
dGVfY2hpbGRyZW4oY2hpbGRyZW4sIHJ2KQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgaWYgKGNoaWxkcmVuW2ld
IGluc3RhbmNlb2YgT2JqZWN0KSB7CisgICAgICAgICAgICAgICAgdmFyIHJlcGxhY2VtZW50ID0g
c3Vic3RpdHV0ZShjaGlsZHJlbltpXSwgc3Vic3RpdHV0aW9ucyk7CisgICAgICAgICAgICAgICAg
aWYgKHJlcGxhY2VtZW50ICE9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChpc19z
aW5nbGVfbm9kZShyZXBsYWNlbWVudCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJ2LnB1
c2gocmVwbGFjZW1lbnQpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICAgICAgZXh0ZW5kKHJ2LCByZXBsYWNlbWVudCk7CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGV4dGVuZChydiwgZG9fc3Vic3RpdHV0aW9uKFN0cmluZyhjaGlsZHJlbltpXSkpKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcnY7CisgICAgfQorCisg
ICAgdmFyIHJ2ID0gW107CisgICAgcnYucHVzaChkb19zdWJzdGl0dXRpb24oU3RyaW5nKHRlbXBs
YXRlWzBdKSkuam9pbigiIikpOworCisgICAgaWYgKHRlbXBsYXRlWzBdID09PSAie3RleHR9Iikg
eworICAgICAgICBzdWJzdGl0dXRlX2NoaWxkcmVuKHRlbXBsYXRlLnNsaWNlKDEpLCBydik7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgc3Vic3RpdHV0ZV9hdHRycyh0ZW1wbGF0ZVsxXSwgcnYpOwor
ICAgICAgICBzdWJzdGl0dXRlX2NoaWxkcmVuKHRlbXBsYXRlLnNsaWNlKDIpLCBydik7CisgICAg
fQorCisgICAgcmV0dXJuIHJ2OworfQorCitmdW5jdGlvbiBhc3NlcnQoZXhwZWN0ZWRfdHJ1ZSwg
ZnVuY3Rpb25fbmFtZSwgZGVzY3JpcHRpb24sIGVycm9yLCBzdWJzdGl0dXRpb25zKQoreworICAg
IGlmIChleHBlY3RlZF90cnVlICE9PSB0cnVlKSB7CisgICAgICAgIHZhciBtc2cgPSBtYWtlX21l
c3NhZ2UoZnVuY3Rpb25fbmFtZSwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZXJyb3IsIHN1YnN0aXR1dGlvbnMpOworICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0
aW9uRXJyb3IobXNnKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIEFzc2VydGlvbkVycm9yKG1lc3Nh
Z2UpCit7CisgICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTsKKyAgICB0aGlzLnN0YWNrID0gdGhp
cy5nZXRfc3RhY2soKTsKK30KKworQXNzZXJ0aW9uRXJyb3IucHJvdG90eXBlID0gT2JqZWN0LmNy
ZWF0ZShFcnJvci5wcm90b3R5cGUpOworCitBc3NlcnRpb25FcnJvci5wcm90b3R5cGUuZ2V0X3N0
YWNrID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIHN0YWNrID0gbmV3IEVycm9yKCkuc3RhY2s7Cisg
ICAgLy8gSUUxMSBkb2VzIG5vdCBpbml0aWFsaXplICdFcnJvci5zdGFjaycgdW50aWwgdGhlIG9i
amVjdCBpcyB0aHJvd24uCisgICAgaWYgKCFzdGFjaykgeworICAgICAgICB0cnkgeworICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCk7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAg
ICAgIHN0YWNrID0gZS5zdGFjazsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vICdFcnJvci5z
dGFjaycgaXMgbm90IHN1cHBvcnRlZCBpbiBhbGwgYnJvd3NlcnMvdmVyc2lvbnMKKyAgICBpZiAo
IXN0YWNrKSB7CisgICAgICAgIHJldHVybiAiKFN0YWNrIHRyYWNlIHVuYXZhaWxhYmxlKSI7Cisg
ICAgfQorCisgICAgdmFyIGxpbmVzID0gc3RhY2suc3BsaXQoIlxuIik7CisKKyAgICAvLyBDcmVh
dGUgYSBwYXR0ZXJuIHRvIG1hdGNoIHN0YWNrIGZyYW1lcyBvcmlnaW5hdGluZyB3aXRoaW4gdGVz
dGhhcm5lc3MuanMuICBUaGVzZSBpbmNsdWRlIHRoZQorICAgIC8vIHNjcmlwdCBVUkwsIGZvbGxv
d2VkIGJ5IHRoZSBsaW5lL2NvbCAoZS5nLiwgJy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanM6MTIw
OjIxJykuCisgICAgLy8gRXNjYXBlIHRoZSBVUkwgcGVyIGh0dHA6Ly9zdGFja292ZXJmbG93LmNv
bS9xdWVzdGlvbnMvMzU2MTQ5My9pcy10aGVyZS1hLXJlZ2V4cC1lc2NhcGUtZnVuY3Rpb24taW4t
amF2YXNjcmlwdAorICAgIC8vIGluIGNhc2UgaXQgY29udGFpbnMgUmVnRXhwIGNoYXJhY3RlcnMu
CisgICAgdmFyIHNjcmlwdF91cmwgPSBnZXRfc2NyaXB0X3VybCgpOworICAgIHZhciByZV90ZXh0
ID0gc2NyaXB0X3VybCA/IHNjcmlwdF91cmwucmVwbGFjZSgvWy1cL1xcXiQqKz8uKCl8W1xde31d
L2csICdcXCQmJykgOiAiXFxidGVzdGhhcm5lc3MuanMiOworICAgIHZhciByZSA9IG5ldyBSZWdF
eHAocmVfdGV4dCArICI6XFxkKzpcXGQrIik7CisKKyAgICAvLyBTb21lIGJyb3dzZXJzIGluY2x1
ZGUgYSBwcmVhbWJsZSB0aGF0IHNwZWNpZmllcyB0aGUgdHlwZSBvZiB0aGUgZXJyb3Igb2JqZWN0
LiAgU2tpcCB0aGlzIGJ5CisgICAgLy8gYWR2YW5jaW5nIHVudGlsIHdlIGZpbmQgdGhlIGZpcnN0
IHN0YWNrIGZyYW1lIG9yaWdpbmF0aW5nIGZyb20gdGVzdGhhcm5lc3MuanMuCisgICAgdmFyIGkg
PSAwOworICAgIHdoaWxlICghcmUudGVzdChsaW5lc1tpXSkgJiYgaSA8IGxpbmVzLmxlbmd0aCkg
eworICAgICAgICBpKys7CisgICAgfQorCisgICAgLy8gVGhlbiBza2lwIHRoZSB0b3AgZnJhbWVz
IG9yaWdpbmF0aW5nIGZyb20gdGVzdGhhcm5lc3MuanMgdG8gYmVnaW4gdGhlIHN0YWNrIGF0IHRo
ZSB0ZXN0IGNvZGUuCisgICAgd2hpbGUgKHJlLnRlc3QobGluZXNbaV0pICYmIGkgPCBsaW5lcy5s
ZW5ndGgpIHsKKyAgICAgICAgaSsrOworICAgIH0KKworICAgIC8vIFBhcmFub2lkIGNoZWNrIHRo
YXQgd2UgZGlkbid0IHNraXAgYWxsIGZyYW1lcy4gIElmIHNvLCByZXR1cm4gdGhlIG9yaWdpbmFs
IHN0YWNrIHVubW9kaWZpZWQuCisgICAgaWYgKGkgPj0gbGluZXMubGVuZ3RoKSB7CisgICAgICAg
IHJldHVybiBzdGFjazsKKyAgICB9CisKKyAgICByZXR1cm4gbGluZXMuc2xpY2UoaSkuam9pbigi
XG4iKTsKK30KKworZnVuY3Rpb24gbWFrZV9tZXNzYWdlKGZ1bmN0aW9uX25hbWUsIGRlc2NyaXB0
aW9uLCBlcnJvciwgc3Vic3RpdHV0aW9ucykKK3sKKyAgICBmb3IgKHZhciBwIGluIHN1YnN0aXR1
dGlvbnMpIHsKKyAgICAgICAgaWYgKHN1YnN0aXR1dGlvbnMuaGFzT3duUHJvcGVydHkocCkpIHsK
KyAgICAgICAgICAgIHN1YnN0aXR1dGlvbnNbcF0gPSBmb3JtYXRfdmFsdWUoc3Vic3RpdHV0aW9u
c1twXSk7CisgICAgICAgIH0KKyAgICB9CisgICAgdmFyIG5vZGVfZm9ybSA9IHN1YnN0aXR1dGUo
WyJ7dGV4dH0iLCAiJHtmdW5jdGlvbl9uYW1lfTogJHtkZXNjcmlwdGlvbn0iICsgZXJyb3JdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlKHtmdW5jdGlvbl9uYW1lOmZ1bmN0
aW9uX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0
aW9uOihkZXNjcmlwdGlvbj9kZXNjcmlwdGlvbiArICIgIjoiIil9LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdWJzdGl0dXRpb25zKSk7CisgICAgcmV0dXJuIG5vZGVf
Zm9ybS5zbGljZSgxKS5qb2luKCIiKTsKK30KKworZnVuY3Rpb24gZmlsdGVyKGFycmF5LCBjYWxs
YWJsZSwgdGhpc09iaikgeworICAgIHZhciBydiA9IFtdOworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgYXJyYXkubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKGFycmF5Lmhhc093blByb3BlcnR5
KGkpKSB7CisgICAgICAgICAgICB2YXIgcGFzcyA9IGNhbGxhYmxlLmNhbGwodGhpc09iaiwgYXJy
YXlbaV0sIGksIGFycmF5KTsKKyAgICAgICAgICAgIGlmIChwYXNzKSB7CisgICAgICAgICAgICAg
ICAgcnYucHVzaChhcnJheVtpXSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cisg
ICAgcmV0dXJuIHJ2OworfQorCitmdW5jdGlvbiBtYXAoYXJyYXksIGNhbGxhYmxlLCB0aGlzT2Jq
KQoreworICAgIHZhciBydiA9IFtdOworICAgIHJ2Lmxlbmd0aCA9IGFycmF5Lmxlbmd0aDsKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmIChh
cnJheS5oYXNPd25Qcm9wZXJ0eShpKSkgeworICAgICAgICAgICAgcnZbaV0gPSBjYWxsYWJsZS5j
YWxsKHRoaXNPYmosIGFycmF5W2ldLCBpLCBhcnJheSk7CisgICAgICAgIH0KKyAgICB9CisgICAg
cmV0dXJuIHJ2OworfQorCitmdW5jdGlvbiBmb3JFYWNoKGFycmF5LCBjYWxsYmFjaywgdGhpc09i
aikKK3sKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7CisgICAg
ICAgIGlmIChhcnJheS5oYXNPd25Qcm9wZXJ0eShpKSkgeworICAgICAgICAgICAgY2FsbGJhY2su
Y2FsbCh0aGlzT2JqLCBhcnJheVtpXSwgaSwgYXJyYXkpOworICAgICAgICB9CisgICAgfQorfQor
CitmdW5jdGlvbiBtZXJnZShhLGIpCit7CisgICAgdmFyIHJ2ID0ge307CisgICAgdmFyIHA7Cisg
ICAgZm9yIChwIGluIGEpIHsKKyAgICAgICAgcnZbcF0gPSBhW3BdOworICAgIH0KKyAgICBmb3Ig
KHAgaW4gYikgeworICAgICAgICBydltwXSA9IGJbcF07CisgICAgfQorICAgIHJldHVybiBydjsK
K30KKworZnVuY3Rpb24gc2FtZV92YWx1ZSh4LCB5KSB7CisgICAgaWYgKHkgIT09IHkpIHsKKyAg
ICAgICAgLy9OYU4gY2FzZQorICAgICAgICByZXR1cm4geCAhPT0geDsKKyAgICB9CisgICAgaWYg
KHggPT09IDAgJiYgeSA9PT0gMCkgeworICAgICAgICAvL0Rpc3Rpbmd1aXNoICswIGFuZCAtMAor
ICAgICAgICByZXR1cm4gMS94ID09PSAxL3k7CisgICAgfQorICAgIHJldHVybiB4ID09PSB5Owor
fQorCitmdW5jdGlvbiBhc3NlcnRfZXF1YWxzKGFjdHVhbCwgZXhwZWN0ZWQsIGRlc2NyaXB0aW9u
KQoreworICAgICAvKgorICAgICAgKiBUZXN0IGlmIHR3byBwcmltaXRpdmVzIGFyZSBlcXVhbCBv
ciB0d28gb2JqZWN0cworICAgICAgKiBhcmUgdGhlIHNhbWUgb2JqZWN0CisgICAgICAqLworICAg
IGlmICh0eXBlb2YgYWN0dWFsICE9IHR5cGVvZiBleHBlY3RlZCkgeworICAgICAgICBhc3NlcnQo
ZmFsc2UsICJhc3NlcnRfZXF1YWxzIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgImV4cGVjdGVkICgiICsgdHlwZW9mIGV4cGVjdGVkICsgIikgJHtleHBlY3RlZH0gYnV0IGdv
dCAoIiArIHR5cGVvZiBhY3R1YWwgKyAiKSAke2FjdHVhbH0iLAorICAgICAgICAgICAgICAgICAg
ICAgIHtleHBlY3RlZDpleHBlY3RlZCwgYWN0dWFsOmFjdHVhbH0pOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIGFzc2VydChzYW1lX3ZhbHVlKGFjdHVhbCwgZXhwZWN0ZWQpLCAiYXNzZXJ0
X2VxdWFscyIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiZXhwZWN0ZWQgJHtleHBlY3RlZH0gYnV0IGdvdCAke2FjdHVhbH0iLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZXhwZWN0ZWQ6ZXhwZWN0ZWQsIGFj
dHVhbDphY3R1YWx9KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X25vdF9lcXVhbHMoYWN0dWFsLCBl
eHBlY3RlZCwgZGVzY3JpcHRpb24pCit7CisgICAgIC8qCisgICAgICAqIFRlc3QgaWYgdHdvIHBy
aW1pdGl2ZXMgYXJlIHVuZXF1YWwgb3IgdHdvIG9iamVjdHMKKyAgICAgICogYXJlIGRpZmZlcmVu
dCBvYmplY3RzCisgICAgICAqLworICAgIGFzc2VydCghc2FtZV92YWx1ZShhY3R1YWwsIGV4cGVj
dGVkKSwgImFzc2VydF9ub3RfZXF1YWxzIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiZ290IGRpc2FsbG93ZWQgdmFsdWUgJHthY3R1YWx9
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHthY3R1YWw6YWN0
dWFsfSk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9pbl9hcnJheShhY3R1YWwsIGV4cGVjdGVkLCBk
ZXNjcmlwdGlvbikKK3sKKyAgICBhc3NlcnQoZXhwZWN0ZWQuaW5kZXhPZihhY3R1YWwpICE9IC0x
LCAiYXNzZXJ0X2luX2FycmF5IiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgInZhbHVlICR7YWN0dWFsfSBub3QgaW4gYXJyYXkgJHtleHBl
Y3RlZH0iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHthY3R1
YWw6YWN0dWFsLCBleHBlY3RlZDpleHBlY3RlZH0pOworfQorCitmdW5jdGlvbiBhc3NlcnRfb2Jq
ZWN0X2VxdWFscyhhY3R1YWwsIGV4cGVjdGVkLCBkZXNjcmlwdGlvbikKK3sKKyAgICAgLy9UaGlz
IG5lZWRzIHRvIGJlIGltcHJvdmVkIGEgZ3JlYXQgZGVhbAorICAgICBmdW5jdGlvbiBjaGVja19l
cXVhbChhY3R1YWwsIGV4cGVjdGVkLCBzdGFjaykKKyAgICAgeworICAgICAgICAgc3RhY2sucHVz
aChhY3R1YWwpOworCisgICAgICAgICB2YXIgcDsKKyAgICAgICAgIGZvciAocCBpbiBhY3R1YWwp
IHsKKyAgICAgICAgICAgICBhc3NlcnQoZXhwZWN0ZWQuaGFzT3duUHJvcGVydHkocCksICJhc3Nl
cnRfb2JqZWN0X2VxdWFscyIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgInVuZXhwZWN0ZWQgcHJvcGVydHkgJHtwfSIsIHtwOnB9
KTsKKworICAgICAgICAgICAgIGlmICh0eXBlb2YgYWN0dWFsW3BdID09PSAib2JqZWN0IiAmJiBh
Y3R1YWxbcF0gIT09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgaWYgKHN0YWNrLmluZGV4T2Yo
YWN0dWFsW3BdKSA9PT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2VxdWFsKGFj
dHVhbFtwXSwgZXhwZWN0ZWRbcF0sIHN0YWNrKTsKKyAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgIGFzc2VydChzYW1lX3ZhbHVlKGFjdHVh
bFtwXSwgZXhwZWN0ZWRbcF0pLCAiYXNzZXJ0X29iamVjdF9lcXVhbHMiLCBkZXNjcmlwdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcm9w
ZXJ0eSAke3B9IGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGdvdCAke2FjdHVhbH0iLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3A6cCwgZXhwZWN0ZWQ6
ZXhwZWN0ZWQsIGFjdHVhbDphY3R1YWx9KTsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9Cisg
ICAgICAgICBmb3IgKHAgaW4gZXhwZWN0ZWQpIHsKKyAgICAgICAgICAgICBhc3NlcnQoYWN0dWFs
Lmhhc093blByb3BlcnR5KHApLAorICAgICAgICAgICAgICAgICAgICAiYXNzZXJ0X29iamVjdF9l
cXVhbHMiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIHByb3Bl
cnR5ICR7cH0gbWlzc2luZyIsIHtwOnB9KTsKKyAgICAgICAgIH0KKyAgICAgICAgIHN0YWNrLnBv
cCgpOworICAgICB9CisgICAgIGNoZWNrX2VxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIFtdKTsKK30K
KworZnVuY3Rpb24gYXNzZXJ0X2FycmF5X2VxdWFscyhhY3R1YWwsIGV4cGVjdGVkLCBkZXNjcmlw
dGlvbikKK3sKKyAgICBhc3NlcnQoYWN0dWFsLmxlbmd0aCA9PT0gZXhwZWN0ZWQubGVuZ3RoLAor
ICAgICAgICAgICAiYXNzZXJ0X2FycmF5X2VxdWFscyIsIGRlc2NyaXB0aW9uLAorICAgICAgICAg
ICAibGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGdvdCAke2FjdHVhbH0iLAor
ICAgICAgICAgICB7ZXhwZWN0ZWQ6ZXhwZWN0ZWQubGVuZ3RoLCBhY3R1YWw6YWN0dWFsLmxlbmd0
aH0pOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhY3R1YWwubGVuZ3RoOyBpKyspIHsKKyAg
ICAgICAgYXNzZXJ0KGFjdHVhbC5oYXNPd25Qcm9wZXJ0eShpKSA9PT0gZXhwZWN0ZWQuaGFzT3du
UHJvcGVydHkoaSksCisgICAgICAgICAgICAgICAiYXNzZXJ0X2FycmF5X2VxdWFscyIsIGRlc2Ny
aXB0aW9uLAorICAgICAgICAgICAgICAgInByb3BlcnR5ICR7aX0sIHByb3BlcnR5IGV4cGVjdGVk
IHRvIGJlICR7ZXhwZWN0ZWR9IGJ1dCB3YXMgJHthY3R1YWx9IiwKKyAgICAgICAgICAgICAgIHtp
OmksIGV4cGVjdGVkOmV4cGVjdGVkLmhhc093blByb3BlcnR5KGkpID8gInByZXNlbnQiIDogIm1p
c3NpbmciLAorICAgICAgICAgICAgICAgYWN0dWFsOmFjdHVhbC5oYXNPd25Qcm9wZXJ0eShpKSA/
ICJwcmVzZW50IiA6ICJtaXNzaW5nIn0pOworICAgICAgICBhc3NlcnQoc2FtZV92YWx1ZShleHBl
Y3RlZFtpXSwgYWN0dWFsW2ldKSwKKyAgICAgICAgICAgICAgICJhc3NlcnRfYXJyYXlfZXF1YWxz
IiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAicHJvcGVydHkgJHtpfSwgZXhwZWN0ZWQg
JHtleHBlY3RlZH0gYnV0IGdvdCAke2FjdHVhbH0iLAorICAgICAgICAgICAgICAge2k6aSwgZXhw
ZWN0ZWQ6ZXhwZWN0ZWRbaV0sIGFjdHVhbDphY3R1YWxbaV19KTsKKyAgICB9Cit9CisKK2Z1bmN0
aW9uIGFzc2VydF9hcHByb3hfZXF1YWxzKGFjdHVhbCwgZXhwZWN0ZWQsIGVwc2lsb24sIGRlc2Ny
aXB0aW9uKQoreworICAgIC8qCisgICAgICogVGVzdCBpZiB0d28gcHJpbWl0aXZlIG51bWJlcnMg
YXJlIGVxdWFsIHdpdGhpbmcgKy8tIGVwc2lsb24KKyAgICAgKi8KKyAgICBhc3NlcnQodHlwZW9m
IGFjdHVhbCA9PT0gIm51bWJlciIsCisgICAgICAgICAgICJhc3NlcnRfYXBwcm94X2VxdWFscyIs
IGRlc2NyaXB0aW9uLAorICAgICAgICAgICAiZXhwZWN0ZWQgYSBudW1iZXIgYnV0IGdvdCBhICR7
dHlwZV9hY3R1YWx9IiwKKyAgICAgICAgICAge3R5cGVfYWN0dWFsOnR5cGVvZiBhY3R1YWx9KTsK
KworICAgIGFzc2VydChNYXRoLmFicyhhY3R1YWwgLSBleHBlY3RlZCkgPD0gZXBzaWxvbiwKKyAg
ICAgICAgICAgImFzc2VydF9hcHByb3hfZXF1YWxzIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAg
ICJleHBlY3RlZCAke2V4cGVjdGVkfSArLy0gJHtlcHNpbG9ufSBidXQgZ290ICR7YWN0dWFsfSIs
CisgICAgICAgICAgIHtleHBlY3RlZDpleHBlY3RlZCwgYWN0dWFsOmFjdHVhbCwgZXBzaWxvbjpl
cHNpbG9ufSk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9sZXNzX3RoYW4oYWN0dWFsLCBleHBlY3Rl
ZCwgZGVzY3JpcHRpb24pCit7CisgICAgLyoKKyAgICAgKiBUZXN0IGlmIGEgcHJpbWl0aXZlIG51
bWJlciBpcyBsZXNzIHRoYW4gYW5vdGhlcgorICAgICAqLworICAgIGFzc2VydCh0eXBlb2YgYWN0
dWFsID09PSAibnVtYmVyIiwKKyAgICAgICAgICAgImFzc2VydF9sZXNzX3RoYW4iLCBkZXNjcmlw
dGlvbiwKKyAgICAgICAgICAgImV4cGVjdGVkIGEgbnVtYmVyIGJ1dCBnb3QgYSAke3R5cGVfYWN0
dWFsfSIsCisgICAgICAgICAgIHt0eXBlX2FjdHVhbDp0eXBlb2YgYWN0dWFsfSk7CisKKyAgICBh
c3NlcnQoYWN0dWFsIDwgZXhwZWN0ZWQsCisgICAgICAgICAgICJhc3NlcnRfbGVzc190aGFuIiwg
ZGVzY3JpcHRpb24sCisgICAgICAgICAgICJleHBlY3RlZCBhIG51bWJlciBsZXNzIHRoYW4gJHtl
eHBlY3RlZH0gYnV0IGdvdCAke2FjdHVhbH0iLAorICAgICAgICAgICB7ZXhwZWN0ZWQ6ZXhwZWN0
ZWQsIGFjdHVhbDphY3R1YWx9KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X2dyZWF0ZXJfdGhhbihh
Y3R1YWwsIGV4cGVjdGVkLCBkZXNjcmlwdGlvbikKK3sKKyAgICAvKgorICAgICAqIFRlc3QgaWYg
YSBwcmltaXRpdmUgbnVtYmVyIGlzIGdyZWF0ZXIgdGhhbiBhbm90aGVyCisgICAgICovCisgICAg
YXNzZXJ0KHR5cGVvZiBhY3R1YWwgPT09ICJudW1iZXIiLAorICAgICAgICAgICAiYXNzZXJ0X2dy
ZWF0ZXJfdGhhbiIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAiZXhwZWN0ZWQgYSBudW1iZXIg
YnV0IGdvdCBhICR7dHlwZV9hY3R1YWx9IiwKKyAgICAgICAgICAge3R5cGVfYWN0dWFsOnR5cGVv
ZiBhY3R1YWx9KTsKKworICAgIGFzc2VydChhY3R1YWwgPiBleHBlY3RlZCwKKyAgICAgICAgICAg
ImFzc2VydF9ncmVhdGVyX3RoYW4iLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgImV4cGVjdGVk
IGEgbnVtYmVyIGdyZWF0ZXIgdGhhbiAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfSIsCisg
ICAgICAgICAgIHtleHBlY3RlZDpleHBlY3RlZCwgYWN0dWFsOmFjdHVhbH0pOworfQorCitmdW5j
dGlvbiBhc3NlcnRfYmV0d2Vlbl9leGNsdXNpdmUoYWN0dWFsLCBsb3dlciwgdXBwZXIsIGRlc2Ny
aXB0aW9uKQoreworICAgIC8qCisgICAgICogVGVzdCBpZiBhIHByaW1pdGl2ZSBudW1iZXIgaXMg
YmV0d2VlbiB0d28gb3RoZXJzCisgICAgICovCisgICAgYXNzZXJ0KHR5cGVvZiBhY3R1YWwgPT09
ICJudW1iZXIiLAorICAgICAgICAgICAiYXNzZXJ0X2JldHdlZW5fZXhjbHVzaXZlIiwgZGVzY3Jp
cHRpb24sCisgICAgICAgICAgICJleHBlY3RlZCBhIG51bWJlciBidXQgZ290IGEgJHt0eXBlX2Fj
dHVhbH0iLAorICAgICAgICAgICB7dHlwZV9hY3R1YWw6dHlwZW9mIGFjdHVhbH0pOworCisgICAg
YXNzZXJ0KGFjdHVhbCA+IGxvd2VyICYmIGFjdHVhbCA8IHVwcGVyLAorICAgICAgICAgICAiYXNz
ZXJ0X2JldHdlZW5fZXhjbHVzaXZlIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICJleHBlY3Rl
ZCBhIG51bWJlciBncmVhdGVyIHRoYW4gJHtsb3dlcn0gIiArCisgICAgICAgICAgICJhbmQgbGVz
cyB0aGFuICR7dXBwZXJ9IGJ1dCBnb3QgJHthY3R1YWx9IiwKKyAgICAgICAgICAge2xvd2VyOmxv
d2VyLCB1cHBlcjp1cHBlciwgYWN0dWFsOmFjdHVhbH0pOworfQorCitmdW5jdGlvbiBhc3NlcnRf
bGVzc190aGFuX2VxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIGRlc2NyaXB0aW9uKQoreworICAgIC8q
CisgICAgICogVGVzdCBpZiBhIHByaW1pdGl2ZSBudW1iZXIgaXMgbGVzcyB0aGFuIG9yIGVxdWFs
IHRvIGFub3RoZXIKKyAgICAgKi8KKyAgICBhc3NlcnQodHlwZW9mIGFjdHVhbCA9PT0gIm51bWJl
ciIsCisgICAgICAgICAgICJhc3NlcnRfbGVzc190aGFuX2VxdWFsIiwgZGVzY3JpcHRpb24sCisg
ICAgICAgICAgICJleHBlY3RlZCBhIG51bWJlciBidXQgZ290IGEgJHt0eXBlX2FjdHVhbH0iLAor
ICAgICAgICAgICB7dHlwZV9hY3R1YWw6dHlwZW9mIGFjdHVhbH0pOworCisgICAgYXNzZXJ0KGFj
dHVhbCA8PSBleHBlY3RlZCwKKyAgICAgICAgICAgImFzc2VydF9sZXNzX3RoYW5fZXF1YWwiLCBk
ZXNjcmlwdGlvbiwKKyAgICAgICAgICAgImV4cGVjdGVkIGEgbnVtYmVyIGxlc3MgdGhhbiBvciBl
cXVhbCB0byAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfSIsCisgICAgICAgICAgIHtleHBl
Y3RlZDpleHBlY3RlZCwgYWN0dWFsOmFjdHVhbH0pOworfQorCitmdW5jdGlvbiBhc3NlcnRfZ3Jl
YXRlcl90aGFuX2VxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIGRlc2NyaXB0aW9uKQoreworICAgIC8q
CisgICAgICogVGVzdCBpZiBhIHByaW1pdGl2ZSBudW1iZXIgaXMgZ3JlYXRlciB0aGFuIG9yIGVx
dWFsIHRvIGFub3RoZXIKKyAgICAgKi8KKyAgICBhc3NlcnQodHlwZW9mIGFjdHVhbCA9PT0gIm51
bWJlciIsCisgICAgICAgICAgICJhc3NlcnRfZ3JlYXRlcl90aGFuX2VxdWFsIiwgZGVzY3JpcHRp
b24sCisgICAgICAgICAgICJleHBlY3RlZCBhIG51bWJlciBidXQgZ290IGEgJHt0eXBlX2FjdHVh
bH0iLAorICAgICAgICAgICB7dHlwZV9hY3R1YWw6dHlwZW9mIGFjdHVhbH0pOworCisgICAgYXNz
ZXJ0KGFjdHVhbCA+PSBleHBlY3RlZCwKKyAgICAgICAgICAgImFzc2VydF9ncmVhdGVyX3RoYW5f
ZXF1YWwiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgImV4cGVjdGVkIGEgbnVtYmVyIGdyZWF0
ZXIgdGhhbiBvciBlcXVhbCB0byAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfSIsCisgICAg
ICAgICAgIHtleHBlY3RlZDpleHBlY3RlZCwgYWN0dWFsOmFjdHVhbH0pOworfQorCitmdW5jdGlv
biBhc3NlcnRfYmV0d2Vlbl9pbmNsdXNpdmUoYWN0dWFsLCBsb3dlciwgdXBwZXIsIGRlc2NyaXB0
aW9uKQoreworICAgIC8qCisgICAgICogVGVzdCBpZiBhIHByaW1pdGl2ZSBudW1iZXIgaXMgYmV0
d2VlbiB0byB0d28gb3RoZXJzIG9yIGVxdWFsIHRvIGVpdGhlciBvZiB0aGVtCisgICAgICovCisg
ICAgYXNzZXJ0KHR5cGVvZiBhY3R1YWwgPT09ICJudW1iZXIiLAorICAgICAgICAgICAiYXNzZXJ0
X2JldHdlZW5faW5jbHVzaXZlIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICJleHBlY3RlZCBh
IG51bWJlciBidXQgZ290IGEgJHt0eXBlX2FjdHVhbH0iLAorICAgICAgICAgICB7dHlwZV9hY3R1
YWw6dHlwZW9mIGFjdHVhbH0pOworCisgICAgYXNzZXJ0KGFjdHVhbCA+PSBsb3dlciAmJiBhY3R1
YWwgPD0gdXBwZXIsCisgICAgICAgICAgICJhc3NlcnRfYmV0d2Vlbl9pbmNsdXNpdmUiLCBkZXNj
cmlwdGlvbiwKKyAgICAgICAgICAgImV4cGVjdGVkIGEgbnVtYmVyIGdyZWF0ZXIgdGhhbiBvciBl
cXVhbCB0byAke2xvd2VyfSAiICsKKyAgICAgICAgICAgImFuZCBsZXNzIHRoYW4gb3IgZXF1YWwg
dG8gJHt1cHBlcn0gYnV0IGdvdCAke2FjdHVhbH0iLAorICAgICAgICAgICB7bG93ZXI6bG93ZXIs
IHVwcGVyOnVwcGVyLCBhY3R1YWw6YWN0dWFsfSk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF90aHJv
d3MoY29kZSwgZnVuYywgZGVzY3JpcHRpb24pCit7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYy5j
YWxsKHRoaXMpOworICAgICAgICBhc3NlcnQoZmFsc2UsICJhc3NlcnRfdGhyb3dzIiwgZGVzY3Jp
cHRpb24sCisgICAgICAgICAgICAgICAiJHtmdW5jfSBkaWQgbm90IHRocm93Iiwge2Z1bmM6ZnVu
Y30pOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBBc3NlcnRp
b25FcnJvcikgeworICAgICAgICAgICAgdGhyb3cgZTsKKyAgICAgICAgfQorICAgICAgICBpZiAo
Y29kZSA9PT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAg
IGlmICh0eXBlb2YgY29kZSA9PT0gIm9iamVjdCIpIHsKKyAgICAgICAgICAgIGFzc2VydCh0eXBl
b2YgZSA9PSAib2JqZWN0IiAmJiAibmFtZSIgaW4gZSAmJiBlLm5hbWUgPT0gY29kZS5uYW1lLAor
ICAgICAgICAgICAgICAgICAgICJhc3NlcnRfdGhyb3dzIiwgZGVzY3JpcHRpb24sCisgICAgICAg
ICAgICAgICAgICAgIiR7ZnVuY30gdGhyZXcgJHthY3R1YWx9ICgke2FjdHVhbF9uYW1lfSkgZXhw
ZWN0ZWQgJHtleHBlY3RlZH0gKCR7ZXhwZWN0ZWRfbmFtZX0pIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAge2Z1bmM6ZnVuYywgYWN0dWFsOmUsIGFjdHVhbF9uYW1lOmUubmFtZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkOmNvZGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9uYW1lOmNvZGUubmFtZX0pOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdmFyIGNvZGVfbmFtZV9tYXAg
PSB7CisgICAgICAgICAgICBJTkRFWF9TSVpFX0VSUjogJ0luZGV4U2l6ZUVycm9yJywKKyAgICAg
ICAgICAgIEhJRVJBUkNIWV9SRVFVRVNUX0VSUjogJ0hpZXJhcmNoeVJlcXVlc3RFcnJvcicsCisg
ICAgICAgICAgICBXUk9OR19ET0NVTUVOVF9FUlI6ICdXcm9uZ0RvY3VtZW50RXJyb3InLAorICAg
ICAgICAgICAgSU5WQUxJRF9DSEFSQUNURVJfRVJSOiAnSW52YWxpZENoYXJhY3RlckVycm9yJywK
KyAgICAgICAgICAgIE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUjogJ05vTW9kaWZpY2F0aW9u
QWxsb3dlZEVycm9yJywKKyAgICAgICAgICAgIE5PVF9GT1VORF9FUlI6ICdOb3RGb3VuZEVycm9y
JywKKyAgICAgICAgICAgIE5PVF9TVVBQT1JURURfRVJSOiAnTm90U3VwcG9ydGVkRXJyb3InLAor
ICAgICAgICAgICAgSU5VU0VfQVRUUklCVVRFX0VSUjogJ0luVXNlQXR0cmlidXRlRXJyb3InLAor
ICAgICAgICAgICAgSU5WQUxJRF9TVEFURV9FUlI6ICdJbnZhbGlkU3RhdGVFcnJvcicsCisgICAg
ICAgICAgICBTWU5UQVhfRVJSOiAnU3ludGF4RXJyb3InLAorICAgICAgICAgICAgSU5WQUxJRF9N
T0RJRklDQVRJT05fRVJSOiAnSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yJywKKyAgICAgICAgICAg
IE5BTUVTUEFDRV9FUlI6ICdOYW1lc3BhY2VFcnJvcicsCisgICAgICAgICAgICBJTlZBTElEX0FD
Q0VTU19FUlI6ICdJbnZhbGlkQWNjZXNzRXJyb3InLAorICAgICAgICAgICAgVFlQRV9NSVNNQVRD
SF9FUlI6ICdUeXBlTWlzbWF0Y2hFcnJvcicsCisgICAgICAgICAgICBTRUNVUklUWV9FUlI6ICdT
ZWN1cml0eUVycm9yJywKKyAgICAgICAgICAgIE5FVFdPUktfRVJSOiAnTmV0d29ya0Vycm9yJywK
KyAgICAgICAgICAgIEFCT1JUX0VSUjogJ0Fib3J0RXJyb3InLAorICAgICAgICAgICAgVVJMX01J
U01BVENIX0VSUjogJ1VSTE1pc21hdGNoRXJyb3InLAorICAgICAgICAgICAgUVVPVEFfRVhDRUVE
RURfRVJSOiAnUXVvdGFFeGNlZWRlZEVycm9yJywKKyAgICAgICAgICAgIFRJTUVPVVRfRVJSOiAn
VGltZW91dEVycm9yJywKKyAgICAgICAgICAgIElOVkFMSURfTk9ERV9UWVBFX0VSUjogJ0ludmFs
aWROb2RlVHlwZUVycm9yJywKKyAgICAgICAgICAgIERBVEFfQ0xPTkVfRVJSOiAnRGF0YUNsb25l
RXJyb3InCisgICAgICAgIH07CisKKyAgICAgICAgdmFyIG5hbWUgPSBjb2RlIGluIGNvZGVfbmFt
ZV9tYXAgPyBjb2RlX25hbWVfbWFwW2NvZGVdIDogY29kZTsKKworICAgICAgICB2YXIgbmFtZV9j
b2RlX21hcCA9IHsKKyAgICAgICAgICAgIEluZGV4U2l6ZUVycm9yOiAxLAorICAgICAgICAgICAg
SGllcmFyY2h5UmVxdWVzdEVycm9yOiAzLAorICAgICAgICAgICAgV3JvbmdEb2N1bWVudEVycm9y
OiA0LAorICAgICAgICAgICAgSW52YWxpZENoYXJhY3RlckVycm9yOiA1LAorICAgICAgICAgICAg
Tm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3I6IDcsCisgICAgICAgICAgICBOb3RGb3VuZEVycm9y
OiA4LAorICAgICAgICAgICAgTm90U3VwcG9ydGVkRXJyb3I6IDksCisgICAgICAgICAgICBJblVz
ZUF0dHJpYnV0ZUVycm9yOiAxMCwKKyAgICAgICAgICAgIEludmFsaWRTdGF0ZUVycm9yOiAxMSwK
KyAgICAgICAgICAgIFN5bnRheEVycm9yOiAxMiwKKyAgICAgICAgICAgIEludmFsaWRNb2RpZmlj
YXRpb25FcnJvcjogMTMsCisgICAgICAgICAgICBOYW1lc3BhY2VFcnJvcjogMTQsCisgICAgICAg
ICAgICBJbnZhbGlkQWNjZXNzRXJyb3I6IDE1LAorICAgICAgICAgICAgVHlwZU1pc21hdGNoRXJy
b3I6IDE3LAorICAgICAgICAgICAgU2VjdXJpdHlFcnJvcjogMTgsCisgICAgICAgICAgICBOZXR3
b3JrRXJyb3I6IDE5LAorICAgICAgICAgICAgQWJvcnRFcnJvcjogMjAsCisgICAgICAgICAgICBV
UkxNaXNtYXRjaEVycm9yOiAyMSwKKyAgICAgICAgICAgIFF1b3RhRXhjZWVkZWRFcnJvcjogMjIs
CisgICAgICAgICAgICBUaW1lb3V0RXJyb3I6IDIzLAorICAgICAgICAgICAgSW52YWxpZE5vZGVU
eXBlRXJyb3I6IDI0LAorICAgICAgICAgICAgRGF0YUNsb25lRXJyb3I6IDI1LAorCisgICAgICAg
ICAgICBFbmNvZGluZ0Vycm9yOiAwLAorICAgICAgICAgICAgTm90UmVhZGFibGVFcnJvcjogMCwK
KyAgICAgICAgICAgIFVua25vd25FcnJvcjogMCwKKyAgICAgICAgICAgIENvbnN0cmFpbnRFcnJv
cjogMCwKKyAgICAgICAgICAgIERhdGFFcnJvcjogMCwKKyAgICAgICAgICAgIFRyYW5zYWN0aW9u
SW5hY3RpdmVFcnJvcjogMCwKKyAgICAgICAgICAgIFJlYWRPbmx5RXJyb3I6IDAsCisgICAgICAg
ICAgICBWZXJzaW9uRXJyb3I6IDAsCisgICAgICAgICAgICBPcGVyYXRpb25FcnJvcjogMCwKKyAg
ICAgICAgICAgIE5vdEFsbG93ZWRFcnJvcjogMAorICAgICAgICB9OworCisgICAgICAgIGlmICgh
KG5hbWUgaW4gbmFtZV9jb2RlX21hcCkpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRp
b25FcnJvcignVGVzdCBidWc6IHVucmVjb2duaXplZCBET01FeGNlcHRpb24gY29kZSAiJyArIGNv
ZGUgKyAnIiBwYXNzZWQgdG8gYXNzZXJ0X3Rocm93cygpJyk7CisgICAgICAgIH0KKworICAgICAg
ICB2YXIgcmVxdWlyZWRfcHJvcHMgPSB7IGNvZGU6IG5hbWVfY29kZV9tYXBbbmFtZV0gfTsKKwor
ICAgICAgICBpZiAocmVxdWlyZWRfcHJvcHMuY29kZSA9PT0gMCB8fAorICAgICAgICAgICAodHlw
ZW9mIGUgPT0gIm9iamVjdCIgJiYKKyAgICAgICAgICAgICJuYW1lIiBpbiBlICYmCisgICAgICAg
ICAgICBlLm5hbWUgIT09IGUubmFtZS50b1VwcGVyQ2FzZSgpICYmCisgICAgICAgICAgICBlLm5h
bWUgIT09ICJET01FeGNlcHRpb24iKSkgeworICAgICAgICAgICAgLy8gTmV3IHN0eWxlIGV4Y2Vw
dGlvbjogYWxzbyB0ZXN0IHRoZSBuYW1lIHByb3BlcnR5LgorICAgICAgICAgICAgcmVxdWlyZWRf
cHJvcHMubmFtZSA9IG5hbWU7CisgICAgICAgIH0KKworICAgICAgICAvL1dlJ2QgbGlrZSB0byB0
ZXN0IHRoYXQgZSBpbnN0YW5jZW9mIHRoZSBhcHByb3ByaWF0ZSBpbnRlcmZhY2UsCisgICAgICAg
IC8vYnV0IHdlIGNhbid0LCBiZWNhdXNlIHdlIGRvbid0IGtub3cgd2hhdCB3aW5kb3cgaXQgd2Fz
IGNyZWF0ZWQKKyAgICAgICAgLy9pbi4gIEl0IG1pZ2h0IGJlIGFuIGluc3RhbmNlb2YgdGhlIGFw
cHJvcHJpYXRlIGludGVyZmFjZSBvbiBzb21lCisgICAgICAgIC8vdW5rbm93biBvdGhlciB3aW5k
b3cuICBUT0RPOiBXb3JrIGFyb3VuZCB0aGlzIHNvbWVob3c/CisKKyAgICAgICAgYXNzZXJ0KHR5
cGVvZiBlID09ICJvYmplY3QiLAorICAgICAgICAgICAgICAgImFzc2VydF90aHJvd3MiLCBkZXNj
cmlwdGlvbiwKKyAgICAgICAgICAgICAgICIke2Z1bmN9IHRocmV3ICR7ZX0gd2l0aCB0eXBlICR7
dHlwZX0sIG5vdCBhbiBvYmplY3QiLAorICAgICAgICAgICAgICAge2Z1bmM6ZnVuYywgZTplLCB0
eXBlOnR5cGVvZiBlfSk7CisKKyAgICAgICAgZm9yICh2YXIgcHJvcCBpbiByZXF1aXJlZF9wcm9w
cykgeworICAgICAgICAgICAgYXNzZXJ0KHR5cGVvZiBlID09ICJvYmplY3QiICYmIHByb3AgaW4g
ZSAmJiBlW3Byb3BdID09IHJlcXVpcmVkX3Byb3BzW3Byb3BdLAorICAgICAgICAgICAgICAgICAg
ICJhc3NlcnRfdGhyb3dzIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgIiR7ZnVu
Y30gdGhyZXcgJHtlfSB0aGF0IGlzIG5vdCBhIERPTUV4Y2VwdGlvbiAiICsgY29kZSArICI6IHBy
b3BlcnR5ICR7cHJvcH0gaXMgZXF1YWwgdG8gJHthY3R1YWx9LCBleHBlY3RlZCAke2V4cGVjdGVk
fSIsCisgICAgICAgICAgICAgICAgICAge2Z1bmM6ZnVuYywgZTplLCBwcm9wOnByb3AsIGFjdHVh
bDplW3Byb3BdLCBleHBlY3RlZDpyZXF1aXJlZF9wcm9wc1twcm9wXX0pOworICAgICAgICB9Cisg
ICAgfQorfQorCisvKgorICogUmV0dXJuIHRydWUgaWYgb2JqZWN0IGlzIHByb2JhYmx5IGEgTm9k
ZSBvYmplY3QuCisgKi8KK2Z1bmN0aW9uIGlzX25vZGUob2JqZWN0KQoreworICAgIC8vIEkgdXNl
IGR1Y2stdHlwaW5nIGluc3RlYWQgb2YgaW5zdGFuY2VvZiwgYmVjYXVzZQorICAgIC8vIGluc3Rh
bmNlb2YgZG9lc24ndCB3b3JrIGlmIHRoZSBub2RlIGlzIGZyb20gYW5vdGhlciB3aW5kb3cgKGxp
a2UgYW4KKyAgICAvLyBpZnJhbWUncyBjb250ZW50V2luZG93KToKKyAgICAvLyBodHRwOi8vd3d3
LnczLm9yZy9CdWdzL1B1YmxpYy9zaG93X2J1Zy5jZ2k/aWQ9MTIyOTUKKyAgICB0cnkgeworICAg
ICAgICB2YXIgaGFzX25vZGVfcHJvcGVydGllcyA9ICgibm9kZVR5cGUiIGluIG9iamVjdCAmJgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm9kZU5hbWUiIGluIG9iamVjdCAm
JgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm9kZVZhbHVlIiBpbiBvYmpl
Y3QgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNoaWxkTm9kZXMiIGlu
IG9iamVjdCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAvLyBXZSdyZSBwcm9iYWJseSBj
cm9zcy1vcmlnaW4sIHdoaWNoIG1lYW5zIHdlIGFyZW4ndCBhIG5vZGUKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIGlmIChoYXNfbm9kZV9wcm9wZXJ0aWVzKSB7CisgICAgICAg
IHRyeSB7CisgICAgICAgICAgICBvYmplY3Qubm9kZVR5cGU7CisgICAgICAgIH0gY2F0Y2ggKGUp
IHsKKyAgICAgICAgICAgIC8vIFRoZSBvYmplY3QgaXMgcHJvYmFibHkgTm9kZS5wcm90b3R5cGUg
b3IgYW5vdGhlciBwcm90b3R5cGUKKyAgICAgICAgICAgIC8vIG9iamVjdCB0aGF0IGluaGVyaXRz
IGZyb20gaXQsIGFuZCBub3QgYSBOb2RlIGluc3RhbmNlLgorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK3ZhciByZXBsYWNlbWVudHMgPSB7CisgICAgIjAiOiAiMCIsCisgICAgIjEi
OiAieDAxIiwKKyAgICAiMiI6ICJ4MDIiLAorICAgICIzIjogIngwMyIsCisgICAgIjQiOiAieDA0
IiwKKyAgICAiNSI6ICJ4MDUiLAorICAgICI2IjogIngwNiIsCisgICAgIjciOiAieDA3IiwKKyAg
ICAiOCI6ICJiIiwKKyAgICAiOSI6ICJ0IiwKKyAgICAiMTAiOiAibiIsCisgICAgIjExIjogInYi
LAorICAgICIxMiI6ICJmIiwKKyAgICAiMTMiOiAiciIsCisgICAgIjE0IjogIngwZSIsCisgICAg
IjE1IjogIngwZiIsCisgICAgIjE2IjogIngxMCIsCisgICAgIjE3IjogIngxMSIsCisgICAgIjE4
IjogIngxMiIsCisgICAgIjE5IjogIngxMyIsCisgICAgIjIwIjogIngxNCIsCisgICAgIjIxIjog
IngxNSIsCisgICAgIjIyIjogIngxNiIsCisgICAgIjIzIjogIngxNyIsCisgICAgIjI0IjogIngx
OCIsCisgICAgIjI1IjogIngxOSIsCisgICAgIjI2IjogIngxYSIsCisgICAgIjI3IjogIngxYiIs
CisgICAgIjI4IjogIngxYyIsCisgICAgIjI5IjogIngxZCIsCisgICAgIjMwIjogIngxZSIsCisg
ICAgIjMxIjogIngxZiIsCisgICAgIjB4ZmZmZCI6ICJ1ZmZmZCIsCisgICAgIjB4ZmZmZSI6ICJ1
ZmZmZSIsCisgICAgIjB4ZmZmZiI6ICJ1ZmZmZiIsCit9OworCitmdW5jdGlvbiBleHRlbmQoYXJy
YXksIGl0ZW1zKQoreworICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGFycmF5LCBpdGVt
cyk7Cit9CisKK2Z1bmN0aW9uIGdldF9zY3JpcHRfdXJsKCkKK3sKKyAgICByZXR1cm4gIi8iOwor
fQorCisvKgorICogUmV0dXJuIGEgc3RyaW5nIHRydW5jYXRlZCB0byB0aGUgZ2l2ZW4gbGVuZ3Ro
LCB3aXRoIC4uLiBhZGRlZCBhdCB0aGUgZW5kCisgKiBpZiBpdCB3YXMgbG9uZ2VyLgorICovCitm
dW5jdGlvbiB0cnVuY2F0ZShzLCBsZW4pCit7CisgICAgaWYgKHMubGVuZ3RoID4gbGVuKSB7Cisg
ICAgICAgIHJldHVybiBzLnN1YnN0cmluZygwLCBsZW4gLSAzKSArICIuLi4iOworICAgIH0KKyAg
ICByZXR1cm4gczsKK30KKworZnVuY3Rpb24gYXNzZXJ0X3RydWUoYWN0dWFsLCBkZXNjcmlwdGlv
bikKK3sKKyAgICBhc3NlcnQoYWN0dWFsID09PSB0cnVlLCAiYXNzZXJ0X3RydWUiLCBkZXNjcmlw
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgdHJ1ZSBnb3QgJHth
Y3R1YWx9Iiwge2FjdHVhbDphY3R1YWx9KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X2ZhbHNlKGFj
dHVhbCwgZGVzY3JpcHRpb24pCit7CisgICAgYXNzZXJ0KGFjdHVhbCA9PT0gZmFsc2UsICJhc3Nl
cnRfZmFsc2UiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4
cGVjdGVkIGZhbHNlIGdvdCAke2FjdHVhbH0iLCB7YWN0dWFsOmFjdHVhbH0pOworfQorCitmdW5j
dGlvbiB0ZXN0KHRzdCwgbmFtZSkgeworICB0cnkgeworICAgIHRzdCgpOworICB9IGNhdGNoIChl
KSB7CisgICAgaWYgKCFQYWludFdvcmtsZXRHbG9iYWxTY29wZS5lcnJvcnMpCisgICAgICBQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5lcnJvcnMgPSBbXTsKKyAgICAgIFBhaW50V29ya2xldEdsb2Jh
bFNjb3BlLmVycm9ycy5wdXNoKHsgbmFtZTogbmFtZSwgZXJyb3I6IGUubWVzc2FnZSB9KTsKKyAg
fQorICBQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oYXNSdW5BVGVzdCA9IHRydWU7Cit9CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYjEzZDQzMjkwZjgzNGQwZjlhNjk5MzA1MDBhNjdh
YzE1YmY1ZWRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9t
LXBhaW50L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcwpAQCAtMCwwICsxLDIzIEBACitpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCisvLyBJbXBvcnRz
IGNvZGUgaW50byBhIHdvcmtsZXQsIHdpdGggc29tZSBoZWxwZXJzLgorYXN5bmMgZnVuY3Rpb24g
aW1wb3J0V29ya2xldCh3b3JrbGV0LCBjb2RlKSB7CisgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQg
ZmV0Y2goInJlc291cmNlcy90ZXN0aGFybmVzcy13b3JrbGV0LmpzIik7CisgIGNvbnN0IGZpbmFs
Q29kZSA9IChhd2FpdCByZXNwb25zZS50ZXh0KCkpICsgY29kZTsKKworICBsZXQgdXJsOworICAv
LyBGSVhNRTogVGhpcyBpcyB0ZW1wb3JhcnksIHVudGlsIHdlIHN1cHBvcnQgbG9hZGluZyBzY3Jp
cHRzIGJ5IHVybAorICBpZiAod2luZG93LmNocm9tZSkgeworICAgIGNvbnN0IGJsb2IgPSBuZXcg
QmxvYihbZmluYWxDb2RlXSwge3R5cGU6ICd0ZXh0L2phdmFzY3JpcHQnfSk7CisgICAgdXJsID0g
VVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTsKKyAgfSBlbHNlIHsKKyAgICB1cmwgPSBmaW5hbENv
ZGU7CisgIH0KKworICB3b3JrbGV0LmFkZE1vZHVsZSh1cmwpOworICBpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CisgICAgfSwgMzAwMCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC93b3JrbGV0LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvd29ya2xldC1leHBlY3RlZC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRiNDJiNjJkYTEzZWRhODE5NjEwYjMxOTdiNGU0NWE1NDczYmRjZjMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvd29ya2xldC1leHBlY3Rl
ZC5odG1sCkBAIC0wLDAgKzEsMTYgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3Qt
cnVubmVyIFsgZXhwZXJpbWVudGFsOkNTU1BhaW50aW5nQVBJRW5hYmxlZD10cnVlIF0gLS0+CisK
KzxjYW52YXMgaWQ9InBhaW50IiB3aWR0aD0iMTUwcHgiIGhlaWdodD0iMTUwcHgiID48L2NhbnZh
cz4KKworPHNjcmlwdCBpZD0iY29kZSI+Cit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3BhaW50Jyk7Cit2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7CisKK2Zv
ciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKXsKKyAgZm9yICh2YXIgaiA9IDA7IGogPCA2OyBqKysp
eworICAgIGN0eC5maWxsU3R5bGUgPSAncmdiKCcgKyBNYXRoLmZsb29yKDI1NSAtIDQyLjUgKiBp
KSArICcsJyArCisgICAgICAgICAgICAgICAgICAgICBNYXRoLmZsb29yKDI1NSAtIDQyLjUgKiBq
KSArICcsMCknOworICAgIGN0eC5maWxsUmVjdChqICogMjUsIGkgKiAyNSwgMjUsIDI1KTsKKyAg
fQorfQorPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20t
cGFpbnQvd29ya2xldC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3dv
cmtsZXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yY2ZmOTM1Njg1MzQyMDRhMmFhMGNjNmU4ZDllODk0NDAx
MmUyZTY1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBh
aW50L3dvcmtsZXQuaHRtbApAQCAtMCwwICsxLDQyIEBACis8IURPQ1RZUEUgaHRtbD48IS0tIHdl
YmtpdC10ZXN0LXJ1bm5lciBbIGV4cGVyaW1lbnRhbDpDU1NQYWludGluZ0FQSUVuYWJsZWQ9dHJ1
ZSBdIC0tPgorPG1ldGEgbmFtZT0iYXV0aG9yIiB0aXRsZT0iSnVzdGluIE1pY2hhdWQiIGhyZWY9
Im1haWx0bzpqdXN0aW5fbWljaGF1ZEB3ZWJraXQub3JnIj4KKzxtZXRhIG5hbWU9ImFzc2VydCIg
Y29udGVudD0iVGVzdCB3b3JrbGV0IGFkZE1vZHVsZSBhbmQgZ2xvYmFsIG9iamVjdCI+Cis8bGlu
ayByZWw9ImhlbHAiIGNvbnRlbnQ9Imh0dHBzOi8vZHJhZnRzLmNzcy1ob3VkaW5pLm9yZy9jc3Mt
cGFpbnQtYXBpLTEvIj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwv
c2NyaXB0PgorCis8c3R5bGU+CisgICNwYWludCB7CisgICAgYmFja2dyb3VuZC1pbWFnZTogcGFp
bnQobXktcGFpbnQpOworICAgIHdpZHRoOiAxNTBweDsKKyAgICBoZWlnaHQ6IDE1MHB4OworICB9
Cis8L3N0eWxlPgorCis8ZGl2IGlkPSJwYWludCI+PC9kaXY+CisKKzxzY3JpcHQgaWQ9ImNvZGUi
IHR5cGU9InRleHQvd29ya2xldCI+CitjbGFzcyBNeVBhaW50IHsKKyAgcGFpbnQoY3R4LCBnZW9t
LCBwcm9wZXJ0aWVzKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspeworICAgICAg
Zm9yICh2YXIgaiA9IDA7IGogPCA2OyBqKyspeworICAgICAgICBjdHguZmlsbFN0eWxlID0gJ3Jn
YignICsgTWF0aC5mbG9vcigyNTUgLSA0Mi41ICogaSkgKyAnLCcgKworICAgICAgICAgICAgICAg
ICAgICAgICAgIE1hdGguZmxvb3IoMjU1IC0gNDIuNSAqIGopICsgJywwKSc7CisgICAgICAgIGN0
eC5maWxsUmVjdChqICogMjUsIGkgKiAyNSwgMjUsIDI1KTsKKyAgICAgIH0KKyAgICB9CisgICAg
Y29uc29sZS5sb2coIkhlbGxvIGZyb20gcGFpbnQgY2FsbGJhY2shIik7CisgICAgYXNzZXJ0X2dy
ZWF0ZXJfdGhhbihldmFsKCJkZXZpY2VQaXhlbFJhdGlvIiksIDApOworICAgIGFzc2VydF90aHJv
d3MoeyduYW1lJzogJ1JlZmVyZW5jZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgZXZhbCgid2luZG93
Iik7IH0pOworCisgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWpl
Y3QpID0+IHsgY29uc29sZS5sb2coIkluIHByb21pc2UiKTsgcmVzb2x2ZSgpIH0pOworICAgIHBy
b21pc2UudGhlbigoKSA9PiBjb25zb2xlLmxvZygiUHJvbWlzZSB3YXMgcmVzb2x2ZWQiKSk7Cisg
IH0KK30KK2NvbnNvbGUubG9nKCJIZWxsbyBmcm9tIHBhaW50IHdvcmtsZXQhIik7CityZWdpc3Rl
clBhaW50KCdteS1wYWludCcsIE15UGFpbnQpOworY29uc29sZS5sb2coV2luZG93KTsgLy8gdGVz
dCB0aGF0IHVuY2F1Z2h0IGV4Y2VwdGlvbnMgZG8gbm90IGFmZmVjdCByZWdpc3RlcmVkIHBhaW50
IGNhbGxiYWNrcworPC9zY3JpcHQ+CisKKzxzY3JpcHQ+CitpbXBvcnRXb3JrbGV0KENTUy5wYWlu
dFdvcmtsZXQsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2RlJykudGV4dENvbnRlbnQpOwor
PC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353557</attachid>
            <date>2018-10-31 16:47:37 -0700</date>
            <delta_ts>2018-10-31 17:11:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190979-20181031164731.patch</filename>
            <type>text/plain</type>
            <size>188706</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjQ4NmIwMmU1NmRmOTIz
MGM2MTUyMTYzZWI3MmZkYzA0OTBmMzgxNS4uZjI0NTI5MzNmZjAwMzQ0OGRlYzEzNmRiMWJmZjQy
ODVmYmMyNWRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MyBAQAorMjAxOC0xMC0yOSAgSnVz
dGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIG5l
dyBnbG9iYWwgb2JqZWN0IGFuZCBwcmVsaW1pbmFyeSBXb3JrbGV0cyBzdXBwb3J0IGZvciBDU1Mg
cGFpbnRpbmcgYXBpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTA5NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUZXN0OiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvd29ya2xldC5odG1sCisKKyAgICAgICAg
QWRkIGEgbmV3IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgYW5kIGdsb2JhbCBvYmplY3QgdG8gcnVu
IHdvcmtsZXRzIGluLiBUaGlzIGlzIG1vc3RseSBjb3B5K3Bhc3RlCisgICAgICAgIGZyb20gV29y
a2VycywgYnV0IHdpdGhvdXQgYW55IG9mIHRoZSB0aHJlYWRpbmcuIFdvcmtsZXQuYWRkTW9kdWxl
IGRvZXMgbm90IHlldCBzdXBwb3J0IGxvYWRpbmcgc2NyaXB0cworICAgICAgICBvciBkb2luZyBj
cm9zcyBvcmlnaW4gY2hlY2tpbmcuIFRoZXJlIGFyZSBxdWl0ZSBhIGZldyBwYXJ0cyBvZiB0aGUg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCBhcGkgdGhhdCBhcmUKKyAgICAgICAgbGVmdCBhcyBBU1NF
UlRfTk9UX1JFQUNIRUQoKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2Jq
ZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0IGNvbnN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20u
Y3BwLgorICAgICAgICAoV2ViQ29yZTo6SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6dmlzaXRB
ZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNQYWludFdvcmtsZXRHbG9i
YWxTY29wZTo6cmVnaXN0ZXJQYWludCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrbGV0
R2xvYmFsU2NvcGVCYXNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtsZXRH
bG9iYWxTY29wZUJhc2U6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZSk6CisgICAgICAgIChXZWJD
b3JlOjpKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6Y2xlYXJET01HdWFyZGVkT2JqZWN0
cyk6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnZpc2l0Q2hp
bGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpkZXN0
cm95KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtsZXRHbG9i
YWxTY29wZUJhc2U6OnN1cHBvcnRzUmljaFNvdXJjZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6
SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzaG91bGRJbnRlcnJ1cHRTY3JpcHQpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzaG91bGRJbnRlcnJ1cHRTY3Jp
cHRCZWZvcmVUaW1lb3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3Bl
QmFzZTo6amF2YVNjcmlwdFJ1bnRpbWVGbGFncyk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToK
KyAgICAgICAgKFdlYkNvcmU6OnRvSlNXb3JrbGV0R2xvYmFsU2NvcGUpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6d3JhcHBlZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnByb3h5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6Y3JlYXRlU3RydWN0dXJlKToK
KyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFN0
YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29w
ZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjU3RhdGVGcm9tV29ya2xldEdsb2JhbFNjb3BlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKElzRE9NR2xvYmFsT2JqZWN0KToKKyAgICAgICAg
KFNob3VsZFVzZUdsb2JhbE9iamVjdFByb3RvdHlwZSk6CisgICAgICAgIChHZW5lcmF0ZUhlYWRl
cik6CisgICAgICAgIChHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZ0ZvckV4
cG9zZWQpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGw6CisgICAgICAgICogY3NzL0NTU1BhaW50
SW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYWludEltYWdlVmFsdWU6Omlt
YWdlKToKKyAgICAgICAgKiBjc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRPTUNTU1BhaW50V29ya2xldDo6ZW5zdXJlUGFpbnRXb3JrbGV0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTUNTU1BhaW50V29ya2xldDo6ZW5zdXJlUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9ET01DU1NQYWludFdvcmtsZXQuaDoKKyAgICAg
ICAgKiBjc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmlkbDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVuc3VyZUNTU1BhaW50V29ya2xldCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVuc3VyZUNTU1BhaW50V29ya2xldEds
b2JhbFNjb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpnZXRDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSk6CisgICAg
ICAgICogZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbjoKKyAgICAgICAgKiBkb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0Ojp2bSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpleGVj
U3RhdGUpOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojppc1dvcmtsZXRHbG9iYWxTY29wZSBj
b25zdCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dlckFnZW50OjppbmplY3Rl
ZFNjcmlwdEZvckV2YWwpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtl
clJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1lQWdlbnQ6
OmluamVjdGVkU2NyaXB0Rm9yRXZhbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3Vz
dG9tUGFpbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludEltYWdlOjpD
dXN0b21QYWludEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50SW1hZ2U6OmRv
Q3VzdG9tUGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1h
Z2UuaDoKKyAgICAgICAgKiB3b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHA6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5j
cHAuCisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludFdvcmtsZXRH
bG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6
ZGV2aWNlUGl4ZWxSYXRpbyk6CisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxT
Y29wZTo6YWRkUmVnaXN0ZXJlZFBhaW50KToKKyAgICAgICAgKiB3b3JrbGV0cy9QYWludFdvcmts
ZXRHbG9iYWxTY29wZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50
V29ya2xldEdsb2JhbFNjb3BlLmguCisgICAgICAgICogd29ya2xldHMvUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUuaWRsLgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXQuY3BwOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
LgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtsZXQ6OldvcmtsZXQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldDo6YWRkTW9kdWxl
KToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwLgorICAgICAgICAqIHdvcmts
ZXRzL1dvcmtsZXQuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUuaWRsLgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRDb25zb2xl
Q2xpZW50LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93
b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0
Q29uc29sZUNsaWVudDo6V29ya2xldENvbnNvbGVDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2xldENvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtsZXRDb25zb2xlQ2xpZW50Ojpjb3VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrbGV0Q29uc29sZUNsaWVudDo6dGltZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0
Q29uc29sZUNsaWVudDo6dGltZUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29s
ZUNsaWVudDo6cHJvZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29sZUNsaWVu
dDo6cHJvZmlsZUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29sZUNsaWVudDo6
dGFrZUhlYXBTbmFwc2hvdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29sZUNsaWVu
dDo6dGltZVN0YW1wKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRDb25zb2xlQ2xpZW50Ojpy
ZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldENvbnNvbGVDbGllbnQ6OnJlY29yZEVu
ZCk6CisgICAgICAgICogd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuaDogQWRkZWQuCisg
ICAgICAgICogd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxTY29wZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6On5Xb3JrbGV0R2xvYmFsU2NvcGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpldmFsdWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmlzSlNFeGVjdXRpb25Gb3JiaWRkZW4gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpkaXNhYmxlRXZhbCk6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmRpc2FibGVXZWJBc3NlbWJs
eSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmNvbXBsZXRlVVJMIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6bG9nRXhjZXB0aW9u
VG9Db25zb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29u
c29sZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjphZGRN
ZXNzYWdlKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmlzUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpp
ZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6
c2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6anNSdW50aW1l
RmxhZ3MgY29uc3QpOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3Jr
bGV0R2xvYmFsU2NvcGUuaWRsOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlLmlkbC4KKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0U2Ny
aXB0Q29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlw
dENvbnRyb2xsZXI6OldvcmtsZXRTY3JpcHRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjp+V29ya2xldFNjcmlwdENvbnRyb2xsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmZvcmJpZEV4ZWN1dGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6aXNFeGVjdXRpb25G
b3JiaWRkZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xs
ZXI6OmRpc2FibGVFdmFsKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRTY3JpcHRDb250cm9s
bGVyOjpkaXNhYmxlV2ViQXNzZW1ibHkpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlw
dENvbnRyb2xsZXI6OmluaXRTY3JpcHRXaXRoU3ViY2xhc3MpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtsZXRTY3JpcHRDb250cm9sbGVyOjpzZXRFeGNlcHRpb24pOgorICAgICAgICAqIHdvcmtsZXRz
L1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V29y
a2xldFNjcmlwdENvbnRyb2xsZXI6OndvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OnZtKToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0SWZOZWVkZWQpOgorCiAyMDE4
LTEwLTI2ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjM3NDU4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRl
eCAxMjliNmM1NDkzMmY5ZTRlODg0NjZkY2Y5MThjYmQ2ZTE3NDY0MmQ1Li5jNmZlMjM1ZTA5YzEz
M2M5OWRlMTMyN2EyODBhYzUzYTEwMjc5NDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTQz
LDYgKzE0Myw3IEBAIHNldChXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJD
T1JFX0RJUn0vd29ya2Vycy9zZXJ2aWNlIgogICAgICIke1dFQkNPUkVfRElSfS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dCIKICAgICAiJHtXRUJDT1JFX0RJUn0vd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ciIKKyAgICAiJHtXRUJDT1JFX0RJUn0vd29ya2xldHMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3ht
bCIKICAgICAiJHtXRUJDT1JFX0RJUn0veG1sL3BhcnNlciIKICAgICAiJHtERVJJVkVEX1NPVVJD
RVNfV0VCQ09SRV9ESVJ9IgpAQCAtNTM3LDcgKzUzOCw2IEBAIHNldChXZWJDb3JlX05PTl9TVkdf
SURMX0ZJTEVTCiAgICAgY3NzL0NTU01lZGlhUnVsZS5pZGwKICAgICBjc3MvQ1NTTmFtZXNwYWNl
UnVsZS5pZGwKICAgICBjc3MvQ1NTUGFpbnRDYWxsYmFjay5pZGwKLSAgICBjc3MvQ1NTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUuaWRsCiAgICAgY3NzL0NTU1BhZ2VSdWxlLmlkbAogICAgIGNzcy9D
U1NSdWxlLmlkbAogICAgIGNzcy9DU1NSdWxlTGlzdC5pZGwKQEAgLTkwNiw2ICs5MDYsMTAgQEAg
c2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICB3b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlclVwZGF0ZVZpYUNhY2hlLmlkbAogICAgIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyV2luZG93Q2xpZW50LmlkbAogCisgICAgd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUuaWRsCisgICAgd29ya2xldHMvV29ya2xldC5pZGwKKyAgICB3b3JrbGV0cy9Xb3JrbGV0R2xv
YmFsU2NvcGUuaWRsCisKICAgICB4bWwvRE9NUGFyc2VyLmlkbAogICAgIHhtbC9YTUxIdHRwUmVx
dWVzdC5pZGwKICAgICB4bWwvWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5pZGwKQEAgLTE2ODQs
NiArMTY4OCw4IEBAIHNldChXSU5ET1dfQ09OU1RSVUNUT1JTX0ZJTEUgJHtERVJJVkVEX1NPVVJD
RVNfV0VCQ09SRV9ESVJ9L0RPTVdpbmRvd0NvbnN0cnVjdG9yCiBzZXQoV09SS0VSR0xPQkFMU0NP
UEVfQ09OU1RSVUNUT1JTX0ZJTEUgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L1dvcmtl
ckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCkKIHNldChERURJQ0FURURXT1JLRVJHTE9CQUxT
Q09QRV9DT05TVFJVQ1RPUlNfRklMRSAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsKQogc2V0KFNFUlZJQ0VXT1JL
RVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSAke0RFUklWRURfU09VUkNFU19XRUJDT1JF
X0RJUn0vU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCkKK3NldChXT1JL
TEVUR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09S
RV9ESVJ9L1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwpCitzZXQoUEFJTlRXT1JL
TEVUR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09S
RV9ESVJ9L1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCkKIAogV0VCS0lU
X0ZSQU1FV09SS19ERUNMQVJFKFdlYkNvcmUpCiBXRUJLSVRfSU5DTFVERV9DT05GSUdfRklMRVNf
SUZfRVhJU1RTKCkKQEAgLTE4NjMsNyArMTg2OSw5IEBAIEdFTkVSQVRFX0JJTkRJTkdTKFdlYkNv
cmVCaW5kaW5ncwogICAgICAgICAtLXdpbmRvd0NvbnN0cnVjdG9yc0ZpbGUgJHtXSU5ET1dfQ09O
U1RSVUNUT1JTX0ZJTEV9CiAgICAgICAgIC0td29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNG
aWxlICR7V09SS0VSR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEV9CiAgICAgICAgIC0tZGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlICR7REVESUNBVEVEV09SS0VS
R0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEV9Ci0gICAgICAgIC0tc2VydmljZVdvcmtlckds
b2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSAke1NFUlZJQ0VXT1JLRVJHTE9CQUxTQ09QRV9DT05T
VFJVQ1RPUlNfRklMRX0pCisgICAgICAgIC0tc2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3JzRmlsZSAke1NFUlZJQ0VXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRX0K
KyAgICAgICAgLS13b3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlICR7V09SS0xFVEdM
T0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFfQorICAgICAgICAtLXBhaW50V29ya2xldEdsb2Jh
bFNjb3BlQ29uc3RydWN0b3JzRmlsZSAke1BBSU5UV09SS0xFVEdMT0JBTFNDT1BFX0NPTlNUUlVD
VE9SU19GSUxFfSkKIAogR0VORVJBVEVfQklORElOR1MoV2ViQ29yZVRlc3RTdXBwb3J0QmluZGlu
Z3MKICAgICBPVVRQVVRfU09VUkNFIFdlYkNvcmVUZXN0U3VwcG9ydF9TT1VSQ0VTCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA2NjM5MGQ0OWZiMzlkNmM0YjJjNDc2MjYwNWQyNjA1
ZmIyYjViMTBkLi44ZTkwMTcxNzAzM2U1YzYyZThhYzgyZTBjN2Y2YTk3NTIwM2VjZjEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTg2LDYgKzg2LDcgQEAgVlBBVEggPSBcCiAg
ICAgJChXZWJDb3JlKS93ZWJzb2NrZXRzIFwKICAgICAkKFdlYkNvcmUpL3dvcmtlcnMgXAogICAg
ICQoV2ViQ29yZSkvd29ya2Vycy9zZXJ2aWNlIFwKKyAgICAkKFdlYkNvcmUpL3dvcmtsZXRzIFwK
ICAgICAkKFdlYkNvcmUpL3htbCBcCiAjCiAKQEAgLTQ1Miw3ICs0NTMsNiBAQCBKU19CSU5ESU5H
X0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9jc3MvQ1NTTmFtZXNwYWNlUnVsZS5pZGwgXAogICAg
ICQoV2ViQ29yZSkvY3NzL0NTU1BhZ2VSdWxlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9jc3MvQ1NT
UGFpbnRDYWxsYmFjay5pZGwgXAotICAgICQoV2ViQ29yZSkvY3NzL0NTU1BhaW50V29ya2xldEds
b2JhbFNjb3BlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9jc3MvQ1NTUnVsZS5pZGwgXAogICAgICQo
V2ViQ29yZSkvY3NzL0NTU1J1bGVMaXN0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9jc3MvQ1NTU3R5
bGVEZWNsYXJhdGlvbi5pZGwgXApAQCAtMTAyNCw2ICsxMDI0LDkgQEAgSlNfQklORElOR19JRExT
ID0gXAogICAgICQoV2ViQ29yZSkvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb24uaWRsIFwKICAgICAkKFdlYkNvcmUpL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
VXBkYXRlVmlhQ2FjaGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyV2luZG93Q2xpZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS93b3JrbGV0cy9QYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5pZGwgXAorICAgICQoV2ViQ29yZSkvd29ya2xldHMvV29ya2xl
dC5pZGwgXAorICAgICQoV2ViQ29yZSkvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmlkbCBc
CiAgICAgJChXZWJDb3JlKS94bWwvRE9NUGFyc2VyLmlkbCBcCiAgICAgJChXZWJDb3JlKS94bWwv
WE1MSHR0cFJlcXVlc3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL3htbC9YTUxIdHRwUmVxdWVzdEV2
ZW50VGFyZ2V0LmlkbCBcCkBAIC0xMTU2LDYgKzExNTksNyBAQCBhbGwgOiBcCiAgICAgJChTVVBQ
TEVNRU5UQUxfREVQRU5ERU5DWV9GSUxFKSBcCiAgICAgJChXSU5ET1dfQ09OU1RSVUNUT1JTX0ZJ
TEUpIFwKICAgICAkKFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFKSBcCisgICAg
JChXT1JLTEVUR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUpIFwKICAgICAkKEpTX0RPTV9I
RUFERVJTKSBcCiAgICAgJChXRUJfRE9NX0hFQURFUlMpIFwKICAgICBcCkBAIC0xNTA0LDYgKzE1
MDgsNyBAQCBJRExfSU5DTFVERVMgPSBcCiAgICAgJChXZWJDb3JlKS9zdmcgXAogICAgICQoV2Vi
Q29yZSkvdGVzdGluZyBcCiAgICAgJChXZWJDb3JlKS93b3JrZXJzIFwKKyAgICAkKFdlYkNvcmUp
L3dvcmtsZXRzIFwKICAgICAkKFdlYkNvcmUpL3htbAogCiBJRExfQ09NTU9OX0FSR1MgPSAkKElE
TF9JTkNMVURFUzolPS0taW5jbHVkZSAlKSAtLXdyaXRlLWRlcGVuZGVuY2llcyAtLW91dHB1dERp
ciAuCkBAIC0xNTE2LDYgKzE1MjEsOCBAQCBXSU5ET1dfQ09OU1RSVUNUT1JTX0ZJTEUgPSAuL0RP
TVdpbmRvd0NvbnN0cnVjdG9ycy5pZGwKIFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19G
SUxFID0gLi9Xb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKIERFRElDQVRFRFdPUktF
UkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFID0gLi9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZUNvbnN0cnVjdG9ycy5pZGwKIFNFUlZJQ0VXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RP
UlNfRklMRSA9IC4vU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbAorV09S
S0xFVEdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFID0gLi9Xb3JrbGV0R2xvYmFsU2NvcGVD
b25zdHJ1Y3RvcnMuaWRsCitQQUlOVFdPUktMRVRHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklM
RSA9IC4vUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCiBJRExfRklMRVNf
VE1QID0gLi9pZGxfZmlsZXMudG1wCiBJRExfQVRUUklCVVRFU19GSUxFID0gJChXZWJDb3JlKS9i
aW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgogCkBAIC0xNTI4LDEwICsxNTM1LDEw
IEBAIGVuZGVmCiAKICQoU1VQUExFTUVOVEFMX01BS0VGSUxFX0RFUFMpIDogJChQUkVQUk9DRVNT
X0lETFNfU0NSSVBUUykgJChKU19CSU5ESU5HX0lETFMpICQoUExBVEZPUk1fRkVBVFVSRV9ERUZJ
TkVTKSBEZXJpdmVkU291cmNlcy5tYWtlCiAJJChmb3JlYWNoIGYsJChKU19CSU5ESU5HX0lETFMp
LEBlY2hvICQoZik+PiQoSURMX0ZJTEVTX1RNUCkkKE5MKSkKLQkkKFBFUkwpICQoV2ViQ29yZSkv
YmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGwgLS1kZWZpbmVzICIkKEZFQVRVUkVf
QU5EX1BMQVRGT1JNX0RFRklORVMpICQoQURESVRJT05BTF9JRExfREVGSU5FUykgTEFOR1VBR0Vf
SkFWQVNDUklQVCIgLS1pZGxGaWxlc0xpc3QgJChJRExfRklMRVNfVE1QKSAtLXN1cHBsZW1lbnRh
bERlcGVuZGVuY3lGaWxlICQoU1VQUExFTUVOVEFMX0RFUEVOREVOQ1lfRklMRSkgLS13aW5kb3dD
b25zdHJ1Y3RvcnNGaWxlICQoV0lORE9XX0NPTlNUUlVDVE9SU19GSUxFKSAtLXdvcmtlckdsb2Jh
bFNjb3BlQ29uc3RydWN0b3JzRmlsZSAkKFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19G
SUxFKSAtLWRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSAkKERFRElD
QVRFRFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFKSAtLXNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgJChTRVJWSUNFV09SS0VSR0xPQkFMU0NPUEVfQ09O
U1RSVUNUT1JTX0ZJTEUpIC0tc3VwcGxlbWVudGFsTWFrZWZpbGVEZXBzICRACisJJChQRVJMKSAk
KFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsIC0tZGVmaW5lcyAi
JChGRUFUVVJFX0FORF9QTEFURk9STV9ERUZJTkVTKSAkKEFERElUSU9OQUxfSURMX0RFRklORVMp
IExBTkdVQUdFX0pBVkFTQ1JJUFQiIC0taWRsRmlsZXNMaXN0ICQoSURMX0ZJTEVTX1RNUCkgLS1z
dXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZSAkKFNVUFBMRU1FTlRBTF9ERVBFTkRFTkNZX0ZJTEUp
IC0td2luZG93Q29uc3RydWN0b3JzRmlsZSAkKFdJTkRPV19DT05TVFJVQ1RPUlNfRklMRSkgLS13
b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgJChXT1JLRVJHTE9CQUxTQ09QRV9DT05T
VFJVQ1RPUlNfRklMRSkgLS1kZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0Zp
bGUgJChERURJQ0FURURXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSkgLS1zZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlICQoU0VSVklDRVdPUktFUkdMT0JB
TFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFKSAtLXdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9y
c0ZpbGUgJChXT1JLTEVUR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUpIC0tcGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlICQoUEFJTlRXT1JLTEVUR0xPQkFMU0NPUEVf
Q09OU1RSVUNUT1JTX0ZJTEUpIC0tc3VwcGxlbWVudGFsTWFrZWZpbGVEZXBzICRACiAJJChERUxF
VEUpICQoSURMX0ZJTEVTX1RNUCkKIAotSlMlLmNwcCBKUyUuaCA6ICUuaWRsICQoSlNfQklORElO
R1NfU0NSSVBUUykgJChJRExfQVRUUklCVVRFU19GSUxFKSAkKFdJTkRPV19DT05TVFJVQ1RPUlNf
RklMRSkgJChXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSkgJChQTEFURk9STV9G
RUFUVVJFX0RFRklORVMpCitKUyUuY3BwIEpTJS5oIDogJS5pZGwgJChKU19CSU5ESU5HU19TQ1JJ
UFRTKSAkKElETF9BVFRSSUJVVEVTX0ZJTEUpICQoV0lORE9XX0NPTlNUUlVDVE9SU19GSUxFKSAk
KFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFKSAkKFdPUktMRVRHTE9CQUxTQ09Q
RV9DT05TVFJVQ1RPUlNfRklMRSkgJChQTEFURk9STV9GRUFUVVJFX0RFRklORVMpCiAJJChQRVJM
KSAkKFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGwgJChJRExf
Q09NTU9OX0FSR1MpIC0tZGVmaW5lcyAiJChGRUFUVVJFX0FORF9QTEFURk9STV9ERUZJTkVTKSAk
KEFERElUSU9OQUxfSURMX0RFRklORVMpIExBTkdVQUdFX0pBVkFTQ1JJUFQiIC0tZ2VuZXJhdG9y
IEpTIC0taWRsQXR0cmlidXRlc0ZpbGUgJChJRExfQVRUUklCVVRFU19GSUxFKSAtLXN1cHBsZW1l
bnRhbERlcGVuZGVuY3lGaWxlICQoU1VQUExFTUVOVEFMX0RFUEVOREVOQ1lfRklMRSkgJDwKIAog
LWluY2x1ZGUgJChTVVBQTEVNRU5UQUxfTUFLRUZJTEVfREVQUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXgg
YWViNjYyZWIyZjAwZTBjMmJkY2ViNWM3YWExZmU1NDBiMGMxYmI3Yy4uMTE4ZjU5MzYxN2Y5MWI4
ZTg1NGVlODc0MTlmMjIxNzYzYTYzMjEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTM4NSw3ICszODUs
NiBAQCBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRTdHJpbmdzLmNwcAogYmluZGluZ3MvanMvSlNE
T01Db252ZXJ0V2ViR0wuY3BwCiBiaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmNwcAogYmluZGlu
Z3MvanMvSlNEZXByZWNhdGVkQ1NTT01WYWx1ZUN1c3RvbS5jcHAKLWJpbmRpbmdzL2pzL0pTQ1NT
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwCiBiaW5kaW5ncy9qcy9KU0NhbGxiYWNr
RGF0YS5jcHAKIGJpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNw
cAogYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcApAQCAtNDQ2LDYgKzQ0
NSw3IEBAIGJpbmRpbmdzL2pzL0pTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcAogYmluZGluZ3MvanMv
SlNOb2RlTGlzdEN1c3RvbS5jcHAKIGJpbmRpbmdzL2pzL0pTT2Zmc2NyZWVuQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQ3VzdG9tLmNwcAogYmluZGluZ3MvanMvSlNQYWludFJlbmRlcmluZ0NvbnRl
eHQyREN1c3RvbS5jcHAKK2JpbmRpbmdzL2pzL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0
b20uY3BwCiBiaW5kaW5ncy9qcy9KU1BheW1lbnRNZXRob2RDaGFuZ2VFdmVudEN1c3RvbS5jcHAK
IGJpbmRpbmdzL2pzL0pTUGF5bWVudFJlc3BvbnNlQ3VzdG9tLmNwcAogYmluZGluZ3MvanMvSlNQ
ZXJmb3JtYW5jZUVudHJ5Q3VzdG9tLmNwcApAQCAtNDc4LDYgKzQ3OCw3IEBAIGJpbmRpbmdzL2pz
L0pTV2luZG93UHJveHkuY3BwCiBiaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5j
cHAKIGJpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwCiBiaW5kaW5ncy9q
cy9KU1dvcmtlck5hdmlnYXRvckN1c3RvbS5jcHAKK2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2Jh
bFNjb3BlQmFzZS5jcHAKIGJpbmRpbmdzL2pzL0pTWE1MRG9jdW1lbnRDdXN0b20uY3BwCiBiaW5k
aW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAogYmluZGluZ3MvanMvSlNYUGF0aE5T
UmVzb2x2ZXJDdXN0b20uY3BwCkBAIC02MTMsNyArNjE0LDYgQEAgY3NzL0NTU05hbWVkSW1hZ2VW
YWx1ZS5jcHAKIGNzcy9DU1NOYW1lc3BhY2VSdWxlLmNwcAogY3NzL0NTU1BhZ2VSdWxlLmNwcAog
Y3NzL0NTU1BhaW50SW1hZ2VWYWx1ZS5jcHAKLWNzcy9DU1NQYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5jcHAKIGNzcy9DU1NQZW5kaW5nU3Vic3RpdHV0aW9uVmFsdWUuY3BwCiBjc3MvQ1NTUHJpbWl0
aXZlVmFsdWUuY3BwCiBjc3MvQ1NTUHJvcGVydHkuY3BwCkBAIC0yMzcxLDYgKzIzNzEsMTIgQEAg
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKIHdvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAogd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKIAord29ya2xldHMvV29ya2xldC5jcHAK
K3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcAord29ya2xldHMvV29ya2xldEdsb2Jh
bFNjb3BlLmNwcAord29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCit3b3JrbGV0
cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKKwogeG1sL0RPTVBhcnNlci5jcHAKIHhtbC9O
YXRpdmVYUGF0aE5TUmVzb2x2ZXIuY3BwCiB4bWwvWE1MRXJyb3JzLmNwcApAQCAtMjQ4MCw3ICsy
NDg2LDkgQEAgSlNDU1NLZXlmcmFtZXNSdWxlLmNwcAogSlNDU1NNZWRpYVJ1bGUuY3BwCiBKU0NT
U05hbWVzcGFjZVJ1bGUuY3BwCiBKU0NTU1BhaW50Q2FsbGJhY2suY3BwCi1KU0NTU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlLmNwcAorSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKK0pTV29y
a2xldC5jcHAKK0pTV29ya2xldEdsb2JhbFNjb3BlLmNwcAogSlNDU1NQYWdlUnVsZS5jcHAKIEpT
Q1NTUnVsZS5jcHAKIEpTQ1NTUnVsZUxpc3QuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmMyZDcxZWZjNzcxNTdkZGUzZDM0
NGYyYWZlNDc5NjczNjE0NmE4My4uYWJiMDQyZThjNDE4MzA5ZGNkZjhhZGIxM2YxODc4Yzg5Yzdi
YTQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTM1MiwxNCArMTM1MiwxOSBAQAogCQk0QjM0ODA5NDBFRUY1MEQ0MDBBQzFC
NDEgLyogSW1hZ2VTb3VyY2VDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEIzNDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0cuaCAq
LzsgfTsKIAkJNEI1QkREOUIyMTY1OEExNTAwREQ0MjYyIC8qIENTU1BhaW50Q2FsbGJhY2suaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCNUJERDlBMjE2
NThBMTUwMERENDI2MiAvKiBDU1NQYWludENhbGxiYWNrLmggKi87IH07CiAJCTRCNkI1Q0JEMjE2
NDBFRkYwMDYwMzgxNyAvKiBET01DU1NQYWludFdvcmtsZXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCNkI1Q0I4MjE2M0VDMDcwMDYwMzgxNyAvKiBE
T01DU1NQYWludFdvcmtsZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwotCQk0QjZCNUNDMDIxNjQzODY0MDA2MDM4MTcgLyogQ1NTUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDRCNkI1Q0JGMjE2NDM4NjQwMDYwMzgxNyAvKiBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5oICovOyB9OworCQk0QjZCNUNDMDIxNjQzODY0MDA2MDM4MTcgLyogUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRCNkI1Q0JGMjE2NDM4NjQwMDYwMzgxNyAvKiBQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oICov
OyB9OwogCQk0QjZFODc2OTIxNzZENjkyMDA0MjBFNUUgLyogQ1NTUGFpbnRJbWFnZVZhbHVlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjZFODc2ODIx
NzZENjkyMDA0MjBFNUUgLyogQ1NTUGFpbnRJbWFnZVZhbHVlLmggKi87IH07CiAJCTRCNkZBNkY0
MEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCNkZBNkYyMEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFy
dFJlcGxhY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0QjdBRTQ5MzIxNzdCNTZGMDBDNTk5NTkgLyogQ3VzdG9tUGFpbnRJbWFnZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI3QUU0OTIyMTc3QjU2
RjAwQzU5OTU5IC8qIEN1c3RvbVBhaW50SW1hZ2UuaCAqLzsgfTsKKwkJNEI3RjlDNTIyMTgzQjVF
NTAwMUNFQkEwIC8qIFdvcmtsZXRDb25zb2xlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjdGOUM1MTIxODNCNUU1MDAxQ0VCQTAgLyogV29y
a2xldENvbnNvbGVDbGllbnQuaCAqLzsgfTsKIAkJNEJBRTk1QjEwQjJGQTlDRTAwQUVEOEEwIC8q
IEVkaXRvckRlbGV0ZUFjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEJBRTk1QjAwQjJGQTlDRTAwQUVEOEEwIC8qIEVkaXRvckRlbGV0ZUFjdGlv
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRC
REEzRkZFMjE1MUI2RjUwMEZENjYwNCAvKiBET01DU1NDdXN0b21Qcm9wZXJ0eURlc2NyaXB0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCREEzRkY4
MjE1MUI2RjIwMEZENjYwNCAvKiBET01DU1NDdXN0b21Qcm9wZXJ0eURlc2NyaXB0b3IuaCAqLzsg
fTsKIAkJNEJEQTNGRkYyMTUxQjZGNTAwRkQ2NjA0IC8qIERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJv
cGVydHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRC
REEzRkY5MjE1MUI2RjMwMEZENjYwNCAvKiBET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5Lmgg
Ki87IH07CiAJCTRCREE0MDAxMjE1MUI2RjUwMEZENjYwNCAvKiBDU1NSZWdpc3RlcmVkQ3VzdG9t
UHJvcGVydHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRCREEzRkZCMjE1MUI2RjQwMEZENjYwNCAvKiBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0QkRF
QTMyMDIxN0VDNTVGMDA1MkRGQ0QgLyogV29ya2xldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJERUEzMUYyMTdFQzU1RjAwNTJERkNEIC8qIFdvcmts
ZXQuaCAqLzsgfTsKKwkJNEJERUEzMjUyMTdGRTJFNDAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxT
Y29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJE
RUEzMjQyMTdGRTJFNDAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxTY29wZS5oICovOyB9OworCQk0
QkRFQTMyODIxODAwM0Y3MDA1MkRGQ0QgLyogV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCREVBMzI3MjE4MDAz
RjcwMDUyREZDRCAvKiBXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oICovOyB9OworCQk0QkRFQTMy
QzIxODAzM0VCMDA1MkRGQ0QgLyogSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QkRFQTMyQjIxODAzM0VCMDA1
MkRGQ0QgLyogSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmggKi87IH07CiAJCTREM0IwMEFCMjE1
RDY5QTcwMDc2Qjk4MyAvKiBNZWRpYVJlY29yZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RDNCMDBBOTIxNUQ2OUE3MDA3NkI5ODMgLyogTWVkaWFS
ZWNvcmRlci5oICovOyB9OwogCQk0RDNCMDBBRjIxNUQ2QTY5MDA3NkI5ODMgLyogQmxvYkV2ZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RDNCMDBB
RDIxNUQ2QTY5MDA3NkI5ODMgLyogQmxvYkV2ZW50LmggKi87IH07CiAJCTREQjcxMzBEMjE2RUNC
NEQwMDk2QTRERCAvKiBNZWRpYVJlY29yZGVyRXJyb3JFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNERCNzEzMEMyMTZFQzJCRDAwOTZBNEREIC8q
IE1lZGlhUmVjb3JkZXJFcnJvckV2ZW50LmggKi87IH07CkBAIC03OTAxLDE2ICs3OTA2LDE4IEBA
CiAJCTRCNkI1Q0I2MjE2M0RDMUEwMDYwMzgxNyAvKiBET01DU1NQYWludFdvcmtsZXQuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IERPTUNTU1BhaW50V29ya2xldC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTRCNkI1Q0I4MjE2M0VDMDcwMDYwMzgxNyAvKiBET01DU1NQYWludFdvcmtsZXQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRE9NQ1NTUGFpbnRXb3JrbGV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTRCNkI1Q0I5MjE2M0VEMzIwMDYwMzgxNyAvKiBET01DU1NQYWludFdvcmtsZXQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRE9NQ1NTUGFpbnRXb3JrbGV0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNEI2QjVDQkUyMTY0MzRGQjAwNjAzODE3IC8qIEpTQ1NTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDU1NQYWludFdv
cmtsZXRHbG9iYWxTY29wZUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTRCNkI1Q0JGMjE2NDM4NjQwMDYwMzgxNyAvKiBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk0QjZCNUNDMTIxNjQzOUNGMDA2MDM4MTcgLyogQ1NTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0QjZCNUNDMzIx
NjQzQThFMDA2MDM4MTcgLyogQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENT
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNEI2QjVDQkUyMTY0MzRGQjAwNjAzODE3IC8qIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZUN1
c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRCNkI1Q0JGMjE2NDM4NjQw
MDYwMzgxNyAvKiBQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QjZC
NUNDMTIxNjQzOUNGMDA2MDM4MTcgLyogUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0QjZCNUNDMzIxNjQzQThFMDA2MDM4MTcgLyogUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI2RTg3NjgyMTc2RDY5MjAwNDIwRTVFIC8qIENTU1Bh
aW50SW1hZ2VWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NQYWludEltYWdlVmFsdWUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI2RTg3NkIyMTc2RDhBMTAwNDIwRTVFIC8qIENT
U1BhaW50SW1hZ2VWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NQYWludEltYWdlVmFs
dWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QjZGQTZGMjBDMzlFNDhDMDAw
ODcwMTEgLyogU21hcnRSZXBsYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNtYXJ0UmVwbGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QjZGQTZGNjBD
MzlFNEExMDAwODcwMTEgLyogU21hcnRSZXBsYWNlQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU21hcnRSZXBsYWNlQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0QjdBRTQ5MjIxNzdCNTZGMDBDNTk5NTkgLyogQ3VzdG9tUGFpbnRJbWFnZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDdXN0b21QYWludEltYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTRCN0FFNDk1MjE3N0I2M0UwMEM1OTk1OSAvKiBDdXN0b21QYWludEltYWdlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEN1c3RvbVBhaW50SW1hZ2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0QjdGOUM1MTIxODNCNUU1MDAxQ0VCQTAgLyogV29ya2xldENvbnNv
bGVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2xldENvbnNvbGVDbGllbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEI3RjlDNTQyMTgzQjYzNDAwMUNFQkEwIC8qIFdvcmts
ZXRDb25zb2xlQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtsZXRDb25zb2xlQ2xp
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEJBRTk1QjAwQjJGQTlDRTAw
QUVEOEEwIC8qIEVkaXRvckRlbGV0ZUFjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBFZGl0b3JEZWxldGVBY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNEJEQTNGRjUyMTUxQjZGMDAwRkQ2NjA0IC8qIERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVy
dHkuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVy
dHkuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QkRBM0ZGNzIxNTFCNkYxMDBG
RDY2MDQgLyogRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc5MTgsNiArNzkyNSwxNiBAQAogCQk0QkRB
M0ZGOTIxNTFCNkYzMDBGRDY2MDQgLyogRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01DU1NSZWdpc3RlckN1c3RvbVByb3Bl
cnR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCREEzRkZBMjE1MUI2RjMwMEZE
NjYwNCAvKiBET01DU1NDdXN0b21Qcm9wZXJ0eURlc2NyaXB0b3IuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IERPTUNTU0N1c3RvbVByb3BlcnR5RGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTRCREEzRkZCMjE1MUI2RjQwMEZENjYwNCAvKiBDU1NSZWdpc3Rl
cmVkQ3VzdG9tUHJvcGVydHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NT
UmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTRCREVBMzFDMjE3RUJDRjUwMDUyREZDRCAvKiBXb3JrbGV0LmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXb3JrbGV0Lmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEJERUEzMUYyMTdFQzU1RjAwNTJERkNE
IC8qIFdvcmtsZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2xldC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0QkRFQTMyMzIxN0VDOTZBMDA1MkRGQ0QgLyogV29ya2xldC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXb3JrbGV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNEJERUEzMjQyMTdGRTJFNDAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxTY29wZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXb3JrbGV0R2xvYmFsU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNEJERUEzMjYyMTdGRTJGQTAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxTY29wZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrbGV0R2xvYmFsU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0QkRFQTMyNzIxODAwM0Y3MDA1MkRGQ0QgLyogV29ya2xldFNjcmlw
dENvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEJERUEzMjkyMTgwMDQwQzAwNTJERkNEIC8q
IFdvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtsZXRT
Y3JpcHRDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEJERUEz
MkEyMTgwMTA3MjAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxTY29wZS5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV29ya2xl
dEdsb2JhbFNjb3BlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEJERUEzMkIy
MTgwMzNFQjAwNTJERkNEIC8qIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNEJERUEzMkQyMTgwMzQwNTAwNTJERkNEIC8qIEpTV29ya2xldEdsb2JhbFNjb3BlQmFz
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RDNCMDBBNDIxNUQ2MTA0MDA3NkI5ODMgLyog
TWVkaWFSZWNvcmRlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTWVkaWFSZWNvcmRlci5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTREM0IwMEE2MjE1RDY0NUIwMDc2Qjk4
MyAvKiBCbG9iRXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEJsb2JFdmVudC5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTREM0IwMEE4MjE1RDY5QTYwMDc2Qjk4MyAv
KiBNZWRpYVJlY29yZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE1lZGlhUmVjb3JkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU4MDEs
NiArMTU4MTgsNyBAQAogCQkJCUIyMjI3N0NBMEQwMEJGMUUwMDcxQjc4MiAvKiBzdmcgKi8sCiAJ
CQkJNDE3REE0Q0QxMzczNDIwNDAwN0M1N0ZCIC8qIHRlc3RpbmcgKi8sCiAJCQkJMkU0MzQ2MzEw
RjU0NkE2ODAwQjBGMUJBIC8qIHdvcmtlcnMgKi8sCisJCQkJNEJERUEzMTgyMTdFQkI4ODAwNTJE
RkNEIC8qIHdvcmtsZXRzICovLAogCQkJCUUxRjA0MjQzMDk4MzkzODkwMDY2OTRFQSAvKiB4bWwg
Ki8sCiAJCQkJNjU2NTgwRUMwOUQxMkIyMDAwMEU2MUQ3IC8qIERlcml2ZWQgU291cmNlcyAqLywK
IAkJCQkwODlDMTY2NUZFODQxMTU4QzAyQUFDMDcgLyogUmVzb3VyY2VzICovLApAQCAtMTgwMzYs
NiArMTgwNTQsMjYgQEAKIAkJCXBhdGggPSBhbmltYXRpb247CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwogCQl9OworCQk0QkRFQTMxODIxN0VCQjg4MDA1MkRGQ0QgLyogd29ya2xldHMgKi8g
PSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTRCNkI1Q0MxMjE2
NDM5Q0YwMDYwMzgxNyAvKiBQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAgKi8sCisJCQkJNEI2
QjVDQkYyMTY0Mzg2NDAwNjAzODE3IC8qIFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmggKi8sCisJ
CQkJNEI2QjVDQzMyMTY0M0E4RTAwNjAzODE3IC8qIFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmlk
bCAqLywKKwkJCQk0QkRFQTMyMzIxN0VDOTZBMDA1MkRGQ0QgLyogV29ya2xldC5jcHAgKi8sCisJ
CQkJNEJERUEzMUYyMTdFQzU1RjAwNTJERkNEIC8qIFdvcmtsZXQuaCAqLywKKwkJCQk0QkRFQTMx
QzIxN0VCQ0Y1MDA1MkRGQ0QgLyogV29ya2xldC5pZGwgKi8sCisJCQkJNEI3RjlDNTQyMTgzQjYz
NDAwMUNFQkEwIC8qIFdvcmtsZXRDb25zb2xlQ2xpZW50LmNwcCAqLywKKwkJCQk0QjdGOUM1MTIx
ODNCNUU1MDAxQ0VCQTAgLyogV29ya2xldENvbnNvbGVDbGllbnQuaCAqLywKKwkJCQk0QkRFQTMy
NjIxN0ZFMkZBMDA1MkRGQ0QgLyogV29ya2xldEdsb2JhbFNjb3BlLmNwcCAqLywKKwkJCQk0QkRF
QTMyNDIxN0ZFMkU0MDA1MkRGQ0QgLyogV29ya2xldEdsb2JhbFNjb3BlLmggKi8sCisJCQkJNEJE
RUEzMkEyMTgwMTA3MjAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxTY29wZS5pZGwgKi8sCisJCQkJ
NEJERUEzMjkyMTgwMDQwQzAwNTJERkNEIC8qIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcCAq
LywKKwkJCQk0QkRFQTMyNzIxODAwM0Y3MDA1MkRGQ0QgLyogV29ya2xldFNjcmlwdENvbnRyb2xs
ZXIuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gd29ya2xldHM7CisJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOworCQl9OwogCQk0RDNCMDBBMDIxNUQ1QzBGMDA3NkI5ODMgLyogbWVkaWFyZWNvcmRl
ciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yNDQwOSw2
ICsyNDQ0Nyw4IEBACiAJCQkJQkNCRkI1M0IwRENEMjlDRjAwMTlCM0U1IC8qIEpTV2luZG93UHJv
eHkuaCAqLywKIAkJCQlFMUMzNkQzMjBFQjBBMDk0MDA3NDEwQkMgLyogSlNXb3JrZXJHbG9iYWxT
Y29wZUJhc2UuY3BwICovLAogCQkJCUUxQzM2RDMzMEVCMEEwOTQwMDc0MTBCQyAvKiBKU1dvcmtl
ckdsb2JhbFNjb3BlQmFzZS5oICovLAorCQkJCTRCREVBMzJEMjE4MDM0MDUwMDUyREZDRCAvKiBK
U1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwICovLAorCQkJCTRCREVBMzJCMjE4MDMzRUIwMDUy
REZDRCAvKiBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuaCAqLywKIAkJCQk3MDlBMDFGRDFFM0Qw
QkNDMDA2QjBENEMgLyogTW9kdWxlRmV0Y2hGYWlsdXJlS2luZC5oICovLAogCQkJCTQxQjQ1OUVE
MUY1NUVCQzcwMDAwRjZGRCAvKiBSZWFkYWJsZVN0cmVhbS5jcHAgKi8sCiAJCQkJNDFCNDU5REEx
RjRDQURCOTAwMDBGNkZEIC8qIFJlYWRhYmxlU3RyZWFtLmggKi8sCkBAIC0yNDQ0OSwxMiArMjQ0
ODksMTIgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTdDRDM0NDFCMUYzMkRFMzAwMDBEQ0Q0OSAv
KiBDYWNoZWQgQXR0cmlidXRlcyB3LyBJbnZhbGlkYXRpb24gKi8sCiAJCQkJN0MzRDhFRTQxRTA4
QkFCRTAwMjNCMDg0IC8qIEdDIC8gV3JhcHBpbmcgT25seSAqLywKLQkJCQk0QjZCNUNCRTIxNjQz
NEZCMDA2MDM4MTcgLyogSlNDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZUN1c3RvbS5jcHAgKi8s
CiAJCQkJOUJDNUY5REYxRDVBQUY2QTAwMkI3NDlEIC8qIEpTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5
Q3VzdG9tLmNwcCAqLywKIAkJCQlCQ0Q5QzI1RTBDMTdBQTY3MDA1QzkwQTIgLyogSlNET01XaW5k
b3dDdXN0b20uY3BwICovLAogCQkJCTY1MkZCQkJCMERFMjdDQjYwMDAxRDM4NiAvKiBKU0RPTVdp
bmRvd0N1c3RvbS5oICovLAogCQkJCUJDNTgyM0Y0MEMwQTk4REYwMDUzRjFCNSAvKiBKU0hUTUxF
bGVtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlCQ0UxQzQzRjBEOTgzMEY0MDAzQjAyRjIgLyogSlNM
b2NhdGlvbkN1c3RvbS5jcHAgKi8sCisJCQkJNEI2QjVDQkUyMTY0MzRGQjAwNjAzODE3IC8qIEpT
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwICovLAogCQkJCTQxOEMzOTVEMUM4RjBB
QUIwMDUxQzhBMyAvKiBKU1JlYWRhYmxlU3RyZWFtU291cmNlQ3VzdG9tLmNwcCAqLywKIAkJCQk0
NkJDQkJCRTIwODUwMDVCMDA3MTA2MzggLyogSlNSZW1vdGVET01XaW5kb3dDdXN0b20uY3BwICov
LAogCQkJKTsKQEAgLTI2MDUyLDkgKzI2MDkyLDYgQEAKIAkJCQk0QjVCREQ5OTIxNjU4OEU1MDBE
RDQyNjIgLyogQ1NTUGFpbnRDYWxsYmFjay5pZGwgKi8sCiAJCQkJNEI2RTg3NkIyMTc2RDhBMTAw
NDIwRTVFIC8qIENTU1BhaW50SW1hZ2VWYWx1ZS5jcHAgKi8sCiAJCQkJNEI2RTg3NjgyMTc2RDY5
MjAwNDIwRTVFIC8qIENTU1BhaW50SW1hZ2VWYWx1ZS5oICovLAotCQkJCTRCNkI1Q0MxMjE2NDM5
Q0YwMDYwMzgxNyAvKiBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAgKi8sCi0JCQkJNEI2
QjVDQkYyMTY0Mzg2NDAwNjAzODE3IC8qIENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmggKi8s
Ci0JCQkJNEI2QjVDQzMyMTY0M0E4RTAwNjAzODE3IC8qIENTU1BhaW50V29ya2xldEdsb2JhbFNj
b3BlLmlkbCAqLywKIAkJCQk5NDE4Mjc4QzFEOENBRTk1MDA0OTI3NjQgLyogQ1NTUGVuZGluZ1N1
YnN0aXR1dGlvblZhbHVlLmNwcCAqLywKIAkJCQk5NDE4Mjc4RDFEOENBRTk1MDA0OTI3NjQgLyog
Q1NTUGVuZGluZ1N1YnN0aXR1dGlvblZhbHVlLmggKi8sCiAJCQkJQTgwRTZDREIwQTE5ODlDQTAw
N0ZCOEM1IC8qIENTU1ByaW1pdGl2ZVZhbHVlLmNwcCAqLywKQEAgLTI4MDU1LDcgKzI4MDkyLDYg
QEAKIAkJCQlBODBFNkQwMDBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTUGFnZVJ1bGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTRCNUJERDlCMjE2NThBMTUwMERENDI2MiAvKiBDU1NQYWludENhbGxiYWNr
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0QjZFODc2OTIxNzZENjkyMDA0MjBFNUUgLyogQ1NTUGFp
bnRJbWFnZVZhbHVlLmggaW4gSGVhZGVycyAqLywKLQkJCQk0QjZCNUNDMDIxNjQzODY0MDA2MDM4
MTcgLyogQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk0
NkQzNzJFMUQ2Q0IyOTQwMDc3MDg0RiAvKiBDU1NQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUU0QTc5OTUyMjBFRTRCMTQwMEMxOTU2OCAvKiBDU1NQYXJzZXJDb250ZXh0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5NDlDNzcwMTFENkUxRDk4MDBDMERFNEYgLyogQ1NTUGFyc2VyRmFzdFBhdGhz
LmggaW4gSGVhZGVycyAqLywKQEAgLTI5NzU4LDYgKzI5Nzk0LDcgQEAKIAkJCQlFMUMzNjJFRjBF
QUYyQUE5MDA3NDEwQkMgLyogSlNXb3JrZXJMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTEyNzFBNTgwRUVFQ0RFNDAwRjYxMjEzIC8qIEpTV29ya2VyTmF2aWdhdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MUYxNzUwNjFGMzU4QkY3MDBDNzQ5NTAgLyogSlNXb3JrZXJUeXBlLmggaW4g
SGVhZGVycyAqLywKKwkJCQk0QkRFQTMyQzIxODAzM0VCMDA1MkRGQ0QgLyogSlNXb3JrbGV0R2xv
YmFsU2NvcGVCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzRDOTZERDFBRDQ0ODM1MDAzNjVB
NjAgLyogSlNXcml0YWJsZVN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM1OENCNzAxQzUz
Mjc3NTAwRTBDMkQ4IC8qIEpTWE1MRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMzQ4
QkQ0MERCN0Y4MDQwMDRBQkFCOSAvKiBKU1hNTEh0dHBSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywK
QEAgLTMwMTQ0LDYgKzMwMTgxLDcgQEAKIAkJCQkwODg1MDY3RjExREEwNDVCMDAxODJCOTggLyog
UGFpbnRJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODg1MDY4MDExREEwNDVCMDAxODJCOTgg
LyogUGFpbnRQaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEIxRTEzRUIyMTc5MzdCMzAwNDJD
Rjk4IC8qIFBhaW50UmVuZGVyaW5nQ29udGV4dDJELmggaW4gSGVhZGVycyAqLywKKwkJCQk0QjZC
NUNDMDIxNjQzODY0MDA2MDM4MTcgLyogUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4MEU2Q0ZCMEExOTg5Q0EwMDdGQjhDNSAvKiBQYWlyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRDMxNjBBMzEyQjAyNkY3MDBDMUEzNTkgLyogUGFubmVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRDMxNjAxQTEyQjAyNjc2MDBDMUEzNTkgLyogUGFubmVyTm9kZS5oIGluIEhl
YWRlcnMgKi8sCkBAIC0zMTU2Miw2ICszMTYwMCwxMCBAQAogCQkJCTk3QUFCRDJEMTRGQTA5RDUw
MDc0NTdBRSAvKiBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTU0QTBDNjgxREI4MDdEOTAwMTdBOTBCIC8qIFdvcmtlclRvUGFnZUZyb250ZW5k
Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGMTc0RkUxRjM1ODk5MjAwQzc0OTUwIC8q
IFdvcmtlclR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTRCREVBMzIwMjE3RUM1NUYwMDUyREZD
RCAvKiBXb3JrbGV0LmggaW4gSGVhZGVycyAqLywKKwkJCQk0QjdGOUM1MjIxODNCNUU1MDAxQ0VC
QTAgLyogV29ya2xldENvbnNvbGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTRCREVBMzI1
MjE3RkUyRTQwMDUyREZDRCAvKiBXb3JrbGV0R2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTRCREVBMzI4MjE4MDAzRjcwMDUyREZDRCAvKiBXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMjQwOTlFNjQ5MjAwNTZFNTgxIC8qIFdyYXBDb250
ZW50c0luRHVtbXlTcGFuQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE2RTZGRTkxQkJE
MTJFNTAwMEE2MDUzIC8qIFdyaXRhYmxlU3RyZWFtQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxNkU2RkU4MUJCRDEyREYwMDBBNjA1MyAvKiBXcml0YWJsZVN0cmVhbUludGVybmFsc0J1
aWx0aW5zLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZUN1c3RvbS5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5ZmEzNDVhNWUzOGYzOWYzYzFkZWRjZDUz
YjZmYTM3Mzg1NTEzYjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NQYWludFdvcmtsZXRHbG9iYWxT
Y29wZUN1c3RvbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzMgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJKU0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCi0KLSNpZiBFTkFCTEUo
Q1NTX1BBSU5USU5HX0FQSSkKLQotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiSlND
U1NQYWludENhbGxiYWNrLmgiCi0jaW5jbHVkZSAiSlNET01Db252ZXJ0Q2FsbGJhY2tzLmgiCi0j
aW5jbHVkZSAiSlNET01Db252ZXJ0U2VxdWVuY2VzLmgiCi0jaW5jbHVkZSA8d3RmL1NldEZvclNj
b3BlLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLXN0
YXRpYyBKU1ZhbHVlIHRocm93SW52YWxpZE1vZGlmaWNhdGlvbkVycm9yKEV4ZWNTdGF0ZSYgc3Rh
dGUsIFRocm93U2NvcGUmIHNjb3BlLCBBU0NJSUxpdGVyYWwgbWVzc2FnZSkKLXsKLSAgICBzY29w
ZS5hc3NlcnROb0V4Y2VwdGlvbigpOwotICAgIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUs
IGNyZWF0ZURPTUV4Y2VwdGlvbigmc3RhdGUsIEludmFsaWRNb2RpZmljYXRpb25FcnJvciwgbWVz
c2FnZSkpOwotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCi12b2lkIEpTQ1NTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGU6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKEpTQzo6U2xvdFZpc2l0
b3ImIHZpc2l0b3IpCi17Ci0gICAgZm9yIChhdXRvJiByZWdpc3RlcmVkIDogd3JhcHBlZCgpLnBh
aW50RGVmaW5pdGlvbk1hcCgpLnZhbHVlcygpKQotICAgICAgICByZWdpc3RlcmVkLT5wYWludENh
bGxiYWNrLT52aXNpdEpTRnVuY3Rpb24odmlzaXRvcik7Ci19Ci0KLS8vIGh0dHBzOi8vZHJhZnRz
LmNzcy1ob3VkaW5pLm9yZy9jc3MtcGFpbnQtYXBpLyNyZWdpc3RlcmluZy1jdXN0b20tcGFpbnQK
LUpTVmFsdWUgSlNDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6cmVnaXN0ZXJQYWludChFeGVj
U3RhdGUmIHN0YXRlKQotewotICAgIHVzaW5nIFBhaW50RGVmaW5pdGlvbiA9IENTU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb247Ci0KLSAgICBDU1NQYWludFdvcmtsZXRH
bG9iYWxTY29wZSYgd29ya2xldEdsb2JhbFNjb3BlID0gd3JhcHBlZCgpOwotICAgIFZNJiB2bSA9
IHN0YXRlLnZtKCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwot
Ci0gICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDIpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3IoJnN0YXRlKSk7Ci0KLSAgICBBdG9taWNTdHJpbmcgbmFtZShzdGF0ZS51bmNoZWNr
ZWRBcmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT50b0F0b21pY1N0cmluZygmc3RhdGUpKTsK
LSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwotICAgIEpTVmFsdWUg
Y29uc3RydWN0b3JWYWx1ZSA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpOwotICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7Ci0KLSAgICBpZiAobmFtZS5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCAiVGhlIGZp
cnN0IGFyZ3VtZW50IG11c3Qgbm90IGJlIHRoZSBlbXB0eSBzdHJpbmciX3MpOwotCi0gICAgYXV0
byYgcGFpbnREZWZpbml0aW9uTWFwID0gd29ya2xldEdsb2JhbFNjb3BlLnBhaW50RGVmaW5pdGlv
bk1hcCgpOwotCi0gICAgaWYgKHBhaW50RGVmaW5pdGlvbk1hcC5jb250YWlucyhuYW1lKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93SW52YWxpZE1vZGlmaWNhdGlvbkVycm9yKHN0YXRlLCBzY29wZSwg
IlRoaXMgbmFtZSBoYXMgYWxyZWFkeSBiZWVuIHJlZ2lzdGVyZWQiX3MpOwotCi0gICAgVmVjdG9y
PFN0cmluZz4gaW5wdXRQcm9wZXJ0aWVzOwotCi0gICAgSlNWYWx1ZSBpbnB1dFByb3BlcnRpZXNJ
dGVyYWJsZVZhbHVlID0gY29uc3RydWN0b3JWYWx1ZS5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZ2bSwgImlucHV0UHJvcGVydGllcyIpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwotCi0gICAgaWYgKCFpbnB1dFByb3BlcnRpZXNJdGVyYWJs
ZVZhbHVlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIGlucHV0UHJvcGVydGllcyA9IGNvbnZlcnQ8
SURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj4oc3RhdGUsIGlucHV0UHJvcGVydGllc0l0ZXJhYmxl
VmFsdWUpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7Ci0KLSAg
ICAvLyBGSVhNRTogVmFsaWRhdGUgaW5wdXQgcHJvcGVydGllcyBoZXJlIChzdGVwIDcpLgotCi0g
ICAgVmVjdG9yPFN0cmluZz4gaW5wdXRBcmd1bWVudHM7Ci0KLSAgICBKU1ZhbHVlIGlucHV0QXJn
dW1lbnRzSXRlcmFibGVWYWx1ZSA9IGNvbnN0cnVjdG9yVmFsdWUuZ2V0KCZzdGF0ZSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmdm0sICJpbnB1dEFyZ3VtZW50cyIpKTsKLSAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwotCi0gICAgaWYgKCFpbnB1dEFyZ3VtZW50c0l0
ZXJhYmxlVmFsdWUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgaW5wdXRBcmd1bWVudHMgPSBjb252
ZXJ0PElETFNlcXVlbmNlPElETERPTVN0cmluZz4+KHN0YXRlLCBpbnB1dEFyZ3VtZW50c0l0ZXJh
YmxlVmFsdWUpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7Ci0K
LSAgICAvLyBGSVhNRTogUGFyc2Ugc3ludGF4IGZvciBpbnB1dEFyZ3VtZW50cyBoZXJlIChzdGVw
cyAxMSBhbmQgMTIpLgotCi0gICAgSlNWYWx1ZSBjb250ZXh0T3B0aW9uc1ZhbHVlID0gY29uc3Ry
dWN0b3JWYWx1ZS5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImNvbnRl
eHRPcHRpb25zIikpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7
Ci0gICAgVU5VU0VEX1BBUkFNKGNvbnRleHRPcHRpb25zVmFsdWUpOwotCi0gICAgLy8gRklYTUU6
IENvbnZlcnQgdG8gUGFpbnRSZW5kZXJpbmdDb250ZXh0MkRTZXR0aW5ncyBoZXJlIChzdGVwIDE0
KS4KLQotICAgIGlmICghY29uc3RydWN0b3JWYWx1ZS5pc0NvbnN0cnVjdG9yKHZtKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsICJUaGUgc2Vjb25kIGFyZ3Vt
ZW50IG11c3QgYmUgYSBjb25zdHJ1Y3RvciJfcyk7Ci0KLSAgICBKU1ZhbHVlIHByb3RvdHlwZVZh
bHVlID0gY29uc3RydWN0b3JWYWx1ZS5nZXQoJnN0YXRlLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90
b3R5cGUpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7Ci0KLSAg
ICBpZiAoIXByb3RvdHlwZVZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcigmc3RhdGUsIHNjb3BlLCAiVGhlIHNlY29uZCBhcmd1bWVudCBtdXN0IGhhdmUgYSBw
cm90b3R5cGUgdGhhdCBpcyBhbiBvYmplY3QiX3MpOwotCi0gICAgSlNWYWx1ZSBwYWludFZhbHVl
ID0gcHJvdG90eXBlVmFsdWUuZ2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0s
ICJwYWludCIpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwot
Ci0gICAgaWYgKHBhaW50VmFsdWUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsICJUaGUgY2xhc3MgbXVzdCBoYXZlIGEgcGFpbnQgbWV0
aG9kIl9zKTsKLQotICAgIFJlZlB0cjxKU0NTU1BhaW50Q2FsbGJhY2s+IHBhaW50ID0gY29udmVy
dDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTQ1NTUGFpbnRDYWxsYmFjaz4+KHN0YXRlLCBwYWludFZh
bHVlLCAqZ2xvYmFsT2JqZWN0KCkpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpT
VmFsdWUoKSk7Ci0KLSAgICBhdXRvIHBhaW50RGVmaW5pdGlvbiA9IHN0ZDo6dW5pcXVlX3B0cjxQ
YWludERlZmluaXRpb24+KG5ldyBQYWludERlZmluaXRpb24geyBuYW1lLCBwYWludC5yZWxlYXNl
Tm9uTnVsbCgpLCBpbnB1dFByb3BlcnRpZXMsIGlucHV0QXJndW1lbnRzIH0pOwotICAgIHBhaW50
RGVmaW5pdGlvbk1hcC5hZGQobmFtZSwgV1RGTW92ZShwYWludERlZmluaXRpb24pKTsKLQotICAg
IC8vIEZJWE1FOiBjb25zdHJ1Y3QgZG9jdW1lbnREZWZpbml0aW9uIChzdGVwIDIyKS4KLQotICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCi19Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAppbmRleCBlYmIyZjYxZGRjYzMy
NWEwMWRjNTI0YjJiNTJlYjhiMTE0MTQzMDU4Li43ZGRhMjU4NmVmN2IzNWM3NTZiMWIwMjM5ZjFj
MWY3NjE2ZGUzMTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01H
bG9iYWxPYmplY3QuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiSlNSZWFkYWJsZVN0
cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuaCIKICNpbmNsdWRlICJKU1JlbW90ZURPTVdpbmRvdy5o
IgogI2luY2x1ZGUgIkpTV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJKU1dvcmtsZXRH
bG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIlJlamVjdGVkUHJvbWlzZVRyYWNrZXIuaCIKICNpbmNs
dWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlZENsb25l
LmgiCkBAIC0xOTQsNiArMTk1LDEwIEBAIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIEpTRE9NR2xv
YmFsT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgaWYgKGluaGVyaXRzPEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlPih2bSgp
KSkKICAgICAgICAgcmV0dXJuIGpzQ2FzdDxjb25zdCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZSo+
KHRoaXMpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisjaWYgRU5BQkxFKENTU19QQUlOVElO
R19BUEkpCisgICAgaWYgKGluaGVyaXRzPEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZT4odm0oKSkp
CisgICAgICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlKj4o
dGhpcyktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyNlbmRpZgogICAgIGRhdGFMb2coIlVu
ZXhwZWN0ZWQgZ2xvYmFsIG9iamVjdDogIiwgSlNWYWx1ZSh0aGlzKSwgIlxuIik7CiAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQYWludFdvcmtsZXRHbG9i
YWxTY29wZUN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTFkZjViZDA3YTk1ZDlkNDk3OGJkMTljOWFl
YzJmNjQxYzQwM2Y5NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwCkBAIC0wLDAgKzEsMTM2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKworI2lm
IEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNs
dWRlICJKU0NTU1BhaW50Q2FsbGJhY2suaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnRDYWxsYmFj
a3MuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnRTZXF1ZW5jZXMuaCIKKyNpbmNsdWRlIDx3dGYv
U2V0Rm9yU2NvcGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNwYWNlIEpT
QzsKKworc3RhdGljIEpTVmFsdWUgdGhyb3dJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3IoRXhlY1N0
YXRlJiBzdGF0ZSwgVGhyb3dTY29wZSYgc2NvcGUsIEFTQ0lJTGl0ZXJhbCBtZXNzYWdlKQorewor
ICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CisgICAgdGhyb3dFeGNlcHRpb24oJnN0YXRl
LCBzY29wZSwgY3JlYXRlRE9NRXhjZXB0aW9uKCZzdGF0ZSwgSW52YWxpZE1vZGlmaWNhdGlvbkVy
cm9yLCBtZXNzYWdlKSk7CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKK3ZvaWQgSlNQ
YWludFdvcmtsZXRHbG9iYWxTY29wZTo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oSlNDOjpTbG90
VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHdyYXBwZWQo
KS5wYWludERlZmluaXRpb25Mb2NrKCkpOworICAgIGZvciAoYXV0byYgcmVnaXN0ZXJlZCA6IHdy
YXBwZWQoKS5wYWludERlZmluaXRpb25NYXAoKS52YWx1ZXMoKSkKKyAgICAgICAgcmVnaXN0ZXJl
ZC0+cGFpbnRDYWxsYmFjay0+dmlzaXRKU0Z1bmN0aW9uKHZpc2l0b3IpOworfQorCisvLyBodHRw
czovL2RyYWZ0cy5jc3MtaG91ZGluaS5vcmcvY3NzLXBhaW50LWFwaS8jcmVnaXN0ZXJpbmctY3Vz
dG9tLXBhaW50CisvLyBUaGlzIGN1c3RvbSBiaW5kaW5nIGlzIHJlcXVpcmVkIHRvIGhhbmRsZSB0
aGUgcGFpbnQgY2FsbGJhY2sgY29udmVyc2lvbiBhY2NvcmRpbmcgdG8gdGhlIHNwZWMuCitKU1Zh
bHVlIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUGFpbnQoRXhlY1N0YXRlJiBz
dGF0ZSkKK3sKKyAgICB1c2luZyBQYWludERlZmluaXRpb24gPSBQYWludFdvcmtsZXRHbG9iYWxT
Y29wZTo6UGFpbnREZWZpbml0aW9uOworCisgICAgYXV0byYgd29ya2xldEdsb2JhbFNjb3BlID0g
d3JhcHBlZCgpOworICAgIGF1dG8mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1l
bnRDb3VudCgpIDwgMikpCisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNj
b3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKworICAgIEF0b21p
Y1N0cmluZyBuYW1lKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSkt
PnRvQXRvbWljU3RyaW5nKCZzdGF0ZSkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IEpTVmFsdWUoKSk7CisgICAgSlNWYWx1ZSBjb25zdHJ1Y3RvclZhbHVlID0gc3RhdGUudW5jaGVj
a2VkQXJndW1lbnQoMSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgp
KTsKKworICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKCZzdGF0ZSwgc2NvcGUsICJUaGUgZmlyc3QgYXJndW1lbnQgbXVzdCBub3QgYmUgdGhlIGVt
cHR5IHN0cmluZyJfcyk7CisKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHdvcmtsZXRHbG9i
YWxTY29wZS5wYWludERlZmluaXRpb25Mb2NrKCkpOworICAgIGF1dG8mIHBhaW50RGVmaW5pdGlv
bk1hcCA9IHdvcmtsZXRHbG9iYWxTY29wZS5wYWludERlZmluaXRpb25NYXAoKTsKKworICAgIGlm
IChwYWludERlZmluaXRpb25NYXAuY29udGFpbnMobmFtZSkpCisgICAgICAgIHJldHVybiB0aHJv
d0ludmFsaWRNb2RpZmljYXRpb25FcnJvcihzdGF0ZSwgc2NvcGUsICJUaGlzIG5hbWUgaGFzIGFs
cmVhZHkgYmVlbiByZWdpc3RlcmVkIl9zKTsKKworICAgIFZlY3RvcjxTdHJpbmc+IGlucHV0UHJv
cGVydGllczsKKworICAgIEpTVmFsdWUgaW5wdXRQcm9wZXJ0aWVzSXRlcmFibGVWYWx1ZSA9IGNv
bnN0cnVjdG9yVmFsdWUuZ2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJp
bnB1dFByb3BlcnRpZXMiKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1
ZSgpKTsKKworICAgIGlmICghaW5wdXRQcm9wZXJ0aWVzSXRlcmFibGVWYWx1ZS5pc1VuZGVmaW5l
ZCgpKQorICAgICAgICBpbnB1dFByb3BlcnRpZXMgPSBjb252ZXJ0PElETFNlcXVlbmNlPElETERP
TVN0cmluZz4+KHN0YXRlLCBpbnB1dFByb3BlcnRpZXNJdGVyYWJsZVZhbHVlKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOworCisgICAgLy8gRklYTUU6IFZhbGlk
YXRlIGlucHV0IHByb3BlcnRpZXMgaGVyZSAoc3RlcCA3KS4KKworICAgIFZlY3RvcjxTdHJpbmc+
IGlucHV0QXJndW1lbnRzOworCisgICAgSlNWYWx1ZSBpbnB1dEFyZ3VtZW50c0l0ZXJhYmxlVmFs
dWUgPSBjb25zdHJ1Y3RvclZhbHVlLmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
JnZtLCAiaW5wdXRBcmd1bWVudHMiKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
SlNWYWx1ZSgpKTsKKworICAgIGlmICghaW5wdXRBcmd1bWVudHNJdGVyYWJsZVZhbHVlLmlzVW5k
ZWZpbmVkKCkpCisgICAgICAgIGlucHV0QXJndW1lbnRzID0gY29udmVydDxJRExTZXF1ZW5jZTxJ
RExET01TdHJpbmc+PihzdGF0ZSwgaW5wdXRBcmd1bWVudHNJdGVyYWJsZVZhbHVlKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOworCisgICAgLy8gRklYTUU6IFBh
cnNlIHN5bnRheCBmb3IgaW5wdXRBcmd1bWVudHMgaGVyZSAoc3RlcHMgMTEgYW5kIDEyKS4KKwor
ICAgIEpTVmFsdWUgY29udGV4dE9wdGlvbnNWYWx1ZSA9IGNvbnN0cnVjdG9yVmFsdWUuZ2V0KCZz
dGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJjb250ZXh0T3B0aW9ucyIpKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOworICAgIFVOVVNFRF9QQVJB
TShjb250ZXh0T3B0aW9uc1ZhbHVlKTsKKworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRvIFBhaW50
UmVuZGVyaW5nQ29udGV4dDJEU2V0dGluZ3MgaGVyZSAoc3RlcCAxNCkuCisKKyAgICBpZiAoIWNv
bnN0cnVjdG9yVmFsdWUuaXNDb25zdHJ1Y3Rvcih2bSkpCisgICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcigmc3RhdGUsIHNjb3BlLCAiVGhlIHNlY29uZCBhcmd1bWVudCBtdXN0IGJlIGEgY29u
c3RydWN0b3IiX3MpOworCisgICAgSlNWYWx1ZSBwcm90b3R5cGVWYWx1ZSA9IGNvbnN0cnVjdG9y
VmFsdWUuZ2V0KCZzdGF0ZSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOworCisgICAgaWYgKCFwcm90b3R5cGVW
YWx1ZS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBz
Y29wZSwgIlRoZSBzZWNvbmQgYXJndW1lbnQgbXVzdCBoYXZlIGEgcHJvdG90eXBlIHRoYXQgaXMg
YW4gb2JqZWN0Il9zKTsKKworICAgIEpTVmFsdWUgcGFpbnRWYWx1ZSA9IHByb3RvdHlwZVZhbHVl
LmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAicGFpbnQiKSk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKKworICAgIGlmIChwYWludFZh
bHVlLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUs
IHNjb3BlLCAiVGhlIGNsYXNzIG11c3QgaGF2ZSBhIHBhaW50IG1ldGhvZCJfcyk7CisKKyAgICBS
ZWZQdHI8SlNDU1NQYWludENhbGxiYWNrPiBwYWludCA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5j
dGlvbjxKU0NTU1BhaW50Q2FsbGJhY2s+PihzdGF0ZSwgcGFpbnRWYWx1ZSwgKmdsb2JhbE9iamVj
dCgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOworCisgICAg
YXV0byBwYWludERlZmluaXRpb24gPSBzdGQ6OnVuaXF1ZV9wdHI8UGFpbnREZWZpbml0aW9uPihu
ZXcgUGFpbnREZWZpbml0aW9uIHsgbmFtZSwgcGFpbnQucmVsZWFzZU5vbk51bGwoKSwgaW5wdXRQ
cm9wZXJ0aWVzLCBpbnB1dEFyZ3VtZW50cyB9KTsKKyAgICBwYWludERlZmluaXRpb25NYXAuYWRk
KG5hbWUsIFdURk1vdmUocGFpbnREZWZpbml0aW9uKSk7CisKKyAgICAvLyBGSVhNRTogY29uc3Ry
dWN0IGRvY3VtZW50RGVmaW5pdGlvbiAoc3RlcCAyMikuCisKKyAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKK30KKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDYwZWIxNTBh
NjkwYzUzYzNlMjQ3ZTNhMzNjZmFiN2M2MjE3MGFmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcApAQCAtMCww
ICsxLDE1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNXb3JrbGV0R2xvYmFsU2NvcGVC
YXNlLmgiCisKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKworI2luY2x1ZGUgIkRPTVdy
YXBwZXJXb3JsZC5oIgorI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0VGFzay5oIgorI2luY2x1
ZGUgIkpTV29ya2xldEdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29ya2xldEdsb2JhbFNjb3Bl
LmgiCisjaW5jbHVkZSAiV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNW
YWx1ZUlubGluZXMuaD4KKyNpbmNsdWRlIDx3dGYvTGFuZ3VhZ2UuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgSlNDOworCitjb25zdCBDbGFzc0luZm8gSlNXb3Jr
bGV0R2xvYmFsU2NvcGVCYXNlOjpzX2luZm8gPSB7ICJXb3JrbGV0R2xvYmFsU2NvcGUiLCAmSlNE
T01HbG9iYWxPYmplY3Q6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UpIH07CisKK2NvbnN0IEdsb2JhbE9iamVjdE1l
dGhvZFRhYmxlIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6c19nbG9iYWxPYmplY3RNZXRob2RU
YWJsZSA9IHsKKyAgICAmc3VwcG9ydHNSaWNoU291cmNlSW5mbywKKyAgICAmc2hvdWxkSW50ZXJy
dXB0U2NyaXB0LAorICAgICZqYXZhU2NyaXB0UnVudGltZUZsYWdzLAorICAgIG51bGxwdHIsIC8v
IHF1ZXVlVGFza1RvRXZlbnRMb29wCisgICAgJnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRp
bWVvdXQsCisgICAgbnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVySW1wb3J0TW9kdWxlCisgICAgbnVs
bHB0ciwgLy8gbW9kdWxlTG9hZGVyUmVzb2x2ZQorICAgIG51bGxwdHIsIC8vIG1vZHVsZUxvYWRl
ckZldGNoCisgICAgbnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3Bl
cnRpZXMKKyAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJFdmFsdWF0ZQorICAgICZwcm9taXNl
UmVqZWN0aW9uVHJhY2tlciwKKyAgICAmZGVmYXVsdExhbmd1YWdlLAorICAgIG51bGxwdHIsIC8v
IGNvbXBpbGVTdHJlYW1pbmcKKyAgICBudWxscHRyLCAvLyBpbnN0YW50aWF0ZVN0cmVhbWluZwor
fTsKKworSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2Uo
SlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjxXb3JrbGV0R2xv
YmFsU2NvcGU+JiYgaW1wbCkKKyAgICA6IEpTRE9NR2xvYmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUs
IG5vcm1hbFdvcmxkKHZtKSwgJnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUpCisgICAgLCBtX3dy
YXBwZWQoV1RGTW92ZShpbXBsKSkKK3sKK30KKwordm9pZCBKU1dvcmtsZXRHbG9iYWxTY29wZUJh
c2U6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNQcm94eSogcHJveHkpCit7CisgICAgbV9wcm94
eS5zZXQodm0sIHRoaXMsIHByb3h5KTsKKworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBt
X3Byb3h5LmdldCgpKTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOworfQorCit2
b2lkIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6Y2xlYXJET01HdWFyZGVkT2JqZWN0cygpCit7
CisgICAgYXV0byBndWFyZGVkT2JqZWN0cyA9IG1fZ3VhcmRlZE9iamVjdHM7CisgICAgZm9yIChh
dXRvJiBndWFyZGVkIDogZ3VhcmRlZE9iamVjdHMpCisgICAgICAgIGd1YXJkZWQtPmNsZWFyKCk7
Cit9CisKK3ZvaWQgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjp2aXNpdENoaWxkcmVuKEpTQ2Vs
bCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgYXV0byogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UqPihjZWxsKTsKKyAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgQmFzZTo6dmlzaXRDaGls
ZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0
LT5tX3Byb3h5KTsKK30KKwordm9pZCBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OmRlc3Ryb3ko
SlNDZWxsKiBjZWxsKQoreworICAgIHN0YXRpY19jYXN0PEpTV29ya2xldEdsb2JhbFNjb3BlQmFz
ZSo+KGNlbGwpLT5KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6On5KU1dvcmtsZXRHbG9iYWxTY29w
ZUJhc2UoKTsKK30KKworU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogSlNXb3JrbGV0R2xvYmFsU2Nv
cGVCYXNlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93
cmFwcGVkLmdldCgpOworfQorCitib29sIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6c3VwcG9y
dHNSaWNoU291cmNlSW5mbyhjb25zdCBKU0dsb2JhbE9iamVjdCogb2JqZWN0KQoreworICAgIHJl
dHVybiBKU0dsb2JhbE9iamVjdDo6c3VwcG9ydHNSaWNoU291cmNlSW5mbyhvYmplY3QpOworfQor
Citib29sIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6c2hvdWxkSW50ZXJydXB0U2NyaXB0KGNv
bnN0IEpTR2xvYmFsT2JqZWN0KiBvYmplY3QpCit7CisgICAgcmV0dXJuIEpTR2xvYmFsT2JqZWN0
OjpzaG91bGRJbnRlcnJ1cHRTY3JpcHQob2JqZWN0KTsKK30KKworYm9vbCBKU1dvcmtsZXRHbG9i
YWxTY29wZUJhc2U6OnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQoY29uc3QgSlNH
bG9iYWxPYmplY3QqIG9iamVjdCkKK3sKKyAgICByZXR1cm4gSlNHbG9iYWxPYmplY3Q6OnNob3Vs
ZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQob2JqZWN0KTsKK30KKworUnVudGltZUZsYWdz
IEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6amF2YVNjcmlwdFJ1bnRpbWVGbGFncyhjb25zdCBK
U0dsb2JhbE9iamVjdCogb2JqZWN0KQoreworICAgIGNvbnN0IGF1dG8qIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8Y29uc3QgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlKj4ob2JqZWN0KTsKKyAgICByZXR1
cm4gdGhpc09iamVjdC0+bV93cmFwcGVkLT5qc1J1bnRpbWVGbGFncygpOworfQorCitKU1ZhbHVl
IHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCosIFdvcmtsZXRHbG9iYWxT
Y29wZSYgd29ya2xldEdsb2JhbFNjb3BlKQoreworICAgIHJldHVybiB0b0pTKGV4ZWMsIHdvcmts
ZXRHbG9iYWxTY29wZSk7Cit9CisKK0pTVmFsdWUgdG9KUyhFeGVjU3RhdGUqLCBXb3JrbGV0R2xv
YmFsU2NvcGUmIHdvcmtsZXRHbG9iYWxTY29wZSkKK3sKKyAgICBhdXRvKiBzY3JpcHQgPSB3b3Jr
bGV0R2xvYmFsU2NvcGUuc2NyaXB0KCk7CisgICAgaWYgKCFzY3JpcHQpCisgICAgICAgIHJldHVy
biBqc051bGwoKTsKKyAgICBhdXRvKiBjb250ZXh0V3JhcHBlciA9IHNjcmlwdC0+d29ya2xldEds
b2JhbFNjb3BlV3JhcHBlcigpOworICAgIEFTU0VSVChjb250ZXh0V3JhcHBlcik7CisgICAgcmV0
dXJuIGNvbnRleHRXcmFwcGVyLT5wcm94eSgpOworfQorCitKU1dvcmtsZXRHbG9iYWxTY29wZSog
dG9KU1dvcmtsZXRHbG9iYWxTY29wZShWTSYgdm0sIEpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYg
KCF2YWx1ZS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBjb25zdCBD
bGFzc0luZm8qIGNsYXNzSW5mbyA9IGFzT2JqZWN0KHZhbHVlKS0+Y2xhc3NJbmZvKHZtKTsKKwor
ICAgIGlmIChjbGFzc0luZm8gPT0gSlNQcm94eTo6aW5mbygpKQorICAgICAgICByZXR1cm4ganNE
eW5hbWljQ2FzdDxKU1dvcmtsZXRHbG9iYWxTY29wZSo+KHZtLCBqc0Nhc3Q8SlNQcm94eSo+KGFz
T2JqZWN0KHZhbHVlKSktPnRhcmdldCgpKTsKKworICAgIHJldHVybiBudWxscHRyOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjFjM2Ey
MWExNDIxNDY2MGYwMWM4MzgzMzk5ZWVlNWJiNDcwODYxMQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5oCkBAIC0w
LDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKworI2lu
Y2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNET01XcmFwcGVyLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSlNXb3JrbGV0R2xvYmFsU2NvcGU7CitjbGFz
cyBXb3JrbGV0R2xvYmFsU2NvcGU7CisKK2NsYXNzIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZSA6
IHB1YmxpYyBKU0RPTUdsb2JhbE9iamVjdCB7CisgICAgdXNpbmcgQmFzZSA9IEpTRE9NR2xvYmFs
T2JqZWN0OworcHVibGljOgorICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsK
KworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIFdvcmtsZXRHbG9iYWxTY29wZSYgd3JhcHBlZCgp
IGNvbnN0IHsgcmV0dXJuICptX3dyYXBwZWQ7IH0KKyAgICBKU0M6OkpTUHJveHkqIHByb3h5KCkg
Y29uc3QgeyBBU1NFUlQobV9wcm94eSk7IHJldHVybiBtX3Byb3h5LmdldCgpOyB9CisgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OworCisg
ICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Okdsb2JhbE9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgSlNDOjpH
bG9iYWxPYmplY3RNZXRob2RUYWJsZSBzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlOworCisgICAg
c3RhdGljIGJvb2wgc3VwcG9ydHNSaWNoU291cmNlSW5mbyhjb25zdCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0Kik7CisgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJydXB0U2NyaXB0KGNvbnN0IEpTQzo6
SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcnJ1cHRTY3JpcHRC
ZWZvcmVUaW1lb3V0KGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgSlND
OjpSdW50aW1lRmxhZ3MgamF2YVNjcmlwdFJ1bnRpbWVGbGFncyhjb25zdCBKU0M6OkpTR2xvYmFs
T2JqZWN0Kik7CisgICAgc3RhdGljIHZvaWQgcXVldWVUYXNrVG9FdmVudExvb3AoSlNDOjpKU0ds
b2JhbE9iamVjdCYsIFJlZjxKU0M6Ok1pY3JvdGFzaz4mJik7CisKKyAgICB2b2lkIGNsZWFyRE9N
R3VhcmRlZE9iamVjdHMoKTsKKworcHJvdGVjdGVkOgorICAgIEpTV29ya2xldEdsb2JhbFNjb3Bl
QmFzZShKU0M6OlZNJiwgSlNDOjpTdHJ1Y3R1cmUqLCBSZWZQdHI8V29ya2xldEdsb2JhbFNjb3Bl
PiYmKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mLCBKU0M6OkpTUHJveHkqKTsK
KworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDOjpKU0NlbGwqLCBKU0M6OlNsb3RW
aXNpdG9yJik7CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPFdvcmtsZXRHbG9iYWxTY29wZT4gbV93
cmFwcGVkOworICAgIEpTQzo6V3JpdGVCYXJyaWVyPEpTQzo6SlNQcm94eT4gbV9wcm94eTsKK307
CisKKy8vIFJldHVybnMgYSBKU1dvcmtsZXRHbG9iYWxTY29wZSBvciBqc051bGwoKQorLy8gQWx3
YXlzIGlnbm9yZXMgdGhlIGV4ZWNTdGF0ZSBhbmQgcGFzc2VkIGdsb2JhbE9iamVjdCwgV29ya2xl
dEdsb2JhbFNjb3BlIGlzIGl0c2VsZiBhIGdsb2JhbE9iamVjdCBhbmQgd2lsbCBhbHdheXMgdXNl
IGl0cyBvd24gcHJvdG90eXBlIGNoYWluLgorSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3Rh
dGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFdvcmtsZXRHbG9iYWxTY29wZSYpOworaW5saW5lIEpT
Qzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBXb3JrbGV0R2xvYmFsU2NvcGUqIHNjb3BlKSB7IHJldHVybiBzY29wZSA/
IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCAqc2NvcGUpIDogSlNDOjpqc051bGwoKTsgfQorSlND
OjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBXb3JrbGV0R2xvYmFsU2NvcGUmKTsKK2lu
bGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgV29ya2xldEdsb2Jh
bFNjb3BlKiBzY29wZSkgeyByZXR1cm4gc2NvcGUgPyB0b0pTKGV4ZWMsICpzY29wZSkgOiBKU0M6
OmpzTnVsbCgpOyB9CisKK0pTV29ya2xldEdsb2JhbFNjb3BlKiB0b0pTV29ya2xldEdsb2JhbFNj
b3BlKEpTQzo6Vk0mLCBKU0M6OkpTVmFsdWUpOworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKENTU19QQUlOVElOR19BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRTdGF0ZS5jcHAKaW5kZXggZWVlODM5Y2M0MjY0ZmJlNGEyOWRmYjk5MWI1ZmRl
NTBkNjBiYWIxYy4uYTFiYTE0NTI4MzRkOGNhM2NlNmFmNDc3MTFlOTcwYjM4OGNjMWIwNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcApAQCAtMzUsMTEgKzM1
LDE0IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd0Jhc2UuaCIK
ICNpbmNsdWRlICJKU1dvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiSlNXb3JrbGV0R2xv
YmFsU2NvcGUuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1
ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgog
I2luY2x1ZGUgIldvcmtlclNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJXb3JrbGV0R2xv
YmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0NhbGxGcmFtZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTR2xvYmFsT2JqZWN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nSW5saW5l
cy5oPgpAQCAtOTUsOSArOTgsMTYgQEAgSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZUZyb21QYWdl
KERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIFBhZ2UqIHBhZ2UpCiAgICAgcmV0dXJuIHBhZ2UgPyBw
YWdlLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5nbG9iYWxPYmplY3Qod29ybGQpLT5nbG9iYWxFeGVj
KCkgOiBudWxscHRyOwogfQogCi1KU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbVdvcmtlckds
b2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlKiB3b3JrZXJHbG9iYWxTY29wZSkKK0pTQzo6RXhl
Y1N0YXRlKiBleGVjU3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUm
IHdvcmtlckdsb2JhbFNjb3BlKQogewotICAgIHJldHVybiB3b3JrZXJHbG9iYWxTY29wZS0+c2Ny
aXB0KCktPndvcmtlckdsb2JhbFNjb3BlV3JhcHBlcigpLT5nbG9iYWxFeGVjKCk7CisgICAgcmV0
dXJuIHdvcmtlckdsb2JhbFNjb3BlLnNjcmlwdCgpLT53b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIo
KS0+Z2xvYmFsRXhlYygpOwogfQogCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCitKU0M6
OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbVdvcmtsZXRHbG9iYWxTY29wZShXb3JrbGV0R2xvYmFs
U2NvcGUmIHdvcmtsZXRHbG9iYWxTY29wZSkKK3sKKyAgICByZXR1cm4gd29ya2xldEdsb2JhbFNj
b3BlLnNjcmlwdCgpLT53b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKCktPmdsb2JhbEV4ZWMoKTsK
K30KKyNlbmRpZgorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaApp
bmRleCA3NDQyMWZkOTViYTE3NzU2ZWI4OWMwMDQyNmMzM2ZiNTQ1NDk4MzkwLi4xNTM4NGE3MTFm
MzU2Y2VlNDc4Y2E5OWUyNTU1YjFlZWEyNDgyYWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdFN0YXRlLmgKQEAgLTQ0LDYgKzQ0LDkgQEAgY2xhc3MgTm9kZTsKIGNsYXNzIFBh
Z2U7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgV29ya2VyR2xvYmFsU2Nv
cGU7CisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCitjbGFzcyBXb3JrbGV0R2xvYmFsU2Nv
cGU7CisjZW5kaWYKIAogRE9NV2luZG93KiBkb21XaW5kb3dGcm9tRXhlY1N0YXRlKEpTQzo6RXhl
Y1N0YXRlKik7CiBGcmFtZSogZnJhbWVGcm9tRXhlY1N0YXRlKEpTQzo6RXhlY1N0YXRlKik7CkBA
IC01Myw2ICs1Niw5IEBAIEpTQzo6RXhlY1N0YXRlKiBtYWluV29ybGRFeGVjU3RhdGUoRnJhbWUq
KTsKIAogSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZUZyb21Ob2RlKERPTVdyYXBwZXJXb3JsZCYs
IE5vZGUqKTsKIFdFQkNPUkVfRVhQT1JUIEpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tUGFn
ZShET01XcmFwcGVyV29ybGQmLCBQYWdlKik7Ci1KU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJv
bVdvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlKik7CitKU0M6OkV4ZWNTdGF0ZSog
ZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlJik7CisjaWYg
RU5BQkxFKENTU19QQUlOVElOR19BUEkpCitKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbVdv
cmtsZXRHbG9iYWxTY29wZShXb3JrbGV0R2xvYmFsU2NvcGUmKTsKKyNlbmRpZgogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9X
ZWJDb3JlQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3Jl
QnVpbHRpbk5hbWVzLmgKaW5kZXggMWM5Mzg1OWVjYzE2ODc0YzBjMDdlMzczYjI5NzNjNDI1MDVk
ZWE4MC4uMjkyZmQ5NzkyNDQ5ZDM3N2QyNzVjMjgyNGJlMTUyZGNhNmZkNjkxZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaApAQCAtNTEs
NyArNTEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oQ3JlZGVudGlhbCkgXAog
ICAgIG1hY3JvKENyZWRlbnRpYWxzQ29udGFpbmVyKSBcCiAgICAgbWFjcm8oQ1NTQW5pbWF0aW9u
KSBcCi0gICAgbWFjcm8oQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUpIFwKICAgICBtYWNybyhD
U1NUcmFuc2l0aW9uKSBcCiAgICAgbWFjcm8oQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5KSBcCiAgICAg
bWFjcm8oRGF0YWJhc2UpIFwKQEAgLTEyMyw2ICsxMjIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgbWFjcm8oU1FMUmVzdWx0U2V0KSBcCiAgICAgbWFjcm8oU1FMUmVzdWx0U2V0Um93TGlz
dCkgXAogICAgIG1hY3JvKFNRTFRyYW5zYWN0aW9uKSBcCisgICAgbWFjcm8oUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUpIFwKICAgICBtYWNybyhQZXJmb3JtYW5jZUVudHJ5KSBcCiAgICAgbWFjcm8o
UGVyZm9ybWFuY2VFbnRyeUxpc3QpIFwKICAgICBtYWNybyhQZXJmb3JtYW5jZU1hcmspIFwKQEAg
LTIxMCw2ICsyMTAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oV2ViS2l0TWVk
aWFLZXlzKSBcCiAgICAgbWFjcm8oV2ViU29ja2V0KSBcCiAgICAgbWFjcm8oV2luZG93Q2xpZW50
KSBcCisgICAgbWFjcm8oV29ya2xldCkgXAorICAgIG1hY3JvKFdvcmtsZXRHbG9iYWxTY29wZSkg
XAogICAgIG1hY3JvKFdyaXRhYmxlU3RyZWFtKSBcCiAgICAgbWFjcm8oWE1MSHR0cFJlcXVlc3Qp
IFwKICAgICBtYWNybyhhcHBlbmRGcm9tSlMpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggNDhmY2U3YmMxNmE4ODBkNjNm
NDMyYTAxOGYxZmVlMmY2N2JmNWJkYy4uNjMxYzM5NDRlY2QyN2U1MmE3ZDUyMzJhYjY2MGMwZDY5
ZDdmYjVkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KQEAgLTQ5Nyw3ICs0OTcsNyBAQCBzdWIgR2V0Q3VzdG9tSXNSZWFjaGFi
bGUKIHN1YiBJc0RPTUdsb2JhbE9iamVjdAogewogICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsK
LSAgICByZXR1cm4gJGludGVyZmFjZS0+dHlwZS0+bmFtZSBlcSAiRE9NV2luZG93IiB8fCAkaW50
ZXJmYWNlLT50eXBlLT5uYW1lIGVxICJSZW1vdGVET01XaW5kb3ciIHx8ICRjb2RlR2VuZXJhdG9y
LT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiV29ya2VyR2xvYmFsU2NvcGUiKSB8fCAk
aW50ZXJmYWNlLT50eXBlLT5uYW1lIGVxICJUZXN0R2xvYmFsT2JqZWN0IjsKKyAgICByZXR1cm4g
JGludGVyZmFjZS0+dHlwZS0+bmFtZSBlcSAiRE9NV2luZG93IiB8fCAkaW50ZXJmYWNlLT50eXBl
LT5uYW1lIGVxICJSZW1vdGVET01XaW5kb3ciIHx8ICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0lu
dGVyZmFjZSgkaW50ZXJmYWNlLCAiV29ya2VyR2xvYmFsU2NvcGUiKSB8fCAkY29kZUdlbmVyYXRv
ci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldvcmtsZXRHbG9iYWxTY29wZSIpIHx8
ICRpbnRlcmZhY2UtPnR5cGUtPm5hbWUgZXEgIlRlc3RHbG9iYWxPYmplY3QiOwogfQogCiBzdWIg
U2hvdWxkVXNlR2xvYmFsT2JqZWN0UHJvdG90eXBlCkBAIC01MDYsNiArNTA2LDggQEAgc3ViIFNo
b3VsZFVzZUdsb2JhbE9iamVjdFByb3RvdHlwZQogCiAgICAgIyBGb3Igd29ya2VycywgdGhlIGds
b2JhbCBvYmplY3QgaXMgYSBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS4KICAgICByZXR1cm4g
MCBpZiAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIGVxICJXb3JrZXJHbG9iYWxTY29wZSI7CisgICAg
IyBGb3Igd29ya2xldHMsIHRoZSBnbG9iYWwgb2JqZWN0IGlzIGEgUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUuCisgICAgcmV0dXJuIDAgaWYgJGludGVyZmFjZS0+dHlwZS0+bmFtZSBlcSAiV29ya2xl
dEdsb2JhbFNjb3BlIjsKIAogICAgIHJldHVybiBJc0RPTUdsb2JhbE9iamVjdCgkaW50ZXJmYWNl
KTsKIH0KQEAgLTI1MzcsNyArMjUzOSw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtLCBwcm94
eSk7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHB0
cjtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIH1cblxuIik7Ci0gICAg
fSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJX
b3JrZXJHbG9iYWxTY29wZSIpKSB7CisgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVy
aXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrZXJHbG9iYWxTY29wZSIpIHx8ICRjb2RlR2Vu
ZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiV29ya2xldEdsb2JhbFNjb3Bl
IikpIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgJGNsYXNzTmFt
ZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWY8JGlt
cGxUeXBlPiYmIGltcGwsIEpTQzo6SlNQcm94eSogcHJveHkpXG4iKTsKICAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICB7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IiAgICAgICAgJGNsYXNzTmFtZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2Vs
bDwkY2xhc3NOYW1lPih2bS5oZWFwKSkgJHtjbGFzc05hbWV9KHZtLCBzdHJ1Y3R1cmUsIFdURk1v
dmUoaW1wbCkpO1xuIik7CkBAIC0yODQ1LDcgKzI4NDcsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIK
ICAgICAjIENvbnN0cnVjdG9yCiAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ci
IHx8ICRpbnRlcmZhY2VOYW1lIGVxICJSZW1vdGVET01XaW5kb3ciKSB7CiAgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgJGNsYXNzTmFtZShKU0M6OlZNJiwgSlNDOjpTdHJ1Y3R1cmUq
LCBSZWY8JGltcGxUeXBlPiYmLCBKU1dpbmRvd1Byb3h5Kik7XG4iKTsKLSAgICB9IGVsc2lmICgk
Y29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldvcmtlckdsb2Jh
bFNjb3BlIikpIHsKKyAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZh
Y2UoJGludGVyZmFjZSwgIldvcmtlckdsb2JhbFNjb3BlIikgfHwgJGNvZGVHZW5lcmF0b3ItPklu
aGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrbGV0R2xvYmFsU2NvcGUiKSkgewogICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICRjbGFzc05hbWUoSlNDOjpWTSYsIEpTQzo6
U3RydWN0dXJlKiwgUmVmPCRpbXBsVHlwZT4mJik7XG4iKTsKICAgICB9IGVsc2lmICghTmVlZHNJ
bXBsZW1lbnRhdGlvbkNsYXNzKCRpbnRlcmZhY2UpKSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgJGNsYXNzTmFtZShKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0
Jik7XG5cbiIpOwpAQCAtMjg1NSw3ICsyODU3LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAKICAg
ICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIgfHwgJGludGVyZmFjZU5hbWUgZXEg
IlJlbW90ZURPTVdpbmRvdyIpIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mLCBKU1dpbmRvd1Byb3h5Kik7XG4iKTsKLSAgICB9
IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldv
cmtlckdsb2JhbFNjb3BlIikpIHsKKyAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SW5oZXJp
dHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldvcmtlckdsb2JhbFNjb3BlIikgfHwgJGNvZGVHZW5l
cmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrbGV0R2xvYmFsU2NvcGUi
KSkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oSlNDOjpWTSYsIEpTQzo6SlNQcm94eSopO1xuIik7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTtc
biIpOwpAQCAtMzY2Miw2ICszNjY0LDggQEAgc3ViIEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRp
dGlvbmFsU3RyaW5nRm9yRXhwb3NlZAogICAgICAgICBwdXNoKEAkY29uanVuY3RzLCAianNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oIiAuICRnbG9iYWxPYmplY3RQdHIgLiAiKS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5pc0RvY3VtZW50KCkiKTsKICAgICB9IGVsc2lmICgkZXhwb3NlZCBl
cSAiV29ya2VyIikgewogICAgICAgICBwdXNoKEAkY29uanVuY3RzLCAianNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oIiAuICRnbG9iYWxPYmplY3RQdHIgLiAiKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5pc1dvcmtlckdsb2JhbFNjb3BlKCkiKTsKKyAgICB9IGVsc2lmICgkZXhwb3NlZCBl
cSAiV29ya2xldCIpIHsKKyAgICAgICAgcHVzaChAJGNvbmp1bmN0cywgImpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KCIgLiAkZ2xvYmFsT2JqZWN0UHRyIC4gIiktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+aXNXb3JrbGV0R2xvYmFsU2NvcGUoKSIpOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IGFzc2VydCgiVW5yZWNvZ25pemVkIHZhbHVlICciIC4gRHVtcGVyKCRjb250ZXh0LT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntFeHBvc2VkfSkgLiAiJyBmb3IgdGhlIEV4cG9zZWQgZXh0ZW5kZWQgYXR0
cmlidXRlIG9uICciIC4gcmVmKCRjb250ZXh0KSAuICInLiIpOwogICAgIH0KQEAgLTQyNTIsNyAr
NDI1Niw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIDogJHBhcmVudENsYXNzTmFtZSh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKGlt
cGwpLCBwcm94eSlcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7Ci0gICAgfSBlbHNpZiAoJGNvZGVHZW5l
cmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrZXJHbG9iYWxTY29wZSIp
KSB7CisgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRl
cmZhY2UsICJXb3JrZXJHbG9iYWxTY29wZSIpIHx8ICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0lu
dGVyZmFjZSgkaW50ZXJmYWNlLCAiV29ya2xldEdsb2JhbFNjb3BlIikpIHsKICAgICAgICAgQWRk
SW5jbHVkZXNGb3JJbXBsZW1lbnRhdGlvblR5cGVJbkltcGwoJGludGVyZmFjZU5hbWUpOwogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiR7Y2xhc3NOYW1lfTo6JGNsYXNzTmFtZShWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWY8JGltcGxUeXBlPiYmIGltcGwpXG4iKTsKICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgOiAkcGFyZW50Q2xhc3NOYW1lKHZtLCBzdHJ1Y3R1
cmUsIFdURk1vdmUoaW1wbCkpXG4iKTsKQEAgLTQyNzMsNyArNDI3Nyw3IEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2NsYXNz
TmFtZX06OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNXaW5kb3dQcm94eSogcHJveHkpXG4iKTsK
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIHByb3h5KTtcblxuIik7Ci0gICAg
fSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJX
b3JrZXJHbG9iYWxTY29wZSIpKSB7CisgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVy
aXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrZXJHbG9iYWxTY29wZSIpIHx8ICRjb2RlR2Vu
ZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiV29ya2xldEdsb2JhbFNjb3Bl
IikpIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7Y2xhc3NOYW1lfTo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBKU1Byb3h5KiBwcm94eSlcbiIpOwogICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSwgcHJveHkpO1xuXG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGwKaW5kZXggM2UwNWM3YjQ5Njgy
YmVlNjRmNjg5OGI0ZGY0NDg0MjUxMzQzOGI1MS4uNDZjZDNiOGY5Y2E5YzExYWE1MWZiZDlmYTg3
NjBmYTdiMGZkOTMzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9wcmVwcm9jZXNzLWlkbHMucGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9wcmVwcm9jZXNzLWlkbHMucGwKQEAgLTM2LDYgKzM2LDggQEAgbXkgJHdpbmRvd0NvbnN0cnVj
dG9yc0ZpbGU7CiBteSAkd29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlOwogbXkgJGRl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZTsKIG15ICRzZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlOworbXkgJHdvcmtsZXRHbG9iYWxTY29wZUNv
bnN0cnVjdG9yc0ZpbGU7CitteSAkcGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNG
aWxlOwogbXkgJHN1cHBsZW1lbnRhbE1ha2VmaWxlRGVwczsKIAogR2V0T3B0aW9ucygnZGVmaW5l
cz1zJyA9PiBcJGRlZmluZXMsCkBAIC00Niw2ICs0OCw4IEBAIEdldE9wdGlvbnMoJ2RlZmluZXM9
cycgPT4gXCRkZWZpbmVzLAogICAgICAgICAgICAnd29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rv
cnNGaWxlPXMnID0+IFwkd29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlLAogICAgICAg
ICAgICAnZGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlPXMnID0+IFwk
ZGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlLAogICAgICAgICAgICAn
c2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZT1zJyA9PiBcJHNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUsCisgICAgICAgICAgICd3b3JrbGV0R2xv
YmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlPXMnID0+IFwkd29ya2xldEdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3JzRmlsZSwKKyAgICAgICAgICAgJ3BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0
b3JzRmlsZT1zJyA9PiBcJHBhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSwK
ICAgICAgICAgICAgJ3N1cHBsZW1lbnRhbE1ha2VmaWxlRGVwcz1zJyA9PiBcJHN1cHBsZW1lbnRh
bE1ha2VmaWxlRGVwcyk7CiAKIGRpZSgnTXVzdCBzcGVjaWZ5ICNkZWZpbmUgbWFjcm9zIHVzaW5n
IC0tZGVmaW5lcy4nKSB1bmxlc3MgZGVmaW5lZCgkZGVmaW5lcyk7CkBAIC01NCw2ICs1OCw4IEBA
IGRpZSgnTXVzdCBzcGVjaWZ5IGFuIG91dHB1dCBmaWxlIHVzaW5nIC0td2luZG93Q29uc3RydWN0
b3JzRmlsZS4nKSB1bmxlc3MgZGVmaW5lCiBkaWUoJ011c3Qgc3BlY2lmeSBhbiBvdXRwdXQgZmls
ZSB1c2luZyAtLXdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZS4nKSB1bmxlc3MgZGVm
aW5lZCgkd29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlKTsKIGRpZSgnTXVzdCBzcGVj
aWZ5IGFuIG91dHB1dCBmaWxlIHVzaW5nIC0tZGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25z
dHJ1Y3RvcnNGaWxlLicpIHVubGVzcyBkZWZpbmVkKCRkZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZUNvbnN0cnVjdG9yc0ZpbGUpOwogZGllKCdNdXN0IHNwZWNpZnkgYW4gb3V0cHV0IGZpbGUgdXNp
bmcgLS1zZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlLicpIHVubGVzcyBk
ZWZpbmVkKCRzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlKTsKK2RpZSgn
TXVzdCBzcGVjaWZ5IGFuIG91dHB1dCBmaWxlIHVzaW5nIC0td29ya2xldEdsb2JhbFNjb3BlQ29u
c3RydWN0b3JzRmlsZS4nKSB1bmxlc3MgZGVmaW5lZCgkd29ya2xldEdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3JzRmlsZSk7CitkaWUoJ011c3Qgc3BlY2lmeSBhbiBvdXRwdXQgZmlsZSB1c2luZyAtLXBh
aW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZS4nKSB1bmxlc3MgZGVmaW5lZCgk
cGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlKTsKIGRpZSgnTXVzdCBzcGVj
aWZ5IHRoZSBmaWxlIGxpc3RpbmcgYWxsIElETHMgdXNpbmcgLS1pZGxGaWxlc0xpc3QuJykgdW5s
ZXNzIGRlZmluZWQoJGlkbEZpbGVzTGlzdCk7CiAKICRzdXBwbGVtZW50YWxEZXBlbmRlbmN5Rmls
ZSA9IEN5Z3dpblBhdGhJZk5lZWRlZCgkc3VwcGxlbWVudGFsRGVwZW5kZW5jeUZpbGUpOwpAQCAt
NjEsNiArNjcsOCBAQCAkd2luZG93Q29uc3RydWN0b3JzRmlsZSA9IEN5Z3dpblBhdGhJZk5lZWRl
ZCgkd2luZG93Q29uc3RydWN0b3JzRmlsZSk7CiAkd29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rv
cnNGaWxlID0gQ3lnd2luUGF0aElmTmVlZGVkKCR3b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9y
c0ZpbGUpOwogJGRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSA9IEN5
Z3dpblBhdGhJZk5lZWRlZCgkZGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNG
aWxlKTsKICRzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlID0gQ3lnd2lu
UGF0aElmTmVlZGVkKCRzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlKTsK
KyR3b3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlID0gQ3lnd2luUGF0aElmTmVlZGVk
KCR3b3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlKTsKKyRwYWludFdvcmtsZXRHbG9i
YWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgPSBDeWd3aW5QYXRoSWZOZWVkZWQoJHBhaW50V29ya2xl
dEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSk7CiAkc3VwcGxlbWVudGFsTWFrZWZpbGVEZXBz
ID0gQ3lnd2luUGF0aElmTmVlZGVkKCRzdXBwbGVtZW50YWxNYWtlZmlsZURlcHMpOwogCiBvcGVu
IEZILCAiPCAkaWRsRmlsZXNMaXN0IiBvciBkaWUgIkNhbm5vdCBvcGVuICRpZGxGaWxlc0xpc3Rc
biI7CkBAIC04MCw2ICs4OCw4IEBAIG15ICR3aW5kb3dDb25zdHJ1Y3RvcnNDb2RlID0gIiI7CiBt
eSAkd29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNDb2RlID0gIiI7CiBteSAkZGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNDb2RlID0gIiI7CiBteSAkc2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzQ29kZSA9ICIiOworbXkgJHdvcmtsZXRHbG9iYWxTY29w
ZUNvbnN0cnVjdG9yc0NvZGUgPSAiIjsKK215ICRwYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0
cnVjdG9yc0NvZGUgPSAiIjsKIAogIyBHZXQgcmlkIG9mIGR1cGxpY2F0ZXMgaW4gaWRsRmlsZXMg
YXJyYXkuCiBteSAlaWRsRmlsZUhhc2ggPSBtYXAgeyAkXywgMSB9IEBpZGxGaWxlczsKQEAgLTE0
Myw2ICsxNTMsMTAgQEAgZm9yZWFjaCBteSAkaWRsRmlsZSAoc29ydCBrZXlzICVpZGxGaWxlSGFz
aCkgewogICAgICAgICAgICAgICAgICAgICAkZGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25z
dHJ1Y3RvcnNDb2RlIC49ICRhdHRyaWJ1dGVDb2RlOwogICAgICAgICAgICAgICAgIH0gZWxzaWYg
KCRnbG9iYWxDb250ZXh0IGVxICJTZXJ2aWNlV29ya2VyIikgewogICAgICAgICAgICAgICAgICAg
ICAkc2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzQ29kZSAuPSAkYXR0cmlidXRl
Q29kZTsKKyAgICAgICAgICAgICAgICB9IGVsc2lmICgkZ2xvYmFsQ29udGV4dCBlcSAiV29ya2xl
dCIpIHsKKyAgICAgICAgICAgICAgICAgICAgJHdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9y
c0NvZGUgLj0gJGF0dHJpYnV0ZUNvZGU7CisgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGdsb2Jh
bENvbnRleHQgZXEgIlBhaW50V29ya2xldCIpIHsKKyAgICAgICAgICAgICAgICAgICAgJHBhaW50
V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzQ29kZSAuPSAkYXR0cmlidXRlQ29kZTsKICAg
ICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBkaWUgIlVuc3VwcG9y
dGVkIGdsb2JhbCBjb250ZXh0ICckZ2xvYmFsQ29udGV4dCcgdXNlZCBpbiBbRXhwb3NlZF0gYXQg
JGlkbEZpbGUiOwogICAgICAgICAgICAgICAgIH0KQEAgLTE1Nyw2ICsxNzEsOCBAQCBHZW5lcmF0
ZVBhcnRpYWxJbnRlcmZhY2UoIkRPTVdpbmRvdyIsICR3aW5kb3dDb25zdHJ1Y3RvcnNDb2RlLCAk
d2luZG93Q29uc3RydWN0bwogR2VuZXJhdGVQYXJ0aWFsSW50ZXJmYWNlKCJXb3JrZXJHbG9iYWxT
Y29wZSIsICR3b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0NvZGUsICR3b3JrZXJHbG9iYWxT
Y29wZUNvbnN0cnVjdG9yc0ZpbGUpOwogR2VuZXJhdGVQYXJ0aWFsSW50ZXJmYWNlKCJEZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZSIsICRkZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVj
dG9yc0NvZGUsICRkZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOwog
R2VuZXJhdGVQYXJ0aWFsSW50ZXJmYWNlKCJTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUiLCAkc2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzQ29kZSwgJHNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOworR2VuZXJhdGVQYXJ0aWFsSW50ZXJmYWNlKCJXb3Jr
bGV0R2xvYmFsU2NvcGUiLCAkd29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzQ29kZSwgJHdv
cmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOworR2VuZXJhdGVQYXJ0aWFsSW50ZXJm
YWNlKCJQYWludFdvcmtsZXRHbG9iYWxTY29wZSIsICRwYWludFdvcmtsZXRHbG9iYWxTY29wZUNv
bnN0cnVjdG9yc0NvZGUsICRwYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUp
OwogCiAjIFJlc29sdmVzIHBhcnRpYWwgaW50ZXJmYWNlcyBhbmQgaW1wbGVtZW50cyBkZXBlbmRl
bmNpZXMuCiBmb3JlYWNoIG15ICRpZGxGaWxlIChzb3J0IGtleXMgJXN1cHBsZW1lbnRhbERlcGVu
ZGVuY2llcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50SW1hZ2VW
YWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmNwcAppbmRl
eCBhNjkwZTQxZDc2NzFkZWEwMzUzMjFmYWZlN2I3ZmE5NzExYWJkYTUyLi43MzFmMzFkZDRlOGJk
NWNkMDQyNWNiYmZiZjQ2MjNiNzEwYjE4NGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFp
bnRJbWFnZVZhbHVlLmNwcApAQCAtMjksOCArMjksOCBAQAogCiAjaWYgRU5BQkxFKENTU19QQUlO
VElOR19BUEkpCiAKLSNpbmNsdWRlICJDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgogI2lu
Y2x1ZGUgIkN1c3RvbVBhaW50SW1hZ2UuaCIKKyNpbmNsdWRlICJQYWludFdvcmtsZXRHbG9iYWxT
Y29wZS5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CiAKQEAgLTUwLDggKzUwLDExIEBAIFJlZlB0cjxJbWFnZT4gQ1NTUGFp
bnRJbWFnZVZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50JiByZW5kZXJFbGVtZW50LCBjb25zdCBG
bG9hCiB7CiAgICAgaWYgKHNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICBhdXRvJiBzZWxlY3RlZEdsb2JhbFNjb3BlID0gcmVuZGVyRWxlbWVudC5kb2N1bWVudCgp
LmVuc3VyZUNTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlKCk7Ci0gICAgYXV0byogcmVnaXN0cmF0
aW9uID0gc2VsZWN0ZWRHbG9iYWxTY29wZS5wYWludERlZmluaXRpb25NYXAoKS5nZXQobV9uYW1l
KTsKKyAgICBhdXRvKiBzZWxlY3RlZEdsb2JhbFNjb3BlID0gcmVuZGVyRWxlbWVudC5kb2N1bWVu
dCgpLnBhaW50V29ya2xldEdsb2JhbFNjb3BlKCk7CisgICAgaWYgKCFzZWxlY3RlZEdsb2JhbFNj
b3BlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KHNlbGVjdGVkR2xvYmFsU2NvcGUtPnBhaW50RGVmaW5pdGlvbkxvY2soKSk7CisgICAgYXV0byog
cmVnaXN0cmF0aW9uID0gc2VsZWN0ZWRHbG9iYWxTY29wZS0+cGFpbnREZWZpbml0aW9uTWFwKCku
Z2V0KG1fbmFtZSk7CiAKICAgICBpZiAoIXJlZ2lzdHJhdGlvbikKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50V29ya2xldEdsb2JhbFNj
b3BlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQ5NzNjZDM4ZDY4ZTQzY2M1
Mjg1YzU4MTA0YjI1ZGRiNmUxMGMyOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgotCi0jaWYgRU5BQkxFKENTU19QQUlOVElO
R19BUEkpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmPENTU1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlPiBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6Y3JlYXRlKCkKLXsKLSAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSgpKTsKLX0KLQotQ1NT
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OkNTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlKCkKLXsK
LX0KLQotZG91YmxlIENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlOjpkZXZpY2VQaXhlbFJhdGlv
KCkKLXsKLSAgICByZXR1cm4gMS4wOwotfQotCi1FeGNlcHRpb25Pcjx2b2lkPiBDU1NQYWludFdv
cmtsZXRHbG9iYWxTY29wZTo6YWRkUmVnaXN0ZXJlZFBhaW50KCkKLXsKLSAgICByZXR1cm4geyB9
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMjNiMGQ5ZDhmM2YwMjM3ZTI3OTJmY2VmN2U0NzdmZTU4YzYyYTMwOC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDY3
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQotCi0jaW5jbHVkZSAi
Q1NTUGFpbnRDYWxsYmFjay5oIgotI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCi0jaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIEpTVmFsdWU7Ci0KLX0gLy8g
bmFtZXNwYWNlIEpTQwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIENTU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlIDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGU+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENTU1BhaW50V29ya2xldEdsb2JhbFNj
b3BlPiBjcmVhdGUoKTsKLQotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGFkZFJlZ2lzdGVyZWRQYWlu
dCgpOwotICAgIGRvdWJsZSBkZXZpY2VQaXhlbFJhdGlvKCk7Ci0KLSAgICBzdHJ1Y3QgUGFpbnRE
ZWZpbml0aW9uIHsKLSAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nIG5hbWU7Ci0gICAgICAgIGNv
bnN0IFJlZjxDU1NQYWludENhbGxiYWNrPiBwYWludENhbGxiYWNrOwotICAgICAgICBjb25zdCBW
ZWN0b3I8U3RyaW5nPiBpbnB1dFByb3BlcnRpZXM7Ci0gICAgICAgIGNvbnN0IFZlY3RvcjxTdHJp
bmc+IGlucHV0QXJndW1lbnRzOwotICAgIH07Ci0KLSAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1
bmlxdWVfcHRyPFBhaW50RGVmaW5pdGlvbj4+JiBwYWludERlZmluaXRpb25NYXAoKSB7IHJldHVy
biBtX3BhaW50RGVmaW5pdGlvbk1hcDsgfQotCi1wcml2YXRlOgotICAgIENTU1BhaW50V29ya2xl
dEdsb2JhbFNjb3BlKCk7Ci0KLSAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFBh
aW50RGVmaW5pdGlvbj4+IG1fcGFpbnREZWZpbml0aW9uTWFwOwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGUuaWRsIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTUzNmMw
YTQxMzk1YzBhMWEwODRmYTFmN2ViNWE2YzJiYTcyYTYxZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotLyoKLSog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSoKLSog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0qIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotKiBhcmUgbWV0OgotKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0qIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0qICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSoKLSog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0qIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0qIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0qIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0qLwotCi1bCi0gICAgRW5hYmxlZEF0UnVudGltZT1DU1NQYWludGluZ0FQSSwK
LSAgICBDb25kaXRpb25hbD1DU1NfUEFJTlRJTkdfQVBJLAotICAgIEltcGxlbWVudGF0aW9uTGFj
a3NWVGFibGUsCi0gICAgSlNDdXN0b21NYXJrRnVuY3Rpb24sCi0gICAgSlNHZW5lcmF0ZVRvTmF0
aXZlT2JqZWN0Ci1dIGludGVyZmFjZSBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSB7Ci0gICAg
W0N1c3RvbSwgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgcmVnaXN0ZXJQYWludChET01TdHJpbmcg
bmFtZSwgRnVuY3Rpb24gcGFpbnRDdG9yKTsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5yZXN0
cmljdGVkIGRvdWJsZSBkZXZpY2VQaXhlbFJhdGlvOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RP
TUNTU1BhaW50V29ya2xldC5jcHAKaW5kZXggMTIwNjgxYjhkNzYxMzQ2ZGE3MmFjYzVhMGIyMjY5
ZTE0MDczNTg5Yi4uNjVhMmZkZjhkZmFjYjRkN2Y3MWQ3NjFjYjIxNjZiMWE5Mjg0YzA3MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5jcHAKQEAgLTI4LDE2ICsyOCwx
NyBAQAogCiAjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCiAKLSNpbmNsdWRlICJDU1NQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIkRPTUNTU05hbWVzcGFjZS5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiV29ya2xldC5oIgorCiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ1NTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUmIERPTUNTU1BhaW50V29ya2xldDo6ZW5zdXJlUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUoRG9jdW1lbnQmIGRvY3VtZW50KQorV29ya2xldCYgRE9NQ1NTUGFpbnRXb3JrbGV0
OjplbnN1cmVQYWludFdvcmtsZXQoRG9jdW1lbnQmIGRvY3VtZW50KQogewotICAgIHJldHVybiBk
b2N1bWVudC5lbnN1cmVDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSgpOworICAgIHJldHVybiBk
b2N1bWVudC5lbnN1cmVQYWludFdvcmtsZXQoKTsKIH0KIAogRE9NQ1NTUGFpbnRXb3JrbGV0KiBE
T01DU1NQYWludFdvcmtsZXQ6OmZyb20oRE9NQ1NTTmFtZXNwYWNlJiBjc3MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmgKaW5kZXggZWU1ZWZiMTFkMTliYjYyZjM4ZTU2ZTEw
ZTVkNjE2M2NjOWQ4ZmIzZi4uYTJjYjM3M2Y2YTAzNDEzZDEyMWI0MDE0MzRiZmQ5ZWY5OWE5NzZm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuaApAQCAtMzUsMTQgKzM1
LDE0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgQ1NT
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU7CitjbGFzcyBXb3JrbGV0OwogY2xhc3MgRE9NQ1NTTmFt
ZXNwYWNlOwogCiBjbGFzcyBET01DU1NQYWludFdvcmtsZXQgZmluYWwgOiBwdWJsaWMgU3VwcGxl
bWVudDxET01DU1NOYW1lc3BhY2U+IHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBET01DU1NQYWlu
dFdvcmtsZXQoRE9NQ1NTTmFtZXNwYWNlJikgeyB9CiAKLSAgICBzdGF0aWMgQ1NTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUmIGVuc3VyZVBhaW50V29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50Jik7
CisgICAgc3RhdGljIFdvcmtsZXQmIGVuc3VyZVBhaW50V29ya2xldChEb2N1bWVudCYpOwogCiBw
cml2YXRlOgogICAgIHN0YXRpYyBET01DU1NQYWludFdvcmtsZXQqIGZyb20oRE9NQ1NTTmFtZXNw
YWNlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuaWRsCmluZGV4IDE5
MGNkYjQ1ZWM3NTNkZWJiZTk2ZjhkODMzODEzZjQ0NjM1YWU4YzMuLmFhNTllNWVlMmRlOTE4MWQz
MDQ3ZmUzNDgwNGZlNTI3YTI2Zjc0MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9E
T01DU1NQYWludFdvcmtsZXQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWlu
dFdvcmtsZXQuaWRsCkBAIC0yNyw2ICsyNyw1IEBACiAgICAgRW5hYmxlZEF0UnVudGltZT1DU1NQ
YWludGluZ0FQSSwKICAgICBDb25kaXRpb25hbD1DU1NfUEFJTlRJTkdfQVBJLAogXSBwYXJ0aWFs
IGludGVyZmFjZSBET01DU1NOYW1lc3BhY2UgewotICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5vdCBh
Y3R1YWxseSBwYXJ0IG9mIHRoZSBzcGVjLCBhbmQgc2hvdWxkIGJlIHJlcGxhY2VkIHdoZW4gd29y
a2xldHMgYXJlIGltcGxlbWVudGVkCi0gICAgW0ltcGxlbWVudGVkQXM9ZW5zdXJlUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUsQ2FsbFdpdGg9RG9jdW1lbnRdIHN0YXRpYyByZWFkb25seSBhdHRyaWJ1
dGUgQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUgcGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU7Cisg
ICAgW0ltcGxlbWVudGVkQXM9ZW5zdXJlUGFpbnRXb3JrbGV0LENhbGxXaXRoPURvY3VtZW50XSBz
dGF0aWMgcmVhZG9ubHkgYXR0cmlidXRlIFdvcmtsZXQgcGFpbnRXb3JrbGV0OwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCmluZGV4IDdiNDgwOGJlNmEzODY3NTEwMDgwYzBiYTQwMmMxNzFmMWU1
ODAzMDguLjNkOTUwZmZkMzRhZmE2YmI3YmIyMjY3NTdmNTVmZGE4NDc0OWU1NzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIkNEQVRBU2VjdGlv
bi5oIgogI2luY2x1ZGUgIkNTU0FuaW1hdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJDU1NG
b250U2VsZWN0b3IuaCIKLSNpbmNsdWRlICJDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgog
I2luY2x1ZGUgIkNTU1N0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJDU1NTdHlsZVNoZWV0
LmgiCiAjaW5jbHVkZSAiQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIgpAQCAtMTQwLDYgKzEzOSw3IEBA
CiAjaW5jbHVkZSAiUGFnZUNvbnNvbGVDbGllbnQuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIK
ICNpbmNsdWRlICJQYWdlVHJhbnNpdGlvbkV2ZW50LmgiCisjaW5jbHVkZSAiUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxvY2FsZS5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgi
CkBAIC0yMTcsNiArMjE3LDcgQEAKICNpbmNsdWRlICJXZWJBbmltYXRpb24uaCIKICNpbmNsdWRl
ICJXaGVlbEV2ZW50LmgiCiAjaW5jbHVkZSAiV2luZG93RmVhdHVyZXMuaCIKKyNpbmNsdWRlICJX
b3JrbGV0LmgiCiAjaW5jbHVkZSAiWE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJYTUxEb2N1bWVu
dFBhcnNlci5oIgogI2luY2x1ZGUgIlhNTE5TTmFtZXMuaCIKQEAgLTgzNzcsMTEgKzgzNzgsMTYg
QEAgdm9pZCBEb2N1bWVudDo6ZnJhbWVXYXNEaXNjb25uZWN0ZWRGcm9tT3duZXIoKQogfQogCiAj
aWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCi1DU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSYg
RG9jdW1lbnQ6OmVuc3VyZUNTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlKCkKK1dvcmtsZXQmIERv
Y3VtZW50OjplbnN1cmVQYWludFdvcmtsZXQoKQogewotICAgIGlmICghbV9DU1NQYWludFdvcmts
ZXRHbG9iYWxTY29wZSkKLSAgICAgICAgbV9DU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSA9IENT
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlOjpjcmVhdGUoKTsKLSAgICByZXR1cm4gKm1fQ1NTUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGU7CisgICAgaWYgKCFtX3BhaW50V29ya2xldCkKKyAgICAgICAg
bV9wYWludFdvcmtsZXQgPSBXb3JrbGV0OjpjcmVhdGUoKTsKKyAgICByZXR1cm4gKm1fcGFpbnRX
b3JrbGV0OworfQorCit2b2lkIERvY3VtZW50OjpzZXRQYWludFdvcmtsZXRHbG9iYWxTY29wZShS
ZWY8UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+JiYgc2NvcGUpCit7CisgICAgbV9wYWludFdvcmts
ZXRHbG9iYWxTY29wZSA9IFdURk1vdmUoc2NvcGUpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgKaW5kZXggODU0MmMxNTU2NzE3ZjI3YjYwODkwN2QyZDE0ZWUxNGNkYTI0OGZkOC4uNmRk
ZjE0NWVkYTViYWI2NTdjZmY5OGViYmMwZjcwOTM5NGU5MTA5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgKQEAgLTg4LDcgKzg4LDYgQEAgY2xhc3MgQXR0cjsKIGNsYXNzIENEQVRBU2VjdGlvbjsKIGNs
YXNzIENTU0N1c3RvbVByb3BlcnR5VmFsdWU7CiBjbGFzcyBDU1NGb250U2VsZWN0b3I7Ci1jbGFz
cyBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZTsKIGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb247
CiBjbGFzcyBDU1NTdHlsZVNoZWV0OwogY2xhc3MgQ2FjaGVkQ1NTU3R5bGVTaGVldDsKQEAgLTE1
NCw2ICsxNTMsNyBAQCBjbGFzcyBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzOwogY2xhc3Mg
Tm9kZUZpbHRlcjsKIGNsYXNzIE5vZGVJdGVyYXRvcjsKIGNsYXNzIFBhZ2U7CitjbGFzcyBQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZTsKIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsKIGNsYXNzIFBy
b2Nlc3NpbmdJbnN0cnVjdGlvbjsKIGNsYXNzIFF1YWxpZmllZE5hbWU7CkBAIC0xOTQsNiArMTk0
LDcgQEAgY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0OwogY2xhc3MgV2ViR1BVUmVuZGVyaW5n
Q29udGV4dDsKIGNsYXNzIFdlYk1ldGFsUmVuZGVyaW5nQ29udGV4dDsKIGNsYXNzIFdpbmRvd1By
b3h5OworY2xhc3MgV29ya2xldDsKIGNsYXNzIFhQYXRoRXZhbHVhdG9yOwogY2xhc3MgWFBhdGhF
eHByZXNzaW9uOwogY2xhc3MgWFBhdGhOU1Jlc29sdmVyOwpAQCAtMTM1MCw2ICsxMzUxLDEwIEBA
IHB1YmxpYzoKICAgICAvLyBDYWxsZXJzIHNob3VsZCB0cnkgdG8gY3JlYXRlIHRoZSBDb25zb2xl
TWVzc2FnZSB0aGVtc2VsdmVzLgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQ29uc29sZU1l
c3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIgPSAwKSBmaW5hbDsKIAorICAgIC8vIFRo
ZSBmb2xsb3dpbmcgYWRkTWVzc2FnZSBmdW5jdGlvbiBpcyBkZXByZWNhdGVkLgorICAgIC8vIENh
bGxlcnMgc2hvdWxkIHRyeSB0byBjcmVhdGUgdGhlIENvbnNvbGVNZXNzYWdlIHRoZW1zZWx2ZXMu
CisgICAgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgdW5zaWduZWQgbGluZU51
bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRDYWxs
U3RhY2s+JiYsIEpTQzo6RXhlY1N0YXRlKiA9IG51bGxwdHIsIHVuc2lnbmVkIGxvbmcgcmVxdWVz
dElkZW50aWZpZXIgPSAwKSBmaW5hbDsKKwogICAgIFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9y
aWdpbigpIGNvbnN0IHsgcmV0dXJuICpTZWN1cml0eUNvbnRleHQ6OnNlY3VyaXR5T3JpZ2luKCk7
IH0KICAgICBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
dG9wRG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpOyB9CiAKQEAgLTE1MTcsNyArMTUyMiw5IEBA
IHB1YmxpYzoKICAgICBib29sIHJlZ2lzdGVyQ1NTUHJvcGVydHkoQ1NTUmVnaXN0ZXJlZEN1c3Rv
bVByb3BlcnR5JiYpOwogCiAjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCi0gICAgQ1NTUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGUmIGVuc3VyZUNTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlKCk7
CisgICAgV29ya2xldCYgZW5zdXJlUGFpbnRXb3JrbGV0KCk7CisgICAgUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUqIHBhaW50V29ya2xldEdsb2JhbFNjb3BlKCkgeyByZXR1cm4gbV9wYWludFdvcmts
ZXRHbG9iYWxTY29wZS5nZXQoKTsgfQorICAgIHZvaWQgc2V0UGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUoUmVmPFBhaW50V29ya2xldEdsb2JhbFNjb3BlPiYmKTsKICNlbmRpZgogCiAgICAgdm9pZCBz
ZXRBc1J1bm5pbmdVc2VyU2NyaXB0cygpIHsgbV9pc1J1bm5pbmdVc2VyU2NyaXB0cyA9IHRydWU7
IH0KQEAgLTE1NzAsMTAgKzE1NzcsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVmU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpIGZpbmFsIHsgcmVmKCk7IH0KICAgICB2b2lkIGRlcmVmU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpIGZpbmFsIHsgZGVyZWYoKTsgfQogCi0gICAgLy8gVGhlIGZvbGxvd2lu
ZyBhZGRNZXNzYWdlIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQuCi0gICAgLy8gQ2FsbGVycyBzaG91
bGQgdHJ5IHRvIGNyZWF0ZSB0aGUgQ29uc29sZU1lc3NhZ2UgdGhlbXNlbHZlcy4KLSAgICB2b2lk
IGFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNp
Z25lZCBjb2x1bW5OdW1iZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFjaz4mJiwg
SlNDOjpFeGVjU3RhdGUqID0gbnVsbHB0ciwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmll
ciA9IDApIGZpbmFsOwotCiAgICAgU2Vjb25kcyBtaW5pbXVtRE9NVGltZXJJbnRlcnZhbCgpIGNv
bnN0IGZpbmFsOwogCiAgICAgU2Vjb25kcyBkb21UaW1lckFsaWdubWVudEludGVydmFsKGJvb2wg
aGFzUmVhY2hlZE1heE5lc3RpbmdMZXZlbCkgY29uc3QgZmluYWw7CkBAIC0yMDYwLDcgKzIwNjMs
OCBAQCBwcml2YXRlOgogICAgIENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCBtX0NTU1Jl
Z2lzdGVyZWRQcm9wZXJ0eVNldDsKIAogI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQotICAg
IFJlZlB0cjxDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZT4gbV9DU1NQYWludFdvcmtsZXRHbG9i
YWxTY29wZTsKKyAgICBSZWZQdHI8V29ya2xldD4gbV9wYWludFdvcmtsZXQ7CisgICAgUmVmUHRy
PFBhaW50V29ya2xldEdsb2JhbFNjb3BlPiBtX3BhaW50V29ya2xldEdsb2JhbFNjb3BlOwogI2Vu
ZGlmCiAKICAgICBib29sIG1faXNSdW5uaW5nVXNlclNjcmlwdHMgeyBmYWxzZSB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbiBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KaW5kZXggNjBhYjFhNTgyODhiZTk5YTI5
N2VlOTIzYjg4OTQwZjE5M2Y2ZjU1Zi4uNzhhMjJiMzE2YTRjNDY4MGIxZDdjMjI3NGFjYjZhYjdm
ZDU2NDhiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9y
eS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCkBAIC01
Miw2ICs1Miw3IEBAIFdlYkFuaW1hdGlvbgogV2ViS2l0TWVkaWFLZXlTZXNzaW9uIGNvbmRpdGlv
bmFsPUxFR0FDWV9FTkNSWVBURURfTUVESUEKIFdlYlNvY2tldAogV29ya2VyCitXb3JrbGV0R2xv
YmFsU2NvcGUgY29uZGl0aW9uYWw9Q1NTX1BBSU5USU5HX0FQSQogWE1MSHR0cFJlcXVlc3QKIFhN
TEh0dHBSZXF1ZXN0VXBsb2FkCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRp
b25Db250ZXh0LmNwcAppbmRleCBiYTVjMzYzMjRiYzgzNDAwZTQ0YjhjOWMxNWIxNTVlNTgzNzBj
ZmJmLi5lZWUzOGI1YmJhZjJjOTNiNGE1YWYyZjgyZDkzY2E1MTBlY2QxMzdlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC01NCw2ICs1NCw4
IEBACiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJOYXZp
Z2F0b3IuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKKyNpbmNsdWRlICJXb3JrbGV0R2xv
YmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0NhdGNoU2NvcGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9FeGNlcHRpb24uaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1Byb21pc2UuaD4KQEAg
LTQ3Niw4ICs0NzgsMTUgQEAgSlNDOjpWTSYgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6dm0oKQog
ewogICAgIGlmIChpczxEb2N1bWVudD4oKnRoaXMpKQogICAgICAgICByZXR1cm4gY29tbW9uVk0o
KTsKKyAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KCp0aGlzKSkKKyAgICAgICAgcmV0dXJu
IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykuc2NyaXB0KCktPnZtKCk7CisjaWYg
RU5BQkxFKENTU19QQUlOVElOR19BUEkpCisgICAgaWYgKGlzPFdvcmtsZXRHbG9iYWxTY29wZT4o
KnRoaXMpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8V29ya2xldEdsb2JhbFNjb3BlPigqdGhp
cykuc2NyaXB0KCktPnZtKCk7CisjZW5kaWYKIAotICAgIHJldHVybiBkb3duY2FzdDxXb3JrZXJH
bG9iYWxTY29wZT4oKnRoaXMpLnNjcmlwdCgpLT52bSgpOworICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGNvbW1vblZNKCk7CiB9CiAKIFJlamVjdGVkUHJvbWlz
ZVRyYWNrZXImIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmVuc3VyZVJlamVjdGVkUHJvbWlzZVRy
YWNrZXJTbG93KCkKQEAgLTUxOSw4ICs1MjgsMTkgQEAgSlNDOjpFeGVjU3RhdGUqIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OmV4ZWNTdGF0ZSgpCiAgICAgICAgIHJldHVybiBleGVjU3RhdGVGcm9t
UGFnZShtYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgZG9jdW1lbnQucGFnZSgpKTsKICAgICB9CiAK
LSAgICBXb3JrZXJHbG9iYWxTY29wZSogd29ya2VyR2xvYmFsU2NvcGUgPSBzdGF0aWNfY2FzdDxX
b3JrZXJHbG9iYWxTY29wZSo+KHRoaXMpOwotICAgIHJldHVybiBleGVjU3RhdGVGcm9tV29ya2Vy
R2xvYmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUpOworICAgIGlmIChpczxXb3JrZXJHbG9iYWxT
Y29wZT4oKnRoaXMpKSB7CisgICAgICAgIFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxT
Y29wZSA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcyk7CisgICAgICAgIHJldHVy
biBleGVjU3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUpOworICAg
IH0KKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKyAgICBpZiAoaXM8V29ya2xldEdsb2Jh
bFNjb3BlPigqdGhpcykpIHsKKyAgICAgICAgV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrbGV0R2xv
YmFsU2NvcGUgPSBkb3duY2FzdDxXb3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlzKTsKKyAgICAgICAg
cmV0dXJuIGV4ZWNTdGF0ZUZyb21Xb3JrbGV0R2xvYmFsU2NvcGUod29ya2xldEdsb2JhbFNjb3Bl
KTsKKyAgICB9CisjZW5kaWYKKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBudWxscHRyOwogfQogCiBTdHJpbmcgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZG9tYWluRm9y
Q2FjaGVQYXJ0aXRpb24oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgKaW5kZXggMmI2NDc1ZTYyN2RjZWZkNWRkYjY0MzRlMTUxNTU0NjVlNTVjNDdl
NC4uNzg1OTA0NTgyM2I3YzYzMDUwYWUwMWYxYTY0NWJhZDMwYjJkYzc5YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC04OSw2ICs4OSw3IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpc0RvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNXb3JrZXJHbG9iYWxTY29wZSgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzV29ya2xldEdsb2JhbFNjb3BlKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRleHRUaHJlYWQo
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIGlzSlNFeGVjdXRpb25G
b3JiaWRkZW4oKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IGNh
YzA2MjU2OTlhNDE4Yjg5MGQzZDExM2QzYzQ5MjdiZGU2ZmVjOWQuLmIyMGNiYmM5NTA3MDI4MTFi
NjU4OWFjMWRmYmQ1NzMzOTE5M2QzMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwCkBA
IC02MCw3ICs2MCw3IEBAIEluamVjdGVkU2NyaXB0IFdvcmtlckRlYnVnZ2VyQWdlbnQ6OmluamVj
dGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYgZXJyb3JTdHJpCiAgICAgICAgIHJldHVybiBJ
bmplY3RlZFNjcmlwdCgpOwogICAgIH0KIAotICAgIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0
ZSA9IGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZSgmbV93b3JrZXJHbG9iYWxTY29wZSk7
CisgICAgSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlID0gZXhlY1N0YXRlRnJvbVdvcmtlckds
b2JhbFNjb3BlKG1fd29ya2VyR2xvYmFsU2NvcGUpOwogICAgIHJldHVybiBpbmplY3RlZFNjcmlw
dE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJS
dW50aW1lQWdlbnQuY3BwCmluZGV4IDljYzY5ZDE3MjRjZGFkMThmOThlM2QzYjMyZjI5NjhhNTU0
ZTA2N2QuLjhjMzIxNDg3YzY4NWZkMzRmYWVhYTc1NTBjOThhMjI5MDg3NWQzMjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29y
a2VyUnVudGltZUFnZW50LmNwcApAQCAtNjUsNyArNjUsNyBAQCBJbmplY3RlZFNjcmlwdCBXb3Jr
ZXJSdW50aW1lQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYgZXJyb3JT
dHJpbgogICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKICAgICB9CiAKLSAgICBKU0M6
OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUgPSBleGVjU3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUo
Jm1fd29ya2VyR2xvYmFsU2NvcGUpOworICAgIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSA9
IGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZShtX3dvcmtlckdsb2JhbFNjb3BlKTsKICAg
ICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0
U3RhdGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9DdXN0b21QYWludEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0N1c3RvbVBhaW50SW1hZ2UuY3BwCmluZGV4IGQyZTQyYzBjOWU2MTk5ZjUyNzQyOTE2NzBmMTdh
MDZlOWRlODIwZmIuLjE1YWE5MjRjMmI2MTcxZTUzNTBjMTAxZDQ0MGJlNmMzY2NhNTBjOTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50
SW1hZ2UuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ3Vz
dG9tUGFpbnRJbWFnZTo6Q3VzdG9tUGFpbnRJbWFnZShjb25zdCBDU1NQYWludFdvcmtsZXRHbG9i
YWxTY29wZTo6UGFpbnREZWZpbml0aW9uJiBkZWZpbml0aW9uLCBjb25zdCBGbG9hdFNpemUmIHNp
emUpCitDdXN0b21QYWludEltYWdlOjpDdXN0b21QYWludEltYWdlKGNvbnN0IFBhaW50V29ya2xl
dEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb24mIGRlZmluaXRpb24sIGNvbnN0IEZsb2F0U2l6
ZSYgc2l6ZSkKICAgICA6IG1fcGFpbnRDYWxsYmFjayhkZWZpbml0aW9uLnBhaW50Q2FsbGJhY2su
Z2V0KCkpCiB7CiAgICAgc2V0Q29udGFpbmVyU2l6ZShzaXplKTsKQEAgLTYzLDcgKzYzLDYgQEAg
SW1hZ2VEcmF3UmVzdWx0IEN1c3RvbVBhaW50SW1hZ2U6OmRvQ3VzdG9tUGFpbnQoR3JhcGhpY3ND
b250ZXh0JiBkZXN0Q29udGV4dCwgY28KICAgICBpZiAocmVzdWx0LnR5cGUoKSAhPSBDYWxsYmFj
a1Jlc3VsdFR5cGU6OlN1Y2Nlc3MpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRp
ZE5vdGhpbmc7CiAKLSAgICBVTlVTRURfUEFSQU0oZGVzdENvbnRleHQpOwogICAgIGF1dG8gaW1h
Z2UgPSBjYW52YXMtPmNvcGllZEltYWdlKCk7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0
dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuaAppbmRleCAwM2FiMmE4ODg2ODNh
M2Y1Mzg3MWRhYzViNTFmODkxOWRhNGM0ZGQyLi5lYjZhODFiYWUyNGQxMTdlMGNkMzQ4OGRjNDdh
NzZlNjJiMDQyMGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9DdXN0b21QYWludEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ3VzdG9tUGFpbnRJbWFnZS5oCkBAIC0yNyw4ICsyNyw4IEBACiAKICNpZiBFTkFCTEUoQ1NT
X1BBSU5USU5HX0FQSSkKIAotI2luY2x1ZGUgIkNTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgi
CiAjaW5jbHVkZSAiR2VuZXJhdGVkSW1hZ2UuaCIKKyNpbmNsdWRlICJQYWludFdvcmtsZXRHbG9i
YWxTY29wZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM2LDcgKzM2LDcgQEAgY2xh
c3MgSW1hZ2VCdWZmZXI7CiAKIGNsYXNzIEN1c3RvbVBhaW50SW1hZ2UgZmluYWwgOiBwdWJsaWMg
R2VuZXJhdGVkSW1hZ2UgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q3VzdG9tUGFpbnRJbWFn
ZT4gY3JlYXRlKGNvbnN0IENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRp
b24mIGRlZmluaXRpb24sIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKKyAgICBzdGF0aWMgUmVmPEN1
c3RvbVBhaW50SW1hZ2U+IGNyZWF0ZShjb25zdCBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6UGFp
bnREZWZpbml0aW9uJiBkZWZpbml0aW9uLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCiAgICAgewog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDdXN0b21QYWludEltYWdlKGRlZmluaXRpb24s
IHNpemUpKTsKICAgICB9CkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQ3Vz
dG9tUGFpbnRJbWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogcHJpdmF0
ZToKLSAgICBDdXN0b21QYWludEltYWdlKGNvbnN0IENTU1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
OjpQYWludERlZmluaXRpb24mLCBjb25zdCBGbG9hdFNpemUmKTsKKyAgICBDdXN0b21QYWludElt
YWdlKGNvbnN0IFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb24mLCBjb25z
dCBGbG9hdFNpemUmKTsKIAogICAgIEltYWdlRHJhd1Jlc3VsdCBkb0N1c3RvbVBhaW50KEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjYxOTIz
NmU1YmM0MDg1ZGI1Y2Y3Y2YyMmE5NTYwMTAyMGE5ZjRmMAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcApAQCAtMCww
ICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBhaW50V29ya2xldEdsb2JhbFNjb3BlLmgi
CisKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKworI2luY2x1ZGUgIkRPTVdpbmRvdy5o
IgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFBh
aW50V29ya2xldEdsb2JhbFNjb3BlPiBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6Y3JlYXRlKERv
Y3VtZW50JiBkb2N1bWVudCwgU2NyaXB0U291cmNlQ29kZSYmIGNvZGUpCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoZG9jdW1lbnQsIFdURk1vdmUo
Y29kZSkpKTsKK30KKworUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OlBhaW50V29ya2xldEdsb2Jh
bFNjb3BlKERvY3VtZW50JiBkb2N1bWVudCwgU2NyaXB0U291cmNlQ29kZSYmIGNvZGUpCisgICAg
OiBXb3JrbGV0R2xvYmFsU2NvcGUoZG9jdW1lbnQsIFdURk1vdmUoY29kZSkpCit7Cit9CisKK2Rv
dWJsZSBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6ZGV2aWNlUGl4ZWxSYXRpbygpCit7CisgICAg
QVNTRVJUKG1fZG9jdW1lbnQpOworICAgIEFTU0VSVChtX2RvY3VtZW50LT5kb21XaW5kb3coKSk7
CisgICAgcmV0dXJuIG1fZG9jdW1lbnQtPmRvbVdpbmRvdygpLT5kZXZpY2VQaXhlbFJhdGlvKCk7
Cit9CisKK0V4Y2VwdGlvbk9yPHZvaWQ+IFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjphZGRSZWdp
c3RlcmVkUGFpbnQoKQoreworICAgIHJldHVybiB7IH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOGNkZDRiMDcwYzE4MTEzNTljYWRhMTU3MDlk
Y2UwNmEzYThhMWQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMv
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoQ1NTX1BBSU5USU5HX0FQSSkKKworI2luY2x1ZGUgIkNTU1BhaW50Q2FsbGJhY2suaCIKKyNp
bmNsdWRlICJXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBK
U1ZhbHVlOworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUgOiBwdWJsaWMgV29ya2xldEdsb2JhbFNjb3BlIHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFBhaW50V29ya2xldEdsb2JhbFNjb3BlPiBjcmVhdGUo
RG9jdW1lbnQmLCBTY3JpcHRTb3VyY2VDb2RlJiYpOworICAgIGJvb2wgaXNQYWludFdvcmtsZXRH
bG9iYWxTY29wZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKworICAgIEV4Y2VwdGlv
bk9yPHZvaWQ+IGFkZFJlZ2lzdGVyZWRQYWludCgpOworICAgIGRvdWJsZSBkZXZpY2VQaXhlbFJh
dGlvKCk7CisKKyAgICBzdHJ1Y3QgUGFpbnREZWZpbml0aW9uIHsKKyAgICAgICAgY29uc3QgQXRv
bWljU3RyaW5nIG5hbWU7CisgICAgICAgIGNvbnN0IFJlZjxDU1NQYWludENhbGxiYWNrPiBwYWlu
dENhbGxiYWNrOworICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiBpbnB1dFByb3BlcnRpZXM7
CisgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+IGlucHV0QXJndW1lbnRzOworICAgIH07CisK
KyAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFBhaW50RGVmaW5pdGlvbj4+JiBw
YWludERlZmluaXRpb25NYXAoKSB7IFJFTEVBU0VfQVNTRVJUKG1fcGFpbnREZWZpbml0aW9uTG9j
ay5pc0xvY2tlZCgpKTsgcmV0dXJuIG1fcGFpbnREZWZpbml0aW9uTWFwOyB9CisgICAgTG9jayYg
cGFpbnREZWZpbml0aW9uTG9jaygpIHsgcmV0dXJuIG1fcGFpbnREZWZpbml0aW9uTG9jazsgfQor
Citwcml2YXRlOgorICAgIFBhaW50V29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50JiwgU2NyaXB0
U291cmNlQ29kZSYmKTsKKworICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8UGFp
bnREZWZpbml0aW9uPj4gbV9wYWludERlZmluaXRpb25NYXA7CisgICAgTG9jayBtX3BhaW50RGVm
aW5pdGlvbkxvY2s7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmts
ZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRz
L1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNTQ5Y2NmMDQzYmUwNGRi
NjkxZGVkN2Y2MGM0ZWU1ZWE3YWNjZGI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaWRsCkBAIC0wLDAgKzEsMzkgQEAK
Ky8qCisqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorKi8KKworWworICAgIEV4cG9zZWQ9UGFpbnRXb3JrbGV0LAorICAg
IEVuYWJsZWRBdFJ1bnRpbWU9Q1NTUGFpbnRpbmdBUEksCisgICAgQ29uZGl0aW9uYWw9Q1NTX1BB
SU5USU5HX0FQSSwKKyAgICBKU0N1c3RvbU1hcmtGdW5jdGlvbiwKKyAgICBKU0dlbmVyYXRlVG9O
YXRpdmVPYmplY3QsCisgICAgSW1wbGljaXRUaGlzLAorICAgIElzSW1tdXRhYmxlUHJvdG90eXBl
RXhvdGljT2JqZWN0LAorICAgIElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0T25Qcm90
b3R5cGUsCisgICAgR2xvYmFsPShXb3JrbGV0LFBhaW50V29ya2xldCksCitdIGludGVyZmFjZSBQ
YWludFdvcmtsZXRHbG9iYWxTY29wZSA6IFdvcmtsZXRHbG9iYWxTY29wZSB7CisgICAgW0N1c3Rv
bSwgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgcmVnaXN0ZXJQYWludChET01TdHJpbmcgbmFtZSwg
RnVuY3Rpb24gcGFpbnRDdG9yKTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5yZXN0cmljdGVk
IGRvdWJsZSBkZXZpY2VQaXhlbFJhdGlvOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1dvcmtsZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMzhmMmM1ODk2ZjJjYmQ5ZmY4NmNkNTgwMDEyMTllMTg5NDQ2Nzc3Mgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQuY3BwCkBA
IC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV29ya2xldC5oIgorCisjaWYgRU5B
QkxFKENTU19QQUlOVElOR19BUEkpCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUg
IlBhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxXb3JrbGV0PiBXb3JrbGV0OjpjcmVhdGUo
KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdvcmtsZXQoKSk7Cit9CisKK1dvcmtsZXQ6
OldvcmtsZXQoKQoreworfQorCit2b2lkIFdvcmtsZXQ6OmFkZE1vZHVsZShEb2N1bWVudCYgZG9j
dW1lbnQsIGNvbnN0IFN0cmluZyYgbW9kdWxlVVJMKQoreworICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgZG93bmxvYWQgdGhlIHNvdXJjZSBmcm9tIHRoZSBVUkwKKyAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxMTM2CisgICAgYXV0byBjb250ZXh0ID0gUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGU6OmNyZWF0ZShkb2N1bWVudCwgU2NyaXB0U291cmNlQ29kZSht
b2R1bGVVUkwpKTsKKyAgICBjb250ZXh0LT5ldmFsdWF0ZSgpOworICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgc3RvcmUgbXVsdGlwbGUgZ2xvYmFsIHNjb3BlcyBhbmQgY2hvb3NlIGJldHdlZW4gdGhl
bQorICAgIC8vIFRoaXMgd2lsbCBub3QgZnVuY3Rpb24gY29ycmVjdGx5IGlmIG11bHRpcGxlIG1v
ZHVsZXMgYXJlIGFkZGVkLgorICAgIGRvY3VtZW50LnNldFBhaW50V29ya2xldEdsb2JhbFNjb3Bl
KFdURk1vdmUoY29udGV4dCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwODA4Zjg5NWUwNWJmZTI2
Y2YzYWNiYmFmNjI4ZmRhNGFmZWRjMzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrbGV0cy9Xb3JrbGV0LmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU2Ny
aXB0V3JhcHBhYmxlLmgiCisKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworY2xhc3MgRG9jdW1lbnQ7CisKK2NsYXNzIFdvcmtsZXQgOiBwdWJsaWMg
UmVmQ291bnRlZDxXb3JrbGV0PiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFJlZjxXb3JrbGV0PiBjcmVhdGUoKTsKKyAgICAKKyAgICB2b2lkIGFkZE1vZHVs
ZShEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgbW9kdWxlVVJMKTsKKworcHJvdGVjdGVkOgorICAg
IFdvcmtsZXQoKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmlkbCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtsZXRzL1dvcmtsZXQuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3NGNjOTEzODAwYjc5ZWU3MGE1
YzQ0Njc5ZWYxNWZlN2VjODQ5ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrbGV0cy9Xb3JrbGV0LmlkbApAQCAtMCwwICsxLDMzIEBACisvKgorKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyov
CisKK1sKKyAgICBFbmFibGVkQXRSdW50aW1lPUNTU1BhaW50aW5nQVBJLAorICAgIENvbmRpdGlv
bmFsPUNTU19QQUlOVElOR19BUEksCisgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKKyAg
ICBHbG9iYWw9V29ya2xldCwKK10gaW50ZXJmYWNlIFdvcmtsZXQgeworICAgIFtDYWxsV2l0aD1E
b2N1bWVudF0gdm9pZCBhZGRNb2R1bGUoVVNWU3RyaW5nIG1vZHVsZVVSTC8qLCBvcHRpb25hbCBX
b3JrbGV0T3B0aW9ucyBvcHRpb25zKi8pOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmts
ZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OTUwNmI5ZTM5MzEzNGNl
YzMzNjM2Y2E2NmYxYzVkYzI0Yjg4MTgyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuY3BwCkBAIC0wLDAgKzEsNzAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV29ya2xldENvbnNvbGVD
bGllbnQuaCIKKworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorCisjaW5jbHVkZSAiSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29s
ZU1lc3NhZ2UuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRBcmd1bWVudHMuaD4K
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxsU3RhY2suaD4KKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5Lmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKK1dvcmtsZXRDb25zb2xlQ2xpZW50
OjpXb3JrbGV0Q29uc29sZUNsaWVudChXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtsZXRHbG9iYWxT
Y29wZSkKKyAgICA6IG1fd29ya2xldEdsb2JhbFNjb3BlKHdvcmtsZXRHbG9iYWxTY29wZSkKK3sK
K30KKworV29ya2xldENvbnNvbGVDbGllbnQ6On5Xb3JrbGV0Q29uc29sZUNsaWVudCgpID0gZGVm
YXVsdDsKKwordm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2
ZWwoTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBKU0M6OkV4ZWNTdGF0ZSog
ZXhlYywgUmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmIGFyZ3VtZW50cykKK3sKKyAg
ICBTdHJpbmcgbWVzc2FnZVRleHQ7CisgICAgYXJndW1lbnRzLT5nZXRGaXJzdEFyZ3VtZW50QXNT
dHJpbmcobWVzc2FnZVRleHQpOworICAgIGF1dG8gbWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8
SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgdHlw
ZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBXVEZNb3ZlKGFyZ3VtZW50cyksIGV4ZWMpOworICAgIG1f
d29ya2xldEdsb2JhbFNjb3BlLmFkZENvbnNvbGVNZXNzYWdlKFdURk1vdmUobWVzc2FnZSkpOwor
fQorCit2b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50Ojpjb3VudChKU0M6OkV4ZWNTdGF0ZSosIFJl
ZjxTY3JpcHRBcmd1bWVudHM+JiYpIHsgfQorCit2b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50Ojp0
aW1lKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJikgeyB9Cit2b2lkIFdvcmtsZXRDb25z
b2xlQ2xpZW50Ojp0aW1lRW5kKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJikgeyB9CisK
K3ZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6OnByb2ZpbGUoSlNDOjpFeGVjU3RhdGUqLCBjb25z
dCBTdHJpbmcmKSB7IH0KK3ZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6OnByb2ZpbGVFbmQoSlND
OjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmKSB7IH0KKwordm9pZCBXb3JrbGV0Q29uc29sZUNs
aWVudDo6dGFrZUhlYXBTbmFwc2hvdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpIHsg
fQordm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6dGltZVN0YW1wKEpTQzo6RXhlY1N0YXRlKiwg
UmVmPFNjcmlwdEFyZ3VtZW50cz4mJikgeyB9CisKK3ZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6
OnJlY29yZChKU0M6OkV4ZWNTdGF0ZSosIFJlZjxTY3JpcHRBcmd1bWVudHM+JiYpIHsgfQordm9p
ZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6cmVjb3JkRW5kKEpTQzo6RXhlY1N0YXRlKiwgUmVmPFNj
cmlwdEFyZ3VtZW50cz4mJikgeyB9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzBlMjc0ZWY3M2QxMjNkZmU3ODc4MDkyYThmYTM1MTY5NDM4NTQ0NgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmgK
QEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KENTU19QQUlOVElOR19BUEkpCisKKyNpbmNsdWRlICJXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlQ2xpZW50Lmg+CisjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBFeGVjU3RhdGU7Cit9CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV29ya2xldENvbnNvbGVDbGllbnQgZmluYWwgOiBwdWJs
aWMgSlNDOjpDb25zb2xlQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1
YmxpYzoKKyAgICBleHBsaWNpdCBXb3JrbGV0Q29uc29sZUNsaWVudChXb3JrbGV0R2xvYmFsU2Nv
cGUmKTsKKyAgICB2aXJ0dWFsIH5Xb3JrbGV0Q29uc29sZUNsaWVudCgpOworCitwcm90ZWN0ZWQ6
CisgICAgdm9pZCBtZXNzYWdlV2l0aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlwZSwgTWVzc2FnZUxl
dmVsLCBKU0M6OkV4ZWNTdGF0ZSosIFJlZjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4mJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBjb3VudChKU0M6OkV4ZWNTdGF0ZSosIFJlZjxJbnNwZWN0b3I6
OlNjcmlwdEFyZ3VtZW50cz4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBwcm9maWxlKEpTQzo6RXhl
Y1N0YXRlKiwgY29uc3QgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBwcm9maWxl
RW5kKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7CisgICAg
dm9pZCB0YWtlSGVhcFNuYXBzaG90KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiB0aXRs
ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCB0aW1lKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5n
JiB0aXRsZSkgb3ZlcnJpZGU7CisgICAgdm9pZCB0aW1lRW5kKEpTQzo6RXhlY1N0YXRlKiwgY29u
c3QgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7CisgICAgdm9pZCB0aW1lU3RhbXAoSlNDOjpFeGVj
U3RhdGUqLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYpIG92ZXJyaWRlOworICAg
IHZvaWQgcmVjb3JkKEpTQzo6RXhlY1N0YXRlKiwgUmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1l
bnRzPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlY29yZEVuZChKU0M6OkV4ZWNTdGF0ZSosIFJl
ZjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4mJikgb3ZlcnJpZGU7CisKK3ByaXZhdGU6Cisg
ICAgV29ya2xldEdsb2JhbFNjb3BlJiBtX3dvcmtsZXRHbG9iYWxTY29wZTsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dv
cmtsZXRHbG9iYWxTY29wZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTQ4NjdhM2E0MDFhYzQwODM4ZWE0ZWVi
ZDhlZmUyYmJkMGI0NzZhYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmts
ZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTAsMCArMSwxMzUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIldvcmtsZXRHbG9iYWxTY29wZS5oIgorCisjaWYgRU5BQkxFKENTU19QQUlO
VElOR19BUEkpCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisj
aW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCisjaW5jbHVkZSAiSlNXb3JrbGV0
R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJQYWdlQ29uc29sZUNsaWVudC5oIgorI2luY2x1ZGUg
IlNlY3VyaXR5T3JpZ2luUG9saWN5LmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRl
ICJXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgorCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
RXhjZXB0aW9uLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSWRlbnRpZmllcnNGYWN0b3J5
Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+CisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvU2NyaXB0Q2FsbFN0YWNrLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5n
IG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKK1dvcmtsZXRHbG9iYWxTY29wZTo6V29ya2xldEdsb2Jh
bFNjb3BlKERvY3VtZW50JiBkb2N1bWVudCwgU2NyaXB0U291cmNlQ29kZSYmIGNvZGUpCisgICAg
OiBtX2RvY3VtZW50KG1ha2VXZWFrUHRyKGRvY3VtZW50KSkKKyAgICAsIG1fc2Vzc2lvbklEKG1f
ZG9jdW1lbnQtPnNlc3Npb25JRCgpKQorICAgICwgbV9zY3JpcHQobWFrZVVuaXF1ZVJlZjxXb3Jr
bGV0U2NyaXB0Q29udHJvbGxlcj4odGhpcykpCisgICAgLCBtX3RvcE9yaWdpbihTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlVW5pcXVlKCkpCisgICAgLCBtX2lkZW50aWZpZXIoIldvcmtsZXRHbG9iYWxT
Y29wZToiICsgSW5zcGVjdG9yOjpJZGVudGlmaWVyc0ZhY3Rvcnk6OmNyZWF0ZUlkZW50aWZpZXIo
KSkKKyAgICAsIG1fZXZlbnRRdWV1ZSgqdGhpcykKKyAgICAsIG1fY29kZShXVEZNb3ZlKGNvZGUp
KQoreworICAgIGF1dG8qIGZyYW1lID0gbV9kb2N1bWVudC0+ZnJhbWUoKTsKKyAgICBtX2pzUnVu
dGltZUZsYWdzID0gZnJhbWUgPyBmcmFtZS0+c2V0dGluZ3MoKS5qYXZhU2NyaXB0UnVudGltZUZs
YWdzKCkgOiBKU0M6OlJ1bnRpbWVGbGFncygpOworICAgIEFTU0VSVChtX2RvY3VtZW50LT5wYWdl
KCkpOworCisgICAgc2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koU2VjdXJpdHlPcmlnaW5Qb2xpY3k6
OmNyZWF0ZShtX3RvcE9yaWdpbi5jb3B5UmVmKCkpKTsKKyAgICBzZXRDb250ZW50U2VjdXJpdHlQ
b2xpY3koc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IGNvZGUu
dXJsKCkgfSwgKnRoaXMpKTsKK30KKworV29ya2xldEdsb2JhbFNjb3BlOjp+V29ya2xldEdsb2Jh
bFNjb3BlKCkKK3sKKyAgICByZW1vdmVGcm9tQ29udGV4dHNNYXAoKTsKKyAgICBtX3NjcmlwdC0+
d29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcigpLT5zZXRDb25zb2xlQ2xpZW50KG51bGxwdHIpOwor
fQorCitTdHJpbmcgV29ya2xldEdsb2JhbFNjb3BlOjpvcmlnaW4oKSBjb25zdAoreworICAgIHJl
dHVybiBtX3RvcE9yaWdpbi0+dG9TdHJpbmcoKTsKK30KKworU3RyaW5nIFdvcmtsZXRHbG9iYWxT
Y29wZTo6dXNlckFnZW50KGNvbnN0IFVSTCYgdXJsKSBjb25zdAoreworICAgIEFTU0VSVChtX2Rv
Y3VtZW50KTsKKyAgICByZXR1cm4gbV9kb2N1bWVudC0+dXNlckFnZW50KHVybCk7Cit9CisKK3Zv
aWQgV29ya2xldEdsb2JhbFNjb3BlOjpldmFsdWF0ZSgpCit7CisgICAgbV9zY3JpcHQtPmV2YWx1
YXRlKG1fY29kZSk7Cit9CisKK2Jvb2wgV29ya2xldEdsb2JhbFNjb3BlOjppc0pTRXhlY3V0aW9u
Rm9yYmlkZGVuKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zY3JpcHQtPmlzRXhlY3V0aW9uRm9y
YmlkZGVuKCk7Cit9CisKK3ZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpkaXNhYmxlRXZhbChjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKK3sKKyAgICBtX3NjcmlwdC0+ZGlzYWJsZUV2YWwoZXJy
b3JNZXNzYWdlKTsKK30KKwordm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmRpc2FibGVXZWJBc3Nl
bWJseShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKK3sKKyAgICBtX3NjcmlwdC0+ZGlzYWJs
ZVdlYkFzc2VtYmx5KGVycm9yTWVzc2FnZSk7Cit9CisKK1VSTCBXb3JrbGV0R2xvYmFsU2NvcGU6
OmNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdAoreworICAgIGlmICh1cmwuaXNO
dWxsKCkpCisgICAgICAgIHJldHVybiBVUkwoKTsKKyAgICByZXR1cm4gVVJMKG1fY29kZS51cmwo
KSwgdXJsKTsKK30KKwordm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmxvZ0V4Y2VwdGlvblRvQ29u
c29sZShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkws
IGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNr
PiYmIHN0YWNrKQoreworICAgIEFTU0VSVChtX2RvY3VtZW50KTsKKyAgICBtX2RvY3VtZW50LT5s
b2dFeGNlcHRpb25Ub0NvbnNvbGUoZXJyb3JNZXNzYWdlLCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgV1RGTW92ZShzdGFjaykpOworfQorCit2b2lkIFdvcmtsZXRHbG9iYWxT
Y29wZTo6YWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29s
ZU1lc3NhZ2U+JiYgbWVzc2FnZSkKK3sKKyAgICBBU1NFUlQobV9kb2N1bWVudCk7CisgICAgbV9k
b2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7Cit9CisKK3ZvaWQg
V29ya2xldEdsb2JhbFNjb3BlOjphZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJj
ZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxv
bmcgcmVxdWVzdElkZW50aWZpZXIpCit7CisgICAgQVNTRVJUKG1fZG9jdW1lbnQpOworICAgIG1f
ZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UsIHJlcXVl
c3RJZGVudGlmaWVyKTsKK30KKwordm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZE1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlVGV4dCwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIHVuc2lnbmVkIGxpbmVOdW1iZXIs
IHVuc2lnbmVkIGNvbHVtbk51bWJlciwgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4mJiBjYWxsU3Rh
Y2ssIEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmll
cikKK3sKKyAgICBBU1NFUlQobV9kb2N1bWVudCk7CisgICAgbV9kb2N1bWVudC0+YWRkTWVzc2Fn
ZShzb3VyY2UsIGxldmVsLCBtZXNzYWdlVGV4dCwgc291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIsIFdURk1vdmUoY2FsbFN0YWNrKSwgc3RhdGUsIHJlcXVlc3RJZGVudGlmaWVyKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwOWM1ZThlMzZiN2QyMWRm
NDkzNTIwNGMxNDllMjI4YzhmNzBjMzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaApAQCAtMCwwICsxLDEzNyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorCisjaW5jbHVkZSAiRXZlbnRUYXJnZXQu
aCIKKyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCIKKyNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCisjaW5jbHVkZSAiU3VwcGxl
bWVudGFibGUuaCIKKyNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlICJXb3JrZXJFdmVudFF1ZXVl
LmgiCisKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlTWVzc2FnZS5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1J1bnRpbWVGbGFncy5oPgorI2luY2x1ZGUgPHBhbC9TZXNzaW9u
SUQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgV29ya2xldFNjcmlwdENvbnRyb2xsZXI7
CitjbGFzcyBTY3JpcHRTb3VyY2VDb2RlOworCitjbGFzcyBXb3JrbGV0R2xvYmFsU2NvcGUgOiBw
dWJsaWMgUmVmQ291bnRlZDxXb3JrbGV0R2xvYmFsU2NvcGU+LCBwdWJsaWMgU3VwcGxlbWVudGFi
bGU8V29ya2xldEdsb2JhbFNjb3BlPiwgcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHB1
YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhIHsKK3B1YmxpYzoKKyAgICB+V29ya2xldEds
b2JhbFNjb3BlKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNQYWludFdvcmtsZXRHbG9iYWxTY29w
ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fY29kZS51cmwoKTsgfQorICAgIFN0cmluZyBvcmlnaW4oKSBjb25z
dCBmaW5hbDsKKyAgICBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X2lkZW50aWZpZXI7IH0KKworICAgIHZvaWQgZXZhbHVhdGUoKTsKKworICAgIHVzaW5nIFJlZkNv
dW50ZWQ6OnJlZjsKKyAgICB1c2luZyBSZWZDb3VudGVkOjpkZXJlZjsKKworICAgIFdvcmtsZXRT
Y3JpcHRDb250cm9sbGVyKiBzY3JpcHQoKSB7IHJldHVybiAmbV9zY3JpcHQuZ2V0KCk7IH0KKwor
ICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29u
c29sZU1lc3NhZ2U+JiYpIGZpbmFsOworCisgICAgYm9vbCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVu
KCkgY29uc3QgZmluYWw7CisgICAgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbigpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fdG9wT3JpZ2luLmdldCgpOyB9CisKKyAgICBTb2NrZXRQcm92aWRlciog
c29ja2V0UHJvdmlkZXIoKSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9CisKKyAgICBib29sIGlz
Q29udGV4dFRocmVhZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlz
U2VjdXJlQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBKU0M6
OlJ1bnRpbWVGbGFncyBqc1J1bnRpbWVGbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fanNSdW50aW1l
RmxhZ3M7IH0KKworcHJvdGVjdGVkOgorICAgIFdvcmtsZXRHbG9iYWxTY29wZShEb2N1bWVudCYs
IFNjcmlwdFNvdXJjZUNvZGUmJik7CisKKyAgICBXZWFrUHRyPERvY3VtZW50PiBtX2RvY3VtZW50
OworCitwcml2YXRlOgorI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorICAgIElEQkNsaWVu
dDo6SURCQ29ubmVjdGlvblByb3h5KiBpZGJDb25uZWN0aW9uUHJveHkoKSBmaW5hbCB7IEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCisKKyAgICB2b2lkIHBv
c3RUYXNrKFRhc2smJikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorCisgICAgdm9p
ZCByZWZTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgZmluYWwgeyByZWYoKTsgfQorICAgIHZvaWQg
ZGVyZWZTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgZmluYWwgeyBkZXJlZigpOyB9CisKKyAgICB2
b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQorICAgIHZvaWQgZGVyZWZFdmVu
dFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQorCisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGNvbnN0X2Nh
c3Q8V29ya2xldEdsb2JhbFNjb3BlKj4odGhpcyk7IH0KKyAgICBFdmVudFRhcmdldEludGVyZmFj
ZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFdvcmtsZXRHbG9i
YWxTY29wZUV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQorCisgICAgYm9vbCBpc1dvcmtsZXRH
bG9iYWxTY29wZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKworICAgIHZvaWQgbG9n
RXhjZXB0aW9uVG9Db25zb2xlKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBjb25zdCBTdHJp
bmcmLCBpbnQsIGludCwgUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPiYmKSBmaW5h
bDsKKyAgICB2b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCwgdW5zaWduZWQsIFJlZlB0cjxJbnNw
ZWN0b3I6OlNjcmlwdENhbGxTdGFjaz4mJiwgSlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBsb25n
KSBmaW5hbDsKKyAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3Nh
Z2VMZXZlbCwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgbG9uZykgZmluYWw7CisKKyAgICBFdmVu
dFRhcmdldCogZXJyb3JFdmVudFRhcmdldCgpIGZpbmFsIHsgcmV0dXJuIHRoaXM7IH0KKyAgICBF
dmVudFF1ZXVlJiBldmVudFF1ZXVlKCkgY29uc3QgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsgcmV0dXJuIG1fZXZlbnRRdWV1ZTsgfQorCisjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCisg
ICAgYm9vbCB3cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIFZlY3Rvcjx1aW50
OF90PiYpIGZpbmFsIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNl
OyB9CisgICAgYm9vbCB1bndyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgVmVj
dG9yPHVpbnQ4X3Q+JikgZmluYWwgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1
cm4gZmFsc2U7IH0KKyNlbmRpZgorICAgIFVSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmKSBj
b25zdCBmaW5hbDsKKyAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX3Nlc3Npb25JRDsgfQorICAgIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJikg
Y29uc3QgZmluYWw7CisgICAgdm9pZCBkaXNhYmxlRXZhbChjb25zdCBTdHJpbmcmKSBmaW5hbDsK
KyAgICB2b2lkIGRpc2FibGVXZWJBc3NlbWJseShjb25zdCBTdHJpbmcmKSBmaW5hbDsKKworICAg
IFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOworICAgIFVuaXF1ZVJlZjxXb3JrbGV0U2NyaXB0
Q29udHJvbGxlcj4gbV9zY3JpcHQ7CisKKyAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IG1fdG9wT3Jp
Z2luOworICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CisKKyAgICAvLyBGSVhNRTogVGhpcyBpcyBu
b3QgaW1wbGVtZW50ZWQgcHJvcGVybHksIGl0IGp1c3Qgc2F0aXNmaWVzIHRoZSBjb21waWxlci4K
KyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxMTM2Cisg
ICAgbXV0YWJsZSBXb3JrZXJFdmVudFF1ZXVlIG1fZXZlbnRRdWV1ZTsKKworICAgIEpTQzo6UnVu
dGltZUZsYWdzIG1fanNSdW50aW1lRmxhZ3M7CisgICAgU2NyaXB0U291cmNlQ29kZSBtX2NvZGU7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
QkVHSU4oV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlKQorc3RhdGljIGJvb2wgaXNUeXBlKGNv
bnN0IFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsgcmV0dXJuIGNv
bnRleHQuaXNXb3JrbGV0R2xvYmFsU2NvcGUoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19F
TkQoKQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0
R2xvYmFsU2NvcGUuaWRsIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNj
b3BlLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kNzU5ZjBjZTFkMTZmODY5MTg2MDEyNzc2ZjBkYjE2YjYxYmFh
NDc4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEds
b2JhbFNjb3BlLmlkbApAQCAtMCwwICsxLDM3IEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKK1sK
KyAgICBDdXN0b21Qcm94eVRvSlNPYmplY3QsCisgICAgRXhwb3NlZD1Xb3JrbGV0LAorICAgIEVu
YWJsZWRBdFJ1bnRpbWU9Q1NTUGFpbnRpbmdBUEksCisgICAgQ29uZGl0aW9uYWw9Q1NTX1BBSU5U
SU5HX0FQSSwKKyAgICBKU0xlZ2FjeVBhcmVudD1KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UsCisg
ICAgSW1wbGljaXRUaGlzLAorICAgIElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0LAor
ICAgIElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0T25Qcm90b3R5cGUsCisgICAgR2xv
YmFsPVdvcmtsZXQsCitdIGludGVyZmFjZSBXb3JrbGV0R2xvYmFsU2NvcGUgOiBFdmVudFRhcmdl
dCB7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlw
dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENv
bnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2MTQyNDE5MmQzZjQ5ZGEyNjc1YjBhNWI2MjBiMjgz
ZWRlZThjNjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3Jr
bGV0U2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTAsMCArMSwxODcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIKKworI2lmIEVOQUJMRShDU1NfUEFJTlRJ
TkdfQVBJKQorCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSAiSlNFdmVudFRh
cmdldC5oIgorI2luY2x1ZGUgIkpTRXhlY1N0YXRlLmgiCisjaW5jbHVkZSAiSlNQYWludFdvcmts
ZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKKyNpbmNsdWRl
ICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCisjaW5jbHVkZSAiV29ya2xldENvbnNvbGVDbGllbnQu
aCIKKworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbXBsZXRpb24uaD4KKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9FeGNlcHRpb24uaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FeGNl
cHRpb25IZWxwZXJzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvR0NBY3Rpdml0eUNhbGxi
YWNrLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+CisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvUHJvbWlzZURlZmVycmVkVGltZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9TdHJvbmdJbmxpbmVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5hbWVz
cGFjZSBKU0M7CisKK1dvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpXb3JrbGV0U2NyaXB0Q29udHJv
bGxlcihXb3JrbGV0R2xvYmFsU2NvcGUqIHdvcmtsZXRHbG9iYWxTY29wZSkKKyAgICA6IG1fdm0o
Vk06OmNyZWF0ZSgpKQorICAgICwgbV93b3JrbGV0R2xvYmFsU2NvcGUod29ya2xldEdsb2JhbFNj
b3BlKQorICAgICwgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKCptX3ZtKQoreworICAgIG1f
dm0tPmhlYXAuYWNxdWlyZUFjY2VzcygpOyAvLyBJdCdzIG5vdCBjbGVhciB0aGF0IHdlIGhhdmUg
Z29vZCBkaXNjaXBsaW5lIGZvciBoZWFwIGFjY2Vzcywgc28gdHVybiBpdCBvbiBwZXJtYW5lbnRs
eS4KKyAgICBKU1ZNQ2xpZW50RGF0YTo6aW5pdE5vcm1hbFdvcmxkKG1fdm0uZ2V0KCkpOworfQor
CitXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6fldvcmtsZXRTY3JpcHRDb250cm9sbGVyKCkKK3sK
KyAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSgpKTsKKyAgICBtX3dvcmtsZXRHbG9iYWxTY29wZVdy
YXBwZXIuY2xlYXIoKTsKKyAgICBtX3ZtID0gbnVsbHB0cjsKKyAgICBpZiAobV93b3JrbGV0R2xv
YmFsU2NvcGVXcmFwcGVyKSB7CisgICAgICAgIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+
Y2xlYXJET01HdWFyZGVkT2JqZWN0cygpOworICAgICAgICBtX3dvcmtsZXRHbG9iYWxTY29wZVdy
YXBwZXItPnNldENvbnNvbGVDbGllbnQobnVsbHB0cik7CisgICAgICAgIG1fY29uc29sZUNsaWVu
dCA9IG51bGxwdHI7CisgICAgfQorfQorCit2b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpm
b3JiaWRFeGVjdXRpb24oKQoreworICAgIEFTU0VSVChtX3dvcmtsZXRHbG9iYWxTY29wZS0+aXND
b250ZXh0VGhyZWFkKCkpOworICAgIG1fZXhlY3V0aW9uRm9yYmlkZGVuID0gdHJ1ZTsKK30KKwor
Ym9vbCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6aXNFeGVjdXRpb25Gb3JiaWRkZW4oKSBjb25z
dAoreworICAgIEFTU0VSVChtX3dvcmtsZXRHbG9iYWxTY29wZS0+aXNDb250ZXh0VGhyZWFkKCkp
OworICAgIHJldHVybiBtX2V4ZWN1dGlvbkZvcmJpZGRlbjsKK30KKwordm9pZCBXb3JrbGV0U2Ny
aXB0Q29udHJvbGxlcjo6ZGlzYWJsZUV2YWwoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCit7
CisgICAgaW5pdFNjcmlwdElmTmVlZGVkKCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2sgeyB2bSgp
IH07CisKKyAgICBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPnNldEV2YWxFbmFibGVkKGZh
bHNlLCBlcnJvck1lc3NhZ2UpOworfQorCit2b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpk
aXNhYmxlV2ViQXNzZW1ibHkoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCit7CisgICAgaW5p
dFNjcmlwdElmTmVlZGVkKCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2sgeyB2bSgpIH07CisKKyAg
ICBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPnNldFdlYkFzc2VtYmx5RW5hYmxlZChmYWxz
ZSwgZXJyb3JNZXNzYWdlKTsKK30KKworCit0ZW1wbGF0ZTx0eXBlbmFtZSBKU0dsb2JhbFNjb3Bl
UHJvdG90eXBlLCB0eXBlbmFtZSBKU0dsb2JhbFNjb3BlLCB0eXBlbmFtZSBHbG9iYWxTY29wZT4K
K3ZvaWQgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHRXaXRoU3ViY2xhc3MoKQor
eworICAgIEFTU0VSVCghbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKTsKKworICAgIEpTTG9j
a0hvbGRlciBsb2NrIHsgdm0oKSB9OworCisgICAgLy8gRXhwbGljaXRseSBwcm90ZWN0IHRoZSBn
bG9iYWwgb2JqZWN0J3MgcHJvdG90eXBlIHNvIGl0IGlzbid0IGNvbGxlY3RlZAorICAgIC8vIHdo
ZW4gd2UgYWxsb2NhdGUgdGhlIGdsb2JhbCBvYmplY3QuIChPbmNlIHRoZSBnbG9iYWwgb2JqZWN0
IGlzIGZ1bGx5CisgICAgLy8gY29uc3RydWN0ZWQsIGl0IGNhbiBtYXJrIGl0cyBvd24gcHJvdG90
eXBlLikKKyAgICBTdHJ1Y3R1cmUqIGNvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUgPSBKU0dsb2Jh
bFNjb3BlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoKm1fdm0sIG51bGxwdHIsIGpzTnVsbCgp
KTsKKyAgICBhdXRvKiBjb250ZXh0UHJvdG90eXBlID0gSlNHbG9iYWxTY29wZVByb3RvdHlwZTo6
Y3JlYXRlKCptX3ZtLCBudWxscHRyLCBjb250ZXh0UHJvdG90eXBlU3RydWN0dXJlKTsKKyAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEpTR2xvYmFsU2NvcGU6OmNyZWF0ZVN0cnVjdHVyZSgqbV92
bSwgbnVsbHB0ciwgY29udGV4dFByb3RvdHlwZSk7CisgICAgYXV0byogcHJveHlTdHJ1Y3R1cmUg
PSBKU1Byb3h5OjpjcmVhdGVTdHJ1Y3R1cmUoKm1fdm0sIG51bGxwdHIsIGpzTnVsbCgpLCBQdXJl
Rm9yd2FyZGluZ1Byb3h5VHlwZSk7CisgICAgYXV0byogcHJveHkgPSBKU1Byb3h5OjpjcmVhdGUo
Km1fdm0sIHByb3h5U3RydWN0dXJlKTsKKworICAgIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBl
ci5zZXQoKm1fdm0sIEpTR2xvYmFsU2NvcGU6OmNyZWF0ZSgqbV92bSwgc3RydWN0dXJlLCBzdGF0
aWNfY2FzdDxHbG9iYWxTY29wZSY+KCptX3dvcmtsZXRHbG9iYWxTY29wZSksIHByb3h5KSk7Cisg
ICAgY29udGV4dFByb3RvdHlwZVN0cnVjdHVyZS0+c2V0R2xvYmFsT2JqZWN0KCptX3ZtLCBtX3dv
cmtsZXRHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpOworICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmds
b2JhbE9iamVjdCgpID09IG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcik7CisgICAgQVNTRVJU
KG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+c3RydWN0dXJlKCptX3ZtKS0+Z2xvYmFsT2Jq
ZWN0KCkgPT0gbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKTsKKyAgICBjb250ZXh0UHJvdG90
eXBlLT5zdHJ1Y3R1cmUoKm1fdm0pLT5zZXRHbG9iYWxPYmplY3QoKm1fdm0sIG1fd29ya2xldEds
b2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7CisgICAgY29udGV4dFByb3RvdHlwZS0+c3RydWN0dXJl
KCptX3ZtKS0+c2V0UHJvdG90eXBlV2l0aG91dFRyYW5zaXRpb24oKm1fdm0sIEpTR2xvYmFsU2Nv
cGU6OnByb3RvdHlwZSgqbV92bSwgKm1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSkp
OworCisgICAgcHJveHktPnNldFRhcmdldCgqbV92bSwgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFw
cGVyLmdldCgpKTsKKyAgICBwcm94eS0+c3RydWN0dXJlKCptX3ZtKS0+c2V0R2xvYmFsT2JqZWN0
KCptX3ZtLCBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpOworCisgICAgQVNTRVJU
KG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3JrbGV0
R2xvYmFsU2NvcGVXcmFwcGVyKTsKKyAgICBBU1NFUlQoYXNPYmplY3QobV93b3JrbGV0R2xvYmFs
U2NvcGVXcmFwcGVyLT5nZXRQcm90b3R5cGVEaXJlY3QoKm1fdm0pKS0+Z2xvYmFsT2JqZWN0KCkg
PT0gbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKTsKKworICAgIG1fY29uc29sZUNsaWVudCA9
IHN0ZDo6bWFrZV91bmlxdWU8V29ya2xldENvbnNvbGVDbGllbnQ+KCptX3dvcmtsZXRHbG9iYWxT
Y29wZSk7CisgICAgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5zZXRDb25zb2xlQ2xpZW50
KG1fY29uc29sZUNsaWVudC5nZXQoKSk7Cit9CisKK3ZvaWQgV29ya2xldFNjcmlwdENvbnRyb2xs
ZXI6OmluaXRTY3JpcHQoKQoreworICAgIGlmIChtX3dvcmtsZXRHbG9iYWxTY29wZS0+aXNQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZSgpKSB7CisgICAgICAgIGluaXRTY3JpcHRXaXRoU3ViY2xhc3M8
SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZVByb3RvdHlwZSwgSlNQYWludFdvcmtsZXRHbG9iYWxT
Y29wZSwgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBXb3JrbGV0U2NyaXB0Q29u
dHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgU3Ry
aW5nKiByZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2UpCit7CisgICAgaWYgKGlzRXhlY3V0aW9uRm9y
YmlkZGVuKCkpCisgICAgICAgIHJldHVybjsKKworICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9u
PiBleGNlcHRpb247CisgICAgZXZhbHVhdGUoc291cmNlQ29kZSwgZXhjZXB0aW9uLCByZXR1cm5l
ZEV4Y2VwdGlvbk1lc3NhZ2UpOworICAgIGlmIChleGNlcHRpb24pIHsKKyAgICAgICAgSlNMb2Nr
SG9sZGVyIGxvY2sodm0oKSk7CisgICAgICAgIHJlcG9ydEV4Y2VwdGlvbihtX3dvcmtsZXRHbG9i
YWxTY29wZVdyYXBwZXItPmdsb2JhbEV4ZWMoKSwgZXhjZXB0aW9uKTsKKyAgICB9Cit9CisKKy8v
IEltcG9ydGFudDogVGhlIGNhbGxlciBvZiB0aGlzIGZ1bmN0aW9uIG11c3QgdmVyaWZ5IHRoYXQg
dGhlIHJldHVybmVkIGV4Y2VwdGlvbiBtZXNzYWdlIGRvZXMgbm90IHZpb2xhdGUgQ09SUyBpZiBp
dCBpcyBnb2luZyB0byBiZSBwYXNzZWQgYmFjayB0byBKUy4KK3ZvaWQgV29ya2xldFNjcmlwdENv
bnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIE5h
a2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24sIFN0cmluZyogcmV0dXJu
ZWRFeGNlcHRpb25NZXNzYWdlKQoreworICAgIGlmIChpc0V4ZWN1dGlvbkZvcmJpZGRlbigpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpbml0U2NyaXB0SWZOZWVkZWQoKTsKKworICAgIGF1dG8m
IHN0YXRlID0gKm1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+Z2xvYmFsRXhlYygpOworICAg
IFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2sgeyB2bSB9OworCisg
ICAgSlNFeGVjU3RhdGU6OnByb2ZpbGVkRXZhbHVhdGUoJnN0YXRlLCBKU0M6OlByb2ZpbGluZ1Jl
YXNvbjo6T3RoZXIsIHNvdXJjZUNvZGUuanNTb3VyY2VDb2RlKCksIG1fd29ya2xldEdsb2JhbFNj
b3BlV3JhcHBlci0+Z2xvYmFsVGhpcygpLCByZXR1cm5lZEV4Y2VwdGlvbik7CisKKyAgICBpZiAo
cmV0dXJuZWRFeGNlcHRpb24gJiYgcmV0dXJuZWRFeGNlcHRpb25NZXNzYWdlKSB7CisgICAgICAg
IC8vIFRoaXMgRklYTUUgaXMgZnJvbSBXb3JrZXJTY3JpcHRDb250cm9sbGVyLgorICAgICAgICAv
LyBGSVhNRTogSXQncyBub3QgZ3JlYXQgdGhhdCB0aGlzIGNhbiBydW4gYXJiaXRyYXJ5IGNvZGUg
dG8gc3RyaW5nLWlmeSB0aGUgdmFsdWUgb2YgdGhlIGV4Y2VwdGlvbi4KKyAgICAgICAgLy8gRG8g
d2UgbmVlZCB0byBkbyBhbnl0aGluZyB0byBoYW5kbGUgdGhhdCBwcm9wZXJseSwgaWYgaXQsIHNh
eSwgcmFpc2VzIGFub3RoZXIgZXhjZXB0aW9uPworICAgICAgICAqcmV0dXJuZWRFeGNlcHRpb25N
ZXNzYWdlID0gcmV0dXJuZWRFeGNlcHRpb24tPnZhbHVlKCkudG9XVEZTdHJpbmcoJnN0YXRlKTsK
KyAgICB9Cit9CisKK3ZvaWQgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OnNldEV4Y2VwdGlvbihK
U0M6OkV4Y2VwdGlvbiogZXhjZXB0aW9uKQoreworICAgIGF1dG8qIGV4ZWMgPSBtX3dvcmtsZXRH
bG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbEV4ZWMoKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICB0aHJvd0V4
Y2VwdGlvbihleGVjLCBzY29wZSwgZXhjZXB0aW9uKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0
U2NyaXB0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlw
dENvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYTU3OGJiZjlhYjMyMWM5NzAxNDRlYjhmY2UzOGJl
ZTUzNjVlODdmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29y
a2xldFNjcmlwdENvbnRyb2xsZXIuaApAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
Q1NTX1BBSU5USU5HX0FQSSkKKworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RlYnVnZ2VyLmg+
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSdW5Mb29wVGltZXIuaD4KKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9TdHJvbmcuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1
ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL05ha2VkUHRyLmg+CisKK25hbWVzcGFjZSBK
U0MgeworY2xhc3MgVk07Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSlNXb3Jr
bGV0R2xvYmFsU2NvcGU7CitjbGFzcyBTY3JpcHRTb3VyY2VDb2RlOworY2xhc3MgV29ya2xldENv
bnNvbGVDbGllbnQ7CitjbGFzcyBXb3JrbGV0R2xvYmFsU2NvcGU7CitjbGFzcyBXb3JrbGV0Q29u
c29sZUNsaWVudDsKKworY2xhc3MgV29ya2xldFNjcmlwdENvbnRyb2xsZXIgeworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFdvcmtsZXRTY3JpcHRDb250cm9sbGVyKTsgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CitwdWJsaWM6CisgICAgV29ya2xldFNjcmlwdENvbnRyb2xsZXIoV29ya2xldEds
b2JhbFNjb3BlKik7CisgICAgfldvcmtsZXRTY3JpcHRDb250cm9sbGVyKCk7CisKKyAgICBKU1dv
cmtsZXRHbG9iYWxTY29wZSogd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcigpCisgICAgeworICAg
ICAgICBpbml0U2NyaXB0SWZOZWVkZWQoKTsKKyAgICAgICAgcmV0dXJuIG1fd29ya2xldEdsb2Jh
bFNjb3BlV3JhcHBlci5nZXQoKTsKKyAgICB9CisKKyAgICB2b2lkIGZvcmJpZEV4ZWN1dGlvbigp
OworICAgIGJvb2wgaXNFeGVjdXRpb25Gb3JiaWRkZW4oKSBjb25zdDsKKworICAgIHZvaWQgZGlz
YWJsZUV2YWwoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOworICAgIHZvaWQgZGlzYWJsZVdl
YkFzc2VtYmx5KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKKworICAgIHZvaWQgZXZhbHVh
dGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIFN0cmluZyogcmV0dXJuZWRFeGNlcHRpb25NZXNz
YWdlID0gbnVsbHB0cik7CisgICAgdm9pZCBldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2Rl
JiwgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbiwgU3RyaW5nKiBy
ZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2UgPSBudWxscHRyKTsKKworICAgIHZvaWQgc2V0RXhjZXB0
aW9uKEpTQzo6RXhjZXB0aW9uKik7CisKKyAgICBKU0M6OlZNJiB2bSgpIHsgcmV0dXJuICptX3Zt
OyB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBpbml0U2NyaXB0SWZOZWVkZWQoKQorICAgIHsKKyAg
ICAgICAgaWYgKCFtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpCisgICAgICAgICAgICBpbml0
U2NyaXB0KCk7CisgICAgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdFNjcmlwdCgpOwor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSlNHbG9iYWxTY29wZVByb3RvdHlwZSwgdHlwZW5hbWUg
SlNHbG9iYWxTY29wZSwgdHlwZW5hbWUgR2xvYmFsU2NvcGU+CisgICAgdm9pZCBpbml0U2NyaXB0
V2l0aFN1YmNsYXNzKCk7CisKKyAgICBib29sIG1fZXhlY3V0aW9uRm9yYmlkZGVuIHsgZmFsc2Ug
fTsKKyAgICBSZWZQdHI8SlNDOjpWTT4gbV92bTsKKyAgICBXb3JrbGV0R2xvYmFsU2NvcGUqIG1f
d29ya2xldEdsb2JhbFNjb3BlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXb3JrbGV0Q29uc29sZUNs
aWVudD4gbV9jb25zb2xlQ2xpZW50OworICAgIEpTQzo6U3Ryb25nPEpTV29ya2xldEdsb2JhbFNj
b3BlPiBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCAyY2EzZWRlNDVlYzc2ZTJiOTM2ZDM1OWIyNGY0ZTEzODBkM2Q4YmY4Li5lN2Ex
ZTk1YTVmODYzZmIzNGYyNWM5NmNmNWUzOTlkNjUwODZlMTcyIDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTgtMTAt
MjkgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAg
IEFkZCBuZXcgZ2xvYmFsIG9iamVjdCBhbmQgcHJlbGltaW5hcnkgV29ya2xldHMgc3VwcG9ydCBm
b3IgQ1NTIHBhaW50aW5nIGFwaQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTkwOTc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2JpbmRpbmdzL21haW4ucHk6CisgICAgICAg
IChCaW5kaW5nc1Rlc3RzLmdlbmVyYXRlX3N1cHBsZW1lbnRhbF9kZXBlbmRlbmN5KToKKyAgICAg
ICAgKEJpbmRpbmdzVGVzdHMubWFpbik6CisKIDIwMTgtMTAtMjYgIENvbW1pdCBRdWV1ZSAgPGNv
bW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHIyMzc0NzkgYW5kIHIyMzc0ODQuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2JpbmRpbmdzL21haW4ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2JpbmRpbmdzL21haW4u
cHkKaW5kZXggMDRjYmQ4NTA1NjczYmQ1YzZmMmU5ZDcwNTIwODFmMTJkNjZjNDRlMi4uMjA5Mzdi
ZWQ2ZDlkN2I4YTYyMzgwMzg4YjdlZWM1ZWJhZDRiNDkzMSAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9iaW5kaW5ncy9tYWluLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvYmluZGluZ3MvbWFpbi5weQpAQCAtNzAsNyArNzAsNyBAQCBjbGFzcyBCaW5kaW5nc1Rlc3Rz
OgogICAgICAgICAgICAgZXhpdF9jb2RlID0gZS5leGl0X2NvZGUKICAgICAgICAgcmV0dXJuIGV4
aXRfY29kZQogCi0gICAgZGVmIGdlbmVyYXRlX3N1cHBsZW1lbnRhbF9kZXBlbmRlbmN5KHNlbGYs
IGlucHV0X2RpcmVjdG9yeSwgc3VwcGxlbWVudGFsX2RlcGVuZGVuY3lfZmlsZSwgd2luZG93X2Nv
bnN0cnVjdG9yc19maWxlLCB3b3JrZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSwgZGVk
aWNhdGVkd29ya2VyZ2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGUsIHNlcnZpY2V3b3JrZXJn
bG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSk6CisgICAgZGVmIGdlbmVyYXRlX3N1cHBsZW1l
bnRhbF9kZXBlbmRlbmN5KHNlbGYsIGlucHV0X2RpcmVjdG9yeSwgc3VwcGxlbWVudGFsX2RlcGVu
ZGVuY3lfZmlsZSwgd2luZG93X2NvbnN0cnVjdG9yc19maWxlLCB3b3JrZXJnbG9iYWxzY29wZV9j
b25zdHJ1Y3RvcnNfZmlsZSwgZGVkaWNhdGVkd29ya2VyZ2xvYmFsc2NvcGVfY29uc3RydWN0b3Jz
X2ZpbGUsIHNlcnZpY2V3b3JrZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSwgd29ya2xl
dGdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlLCBwYWludHdvcmtsZXRnbG9iYWxzY29wZV9j
b25zdHJ1Y3RvcnNfZmlsZSk6CiAgICAgICAgIGlkbF9maWxlc19saXN0ID0gdGVtcGZpbGUubWtz
dGVtcCgpCiAgICAgICAgIGZvciBpbnB1dF9maWxlIGluIG9zLmxpc3RkaXIoaW5wdXRfZGlyZWN0
b3J5KToKICAgICAgICAgICAgIChuYW1lLCBleHRlbnNpb24pID0gb3MucGF0aC5zcGxpdGV4dChp
bnB1dF9maWxlKQpAQCAtODgsNyArODgsOSBAQCBjbGFzcyBCaW5kaW5nc1Rlc3RzOgogICAgICAg
ICAgICAgICAgJy0td2luZG93Q29uc3RydWN0b3JzRmlsZScsIHdpbmRvd19jb25zdHJ1Y3RvcnNf
ZmlsZSwKICAgICAgICAgICAgICAgICctLXdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmls
ZScsIHdvcmtlcmdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlLAogICAgICAgICAgICAgICAg
Jy0tZGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlJywgZGVkaWNhdGVk
d29ya2VyZ2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGUsCi0gICAgICAgICAgICAgICAnLS1z
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlJywgc2VydmljZXdvcmtlcmds
b2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlXQorICAgICAgICAgICAgICAgJy0tc2VydmljZVdv
cmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZScsIHNlcnZpY2V3b3JrZXJnbG9iYWxzY29w
ZV9jb25zdHJ1Y3RvcnNfZmlsZSwKKyAgICAgICAgICAgICAgICctLXdvcmtsZXRHbG9iYWxTY29w
ZUNvbnN0cnVjdG9yc0ZpbGUnLCB3b3JrbGV0Z2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGUs
CisgICAgICAgICAgICAgICAnLS1wYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0Zp
bGUnLCBwYWludHdvcmtsZXRnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZV0KIAogICAgICAg
ICBleGl0X2NvZGUgPSAwCiAgICAgICAgIHRyeToKQEAgLTE4NSwxMyArMTg3LDE3IEBAIGNsYXNz
IEJpbmRpbmdzVGVzdHM6CiAgICAgICAgIHdvcmtlcmdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19m
aWxlID0gdGVtcGZpbGUubWtzdGVtcCgpCiAgICAgICAgIGRlZGljYXRlZHdvcmtlcmdsb2JhbHNj
b3BlX2NvbnN0cnVjdG9yc19maWxlID0gdGVtcGZpbGUubWtzdGVtcCgpCiAgICAgICAgIHNlcnZp
Y2V3b3JrZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSA9IHRlbXBmaWxlLm1rc3RlbXAo
KQotICAgICAgICBpZiBzZWxmLmdlbmVyYXRlX3N1cHBsZW1lbnRhbF9kZXBlbmRlbmN5KGlucHV0
X2RpcmVjdG9yeSwgc3VwcGxlbWVudGFsX2RlcGVuZGVuY3lfZmlsZVsxXSwgd2luZG93X2NvbnN0
cnVjdG9yc19maWxlWzFdLCB3b3JrZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZVsxXSwg
ZGVkaWNhdGVkd29ya2VyZ2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGVbMV0sIHNlcnZpY2V3
b3JrZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZVsxXSk6CisgICAgICAgIHdvcmtsZXRn
bG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSA9IHRlbXBmaWxlLm1rc3RlbXAoKQorICAgICAg
ICBwYWludHdvcmtsZXRnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSA9IHRlbXBmaWxlLm1r
c3RlbXAoKQorICAgICAgICBpZiBzZWxmLmdlbmVyYXRlX3N1cHBsZW1lbnRhbF9kZXBlbmRlbmN5
KGlucHV0X2RpcmVjdG9yeSwgc3VwcGxlbWVudGFsX2RlcGVuZGVuY3lfZmlsZVsxXSwgd2luZG93
X2NvbnN0cnVjdG9yc19maWxlWzFdLCB3b3JrZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmls
ZVsxXSwgZGVkaWNhdGVkd29ya2VyZ2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGVbMV0sIHNl
cnZpY2V3b3JrZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZVsxXSwgd29ya2xldGdsb2Jh
bHNjb3BlX2NvbnN0cnVjdG9yc19maWxlWzFdLCBwYWludHdvcmtsZXRnbG9iYWxzY29wZV9jb25z
dHJ1Y3RvcnNfZmlsZVsxXSk6CiAgICAgICAgICAgICBwcmludCgnRmFpbGVkIHRvIGdlbmVyYXRl
IGEgc3VwcGxlbWVudGFsIGRlcGVuZGVuY3kgZmlsZS4nKQogICAgICAgICAgICAgc2VsZi5jbG9z
ZV9hbmRfcmVtb3ZlKHN1cHBsZW1lbnRhbF9kZXBlbmRlbmN5X2ZpbGUpCiAgICAgICAgICAgICBz
ZWxmLmNsb3NlX2FuZF9yZW1vdmUod2luZG93X2NvbnN0cnVjdG9yc19maWxlKQogICAgICAgICAg
ICAgc2VsZi5jbG9zZV9hbmRfcmVtb3ZlKHdvcmtlcmdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19m
aWxlKQogICAgICAgICAgICAgc2VsZi5jbG9zZV9hbmRfcmVtb3ZlKGRlZGljYXRlZHdvcmtlcmds
b2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlKQogICAgICAgICAgICAgc2VsZi5jbG9zZV9hbmRf
cmVtb3ZlKHNlcnZpY2V3b3JrZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSkKKyAgICAg
ICAgICAgIHNlbGYuY2xvc2VfYW5kX3JlbW92ZSh3b3JrbGV0Z2xvYmFsc2NvcGVfY29uc3RydWN0
b3JzX2ZpbGUpCisgICAgICAgICAgICBzZWxmLmNsb3NlX2FuZF9yZW1vdmUocGFpbnR3b3JrbGV0
Z2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGUpCiAgICAgICAgICAgICByZXR1cm4gLTEKIAog
ICAgICAgICBmb3IgZ2VuZXJhdG9yIGluIHNlbGYuZ2VuZXJhdG9yczoKQEAgLTIwNSw2ICsyMTEs
OCBAQCBjbGFzcyBCaW5kaW5nc1Rlc3RzOgogICAgICAgICBzZWxmLmNsb3NlX2FuZF9yZW1vdmUo
d29ya2VyZ2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGUpCiAgICAgICAgIHNlbGYuY2xvc2Vf
YW5kX3JlbW92ZShkZWRpY2F0ZWR3b3JrZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSkK
ICAgICAgICAgc2VsZi5jbG9zZV9hbmRfcmVtb3ZlKHNlcnZpY2V3b3JrZXJnbG9iYWxzY29wZV9j
b25zdHJ1Y3RvcnNfZmlsZSkKKyAgICAgICAgc2VsZi5jbG9zZV9hbmRfcmVtb3ZlKHdvcmtsZXRn
bG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSkKKyAgICAgICAgc2VsZi5jbG9zZV9hbmRfcmVt
b3ZlKHBhaW50d29ya2xldGdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlKQogCiAgICAgICAg
IGlmIHNlbGYuanNvbl9maWxlX25hbWU6CiAgICAgICAgICAgICBqc29uX2RhdGEgPSB7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggMWI1ODBkOTQ5MDExZjQ2NDEzYmRjNjNmODQ4OTQ3NjIwNzI0MDU0Yy4uOWRkMmNmZDE4ZjFi
OTdjNTgwZmYyMDY2ZGY1YWVkMWYzNjhkNTliYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE4
LTEwLTI5ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAg
ICAgICBBZGQgbmV3IGdsb2JhbCBvYmplY3QgYW5kIHByZWxpbWluYXJ5IFdvcmtsZXRzIHN1cHBv
cnQgZm9yIENTUyBwYWludGluZyBhcGkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MDk3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBhIG5ldyB0ZXN0IGhhcm5lc3MgZm9yIHdvcmtsZXQgdGVzdHMs
IHNpbmNlIHRoZXkgZG8gbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBkb20uCisKKyAgICAgICAgKiBm
YXN0L2Nzcy1jdXN0b20tcGFpbnQvYmFzaWMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3Qv
Y3NzLWN1c3RvbS1wYWludC9iYXNpYy5odG1sOgorICAgICAgICAqIGZhc3QvY3NzLWN1c3RvbS1w
YWludC9yZWdpc3RlclBhaW50QmluZGluZ3MtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L3JlZ2lzdGVyUGFpbnRCaW5kaW5ncy1leHBlY3RlZC50
eHQ6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L3JlZ2lzdGVyUGFp
bnRCaW5kaW5ncy5odG1sOgorICAgICAgICAqIGZhc3QvY3NzLWN1c3RvbS1wYWludC9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3Mtd29ya2xldC5qczogQWRkZWQuCisgICAgICAgIChmb3JtYXRfdmFsdWUp
OgorICAgICAgICAqIGZhc3QvY3NzLWN1c3RvbS1wYWludC9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anM6IEFkZGVkLgorICAgICAgICAoYXN5bmMuaW1wb3J0V29ya2xldCk6CisgICAgICAgICogZmFz
dC9jc3MtY3VzdG9tLXBhaW50L3dvcmtsZXQtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L3dvcmtsZXQuaHRtbDogQWRkZWQuCisKIDIwMTgtMTAt
MjYgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMzc0NzkgYW5kIHIyMzc0ODQuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYmFzaWMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2Jhc2ljLWV4cGVjdGVkLnR4dAppbmRleCBl
YWExNzQzZTQzOTkwMGJmZDczYjBjMTkxNmUzZDJlY2VlNmQ0YjU2Li4wMjA1OWY5ODM1ZTIzNmFh
NWU5OTI5NTUxNDkxNzNiNWQ3NTI1NWE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy1jdXN0b20tcGFpbnQvYmFzaWMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzLWN1c3RvbS1wYWludC9iYXNpYy1leHBlY3RlZC50eHQKQEAgLTEsMTAgKzEsMyBAQAogCi1Q
QVNTIHRlc3QgdGhhdCByZWdpc3RlclBhaW50IHJ1bnMgCi1QQVNTIHRlc3QgdGhhdCByZWdpc3Rl
clBhaW50IHJ1bnMgd2l0aG91dCBpbnB1dFByb3BlcnRpZXMgCi1QQVNTIHRlc3QgdGhhdCByZWdp
c3RlclBhaW50IHJ1bnMgd2l0aCBpbnB1dEFyZ3VtZW50cyAKLVBBU1MgdGVzdCB0aGF0IHJlZ2lz
dGVyUGFpbnQgcnVucyB3aXRoIGNvbnRleHRPcHRpb25zIAotUEFTUyB0ZXN0IHRoYXQgcmVnaXN0
ZXJQYWludCBydW5zIHdpdGggcHJlZGVmaW5lZCBjbGFzcyAKLVBBU1MgdGVzdCB0aGF0IHJlZ2lz
dGVyUGFpbnQgYWNjZXB0cyBvbmx5IGEgc3RyaW5nIGFuZCBhIGNsYXNzIGNvbnN0cnVjdG9yIAog
UEFTUyB0ZXN0IHRoYXQgdGVzdCBkaXYgaGFzIHBhaW50KCkgdmFsdWUgCi1QQVNTIHRlc3QgdGhh
dCB0ZXN0IGRpdiBwYWludCBjYWxsYmFjayBnZXRzIGNhbGxlZCAKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2Jhc2ljLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy1jdXN0b20tcGFpbnQvYmFzaWMuaHRtbAppbmRleCAzZjRkYzNhMmQwMmVmMjFhMmU5
NzJkNGM4YjRmMmZhZThjMzg5NDU4Li40YzhiMGNmNTJlMTZkNWM4ZjAyODc4ZTJjZjc1Nzk1MzQw
ZTI4Zjk2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYmFz
aWMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYmFzaWMuaHRt
bApAQCAtMTYsNzAgKzE2LDcgQEAKIDxkaXYgaWQ9InBhaW50Ij48L2Rpdj4KIAogPHNjcmlwdD4K
LXRlc3QoZnVuY3Rpb24oKSB7Ci0gIENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3Rl
clBhaW50KCd0ZXN0MScsIGNsYXNzIHsKLSAgICBzdGF0aWMgZ2V0IGlucHV0UHJvcGVydGllcygp
IHsgcmV0dXJuIFsiLS10ZXN0Il07IH0KLSAgICBwYWludCgpIHsgfQotICB9KTsKLX0sICd0ZXN0
IHRoYXQgcmVnaXN0ZXJQYWludCBydW5zJyk7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gIENTUy5w
YWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCd0ZXN0MicsIGNsYXNzIHsKLSAg
ICBwYWludCgpIHsgfQotICB9KTsKLX0sICd0ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBydW5zIHdp
dGhvdXQgaW5wdXRQcm9wZXJ0aWVzJyk7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gIENTUy5wYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCd0ZXN0MycsIGNsYXNzIHsKLSAgICBz
dGF0aWMgZ2V0IGlucHV0QXJndW1lbnRzKCkgeyByZXR1cm4gWyI8bGVuZ3RoPiJdOyB9Ci0gICAg
cGFpbnQoKSB7IH0KLSAgfSk7Ci19LCAndGVzdCB0aGF0IHJlZ2lzdGVyUGFpbnQgcnVucyB3aXRo
IGlucHV0QXJndW1lbnRzJyk7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gIENTUy5wYWludFdvcmts
ZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCd0ZXN0NCcsIGNsYXNzIHsKLSAgICBzdGF0aWMg
Z2V0IGNvbnRleHRPcHRpb25zKCkgeyByZXR1cm4geyBhbHBoYTogdHJ1ZSB9OyB9Ci0gICAgcGFp
bnQoKSB7IH0KLSAgfSk7Ci19LCAndGVzdCB0aGF0IHJlZ2lzdGVyUGFpbnQgcnVucyB3aXRoIGNv
bnRleHRPcHRpb25zJyk7Ci0KLWNsYXNzIE15UGFpbnQgewotICBwYWludCgpIHsgfQotfQotCi10
ZXN0KGZ1bmN0aW9uKCkgewotICBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQ
YWludCgndGVzdDUnLCBNeVBhaW50KTsKLSAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnSW52YWxp
ZE1vZGlmaWNhdGlvbkVycm9yJ30sICgpID0+IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5y
ZWdpc3RlclBhaW50KCd0ZXN0NScsIE15UGFpbnQpKTsKLSAgQ1NTLnBhaW50V29ya2xldEdsb2Jh
bFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3Q2JywgY2xhc3MgZXh0ZW5kcyBNeVBhaW50IHsgfSk7
Ci19LCAndGVzdCB0aGF0IHJlZ2lzdGVyUGFpbnQgcnVucyB3aXRoIHByZWRlZmluZWQgY2xhc3Mn
KTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnSW52YWxp
ZE1vZGlmaWNhdGlvbkVycm9yJ30sICgpID0+IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5y
ZWdpc3RlclBhaW50KCd0ZXN0NicsICd0ZXN0JykpOwotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBl
RXJyb3IoKSwgKCkgPT4gQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQo
J3Rlc3Q3JykpOwotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gQ1NTLnBh
aW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3Q4JywgW10pKTsKLSAgYXNz
ZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IENTUy5wYWludFdvcmtsZXRHbG9iYWxT
Y29wZS5yZWdpc3RlclBhaW50KCd0ZXN0OScsIHt9KSk7Ci0gIGFzc2VydF90aHJvd3MobmV3IFR5
cGVFcnJvcigpLCAoKSA9PiBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWlu
dCgndGVzdDEwJywgNSkpOwotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4g
Q1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJycsIDUpKTsKLX0sICd0
ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBhY2NlcHRzIG9ubHkgYSBzdHJpbmcgYW5kIGEgY2xhc3Mg
Y29uc3RydWN0b3InKTsKLQogdGVzdChmdW5jdGlvbigpIHsKICAgYXNzZXJ0X2VxdWFscyhnZXRD
b21wdXRlZFN0eWxlKHBhaW50KS5nZXRQcm9wZXJ0eVZhbHVlKCJiYWNrZ3JvdW5kLWltYWdlIiks
ICJwYWludChteS1wYWludCkiKTsKIH0sICd0ZXN0IHRoYXQgdGVzdCBkaXYgaGFzIHBhaW50KCkg
dmFsdWUnKTsKLQotbGV0IHBhaW50X2NhbGxlZF90ZXN0ID0gYXN5bmNfdGVzdCgndGVzdCB0aGF0
IHRlc3QgZGl2IHBhaW50IGNhbGxiYWNrIGdldHMgY2FsbGVkJyk7Ci1wYWludF9jYWxsZWRfdGVz
dC5zdGVwKGZ1bmN0aW9uKCkgewotICBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0
ZXJQYWludCgnbXktcGFpbnQnLCBjbGFzcyB7Ci0gICAgcGFpbnQoY3R4LCBnZW9tLCBwcm9wZXJ0
aWVzKSB7Ci0gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKyl7Ci0gICAgICAgIGZvciAo
dmFyIGogPSAwOyBqIDwgNjsgaisrKXsKLSAgICAgICAgICBjdHguZmlsbFN0eWxlID0gJ3JnYign
ICsgTWF0aC5mbG9vcigyNTUgLSA0Mi41ICogaSkgKyAnLCcgKwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTWF0aC5mbG9vcigyNTUgLSA0Mi41ICogaikgKyAnLDApJzsKLSAgICAgICAgICBj
dHguZmlsbFJlY3QoaiAqIDI1LCBpICogMjUsIDI1LCAyNSk7Ci0gICAgICAgIH0KLSAgICAgIH0K
LSAgICAgIHBhaW50X2NhbGxlZF90ZXN0LmRvbmUoKTsKLSAgICB9Ci0gIH0pOwotfSk7Ci0KIDwv
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Jl
Z2lzdGVyUGFpbnRCaW5kaW5ncy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mt
Y3VzdG9tLXBhaW50L3JlZ2lzdGVyUGFpbnRCaW5kaW5ncy1leHBlY3RlZC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRiNDJiNjJkYTEzZWRhODE5NjEwYjMxOTdiNGU0NWE1NDczYmRjZjMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVnaXN0ZXJQYWludEJp
bmRpbmdzLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxNiBAQAorPCFET0NUWVBFIGh0bWw+PCEt
LSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBleHBlcmltZW50YWw6Q1NTUGFpbnRpbmdBUElFbmFibGVk
PXRydWUgXSAtLT4KKworPGNhbnZhcyBpZD0icGFpbnQiIHdpZHRoPSIxNTBweCIgaGVpZ2h0PSIx
NTBweCIgPjwvY2FudmFzPgorCis8c2NyaXB0IGlkPSJjb2RlIj4KK3ZhciBjYW52YXMgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgncGFpbnQnKTsKK3ZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4
dCgnMmQnKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspeworICBmb3IgKHZhciBqID0g
MDsgaiA8IDY7IGorKyl7CisgICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2IoJyArIE1hdGguZmxvb3Io
MjU1IC0gNDIuNSAqIGkpICsgJywnICsKKyAgICAgICAgICAgICAgICAgICAgIE1hdGguZmxvb3Io
MjU1IC0gNDIuNSAqIGopICsgJywwKSc7CisgICAgY3R4LmZpbGxSZWN0KGogKiAyNSwgaSAqIDI1
LCAyNSwgMjUpOworICB9Cit9Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvY3NzLWN1c3RvbS1wYWludC9yZWdpc3RlclBhaW50QmluZGluZ3MtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3JlZ2lzdGVyUGFpbnRCaW5kaW5ncy1l
eHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwMTQzMTUyYmQ4NmM5
ZGIwZDk3MjkyNDIyZDViOGFmODhhNTEwNmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3JlZ2lz
dGVyUGFpbnRCaW5kaW5ncy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCww
IEBACi0KLVBBU1MgcmVnaXN0ZXJQYWludCBtdXN0IGJlIGEgbWV0aG9kIAotUEFTUyBtdXN0IGdl
dCAicHJvdG90eXBlIiBwcm9wZXJ0eSBvZiB0aGUgY29uc3RydWN0b3IgCi1QQVNTIG11c3QgcmV0
aHJvdyBhbiBleGNlcHRpb24gdGhyb3duIHdoaWxlIGdldHRpbmcgImlucHV0UHJvcGVydGllcyIg
cHJvcGVydHkgb2YgdGhlIGNvbnN0cnVjdG9yIAotUEFTUyBtdXN0IHJldGhyb3cgYW4gZXhjZXB0
aW9uIHRocm93biB3aGlsZSBnZXR0aW5nICJwcm90b3R5cGUiIHByb3BlcnR5IG9mIHRoZSBjb25z
dHJ1Y3RvciAKLVBBU1MgbXVzdCB0aHJvdyB3aGVuICJwcm90b3R5cGUiIHByb3BlcnR5IG9mIHRo
ZSBjb25zdHJ1Y3RvciBpcyBub3QgYW4gb2JqZWN0IAotUEFTUyBtdXN0IGdldCBwYWludCBjYWxs
YmFjayBvZiB0aGUgY29uc3RydWN0b3IgcHJvdG90eXBlIAotUEFTUyBtdXN0IHJldGhyb3cgYW4g
ZXhjZXB0aW9uIHRocm93biB3aGlsZSBnZXR0aW5nIHBhaW50IGNhbGxiYWNrIG9uIHRoZSBjb25z
dHJ1Y3RvciBwcm90b3R5cGUgCi1QQVNTIG11c3QgcmV0aHJvdyBhbiBleGNlcHRpb24gdGhyb3du
IHdoaWxlIGNvbnZlcnRpbmcgcGFpbnQgY2FsbGJhY2sgdmFsdWUgdG8gRnVuY3Rpb24gY2FsbGJh
Y2sgdHlwZSAKLVBBU1MgbXVzdCByZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgY29u
dmVydGluZyB0aGUgdmFsdWUgb2YgaW5wdXRBcmd1bWVudHMgdG8gc2VxdWVuY2U8RE9NU3RyaW5n
PiAKLVBBU1MgbXVzdCByZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgaXRlcmF0aW5n
IG92ZXIgaW5wdXRBcmd1bWVudHMgdG8gc2VxdWVuY2U8RE9NU3RyaW5nPiAKLVBBU1MgbXVzdCBy
ZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgcmV0cmlldmluZyBTeW1ib2wuaXRlcmF0
b3Igb24gaW5wdXRBcmd1bWVudHMgCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3Nz
LWN1c3RvbS1wYWludC9yZWdpc3RlclBhaW50QmluZGluZ3MuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvY3NzLWN1c3RvbS1wYWludC9yZWdpc3RlclBhaW50QmluZGluZ3MuaHRtbAppbmRleCBkYzkw
MmM0Y2Q2NTkxMGQ1YjE4Y2FlMTU0ZWYzMzhjYTk4OThiY2RjLi5mYzEzZWI5YmE0NTY1MzljOTRm
NGY2MjYyODQ1MWNkZDg0NWYzNGI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1j
dXN0b20tcGFpbnQvcmVnaXN0ZXJQYWludEJpbmRpbmdzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MtY3VzdG9tLXBhaW50L3JlZ2lzdGVyUGFpbnRCaW5kaW5ncy5odG1sCkBAIC0yLDE3
ICsyLDY0IEBACiA8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxlPSJKdXN0aW4gTWljaGF1ZCIgaHJl
Zj0ibWFpbHRvOmp1c3Rpbl9taWNoYXVkQHdlYmtpdC5vcmciPgogPG1ldGEgbmFtZT0iYXNzZXJ0
IiBjb250ZW50PSJyZWdpc3RlclBhaW50IGFjY2Vzc2VzIGFyZ3VtZW50cyBpbiB0aGUgY29ycmVj
dCBvcmRlciI+CiA8bGluayByZWw9ImhlbHAiIGNvbnRlbnQ9Imh0dHBzOi8vZHJhZnRzLmNzcy1o
b3VkaW5pLm9yZy9jc3MtcGFpbnQtYXBpLTEvIj4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisKKzxzdHlsZT4KKyAgI3BhaW50
IHsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiBwYWludChteS1wYWludCk7CisgICAgd2lkdGg6IDE1
MHB4OworICAgIGhlaWdodDogMTUwcHg7CisgIH0KKzwvc3R5bGU+CisKKzxkaXYgaWQ9InBhaW50
Ij48L2Rpdj4KKworPHNjcmlwdCBpZD0iY29kZSIgdHlwZT0idGV4dC93b3JrbGV0Ij4KIGNsYXNz
IE15UGFpbnQgewogICBwYWludCgpIHsgfQogfQogCi10ZXN0KGZ1bmN0aW9uICgpIHsKLSAgICBh
c3NlcnRfdHJ1ZSgncmVnaXN0ZXJQYWludCcgaW4gQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3Bl
Ll9fcHJvdG9fXywgJyJyZWdpc3RlclBhaW50IiBleGlzdHMgb24gcHJvdG90eXBlJyk7Ci0gICAg
YXNzZXJ0X3RydWUoJ3JlZ2lzdGVyUGFpbnQnIGluIENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29w
ZSwgJyJyZWdpc3RlclBhaW50IiBleGlzdHMgb24gd2luZG93Jyk7Ci19LCAncmVnaXN0ZXJQYWlu
dCBtdXN0IGJlIGEgbWV0aG9kJyk7Cit0ZXN0KGZ1bmN0aW9uKCkgeworICByZWdpc3RlclBhaW50
KCdiYXNpYzEnLCBjbGFzcyB7CisgICAgc3RhdGljIGdldCBpbnB1dFByb3BlcnRpZXMoKSB7IHJl
dHVybiBbIi0tdGVzdCJdOyB9CisgICAgcGFpbnQoKSB7IH0KKyAgfSk7Cit9LCAndGVzdCB0aGF0
IHJlZ2lzdGVyUGFpbnQgcnVucycpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICByZWdpc3RlclBh
aW50KCdiYXNpYzInLCBjbGFzcyB7CisgICAgcGFpbnQoKSB7IH0KKyAgfSk7Cit9LCAndGVzdCB0
aGF0IHJlZ2lzdGVyUGFpbnQgcnVucyB3aXRob3V0IGlucHV0UHJvcGVydGllcycpOworCit0ZXN0
KGZ1bmN0aW9uKCkgeworICByZWdpc3RlclBhaW50KCdiYXNpYzMnLCBjbGFzcyB7CisgICAgc3Rh
dGljIGdldCBpbnB1dEFyZ3VtZW50cygpIHsgcmV0dXJuIFsiPGxlbmd0aD4iXTsgfQorICAgIHBh
aW50KCkgeyB9CisgIH0pOworfSwgJ3Rlc3QgdGhhdCByZWdpc3RlclBhaW50IHJ1bnMgd2l0aCBp
bnB1dEFyZ3VtZW50cycpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICByZWdpc3RlclBhaW50KCdi
YXNpYzQnLCBjbGFzcyB7CisgICAgc3RhdGljIGdldCBjb250ZXh0T3B0aW9ucygpIHsgcmV0dXJu
IHsgYWxwaGE6IHRydWUgfTsgfQorICAgIHBhaW50KCkgeyB9CisgIH0pOworfSwgJ3Rlc3QgdGhh
dCByZWdpc3RlclBhaW50IHJ1bnMgd2l0aCBjb250ZXh0T3B0aW9ucycpOworCit0ZXN0KGZ1bmN0
aW9uKCkgeworICByZWdpc3RlclBhaW50KCdiYXNpYzUnLCBNeVBhaW50KTsKKyAgYXNzZXJ0X3Ro
cm93cyh7J25hbWUnOiAnSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yJ30sICgpID0+IHJlZ2lzdGVy
UGFpbnQoJ2Jhc2ljNScsIE15UGFpbnQpKTsKKyAgcmVnaXN0ZXJQYWludCgnYmFzaWM2JywgY2xh
c3MgZXh0ZW5kcyBNeVBhaW50IHsgfSk7Cit9LCAndGVzdCB0aGF0IHJlZ2lzdGVyUGFpbnQgcnVu
cyB3aXRoIHByZWRlZmluZWQgY2xhc3MnKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgYXNzZXJ0
X3Rocm93cyh7J25hbWUnOiAnSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yJ30sICgpID0+IHJlZ2lz
dGVyUGFpbnQoJ2Jhc2ljNicsICd0ZXN0JykpOworICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJy
b3IoKSwgKCkgPT4gcmVnaXN0ZXJQYWludCgnYmFzaWM4JykpOworICBhc3NlcnRfdGhyb3dzKG5l
dyBUeXBlRXJyb3IoKSwgKCkgPT4gcmVnaXN0ZXJQYWludCgnYmFzaWM5JywgW10pKTsKKyAgYXNz
ZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHJlZ2lzdGVyUGFpbnQoJ2Jhc2ljMTAn
LCB7fSkpOworICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gcmVnaXN0ZXJQ
YWludCgnYmFzaWMxMScsIDUpKTsKKyAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgp
ID0+IHJlZ2lzdGVyUGFpbnQoJycsIDUpKTsKK30sICd0ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBh
Y2NlcHRzIG9ubHkgYSBzdHJpbmcgYW5kIGEgY2xhc3MgY29uc3RydWN0b3InKTsKIAogdGVzdChm
dW5jdGlvbiAoKSB7CiAgICAgY29uc3QgY2FsbHMgPSBbXTsKQEAgLTIyLDcgKzY5LDcgQEAgdGVz
dChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0W25hbWVdOwogICAgICAg
ICB9CiAgICAgfSk7Ci0gICAgQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFp
bnQoJ3Rlc3QtcHJvdG8nLCBwcm94eSk7CisgICAgcmVnaXN0ZXJQYWludCgndGVzdC1wcm90bycs
IHByb3h5KTsKICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNhbGxzLCBbImlucHV0UHJvcGVydGll
cyIsICJpbnB1dEFyZ3VtZW50cyIsICJjb250ZXh0T3B0aW9ucyIsICJwcm90b3R5cGUiXSk7CiB9
LCAnbXVzdCBnZXQgInByb3RvdHlwZSIgcHJvcGVydHkgb2YgdGhlIGNvbnN0cnVjdG9yJyk7CiAK
QEAgLTM2LDcgKzgzLDcgQEAgdGVzdChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICByZXR1cm4g
dGFyZ2V0W25hbWVdOwogICAgICAgICB9CiAgICAgfSk7Ci0gICAgYXNzZXJ0X3Rocm93cyh7J25h
bWUnOiAnZXhwZWN0ZWRFcnJvcid9LCBmdW5jdGlvbiAoKSB7IENTUy5wYWludFdvcmtsZXRHbG9i
YWxTY29wZS5yZWdpc3RlclBhaW50KCd0ZXN0LXJldGhyb3ctaW5wdXRQcm9wZXJ0aWVzMCcsIHBy
b3h5KTsgfSk7CisgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnZXhwZWN0ZWRFcnJvcid9LCBm
dW5jdGlvbiAoKSB7IHJlZ2lzdGVyUGFpbnQoJ3Rlc3QtcmV0aHJvdy1pbnB1dFByb3BlcnRpZXMw
JywgcHJveHkpOyB9KTsKIH0sICdtdXN0IHJldGhyb3cgYW4gZXhjZXB0aW9uIHRocm93biB3aGls
ZSBnZXR0aW5nICJpbnB1dFByb3BlcnRpZXMiIHByb3BlcnR5IG9mIHRoZSBjb25zdHJ1Y3Rvcicp
OwogCiB0ZXN0KGZ1bmN0aW9uICgpIHsKQEAgLTQ5LDcgKzk2LDcgQEAgdGVzdChmdW5jdGlvbiAo
KSB7CiAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0W25hbWVdOwogICAgICAgICB9CiAgICAgfSk7
Ci0gICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnZXhwZWN0ZWRFcnJvcid9LCBmdW5jdGlvbiAo
KSB7IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCd0ZXN0LXJldGhy
b3ctcHJvdG8nLCBwcm94eSk7IH0pOworICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ2V4cGVj
dGVkRXJyb3InfSwgZnVuY3Rpb24gKCkgeyByZWdpc3RlclBhaW50KCd0ZXN0LXJldGhyb3ctcHJv
dG8nLCBwcm94eSk7IH0pOwogfSwgJ211c3QgcmV0aHJvdyBhbiBleGNlcHRpb24gdGhyb3duIHdo
aWxlIGdldHRpbmcgInByb3RvdHlwZSIgcHJvcGVydHkgb2YgdGhlIGNvbnN0cnVjdG9yJyk7CiAK
IHRlc3QoZnVuY3Rpb24gKCkgewpAQCAtNjMsMTYgKzExMCwxNiBAQCB0ZXN0KGZ1bmN0aW9uICgp
IHsKICAgICB9KTsKIAogICAgIHJldHVybmVkVmFsdWUgPSBudWxsOwotICAgIGFzc2VydF90aHJv
d3MoeyduYW1lJzogJ1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IENTUy5wYWludFdvcmtsZXRH
bG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCd0ZXN0LXJldGhyb3ctcHJvdG8tbm9vYmoxJywgcHJv
eHkpOyB9LAorICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1R5cGVFcnJvcid9LCBmdW5jdGlv
biAoKSB7IHJlZ2lzdGVyUGFpbnQoJ3Rlc3QtcmV0aHJvdy1wcm90by1ub29iajEnLCBwcm94eSk7
IH0sCiAgICAgICAgICdtdXN0IHRocm93IHdoZW4gInByb3RvdHlwZSIgcHJvcGVydHkgb2YgdGhl
IGNvbnN0cnVjdG9yIGlzIG51bGwnKTsKICAgICByZXR1cm5lZFZhbHVlID0gdW5kZWZpbmVkOwot
ICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IENT
Uy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCd0ZXN0LXJldGhyb3ctcHJv
dG8tbm9vYmoyJywgcHJveHkpOyB9LAorICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1R5cGVF
cnJvcid9LCBmdW5jdGlvbiAoKSB7IHJlZ2lzdGVyUGFpbnQoJ3Rlc3QtcmV0aHJvdy1wcm90by1u
b29iajInLCBwcm94eSk7IH0sCiAgICAgICAgICdtdXN0IHRocm93IHdoZW4gInByb3RvdHlwZSIg
cHJvcGVydHkgb2YgdGhlIGNvbnN0cnVjdG9yIGlzIHVuZGVmaW5lZCcpOwogICAgIHJldHVybmVk
VmFsdWUgPSAnaGVsbG8nOwotICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1R5cGVFcnJvcid9
LCBmdW5jdGlvbiAoKSB7IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50
KCd0ZXN0LXJldGhyb3ctcHJvdG8tbm9vYmozJywgcHJveHkpOzsgfSwKKyAgICBhc3NlcnRfdGhy
b3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyByZWdpc3RlclBhaW50KCd0
ZXN0LXJldGhyb3ctcHJvdG8tbm9vYmozJywgcHJveHkpOzsgfSwKICAgICAgICAgJ211c3QgdGhy
b3cgd2hlbiAicHJvdG90eXBlIiBwcm9wZXJ0eSBvZiB0aGUgY29uc3RydWN0b3IgaXMgYSBzdHJp
bmcnKTsKICAgICByZXR1cm5lZFZhbHVlID0gMTsKLSAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6
ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUu
cmVnaXN0ZXJQYWludCgndGVzdC1yZXRocm93LXByb3RvLW5vb2JqNCcsIHByb3h5KTs7IH0sCisg
ICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgcmVn
aXN0ZXJQYWludCgndGVzdC1yZXRocm93LXByb3RvLW5vb2JqNCcsIHByb3h5KTs7IH0sCiAgICAg
ICAgICdtdXN0IHRocm93IHdoZW4gInByb3RvdHlwZSIgcHJvcGVydHkgb2YgdGhlIGNvbnN0cnVj
dG9yIGlzIGEgbnVtYmVyJyk7CiAKIH0sICdtdXN0IHRocm93IHdoZW4gInByb3RvdHlwZSIgcHJv
cGVydHkgb2YgdGhlIGNvbnN0cnVjdG9yIGlzIG5vdCBhbiBvYmplY3QnKTsKQEAgLTg3LDcgKzEz
NCw3IEBAIHRlc3QoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgcmV0dXJuIHRhcmdldFtuYW1l
XTsKICAgICAgICAgfQogICAgIH0pOwotICAgIENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5y
ZWdpc3RlclBhaW50KCdjYWxsYmFja3MnLCBjb25zdHJ1Y3Rvcik7CisgICAgcmVnaXN0ZXJQYWlu
dCgnY2FsbGJhY2tzJywgY29uc3RydWN0b3IpOwogICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2Fs
bHMsIFsncGFpbnQnXSk7CiB9LCAnbXVzdCBnZXQgcGFpbnQgY2FsbGJhY2sgb2YgdGhlIGNvbnN0
cnVjdG9yIHByb3RvdHlwZScpOwogCkBAIC0xMDIsNyArMTQ5LDcgQEAgdGVzdChmdW5jdGlvbiAo
KSB7CiAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0W25hbWVdOwogICAgICAgICB9CiAgICAgfSk7
Ci0gICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnZXhwZWN0ZWRFcnJvcid9LCBmdW5jdGlvbiAo
KSB7IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCdjYWxsYmFja3Mt
dGhyb3cnLCBjb25zdHJ1Y3Rvcik7IH0pOworICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ2V4
cGVjdGVkRXJyb3InfSwgZnVuY3Rpb24gKCkgeyByZWdpc3RlclBhaW50KCdjYWxsYmFja3MtdGhy
b3cnLCBjb25zdHJ1Y3Rvcik7IH0pOwogICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2FsbHMsIFsn
cGFpbnQnXSk7CiB9LCAnbXVzdCByZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgZ2V0
dGluZyBwYWludCBjYWxsYmFjayBvbiB0aGUgY29uc3RydWN0b3IgcHJvdG90eXBlJyk7CiAKQEAg
LTExNyw3ICsxNjQsNyBAQCB0ZXN0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIHJldHVybiB0
YXJnZXRbbmFtZV07CiAgICAgICAgIH0KICAgICB9KTsKLSAgICBhc3NlcnRfdGhyb3dzKHsnbmFt
ZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUucmVnaXN0ZXJQYWludCgnY2FsbGJhY2tzLXRocm93MicsIGNvbnN0cnVjdG9yKTsgfSk7Cisg
ICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgcmVn
aXN0ZXJQYWludCgnY2FsbGJhY2tzLXRocm93MicsIGNvbnN0cnVjdG9yKTsgfSk7CiAgICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyhjYWxscywgWydwYWludCddKTsKIH0sICdtdXN0IHJldGhyb3cgYW4g
ZXhjZXB0aW9uIHRocm93biB3aGlsZSBjb252ZXJ0aW5nIHBhaW50IGNhbGxiYWNrIHZhbHVlIHRv
IEZ1bmN0aW9uIGNhbGxiYWNrIHR5cGUnKTsKIApAQCAtMTMxLDcgKzE3OCw3IEBAIHRlc3QoZnVu
Y3Rpb24gKCkgewogICAgICAgICAgIHJldHVybiB0YXJnZXRbbmFtZV07CiAgICAgICB9CiAgIH0p
OwotICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBD
U1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgnc2VxdWVuY2UtdGhyb3cn
LCBwcm94eSk7IH0pOworICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwgZnVu
Y3Rpb24gKCkgeyByZWdpc3RlclBhaW50KCdzZXF1ZW5jZS10aHJvdycsIHByb3h5KTsgfSk7CiAg
IGFzc2VydF9hcnJheV9lcXVhbHMoY2FsbHMsIFsiaW5wdXRQcm9wZXJ0aWVzIiwgImlucHV0QXJn
dW1lbnRzIl0pOwogfSwgJ211c3QgcmV0aHJvdyBhbiBleGNlcHRpb24gdGhyb3duIHdoaWxlIGNv
bnZlcnRpbmcgdGhlIHZhbHVlIG9mIGlucHV0QXJndW1lbnRzIHRvIHNlcXVlbmNlPERPTVN0cmlu
Zz4nKTsKIApAQCAtMTQxLDEyICsxODgsMzYgQEAgdGVzdChmdW5jdGlvbiAoKSB7CiAgICAgICAg
IHlpZWxkICc8bGVuZ3RoPic7CiAgICAgICAgIHRocm93IHtuYW1lOiAnU29tZUVycm9yJ307CiAg
ICAgfX07Ci0gICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnU29tZUVycm9yJ30sIGZ1bmN0aW9u
ICgpIHsgQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3NlcXVlbmNl
LXRocm93MicsIGNvbnN0cnVjdG9yKTsgfSk7CisgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAn
U29tZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgcmVnaXN0ZXJQYWludCgnc2VxdWVuY2UtdGhyb3cy
JywgY29uc3RydWN0b3IpOyB9KTsKIH0sICdtdXN0IHJldGhyb3cgYW4gZXhjZXB0aW9uIHRocm93
biB3aGlsZSBpdGVyYXRpbmcgb3ZlciBpbnB1dEFyZ3VtZW50cyB0byBzZXF1ZW5jZTxET01TdHJp
bmc+Jyk7CiAKIHRlc3QoZnVuY3Rpb24gKCkgewogICAgIGNvbnN0IGNvbnN0cnVjdG9yID0gZnVu
Y3Rpb24gKCkge30KICAgICBjb25zdHJ1Y3Rvci5pbnB1dEFyZ3VtZW50cyA9IHtbU3ltYm9sLml0
ZXJhdG9yXTogMX07Ci0gICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1
bmN0aW9uICgpIHsgQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3N5
bWJvbC1pdGVyYXRvci10aHJvdzInLCBjb25zdHJ1Y3Rvcik7IH0pOworICAgIGFzc2VydF90aHJv
d3MoeyduYW1lJzogJ1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IHJlZ2lzdGVyUGFpbnQoJ3N5
bWJvbC1pdGVyYXRvci10aHJvdzInLCBjb25zdHJ1Y3Rvcik7IH0pOwogfSwgJ211c3QgcmV0aHJv
dyBhbiBleGNlcHRpb24gdGhyb3duIHdoaWxlIHJldHJpZXZpbmcgU3ltYm9sLml0ZXJhdG9yIG9u
IGlucHV0QXJndW1lbnRzJyk7CisKK2Fzc2VydF90cnVlKFBhaW50V29ya2xldEdsb2JhbFNjb3Bl
Lmhhc1J1bkFUZXN0KTsKK2lmIChQYWludFdvcmtsZXRHbG9iYWxTY29wZS5lcnJvcnMpIHsKKyAg
Y29uc29sZS5sb2coIlRoZSBmb2xsb3dpbmcgKCIgKyBQYWludFdvcmtsZXRHbG9iYWxTY29wZS5l
cnJvcnMubGVuZ3RoICsgIikgdGVzdHMgZmFpbGVkOiAiKQorICBjb25zb2xlLmxvZyhKU09OLnN0
cmluZ2lmeShQYWludFdvcmtsZXRHbG9iYWxTY29wZS5lcnJvcnMpKTsKKyAgYXNzZXJ0X3RydWUo
ZmFsc2UpOworfQorCitjbGFzcyBNeVBhaW50MiB7CisgIHBhaW50KGN0eCwgZ2VvbSwgcHJvcGVy
dGllcykgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKXsKKyAgICAgIGZvciAodmFy
IGogPSAwOyBqIDwgNjsgaisrKXsKKyAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2IoJyArIE1h
dGguZmxvb3IoMjU1IC0gNDIuNSAqIGkpICsgJywnICsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBNYXRoLmZsb29yKDI1NSAtIDQyLjUgKiBqKSArICcsMCknOworICAgICAgICBjdHguZmlsbFJl
Y3QoaiAqIDI1LCBpICogMjUsIDI1LCAyNSk7CisgICAgICB9CisgICAgfQorICB9Cit9CityZWdp
c3RlclBhaW50KCdteS1wYWludCcsIE15UGFpbnQyKTsKKzwvc2NyaXB0PgorCis8c2NyaXB0Pgor
ICBpbXBvcnRXb3JrbGV0KENTUy5wYWludFdvcmtsZXQsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdjb2RlJykudGV4dENvbnRlbnQpOwogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLXdvcmtsZXQuanMg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LXdvcmtsZXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDVjM2U3NGVlNmMxMzE0MTljMTY4OWVlODlkMDFhNDFh
YTcwMmVjYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1w
YWludC9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mtd29ya2xldC5qcwpAQCAtMCwwICsxLDczOSBAQAor
Ly8gVGhlc2UgYXJlIGhlbHBlcnMgdG8gYmUgZXZhbHVhdGVkIGluc2lkZSBhIHdvcmtsZXQKKy8v
IFRoZXkgYXJlIG1vc3RseSBmcm9tIHRoZSB3cHQgdGVzdGhhcm5lc3MuanMuCisKKy8qCisgKiBD
b252ZXJ0IGEgdmFsdWUgdG8gYSBuaWNlLCBodW1hbi1yZWFkYWJsZSBzdHJpbmcKKyAqLworZnVu
Y3Rpb24gZm9ybWF0X3ZhbHVlKHZhbCwgc2VlbikKK3sKKyAgICBpZiAoIXNlZW4pIHsKKyAgICAg
ICAgc2VlbiA9IFtdOworICAgIH0KKyAgICBpZiAodHlwZW9mIHZhbCA9PT0gIm9iamVjdCIgJiYg
dmFsICE9PSBudWxsKSB7CisgICAgICAgIGlmIChzZWVuLmluZGV4T2YodmFsKSA+PSAwKSB7Cisg
ICAgICAgICAgICByZXR1cm4gIlsuLi5dIjsKKyAgICAgICAgfQorICAgICAgICBzZWVuLnB1c2go
dmFsKTsKKyAgICB9CisgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsKSkgeworICAgICAgICByZXR1
cm4gIlsiICsgdmFsLm1hcChmdW5jdGlvbih4KSB7cmV0dXJuIGZvcm1hdF92YWx1ZSh4LCBzZWVu
KTt9KS5qb2luKCIsICIpICsgIl0iOworICAgIH0KKworICAgIHN3aXRjaCAodHlwZW9mIHZhbCkg
eworICAgIGNhc2UgInN0cmluZyI6CisgICAgICAgIHZhbCA9IHZhbC5yZXBsYWNlKCJcXCIsICJc
XFxcIik7CisgICAgICAgIGZvciAodmFyIHAgaW4gcmVwbGFjZW1lbnRzKSB7CisgICAgICAgICAg
ICB2YXIgcmVwbGFjZSA9ICJcXCIgKyByZXBsYWNlbWVudHNbcF07CisgICAgICAgICAgICB2YWwg
PSB2YWwucmVwbGFjZShSZWdFeHAoU3RyaW5nLmZyb21DaGFyQ29kZShwKSwgImciKSwgcmVwbGFj
ZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICciJyArIHZhbC5yZXBsYWNlKC8iL2csICdc
XCInKSArICciJzsKKyAgICBjYXNlICJib29sZWFuIjoKKyAgICBjYXNlICJ1bmRlZmluZWQiOgor
ICAgICAgICByZXR1cm4gU3RyaW5nKHZhbCk7CisgICAgY2FzZSAibnVtYmVyIjoKKyAgICAgICAg
Ly8gSW4gSmF2YVNjcmlwdCwgLTAgPT09IDAgYW5kIFN0cmluZygtMCkgPT0gIjAiLCBzbyB3ZSBo
YXZlIHRvCisgICAgICAgIC8vIHNwZWNpYWwtY2FzZS4KKyAgICAgICAgaWYgKHZhbCA9PT0gLTAg
JiYgMS92YWwgPT09IC1JbmZpbml0eSkgeworICAgICAgICAgICAgcmV0dXJuICItMCI7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIFN0cmluZyh2YWwpOworICAgIGNhc2UgIm9iamVjdCI6Cisg
ICAgICAgIGlmICh2YWwgPT09IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiAibnVsbCI7Cisg
ICAgICAgIH0KKworICAgICAgICAvLyBTcGVjaWFsLWNhc2UgTm9kZSBvYmplY3RzLCBzaW5jZSB0
aG9zZSBjb21lIHVwIGEgbG90IGluIG15IHRlc3RzLiAgSQorICAgICAgICAvLyBpZ25vcmUgbmFt
ZXNwYWNlcy4KKyAgICAgICAgaWYgKGlzX25vZGUodmFsKSkgeworICAgICAgICAgICAgc3dpdGNo
ICh2YWwubm9kZVR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgTm9kZS5FTEVNRU5UX05PREU6Cisg
ICAgICAgICAgICAgICAgdmFyIHJldCA9ICI8IiArIHZhbC5sb2NhbE5hbWU7CisgICAgICAgICAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWwuYXR0cmlidXRlcy5sZW5ndGg7IGkrKykgewor
ICAgICAgICAgICAgICAgICAgICByZXQgKz0gIiAiICsgdmFsLmF0dHJpYnV0ZXNbaV0ubmFtZSAr
ICc9IicgKyB2YWwuYXR0cmlidXRlc1tpXS52YWx1ZSArICciJzsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgcmV0ICs9ICI+IiArIHZhbC5pbm5lckhUTUwgKyAiPC8iICsgdmFs
LmxvY2FsTmFtZSArICI+IjsKKyAgICAgICAgICAgICAgICByZXR1cm4gIkVsZW1lbnQgbm9kZSAi
ICsgdHJ1bmNhdGUocmV0LCA2MCk7CisgICAgICAgICAgICBjYXNlIE5vZGUuVEVYVF9OT0RFOgor
ICAgICAgICAgICAgICAgIHJldHVybiAnVGV4dCBub2RlICInICsgdHJ1bmNhdGUodmFsLmRhdGEs
IDYwKSArICciJzsKKyAgICAgICAgICAgIGNhc2UgTm9kZS5QUk9DRVNTSU5HX0lOU1RSVUNUSU9O
X05PREU6CisgICAgICAgICAgICAgICAgcmV0dXJuICJQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gbm9k
ZSB3aXRoIHRhcmdldCAiICsgZm9ybWF0X3ZhbHVlKHRydW5jYXRlKHZhbC50YXJnZXQsIDYwKSkg
KyAiIGFuZCBkYXRhICIgKyBmb3JtYXRfdmFsdWUodHJ1bmNhdGUodmFsLmRhdGEsIDYwKSk7Cisg
ICAgICAgICAgICBjYXNlIE5vZGUuQ09NTUVOVF9OT0RFOgorICAgICAgICAgICAgICAgIHJldHVy
biAiQ29tbWVudCBub2RlIDwhLS0iICsgdHJ1bmNhdGUodmFsLmRhdGEsIDYwKSArICItLT4iOwor
ICAgICAgICAgICAgY2FzZSBOb2RlLkRPQ1VNRU5UX05PREU6CisgICAgICAgICAgICAgICAgcmV0
dXJuICJEb2N1bWVudCBub2RlIHdpdGggIiArIHZhbC5jaGlsZE5vZGVzLmxlbmd0aCArICh2YWwu
Y2hpbGROb2Rlcy5sZW5ndGggPT0gMSA/ICIgY2hpbGQiIDogIiBjaGlsZHJlbiIpOworICAgICAg
ICAgICAgY2FzZSBOb2RlLkRPQ1VNRU5UX1RZUEVfTk9ERToKKyAgICAgICAgICAgICAgICByZXR1
cm4gIkRvY3VtZW50VHlwZSBub2RlIjsKKyAgICAgICAgICAgIGNhc2UgTm9kZS5ET0NVTUVOVF9G
UkFHTUVOVF9OT0RFOgorICAgICAgICAgICAgICAgIHJldHVybiAiRG9jdW1lbnRGcmFnbWVudCBu
b2RlIHdpdGggIiArIHZhbC5jaGlsZE5vZGVzLmxlbmd0aCArICh2YWwuY2hpbGROb2Rlcy5sZW5n
dGggPT0gMSA/ICIgY2hpbGQiIDogIiBjaGlsZHJlbiIpOworICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICByZXR1cm4gIk5vZGUgb2JqZWN0IG9mIHVua25vd24gdHlwZSI7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgIC8qIGZhbGxzIHRocm91Z2ggKi8KKyAgICBk
ZWZhdWx0OgorICAgICAgICB0cnkgeworICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWwgKyAn
ICInICsgdHJ1bmNhdGUoU3RyaW5nKHZhbCksIDEwMDApICsgJyInOworICAgICAgICB9IGNhdGNo
KGUpIHsKKyAgICAgICAgICAgIHJldHVybiAoIltzdHJpbmdpZnlpbmcgb2JqZWN0IHRocmV3ICIg
KyBTdHJpbmcoZSkgKworICAgICAgICAgICAgICAgICAgICAiIHdpdGggdHlwZSAiICsgU3RyaW5n
KHR5cGVvZiBlKSArICJdIik7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIGlzX3Np
bmdsZV9ub2RlKHRlbXBsYXRlKQoreworICAgIHJldHVybiB0eXBlb2YgdGVtcGxhdGVbMF0gPT09
ICJzdHJpbmciOworfQorCitmdW5jdGlvbiBzdWJzdGl0dXRlKHRlbXBsYXRlLCBzdWJzdGl0dXRp
b25zKQoreworICAgIGlmICh0eXBlb2YgdGVtcGxhdGUgPT09ICJmdW5jdGlvbiIpIHsKKyAgICAg
ICAgdmFyIHJlcGxhY2VtZW50ID0gdGVtcGxhdGUoc3Vic3RpdHV0aW9ucyk7CisgICAgICAgIGlm
ICghcmVwbGFjZW1lbnQpIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisK
KyAgICAgICAgcmV0dXJuIHN1YnN0aXR1dGUocmVwbGFjZW1lbnQsIHN1YnN0aXR1dGlvbnMpOwor
ICAgIH0KKworICAgIGlmIChpc19zaW5nbGVfbm9kZSh0ZW1wbGF0ZSkpIHsKKyAgICAgICAgcmV0
dXJuIHN1YnN0aXR1dGVfc2luZ2xlKHRlbXBsYXRlLCBzdWJzdGl0dXRpb25zKTsKKyAgICB9CisK
KyAgICByZXR1cm4gZmlsdGVyKG1hcCh0ZW1wbGF0ZSwgZnVuY3Rpb24oeCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gc3Vic3RpdHV0ZSh4LCBzdWJzdGl0dXRpb25zKTsKKyAg
ICAgICAgICAgICAgICAgICAgICB9KSwgZnVuY3Rpb24oeCkge3JldHVybiB4ICE9PSBudWxsO30p
OworfQorCitmdW5jdGlvbiBzdWJzdGl0dXRlX3NpbmdsZSh0ZW1wbGF0ZSwgc3Vic3RpdHV0aW9u
cykKK3sKKyAgICB2YXIgc3Vic3RpdHV0aW9uX3JlID0gL1wkXHsoW14gfV0qKVx9L2c7CisKKyAg
ICBmdW5jdGlvbiBkb19zdWJzdGl0dXRpb24oaW5wdXQpIHsKKyAgICAgICAgdmFyIGNvbXBvbmVu
dHMgPSBpbnB1dC5zcGxpdChzdWJzdGl0dXRpb25fcmUpOworICAgICAgICB2YXIgcnYgPSBbXTsK
KyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb21wb25lbnRzLmxlbmd0aDsgaSArPSAyKSB7
CisgICAgICAgICAgICBydi5wdXNoKGNvbXBvbmVudHNbaV0pOworICAgICAgICAgICAgaWYgKGNv
bXBvbmVudHNbaSArIDFdKSB7CisgICAgICAgICAgICAgICAgcnYucHVzaChTdHJpbmcoc3Vic3Rp
dHV0aW9uc1tjb21wb25lbnRzW2kgKyAxXV0pKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gcnY7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3Vic3RpdHV0ZV9hdHRy
cyhhdHRycywgcnYpCisgICAgeworICAgICAgICBydlsxXSA9IHt9OworICAgICAgICBmb3IgKHZh
ciBuYW1lIGluIHRlbXBsYXRlWzFdKSB7CisgICAgICAgICAgICBpZiAoYXR0cnMuaGFzT3duUHJv
cGVydHkobmFtZSkpIHsKKyAgICAgICAgICAgICAgICB2YXIgbmV3X25hbWUgPSBkb19zdWJzdGl0
dXRpb24obmFtZSkuam9pbigiIik7CisgICAgICAgICAgICAgICAgdmFyIG5ld192YWx1ZSA9IGRv
X3N1YnN0aXR1dGlvbihhdHRyc1tuYW1lXSkuam9pbigiIik7CisgICAgICAgICAgICAgICAgcnZb
MV1bbmV3X25hbWVdID0gbmV3X3ZhbHVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorCisgICAgZnVuY3Rpb24gc3Vic3RpdHV0ZV9jaGlsZHJlbihjaGlsZHJlbiwgcnYpCisgICAg
eworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICAgICAgICBpZiAoY2hpbGRyZW5baV0gaW5zdGFuY2VvZiBPYmplY3QpIHsKKyAgICAgICAg
ICAgICAgICB2YXIgcmVwbGFjZW1lbnQgPSBzdWJzdGl0dXRlKGNoaWxkcmVuW2ldLCBzdWJzdGl0
dXRpb25zKTsKKyAgICAgICAgICAgICAgICBpZiAocmVwbGFjZW1lbnQgIT09IG51bGwpIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGlzX3NpbmdsZV9ub2RlKHJlcGxhY2VtZW50KSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgcnYucHVzaChyZXBsYWNlbWVudCk7CisgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBleHRlbmQocnYsIHJlcGxh
Y2VtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZXh0ZW5kKHJ2LCBkb19zdWJzdGl0dXRp
b24oU3RyaW5nKGNoaWxkcmVuW2ldKSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIHJldHVybiBydjsKKyAgICB9CisKKyAgICB2YXIgcnYgPSBbXTsKKyAgICBydi5wdXNoKGRv
X3N1YnN0aXR1dGlvbihTdHJpbmcodGVtcGxhdGVbMF0pKS5qb2luKCIiKSk7CisKKyAgICBpZiAo
dGVtcGxhdGVbMF0gPT09ICJ7dGV4dH0iKSB7CisgICAgICAgIHN1YnN0aXR1dGVfY2hpbGRyZW4o
dGVtcGxhdGUuc2xpY2UoMSksIHJ2KTsKKyAgICB9IGVsc2UgeworICAgICAgICBzdWJzdGl0dXRl
X2F0dHJzKHRlbXBsYXRlWzFdLCBydik7CisgICAgICAgIHN1YnN0aXR1dGVfY2hpbGRyZW4odGVt
cGxhdGUuc2xpY2UoMiksIHJ2KTsKKyAgICB9CisKKyAgICByZXR1cm4gcnY7Cit9CisKK2Z1bmN0
aW9uIGFzc2VydChleHBlY3RlZF90cnVlLCBmdW5jdGlvbl9uYW1lLCBkZXNjcmlwdGlvbiwgZXJy
b3IsIHN1YnN0aXR1dGlvbnMpCit7CisgICAgaWYgKGV4cGVjdGVkX3RydWUgIT09IHRydWUpIHsK
KyAgICAgICAgdmFyIG1zZyA9IG1ha2VfbWVzc2FnZShmdW5jdGlvbl9uYW1lLCBkZXNjcmlwdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgc3Vic3RpdHV0aW9ucyk7
CisgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25FcnJvcihtc2cpOworICAgIH0KK30KKworZnVu
Y3Rpb24gQXNzZXJ0aW9uRXJyb3IobWVzc2FnZSkKK3sKKyAgICB0aGlzLm1lc3NhZ2UgPSBtZXNz
YWdlOworICAgIHRoaXMuc3RhY2sgPSB0aGlzLmdldF9zdGFjaygpOworfQorCitBc3NlcnRpb25F
cnJvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEVycm9yLnByb3RvdHlwZSk7CisKK0Fzc2Vy
dGlvbkVycm9yLnByb3RvdHlwZS5nZXRfc3RhY2sgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgc3Rh
Y2sgPSBuZXcgRXJyb3IoKS5zdGFjazsKKyAgICAvLyBJRTExIGRvZXMgbm90IGluaXRpYWxpemUg
J0Vycm9yLnN0YWNrJyB1bnRpbCB0aGUgb2JqZWN0IGlzIHRocm93bi4KKyAgICBpZiAoIXN0YWNr
KSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsKKyAgICAg
ICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgc3RhY2sgPSBlLnN0YWNrOworICAgICAgICB9
CisgICAgfQorCisgICAgLy8gJ0Vycm9yLnN0YWNrJyBpcyBub3Qgc3VwcG9ydGVkIGluIGFsbCBi
cm93c2Vycy92ZXJzaW9ucworICAgIGlmICghc3RhY2spIHsKKyAgICAgICAgcmV0dXJuICIoU3Rh
Y2sgdHJhY2UgdW5hdmFpbGFibGUpIjsKKyAgICB9CisKKyAgICB2YXIgbGluZXMgPSBzdGFjay5z
cGxpdCgiXG4iKTsKKworICAgIC8vIENyZWF0ZSBhIHBhdHRlcm4gdG8gbWF0Y2ggc3RhY2sgZnJh
bWVzIG9yaWdpbmF0aW5nIHdpdGhpbiB0ZXN0aGFybmVzcy5qcy4gIFRoZXNlIGluY2x1ZGUgdGhl
CisgICAgLy8gc2NyaXB0IFVSTCwgZm9sbG93ZWQgYnkgdGhlIGxpbmUvY29sIChlLmcuLCAnL3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qczoxMjA6MjEnKS4KKyAgICAvLyBFc2NhcGUgdGhlIFVSTCBw
ZXIgaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zNTYxNDkzL2lzLXRoZXJlLWEt
cmVnZXhwLWVzY2FwZS1mdW5jdGlvbi1pbi1qYXZhc2NyaXB0CisgICAgLy8gaW4gY2FzZSBpdCBj
b250YWlucyBSZWdFeHAgY2hhcmFjdGVycy4KKyAgICB2YXIgc2NyaXB0X3VybCA9IGdldF9zY3Jp
cHRfdXJsKCk7CisgICAgdmFyIHJlX3RleHQgPSBzY3JpcHRfdXJsID8gc2NyaXB0X3VybC5yZXBs
YWNlKC9bLVwvXFxeJCorPy4oKXxbXF17fV0vZywgJ1xcJCYnKSA6ICJcXGJ0ZXN0aGFybmVzcy5q
cyI7CisgICAgdmFyIHJlID0gbmV3IFJlZ0V4cChyZV90ZXh0ICsgIjpcXGQrOlxcZCsiKTsKKwor
ICAgIC8vIFNvbWUgYnJvd3NlcnMgaW5jbHVkZSBhIHByZWFtYmxlIHRoYXQgc3BlY2lmaWVzIHRo
ZSB0eXBlIG9mIHRoZSBlcnJvciBvYmplY3QuICBTa2lwIHRoaXMgYnkKKyAgICAvLyBhZHZhbmNp
bmcgdW50aWwgd2UgZmluZCB0aGUgZmlyc3Qgc3RhY2sgZnJhbWUgb3JpZ2luYXRpbmcgZnJvbSB0
ZXN0aGFybmVzcy5qcy4KKyAgICB2YXIgaSA9IDA7CisgICAgd2hpbGUgKCFyZS50ZXN0KGxpbmVz
W2ldKSAmJiBpIDwgbGluZXMubGVuZ3RoKSB7CisgICAgICAgIGkrKzsKKyAgICB9CisKKyAgICAv
LyBUaGVuIHNraXAgdGhlIHRvcCBmcmFtZXMgb3JpZ2luYXRpbmcgZnJvbSB0ZXN0aGFybmVzcy5q
cyB0byBiZWdpbiB0aGUgc3RhY2sgYXQgdGhlIHRlc3QgY29kZS4KKyAgICB3aGlsZSAocmUudGVz
dChsaW5lc1tpXSkgJiYgaSA8IGxpbmVzLmxlbmd0aCkgeworICAgICAgICBpKys7CisgICAgfQor
CisgICAgLy8gUGFyYW5vaWQgY2hlY2sgdGhhdCB3ZSBkaWRuJ3Qgc2tpcCBhbGwgZnJhbWVzLiAg
SWYgc28sIHJldHVybiB0aGUgb3JpZ2luYWwgc3RhY2sgdW5tb2RpZmllZC4KKyAgICBpZiAoaSA+
PSBsaW5lcy5sZW5ndGgpIHsKKyAgICAgICAgcmV0dXJuIHN0YWNrOworICAgIH0KKworICAgIHJl
dHVybiBsaW5lcy5zbGljZShpKS5qb2luKCJcbiIpOworfQorCitmdW5jdGlvbiBtYWtlX21lc3Nh
Z2UoZnVuY3Rpb25fbmFtZSwgZGVzY3JpcHRpb24sIGVycm9yLCBzdWJzdGl0dXRpb25zKQorewor
ICAgIGZvciAodmFyIHAgaW4gc3Vic3RpdHV0aW9ucykgeworICAgICAgICBpZiAoc3Vic3RpdHV0
aW9ucy5oYXNPd25Qcm9wZXJ0eShwKSkgeworICAgICAgICAgICAgc3Vic3RpdHV0aW9uc1twXSA9
IGZvcm1hdF92YWx1ZShzdWJzdGl0dXRpb25zW3BdKTsKKyAgICAgICAgfQorICAgIH0KKyAgICB2
YXIgbm9kZV9mb3JtID0gc3Vic3RpdHV0ZShbInt0ZXh0fSIsICIke2Z1bmN0aW9uX25hbWV9OiAk
e2Rlc2NyaXB0aW9ufSIgKyBlcnJvcl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bWVyZ2Uoe2Z1bmN0aW9uX25hbWU6ZnVuY3Rpb25fbmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246KGRlc2NyaXB0aW9uP2Rlc2NyaXB0aW9uICsg
IiAiOiIiKX0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnN0aXR1
dGlvbnMpKTsKKyAgICByZXR1cm4gbm9kZV9mb3JtLnNsaWNlKDEpLmpvaW4oIiIpOworfQorCitm
dW5jdGlvbiBmaWx0ZXIoYXJyYXksIGNhbGxhYmxlLCB0aGlzT2JqKSB7CisgICAgdmFyIHJ2ID0g
W107CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykgeworICAgICAg
ICBpZiAoYXJyYXkuaGFzT3duUHJvcGVydHkoaSkpIHsKKyAgICAgICAgICAgIHZhciBwYXNzID0g
Y2FsbGFibGUuY2FsbCh0aGlzT2JqLCBhcnJheVtpXSwgaSwgYXJyYXkpOworICAgICAgICAgICAg
aWYgKHBhc3MpIHsKKyAgICAgICAgICAgICAgICBydi5wdXNoKGFycmF5W2ldKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcnY7Cit9CisKK2Z1bmN0aW9uIG1h
cChhcnJheSwgY2FsbGFibGUsIHRoaXNPYmopCit7CisgICAgdmFyIHJ2ID0gW107CisgICAgcnYu
bGVuZ3RoID0gYXJyYXkubGVuZ3RoOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVu
Z3RoOyBpKyspIHsKKyAgICAgICAgaWYgKGFycmF5Lmhhc093blByb3BlcnR5KGkpKSB7CisgICAg
ICAgICAgICBydltpXSA9IGNhbGxhYmxlLmNhbGwodGhpc09iaiwgYXJyYXlbaV0sIGksIGFycmF5
KTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcnY7Cit9CisKK2Z1bmN0aW9uIGZvckVh
Y2goYXJyYXksIGNhbGxiYWNrLCB0aGlzT2JqKQoreworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
YXJyYXkubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKGFycmF5Lmhhc093blByb3BlcnR5KGkp
KSB7CisgICAgICAgICAgICBjYWxsYmFjay5jYWxsKHRoaXNPYmosIGFycmF5W2ldLCBpLCBhcnJh
eSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIG1lcmdlKGEsYikKK3sKKyAgICB2
YXIgcnYgPSB7fTsKKyAgICB2YXIgcDsKKyAgICBmb3IgKHAgaW4gYSkgeworICAgICAgICBydltw
XSA9IGFbcF07CisgICAgfQorICAgIGZvciAocCBpbiBiKSB7CisgICAgICAgIHJ2W3BdID0gYltw
XTsKKyAgICB9CisgICAgcmV0dXJuIHJ2OworfQorCitmdW5jdGlvbiBzYW1lX3ZhbHVlKHgsIHkp
IHsKKyAgICBpZiAoeSAhPT0geSkgeworICAgICAgICAvL05hTiBjYXNlCisgICAgICAgIHJldHVy
biB4ICE9PSB4OworICAgIH0KKyAgICBpZiAoeCA9PT0gMCAmJiB5ID09PSAwKSB7CisgICAgICAg
IC8vRGlzdGluZ3Vpc2ggKzAgYW5kIC0wCisgICAgICAgIHJldHVybiAxL3ggPT09IDEveTsKKyAg
ICB9CisgICAgcmV0dXJuIHggPT09IHk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9lcXVhbHMoYWN0
dWFsLCBleHBlY3RlZCwgZGVzY3JpcHRpb24pCit7CisgICAgIC8qCisgICAgICAqIFRlc3QgaWYg
dHdvIHByaW1pdGl2ZXMgYXJlIGVxdWFsIG9yIHR3byBvYmplY3RzCisgICAgICAqIGFyZSB0aGUg
c2FtZSBvYmplY3QKKyAgICAgICovCisgICAgaWYgKHR5cGVvZiBhY3R1YWwgIT0gdHlwZW9mIGV4
cGVjdGVkKSB7CisgICAgICAgIGFzc2VydChmYWxzZSwgImFzc2VydF9lcXVhbHMiLCBkZXNjcmlw
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgKCIgKyB0eXBlb2YgZXhwZWN0
ZWQgKyAiKSAke2V4cGVjdGVkfSBidXQgZ290ICgiICsgdHlwZW9mIGFjdHVhbCArICIpICR7YWN0
dWFsfSIsCisgICAgICAgICAgICAgICAgICAgICAge2V4cGVjdGVkOmV4cGVjdGVkLCBhY3R1YWw6
YWN0dWFsfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXNzZXJ0KHNhbWVfdmFsdWUo
YWN0dWFsLCBleHBlY3RlZCksICJhc3NlcnRfZXF1YWxzIiwgZGVzY3JpcHRpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCAke2V4cGVjdGVkfSBi
dXQgZ290ICR7YWN0dWFsfSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHtleHBlY3RlZDpleHBlY3RlZCwgYWN0dWFsOmFjdHVhbH0pOworfQorCitmdW5jdGlvbiBh
c3NlcnRfbm90X2VxdWFscyhhY3R1YWwsIGV4cGVjdGVkLCBkZXNjcmlwdGlvbikKK3sKKyAgICAg
LyoKKyAgICAgICogVGVzdCBpZiB0d28gcHJpbWl0aXZlcyBhcmUgdW5lcXVhbCBvciB0d28gb2Jq
ZWN0cworICAgICAgKiBhcmUgZGlmZmVyZW50IG9iamVjdHMKKyAgICAgICovCisgICAgYXNzZXJ0
KCFzYW1lX3ZhbHVlKGFjdHVhbCwgZXhwZWN0ZWQpLCAiYXNzZXJ0X25vdF9lcXVhbHMiLCBkZXNj
cmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnb3Qg
ZGlzYWxsb3dlZCB2YWx1ZSAke2FjdHVhbH0iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAge2FjdHVhbDphY3R1YWx9KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X2lu
X2FycmF5KGFjdHVhbCwgZXhwZWN0ZWQsIGRlc2NyaXB0aW9uKQoreworICAgIGFzc2VydChleHBl
Y3RlZC5pbmRleE9mKGFjdHVhbCkgIT0gLTEsICJhc3NlcnRfaW5fYXJyYXkiLCBkZXNjcmlwdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUgJHth
Y3R1YWx9IG5vdCBpbiBhcnJheSAke2V4cGVjdGVkfSIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAge2FjdHVhbDphY3R1YWwsIGV4cGVjdGVkOmV4cGVjdGVkfSk7
Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9vYmplY3RfZXF1YWxzKGFjdHVhbCwgZXhwZWN0ZWQsIGRl
c2NyaXB0aW9uKQoreworICAgICAvL1RoaXMgbmVlZHMgdG8gYmUgaW1wcm92ZWQgYSBncmVhdCBk
ZWFsCisgICAgIGZ1bmN0aW9uIGNoZWNrX2VxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIHN0YWNrKQor
ICAgICB7CisgICAgICAgICBzdGFjay5wdXNoKGFjdHVhbCk7CisKKyAgICAgICAgIHZhciBwOwor
ICAgICAgICAgZm9yIChwIGluIGFjdHVhbCkgeworICAgICAgICAgICAgIGFzc2VydChleHBlY3Rl
ZC5oYXNPd25Qcm9wZXJ0eShwKSwgImFzc2VydF9vYmplY3RfZXF1YWxzIiwgZGVzY3JpcHRpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5leHBl
Y3RlZCBwcm9wZXJ0eSAke3B9Iiwge3A6cH0pOworCisgICAgICAgICAgICAgaWYgKHR5cGVvZiBh
Y3R1YWxbcF0gPT09ICJvYmplY3QiICYmIGFjdHVhbFtwXSAhPT0gbnVsbCkgeworICAgICAgICAg
ICAgICAgICBpZiAoc3RhY2suaW5kZXhPZihhY3R1YWxbcF0pID09PSAtMSkgeworICAgICAgICAg
ICAgICAgICAgICAgY2hlY2tfZXF1YWwoYWN0dWFsW3BdLCBleHBlY3RlZFtwXSwgc3RhY2spOwor
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgYXNzZXJ0KHNhbWVfdmFsdWUoYWN0dWFsW3BdLCBleHBlY3RlZFtwXSksICJhc3NlcnRfb2Jq
ZWN0X2VxdWFscyIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgInByb3BlcnR5ICR7cH0gZXhwZWN0ZWQgJHtleHBlY3RlZH0g
Z290ICR7YWN0dWFsfSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB7cDpwLCBleHBlY3RlZDpleHBlY3RlZCwgYWN0dWFsOmFjdHVhbH0pOworICAg
ICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgICAgIGZvciAocCBpbiBleHBlY3RlZCkgewor
ICAgICAgICAgICAgIGFzc2VydChhY3R1YWwuaGFzT3duUHJvcGVydHkocCksCisgICAgICAgICAg
ICAgICAgICAgICJhc3NlcnRfb2JqZWN0X2VxdWFscyIsIGRlc2NyaXB0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAiZXhwZWN0ZWQgcHJvcGVydHkgJHtwfSBtaXNzaW5nIiwge3A6cH0pOworICAg
ICAgICAgfQorICAgICAgICAgc3RhY2sucG9wKCk7CisgICAgIH0KKyAgICAgY2hlY2tfZXF1YWwo
YWN0dWFsLCBleHBlY3RlZCwgW10pOworfQorCitmdW5jdGlvbiBhc3NlcnRfYXJyYXlfZXF1YWxz
KGFjdHVhbCwgZXhwZWN0ZWQsIGRlc2NyaXB0aW9uKQoreworICAgIGFzc2VydChhY3R1YWwubGVu
Z3RoID09PSBleHBlY3RlZC5sZW5ndGgsCisgICAgICAgICAgICJhc3NlcnRfYXJyYXlfZXF1YWxz
IiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICJsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgJHtl
eHBlY3RlZH0gZ290ICR7YWN0dWFsfSIsCisgICAgICAgICAgIHtleHBlY3RlZDpleHBlY3RlZC5s
ZW5ndGgsIGFjdHVhbDphY3R1YWwubGVuZ3RofSk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGFjdHVhbC5sZW5ndGg7IGkrKykgeworICAgICAgICBhc3NlcnQoYWN0dWFsLmhhc093blByb3Bl
cnR5KGkpID09PSBleHBlY3RlZC5oYXNPd25Qcm9wZXJ0eShpKSwKKyAgICAgICAgICAgICAgICJh
c3NlcnRfYXJyYXlfZXF1YWxzIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAicHJvcGVy
dHkgJHtpfSwgcHJvcGVydHkgZXhwZWN0ZWQgdG8gYmUgJHtleHBlY3RlZH0gYnV0IHdhcyAke2Fj
dHVhbH0iLAorICAgICAgICAgICAgICAge2k6aSwgZXhwZWN0ZWQ6ZXhwZWN0ZWQuaGFzT3duUHJv
cGVydHkoaSkgPyAicHJlc2VudCIgOiAibWlzc2luZyIsCisgICAgICAgICAgICAgICBhY3R1YWw6
YWN0dWFsLmhhc093blByb3BlcnR5KGkpID8gInByZXNlbnQiIDogIm1pc3NpbmcifSk7CisgICAg
ICAgIGFzc2VydChzYW1lX3ZhbHVlKGV4cGVjdGVkW2ldLCBhY3R1YWxbaV0pLAorICAgICAgICAg
ICAgICAgImFzc2VydF9hcnJheV9lcXVhbHMiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAg
ICJwcm9wZXJ0eSAke2l9LCBleHBlY3RlZCAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfSIs
CisgICAgICAgICAgICAgICB7aTppLCBleHBlY3RlZDpleHBlY3RlZFtpXSwgYWN0dWFsOmFjdHVh
bFtpXX0pOworICAgIH0KK30KKworZnVuY3Rpb24gYXNzZXJ0X2FwcHJveF9lcXVhbHMoYWN0dWFs
LCBleHBlY3RlZCwgZXBzaWxvbiwgZGVzY3JpcHRpb24pCit7CisgICAgLyoKKyAgICAgKiBUZXN0
IGlmIHR3byBwcmltaXRpdmUgbnVtYmVycyBhcmUgZXF1YWwgd2l0aGluZyArLy0gZXBzaWxvbgor
ICAgICAqLworICAgIGFzc2VydCh0eXBlb2YgYWN0dWFsID09PSAibnVtYmVyIiwKKyAgICAgICAg
ICAgImFzc2VydF9hcHByb3hfZXF1YWxzIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICJleHBl
Y3RlZCBhIG51bWJlciBidXQgZ290IGEgJHt0eXBlX2FjdHVhbH0iLAorICAgICAgICAgICB7dHlw
ZV9hY3R1YWw6dHlwZW9mIGFjdHVhbH0pOworCisgICAgYXNzZXJ0KE1hdGguYWJzKGFjdHVhbCAt
IGV4cGVjdGVkKSA8PSBlcHNpbG9uLAorICAgICAgICAgICAiYXNzZXJ0X2FwcHJveF9lcXVhbHMi
LCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgImV4cGVjdGVkICR7ZXhwZWN0ZWR9ICsvLSAke2Vw
c2lsb259IGJ1dCBnb3QgJHthY3R1YWx9IiwKKyAgICAgICAgICAge2V4cGVjdGVkOmV4cGVjdGVk
LCBhY3R1YWw6YWN0dWFsLCBlcHNpbG9uOmVwc2lsb259KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0
X2xlc3NfdGhhbihhY3R1YWwsIGV4cGVjdGVkLCBkZXNjcmlwdGlvbikKK3sKKyAgICAvKgorICAg
ICAqIFRlc3QgaWYgYSBwcmltaXRpdmUgbnVtYmVyIGlzIGxlc3MgdGhhbiBhbm90aGVyCisgICAg
ICovCisgICAgYXNzZXJ0KHR5cGVvZiBhY3R1YWwgPT09ICJudW1iZXIiLAorICAgICAgICAgICAi
YXNzZXJ0X2xlc3NfdGhhbiIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAiZXhwZWN0ZWQgYSBu
dW1iZXIgYnV0IGdvdCBhICR7dHlwZV9hY3R1YWx9IiwKKyAgICAgICAgICAge3R5cGVfYWN0dWFs
OnR5cGVvZiBhY3R1YWx9KTsKKworICAgIGFzc2VydChhY3R1YWwgPCBleHBlY3RlZCwKKyAgICAg
ICAgICAgImFzc2VydF9sZXNzX3RoYW4iLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgImV4cGVj
dGVkIGEgbnVtYmVyIGxlc3MgdGhhbiAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfSIsCisg
ICAgICAgICAgIHtleHBlY3RlZDpleHBlY3RlZCwgYWN0dWFsOmFjdHVhbH0pOworfQorCitmdW5j
dGlvbiBhc3NlcnRfZ3JlYXRlcl90aGFuKGFjdHVhbCwgZXhwZWN0ZWQsIGRlc2NyaXB0aW9uKQor
eworICAgIC8qCisgICAgICogVGVzdCBpZiBhIHByaW1pdGl2ZSBudW1iZXIgaXMgZ3JlYXRlciB0
aGFuIGFub3RoZXIKKyAgICAgKi8KKyAgICBhc3NlcnQodHlwZW9mIGFjdHVhbCA9PT0gIm51bWJl
ciIsCisgICAgICAgICAgICJhc3NlcnRfZ3JlYXRlcl90aGFuIiwgZGVzY3JpcHRpb24sCisgICAg
ICAgICAgICJleHBlY3RlZCBhIG51bWJlciBidXQgZ290IGEgJHt0eXBlX2FjdHVhbH0iLAorICAg
ICAgICAgICB7dHlwZV9hY3R1YWw6dHlwZW9mIGFjdHVhbH0pOworCisgICAgYXNzZXJ0KGFjdHVh
bCA+IGV4cGVjdGVkLAorICAgICAgICAgICAiYXNzZXJ0X2dyZWF0ZXJfdGhhbiIsIGRlc2NyaXB0
aW9uLAorICAgICAgICAgICAiZXhwZWN0ZWQgYSBudW1iZXIgZ3JlYXRlciB0aGFuICR7ZXhwZWN0
ZWR9IGJ1dCBnb3QgJHthY3R1YWx9IiwKKyAgICAgICAgICAge2V4cGVjdGVkOmV4cGVjdGVkLCBh
Y3R1YWw6YWN0dWFsfSk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9iZXR3ZWVuX2V4Y2x1c2l2ZShh
Y3R1YWwsIGxvd2VyLCB1cHBlciwgZGVzY3JpcHRpb24pCit7CisgICAgLyoKKyAgICAgKiBUZXN0
IGlmIGEgcHJpbWl0aXZlIG51bWJlciBpcyBiZXR3ZWVuIHR3byBvdGhlcnMKKyAgICAgKi8KKyAg
ICBhc3NlcnQodHlwZW9mIGFjdHVhbCA9PT0gIm51bWJlciIsCisgICAgICAgICAgICJhc3NlcnRf
YmV0d2Vlbl9leGNsdXNpdmUiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgImV4cGVjdGVkIGEg
bnVtYmVyIGJ1dCBnb3QgYSAke3R5cGVfYWN0dWFsfSIsCisgICAgICAgICAgIHt0eXBlX2FjdHVh
bDp0eXBlb2YgYWN0dWFsfSk7CisKKyAgICBhc3NlcnQoYWN0dWFsID4gbG93ZXIgJiYgYWN0dWFs
IDwgdXBwZXIsCisgICAgICAgICAgICJhc3NlcnRfYmV0d2Vlbl9leGNsdXNpdmUiLCBkZXNjcmlw
dGlvbiwKKyAgICAgICAgICAgImV4cGVjdGVkIGEgbnVtYmVyIGdyZWF0ZXIgdGhhbiAke2xvd2Vy
fSAiICsKKyAgICAgICAgICAgImFuZCBsZXNzIHRoYW4gJHt1cHBlcn0gYnV0IGdvdCAke2FjdHVh
bH0iLAorICAgICAgICAgICB7bG93ZXI6bG93ZXIsIHVwcGVyOnVwcGVyLCBhY3R1YWw6YWN0dWFs
fSk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9sZXNzX3RoYW5fZXF1YWwoYWN0dWFsLCBleHBlY3Rl
ZCwgZGVzY3JpcHRpb24pCit7CisgICAgLyoKKyAgICAgKiBUZXN0IGlmIGEgcHJpbWl0aXZlIG51
bWJlciBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYW5vdGhlcgorICAgICAqLworICAgIGFzc2Vy
dCh0eXBlb2YgYWN0dWFsID09PSAibnVtYmVyIiwKKyAgICAgICAgICAgImFzc2VydF9sZXNzX3Ro
YW5fZXF1YWwiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgImV4cGVjdGVkIGEgbnVtYmVyIGJ1
dCBnb3QgYSAke3R5cGVfYWN0dWFsfSIsCisgICAgICAgICAgIHt0eXBlX2FjdHVhbDp0eXBlb2Yg
YWN0dWFsfSk7CisKKyAgICBhc3NlcnQoYWN0dWFsIDw9IGV4cGVjdGVkLAorICAgICAgICAgICAi
YXNzZXJ0X2xlc3NfdGhhbl9lcXVhbCIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAiZXhwZWN0
ZWQgYSBudW1iZXIgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHth
Y3R1YWx9IiwKKyAgICAgICAgICAge2V4cGVjdGVkOmV4cGVjdGVkLCBhY3R1YWw6YWN0dWFsfSk7
Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9ncmVhdGVyX3RoYW5fZXF1YWwoYWN0dWFsLCBleHBlY3Rl
ZCwgZGVzY3JpcHRpb24pCit7CisgICAgLyoKKyAgICAgKiBUZXN0IGlmIGEgcHJpbWl0aXZlIG51
bWJlciBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYW5vdGhlcgorICAgICAqLworICAgIGFz
c2VydCh0eXBlb2YgYWN0dWFsID09PSAibnVtYmVyIiwKKyAgICAgICAgICAgImFzc2VydF9ncmVh
dGVyX3RoYW5fZXF1YWwiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgImV4cGVjdGVkIGEgbnVt
YmVyIGJ1dCBnb3QgYSAke3R5cGVfYWN0dWFsfSIsCisgICAgICAgICAgIHt0eXBlX2FjdHVhbDp0
eXBlb2YgYWN0dWFsfSk7CisKKyAgICBhc3NlcnQoYWN0dWFsID49IGV4cGVjdGVkLAorICAgICAg
ICAgICAiYXNzZXJ0X2dyZWF0ZXJfdGhhbl9lcXVhbCIsIGRlc2NyaXB0aW9uLAorICAgICAgICAg
ICAiZXhwZWN0ZWQgYSBudW1iZXIgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICR7ZXhwZWN0ZWR9
IGJ1dCBnb3QgJHthY3R1YWx9IiwKKyAgICAgICAgICAge2V4cGVjdGVkOmV4cGVjdGVkLCBhY3R1
YWw6YWN0dWFsfSk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9iZXR3ZWVuX2luY2x1c2l2ZShhY3R1
YWwsIGxvd2VyLCB1cHBlciwgZGVzY3JpcHRpb24pCit7CisgICAgLyoKKyAgICAgKiBUZXN0IGlm
IGEgcHJpbWl0aXZlIG51bWJlciBpcyBiZXR3ZWVuIHRvIHR3byBvdGhlcnMgb3IgZXF1YWwgdG8g
ZWl0aGVyIG9mIHRoZW0KKyAgICAgKi8KKyAgICBhc3NlcnQodHlwZW9mIGFjdHVhbCA9PT0gIm51
bWJlciIsCisgICAgICAgICAgICJhc3NlcnRfYmV0d2Vlbl9pbmNsdXNpdmUiLCBkZXNjcmlwdGlv
biwKKyAgICAgICAgICAgImV4cGVjdGVkIGEgbnVtYmVyIGJ1dCBnb3QgYSAke3R5cGVfYWN0dWFs
fSIsCisgICAgICAgICAgIHt0eXBlX2FjdHVhbDp0eXBlb2YgYWN0dWFsfSk7CisKKyAgICBhc3Nl
cnQoYWN0dWFsID49IGxvd2VyICYmIGFjdHVhbCA8PSB1cHBlciwKKyAgICAgICAgICAgImFzc2Vy
dF9iZXR3ZWVuX2luY2x1c2l2ZSIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAiZXhwZWN0ZWQg
YSBudW1iZXIgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICR7bG93ZXJ9ICIgKworICAgICAgICAg
ICAiYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAke3VwcGVyfSBidXQgZ290ICR7YWN0dWFsfSIs
CisgICAgICAgICAgIHtsb3dlcjpsb3dlciwgdXBwZXI6dXBwZXIsIGFjdHVhbDphY3R1YWx9KTsK
K30KKworZnVuY3Rpb24gYXNzZXJ0X3Rocm93cyhjb2RlLCBmdW5jLCBkZXNjcmlwdGlvbikKK3sK
KyAgICB0cnkgeworICAgICAgICBmdW5jLmNhbGwodGhpcyk7CisgICAgICAgIGFzc2VydChmYWxz
ZSwgImFzc2VydF90aHJvd3MiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICIke2Z1bmN9
IGRpZCBub3QgdGhyb3ciLCB7ZnVuYzpmdW5jfSk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAg
ICBpZiAoZSBpbnN0YW5jZW9mIEFzc2VydGlvbkVycm9yKSB7CisgICAgICAgICAgICB0aHJvdyBl
OworICAgICAgICB9CisgICAgICAgIGlmIChjb2RlID09PSBudWxsKSB7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKHR5cGVvZiBjb2RlID09PSAib2JqZWN0Iikg
eworICAgICAgICAgICAgYXNzZXJ0KHR5cGVvZiBlID09ICJvYmplY3QiICYmICJuYW1lIiBpbiBl
ICYmIGUubmFtZSA9PSBjb2RlLm5hbWUsCisgICAgICAgICAgICAgICAgICAgImFzc2VydF90aHJv
d3MiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAiJHtmdW5jfSB0aHJldyAke2Fj
dHVhbH0gKCR7YWN0dWFsX25hbWV9KSBleHBlY3RlZCAke2V4cGVjdGVkfSAoJHtleHBlY3RlZF9u
YW1lfSkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZnVuYzpmdW5jLCBhY3R1
YWw6ZSwgYWN0dWFsX25hbWU6ZS5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZXhwZWN0ZWQ6Y29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVj
dGVkX25hbWU6Y29kZS5uYW1lfSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICB2YXIgY29kZV9uYW1lX21hcCA9IHsKKyAgICAgICAgICAgIElOREVYX1NJWkVfRVJS
OiAnSW5kZXhTaXplRXJyb3InLAorICAgICAgICAgICAgSElFUkFSQ0hZX1JFUVVFU1RfRVJSOiAn
SGllcmFyY2h5UmVxdWVzdEVycm9yJywKKyAgICAgICAgICAgIFdST05HX0RPQ1VNRU5UX0VSUjog
J1dyb25nRG9jdW1lbnRFcnJvcicsCisgICAgICAgICAgICBJTlZBTElEX0NIQVJBQ1RFUl9FUlI6
ICdJbnZhbGlkQ2hhcmFjdGVyRXJyb3InLAorICAgICAgICAgICAgTk9fTU9ESUZJQ0FUSU9OX0FM
TE9XRURfRVJSOiAnTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3InLAorICAgICAgICAgICAgTk9U
X0ZPVU5EX0VSUjogJ05vdEZvdW5kRXJyb3InLAorICAgICAgICAgICAgTk9UX1NVUFBPUlRFRF9F
UlI6ICdOb3RTdXBwb3J0ZWRFcnJvcicsCisgICAgICAgICAgICBJTlVTRV9BVFRSSUJVVEVfRVJS
OiAnSW5Vc2VBdHRyaWJ1dGVFcnJvcicsCisgICAgICAgICAgICBJTlZBTElEX1NUQVRFX0VSUjog
J0ludmFsaWRTdGF0ZUVycm9yJywKKyAgICAgICAgICAgIFNZTlRBWF9FUlI6ICdTeW50YXhFcnJv
cicsCisgICAgICAgICAgICBJTlZBTElEX01PRElGSUNBVElPTl9FUlI6ICdJbnZhbGlkTW9kaWZp
Y2F0aW9uRXJyb3InLAorICAgICAgICAgICAgTkFNRVNQQUNFX0VSUjogJ05hbWVzcGFjZUVycm9y
JywKKyAgICAgICAgICAgIElOVkFMSURfQUNDRVNTX0VSUjogJ0ludmFsaWRBY2Nlc3NFcnJvcics
CisgICAgICAgICAgICBUWVBFX01JU01BVENIX0VSUjogJ1R5cGVNaXNtYXRjaEVycm9yJywKKyAg
ICAgICAgICAgIFNFQ1VSSVRZX0VSUjogJ1NlY3VyaXR5RXJyb3InLAorICAgICAgICAgICAgTkVU
V09SS19FUlI6ICdOZXR3b3JrRXJyb3InLAorICAgICAgICAgICAgQUJPUlRfRVJSOiAnQWJvcnRF
cnJvcicsCisgICAgICAgICAgICBVUkxfTUlTTUFUQ0hfRVJSOiAnVVJMTWlzbWF0Y2hFcnJvcics
CisgICAgICAgICAgICBRVU9UQV9FWENFRURFRF9FUlI6ICdRdW90YUV4Y2VlZGVkRXJyb3InLAor
ICAgICAgICAgICAgVElNRU9VVF9FUlI6ICdUaW1lb3V0RXJyb3InLAorICAgICAgICAgICAgSU5W
QUxJRF9OT0RFX1RZUEVfRVJSOiAnSW52YWxpZE5vZGVUeXBlRXJyb3InLAorICAgICAgICAgICAg
REFUQV9DTE9ORV9FUlI6ICdEYXRhQ2xvbmVFcnJvcicKKyAgICAgICAgfTsKKworICAgICAgICB2
YXIgbmFtZSA9IGNvZGUgaW4gY29kZV9uYW1lX21hcCA/IGNvZGVfbmFtZV9tYXBbY29kZV0gOiBj
b2RlOworCisgICAgICAgIHZhciBuYW1lX2NvZGVfbWFwID0geworICAgICAgICAgICAgSW5kZXhT
aXplRXJyb3I6IDEsCisgICAgICAgICAgICBIaWVyYXJjaHlSZXF1ZXN0RXJyb3I6IDMsCisgICAg
ICAgICAgICBXcm9uZ0RvY3VtZW50RXJyb3I6IDQsCisgICAgICAgICAgICBJbnZhbGlkQ2hhcmFj
dGVyRXJyb3I6IDUsCisgICAgICAgICAgICBOb01vZGlmaWNhdGlvbkFsbG93ZWRFcnJvcjogNywK
KyAgICAgICAgICAgIE5vdEZvdW5kRXJyb3I6IDgsCisgICAgICAgICAgICBOb3RTdXBwb3J0ZWRF
cnJvcjogOSwKKyAgICAgICAgICAgIEluVXNlQXR0cmlidXRlRXJyb3I6IDEwLAorICAgICAgICAg
ICAgSW52YWxpZFN0YXRlRXJyb3I6IDExLAorICAgICAgICAgICAgU3ludGF4RXJyb3I6IDEyLAor
ICAgICAgICAgICAgSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yOiAxMywKKyAgICAgICAgICAgIE5h
bWVzcGFjZUVycm9yOiAxNCwKKyAgICAgICAgICAgIEludmFsaWRBY2Nlc3NFcnJvcjogMTUsCisg
ICAgICAgICAgICBUeXBlTWlzbWF0Y2hFcnJvcjogMTcsCisgICAgICAgICAgICBTZWN1cml0eUVy
cm9yOiAxOCwKKyAgICAgICAgICAgIE5ldHdvcmtFcnJvcjogMTksCisgICAgICAgICAgICBBYm9y
dEVycm9yOiAyMCwKKyAgICAgICAgICAgIFVSTE1pc21hdGNoRXJyb3I6IDIxLAorICAgICAgICAg
ICAgUXVvdGFFeGNlZWRlZEVycm9yOiAyMiwKKyAgICAgICAgICAgIFRpbWVvdXRFcnJvcjogMjMs
CisgICAgICAgICAgICBJbnZhbGlkTm9kZVR5cGVFcnJvcjogMjQsCisgICAgICAgICAgICBEYXRh
Q2xvbmVFcnJvcjogMjUsCisKKyAgICAgICAgICAgIEVuY29kaW5nRXJyb3I6IDAsCisgICAgICAg
ICAgICBOb3RSZWFkYWJsZUVycm9yOiAwLAorICAgICAgICAgICAgVW5rbm93bkVycm9yOiAwLAor
ICAgICAgICAgICAgQ29uc3RyYWludEVycm9yOiAwLAorICAgICAgICAgICAgRGF0YUVycm9yOiAw
LAorICAgICAgICAgICAgVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yOiAwLAorICAgICAgICAgICAg
UmVhZE9ubHlFcnJvcjogMCwKKyAgICAgICAgICAgIFZlcnNpb25FcnJvcjogMCwKKyAgICAgICAg
ICAgIE9wZXJhdGlvbkVycm9yOiAwLAorICAgICAgICAgICAgTm90QWxsb3dlZEVycm9yOiAwCisg
ICAgICAgIH07CisKKyAgICAgICAgaWYgKCEobmFtZSBpbiBuYW1lX2NvZGVfbWFwKSkgeworICAg
ICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkVycm9yKCdUZXN0IGJ1ZzogdW5yZWNvZ25pemVk
IERPTUV4Y2VwdGlvbiBjb2RlICInICsgY29kZSArICciIHBhc3NlZCB0byBhc3NlcnRfdGhyb3dz
KCknKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciByZXF1aXJlZF9wcm9wcyA9IHsgY29kZTog
bmFtZV9jb2RlX21hcFtuYW1lXSB9OworCisgICAgICAgIGlmIChyZXF1aXJlZF9wcm9wcy5jb2Rl
ID09PSAwIHx8CisgICAgICAgICAgICh0eXBlb2YgZSA9PSAib2JqZWN0IiAmJgorICAgICAgICAg
ICAgIm5hbWUiIGluIGUgJiYKKyAgICAgICAgICAgIGUubmFtZSAhPT0gZS5uYW1lLnRvVXBwZXJD
YXNlKCkgJiYKKyAgICAgICAgICAgIGUubmFtZSAhPT0gIkRPTUV4Y2VwdGlvbiIpKSB7CisgICAg
ICAgICAgICAvLyBOZXcgc3R5bGUgZXhjZXB0aW9uOiBhbHNvIHRlc3QgdGhlIG5hbWUgcHJvcGVy
dHkuCisgICAgICAgICAgICByZXF1aXJlZF9wcm9wcy5uYW1lID0gbmFtZTsKKyAgICAgICAgfQor
CisgICAgICAgIC8vV2UnZCBsaWtlIHRvIHRlc3QgdGhhdCBlIGluc3RhbmNlb2YgdGhlIGFwcHJv
cHJpYXRlIGludGVyZmFjZSwKKyAgICAgICAgLy9idXQgd2UgY2FuJ3QsIGJlY2F1c2Ugd2UgZG9u
J3Qga25vdyB3aGF0IHdpbmRvdyBpdCB3YXMgY3JlYXRlZAorICAgICAgICAvL2luLiAgSXQgbWln
aHQgYmUgYW4gaW5zdGFuY2VvZiB0aGUgYXBwcm9wcmlhdGUgaW50ZXJmYWNlIG9uIHNvbWUKKyAg
ICAgICAgLy91bmtub3duIG90aGVyIHdpbmRvdy4gIFRPRE86IFdvcmsgYXJvdW5kIHRoaXMgc29t
ZWhvdz8KKworICAgICAgICBhc3NlcnQodHlwZW9mIGUgPT0gIm9iamVjdCIsCisgICAgICAgICAg
ICAgICAiYXNzZXJ0X3Rocm93cyIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgIiR7ZnVu
Y30gdGhyZXcgJHtlfSB3aXRoIHR5cGUgJHt0eXBlfSwgbm90IGFuIG9iamVjdCIsCisgICAgICAg
ICAgICAgICB7ZnVuYzpmdW5jLCBlOmUsIHR5cGU6dHlwZW9mIGV9KTsKKworICAgICAgICBmb3Ig
KHZhciBwcm9wIGluIHJlcXVpcmVkX3Byb3BzKSB7CisgICAgICAgICAgICBhc3NlcnQodHlwZW9m
IGUgPT0gIm9iamVjdCIgJiYgcHJvcCBpbiBlICYmIGVbcHJvcF0gPT0gcmVxdWlyZWRfcHJvcHNb
cHJvcF0sCisgICAgICAgICAgICAgICAgICAgImFzc2VydF90aHJvd3MiLCBkZXNjcmlwdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAiJHtmdW5jfSB0aHJldyAke2V9IHRoYXQgaXMgbm90IGEgRE9N
RXhjZXB0aW9uICIgKyBjb2RlICsgIjogcHJvcGVydHkgJHtwcm9wfSBpcyBlcXVhbCB0byAke2Fj
dHVhbH0sIGV4cGVjdGVkICR7ZXhwZWN0ZWR9IiwKKyAgICAgICAgICAgICAgICAgICB7ZnVuYzpm
dW5jLCBlOmUsIHByb3A6cHJvcCwgYWN0dWFsOmVbcHJvcF0sIGV4cGVjdGVkOnJlcXVpcmVkX3By
b3BzW3Byb3BdfSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8qCisgKiBSZXR1cm4gdHJ1ZSBp
ZiBvYmplY3QgaXMgcHJvYmFibHkgYSBOb2RlIG9iamVjdC4KKyAqLworZnVuY3Rpb24gaXNfbm9k
ZShvYmplY3QpCit7CisgICAgLy8gSSB1c2UgZHVjay10eXBpbmcgaW5zdGVhZCBvZiBpbnN0YW5j
ZW9mLCBiZWNhdXNlCisgICAgLy8gaW5zdGFuY2VvZiBkb2Vzbid0IHdvcmsgaWYgdGhlIG5vZGUg
aXMgZnJvbSBhbm90aGVyIHdpbmRvdyAobGlrZSBhbgorICAgIC8vIGlmcmFtZSdzIGNvbnRlbnRX
aW5kb3cpOgorICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL0J1Z3MvUHVibGljL3Nob3dfYnVnLmNn
aT9pZD0xMjI5NQorICAgIHRyeSB7CisgICAgICAgIHZhciBoYXNfbm9kZV9wcm9wZXJ0aWVzID0g
KCJub2RlVHlwZSIgaW4gb2JqZWN0ICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJub2RlTmFtZSIgaW4gb2JqZWN0ICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJub2RlVmFsdWUiIGluIG9iamVjdCAmJgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiY2hpbGROb2RlcyIgaW4gb2JqZWN0KTsKKyAgICB9IGNhdGNoIChlKSB7Cisg
ICAgICAgIC8vIFdlJ3JlIHByb2JhYmx5IGNyb3NzLW9yaWdpbiwgd2hpY2ggbWVhbnMgd2UgYXJl
bid0IGEgbm9kZQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKGhhc19u
b2RlX3Byb3BlcnRpZXMpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG9iamVjdC5ub2Rl
VHlwZTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgLy8gVGhlIG9iamVjdCBp
cyBwcm9iYWJseSBOb2RlLnByb3RvdHlwZSBvciBhbm90aGVyIHByb3RvdHlwZQorICAgICAgICAg
ICAgLy8gb2JqZWN0IHRoYXQgaW5oZXJpdHMgZnJvbSBpdCwgYW5kIG5vdCBhIE5vZGUgaW5zdGFu
Y2UuCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordmFyIHJlcGxhY2VtZW50cyA9
IHsKKyAgICAiMCI6ICIwIiwKKyAgICAiMSI6ICJ4MDEiLAorICAgICIyIjogIngwMiIsCisgICAg
IjMiOiAieDAzIiwKKyAgICAiNCI6ICJ4MDQiLAorICAgICI1IjogIngwNSIsCisgICAgIjYiOiAi
eDA2IiwKKyAgICAiNyI6ICJ4MDciLAorICAgICI4IjogImIiLAorICAgICI5IjogInQiLAorICAg
ICIxMCI6ICJuIiwKKyAgICAiMTEiOiAidiIsCisgICAgIjEyIjogImYiLAorICAgICIxMyI6ICJy
IiwKKyAgICAiMTQiOiAieDBlIiwKKyAgICAiMTUiOiAieDBmIiwKKyAgICAiMTYiOiAieDEwIiwK
KyAgICAiMTciOiAieDExIiwKKyAgICAiMTgiOiAieDEyIiwKKyAgICAiMTkiOiAieDEzIiwKKyAg
ICAiMjAiOiAieDE0IiwKKyAgICAiMjEiOiAieDE1IiwKKyAgICAiMjIiOiAieDE2IiwKKyAgICAi
MjMiOiAieDE3IiwKKyAgICAiMjQiOiAieDE4IiwKKyAgICAiMjUiOiAieDE5IiwKKyAgICAiMjYi
OiAieDFhIiwKKyAgICAiMjciOiAieDFiIiwKKyAgICAiMjgiOiAieDFjIiwKKyAgICAiMjkiOiAi
eDFkIiwKKyAgICAiMzAiOiAieDFlIiwKKyAgICAiMzEiOiAieDFmIiwKKyAgICAiMHhmZmZkIjog
InVmZmZkIiwKKyAgICAiMHhmZmZlIjogInVmZmZlIiwKKyAgICAiMHhmZmZmIjogInVmZmZmIiwK
K307CisKK2Z1bmN0aW9uIGV4dGVuZChhcnJheSwgaXRlbXMpCit7CisgICAgQXJyYXkucHJvdG90
eXBlLnB1c2guYXBwbHkoYXJyYXksIGl0ZW1zKTsKK30KKworZnVuY3Rpb24gZ2V0X3NjcmlwdF91
cmwoKQoreworICAgIHJldHVybiAiLyI7Cit9CisKKy8qCisgKiBSZXR1cm4gYSBzdHJpbmcgdHJ1
bmNhdGVkIHRvIHRoZSBnaXZlbiBsZW5ndGgsIHdpdGggLi4uIGFkZGVkIGF0IHRoZSBlbmQKKyAq
IGlmIGl0IHdhcyBsb25nZXIuCisgKi8KK2Z1bmN0aW9uIHRydW5jYXRlKHMsIGxlbikKK3sKKyAg
ICBpZiAocy5sZW5ndGggPiBsZW4pIHsKKyAgICAgICAgcmV0dXJuIHMuc3Vic3RyaW5nKDAsIGxl
biAtIDMpICsgIi4uLiI7CisgICAgfQorICAgIHJldHVybiBzOworfQorCitmdW5jdGlvbiBhc3Nl
cnRfdHJ1ZShhY3R1YWwsIGRlc2NyaXB0aW9uKQoreworICAgIGFzc2VydChhY3R1YWwgPT09IHRy
dWUsICJhc3NlcnRfdHJ1ZSIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJleHBlY3RlZCB0cnVlIGdvdCAke2FjdHVhbH0iLCB7YWN0dWFsOmFjdHVhbH0pOworfQor
CitmdW5jdGlvbiBhc3NlcnRfZmFsc2UoYWN0dWFsLCBkZXNjcmlwdGlvbikKK3sKKyAgICBhc3Nl
cnQoYWN0dWFsID09PSBmYWxzZSwgImFzc2VydF9mYWxzZSIsIGRlc2NyaXB0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgZmFsc2UgZ290ICR7YWN0dWFsfSIsIHth
Y3R1YWw6YWN0dWFsfSk7Cit9CisKK2Z1bmN0aW9uIHRlc3QodHN0LCBuYW1lKSB7CisgIHRyeSB7
CisgICAgdHN0KCk7CisgIH0gY2F0Y2ggKGUpIHsKKyAgICBpZiAoIVBhaW50V29ya2xldEdsb2Jh
bFNjb3BlLmVycm9ycykKKyAgICAgIFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmVycm9ycyA9IFtd
OworICAgICAgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuZXJyb3JzLnB1c2goeyBuYW1lOiBuYW1l
LCBlcnJvcjogZS5tZXNzYWdlIH0pOworICB9CisgIFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmhh
c1J1bkFUZXN0ID0gdHJ1ZTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1
c3RvbS1wYWludC9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy1jdXN0b20tcGFpbnQvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFiMTNk
NDMyOTBmODM0ZDBmOWE2OTkzMDUwMGE2N2FjMTViZjVlZGYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpz
CkBAIC0wLDAgKzEsMjMgQEAKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CisKKy8vIEltcG9ydHMgY29kZSBpbnRvIGEgd29ya2xldCwgd2l0aCBzb21l
IGhlbHBlcnMuCithc3luYyBmdW5jdGlvbiBpbXBvcnRXb3JrbGV0KHdvcmtsZXQsIGNvZGUpIHsK
KyAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCgicmVzb3VyY2VzL3Rlc3RoYXJuZXNzLXdv
cmtsZXQuanMiKTsKKyAgY29uc3QgZmluYWxDb2RlID0gKGF3YWl0IHJlc3BvbnNlLnRleHQoKSkg
KyBjb2RlOworCisgIGxldCB1cmw7CisgIC8vIEZJWE1FOiBUaGlzIGlzIHRlbXBvcmFyeSwgdW50
aWwgd2Ugc3VwcG9ydCBsb2FkaW5nIHNjcmlwdHMgYnkgdXJsCisgIGlmICh3aW5kb3cuY2hyb21l
KSB7CisgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtmaW5hbENvZGVdLCB7dHlwZTogJ3RleHQv
amF2YXNjcmlwdCd9KTsKKyAgICB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpOworICB9
IGVsc2UgeworICAgIHVybCA9IGZpbmFsQ29kZTsKKyAgfQorCisgIHdvcmtsZXQuYWRkTW9kdWxl
KHVybCk7CisgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7CisgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9LCAzMDAwKTsKKyAg
fQorfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3dvcmts
ZXQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC93b3Jr
bGV0LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGI0MmI2MmRhMTNlZGE4MTk2MTBiMzE5N2I0
ZTQ1YTU0NzNiZGNmMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1
c3RvbS1wYWludC93b3JrbGV0LWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxNiBAQAorPCFET0NU
WVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBleHBlcmltZW50YWw6Q1NTUGFpbnRp
bmdBUElFbmFibGVkPXRydWUgXSAtLT4KKworPGNhbnZhcyBpZD0icGFpbnQiIHdpZHRoPSIxNTBw
eCIgaGVpZ2h0PSIxNTBweCIgPjwvY2FudmFzPgorCis8c2NyaXB0IGlkPSJjb2RlIj4KK3ZhciBj
YW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFpbnQnKTsKK3ZhciBjdHggPSBjYW52
YXMuZ2V0Q29udGV4dCgnMmQnKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspeworICBm
b3IgKHZhciBqID0gMDsgaiA8IDY7IGorKyl7CisgICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2IoJyAr
IE1hdGguZmxvb3IoMjU1IC0gNDIuNSAqIGkpICsgJywnICsKKyAgICAgICAgICAgICAgICAgICAg
IE1hdGguZmxvb3IoMjU1IC0gNDIuNSAqIGopICsgJywwKSc7CisgICAgY3R4LmZpbGxSZWN0KGog
KiAyNSwgaSAqIDI1LCAyNSwgMjUpOworICB9Cit9Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC93b3JrbGV0Lmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvd29ya2xldC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjZmY5MzU2
ODUzNDIwNGEyYWEwY2M2ZThkOWU4OTQ0MDEyZTJlNjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvd29ya2xldC5odG1sCkBAIC0wLDAgKzEsNDIg
QEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFs
OkNTU1BhaW50aW5nQVBJRW5hYmxlZD10cnVlIF0gLS0+Cis8bWV0YSBuYW1lPSJhdXRob3IiIHRp
dGxlPSJKdXN0aW4gTWljaGF1ZCIgaHJlZj0ibWFpbHRvOmp1c3Rpbl9taWNoYXVkQHdlYmtpdC5v
cmciPgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJUZXN0IHdvcmtsZXQgYWRkTW9kdWxl
IGFuZCBnbG9iYWwgb2JqZWN0Ij4KKzxsaW5rIHJlbD0iaGVscCIgY29udGVudD0iaHR0cHM6Ly9k
cmFmdHMuY3NzLWhvdWRpbmkub3JnL2Nzcy1wYWludC1hcGktMS8iPgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisKKzxzdHlsZT4KKyAgI3BhaW50IHsK
KyAgICBiYWNrZ3JvdW5kLWltYWdlOiBwYWludChteS1wYWludCk7CisgICAgd2lkdGg6IDE1MHB4
OworICAgIGhlaWdodDogMTUwcHg7CisgIH0KKzwvc3R5bGU+CisKKzxkaXYgaWQ9InBhaW50Ij48
L2Rpdj4KKworPHNjcmlwdCBpZD0iY29kZSIgdHlwZT0idGV4dC93b3JrbGV0Ij4KK2NsYXNzIE15
UGFpbnQgeworICBwYWludChjdHgsIGdlb20sIHByb3BlcnRpZXMpIHsKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDY7IGkrKyl7CisgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDY7IGorKyl7Cisg
ICAgICAgIGN0eC5maWxsU3R5bGUgPSAncmdiKCcgKyBNYXRoLmZsb29yKDI1NSAtIDQyLjUgKiBp
KSArICcsJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5mbG9vcigyNTUgLSA0Mi41
ICogaikgKyAnLDApJzsKKyAgICAgICAgY3R4LmZpbGxSZWN0KGogKiAyNSwgaSAqIDI1LCAyNSwg
MjUpOworICAgICAgfQorICAgIH0KKyAgICBjb25zb2xlLmxvZygiSGVsbG8gZnJvbSBwYWludCBj
YWxsYmFjayEiKTsKKyAgICBhc3NlcnRfZ3JlYXRlcl90aGFuKGV2YWwoImRldmljZVBpeGVsUmF0
aW8iKSwgMCk7CisgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnUmVmZXJlbmNlRXJyb3InfSwg
ZnVuY3Rpb24gKCkgeyBldmFsKCJ3aW5kb3ciKTsgfSk7CisKKyAgICBjb25zdCBwcm9taXNlID0g
bmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geyBjb25zb2xlLmxvZygiSW4gcHJvbWlz
ZSIpOyByZXNvbHZlKCkgfSk7CisgICAgcHJvbWlzZS50aGVuKCgpID0+IGNvbnNvbGUubG9nKCJQ
cm9taXNlIHdhcyByZXNvbHZlZCIpKTsKKyAgfQorfQorY29uc29sZS5sb2coIkhlbGxvIGZyb20g
cGFpbnQgd29ya2xldCEiKTsKK3JlZ2lzdGVyUGFpbnQoJ215LXBhaW50JywgTXlQYWludCk7Citj
b25zb2xlLmxvZyhXaW5kb3cpOyAvLyB0ZXN0IHRoYXQgdW5jYXVnaHQgZXhjZXB0aW9ucyBkbyBu
b3QgYWZmZWN0IHJlZ2lzdGVyZWQgcGFpbnQgY2FsbGJhY2tzCis8L3NjcmlwdD4KKworPHNjcmlw
dD4KK2ltcG9ydFdvcmtsZXQoQ1NTLnBhaW50V29ya2xldCwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2NvZGUnKS50ZXh0Q29udGVudCk7Cis8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353560</attachid>
            <date>2018-10-31 17:11:59 -0700</date>
            <delta_ts>2018-11-01 14:14:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190979-20181031171152.patch</filename>
            <type>text/plain</type>
            <size>189107</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjQ4NmIwMmU1NmRmOTIz
MGM2MTUyMTYzZWI3MmZkYzA0OTBmMzgxNS4uZjI0NTI5MzNmZjAwMzQ0OGRlYzEzNmRiMWJmZjQy
ODVmYmMyNWRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MyBAQAorMjAxOC0xMC0yOSAgSnVz
dGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIG5l
dyBnbG9iYWwgb2JqZWN0IGFuZCBwcmVsaW1pbmFyeSBXb3JrbGV0cyBzdXBwb3J0IGZvciBDU1Mg
cGFpbnRpbmcgYXBpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTA5NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUZXN0OiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvd29ya2xldC5odG1sCisKKyAgICAgICAg
QWRkIGEgbmV3IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgYW5kIGdsb2JhbCBvYmplY3QgdG8gcnVu
IHdvcmtsZXRzIGluLiBUaGlzIGlzIG1vc3RseSBjb3B5K3Bhc3RlCisgICAgICAgIGZyb20gV29y
a2VycywgYnV0IHdpdGhvdXQgYW55IG9mIHRoZSB0aHJlYWRpbmcuIFdvcmtsZXQuYWRkTW9kdWxl
IGRvZXMgbm90IHlldCBzdXBwb3J0IGxvYWRpbmcgc2NyaXB0cworICAgICAgICBvciBkb2luZyBj
cm9zcyBvcmlnaW4gY2hlY2tpbmcuIFRoZXJlIGFyZSBxdWl0ZSBhIGZldyBwYXJ0cyBvZiB0aGUg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCBhcGkgdGhhdCBhcmUKKyAgICAgICAgbGVmdCBhcyBBU1NF
UlRfTk9UX1JFQUNIRUQoKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2Jq
ZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0IGNvbnN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20u
Y3BwLgorICAgICAgICAoV2ViQ29yZTo6SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6dmlzaXRB
ZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNQYWludFdvcmtsZXRHbG9i
YWxTY29wZTo6cmVnaXN0ZXJQYWludCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrbGV0
R2xvYmFsU2NvcGVCYXNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtsZXRH
bG9iYWxTY29wZUJhc2U6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZSk6CisgICAgICAgIChXZWJD
b3JlOjpKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6Y2xlYXJET01HdWFyZGVkT2JqZWN0
cyk6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnZpc2l0Q2hp
bGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpkZXN0
cm95KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtsZXRHbG9i
YWxTY29wZUJhc2U6OnN1cHBvcnRzUmljaFNvdXJjZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6
SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzaG91bGRJbnRlcnJ1cHRTY3JpcHQpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzaG91bGRJbnRlcnJ1cHRTY3Jp
cHRCZWZvcmVUaW1lb3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3Bl
QmFzZTo6amF2YVNjcmlwdFJ1bnRpbWVGbGFncyk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToK
KyAgICAgICAgKFdlYkNvcmU6OnRvSlNXb3JrbGV0R2xvYmFsU2NvcGUpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6d3JhcHBlZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnByb3h5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6Y3JlYXRlU3RydWN0dXJlKToK
KyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFN0
YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29w
ZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjU3RhdGVGcm9tV29ya2xldEdsb2JhbFNjb3BlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKElzRE9NR2xvYmFsT2JqZWN0KToKKyAgICAgICAg
KFNob3VsZFVzZUdsb2JhbE9iamVjdFByb3RvdHlwZSk6CisgICAgICAgIChHZW5lcmF0ZUhlYWRl
cik6CisgICAgICAgIChHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZ0ZvckV4
cG9zZWQpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGw6CisgICAgICAgICogY3NzL0NTU1BhaW50
SW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYWludEltYWdlVmFsdWU6Omlt
YWdlKToKKyAgICAgICAgKiBjc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRPTUNTU1BhaW50V29ya2xldDo6ZW5zdXJlUGFpbnRXb3JrbGV0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTUNTU1BhaW50V29ya2xldDo6ZW5zdXJlUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9ET01DU1NQYWludFdvcmtsZXQuaDoKKyAgICAg
ICAgKiBjc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmlkbDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVuc3VyZUNTU1BhaW50V29ya2xldCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVuc3VyZUNTU1BhaW50V29ya2xldEds
b2JhbFNjb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpnZXRDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSk6CisgICAg
ICAgICogZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbjoKKyAgICAgICAgKiBkb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0Ojp2bSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpleGVj
U3RhdGUpOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojppc1dvcmtsZXRHbG9iYWxTY29wZSBj
b25zdCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dlckFnZW50OjppbmplY3Rl
ZFNjcmlwdEZvckV2YWwpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtl
clJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1lQWdlbnQ6
OmluamVjdGVkU2NyaXB0Rm9yRXZhbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3Vz
dG9tUGFpbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludEltYWdlOjpD
dXN0b21QYWludEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50SW1hZ2U6OmRv
Q3VzdG9tUGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1h
Z2UuaDoKKyAgICAgICAgKiB3b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHA6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5j
cHAuCisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludFdvcmtsZXRH
bG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6
ZGV2aWNlUGl4ZWxSYXRpbyk6CisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxT
Y29wZTo6YWRkUmVnaXN0ZXJlZFBhaW50KToKKyAgICAgICAgKiB3b3JrbGV0cy9QYWludFdvcmts
ZXRHbG9iYWxTY29wZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50
V29ya2xldEdsb2JhbFNjb3BlLmguCisgICAgICAgICogd29ya2xldHMvUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUuaWRsLgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXQuY3BwOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
LgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtsZXQ6OldvcmtsZXQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldDo6YWRkTW9kdWxl
KToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwLgorICAgICAgICAqIHdvcmts
ZXRzL1dvcmtsZXQuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUuaWRsLgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRDb25zb2xl
Q2xpZW50LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93
b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0
Q29uc29sZUNsaWVudDo6V29ya2xldENvbnNvbGVDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2xldENvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtsZXRDb25zb2xlQ2xpZW50Ojpjb3VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrbGV0Q29uc29sZUNsaWVudDo6dGltZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0
Q29uc29sZUNsaWVudDo6dGltZUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29s
ZUNsaWVudDo6cHJvZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29sZUNsaWVu
dDo6cHJvZmlsZUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29sZUNsaWVudDo6
dGFrZUhlYXBTbmFwc2hvdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29sZUNsaWVu
dDo6dGltZVN0YW1wKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRDb25zb2xlQ2xpZW50Ojpy
ZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldENvbnNvbGVDbGllbnQ6OnJlY29yZEVu
ZCk6CisgICAgICAgICogd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuaDogQWRkZWQuCisg
ICAgICAgICogd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxTY29wZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6On5Xb3JrbGV0R2xvYmFsU2NvcGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpldmFsdWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmlzSlNFeGVjdXRpb25Gb3JiaWRkZW4gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpkaXNhYmxlRXZhbCk6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmRpc2FibGVXZWJBc3NlbWJs
eSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmNvbXBsZXRlVVJMIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6bG9nRXhjZXB0aW9u
VG9Db25zb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29u
c29sZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjphZGRN
ZXNzYWdlKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmlzUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpp
ZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6
c2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6anNSdW50aW1l
RmxhZ3MgY29uc3QpOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3Jr
bGV0R2xvYmFsU2NvcGUuaWRsOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlLmlkbC4KKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0U2Ny
aXB0Q29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlw
dENvbnRyb2xsZXI6OldvcmtsZXRTY3JpcHRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjp+V29ya2xldFNjcmlwdENvbnRyb2xsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmZvcmJpZEV4ZWN1dGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6aXNFeGVjdXRpb25G
b3JiaWRkZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xs
ZXI6OmRpc2FibGVFdmFsKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRTY3JpcHRDb250cm9s
bGVyOjpkaXNhYmxlV2ViQXNzZW1ibHkpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlw
dENvbnRyb2xsZXI6OmluaXRTY3JpcHRXaXRoU3ViY2xhc3MpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtsZXRTY3JpcHRDb250cm9sbGVyOjpzZXRFeGNlcHRpb24pOgorICAgICAgICAqIHdvcmtsZXRz
L1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V29y
a2xldFNjcmlwdENvbnRyb2xsZXI6OndvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OnZtKToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0SWZOZWVkZWQpOgorCiAyMDE4
LTEwLTI2ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjM3NDU4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRl
eCAxMjliNmM1NDkzMmY5ZTRlODg0NjZkY2Y5MThjYmQ2ZTE3NDY0MmQ1Li5jNmZlMjM1ZTA5YzEz
M2M5OWRlMTMyN2EyODBhYzUzYTEwMjc5NDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTQz
LDYgKzE0Myw3IEBAIHNldChXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJD
T1JFX0RJUn0vd29ya2Vycy9zZXJ2aWNlIgogICAgICIke1dFQkNPUkVfRElSfS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dCIKICAgICAiJHtXRUJDT1JFX0RJUn0vd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ciIKKyAgICAiJHtXRUJDT1JFX0RJUn0vd29ya2xldHMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3ht
bCIKICAgICAiJHtXRUJDT1JFX0RJUn0veG1sL3BhcnNlciIKICAgICAiJHtERVJJVkVEX1NPVVJD
RVNfV0VCQ09SRV9ESVJ9IgpAQCAtNTM3LDcgKzUzOCw2IEBAIHNldChXZWJDb3JlX05PTl9TVkdf
SURMX0ZJTEVTCiAgICAgY3NzL0NTU01lZGlhUnVsZS5pZGwKICAgICBjc3MvQ1NTTmFtZXNwYWNl
UnVsZS5pZGwKICAgICBjc3MvQ1NTUGFpbnRDYWxsYmFjay5pZGwKLSAgICBjc3MvQ1NTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUuaWRsCiAgICAgY3NzL0NTU1BhZ2VSdWxlLmlkbAogICAgIGNzcy9D
U1NSdWxlLmlkbAogICAgIGNzcy9DU1NSdWxlTGlzdC5pZGwKQEAgLTkwNiw2ICs5MDYsMTAgQEAg
c2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICB3b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlclVwZGF0ZVZpYUNhY2hlLmlkbAogICAgIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyV2luZG93Q2xpZW50LmlkbAogCisgICAgd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUuaWRsCisgICAgd29ya2xldHMvV29ya2xldC5pZGwKKyAgICB3b3JrbGV0cy9Xb3JrbGV0R2xv
YmFsU2NvcGUuaWRsCisKICAgICB4bWwvRE9NUGFyc2VyLmlkbAogICAgIHhtbC9YTUxIdHRwUmVx
dWVzdC5pZGwKICAgICB4bWwvWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5pZGwKQEAgLTE2ODQs
NiArMTY4OCw4IEBAIHNldChXSU5ET1dfQ09OU1RSVUNUT1JTX0ZJTEUgJHtERVJJVkVEX1NPVVJD
RVNfV0VCQ09SRV9ESVJ9L0RPTVdpbmRvd0NvbnN0cnVjdG9yCiBzZXQoV09SS0VSR0xPQkFMU0NP
UEVfQ09OU1RSVUNUT1JTX0ZJTEUgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L1dvcmtl
ckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCkKIHNldChERURJQ0FURURXT1JLRVJHTE9CQUxT
Q09QRV9DT05TVFJVQ1RPUlNfRklMRSAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsKQogc2V0KFNFUlZJQ0VXT1JL
RVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSAke0RFUklWRURfU09VUkNFU19XRUJDT1JF
X0RJUn0vU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCkKK3NldChXT1JL
TEVUR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09S
RV9ESVJ9L1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwpCitzZXQoUEFJTlRXT1JL
TEVUR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09S
RV9ESVJ9L1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCkKIAogV0VCS0lU
X0ZSQU1FV09SS19ERUNMQVJFKFdlYkNvcmUpCiBXRUJLSVRfSU5DTFVERV9DT05GSUdfRklMRVNf
SUZfRVhJU1RTKCkKQEAgLTE4NjMsNyArMTg2OSw5IEBAIEdFTkVSQVRFX0JJTkRJTkdTKFdlYkNv
cmVCaW5kaW5ncwogICAgICAgICAtLXdpbmRvd0NvbnN0cnVjdG9yc0ZpbGUgJHtXSU5ET1dfQ09O
U1RSVUNUT1JTX0ZJTEV9CiAgICAgICAgIC0td29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNG
aWxlICR7V09SS0VSR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEV9CiAgICAgICAgIC0tZGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlICR7REVESUNBVEVEV09SS0VS
R0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEV9Ci0gICAgICAgIC0tc2VydmljZVdvcmtlckds
b2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSAke1NFUlZJQ0VXT1JLRVJHTE9CQUxTQ09QRV9DT05T
VFJVQ1RPUlNfRklMRX0pCisgICAgICAgIC0tc2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3JzRmlsZSAke1NFUlZJQ0VXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRX0K
KyAgICAgICAgLS13b3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlICR7V09SS0xFVEdM
T0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFfQorICAgICAgICAtLXBhaW50V29ya2xldEdsb2Jh
bFNjb3BlQ29uc3RydWN0b3JzRmlsZSAke1BBSU5UV09SS0xFVEdMT0JBTFNDT1BFX0NPTlNUUlVD
VE9SU19GSUxFfSkKIAogR0VORVJBVEVfQklORElOR1MoV2ViQ29yZVRlc3RTdXBwb3J0QmluZGlu
Z3MKICAgICBPVVRQVVRfU09VUkNFIFdlYkNvcmVUZXN0U3VwcG9ydF9TT1VSQ0VTCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA2NjM5MGQ0OWZiMzlkNmM0YjJjNDc2MjYwNWQyNjA1
ZmIyYjViMTBkLi44ZTkwMTcxNzAzM2U1YzYyZThhYzgyZTBjN2Y2YTk3NTIwM2VjZjEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTg2LDYgKzg2LDcgQEAgVlBBVEggPSBcCiAg
ICAgJChXZWJDb3JlKS93ZWJzb2NrZXRzIFwKICAgICAkKFdlYkNvcmUpL3dvcmtlcnMgXAogICAg
ICQoV2ViQ29yZSkvd29ya2Vycy9zZXJ2aWNlIFwKKyAgICAkKFdlYkNvcmUpL3dvcmtsZXRzIFwK
ICAgICAkKFdlYkNvcmUpL3htbCBcCiAjCiAKQEAgLTQ1Miw3ICs0NTMsNiBAQCBKU19CSU5ESU5H
X0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9jc3MvQ1NTTmFtZXNwYWNlUnVsZS5pZGwgXAogICAg
ICQoV2ViQ29yZSkvY3NzL0NTU1BhZ2VSdWxlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9jc3MvQ1NT
UGFpbnRDYWxsYmFjay5pZGwgXAotICAgICQoV2ViQ29yZSkvY3NzL0NTU1BhaW50V29ya2xldEds
b2JhbFNjb3BlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9jc3MvQ1NTUnVsZS5pZGwgXAogICAgICQo
V2ViQ29yZSkvY3NzL0NTU1J1bGVMaXN0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9jc3MvQ1NTU3R5
bGVEZWNsYXJhdGlvbi5pZGwgXApAQCAtMTAyNCw2ICsxMDI0LDkgQEAgSlNfQklORElOR19JRExT
ID0gXAogICAgICQoV2ViQ29yZSkvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb24uaWRsIFwKICAgICAkKFdlYkNvcmUpL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
VXBkYXRlVmlhQ2FjaGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyV2luZG93Q2xpZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS93b3JrbGV0cy9QYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5pZGwgXAorICAgICQoV2ViQ29yZSkvd29ya2xldHMvV29ya2xl
dC5pZGwgXAorICAgICQoV2ViQ29yZSkvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmlkbCBc
CiAgICAgJChXZWJDb3JlKS94bWwvRE9NUGFyc2VyLmlkbCBcCiAgICAgJChXZWJDb3JlKS94bWwv
WE1MSHR0cFJlcXVlc3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL3htbC9YTUxIdHRwUmVxdWVzdEV2
ZW50VGFyZ2V0LmlkbCBcCkBAIC0xMTU2LDYgKzExNTksNyBAQCBhbGwgOiBcCiAgICAgJChTVVBQ
TEVNRU5UQUxfREVQRU5ERU5DWV9GSUxFKSBcCiAgICAgJChXSU5ET1dfQ09OU1RSVUNUT1JTX0ZJ
TEUpIFwKICAgICAkKFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFKSBcCisgICAg
JChXT1JLTEVUR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUpIFwKICAgICAkKEpTX0RPTV9I
RUFERVJTKSBcCiAgICAgJChXRUJfRE9NX0hFQURFUlMpIFwKICAgICBcCkBAIC0xNTA0LDYgKzE1
MDgsNyBAQCBJRExfSU5DTFVERVMgPSBcCiAgICAgJChXZWJDb3JlKS9zdmcgXAogICAgICQoV2Vi
Q29yZSkvdGVzdGluZyBcCiAgICAgJChXZWJDb3JlKS93b3JrZXJzIFwKKyAgICAkKFdlYkNvcmUp
L3dvcmtsZXRzIFwKICAgICAkKFdlYkNvcmUpL3htbAogCiBJRExfQ09NTU9OX0FSR1MgPSAkKElE
TF9JTkNMVURFUzolPS0taW5jbHVkZSAlKSAtLXdyaXRlLWRlcGVuZGVuY2llcyAtLW91dHB1dERp
ciAuCkBAIC0xNTE2LDYgKzE1MjEsOCBAQCBXSU5ET1dfQ09OU1RSVUNUT1JTX0ZJTEUgPSAuL0RP
TVdpbmRvd0NvbnN0cnVjdG9ycy5pZGwKIFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19G
SUxFID0gLi9Xb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKIERFRElDQVRFRFdPUktF
UkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFID0gLi9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZUNvbnN0cnVjdG9ycy5pZGwKIFNFUlZJQ0VXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RP
UlNfRklMRSA9IC4vU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbAorV09S
S0xFVEdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFID0gLi9Xb3JrbGV0R2xvYmFsU2NvcGVD
b25zdHJ1Y3RvcnMuaWRsCitQQUlOVFdPUktMRVRHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklM
RSA9IC4vUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCiBJRExfRklMRVNf
VE1QID0gLi9pZGxfZmlsZXMudG1wCiBJRExfQVRUUklCVVRFU19GSUxFID0gJChXZWJDb3JlKS9i
aW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgogCkBAIC0xNTI4LDEwICsxNTM1LDEw
IEBAIGVuZGVmCiAKICQoU1VQUExFTUVOVEFMX01BS0VGSUxFX0RFUFMpIDogJChQUkVQUk9DRVNT
X0lETFNfU0NSSVBUUykgJChKU19CSU5ESU5HX0lETFMpICQoUExBVEZPUk1fRkVBVFVSRV9ERUZJ
TkVTKSBEZXJpdmVkU291cmNlcy5tYWtlCiAJJChmb3JlYWNoIGYsJChKU19CSU5ESU5HX0lETFMp
LEBlY2hvICQoZik+PiQoSURMX0ZJTEVTX1RNUCkkKE5MKSkKLQkkKFBFUkwpICQoV2ViQ29yZSkv
YmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGwgLS1kZWZpbmVzICIkKEZFQVRVUkVf
QU5EX1BMQVRGT1JNX0RFRklORVMpICQoQURESVRJT05BTF9JRExfREVGSU5FUykgTEFOR1VBR0Vf
SkFWQVNDUklQVCIgLS1pZGxGaWxlc0xpc3QgJChJRExfRklMRVNfVE1QKSAtLXN1cHBsZW1lbnRh
bERlcGVuZGVuY3lGaWxlICQoU1VQUExFTUVOVEFMX0RFUEVOREVOQ1lfRklMRSkgLS13aW5kb3dD
b25zdHJ1Y3RvcnNGaWxlICQoV0lORE9XX0NPTlNUUlVDVE9SU19GSUxFKSAtLXdvcmtlckdsb2Jh
bFNjb3BlQ29uc3RydWN0b3JzRmlsZSAkKFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19G
SUxFKSAtLWRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSAkKERFRElD
QVRFRFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFKSAtLXNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgJChTRVJWSUNFV09SS0VSR0xPQkFMU0NPUEVfQ09O
U1RSVUNUT1JTX0ZJTEUpIC0tc3VwcGxlbWVudGFsTWFrZWZpbGVEZXBzICRACisJJChQRVJMKSAk
KFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsIC0tZGVmaW5lcyAi
JChGRUFUVVJFX0FORF9QTEFURk9STV9ERUZJTkVTKSAkKEFERElUSU9OQUxfSURMX0RFRklORVMp
IExBTkdVQUdFX0pBVkFTQ1JJUFQiIC0taWRsRmlsZXNMaXN0ICQoSURMX0ZJTEVTX1RNUCkgLS1z
dXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZSAkKFNVUFBMRU1FTlRBTF9ERVBFTkRFTkNZX0ZJTEUp
IC0td2luZG93Q29uc3RydWN0b3JzRmlsZSAkKFdJTkRPV19DT05TVFJVQ1RPUlNfRklMRSkgLS13
b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgJChXT1JLRVJHTE9CQUxTQ09QRV9DT05T
VFJVQ1RPUlNfRklMRSkgLS1kZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0Zp
bGUgJChERURJQ0FURURXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSkgLS1zZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlICQoU0VSVklDRVdPUktFUkdMT0JB
TFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFKSAtLXdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9y
c0ZpbGUgJChXT1JLTEVUR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUpIC0tcGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlICQoUEFJTlRXT1JLTEVUR0xPQkFMU0NPUEVf
Q09OU1RSVUNUT1JTX0ZJTEUpIC0tc3VwcGxlbWVudGFsTWFrZWZpbGVEZXBzICRACiAJJChERUxF
VEUpICQoSURMX0ZJTEVTX1RNUCkKIAotSlMlLmNwcCBKUyUuaCA6ICUuaWRsICQoSlNfQklORElO
R1NfU0NSSVBUUykgJChJRExfQVRUUklCVVRFU19GSUxFKSAkKFdJTkRPV19DT05TVFJVQ1RPUlNf
RklMRSkgJChXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSkgJChQTEFURk9STV9G
RUFUVVJFX0RFRklORVMpCitKUyUuY3BwIEpTJS5oIDogJS5pZGwgJChKU19CSU5ESU5HU19TQ1JJ
UFRTKSAkKElETF9BVFRSSUJVVEVTX0ZJTEUpICQoV0lORE9XX0NPTlNUUlVDVE9SU19GSUxFKSAk
KFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFKSAkKFdPUktMRVRHTE9CQUxTQ09Q
RV9DT05TVFJVQ1RPUlNfRklMRSkgJChQTEFURk9STV9GRUFUVVJFX0RFRklORVMpCiAJJChQRVJM
KSAkKFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGwgJChJRExf
Q09NTU9OX0FSR1MpIC0tZGVmaW5lcyAiJChGRUFUVVJFX0FORF9QTEFURk9STV9ERUZJTkVTKSAk
KEFERElUSU9OQUxfSURMX0RFRklORVMpIExBTkdVQUdFX0pBVkFTQ1JJUFQiIC0tZ2VuZXJhdG9y
IEpTIC0taWRsQXR0cmlidXRlc0ZpbGUgJChJRExfQVRUUklCVVRFU19GSUxFKSAtLXN1cHBsZW1l
bnRhbERlcGVuZGVuY3lGaWxlICQoU1VQUExFTUVOVEFMX0RFUEVOREVOQ1lfRklMRSkgJDwKIAog
LWluY2x1ZGUgJChTVVBQTEVNRU5UQUxfTUFLRUZJTEVfREVQUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXgg
YWViNjYyZWIyZjAwZTBjMmJkY2ViNWM3YWExZmU1NDBiMGMxYmI3Yy4uMTE4ZjU5MzYxN2Y5MWI4
ZTg1NGVlODc0MTlmMjIxNzYzYTYzMjEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTM4NSw3ICszODUs
NiBAQCBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRTdHJpbmdzLmNwcAogYmluZGluZ3MvanMvSlNE
T01Db252ZXJ0V2ViR0wuY3BwCiBiaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmNwcAogYmluZGlu
Z3MvanMvSlNEZXByZWNhdGVkQ1NTT01WYWx1ZUN1c3RvbS5jcHAKLWJpbmRpbmdzL2pzL0pTQ1NT
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwCiBiaW5kaW5ncy9qcy9KU0NhbGxiYWNr
RGF0YS5jcHAKIGJpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNw
cAogYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcApAQCAtNDQ2LDYgKzQ0
NSw3IEBAIGJpbmRpbmdzL2pzL0pTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcAogYmluZGluZ3MvanMv
SlNOb2RlTGlzdEN1c3RvbS5jcHAKIGJpbmRpbmdzL2pzL0pTT2Zmc2NyZWVuQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQ3VzdG9tLmNwcAogYmluZGluZ3MvanMvSlNQYWludFJlbmRlcmluZ0NvbnRl
eHQyREN1c3RvbS5jcHAKK2JpbmRpbmdzL2pzL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0
b20uY3BwCiBiaW5kaW5ncy9qcy9KU1BheW1lbnRNZXRob2RDaGFuZ2VFdmVudEN1c3RvbS5jcHAK
IGJpbmRpbmdzL2pzL0pTUGF5bWVudFJlc3BvbnNlQ3VzdG9tLmNwcAogYmluZGluZ3MvanMvSlNQ
ZXJmb3JtYW5jZUVudHJ5Q3VzdG9tLmNwcApAQCAtNDc4LDYgKzQ3OCw3IEBAIGJpbmRpbmdzL2pz
L0pTV2luZG93UHJveHkuY3BwCiBiaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5j
cHAKIGJpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwCiBiaW5kaW5ncy9q
cy9KU1dvcmtlck5hdmlnYXRvckN1c3RvbS5jcHAKK2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2Jh
bFNjb3BlQmFzZS5jcHAKIGJpbmRpbmdzL2pzL0pTWE1MRG9jdW1lbnRDdXN0b20uY3BwCiBiaW5k
aW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAogYmluZGluZ3MvanMvSlNYUGF0aE5T
UmVzb2x2ZXJDdXN0b20uY3BwCkBAIC02MTMsNyArNjE0LDYgQEAgY3NzL0NTU05hbWVkSW1hZ2VW
YWx1ZS5jcHAKIGNzcy9DU1NOYW1lc3BhY2VSdWxlLmNwcAogY3NzL0NTU1BhZ2VSdWxlLmNwcAog
Y3NzL0NTU1BhaW50SW1hZ2VWYWx1ZS5jcHAKLWNzcy9DU1NQYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5jcHAKIGNzcy9DU1NQZW5kaW5nU3Vic3RpdHV0aW9uVmFsdWUuY3BwCiBjc3MvQ1NTUHJpbWl0
aXZlVmFsdWUuY3BwCiBjc3MvQ1NTUHJvcGVydHkuY3BwCkBAIC0yMzcxLDYgKzIzNzEsMTIgQEAg
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKIHdvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAogd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKIAord29ya2xldHMvV29ya2xldC5jcHAK
K3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcAord29ya2xldHMvV29ya2xldEdsb2Jh
bFNjb3BlLmNwcAord29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCit3b3JrbGV0
cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKKwogeG1sL0RPTVBhcnNlci5jcHAKIHhtbC9O
YXRpdmVYUGF0aE5TUmVzb2x2ZXIuY3BwCiB4bWwvWE1MRXJyb3JzLmNwcApAQCAtMjQ4MCw3ICsy
NDg2LDkgQEAgSlNDU1NLZXlmcmFtZXNSdWxlLmNwcAogSlNDU1NNZWRpYVJ1bGUuY3BwCiBKU0NT
U05hbWVzcGFjZVJ1bGUuY3BwCiBKU0NTU1BhaW50Q2FsbGJhY2suY3BwCi1KU0NTU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlLmNwcAorSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKK0pTV29y
a2xldC5jcHAKK0pTV29ya2xldEdsb2JhbFNjb3BlLmNwcAogSlNDU1NQYWdlUnVsZS5jcHAKIEpT
Q1NTUnVsZS5jcHAKIEpTQ1NTUnVsZUxpc3QuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmMyZDcxZWZjNzcxNTdkZGUzZDM0
NGYyYWZlNDc5NjczNjE0NmE4My4uYWJiMDQyZThjNDE4MzA5ZGNkZjhhZGIxM2YxODc4Yzg5Yzdi
YTQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTM1MiwxNCArMTM1MiwxOSBAQAogCQk0QjM0ODA5NDBFRUY1MEQ0MDBBQzFC
NDEgLyogSW1hZ2VTb3VyY2VDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEIzNDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0cuaCAq
LzsgfTsKIAkJNEI1QkREOUIyMTY1OEExNTAwREQ0MjYyIC8qIENTU1BhaW50Q2FsbGJhY2suaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCNUJERDlBMjE2
NThBMTUwMERENDI2MiAvKiBDU1NQYWludENhbGxiYWNrLmggKi87IH07CiAJCTRCNkI1Q0JEMjE2
NDBFRkYwMDYwMzgxNyAvKiBET01DU1NQYWludFdvcmtsZXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCNkI1Q0I4MjE2M0VDMDcwMDYwMzgxNyAvKiBE
T01DU1NQYWludFdvcmtsZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwotCQk0QjZCNUNDMDIxNjQzODY0MDA2MDM4MTcgLyogQ1NTUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDRCNkI1Q0JGMjE2NDM4NjQwMDYwMzgxNyAvKiBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5oICovOyB9OworCQk0QjZCNUNDMDIxNjQzODY0MDA2MDM4MTcgLyogUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRCNkI1Q0JGMjE2NDM4NjQwMDYwMzgxNyAvKiBQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oICov
OyB9OwogCQk0QjZFODc2OTIxNzZENjkyMDA0MjBFNUUgLyogQ1NTUGFpbnRJbWFnZVZhbHVlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjZFODc2ODIx
NzZENjkyMDA0MjBFNUUgLyogQ1NTUGFpbnRJbWFnZVZhbHVlLmggKi87IH07CiAJCTRCNkZBNkY0
MEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCNkZBNkYyMEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFy
dFJlcGxhY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0QjdBRTQ5MzIxNzdCNTZGMDBDNTk5NTkgLyogQ3VzdG9tUGFpbnRJbWFnZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI3QUU0OTIyMTc3QjU2
RjAwQzU5OTU5IC8qIEN1c3RvbVBhaW50SW1hZ2UuaCAqLzsgfTsKKwkJNEI3RjlDNTIyMTgzQjVF
NTAwMUNFQkEwIC8qIFdvcmtsZXRDb25zb2xlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjdGOUM1MTIxODNCNUU1MDAxQ0VCQTAgLyogV29y
a2xldENvbnNvbGVDbGllbnQuaCAqLzsgfTsKIAkJNEJBRTk1QjEwQjJGQTlDRTAwQUVEOEEwIC8q
IEVkaXRvckRlbGV0ZUFjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEJBRTk1QjAwQjJGQTlDRTAwQUVEOEEwIC8qIEVkaXRvckRlbGV0ZUFjdGlv
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRC
REEzRkZFMjE1MUI2RjUwMEZENjYwNCAvKiBET01DU1NDdXN0b21Qcm9wZXJ0eURlc2NyaXB0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCREEzRkY4
MjE1MUI2RjIwMEZENjYwNCAvKiBET01DU1NDdXN0b21Qcm9wZXJ0eURlc2NyaXB0b3IuaCAqLzsg
fTsKIAkJNEJEQTNGRkYyMTUxQjZGNTAwRkQ2NjA0IC8qIERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJv
cGVydHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRC
REEzRkY5MjE1MUI2RjMwMEZENjYwNCAvKiBET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5Lmgg
Ki87IH07CiAJCTRCREE0MDAxMjE1MUI2RjUwMEZENjYwNCAvKiBDU1NSZWdpc3RlcmVkQ3VzdG9t
UHJvcGVydHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRCREEzRkZCMjE1MUI2RjQwMEZENjYwNCAvKiBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0QkRF
QTMyMDIxN0VDNTVGMDA1MkRGQ0QgLyogV29ya2xldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJERUEzMUYyMTdFQzU1RjAwNTJERkNEIC8qIFdvcmts
ZXQuaCAqLzsgfTsKKwkJNEJERUEzMjUyMTdGRTJFNDAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxT
Y29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJE
RUEzMjQyMTdGRTJFNDAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxTY29wZS5oICovOyB9OworCQk0
QkRFQTMyODIxODAwM0Y3MDA1MkRGQ0QgLyogV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCREVBMzI3MjE4MDAz
RjcwMDUyREZDRCAvKiBXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oICovOyB9OworCQk0QkRFQTMy
QzIxODAzM0VCMDA1MkRGQ0QgLyogSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QkRFQTMyQjIxODAzM0VCMDA1
MkRGQ0QgLyogSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmggKi87IH07CiAJCTREM0IwMEFCMjE1
RDY5QTcwMDc2Qjk4MyAvKiBNZWRpYVJlY29yZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RDNCMDBBOTIxNUQ2OUE3MDA3NkI5ODMgLyogTWVkaWFS
ZWNvcmRlci5oICovOyB9OwogCQk0RDNCMDBBRjIxNUQ2QTY5MDA3NkI5ODMgLyogQmxvYkV2ZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RDNCMDBB
RDIxNUQ2QTY5MDA3NkI5ODMgLyogQmxvYkV2ZW50LmggKi87IH07CiAJCTREQjcxMzBEMjE2RUNC
NEQwMDk2QTRERCAvKiBNZWRpYVJlY29yZGVyRXJyb3JFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNERCNzEzMEMyMTZFQzJCRDAwOTZBNEREIC8q
IE1lZGlhUmVjb3JkZXJFcnJvckV2ZW50LmggKi87IH07CkBAIC03OTAxLDE2ICs3OTA2LDE4IEBA
CiAJCTRCNkI1Q0I2MjE2M0RDMUEwMDYwMzgxNyAvKiBET01DU1NQYWludFdvcmtsZXQuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IERPTUNTU1BhaW50V29ya2xldC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTRCNkI1Q0I4MjE2M0VDMDcwMDYwMzgxNyAvKiBET01DU1NQYWludFdvcmtsZXQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRE9NQ1NTUGFpbnRXb3JrbGV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTRCNkI1Q0I5MjE2M0VEMzIwMDYwMzgxNyAvKiBET01DU1NQYWludFdvcmtsZXQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRE9NQ1NTUGFpbnRXb3JrbGV0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNEI2QjVDQkUyMTY0MzRGQjAwNjAzODE3IC8qIEpTQ1NTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDU1NQYWludFdv
cmtsZXRHbG9iYWxTY29wZUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTRCNkI1Q0JGMjE2NDM4NjQwMDYwMzgxNyAvKiBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk0QjZCNUNDMTIxNjQzOUNGMDA2MDM4MTcgLyogQ1NTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0QjZCNUNDMzIx
NjQzQThFMDA2MDM4MTcgLyogQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENT
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNEI2QjVDQkUyMTY0MzRGQjAwNjAzODE3IC8qIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZUN1
c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRCNkI1Q0JGMjE2NDM4NjQw
MDYwMzgxNyAvKiBQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QjZC
NUNDMTIxNjQzOUNGMDA2MDM4MTcgLyogUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0QjZCNUNDMzIxNjQzQThFMDA2MDM4MTcgLyogUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI2RTg3NjgyMTc2RDY5MjAwNDIwRTVFIC8qIENTU1Bh
aW50SW1hZ2VWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NQYWludEltYWdlVmFsdWUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI2RTg3NkIyMTc2RDhBMTAwNDIwRTVFIC8qIENT
U1BhaW50SW1hZ2VWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NQYWludEltYWdlVmFs
dWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QjZGQTZGMjBDMzlFNDhDMDAw
ODcwMTEgLyogU21hcnRSZXBsYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNtYXJ0UmVwbGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QjZGQTZGNjBD
MzlFNEExMDAwODcwMTEgLyogU21hcnRSZXBsYWNlQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU21hcnRSZXBsYWNlQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0QjdBRTQ5MjIxNzdCNTZGMDBDNTk5NTkgLyogQ3VzdG9tUGFpbnRJbWFnZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDdXN0b21QYWludEltYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTRCN0FFNDk1MjE3N0I2M0UwMEM1OTk1OSAvKiBDdXN0b21QYWludEltYWdlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEN1c3RvbVBhaW50SW1hZ2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0QjdGOUM1MTIxODNCNUU1MDAxQ0VCQTAgLyogV29ya2xldENvbnNv
bGVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2xldENvbnNvbGVDbGllbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEI3RjlDNTQyMTgzQjYzNDAwMUNFQkEwIC8qIFdvcmts
ZXRDb25zb2xlQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtsZXRDb25zb2xlQ2xp
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEJBRTk1QjAwQjJGQTlDRTAw
QUVEOEEwIC8qIEVkaXRvckRlbGV0ZUFjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBFZGl0b3JEZWxldGVBY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNEJEQTNGRjUyMTUxQjZGMDAwRkQ2NjA0IC8qIERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVy
dHkuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVy
dHkuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QkRBM0ZGNzIxNTFCNkYxMDBG
RDY2MDQgLyogRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc5MTgsNiArNzkyNSwxNiBAQAogCQk0QkRB
M0ZGOTIxNTFCNkYzMDBGRDY2MDQgLyogRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01DU1NSZWdpc3RlckN1c3RvbVByb3Bl
cnR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCREEzRkZBMjE1MUI2RjMwMEZE
NjYwNCAvKiBET01DU1NDdXN0b21Qcm9wZXJ0eURlc2NyaXB0b3IuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IERPTUNTU0N1c3RvbVByb3BlcnR5RGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTRCREEzRkZCMjE1MUI2RjQwMEZENjYwNCAvKiBDU1NSZWdpc3Rl
cmVkQ3VzdG9tUHJvcGVydHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NT
UmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTRCREVBMzFDMjE3RUJDRjUwMDUyREZDRCAvKiBXb3JrbGV0LmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXb3JrbGV0Lmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEJERUEzMUYyMTdFQzU1RjAwNTJERkNE
IC8qIFdvcmtsZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2xldC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0QkRFQTMyMzIxN0VDOTZBMDA1MkRGQ0QgLyogV29ya2xldC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXb3JrbGV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNEJERUEzMjQyMTdGRTJFNDAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxTY29wZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXb3JrbGV0R2xvYmFsU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNEJERUEzMjYyMTdGRTJGQTAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxTY29wZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrbGV0R2xvYmFsU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0QkRFQTMyNzIxODAwM0Y3MDA1MkRGQ0QgLyogV29ya2xldFNjcmlw
dENvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEJERUEzMjkyMTgwMDQwQzAwNTJERkNEIC8q
IFdvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtsZXRT
Y3JpcHRDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEJERUEz
MkEyMTgwMTA3MjAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxTY29wZS5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV29ya2xl
dEdsb2JhbFNjb3BlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEJERUEzMkIy
MTgwMzNFQjAwNTJERkNEIC8qIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNEJERUEzMkQyMTgwMzQwNTAwNTJERkNEIC8qIEpTV29ya2xldEdsb2JhbFNjb3BlQmFz
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RDNCMDBBNDIxNUQ2MTA0MDA3NkI5ODMgLyog
TWVkaWFSZWNvcmRlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTWVkaWFSZWNvcmRlci5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTREM0IwMEE2MjE1RDY0NUIwMDc2Qjk4
MyAvKiBCbG9iRXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEJsb2JFdmVudC5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTREM0IwMEE4MjE1RDY5QTYwMDc2Qjk4MyAv
KiBNZWRpYVJlY29yZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE1lZGlhUmVjb3JkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU4MDEs
NiArMTU4MTgsNyBAQAogCQkJCUIyMjI3N0NBMEQwMEJGMUUwMDcxQjc4MiAvKiBzdmcgKi8sCiAJ
CQkJNDE3REE0Q0QxMzczNDIwNDAwN0M1N0ZCIC8qIHRlc3RpbmcgKi8sCiAJCQkJMkU0MzQ2MzEw
RjU0NkE2ODAwQjBGMUJBIC8qIHdvcmtlcnMgKi8sCisJCQkJNEJERUEzMTgyMTdFQkI4ODAwNTJE
RkNEIC8qIHdvcmtsZXRzICovLAogCQkJCUUxRjA0MjQzMDk4MzkzODkwMDY2OTRFQSAvKiB4bWwg
Ki8sCiAJCQkJNjU2NTgwRUMwOUQxMkIyMDAwMEU2MUQ3IC8qIERlcml2ZWQgU291cmNlcyAqLywK
IAkJCQkwODlDMTY2NUZFODQxMTU4QzAyQUFDMDcgLyogUmVzb3VyY2VzICovLApAQCAtMTgwMzYs
NiArMTgwNTQsMjYgQEAKIAkJCXBhdGggPSBhbmltYXRpb247CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwogCQl9OworCQk0QkRFQTMxODIxN0VCQjg4MDA1MkRGQ0QgLyogd29ya2xldHMgKi8g
PSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTRCNkI1Q0MxMjE2
NDM5Q0YwMDYwMzgxNyAvKiBQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAgKi8sCisJCQkJNEI2
QjVDQkYyMTY0Mzg2NDAwNjAzODE3IC8qIFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmggKi8sCisJ
CQkJNEI2QjVDQzMyMTY0M0E4RTAwNjAzODE3IC8qIFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmlk
bCAqLywKKwkJCQk0QkRFQTMyMzIxN0VDOTZBMDA1MkRGQ0QgLyogV29ya2xldC5jcHAgKi8sCisJ
CQkJNEJERUEzMUYyMTdFQzU1RjAwNTJERkNEIC8qIFdvcmtsZXQuaCAqLywKKwkJCQk0QkRFQTMx
QzIxN0VCQ0Y1MDA1MkRGQ0QgLyogV29ya2xldC5pZGwgKi8sCisJCQkJNEI3RjlDNTQyMTgzQjYz
NDAwMUNFQkEwIC8qIFdvcmtsZXRDb25zb2xlQ2xpZW50LmNwcCAqLywKKwkJCQk0QjdGOUM1MTIx
ODNCNUU1MDAxQ0VCQTAgLyogV29ya2xldENvbnNvbGVDbGllbnQuaCAqLywKKwkJCQk0QkRFQTMy
NjIxN0ZFMkZBMDA1MkRGQ0QgLyogV29ya2xldEdsb2JhbFNjb3BlLmNwcCAqLywKKwkJCQk0QkRF
QTMyNDIxN0ZFMkU0MDA1MkRGQ0QgLyogV29ya2xldEdsb2JhbFNjb3BlLmggKi8sCisJCQkJNEJE
RUEzMkEyMTgwMTA3MjAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxTY29wZS5pZGwgKi8sCisJCQkJ
NEJERUEzMjkyMTgwMDQwQzAwNTJERkNEIC8qIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcCAq
LywKKwkJCQk0QkRFQTMyNzIxODAwM0Y3MDA1MkRGQ0QgLyogV29ya2xldFNjcmlwdENvbnRyb2xs
ZXIuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gd29ya2xldHM7CisJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOworCQl9OwogCQk0RDNCMDBBMDIxNUQ1QzBGMDA3NkI5ODMgLyogbWVkaWFyZWNvcmRl
ciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yNDQwOSw2
ICsyNDQ0Nyw4IEBACiAJCQkJQkNCRkI1M0IwRENEMjlDRjAwMTlCM0U1IC8qIEpTV2luZG93UHJv
eHkuaCAqLywKIAkJCQlFMUMzNkQzMjBFQjBBMDk0MDA3NDEwQkMgLyogSlNXb3JrZXJHbG9iYWxT
Y29wZUJhc2UuY3BwICovLAogCQkJCUUxQzM2RDMzMEVCMEEwOTQwMDc0MTBCQyAvKiBKU1dvcmtl
ckdsb2JhbFNjb3BlQmFzZS5oICovLAorCQkJCTRCREVBMzJEMjE4MDM0MDUwMDUyREZDRCAvKiBK
U1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwICovLAorCQkJCTRCREVBMzJCMjE4MDMzRUIwMDUy
REZDRCAvKiBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuaCAqLywKIAkJCQk3MDlBMDFGRDFFM0Qw
QkNDMDA2QjBENEMgLyogTW9kdWxlRmV0Y2hGYWlsdXJlS2luZC5oICovLAogCQkJCTQxQjQ1OUVE
MUY1NUVCQzcwMDAwRjZGRCAvKiBSZWFkYWJsZVN0cmVhbS5jcHAgKi8sCiAJCQkJNDFCNDU5REEx
RjRDQURCOTAwMDBGNkZEIC8qIFJlYWRhYmxlU3RyZWFtLmggKi8sCkBAIC0yNDQ0OSwxMiArMjQ0
ODksMTIgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTdDRDM0NDFCMUYzMkRFMzAwMDBEQ0Q0OSAv
KiBDYWNoZWQgQXR0cmlidXRlcyB3LyBJbnZhbGlkYXRpb24gKi8sCiAJCQkJN0MzRDhFRTQxRTA4
QkFCRTAwMjNCMDg0IC8qIEdDIC8gV3JhcHBpbmcgT25seSAqLywKLQkJCQk0QjZCNUNCRTIxNjQz
NEZCMDA2MDM4MTcgLyogSlNDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZUN1c3RvbS5jcHAgKi8s
CiAJCQkJOUJDNUY5REYxRDVBQUY2QTAwMkI3NDlEIC8qIEpTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5
Q3VzdG9tLmNwcCAqLywKIAkJCQlCQ0Q5QzI1RTBDMTdBQTY3MDA1QzkwQTIgLyogSlNET01XaW5k
b3dDdXN0b20uY3BwICovLAogCQkJCTY1MkZCQkJCMERFMjdDQjYwMDAxRDM4NiAvKiBKU0RPTVdp
bmRvd0N1c3RvbS5oICovLAogCQkJCUJDNTgyM0Y0MEMwQTk4REYwMDUzRjFCNSAvKiBKU0hUTUxF
bGVtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlCQ0UxQzQzRjBEOTgzMEY0MDAzQjAyRjIgLyogSlNM
b2NhdGlvbkN1c3RvbS5jcHAgKi8sCisJCQkJNEI2QjVDQkUyMTY0MzRGQjAwNjAzODE3IC8qIEpT
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwICovLAogCQkJCTQxOEMzOTVEMUM4RjBB
QUIwMDUxQzhBMyAvKiBKU1JlYWRhYmxlU3RyZWFtU291cmNlQ3VzdG9tLmNwcCAqLywKIAkJCQk0
NkJDQkJCRTIwODUwMDVCMDA3MTA2MzggLyogSlNSZW1vdGVET01XaW5kb3dDdXN0b20uY3BwICov
LAogCQkJKTsKQEAgLTI2MDUyLDkgKzI2MDkyLDYgQEAKIAkJCQk0QjVCREQ5OTIxNjU4OEU1MDBE
RDQyNjIgLyogQ1NTUGFpbnRDYWxsYmFjay5pZGwgKi8sCiAJCQkJNEI2RTg3NkIyMTc2RDhBMTAw
NDIwRTVFIC8qIENTU1BhaW50SW1hZ2VWYWx1ZS5jcHAgKi8sCiAJCQkJNEI2RTg3NjgyMTc2RDY5
MjAwNDIwRTVFIC8qIENTU1BhaW50SW1hZ2VWYWx1ZS5oICovLAotCQkJCTRCNkI1Q0MxMjE2NDM5
Q0YwMDYwMzgxNyAvKiBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAgKi8sCi0JCQkJNEI2
QjVDQkYyMTY0Mzg2NDAwNjAzODE3IC8qIENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmggKi8s
Ci0JCQkJNEI2QjVDQzMyMTY0M0E4RTAwNjAzODE3IC8qIENTU1BhaW50V29ya2xldEdsb2JhbFNj
b3BlLmlkbCAqLywKIAkJCQk5NDE4Mjc4QzFEOENBRTk1MDA0OTI3NjQgLyogQ1NTUGVuZGluZ1N1
YnN0aXR1dGlvblZhbHVlLmNwcCAqLywKIAkJCQk5NDE4Mjc4RDFEOENBRTk1MDA0OTI3NjQgLyog
Q1NTUGVuZGluZ1N1YnN0aXR1dGlvblZhbHVlLmggKi8sCiAJCQkJQTgwRTZDREIwQTE5ODlDQTAw
N0ZCOEM1IC8qIENTU1ByaW1pdGl2ZVZhbHVlLmNwcCAqLywKQEAgLTI4MDU1LDcgKzI4MDkyLDYg
QEAKIAkJCQlBODBFNkQwMDBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTUGFnZVJ1bGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTRCNUJERDlCMjE2NThBMTUwMERENDI2MiAvKiBDU1NQYWludENhbGxiYWNr
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0QjZFODc2OTIxNzZENjkyMDA0MjBFNUUgLyogQ1NTUGFp
bnRJbWFnZVZhbHVlLmggaW4gSGVhZGVycyAqLywKLQkJCQk0QjZCNUNDMDIxNjQzODY0MDA2MDM4
MTcgLyogQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk0
NkQzNzJFMUQ2Q0IyOTQwMDc3MDg0RiAvKiBDU1NQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUU0QTc5OTUyMjBFRTRCMTQwMEMxOTU2OCAvKiBDU1NQYXJzZXJDb250ZXh0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5NDlDNzcwMTFENkUxRDk4MDBDMERFNEYgLyogQ1NTUGFyc2VyRmFzdFBhdGhz
LmggaW4gSGVhZGVycyAqLywKQEAgLTI5NzU4LDYgKzI5Nzk0LDcgQEAKIAkJCQlFMUMzNjJFRjBF
QUYyQUE5MDA3NDEwQkMgLyogSlNXb3JrZXJMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTEyNzFBNTgwRUVFQ0RFNDAwRjYxMjEzIC8qIEpTV29ya2VyTmF2aWdhdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MUYxNzUwNjFGMzU4QkY3MDBDNzQ5NTAgLyogSlNXb3JrZXJUeXBlLmggaW4g
SGVhZGVycyAqLywKKwkJCQk0QkRFQTMyQzIxODAzM0VCMDA1MkRGQ0QgLyogSlNXb3JrbGV0R2xv
YmFsU2NvcGVCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzRDOTZERDFBRDQ0ODM1MDAzNjVB
NjAgLyogSlNXcml0YWJsZVN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM1OENCNzAxQzUz
Mjc3NTAwRTBDMkQ4IC8qIEpTWE1MRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMzQ4
QkQ0MERCN0Y4MDQwMDRBQkFCOSAvKiBKU1hNTEh0dHBSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywK
QEAgLTMwMTQ0LDYgKzMwMTgxLDcgQEAKIAkJCQkwODg1MDY3RjExREEwNDVCMDAxODJCOTggLyog
UGFpbnRJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODg1MDY4MDExREEwNDVCMDAxODJCOTgg
LyogUGFpbnRQaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEIxRTEzRUIyMTc5MzdCMzAwNDJD
Rjk4IC8qIFBhaW50UmVuZGVyaW5nQ29udGV4dDJELmggaW4gSGVhZGVycyAqLywKKwkJCQk0QjZC
NUNDMDIxNjQzODY0MDA2MDM4MTcgLyogUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4MEU2Q0ZCMEExOTg5Q0EwMDdGQjhDNSAvKiBQYWlyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRDMxNjBBMzEyQjAyNkY3MDBDMUEzNTkgLyogUGFubmVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRDMxNjAxQTEyQjAyNjc2MDBDMUEzNTkgLyogUGFubmVyTm9kZS5oIGluIEhl
YWRlcnMgKi8sCkBAIC0zMTU2Miw2ICszMTYwMCwxMCBAQAogCQkJCTk3QUFCRDJEMTRGQTA5RDUw
MDc0NTdBRSAvKiBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTU0QTBDNjgxREI4MDdEOTAwMTdBOTBCIC8qIFdvcmtlclRvUGFnZUZyb250ZW5k
Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGMTc0RkUxRjM1ODk5MjAwQzc0OTUwIC8q
IFdvcmtlclR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTRCREVBMzIwMjE3RUM1NUYwMDUyREZD
RCAvKiBXb3JrbGV0LmggaW4gSGVhZGVycyAqLywKKwkJCQk0QjdGOUM1MjIxODNCNUU1MDAxQ0VC
QTAgLyogV29ya2xldENvbnNvbGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTRCREVBMzI1
MjE3RkUyRTQwMDUyREZDRCAvKiBXb3JrbGV0R2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTRCREVBMzI4MjE4MDAzRjcwMDUyREZDRCAvKiBXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMjQwOTlFNjQ5MjAwNTZFNTgxIC8qIFdyYXBDb250
ZW50c0luRHVtbXlTcGFuQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE2RTZGRTkxQkJE
MTJFNTAwMEE2MDUzIC8qIFdyaXRhYmxlU3RyZWFtQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxNkU2RkU4MUJCRDEyREYwMDBBNjA1MyAvKiBXcml0YWJsZVN0cmVhbUludGVybmFsc0J1
aWx0aW5zLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZUN1c3RvbS5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5ZmEzNDVhNWUzOGYzOWYzYzFkZWRjZDUz
YjZmYTM3Mzg1NTEzYjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NQYWludFdvcmtsZXRHbG9iYWxT
Y29wZUN1c3RvbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzMgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJKU0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCi0KLSNpZiBFTkFCTEUo
Q1NTX1BBSU5USU5HX0FQSSkKLQotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiSlND
U1NQYWludENhbGxiYWNrLmgiCi0jaW5jbHVkZSAiSlNET01Db252ZXJ0Q2FsbGJhY2tzLmgiCi0j
aW5jbHVkZSAiSlNET01Db252ZXJ0U2VxdWVuY2VzLmgiCi0jaW5jbHVkZSA8d3RmL1NldEZvclNj
b3BlLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLXN0
YXRpYyBKU1ZhbHVlIHRocm93SW52YWxpZE1vZGlmaWNhdGlvbkVycm9yKEV4ZWNTdGF0ZSYgc3Rh
dGUsIFRocm93U2NvcGUmIHNjb3BlLCBBU0NJSUxpdGVyYWwgbWVzc2FnZSkKLXsKLSAgICBzY29w
ZS5hc3NlcnROb0V4Y2VwdGlvbigpOwotICAgIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUs
IGNyZWF0ZURPTUV4Y2VwdGlvbigmc3RhdGUsIEludmFsaWRNb2RpZmljYXRpb25FcnJvciwgbWVz
c2FnZSkpOwotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCi12b2lkIEpTQ1NTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGU6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKEpTQzo6U2xvdFZpc2l0
b3ImIHZpc2l0b3IpCi17Ci0gICAgZm9yIChhdXRvJiByZWdpc3RlcmVkIDogd3JhcHBlZCgpLnBh
aW50RGVmaW5pdGlvbk1hcCgpLnZhbHVlcygpKQotICAgICAgICByZWdpc3RlcmVkLT5wYWludENh
bGxiYWNrLT52aXNpdEpTRnVuY3Rpb24odmlzaXRvcik7Ci19Ci0KLS8vIGh0dHBzOi8vZHJhZnRz
LmNzcy1ob3VkaW5pLm9yZy9jc3MtcGFpbnQtYXBpLyNyZWdpc3RlcmluZy1jdXN0b20tcGFpbnQK
LUpTVmFsdWUgSlNDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6cmVnaXN0ZXJQYWludChFeGVj
U3RhdGUmIHN0YXRlKQotewotICAgIHVzaW5nIFBhaW50RGVmaW5pdGlvbiA9IENTU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb247Ci0KLSAgICBDU1NQYWludFdvcmtsZXRH
bG9iYWxTY29wZSYgd29ya2xldEdsb2JhbFNjb3BlID0gd3JhcHBlZCgpOwotICAgIFZNJiB2bSA9
IHN0YXRlLnZtKCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwot
Ci0gICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDIpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3IoJnN0YXRlKSk7Ci0KLSAgICBBdG9taWNTdHJpbmcgbmFtZShzdGF0ZS51bmNoZWNr
ZWRBcmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT50b0F0b21pY1N0cmluZygmc3RhdGUpKTsK
LSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwotICAgIEpTVmFsdWUg
Y29uc3RydWN0b3JWYWx1ZSA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpOwotICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7Ci0KLSAgICBpZiAobmFtZS5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCAiVGhlIGZp
cnN0IGFyZ3VtZW50IG11c3Qgbm90IGJlIHRoZSBlbXB0eSBzdHJpbmciX3MpOwotCi0gICAgYXV0
byYgcGFpbnREZWZpbml0aW9uTWFwID0gd29ya2xldEdsb2JhbFNjb3BlLnBhaW50RGVmaW5pdGlv
bk1hcCgpOwotCi0gICAgaWYgKHBhaW50RGVmaW5pdGlvbk1hcC5jb250YWlucyhuYW1lKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93SW52YWxpZE1vZGlmaWNhdGlvbkVycm9yKHN0YXRlLCBzY29wZSwg
IlRoaXMgbmFtZSBoYXMgYWxyZWFkeSBiZWVuIHJlZ2lzdGVyZWQiX3MpOwotCi0gICAgVmVjdG9y
PFN0cmluZz4gaW5wdXRQcm9wZXJ0aWVzOwotCi0gICAgSlNWYWx1ZSBpbnB1dFByb3BlcnRpZXNJ
dGVyYWJsZVZhbHVlID0gY29uc3RydWN0b3JWYWx1ZS5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZ2bSwgImlucHV0UHJvcGVydGllcyIpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwotCi0gICAgaWYgKCFpbnB1dFByb3BlcnRpZXNJdGVyYWJs
ZVZhbHVlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIGlucHV0UHJvcGVydGllcyA9IGNvbnZlcnQ8
SURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj4oc3RhdGUsIGlucHV0UHJvcGVydGllc0l0ZXJhYmxl
VmFsdWUpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7Ci0KLSAg
ICAvLyBGSVhNRTogVmFsaWRhdGUgaW5wdXQgcHJvcGVydGllcyBoZXJlIChzdGVwIDcpLgotCi0g
ICAgVmVjdG9yPFN0cmluZz4gaW5wdXRBcmd1bWVudHM7Ci0KLSAgICBKU1ZhbHVlIGlucHV0QXJn
dW1lbnRzSXRlcmFibGVWYWx1ZSA9IGNvbnN0cnVjdG9yVmFsdWUuZ2V0KCZzdGF0ZSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmdm0sICJpbnB1dEFyZ3VtZW50cyIpKTsKLSAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwotCi0gICAgaWYgKCFpbnB1dEFyZ3VtZW50c0l0
ZXJhYmxlVmFsdWUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgaW5wdXRBcmd1bWVudHMgPSBjb252
ZXJ0PElETFNlcXVlbmNlPElETERPTVN0cmluZz4+KHN0YXRlLCBpbnB1dEFyZ3VtZW50c0l0ZXJh
YmxlVmFsdWUpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7Ci0K
LSAgICAvLyBGSVhNRTogUGFyc2Ugc3ludGF4IGZvciBpbnB1dEFyZ3VtZW50cyBoZXJlIChzdGVw
cyAxMSBhbmQgMTIpLgotCi0gICAgSlNWYWx1ZSBjb250ZXh0T3B0aW9uc1ZhbHVlID0gY29uc3Ry
dWN0b3JWYWx1ZS5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImNvbnRl
eHRPcHRpb25zIikpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7
Ci0gICAgVU5VU0VEX1BBUkFNKGNvbnRleHRPcHRpb25zVmFsdWUpOwotCi0gICAgLy8gRklYTUU6
IENvbnZlcnQgdG8gUGFpbnRSZW5kZXJpbmdDb250ZXh0MkRTZXR0aW5ncyBoZXJlIChzdGVwIDE0
KS4KLQotICAgIGlmICghY29uc3RydWN0b3JWYWx1ZS5pc0NvbnN0cnVjdG9yKHZtKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsICJUaGUgc2Vjb25kIGFyZ3Vt
ZW50IG11c3QgYmUgYSBjb25zdHJ1Y3RvciJfcyk7Ci0KLSAgICBKU1ZhbHVlIHByb3RvdHlwZVZh
bHVlID0gY29uc3RydWN0b3JWYWx1ZS5nZXQoJnN0YXRlLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90
b3R5cGUpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7Ci0KLSAg
ICBpZiAoIXByb3RvdHlwZVZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcigmc3RhdGUsIHNjb3BlLCAiVGhlIHNlY29uZCBhcmd1bWVudCBtdXN0IGhhdmUgYSBw
cm90b3R5cGUgdGhhdCBpcyBhbiBvYmplY3QiX3MpOwotCi0gICAgSlNWYWx1ZSBwYWludFZhbHVl
ID0gcHJvdG90eXBlVmFsdWUuZ2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0s
ICJwYWludCIpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwot
Ci0gICAgaWYgKHBhaW50VmFsdWUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsICJUaGUgY2xhc3MgbXVzdCBoYXZlIGEgcGFpbnQgbWV0
aG9kIl9zKTsKLQotICAgIFJlZlB0cjxKU0NTU1BhaW50Q2FsbGJhY2s+IHBhaW50ID0gY29udmVy
dDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTQ1NTUGFpbnRDYWxsYmFjaz4+KHN0YXRlLCBwYWludFZh
bHVlLCAqZ2xvYmFsT2JqZWN0KCkpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpT
VmFsdWUoKSk7Ci0KLSAgICBhdXRvIHBhaW50RGVmaW5pdGlvbiA9IHN0ZDo6dW5pcXVlX3B0cjxQ
YWludERlZmluaXRpb24+KG5ldyBQYWludERlZmluaXRpb24geyBuYW1lLCBwYWludC5yZWxlYXNl
Tm9uTnVsbCgpLCBpbnB1dFByb3BlcnRpZXMsIGlucHV0QXJndW1lbnRzIH0pOwotICAgIHBhaW50
RGVmaW5pdGlvbk1hcC5hZGQobmFtZSwgV1RGTW92ZShwYWludERlZmluaXRpb24pKTsKLQotICAg
IC8vIEZJWE1FOiBjb25zdHJ1Y3QgZG9jdW1lbnREZWZpbml0aW9uIChzdGVwIDIyKS4KLQotICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCi19Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAppbmRleCBlYmIyZjYxZGRjYzMy
NWEwMWRjNTI0YjJiNTJlYjhiMTE0MTQzMDU4Li43ZGRhMjU4NmVmN2IzNWM3NTZiMWIwMjM5ZjFj
MWY3NjE2ZGUzMTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01H
bG9iYWxPYmplY3QuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiSlNSZWFkYWJsZVN0
cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuaCIKICNpbmNsdWRlICJKU1JlbW90ZURPTVdpbmRvdy5o
IgogI2luY2x1ZGUgIkpTV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJKU1dvcmtsZXRH
bG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIlJlamVjdGVkUHJvbWlzZVRyYWNrZXIuaCIKICNpbmNs
dWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlZENsb25l
LmgiCkBAIC0xOTQsNiArMTk1LDEwIEBAIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIEpTRE9NR2xv
YmFsT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgaWYgKGluaGVyaXRzPEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlPih2bSgp
KSkKICAgICAgICAgcmV0dXJuIGpzQ2FzdDxjb25zdCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZSo+
KHRoaXMpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisjaWYgRU5BQkxFKENTU19QQUlOVElO
R19BUEkpCisgICAgaWYgKGluaGVyaXRzPEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZT4odm0oKSkp
CisgICAgICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlKj4o
dGhpcyktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyNlbmRpZgogICAgIGRhdGFMb2coIlVu
ZXhwZWN0ZWQgZ2xvYmFsIG9iamVjdDogIiwgSlNWYWx1ZSh0aGlzKSwgIlxuIik7CiAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQYWludFdvcmtsZXRHbG9i
YWxTY29wZUN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTFkZjViZDA3YTk1ZDlkNDk3OGJkMTljOWFl
YzJmNjQxYzQwM2Y5NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwCkBAIC0wLDAgKzEsMTM2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKworI2lm
IEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNs
dWRlICJKU0NTU1BhaW50Q2FsbGJhY2suaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnRDYWxsYmFj
a3MuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnRTZXF1ZW5jZXMuaCIKKyNpbmNsdWRlIDx3dGYv
U2V0Rm9yU2NvcGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNwYWNlIEpT
QzsKKworc3RhdGljIEpTVmFsdWUgdGhyb3dJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3IoRXhlY1N0
YXRlJiBzdGF0ZSwgVGhyb3dTY29wZSYgc2NvcGUsIEFTQ0lJTGl0ZXJhbCBtZXNzYWdlKQorewor
ICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CisgICAgdGhyb3dFeGNlcHRpb24oJnN0YXRl
LCBzY29wZSwgY3JlYXRlRE9NRXhjZXB0aW9uKCZzdGF0ZSwgSW52YWxpZE1vZGlmaWNhdGlvbkVy
cm9yLCBtZXNzYWdlKSk7CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKK3ZvaWQgSlNQ
YWludFdvcmtsZXRHbG9iYWxTY29wZTo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oSlNDOjpTbG90
VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHdyYXBwZWQo
KS5wYWludERlZmluaXRpb25Mb2NrKCkpOworICAgIGZvciAoYXV0byYgcmVnaXN0ZXJlZCA6IHdy
YXBwZWQoKS5wYWludERlZmluaXRpb25NYXAoKS52YWx1ZXMoKSkKKyAgICAgICAgcmVnaXN0ZXJl
ZC0+cGFpbnRDYWxsYmFjay0+dmlzaXRKU0Z1bmN0aW9uKHZpc2l0b3IpOworfQorCisvLyBodHRw
czovL2RyYWZ0cy5jc3MtaG91ZGluaS5vcmcvY3NzLXBhaW50LWFwaS8jcmVnaXN0ZXJpbmctY3Vz
dG9tLXBhaW50CisvLyBUaGlzIGN1c3RvbSBiaW5kaW5nIGlzIHJlcXVpcmVkIHRvIGhhbmRsZSB0
aGUgcGFpbnQgY2FsbGJhY2sgY29udmVyc2lvbiBhY2NvcmRpbmcgdG8gdGhlIHNwZWMuCitKU1Zh
bHVlIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUGFpbnQoRXhlY1N0YXRlJiBz
dGF0ZSkKK3sKKyAgICB1c2luZyBQYWludERlZmluaXRpb24gPSBQYWludFdvcmtsZXRHbG9iYWxT
Y29wZTo6UGFpbnREZWZpbml0aW9uOworCisgICAgYXV0byYgd29ya2xldEdsb2JhbFNjb3BlID0g
d3JhcHBlZCgpOworICAgIGF1dG8mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1l
bnRDb3VudCgpIDwgMikpCisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNj
b3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKworICAgIEF0b21p
Y1N0cmluZyBuYW1lKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSkt
PnRvQXRvbWljU3RyaW5nKCZzdGF0ZSkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IEpTVmFsdWUoKSk7CisgICAgSlNWYWx1ZSBjb25zdHJ1Y3RvclZhbHVlID0gc3RhdGUudW5jaGVj
a2VkQXJndW1lbnQoMSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgp
KTsKKworICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKCZzdGF0ZSwgc2NvcGUsICJUaGUgZmlyc3QgYXJndW1lbnQgbXVzdCBub3QgYmUgdGhlIGVt
cHR5IHN0cmluZyJfcyk7CisKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHdvcmtsZXRHbG9i
YWxTY29wZS5wYWludERlZmluaXRpb25Mb2NrKCkpOworICAgIGF1dG8mIHBhaW50RGVmaW5pdGlv
bk1hcCA9IHdvcmtsZXRHbG9iYWxTY29wZS5wYWludERlZmluaXRpb25NYXAoKTsKKworICAgIGlm
IChwYWludERlZmluaXRpb25NYXAuY29udGFpbnMobmFtZSkpCisgICAgICAgIHJldHVybiB0aHJv
d0ludmFsaWRNb2RpZmljYXRpb25FcnJvcihzdGF0ZSwgc2NvcGUsICJUaGlzIG5hbWUgaGFzIGFs
cmVhZHkgYmVlbiByZWdpc3RlcmVkIl9zKTsKKworICAgIFZlY3RvcjxTdHJpbmc+IGlucHV0UHJv
cGVydGllczsKKworICAgIEpTVmFsdWUgaW5wdXRQcm9wZXJ0aWVzSXRlcmFibGVWYWx1ZSA9IGNv
bnN0cnVjdG9yVmFsdWUuZ2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJp
bnB1dFByb3BlcnRpZXMiKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1
ZSgpKTsKKworICAgIGlmICghaW5wdXRQcm9wZXJ0aWVzSXRlcmFibGVWYWx1ZS5pc1VuZGVmaW5l
ZCgpKQorICAgICAgICBpbnB1dFByb3BlcnRpZXMgPSBjb252ZXJ0PElETFNlcXVlbmNlPElETERP
TVN0cmluZz4+KHN0YXRlLCBpbnB1dFByb3BlcnRpZXNJdGVyYWJsZVZhbHVlKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOworCisgICAgLy8gRklYTUU6IFZhbGlk
YXRlIGlucHV0IHByb3BlcnRpZXMgaGVyZSAoc3RlcCA3KS4KKworICAgIFZlY3RvcjxTdHJpbmc+
IGlucHV0QXJndW1lbnRzOworCisgICAgSlNWYWx1ZSBpbnB1dEFyZ3VtZW50c0l0ZXJhYmxlVmFs
dWUgPSBjb25zdHJ1Y3RvclZhbHVlLmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
JnZtLCAiaW5wdXRBcmd1bWVudHMiKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
SlNWYWx1ZSgpKTsKKworICAgIGlmICghaW5wdXRBcmd1bWVudHNJdGVyYWJsZVZhbHVlLmlzVW5k
ZWZpbmVkKCkpCisgICAgICAgIGlucHV0QXJndW1lbnRzID0gY29udmVydDxJRExTZXF1ZW5jZTxJ
RExET01TdHJpbmc+PihzdGF0ZSwgaW5wdXRBcmd1bWVudHNJdGVyYWJsZVZhbHVlKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOworCisgICAgLy8gRklYTUU6IFBh
cnNlIHN5bnRheCBmb3IgaW5wdXRBcmd1bWVudHMgaGVyZSAoc3RlcHMgMTEgYW5kIDEyKS4KKwor
ICAgIEpTVmFsdWUgY29udGV4dE9wdGlvbnNWYWx1ZSA9IGNvbnN0cnVjdG9yVmFsdWUuZ2V0KCZz
dGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJjb250ZXh0T3B0aW9ucyIpKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOworICAgIFVOVVNFRF9QQVJB
TShjb250ZXh0T3B0aW9uc1ZhbHVlKTsKKworICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRvIFBhaW50
UmVuZGVyaW5nQ29udGV4dDJEU2V0dGluZ3MgaGVyZSAoc3RlcCAxNCkuCisKKyAgICBpZiAoIWNv
bnN0cnVjdG9yVmFsdWUuaXNDb25zdHJ1Y3Rvcih2bSkpCisgICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcigmc3RhdGUsIHNjb3BlLCAiVGhlIHNlY29uZCBhcmd1bWVudCBtdXN0IGJlIGEgY29u
c3RydWN0b3IiX3MpOworCisgICAgSlNWYWx1ZSBwcm90b3R5cGVWYWx1ZSA9IGNvbnN0cnVjdG9y
VmFsdWUuZ2V0KCZzdGF0ZSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOworCisgICAgaWYgKCFwcm90b3R5cGVW
YWx1ZS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBz
Y29wZSwgIlRoZSBzZWNvbmQgYXJndW1lbnQgbXVzdCBoYXZlIGEgcHJvdG90eXBlIHRoYXQgaXMg
YW4gb2JqZWN0Il9zKTsKKworICAgIEpTVmFsdWUgcGFpbnRWYWx1ZSA9IHByb3RvdHlwZVZhbHVl
LmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAicGFpbnQiKSk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKKworICAgIGlmIChwYWludFZh
bHVlLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUs
IHNjb3BlLCAiVGhlIGNsYXNzIG11c3QgaGF2ZSBhIHBhaW50IG1ldGhvZCJfcyk7CisKKyAgICBS
ZWZQdHI8SlNDU1NQYWludENhbGxiYWNrPiBwYWludCA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5j
dGlvbjxKU0NTU1BhaW50Q2FsbGJhY2s+PihzdGF0ZSwgcGFpbnRWYWx1ZSwgKmdsb2JhbE9iamVj
dCgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOworCisgICAg
YXV0byBwYWludERlZmluaXRpb24gPSBzdGQ6OnVuaXF1ZV9wdHI8UGFpbnREZWZpbml0aW9uPihu
ZXcgUGFpbnREZWZpbml0aW9uIHsgbmFtZSwgcGFpbnQucmVsZWFzZU5vbk51bGwoKSwgaW5wdXRQ
cm9wZXJ0aWVzLCBpbnB1dEFyZ3VtZW50cyB9KTsKKyAgICBwYWludERlZmluaXRpb25NYXAuYWRk
KG5hbWUsIFdURk1vdmUocGFpbnREZWZpbml0aW9uKSk7CisKKyAgICAvLyBGSVhNRTogY29uc3Ry
dWN0IGRvY3VtZW50RGVmaW5pdGlvbiAoc3RlcCAyMikuCisKKyAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKK30KKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDYwZWIxNTBh
NjkwYzUzYzNlMjQ3ZTNhMzNjZmFiN2M2MjE3MGFmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcApAQCAtMCww
ICsxLDE1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNXb3JrbGV0R2xvYmFsU2NvcGVC
YXNlLmgiCisKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKworI2luY2x1ZGUgIkRPTVdy
YXBwZXJXb3JsZC5oIgorI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0VGFzay5oIgorI2luY2x1
ZGUgIkpTV29ya2xldEdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29ya2xldEdsb2JhbFNjb3Bl
LmgiCisjaW5jbHVkZSAiV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNW
YWx1ZUlubGluZXMuaD4KKyNpbmNsdWRlIDx3dGYvTGFuZ3VhZ2UuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgSlNDOworCitjb25zdCBDbGFzc0luZm8gSlNXb3Jr
bGV0R2xvYmFsU2NvcGVCYXNlOjpzX2luZm8gPSB7ICJXb3JrbGV0R2xvYmFsU2NvcGUiLCAmSlNE
T01HbG9iYWxPYmplY3Q6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UpIH07CisKK2NvbnN0IEdsb2JhbE9iamVjdE1l
dGhvZFRhYmxlIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6c19nbG9iYWxPYmplY3RNZXRob2RU
YWJsZSA9IHsKKyAgICAmc3VwcG9ydHNSaWNoU291cmNlSW5mbywKKyAgICAmc2hvdWxkSW50ZXJy
dXB0U2NyaXB0LAorICAgICZqYXZhU2NyaXB0UnVudGltZUZsYWdzLAorICAgIG51bGxwdHIsIC8v
IHF1ZXVlVGFza1RvRXZlbnRMb29wCisgICAgJnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRp
bWVvdXQsCisgICAgbnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVySW1wb3J0TW9kdWxlCisgICAgbnVs
bHB0ciwgLy8gbW9kdWxlTG9hZGVyUmVzb2x2ZQorICAgIG51bGxwdHIsIC8vIG1vZHVsZUxvYWRl
ckZldGNoCisgICAgbnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3Bl
cnRpZXMKKyAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJFdmFsdWF0ZQorICAgICZwcm9taXNl
UmVqZWN0aW9uVHJhY2tlciwKKyAgICAmZGVmYXVsdExhbmd1YWdlLAorICAgIG51bGxwdHIsIC8v
IGNvbXBpbGVTdHJlYW1pbmcKKyAgICBudWxscHRyLCAvLyBpbnN0YW50aWF0ZVN0cmVhbWluZwor
fTsKKworSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2Uo
SlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjxXb3JrbGV0R2xv
YmFsU2NvcGU+JiYgaW1wbCkKKyAgICA6IEpTRE9NR2xvYmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUs
IG5vcm1hbFdvcmxkKHZtKSwgJnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUpCisgICAgLCBtX3dy
YXBwZWQoV1RGTW92ZShpbXBsKSkKK3sKK30KKwordm9pZCBKU1dvcmtsZXRHbG9iYWxTY29wZUJh
c2U6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNQcm94eSogcHJveHkpCit7CisgICAgbV9wcm94
eS5zZXQodm0sIHRoaXMsIHByb3h5KTsKKworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBt
X3Byb3h5LmdldCgpKTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOworfQorCit2
b2lkIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6Y2xlYXJET01HdWFyZGVkT2JqZWN0cygpCit7
CisgICAgYXV0byBndWFyZGVkT2JqZWN0cyA9IG1fZ3VhcmRlZE9iamVjdHM7CisgICAgZm9yIChh
dXRvJiBndWFyZGVkIDogZ3VhcmRlZE9iamVjdHMpCisgICAgICAgIGd1YXJkZWQtPmNsZWFyKCk7
Cit9CisKK3ZvaWQgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjp2aXNpdENoaWxkcmVuKEpTQ2Vs
bCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgYXV0byogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UqPihjZWxsKTsKKyAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgQmFzZTo6dmlzaXRDaGls
ZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0
LT5tX3Byb3h5KTsKK30KKwordm9pZCBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OmRlc3Ryb3ko
SlNDZWxsKiBjZWxsKQoreworICAgIHN0YXRpY19jYXN0PEpTV29ya2xldEdsb2JhbFNjb3BlQmFz
ZSo+KGNlbGwpLT5KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6On5KU1dvcmtsZXRHbG9iYWxTY29w
ZUJhc2UoKTsKK30KKworU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogSlNXb3JrbGV0R2xvYmFsU2Nv
cGVCYXNlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93
cmFwcGVkLmdldCgpOworfQorCitib29sIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6c3VwcG9y
dHNSaWNoU291cmNlSW5mbyhjb25zdCBKU0dsb2JhbE9iamVjdCogb2JqZWN0KQoreworICAgIHJl
dHVybiBKU0dsb2JhbE9iamVjdDo6c3VwcG9ydHNSaWNoU291cmNlSW5mbyhvYmplY3QpOworfQor
Citib29sIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6c2hvdWxkSW50ZXJydXB0U2NyaXB0KGNv
bnN0IEpTR2xvYmFsT2JqZWN0KiBvYmplY3QpCit7CisgICAgcmV0dXJuIEpTR2xvYmFsT2JqZWN0
OjpzaG91bGRJbnRlcnJ1cHRTY3JpcHQob2JqZWN0KTsKK30KKworYm9vbCBKU1dvcmtsZXRHbG9i
YWxTY29wZUJhc2U6OnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQoY29uc3QgSlNH
bG9iYWxPYmplY3QqIG9iamVjdCkKK3sKKyAgICByZXR1cm4gSlNHbG9iYWxPYmplY3Q6OnNob3Vs
ZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQob2JqZWN0KTsKK30KKworUnVudGltZUZsYWdz
IEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6amF2YVNjcmlwdFJ1bnRpbWVGbGFncyhjb25zdCBK
U0dsb2JhbE9iamVjdCogb2JqZWN0KQoreworICAgIGNvbnN0IGF1dG8qIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8Y29uc3QgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlKj4ob2JqZWN0KTsKKyAgICByZXR1
cm4gdGhpc09iamVjdC0+bV93cmFwcGVkLT5qc1J1bnRpbWVGbGFncygpOworfQorCitKU1ZhbHVl
IHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCosIFdvcmtsZXRHbG9iYWxT
Y29wZSYgd29ya2xldEdsb2JhbFNjb3BlKQoreworICAgIHJldHVybiB0b0pTKGV4ZWMsIHdvcmts
ZXRHbG9iYWxTY29wZSk7Cit9CisKK0pTVmFsdWUgdG9KUyhFeGVjU3RhdGUqLCBXb3JrbGV0R2xv
YmFsU2NvcGUmIHdvcmtsZXRHbG9iYWxTY29wZSkKK3sKKyAgICBhdXRvKiBzY3JpcHQgPSB3b3Jr
bGV0R2xvYmFsU2NvcGUuc2NyaXB0KCk7CisgICAgaWYgKCFzY3JpcHQpCisgICAgICAgIHJldHVy
biBqc051bGwoKTsKKyAgICBhdXRvKiBjb250ZXh0V3JhcHBlciA9IHNjcmlwdC0+d29ya2xldEds
b2JhbFNjb3BlV3JhcHBlcigpOworICAgIEFTU0VSVChjb250ZXh0V3JhcHBlcik7CisgICAgcmV0
dXJuIGNvbnRleHRXcmFwcGVyLT5wcm94eSgpOworfQorCitKU1dvcmtsZXRHbG9iYWxTY29wZSog
dG9KU1dvcmtsZXRHbG9iYWxTY29wZShWTSYgdm0sIEpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYg
KCF2YWx1ZS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBjb25zdCBD
bGFzc0luZm8qIGNsYXNzSW5mbyA9IGFzT2JqZWN0KHZhbHVlKS0+Y2xhc3NJbmZvKHZtKTsKKwor
ICAgIGlmIChjbGFzc0luZm8gPT0gSlNQcm94eTo6aW5mbygpKQorICAgICAgICByZXR1cm4ganNE
eW5hbWljQ2FzdDxKU1dvcmtsZXRHbG9iYWxTY29wZSo+KHZtLCBqc0Nhc3Q8SlNQcm94eSo+KGFz
T2JqZWN0KHZhbHVlKSktPnRhcmdldCgpKTsKKworICAgIHJldHVybiBudWxscHRyOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjFjM2Ey
MWExNDIxNDY2MGYwMWM4MzgzMzk5ZWVlNWJiNDcwODYxMQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5oCkBAIC0w
LDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKworI2lu
Y2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNET01XcmFwcGVyLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSlNXb3JrbGV0R2xvYmFsU2NvcGU7CitjbGFz
cyBXb3JrbGV0R2xvYmFsU2NvcGU7CisKK2NsYXNzIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZSA6
IHB1YmxpYyBKU0RPTUdsb2JhbE9iamVjdCB7CisgICAgdXNpbmcgQmFzZSA9IEpTRE9NR2xvYmFs
T2JqZWN0OworcHVibGljOgorICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsK
KworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIFdvcmtsZXRHbG9iYWxTY29wZSYgd3JhcHBlZCgp
IGNvbnN0IHsgcmV0dXJuICptX3dyYXBwZWQ7IH0KKyAgICBKU0M6OkpTUHJveHkqIHByb3h5KCkg
Y29uc3QgeyBBU1NFUlQobV9wcm94eSk7IHJldHVybiBtX3Byb3h5LmdldCgpOyB9CisgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OworCisg
ICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Okdsb2JhbE9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgSlNDOjpH
bG9iYWxPYmplY3RNZXRob2RUYWJsZSBzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlOworCisgICAg
c3RhdGljIGJvb2wgc3VwcG9ydHNSaWNoU291cmNlSW5mbyhjb25zdCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0Kik7CisgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJydXB0U2NyaXB0KGNvbnN0IEpTQzo6
SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcnJ1cHRTY3JpcHRC
ZWZvcmVUaW1lb3V0KGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgSlND
OjpSdW50aW1lRmxhZ3MgamF2YVNjcmlwdFJ1bnRpbWVGbGFncyhjb25zdCBKU0M6OkpTR2xvYmFs
T2JqZWN0Kik7CisgICAgc3RhdGljIHZvaWQgcXVldWVUYXNrVG9FdmVudExvb3AoSlNDOjpKU0ds
b2JhbE9iamVjdCYsIFJlZjxKU0M6Ok1pY3JvdGFzaz4mJik7CisKKyAgICB2b2lkIGNsZWFyRE9N
R3VhcmRlZE9iamVjdHMoKTsKKworcHJvdGVjdGVkOgorICAgIEpTV29ya2xldEdsb2JhbFNjb3Bl
QmFzZShKU0M6OlZNJiwgSlNDOjpTdHJ1Y3R1cmUqLCBSZWZQdHI8V29ya2xldEdsb2JhbFNjb3Bl
PiYmKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mLCBKU0M6OkpTUHJveHkqKTsK
KworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDOjpKU0NlbGwqLCBKU0M6OlNsb3RW
aXNpdG9yJik7CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPFdvcmtsZXRHbG9iYWxTY29wZT4gbV93
cmFwcGVkOworICAgIEpTQzo6V3JpdGVCYXJyaWVyPEpTQzo6SlNQcm94eT4gbV9wcm94eTsKK307
CisKKy8vIFJldHVybnMgYSBKU1dvcmtsZXRHbG9iYWxTY29wZSBvciBqc051bGwoKQorLy8gQWx3
YXlzIGlnbm9yZXMgdGhlIGV4ZWNTdGF0ZSBhbmQgcGFzc2VkIGdsb2JhbE9iamVjdCwgV29ya2xl
dEdsb2JhbFNjb3BlIGlzIGl0c2VsZiBhIGdsb2JhbE9iamVjdCBhbmQgd2lsbCBhbHdheXMgdXNl
IGl0cyBvd24gcHJvdG90eXBlIGNoYWluLgorSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3Rh
dGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFdvcmtsZXRHbG9iYWxTY29wZSYpOworaW5saW5lIEpT
Qzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBXb3JrbGV0R2xvYmFsU2NvcGUqIHNjb3BlKSB7IHJldHVybiBzY29wZSA/
IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCAqc2NvcGUpIDogSlNDOjpqc051bGwoKTsgfQorSlND
OjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBXb3JrbGV0R2xvYmFsU2NvcGUmKTsKK2lu
bGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgV29ya2xldEdsb2Jh
bFNjb3BlKiBzY29wZSkgeyByZXR1cm4gc2NvcGUgPyB0b0pTKGV4ZWMsICpzY29wZSkgOiBKU0M6
OmpzTnVsbCgpOyB9CisKK0pTV29ya2xldEdsb2JhbFNjb3BlKiB0b0pTV29ya2xldEdsb2JhbFNj
b3BlKEpTQzo6Vk0mLCBKU0M6OkpTVmFsdWUpOworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKENTU19QQUlOVElOR19BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRTdGF0ZS5jcHAKaW5kZXggZWVlODM5Y2M0MjY0ZmJlNGEyOWRmYjk5MWI1ZmRl
NTBkNjBiYWIxYy4uYTFiYTE0NTI4MzRkOGNhM2NlNmFmNDc3MTFlOTcwYjM4OGNjMWIwNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcApAQCAtMzUsMTEgKzM1
LDE0IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd0Jhc2UuaCIK
ICNpbmNsdWRlICJKU1dvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiSlNXb3JrbGV0R2xv
YmFsU2NvcGUuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1
ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgog
I2luY2x1ZGUgIldvcmtlclNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJXb3JrbGV0R2xv
YmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0NhbGxGcmFtZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTR2xvYmFsT2JqZWN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nSW5saW5l
cy5oPgpAQCAtOTUsOSArOTgsMTYgQEAgSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZUZyb21QYWdl
KERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIFBhZ2UqIHBhZ2UpCiAgICAgcmV0dXJuIHBhZ2UgPyBw
YWdlLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5nbG9iYWxPYmplY3Qod29ybGQpLT5nbG9iYWxFeGVj
KCkgOiBudWxscHRyOwogfQogCi1KU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbVdvcmtlckds
b2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlKiB3b3JrZXJHbG9iYWxTY29wZSkKK0pTQzo6RXhl
Y1N0YXRlKiBleGVjU3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUm
IHdvcmtlckdsb2JhbFNjb3BlKQogewotICAgIHJldHVybiB3b3JrZXJHbG9iYWxTY29wZS0+c2Ny
aXB0KCktPndvcmtlckdsb2JhbFNjb3BlV3JhcHBlcigpLT5nbG9iYWxFeGVjKCk7CisgICAgcmV0
dXJuIHdvcmtlckdsb2JhbFNjb3BlLnNjcmlwdCgpLT53b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIo
KS0+Z2xvYmFsRXhlYygpOwogfQogCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCitKU0M6
OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbVdvcmtsZXRHbG9iYWxTY29wZShXb3JrbGV0R2xvYmFs
U2NvcGUmIHdvcmtsZXRHbG9iYWxTY29wZSkKK3sKKyAgICByZXR1cm4gd29ya2xldEdsb2JhbFNj
b3BlLnNjcmlwdCgpLT53b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKCktPmdsb2JhbEV4ZWMoKTsK
K30KKyNlbmRpZgorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaApp
bmRleCA3NDQyMWZkOTViYTE3NzU2ZWI4OWMwMDQyNmMzM2ZiNTQ1NDk4MzkwLi4xNTM4NGE3MTFm
MzU2Y2VlNDc4Y2E5OWUyNTU1YjFlZWEyNDgyYWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdFN0YXRlLmgKQEAgLTQ0LDYgKzQ0LDkgQEAgY2xhc3MgTm9kZTsKIGNsYXNzIFBh
Z2U7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgV29ya2VyR2xvYmFsU2Nv
cGU7CisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCitjbGFzcyBXb3JrbGV0R2xvYmFsU2Nv
cGU7CisjZW5kaWYKIAogRE9NV2luZG93KiBkb21XaW5kb3dGcm9tRXhlY1N0YXRlKEpTQzo6RXhl
Y1N0YXRlKik7CiBGcmFtZSogZnJhbWVGcm9tRXhlY1N0YXRlKEpTQzo6RXhlY1N0YXRlKik7CkBA
IC01Myw2ICs1Niw5IEBAIEpTQzo6RXhlY1N0YXRlKiBtYWluV29ybGRFeGVjU3RhdGUoRnJhbWUq
KTsKIAogSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZUZyb21Ob2RlKERPTVdyYXBwZXJXb3JsZCYs
IE5vZGUqKTsKIFdFQkNPUkVfRVhQT1JUIEpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tUGFn
ZShET01XcmFwcGVyV29ybGQmLCBQYWdlKik7Ci1KU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJv
bVdvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlKik7CitKU0M6OkV4ZWNTdGF0ZSog
ZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlJik7CisjaWYg
RU5BQkxFKENTU19QQUlOVElOR19BUEkpCitKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbVdv
cmtsZXRHbG9iYWxTY29wZShXb3JrbGV0R2xvYmFsU2NvcGUmKTsKKyNlbmRpZgogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9X
ZWJDb3JlQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3Jl
QnVpbHRpbk5hbWVzLmgKaW5kZXggMWM5Mzg1OWVjYzE2ODc0YzBjMDdlMzczYjI5NzNjNDI1MDVk
ZWE4MC4uMjkyZmQ5NzkyNDQ5ZDM3N2QyNzVjMjgyNGJlMTUyZGNhNmZkNjkxZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaApAQCAtNTEs
NyArNTEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oQ3JlZGVudGlhbCkgXAog
ICAgIG1hY3JvKENyZWRlbnRpYWxzQ29udGFpbmVyKSBcCiAgICAgbWFjcm8oQ1NTQW5pbWF0aW9u
KSBcCi0gICAgbWFjcm8oQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUpIFwKICAgICBtYWNybyhD
U1NUcmFuc2l0aW9uKSBcCiAgICAgbWFjcm8oQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5KSBcCiAgICAg
bWFjcm8oRGF0YWJhc2UpIFwKQEAgLTEyMyw2ICsxMjIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgbWFjcm8oU1FMUmVzdWx0U2V0KSBcCiAgICAgbWFjcm8oU1FMUmVzdWx0U2V0Um93TGlz
dCkgXAogICAgIG1hY3JvKFNRTFRyYW5zYWN0aW9uKSBcCisgICAgbWFjcm8oUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUpIFwKICAgICBtYWNybyhQZXJmb3JtYW5jZUVudHJ5KSBcCiAgICAgbWFjcm8o
UGVyZm9ybWFuY2VFbnRyeUxpc3QpIFwKICAgICBtYWNybyhQZXJmb3JtYW5jZU1hcmspIFwKQEAg
LTIxMCw2ICsyMTAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oV2ViS2l0TWVk
aWFLZXlzKSBcCiAgICAgbWFjcm8oV2ViU29ja2V0KSBcCiAgICAgbWFjcm8oV2luZG93Q2xpZW50
KSBcCisgICAgbWFjcm8oV29ya2xldCkgXAorICAgIG1hY3JvKFdvcmtsZXRHbG9iYWxTY29wZSkg
XAogICAgIG1hY3JvKFdyaXRhYmxlU3RyZWFtKSBcCiAgICAgbWFjcm8oWE1MSHR0cFJlcXVlc3Qp
IFwKICAgICBtYWNybyhhcHBlbmRGcm9tSlMpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggNDhmY2U3YmMxNmE4ODBkNjNm
NDMyYTAxOGYxZmVlMmY2N2JmNWJkYy4uNjMxYzM5NDRlY2QyN2U1MmE3ZDUyMzJhYjY2MGMwZDY5
ZDdmYjVkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KQEAgLTQ5Nyw3ICs0OTcsNyBAQCBzdWIgR2V0Q3VzdG9tSXNSZWFjaGFi
bGUKIHN1YiBJc0RPTUdsb2JhbE9iamVjdAogewogICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsK
LSAgICByZXR1cm4gJGludGVyZmFjZS0+dHlwZS0+bmFtZSBlcSAiRE9NV2luZG93IiB8fCAkaW50
ZXJmYWNlLT50eXBlLT5uYW1lIGVxICJSZW1vdGVET01XaW5kb3ciIHx8ICRjb2RlR2VuZXJhdG9y
LT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiV29ya2VyR2xvYmFsU2NvcGUiKSB8fCAk
aW50ZXJmYWNlLT50eXBlLT5uYW1lIGVxICJUZXN0R2xvYmFsT2JqZWN0IjsKKyAgICByZXR1cm4g
JGludGVyZmFjZS0+dHlwZS0+bmFtZSBlcSAiRE9NV2luZG93IiB8fCAkaW50ZXJmYWNlLT50eXBl
LT5uYW1lIGVxICJSZW1vdGVET01XaW5kb3ciIHx8ICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0lu
dGVyZmFjZSgkaW50ZXJmYWNlLCAiV29ya2VyR2xvYmFsU2NvcGUiKSB8fCAkY29kZUdlbmVyYXRv
ci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldvcmtsZXRHbG9iYWxTY29wZSIpIHx8
ICRpbnRlcmZhY2UtPnR5cGUtPm5hbWUgZXEgIlRlc3RHbG9iYWxPYmplY3QiOwogfQogCiBzdWIg
U2hvdWxkVXNlR2xvYmFsT2JqZWN0UHJvdG90eXBlCkBAIC01MDYsNiArNTA2LDggQEAgc3ViIFNo
b3VsZFVzZUdsb2JhbE9iamVjdFByb3RvdHlwZQogCiAgICAgIyBGb3Igd29ya2VycywgdGhlIGds
b2JhbCBvYmplY3QgaXMgYSBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS4KICAgICByZXR1cm4g
MCBpZiAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIGVxICJXb3JrZXJHbG9iYWxTY29wZSI7CisgICAg
IyBGb3Igd29ya2xldHMsIHRoZSBnbG9iYWwgb2JqZWN0IGlzIGEgUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUuCisgICAgcmV0dXJuIDAgaWYgJGludGVyZmFjZS0+dHlwZS0+bmFtZSBlcSAiV29ya2xl
dEdsb2JhbFNjb3BlIjsKIAogICAgIHJldHVybiBJc0RPTUdsb2JhbE9iamVjdCgkaW50ZXJmYWNl
KTsKIH0KQEAgLTI1MzcsNyArMjUzOSw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtLCBwcm94
eSk7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHB0
cjtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIH1cblxuIik7Ci0gICAg
fSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJX
b3JrZXJHbG9iYWxTY29wZSIpKSB7CisgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVy
aXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrZXJHbG9iYWxTY29wZSIpIHx8ICRjb2RlR2Vu
ZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiV29ya2xldEdsb2JhbFNjb3Bl
IikpIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgJGNsYXNzTmFt
ZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWY8JGlt
cGxUeXBlPiYmIGltcGwsIEpTQzo6SlNQcm94eSogcHJveHkpXG4iKTsKICAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICB7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IiAgICAgICAgJGNsYXNzTmFtZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2Vs
bDwkY2xhc3NOYW1lPih2bS5oZWFwKSkgJHtjbGFzc05hbWV9KHZtLCBzdHJ1Y3R1cmUsIFdURk1v
dmUoaW1wbCkpO1xuIik7CkBAIC0yODQ1LDcgKzI4NDcsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIK
ICAgICAjIENvbnN0cnVjdG9yCiAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ci
IHx8ICRpbnRlcmZhY2VOYW1lIGVxICJSZW1vdGVET01XaW5kb3ciKSB7CiAgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgJGNsYXNzTmFtZShKU0M6OlZNJiwgSlNDOjpTdHJ1Y3R1cmUq
LCBSZWY8JGltcGxUeXBlPiYmLCBKU1dpbmRvd1Byb3h5Kik7XG4iKTsKLSAgICB9IGVsc2lmICgk
Y29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldvcmtlckdsb2Jh
bFNjb3BlIikpIHsKKyAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZh
Y2UoJGludGVyZmFjZSwgIldvcmtlckdsb2JhbFNjb3BlIikgfHwgJGNvZGVHZW5lcmF0b3ItPklu
aGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrbGV0R2xvYmFsU2NvcGUiKSkgewogICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICRjbGFzc05hbWUoSlNDOjpWTSYsIEpTQzo6
U3RydWN0dXJlKiwgUmVmPCRpbXBsVHlwZT4mJik7XG4iKTsKICAgICB9IGVsc2lmICghTmVlZHNJ
bXBsZW1lbnRhdGlvbkNsYXNzKCRpbnRlcmZhY2UpKSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgJGNsYXNzTmFtZShKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0
Jik7XG5cbiIpOwpAQCAtMjg1NSw3ICsyODU3LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAKICAg
ICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIgfHwgJGludGVyZmFjZU5hbWUgZXEg
IlJlbW90ZURPTVdpbmRvdyIpIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mLCBKU1dpbmRvd1Byb3h5Kik7XG4iKTsKLSAgICB9
IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldv
cmtlckdsb2JhbFNjb3BlIikpIHsKKyAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SW5oZXJp
dHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldvcmtlckdsb2JhbFNjb3BlIikgfHwgJGNvZGVHZW5l
cmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrbGV0R2xvYmFsU2NvcGUi
KSkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oSlNDOjpWTSYsIEpTQzo6SlNQcm94eSopO1xuIik7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTtc
biIpOwpAQCAtMzY2Miw2ICszNjY0LDggQEAgc3ViIEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRp
dGlvbmFsU3RyaW5nRm9yRXhwb3NlZAogICAgICAgICBwdXNoKEAkY29uanVuY3RzLCAianNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oIiAuICRnbG9iYWxPYmplY3RQdHIgLiAiKS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5pc0RvY3VtZW50KCkiKTsKICAgICB9IGVsc2lmICgkZXhwb3NlZCBl
cSAiV29ya2VyIikgewogICAgICAgICBwdXNoKEAkY29uanVuY3RzLCAianNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oIiAuICRnbG9iYWxPYmplY3RQdHIgLiAiKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5pc1dvcmtlckdsb2JhbFNjb3BlKCkiKTsKKyAgICB9IGVsc2lmICgkZXhwb3NlZCBl
cSAiV29ya2xldCIpIHsKKyAgICAgICAgcHVzaChAJGNvbmp1bmN0cywgImpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KCIgLiAkZ2xvYmFsT2JqZWN0UHRyIC4gIiktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+aXNXb3JrbGV0R2xvYmFsU2NvcGUoKSIpOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IGFzc2VydCgiVW5yZWNvZ25pemVkIHZhbHVlICciIC4gRHVtcGVyKCRjb250ZXh0LT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntFeHBvc2VkfSkgLiAiJyBmb3IgdGhlIEV4cG9zZWQgZXh0ZW5kZWQgYXR0
cmlidXRlIG9uICciIC4gcmVmKCRjb250ZXh0KSAuICInLiIpOwogICAgIH0KQEAgLTQyNTIsNyAr
NDI1Niw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIDogJHBhcmVudENsYXNzTmFtZSh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKGlt
cGwpLCBwcm94eSlcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7Ci0gICAgfSBlbHNpZiAoJGNvZGVHZW5l
cmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrZXJHbG9iYWxTY29wZSIp
KSB7CisgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRl
cmZhY2UsICJXb3JrZXJHbG9iYWxTY29wZSIpIHx8ICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0lu
dGVyZmFjZSgkaW50ZXJmYWNlLCAiV29ya2xldEdsb2JhbFNjb3BlIikpIHsKICAgICAgICAgQWRk
SW5jbHVkZXNGb3JJbXBsZW1lbnRhdGlvblR5cGVJbkltcGwoJGludGVyZmFjZU5hbWUpOwogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiR7Y2xhc3NOYW1lfTo6JGNsYXNzTmFtZShWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWY8JGltcGxUeXBlPiYmIGltcGwpXG4iKTsKICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgOiAkcGFyZW50Q2xhc3NOYW1lKHZtLCBzdHJ1Y3R1
cmUsIFdURk1vdmUoaW1wbCkpXG4iKTsKQEAgLTQyNzMsNyArNDI3Nyw3IEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2NsYXNz
TmFtZX06OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNXaW5kb3dQcm94eSogcHJveHkpXG4iKTsK
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIHByb3h5KTtcblxuIik7Ci0gICAg
fSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJX
b3JrZXJHbG9iYWxTY29wZSIpKSB7CisgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVy
aXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrZXJHbG9iYWxTY29wZSIpIHx8ICRjb2RlR2Vu
ZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiV29ya2xldEdsb2JhbFNjb3Bl
IikpIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7Y2xhc3NOYW1lfTo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBKU1Byb3h5KiBwcm94eSlcbiIpOwogICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSwgcHJveHkpO1xuXG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGwKaW5kZXggM2UwNWM3YjQ5Njgy
YmVlNjRmNjg5OGI0ZGY0NDg0MjUxMzQzOGI1MS4uNDZjZDNiOGY5Y2E5YzExYWE1MWZiZDlmYTg3
NjBmYTdiMGZkOTMzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9wcmVwcm9jZXNzLWlkbHMucGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9wcmVwcm9jZXNzLWlkbHMucGwKQEAgLTM2LDYgKzM2LDggQEAgbXkgJHdpbmRvd0NvbnN0cnVj
dG9yc0ZpbGU7CiBteSAkd29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlOwogbXkgJGRl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZTsKIG15ICRzZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlOworbXkgJHdvcmtsZXRHbG9iYWxTY29wZUNv
bnN0cnVjdG9yc0ZpbGU7CitteSAkcGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNG
aWxlOwogbXkgJHN1cHBsZW1lbnRhbE1ha2VmaWxlRGVwczsKIAogR2V0T3B0aW9ucygnZGVmaW5l
cz1zJyA9PiBcJGRlZmluZXMsCkBAIC00Niw2ICs0OCw4IEBAIEdldE9wdGlvbnMoJ2RlZmluZXM9
cycgPT4gXCRkZWZpbmVzLAogICAgICAgICAgICAnd29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rv
cnNGaWxlPXMnID0+IFwkd29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlLAogICAgICAg
ICAgICAnZGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlPXMnID0+IFwk
ZGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlLAogICAgICAgICAgICAn
c2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZT1zJyA9PiBcJHNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUsCisgICAgICAgICAgICd3b3JrbGV0R2xv
YmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlPXMnID0+IFwkd29ya2xldEdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3JzRmlsZSwKKyAgICAgICAgICAgJ3BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0
b3JzRmlsZT1zJyA9PiBcJHBhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSwK
ICAgICAgICAgICAgJ3N1cHBsZW1lbnRhbE1ha2VmaWxlRGVwcz1zJyA9PiBcJHN1cHBsZW1lbnRh
bE1ha2VmaWxlRGVwcyk7CiAKIGRpZSgnTXVzdCBzcGVjaWZ5ICNkZWZpbmUgbWFjcm9zIHVzaW5n
IC0tZGVmaW5lcy4nKSB1bmxlc3MgZGVmaW5lZCgkZGVmaW5lcyk7CkBAIC01NCw2ICs1OCw4IEBA
IGRpZSgnTXVzdCBzcGVjaWZ5IGFuIG91dHB1dCBmaWxlIHVzaW5nIC0td2luZG93Q29uc3RydWN0
b3JzRmlsZS4nKSB1bmxlc3MgZGVmaW5lCiBkaWUoJ011c3Qgc3BlY2lmeSBhbiBvdXRwdXQgZmls
ZSB1c2luZyAtLXdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZS4nKSB1bmxlc3MgZGVm
aW5lZCgkd29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlKTsKIGRpZSgnTXVzdCBzcGVj
aWZ5IGFuIG91dHB1dCBmaWxlIHVzaW5nIC0tZGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25z
dHJ1Y3RvcnNGaWxlLicpIHVubGVzcyBkZWZpbmVkKCRkZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZUNvbnN0cnVjdG9yc0ZpbGUpOwogZGllKCdNdXN0IHNwZWNpZnkgYW4gb3V0cHV0IGZpbGUgdXNp
bmcgLS1zZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlLicpIHVubGVzcyBk
ZWZpbmVkKCRzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlKTsKK2RpZSgn
TXVzdCBzcGVjaWZ5IGFuIG91dHB1dCBmaWxlIHVzaW5nIC0td29ya2xldEdsb2JhbFNjb3BlQ29u
c3RydWN0b3JzRmlsZS4nKSB1bmxlc3MgZGVmaW5lZCgkd29ya2xldEdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3JzRmlsZSk7CitkaWUoJ011c3Qgc3BlY2lmeSBhbiBvdXRwdXQgZmlsZSB1c2luZyAtLXBh
aW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZS4nKSB1bmxlc3MgZGVmaW5lZCgk
cGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlKTsKIGRpZSgnTXVzdCBzcGVj
aWZ5IHRoZSBmaWxlIGxpc3RpbmcgYWxsIElETHMgdXNpbmcgLS1pZGxGaWxlc0xpc3QuJykgdW5s
ZXNzIGRlZmluZWQoJGlkbEZpbGVzTGlzdCk7CiAKICRzdXBwbGVtZW50YWxEZXBlbmRlbmN5Rmls
ZSA9IEN5Z3dpblBhdGhJZk5lZWRlZCgkc3VwcGxlbWVudGFsRGVwZW5kZW5jeUZpbGUpOwpAQCAt
NjEsNiArNjcsOCBAQCAkd2luZG93Q29uc3RydWN0b3JzRmlsZSA9IEN5Z3dpblBhdGhJZk5lZWRl
ZCgkd2luZG93Q29uc3RydWN0b3JzRmlsZSk7CiAkd29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rv
cnNGaWxlID0gQ3lnd2luUGF0aElmTmVlZGVkKCR3b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9y
c0ZpbGUpOwogJGRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSA9IEN5
Z3dpblBhdGhJZk5lZWRlZCgkZGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNG
aWxlKTsKICRzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlID0gQ3lnd2lu
UGF0aElmTmVlZGVkKCRzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlKTsK
KyR3b3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlID0gQ3lnd2luUGF0aElmTmVlZGVk
KCR3b3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlKTsKKyRwYWludFdvcmtsZXRHbG9i
YWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgPSBDeWd3aW5QYXRoSWZOZWVkZWQoJHBhaW50V29ya2xl
dEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSk7CiAkc3VwcGxlbWVudGFsTWFrZWZpbGVEZXBz
ID0gQ3lnd2luUGF0aElmTmVlZGVkKCRzdXBwbGVtZW50YWxNYWtlZmlsZURlcHMpOwogCiBvcGVu
IEZILCAiPCAkaWRsRmlsZXNMaXN0IiBvciBkaWUgIkNhbm5vdCBvcGVuICRpZGxGaWxlc0xpc3Rc
biI7CkBAIC04MCw2ICs4OCw4IEBAIG15ICR3aW5kb3dDb25zdHJ1Y3RvcnNDb2RlID0gIiI7CiBt
eSAkd29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNDb2RlID0gIiI7CiBteSAkZGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNDb2RlID0gIiI7CiBteSAkc2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzQ29kZSA9ICIiOworbXkgJHdvcmtsZXRHbG9iYWxTY29w
ZUNvbnN0cnVjdG9yc0NvZGUgPSAiIjsKK215ICRwYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0
cnVjdG9yc0NvZGUgPSAiIjsKIAogIyBHZXQgcmlkIG9mIGR1cGxpY2F0ZXMgaW4gaWRsRmlsZXMg
YXJyYXkuCiBteSAlaWRsRmlsZUhhc2ggPSBtYXAgeyAkXywgMSB9IEBpZGxGaWxlczsKQEAgLTE0
Myw2ICsxNTMsMTAgQEAgZm9yZWFjaCBteSAkaWRsRmlsZSAoc29ydCBrZXlzICVpZGxGaWxlSGFz
aCkgewogICAgICAgICAgICAgICAgICAgICAkZGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25z
dHJ1Y3RvcnNDb2RlIC49ICRhdHRyaWJ1dGVDb2RlOwogICAgICAgICAgICAgICAgIH0gZWxzaWYg
KCRnbG9iYWxDb250ZXh0IGVxICJTZXJ2aWNlV29ya2VyIikgewogICAgICAgICAgICAgICAgICAg
ICAkc2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzQ29kZSAuPSAkYXR0cmlidXRl
Q29kZTsKKyAgICAgICAgICAgICAgICB9IGVsc2lmICgkZ2xvYmFsQ29udGV4dCBlcSAiV29ya2xl
dCIpIHsKKyAgICAgICAgICAgICAgICAgICAgJHdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9y
c0NvZGUgLj0gJGF0dHJpYnV0ZUNvZGU7CisgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGdsb2Jh
bENvbnRleHQgZXEgIlBhaW50V29ya2xldCIpIHsKKyAgICAgICAgICAgICAgICAgICAgJHBhaW50
V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzQ29kZSAuPSAkYXR0cmlidXRlQ29kZTsKICAg
ICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBkaWUgIlVuc3VwcG9y
dGVkIGdsb2JhbCBjb250ZXh0ICckZ2xvYmFsQ29udGV4dCcgdXNlZCBpbiBbRXhwb3NlZF0gYXQg
JGlkbEZpbGUiOwogICAgICAgICAgICAgICAgIH0KQEAgLTE1Nyw2ICsxNzEsOCBAQCBHZW5lcmF0
ZVBhcnRpYWxJbnRlcmZhY2UoIkRPTVdpbmRvdyIsICR3aW5kb3dDb25zdHJ1Y3RvcnNDb2RlLCAk
d2luZG93Q29uc3RydWN0bwogR2VuZXJhdGVQYXJ0aWFsSW50ZXJmYWNlKCJXb3JrZXJHbG9iYWxT
Y29wZSIsICR3b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0NvZGUsICR3b3JrZXJHbG9iYWxT
Y29wZUNvbnN0cnVjdG9yc0ZpbGUpOwogR2VuZXJhdGVQYXJ0aWFsSW50ZXJmYWNlKCJEZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZSIsICRkZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVj
dG9yc0NvZGUsICRkZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOwog
R2VuZXJhdGVQYXJ0aWFsSW50ZXJmYWNlKCJTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUiLCAkc2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzQ29kZSwgJHNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOworR2VuZXJhdGVQYXJ0aWFsSW50ZXJmYWNlKCJXb3Jr
bGV0R2xvYmFsU2NvcGUiLCAkd29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzQ29kZSwgJHdv
cmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOworR2VuZXJhdGVQYXJ0aWFsSW50ZXJm
YWNlKCJQYWludFdvcmtsZXRHbG9iYWxTY29wZSIsICRwYWludFdvcmtsZXRHbG9iYWxTY29wZUNv
bnN0cnVjdG9yc0NvZGUsICRwYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUp
OwogCiAjIFJlc29sdmVzIHBhcnRpYWwgaW50ZXJmYWNlcyBhbmQgaW1wbGVtZW50cyBkZXBlbmRl
bmNpZXMuCiBmb3JlYWNoIG15ICRpZGxGaWxlIChzb3J0IGtleXMgJXN1cHBsZW1lbnRhbERlcGVu
ZGVuY2llcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50SW1hZ2VW
YWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmNwcAppbmRl
eCBhNjkwZTQxZDc2NzFkZWEwMzUzMjFmYWZlN2I3ZmE5NzExYWJkYTUyLi43MzFmMzFkZDRlOGJk
NWNkMDQyNWNiYmZiZjQ2MjNiNzEwYjE4NGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFp
bnRJbWFnZVZhbHVlLmNwcApAQCAtMjksOCArMjksOCBAQAogCiAjaWYgRU5BQkxFKENTU19QQUlO
VElOR19BUEkpCiAKLSNpbmNsdWRlICJDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgogI2lu
Y2x1ZGUgIkN1c3RvbVBhaW50SW1hZ2UuaCIKKyNpbmNsdWRlICJQYWludFdvcmtsZXRHbG9iYWxT
Y29wZS5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CiAKQEAgLTUwLDggKzUwLDExIEBAIFJlZlB0cjxJbWFnZT4gQ1NTUGFp
bnRJbWFnZVZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50JiByZW5kZXJFbGVtZW50LCBjb25zdCBG
bG9hCiB7CiAgICAgaWYgKHNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICBhdXRvJiBzZWxlY3RlZEdsb2JhbFNjb3BlID0gcmVuZGVyRWxlbWVudC5kb2N1bWVudCgp
LmVuc3VyZUNTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlKCk7Ci0gICAgYXV0byogcmVnaXN0cmF0
aW9uID0gc2VsZWN0ZWRHbG9iYWxTY29wZS5wYWludERlZmluaXRpb25NYXAoKS5nZXQobV9uYW1l
KTsKKyAgICBhdXRvKiBzZWxlY3RlZEdsb2JhbFNjb3BlID0gcmVuZGVyRWxlbWVudC5kb2N1bWVu
dCgpLnBhaW50V29ya2xldEdsb2JhbFNjb3BlKCk7CisgICAgaWYgKCFzZWxlY3RlZEdsb2JhbFNj
b3BlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KHNlbGVjdGVkR2xvYmFsU2NvcGUtPnBhaW50RGVmaW5pdGlvbkxvY2soKSk7CisgICAgYXV0byog
cmVnaXN0cmF0aW9uID0gc2VsZWN0ZWRHbG9iYWxTY29wZS0+cGFpbnREZWZpbml0aW9uTWFwKCku
Z2V0KG1fbmFtZSk7CiAKICAgICBpZiAoIXJlZ2lzdHJhdGlvbikKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50V29ya2xldEdsb2JhbFNj
b3BlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQ5NzNjZDM4ZDY4ZTQzY2M1
Mjg1YzU4MTA0YjI1ZGRiNmUxMGMyOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgotCi0jaWYgRU5BQkxFKENTU19QQUlOVElO
R19BUEkpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmPENTU1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlPiBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6Y3JlYXRlKCkKLXsKLSAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSgpKTsKLX0KLQotQ1NT
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OkNTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlKCkKLXsK
LX0KLQotZG91YmxlIENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlOjpkZXZpY2VQaXhlbFJhdGlv
KCkKLXsKLSAgICByZXR1cm4gMS4wOwotfQotCi1FeGNlcHRpb25Pcjx2b2lkPiBDU1NQYWludFdv
cmtsZXRHbG9iYWxTY29wZTo6YWRkUmVnaXN0ZXJlZFBhaW50KCkKLXsKLSAgICByZXR1cm4geyB9
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMjNiMGQ5ZDhmM2YwMjM3ZTI3OTJmY2VmN2U0NzdmZTU4YzYyYTMwOC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDY3
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQotCi0jaW5jbHVkZSAi
Q1NTUGFpbnRDYWxsYmFjay5oIgotI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCi0jaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIEpTVmFsdWU7Ci0KLX0gLy8g
bmFtZXNwYWNlIEpTQwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIENTU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlIDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGU+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENTU1BhaW50V29ya2xldEdsb2JhbFNj
b3BlPiBjcmVhdGUoKTsKLQotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGFkZFJlZ2lzdGVyZWRQYWlu
dCgpOwotICAgIGRvdWJsZSBkZXZpY2VQaXhlbFJhdGlvKCk7Ci0KLSAgICBzdHJ1Y3QgUGFpbnRE
ZWZpbml0aW9uIHsKLSAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nIG5hbWU7Ci0gICAgICAgIGNv
bnN0IFJlZjxDU1NQYWludENhbGxiYWNrPiBwYWludENhbGxiYWNrOwotICAgICAgICBjb25zdCBW
ZWN0b3I8U3RyaW5nPiBpbnB1dFByb3BlcnRpZXM7Ci0gICAgICAgIGNvbnN0IFZlY3RvcjxTdHJp
bmc+IGlucHV0QXJndW1lbnRzOwotICAgIH07Ci0KLSAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1
bmlxdWVfcHRyPFBhaW50RGVmaW5pdGlvbj4+JiBwYWludERlZmluaXRpb25NYXAoKSB7IHJldHVy
biBtX3BhaW50RGVmaW5pdGlvbk1hcDsgfQotCi1wcml2YXRlOgotICAgIENTU1BhaW50V29ya2xl
dEdsb2JhbFNjb3BlKCk7Ci0KLSAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFBh
aW50RGVmaW5pdGlvbj4+IG1fcGFpbnREZWZpbml0aW9uTWFwOwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGUuaWRsIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTUzNmMw
YTQxMzk1YzBhMWEwODRmYTFmN2ViNWE2YzJiYTcyYTYxZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotLyoKLSog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSoKLSog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0qIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotKiBhcmUgbWV0OgotKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0qIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0qICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSoKLSog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0qIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0qIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0qIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0qLwotCi1bCi0gICAgRW5hYmxlZEF0UnVudGltZT1DU1NQYWludGluZ0FQSSwK
LSAgICBDb25kaXRpb25hbD1DU1NfUEFJTlRJTkdfQVBJLAotICAgIEltcGxlbWVudGF0aW9uTGFj
a3NWVGFibGUsCi0gICAgSlNDdXN0b21NYXJrRnVuY3Rpb24sCi0gICAgSlNHZW5lcmF0ZVRvTmF0
aXZlT2JqZWN0Ci1dIGludGVyZmFjZSBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSB7Ci0gICAg
W0N1c3RvbSwgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgcmVnaXN0ZXJQYWludChET01TdHJpbmcg
bmFtZSwgRnVuY3Rpb24gcGFpbnRDdG9yKTsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5yZXN0
cmljdGVkIGRvdWJsZSBkZXZpY2VQaXhlbFJhdGlvOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RP
TUNTU1BhaW50V29ya2xldC5jcHAKaW5kZXggMTIwNjgxYjhkNzYxMzQ2ZGE3MmFjYzVhMGIyMjY5
ZTE0MDczNTg5Yi4uNjVhMmZkZjhkZmFjYjRkN2Y3MWQ3NjFjYjIxNjZiMWE5Mjg0YzA3MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5jcHAKQEAgLTI4LDE2ICsyOCwx
NyBAQAogCiAjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCiAKLSNpbmNsdWRlICJDU1NQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIkRPTUNTU05hbWVzcGFjZS5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiV29ya2xldC5oIgorCiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ1NTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUmIERPTUNTU1BhaW50V29ya2xldDo6ZW5zdXJlUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUoRG9jdW1lbnQmIGRvY3VtZW50KQorV29ya2xldCYgRE9NQ1NTUGFpbnRXb3JrbGV0
OjplbnN1cmVQYWludFdvcmtsZXQoRG9jdW1lbnQmIGRvY3VtZW50KQogewotICAgIHJldHVybiBk
b2N1bWVudC5lbnN1cmVDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSgpOworICAgIHJldHVybiBk
b2N1bWVudC5lbnN1cmVQYWludFdvcmtsZXQoKTsKIH0KIAogRE9NQ1NTUGFpbnRXb3JrbGV0KiBE
T01DU1NQYWludFdvcmtsZXQ6OmZyb20oRE9NQ1NTTmFtZXNwYWNlJiBjc3MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmgKaW5kZXggZWU1ZWZiMTFkMTliYjYyZjM4ZTU2ZTEw
ZTVkNjE2M2NjOWQ4ZmIzZi4uYTJjYjM3M2Y2YTAzNDEzZDEyMWI0MDE0MzRiZmQ5ZWY5OWE5NzZm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuaApAQCAtMzUsMTQgKzM1
LDE0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgQ1NT
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU7CitjbGFzcyBXb3JrbGV0OwogY2xhc3MgRE9NQ1NTTmFt
ZXNwYWNlOwogCiBjbGFzcyBET01DU1NQYWludFdvcmtsZXQgZmluYWwgOiBwdWJsaWMgU3VwcGxl
bWVudDxET01DU1NOYW1lc3BhY2U+IHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBET01DU1NQYWlu
dFdvcmtsZXQoRE9NQ1NTTmFtZXNwYWNlJikgeyB9CiAKLSAgICBzdGF0aWMgQ1NTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUmIGVuc3VyZVBhaW50V29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50Jik7
CisgICAgc3RhdGljIFdvcmtsZXQmIGVuc3VyZVBhaW50V29ya2xldChEb2N1bWVudCYpOwogCiBw
cml2YXRlOgogICAgIHN0YXRpYyBET01DU1NQYWludFdvcmtsZXQqIGZyb20oRE9NQ1NTTmFtZXNw
YWNlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuaWRsCmluZGV4IDE5
MGNkYjQ1ZWM3NTNkZWJiZTk2ZjhkODMzODEzZjQ0NjM1YWU4YzMuLmFhNTllNWVlMmRlOTE4MWQz
MDQ3ZmUzNDgwNGZlNTI3YTI2Zjc0MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9E
T01DU1NQYWludFdvcmtsZXQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWlu
dFdvcmtsZXQuaWRsCkBAIC0yNyw2ICsyNyw1IEBACiAgICAgRW5hYmxlZEF0UnVudGltZT1DU1NQ
YWludGluZ0FQSSwKICAgICBDb25kaXRpb25hbD1DU1NfUEFJTlRJTkdfQVBJLAogXSBwYXJ0aWFs
IGludGVyZmFjZSBET01DU1NOYW1lc3BhY2UgewotICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5vdCBh
Y3R1YWxseSBwYXJ0IG9mIHRoZSBzcGVjLCBhbmQgc2hvdWxkIGJlIHJlcGxhY2VkIHdoZW4gd29y
a2xldHMgYXJlIGltcGxlbWVudGVkCi0gICAgW0ltcGxlbWVudGVkQXM9ZW5zdXJlUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUsQ2FsbFdpdGg9RG9jdW1lbnRdIHN0YXRpYyByZWFkb25seSBhdHRyaWJ1
dGUgQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUgcGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU7Cisg
ICAgW0ltcGxlbWVudGVkQXM9ZW5zdXJlUGFpbnRXb3JrbGV0LENhbGxXaXRoPURvY3VtZW50XSBz
dGF0aWMgcmVhZG9ubHkgYXR0cmlidXRlIFdvcmtsZXQgcGFpbnRXb3JrbGV0OwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCmluZGV4IDdiNDgwOGJlNmEzODY3NTEwMDgwYzBiYTQwMmMxNzFmMWU1
ODAzMDguLjNkOTUwZmZkMzRhZmE2YmI3YmIyMjY3NTdmNTVmZGE4NDc0OWU1NzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIkNEQVRBU2VjdGlv
bi5oIgogI2luY2x1ZGUgIkNTU0FuaW1hdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJDU1NG
b250U2VsZWN0b3IuaCIKLSNpbmNsdWRlICJDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgog
I2luY2x1ZGUgIkNTU1N0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJDU1NTdHlsZVNoZWV0
LmgiCiAjaW5jbHVkZSAiQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIgpAQCAtMTQwLDYgKzEzOSw3IEBA
CiAjaW5jbHVkZSAiUGFnZUNvbnNvbGVDbGllbnQuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIK
ICNpbmNsdWRlICJQYWdlVHJhbnNpdGlvbkV2ZW50LmgiCisjaW5jbHVkZSAiUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxvY2FsZS5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgi
CkBAIC0yMTcsNiArMjE3LDcgQEAKICNpbmNsdWRlICJXZWJBbmltYXRpb24uaCIKICNpbmNsdWRl
ICJXaGVlbEV2ZW50LmgiCiAjaW5jbHVkZSAiV2luZG93RmVhdHVyZXMuaCIKKyNpbmNsdWRlICJX
b3JrbGV0LmgiCiAjaW5jbHVkZSAiWE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJYTUxEb2N1bWVu
dFBhcnNlci5oIgogI2luY2x1ZGUgIlhNTE5TTmFtZXMuaCIKQEAgLTgzNzcsMTEgKzgzNzgsMTYg
QEAgdm9pZCBEb2N1bWVudDo6ZnJhbWVXYXNEaXNjb25uZWN0ZWRGcm9tT3duZXIoKQogfQogCiAj
aWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCi1DU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSYg
RG9jdW1lbnQ6OmVuc3VyZUNTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlKCkKK1dvcmtsZXQmIERv
Y3VtZW50OjplbnN1cmVQYWludFdvcmtsZXQoKQogewotICAgIGlmICghbV9DU1NQYWludFdvcmts
ZXRHbG9iYWxTY29wZSkKLSAgICAgICAgbV9DU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSA9IENT
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlOjpjcmVhdGUoKTsKLSAgICByZXR1cm4gKm1fQ1NTUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGU7CisgICAgaWYgKCFtX3BhaW50V29ya2xldCkKKyAgICAgICAg
bV9wYWludFdvcmtsZXQgPSBXb3JrbGV0OjpjcmVhdGUoKTsKKyAgICByZXR1cm4gKm1fcGFpbnRX
b3JrbGV0OworfQorCit2b2lkIERvY3VtZW50OjpzZXRQYWludFdvcmtsZXRHbG9iYWxTY29wZShS
ZWY8UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+JiYgc2NvcGUpCit7CisgICAgbV9wYWludFdvcmts
ZXRHbG9iYWxTY29wZSA9IFdURk1vdmUoc2NvcGUpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgKaW5kZXggODU0MmMxNTU2NzE3ZjI3YjYwODkwN2QyZDE0ZWUxNGNkYTI0OGZkOC4uNmRk
ZjE0NWVkYTViYWI2NTdjZmY5OGViYmMwZjcwOTM5NGU5MTA5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgKQEAgLTg4LDcgKzg4LDYgQEAgY2xhc3MgQXR0cjsKIGNsYXNzIENEQVRBU2VjdGlvbjsKIGNs
YXNzIENTU0N1c3RvbVByb3BlcnR5VmFsdWU7CiBjbGFzcyBDU1NGb250U2VsZWN0b3I7Ci1jbGFz
cyBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZTsKIGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb247
CiBjbGFzcyBDU1NTdHlsZVNoZWV0OwogY2xhc3MgQ2FjaGVkQ1NTU3R5bGVTaGVldDsKQEAgLTE1
NCw2ICsxNTMsNyBAQCBjbGFzcyBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzOwogY2xhc3Mg
Tm9kZUZpbHRlcjsKIGNsYXNzIE5vZGVJdGVyYXRvcjsKIGNsYXNzIFBhZ2U7CitjbGFzcyBQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZTsKIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsKIGNsYXNzIFBy
b2Nlc3NpbmdJbnN0cnVjdGlvbjsKIGNsYXNzIFF1YWxpZmllZE5hbWU7CkBAIC0xOTQsNiArMTk0
LDcgQEAgY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0OwogY2xhc3MgV2ViR1BVUmVuZGVyaW5n
Q29udGV4dDsKIGNsYXNzIFdlYk1ldGFsUmVuZGVyaW5nQ29udGV4dDsKIGNsYXNzIFdpbmRvd1By
b3h5OworY2xhc3MgV29ya2xldDsKIGNsYXNzIFhQYXRoRXZhbHVhdG9yOwogY2xhc3MgWFBhdGhF
eHByZXNzaW9uOwogY2xhc3MgWFBhdGhOU1Jlc29sdmVyOwpAQCAtMTM1MCw2ICsxMzUxLDEwIEBA
IHB1YmxpYzoKICAgICAvLyBDYWxsZXJzIHNob3VsZCB0cnkgdG8gY3JlYXRlIHRoZSBDb25zb2xl
TWVzc2FnZSB0aGVtc2VsdmVzLgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQ29uc29sZU1l
c3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIgPSAwKSBmaW5hbDsKIAorICAgIC8vIFRo
ZSBmb2xsb3dpbmcgYWRkTWVzc2FnZSBmdW5jdGlvbiBpcyBkZXByZWNhdGVkLgorICAgIC8vIENh
bGxlcnMgc2hvdWxkIHRyeSB0byBjcmVhdGUgdGhlIENvbnNvbGVNZXNzYWdlIHRoZW1zZWx2ZXMu
CisgICAgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgdW5zaWduZWQgbGluZU51
bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRDYWxs
U3RhY2s+JiYsIEpTQzo6RXhlY1N0YXRlKiA9IG51bGxwdHIsIHVuc2lnbmVkIGxvbmcgcmVxdWVz
dElkZW50aWZpZXIgPSAwKSBmaW5hbDsKKwogICAgIFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9y
aWdpbigpIGNvbnN0IHsgcmV0dXJuICpTZWN1cml0eUNvbnRleHQ6OnNlY3VyaXR5T3JpZ2luKCk7
IH0KICAgICBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
dG9wRG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpOyB9CiAKQEAgLTE1MTcsNyArMTUyMiw5IEBA
IHB1YmxpYzoKICAgICBib29sIHJlZ2lzdGVyQ1NTUHJvcGVydHkoQ1NTUmVnaXN0ZXJlZEN1c3Rv
bVByb3BlcnR5JiYpOwogCiAjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCi0gICAgQ1NTUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGUmIGVuc3VyZUNTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlKCk7
CisgICAgV29ya2xldCYgZW5zdXJlUGFpbnRXb3JrbGV0KCk7CisgICAgUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUqIHBhaW50V29ya2xldEdsb2JhbFNjb3BlKCkgeyByZXR1cm4gbV9wYWludFdvcmts
ZXRHbG9iYWxTY29wZS5nZXQoKTsgfQorICAgIHZvaWQgc2V0UGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUoUmVmPFBhaW50V29ya2xldEdsb2JhbFNjb3BlPiYmKTsKICNlbmRpZgogCiAgICAgdm9pZCBz
ZXRBc1J1bm5pbmdVc2VyU2NyaXB0cygpIHsgbV9pc1J1bm5pbmdVc2VyU2NyaXB0cyA9IHRydWU7
IH0KQEAgLTE1NzAsMTAgKzE1NzcsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVmU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpIGZpbmFsIHsgcmVmKCk7IH0KICAgICB2b2lkIGRlcmVmU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpIGZpbmFsIHsgZGVyZWYoKTsgfQogCi0gICAgLy8gVGhlIGZvbGxvd2lu
ZyBhZGRNZXNzYWdlIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQuCi0gICAgLy8gQ2FsbGVycyBzaG91
bGQgdHJ5IHRvIGNyZWF0ZSB0aGUgQ29uc29sZU1lc3NhZ2UgdGhlbXNlbHZlcy4KLSAgICB2b2lk
IGFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNp
Z25lZCBjb2x1bW5OdW1iZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFjaz4mJiwg
SlNDOjpFeGVjU3RhdGUqID0gbnVsbHB0ciwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmll
ciA9IDApIGZpbmFsOwotCiAgICAgU2Vjb25kcyBtaW5pbXVtRE9NVGltZXJJbnRlcnZhbCgpIGNv
bnN0IGZpbmFsOwogCiAgICAgU2Vjb25kcyBkb21UaW1lckFsaWdubWVudEludGVydmFsKGJvb2wg
aGFzUmVhY2hlZE1heE5lc3RpbmdMZXZlbCkgY29uc3QgZmluYWw7CkBAIC0yMDYwLDcgKzIwNjMs
OCBAQCBwcml2YXRlOgogICAgIENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCBtX0NTU1Jl
Z2lzdGVyZWRQcm9wZXJ0eVNldDsKIAogI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQotICAg
IFJlZlB0cjxDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZT4gbV9DU1NQYWludFdvcmtsZXRHbG9i
YWxTY29wZTsKKyAgICBSZWZQdHI8V29ya2xldD4gbV9wYWludFdvcmtsZXQ7CisgICAgUmVmUHRy
PFBhaW50V29ya2xldEdsb2JhbFNjb3BlPiBtX3BhaW50V29ya2xldEdsb2JhbFNjb3BlOwogI2Vu
ZGlmCiAKICAgICBib29sIG1faXNSdW5uaW5nVXNlclNjcmlwdHMgeyBmYWxzZSB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbiBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KaW5kZXggNjBhYjFhNTgyODhiZTk5YTI5
N2VlOTIzYjg4OTQwZjE5M2Y2ZjU1Zi4uNzhhMjJiMzE2YTRjNDY4MGIxZDdjMjI3NGFjYjZhYjdm
ZDU2NDhiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9y
eS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCkBAIC01
Miw2ICs1Miw3IEBAIFdlYkFuaW1hdGlvbgogV2ViS2l0TWVkaWFLZXlTZXNzaW9uIGNvbmRpdGlv
bmFsPUxFR0FDWV9FTkNSWVBURURfTUVESUEKIFdlYlNvY2tldAogV29ya2VyCitXb3JrbGV0R2xv
YmFsU2NvcGUgY29uZGl0aW9uYWw9Q1NTX1BBSU5USU5HX0FQSQogWE1MSHR0cFJlcXVlc3QKIFhN
TEh0dHBSZXF1ZXN0VXBsb2FkCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRp
b25Db250ZXh0LmNwcAppbmRleCBiYTVjMzYzMjRiYzgzNDAwZTQ0YjhjOWMxNWIxNTVlNTgzNzBj
ZmJmLi5lZWUzOGI1YmJhZjJjOTNiNGE1YWYyZjgyZDkzY2E1MTBlY2QxMzdlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC01NCw2ICs1NCw4
IEBACiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJOYXZp
Z2F0b3IuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKKyNpbmNsdWRlICJXb3JrbGV0R2xv
YmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0NhdGNoU2NvcGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9FeGNlcHRpb24uaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1Byb21pc2UuaD4KQEAg
LTQ3Niw4ICs0NzgsMTUgQEAgSlNDOjpWTSYgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6dm0oKQog
ewogICAgIGlmIChpczxEb2N1bWVudD4oKnRoaXMpKQogICAgICAgICByZXR1cm4gY29tbW9uVk0o
KTsKKyAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KCp0aGlzKSkKKyAgICAgICAgcmV0dXJu
IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykuc2NyaXB0KCktPnZtKCk7CisjaWYg
RU5BQkxFKENTU19QQUlOVElOR19BUEkpCisgICAgaWYgKGlzPFdvcmtsZXRHbG9iYWxTY29wZT4o
KnRoaXMpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8V29ya2xldEdsb2JhbFNjb3BlPigqdGhp
cykuc2NyaXB0KCktPnZtKCk7CisjZW5kaWYKIAotICAgIHJldHVybiBkb3duY2FzdDxXb3JrZXJH
bG9iYWxTY29wZT4oKnRoaXMpLnNjcmlwdCgpLT52bSgpOworICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGNvbW1vblZNKCk7CiB9CiAKIFJlamVjdGVkUHJvbWlz
ZVRyYWNrZXImIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmVuc3VyZVJlamVjdGVkUHJvbWlzZVRy
YWNrZXJTbG93KCkKQEAgLTUxOSw4ICs1MjgsMTkgQEAgSlNDOjpFeGVjU3RhdGUqIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OmV4ZWNTdGF0ZSgpCiAgICAgICAgIHJldHVybiBleGVjU3RhdGVGcm9t
UGFnZShtYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgZG9jdW1lbnQucGFnZSgpKTsKICAgICB9CiAK
LSAgICBXb3JrZXJHbG9iYWxTY29wZSogd29ya2VyR2xvYmFsU2NvcGUgPSBzdGF0aWNfY2FzdDxX
b3JrZXJHbG9iYWxTY29wZSo+KHRoaXMpOwotICAgIHJldHVybiBleGVjU3RhdGVGcm9tV29ya2Vy
R2xvYmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUpOworICAgIGlmIChpczxXb3JrZXJHbG9iYWxT
Y29wZT4oKnRoaXMpKSB7CisgICAgICAgIFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxT
Y29wZSA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcyk7CisgICAgICAgIHJldHVy
biBleGVjU3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUpOworICAg
IH0KKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKyAgICBpZiAoaXM8V29ya2xldEdsb2Jh
bFNjb3BlPigqdGhpcykpIHsKKyAgICAgICAgV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrbGV0R2xv
YmFsU2NvcGUgPSBkb3duY2FzdDxXb3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlzKTsKKyAgICAgICAg
cmV0dXJuIGV4ZWNTdGF0ZUZyb21Xb3JrbGV0R2xvYmFsU2NvcGUod29ya2xldEdsb2JhbFNjb3Bl
KTsKKyAgICB9CisjZW5kaWYKKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBudWxscHRyOwogfQogCiBTdHJpbmcgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZG9tYWluRm9y
Q2FjaGVQYXJ0aXRpb24oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgKaW5kZXggMmI2NDc1ZTYyN2RjZWZkNWRkYjY0MzRlMTUxNTU0NjVlNTVjNDdl
NC4uNzg1OTA0NTgyM2I3YzYzMDUwYWUwMWYxYTY0NWJhZDMwYjJkYzc5YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC04OSw2ICs4OSw3IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpc0RvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNXb3JrZXJHbG9iYWxTY29wZSgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzV29ya2xldEdsb2JhbFNjb3BlKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRleHRUaHJlYWQo
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIGlzSlNFeGVjdXRpb25G
b3JiaWRkZW4oKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IGNh
YzA2MjU2OTlhNDE4Yjg5MGQzZDExM2QzYzQ5MjdiZGU2ZmVjOWQuLmIyMGNiYmM5NTA3MDI4MTFi
NjU4OWFjMWRmYmQ1NzMzOTE5M2QzMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwCkBA
IC02MCw3ICs2MCw3IEBAIEluamVjdGVkU2NyaXB0IFdvcmtlckRlYnVnZ2VyQWdlbnQ6OmluamVj
dGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYgZXJyb3JTdHJpCiAgICAgICAgIHJldHVybiBJ
bmplY3RlZFNjcmlwdCgpOwogICAgIH0KIAotICAgIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0
ZSA9IGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZSgmbV93b3JrZXJHbG9iYWxTY29wZSk7
CisgICAgSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlID0gZXhlY1N0YXRlRnJvbVdvcmtlckds
b2JhbFNjb3BlKG1fd29ya2VyR2xvYmFsU2NvcGUpOwogICAgIHJldHVybiBpbmplY3RlZFNjcmlw
dE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJS
dW50aW1lQWdlbnQuY3BwCmluZGV4IDljYzY5ZDE3MjRjZGFkMThmOThlM2QzYjMyZjI5NjhhNTU0
ZTA2N2QuLjhjMzIxNDg3YzY4NWZkMzRmYWVhYTc1NTBjOThhMjI5MDg3NWQzMjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29y
a2VyUnVudGltZUFnZW50LmNwcApAQCAtNjUsNyArNjUsNyBAQCBJbmplY3RlZFNjcmlwdCBXb3Jr
ZXJSdW50aW1lQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYgZXJyb3JT
dHJpbgogICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKICAgICB9CiAKLSAgICBKU0M6
OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUgPSBleGVjU3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUo
Jm1fd29ya2VyR2xvYmFsU2NvcGUpOworICAgIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSA9
IGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZShtX3dvcmtlckdsb2JhbFNjb3BlKTsKICAg
ICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0
U3RhdGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9DdXN0b21QYWludEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0N1c3RvbVBhaW50SW1hZ2UuY3BwCmluZGV4IGQyZTQyYzBjOWU2MTk5ZjUyNzQyOTE2NzBmMTdh
MDZlOWRlODIwZmIuLjE1YWE5MjRjMmI2MTcxZTUzNTBjMTAxZDQ0MGJlNmMzY2NhNTBjOTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50
SW1hZ2UuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ3Vz
dG9tUGFpbnRJbWFnZTo6Q3VzdG9tUGFpbnRJbWFnZShjb25zdCBDU1NQYWludFdvcmtsZXRHbG9i
YWxTY29wZTo6UGFpbnREZWZpbml0aW9uJiBkZWZpbml0aW9uLCBjb25zdCBGbG9hdFNpemUmIHNp
emUpCitDdXN0b21QYWludEltYWdlOjpDdXN0b21QYWludEltYWdlKGNvbnN0IFBhaW50V29ya2xl
dEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb24mIGRlZmluaXRpb24sIGNvbnN0IEZsb2F0U2l6
ZSYgc2l6ZSkKICAgICA6IG1fcGFpbnRDYWxsYmFjayhkZWZpbml0aW9uLnBhaW50Q2FsbGJhY2su
Z2V0KCkpCiB7CiAgICAgc2V0Q29udGFpbmVyU2l6ZShzaXplKTsKQEAgLTYzLDcgKzYzLDYgQEAg
SW1hZ2VEcmF3UmVzdWx0IEN1c3RvbVBhaW50SW1hZ2U6OmRvQ3VzdG9tUGFpbnQoR3JhcGhpY3ND
b250ZXh0JiBkZXN0Q29udGV4dCwgY28KICAgICBpZiAocmVzdWx0LnR5cGUoKSAhPSBDYWxsYmFj
a1Jlc3VsdFR5cGU6OlN1Y2Nlc3MpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRp
ZE5vdGhpbmc7CiAKLSAgICBVTlVTRURfUEFSQU0oZGVzdENvbnRleHQpOwogICAgIGF1dG8gaW1h
Z2UgPSBjYW52YXMtPmNvcGllZEltYWdlKCk7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0
dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuaAppbmRleCAwM2FiMmE4ODg2ODNh
M2Y1Mzg3MWRhYzViNTFmODkxOWRhNGM0ZGQyLi5lYjZhODFiYWUyNGQxMTdlMGNkMzQ4OGRjNDdh
NzZlNjJiMDQyMGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9DdXN0b21QYWludEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ3VzdG9tUGFpbnRJbWFnZS5oCkBAIC0yNyw4ICsyNyw4IEBACiAKICNpZiBFTkFCTEUoQ1NT
X1BBSU5USU5HX0FQSSkKIAotI2luY2x1ZGUgIkNTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgi
CiAjaW5jbHVkZSAiR2VuZXJhdGVkSW1hZ2UuaCIKKyNpbmNsdWRlICJQYWludFdvcmtsZXRHbG9i
YWxTY29wZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM2LDcgKzM2LDcgQEAgY2xh
c3MgSW1hZ2VCdWZmZXI7CiAKIGNsYXNzIEN1c3RvbVBhaW50SW1hZ2UgZmluYWwgOiBwdWJsaWMg
R2VuZXJhdGVkSW1hZ2UgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q3VzdG9tUGFpbnRJbWFn
ZT4gY3JlYXRlKGNvbnN0IENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRp
b24mIGRlZmluaXRpb24sIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKKyAgICBzdGF0aWMgUmVmPEN1
c3RvbVBhaW50SW1hZ2U+IGNyZWF0ZShjb25zdCBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6UGFp
bnREZWZpbml0aW9uJiBkZWZpbml0aW9uLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCiAgICAgewog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDdXN0b21QYWludEltYWdlKGRlZmluaXRpb24s
IHNpemUpKTsKICAgICB9CkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQ3Vz
dG9tUGFpbnRJbWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogcHJpdmF0
ZToKLSAgICBDdXN0b21QYWludEltYWdlKGNvbnN0IENTU1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
OjpQYWludERlZmluaXRpb24mLCBjb25zdCBGbG9hdFNpemUmKTsKKyAgICBDdXN0b21QYWludElt
YWdlKGNvbnN0IFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb24mLCBjb25z
dCBGbG9hdFNpemUmKTsKIAogICAgIEltYWdlRHJhd1Jlc3VsdCBkb0N1c3RvbVBhaW50KEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjYxOTIz
NmU1YmM0MDg1ZGI1Y2Y3Y2YyMmE5NTYwMTAyMGE5ZjRmMAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcApAQCAtMCww
ICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBhaW50V29ya2xldEdsb2JhbFNjb3BlLmgi
CisKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKworI2luY2x1ZGUgIkRPTVdpbmRvdy5o
IgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFBh
aW50V29ya2xldEdsb2JhbFNjb3BlPiBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6Y3JlYXRlKERv
Y3VtZW50JiBkb2N1bWVudCwgU2NyaXB0U291cmNlQ29kZSYmIGNvZGUpCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoZG9jdW1lbnQsIFdURk1vdmUo
Y29kZSkpKTsKK30KKworUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OlBhaW50V29ya2xldEdsb2Jh
bFNjb3BlKERvY3VtZW50JiBkb2N1bWVudCwgU2NyaXB0U291cmNlQ29kZSYmIGNvZGUpCisgICAg
OiBXb3JrbGV0R2xvYmFsU2NvcGUoZG9jdW1lbnQsIFdURk1vdmUoY29kZSkpCit7Cit9CisKK2Rv
dWJsZSBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6ZGV2aWNlUGl4ZWxSYXRpbygpCit7CisgICAg
QVNTRVJUKG1fZG9jdW1lbnQpOworICAgIEFTU0VSVChtX2RvY3VtZW50LT5kb21XaW5kb3coKSk7
CisgICAgcmV0dXJuIG1fZG9jdW1lbnQtPmRvbVdpbmRvdygpLT5kZXZpY2VQaXhlbFJhdGlvKCk7
Cit9CisKK0V4Y2VwdGlvbk9yPHZvaWQ+IFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjphZGRSZWdp
c3RlcmVkUGFpbnQoKQoreworICAgIHJldHVybiB7IH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YTMyODQ5NjlmMzlmYjQ2ZGMzMDA3NzA2N2Fi
ZjJjZWMyNzNkNWFmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMv
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoQ1NTX1BBSU5USU5HX0FQSSkKKworI2luY2x1ZGUgIkNTU1BhaW50Q2FsbGJhY2suaCIKKyNp
bmNsdWRlICJXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBK
U1ZhbHVlOworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUgOiBwdWJsaWMgV29ya2xldEdsb2JhbFNjb3BlIHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFBhaW50V29ya2xldEdsb2JhbFNjb3BlPiBjcmVhdGUo
RG9jdW1lbnQmLCBTY3JpcHRTb3VyY2VDb2RlJiYpOworCisgICAgRXhjZXB0aW9uT3I8dm9pZD4g
YWRkUmVnaXN0ZXJlZFBhaW50KCk7CisgICAgZG91YmxlIGRldmljZVBpeGVsUmF0aW8oKTsKKwor
ICAgIHN0cnVjdCBQYWludERlZmluaXRpb24geworICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcg
bmFtZTsKKyAgICAgICAgY29uc3QgUmVmPENTU1BhaW50Q2FsbGJhY2s+IHBhaW50Q2FsbGJhY2s7
CisgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+IGlucHV0UHJvcGVydGllczsKKyAgICAgICAg
Y29uc3QgVmVjdG9yPFN0cmluZz4gaW5wdXRBcmd1bWVudHM7CisgICAgfTsKKworICAgIEhhc2hN
YXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8UGFpbnREZWZpbml0aW9uPj4mIHBhaW50RGVmaW5p
dGlvbk1hcCgpIHsgQVNTRVJUKG1fcGFpbnREZWZpbml0aW9uTG9jay5pc0xvY2tlZCgpKTsgcmV0
dXJuIG1fcGFpbnREZWZpbml0aW9uTWFwOyB9CisgICAgTG9jayYgcGFpbnREZWZpbml0aW9uTG9j
aygpIHsgcmV0dXJuIG1fcGFpbnREZWZpbml0aW9uTG9jazsgfQorCitwcml2YXRlOgorICAgIFBh
aW50V29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50JiwgU2NyaXB0U291cmNlQ29kZSYmKTsKKwor
ICAgIGJvb2wgaXNQYWludFdvcmtsZXRHbG9iYWxTY29wZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IHRydWU7IH0KKworICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8UGFpbnREZWZp
bml0aW9uPj4gbV9wYWludERlZmluaXRpb25NYXA7CisgICAgTG9jayBtX3BhaW50RGVmaW5pdGlv
bkxvY2s7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQkVHSU4oV2ViQ29yZTo6UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUpCitzdGF0aWMgYm9v
bCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkg
eyByZXR1cm4gaXM8V2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0KSAmJiBkb3du
Y2FzdDxXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpLmlzUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUoKTsgfQorc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Oldvcmts
ZXRHbG9iYWxTY29wZSYgY29udGV4dCkgeyByZXR1cm4gY29udGV4dC5pc1BhaW50V29ya2xldEds
b2JhbFNjb3BlKCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKworI2VuZGlmIC8v
IEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaWRsIGIvU291cmNlL1dlYkNvcmUvd29ya2xl
dHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1NDljY2YwNDNiZTA0
ZGI2OTFkZWQ3ZjYwYzRlZTVlYTdhY2NkYjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5pZGwKQEAgLTAsMCArMSwzOSBA
QAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisqLworCitbCisgICAgRXhwb3NlZD1QYWludFdvcmtsZXQsCisg
ICAgRW5hYmxlZEF0UnVudGltZT1DU1NQYWludGluZ0FQSSwKKyAgICBDb25kaXRpb25hbD1DU1Nf
UEFJTlRJTkdfQVBJLAorICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uLAorICAgIEpTR2VuZXJhdGVU
b05hdGl2ZU9iamVjdCwKKyAgICBJbXBsaWNpdFRoaXMsCisgICAgSXNJbW11dGFibGVQcm90b3R5
cGVFeG90aWNPYmplY3QsCisgICAgSXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3RPblBy
b3RvdHlwZSwKKyAgICBHbG9iYWw9KFdvcmtsZXQsUGFpbnRXb3JrbGV0KSwKK10gaW50ZXJmYWNl
IFBhaW50V29ya2xldEdsb2JhbFNjb3BlIDogV29ya2xldEdsb2JhbFNjb3BlIHsKKyAgICBbQ3Vz
dG9tLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCByZWdpc3RlclBhaW50KERPTVN0cmluZyBuYW1l
LCBGdW5jdGlvbiBwYWludEN0b3IpOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3RyaWN0
ZWQgZG91YmxlIGRldmljZVBpeGVsUmF0aW87Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2xldHMvV29ya2xldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zOGYyYzU4OTZmMmNiZDlmZjg2Y2Q1ODAwMTIxOWUxODk0NDY3Nzcy
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5jcHAK
QEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXb3JrbGV0LmgiCisKKyNpZiBF
TkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVk
ZSAiUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2Rl
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFdvcmtsZXQ+IFdvcmtsZXQ6OmNyZWF0
ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV29ya2xldCgpKTsKK30KKworV29ya2xl
dDo6V29ya2xldCgpCit7Cit9CisKK3ZvaWQgV29ya2xldDo6YWRkTW9kdWxlKERvY3VtZW50JiBk
b2N1bWVudCwgY29uc3QgU3RyaW5nJiBtb2R1bGVVUkwpCit7CisgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBkb3dubG9hZCB0aGUgc291cmNlIGZyb20gdGhlIFVSTAorICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTExMzYKKyAgICBhdXRvIGNvbnRleHQgPSBQ
YWludFdvcmtsZXRHbG9iYWxTY29wZTo6Y3JlYXRlKGRvY3VtZW50LCBTY3JpcHRTb3VyY2VDb2Rl
KG1vZHVsZVVSTCkpOworICAgIGNvbnRleHQtPmV2YWx1YXRlKCk7CisgICAgLy8gRklYTUU6IFdl
IHNob3VsZCBzdG9yZSBtdWx0aXBsZSBnbG9iYWwgc2NvcGVzIGFuZCBjaG9vc2UgYmV0d2VlbiB0
aGVtCisgICAgLy8gVGhpcyB3aWxsIG5vdCBmdW5jdGlvbiBjb3JyZWN0bHkgaWYgbXVsdGlwbGUg
bW9kdWxlcyBhcmUgYWRkZWQuCisgICAgZG9jdW1lbnQuc2V0UGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUoV1RGTW92ZShjb250ZXh0KSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDA4MDhmODk1ZTA1YmZl
MjZjZjNhY2JiYWY2MjhmZGE0YWZlZGMzMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtsZXRzL1dvcmtsZXQuaApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJT
Y3JpcHRXcmFwcGFibGUuaCIKKworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorCituYW1l
c3BhY2UgV2ViQ29yZSB7CitjbGFzcyBEb2N1bWVudDsKKworY2xhc3MgV29ya2xldCA6IHB1Ymxp
YyBSZWZDb3VudGVkPFdvcmtsZXQ+LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlIHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUmVmPFdvcmtsZXQ+IGNyZWF0ZSgpOworICAgIAorICAgIHZvaWQgYWRkTW9k
dWxlKERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiBtb2R1bGVVUkwpOworCitwcm90ZWN0ZWQ6Cisg
ICAgV29ya2xldCgpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQuaWRsIGIvU291cmNlL1dl
YkNvcmUvd29ya2xldHMvV29ya2xldC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTc0Y2M5MTM4MDBiNzllZTcw
YTVjNDQ2NzllZjE1ZmU3ZWM4NDlmYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1dvcmtsZXQuaWRsCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
Ki8KKworWworICAgIEVuYWJsZWRBdFJ1bnRpbWU9Q1NTUGFpbnRpbmdBUEksCisgICAgQ29uZGl0
aW9uYWw9Q1NTX1BBSU5USU5HX0FQSSwKKyAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAor
ICAgIEdsb2JhbD1Xb3JrbGV0LAorXSBpbnRlcmZhY2UgV29ya2xldCB7CisgICAgW0NhbGxXaXRo
PURvY3VtZW50XSB2b2lkIGFkZE1vZHVsZShVU1ZTdHJpbmcgbW9kdWxlVVJMLyosIG9wdGlvbmFs
IFdvcmtsZXRPcHRpb25zIG9wdGlvbnMqLyk7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5NTA2YjllMzkzMTM0
Y2VjMzM2MzZjYTY2ZjFjNWRjMjRiODgxODIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5jcHAKQEAgLTAsMCArMSw3MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXb3JrbGV0Q29uc29s
ZUNsaWVudC5oIgorCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisKKyNpbmNsdWRlICJJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25z
b2xlTWVzc2FnZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdEFyZ3VtZW50cy5o
PgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdENhbGxTdGFjay5oPgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgewordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKworV29ya2xldENvbnNvbGVDbGll
bnQ6OldvcmtsZXRDb25zb2xlQ2xpZW50KFdvcmtsZXRHbG9iYWxTY29wZSYgd29ya2xldEdsb2Jh
bFNjb3BlKQorICAgIDogbV93b3JrbGV0R2xvYmFsU2NvcGUod29ya2xldEdsb2JhbFNjb3BlKQor
eworfQorCitXb3JrbGV0Q29uc29sZUNsaWVudDo6fldvcmtsZXRDb25zb2xlQ2xpZW50KCkgPSBk
ZWZhdWx0OworCit2b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRM
ZXZlbChNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIEpTQzo6RXhlY1N0YXRl
KiBleGVjLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYgYXJndW1lbnRzKQorewor
ICAgIFN0cmluZyBtZXNzYWdlVGV4dDsKKyAgICBhcmd1bWVudHMtPmdldEZpcnN0QXJndW1lbnRB
c1N0cmluZyhtZXNzYWdlVGV4dCk7CisgICAgYXV0byBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1
ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0
eXBlLCBsZXZlbCwgbWVzc2FnZVRleHQsIFdURk1vdmUoYXJndW1lbnRzKSwgZXhlYyk7CisgICAg
bV93b3JrbGV0R2xvYmFsU2NvcGUuYWRkQ29uc29sZU1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7
Cit9CisKK3ZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6OmNvdW50KEpTQzo6RXhlY1N0YXRlKiwg
UmVmPFNjcmlwdEFyZ3VtZW50cz4mJikgeyB9CisKK3ZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6
OnRpbWUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmKSB7IH0KK3ZvaWQgV29ya2xldENv
bnNvbGVDbGllbnQ6OnRpbWVFbmQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmKSB7IH0K
Kwordm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6cHJvZmlsZShKU0M6OkV4ZWNTdGF0ZSosIGNv
bnN0IFN0cmluZyYpIHsgfQordm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6cHJvZmlsZUVuZChK
U0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpIHsgfQorCit2b2lkIFdvcmtsZXRDb25zb2xl
Q2xpZW50Ojp0YWtlSGVhcFNuYXBzaG90KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJikg
eyB9Cit2b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50Ojp0aW1lU3RhbXAoSlNDOjpFeGVjU3RhdGUq
LCBSZWY8U2NyaXB0QXJndW1lbnRzPiYmKSB7IH0KKwordm9pZCBXb3JrbGV0Q29uc29sZUNsaWVu
dDo6cmVjb3JkKEpTQzo6RXhlY1N0YXRlKiwgUmVmPFNjcmlwdEFyZ3VtZW50cz4mJikgeyB9Cit2
b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50OjpyZWNvcmRFbmQoSlNDOjpFeGVjU3RhdGUqLCBSZWY8
U2NyaXB0QXJndW1lbnRzPiYmKSB7IH0KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43MGUyNzRlZjczZDEyM2RmZTc4NzgwOTJhOGZhMzUxNjk0Mzg1NDQ2Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQu
aApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoQ1NTX1BBSU5USU5HX0FQSSkKKworI2luY2x1ZGUgIldvcmtsZXRHbG9iYWxTY29wZS5oIgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVDbGllbnQuaD4KKyNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgorCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEV4ZWNTdGF0ZTsKK30KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXb3JrbGV0Q29uc29sZUNsaWVudCBmaW5hbCA6IHB1
YmxpYyBKU0M6OkNvbnNvbGVDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
cHVibGljOgorICAgIGV4cGxpY2l0IFdvcmtsZXRDb25zb2xlQ2xpZW50KFdvcmtsZXRHbG9iYWxT
Y29wZSYpOworICAgIHZpcnR1YWwgfldvcmtsZXRDb25zb2xlQ2xpZW50KCk7CisKK3Byb3RlY3Rl
ZDoKKyAgICB2b2lkIG1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKE1lc3NhZ2VUeXBlLCBNZXNzYWdl
TGV2ZWwsIEpTQzo6RXhlY1N0YXRlKiwgUmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYm
KSBvdmVycmlkZTsKKyAgICB2b2lkIGNvdW50KEpTQzo6RXhlY1N0YXRlKiwgUmVmPEluc3BlY3Rv
cjo6U2NyaXB0QXJndW1lbnRzPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHByb2ZpbGUoSlNDOjpF
eGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKKyAgICB2b2lkIHByb2Zp
bGVFbmQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHRha2VIZWFwU25hcHNob3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHRp
dGxlKSBvdmVycmlkZTsKKyAgICB2b2lkIHRpbWUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJp
bmcmIHRpdGxlKSBvdmVycmlkZTsKKyAgICB2b2lkIHRpbWVFbmQoSlNDOjpFeGVjU3RhdGUqLCBj
b25zdCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKKyAgICB2b2lkIHRpbWVTdGFtcChKU0M6OkV4
ZWNTdGF0ZSosIFJlZjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4mJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCByZWNvcmQoSlNDOjpFeGVjU3RhdGUqLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1
bWVudHM+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVjb3JkRW5kKEpTQzo6RXhlY1N0YXRlKiwg
UmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmKSBvdmVycmlkZTsKKworcHJpdmF0ZToK
KyAgICBXb3JrbGV0R2xvYmFsU2NvcGUmIG1fd29ya2xldEdsb2JhbFNjb3BlOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMv
V29ya2xldEdsb2JhbFNjb3BlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NDg2N2EzYTQwMWFjNDA4MzhlYTRl
ZWJkOGVmZTJiYmQwYjQ3NmFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcApAQCAtMCwwICsxLDEzNSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV29ya2xldEdsb2JhbFNjb3BlLmgiCisKKyNpZiBFTkFCTEUoQ1NTX1BB
SU5USU5HX0FQSSkKKworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIK
KyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKKyNpbmNsdWRlICJKU1dvcmts
ZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIlBhZ2VDb25zb2xlQ2xpZW50LmgiCisjaW5jbHVk
ZSAiU2VjdXJpdHlPcmlnaW5Qb2xpY3kuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1
ZGUgIldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCisKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9FeGNlcHRpb24uaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JZGVudGlmaWVyc0ZhY3Rv
cnkuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9TY3JpcHRDYWxsU3RhY2suaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewordXNp
bmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKworV29ya2xldEdsb2JhbFNjb3BlOjpXb3JrbGV0R2xv
YmFsU2NvcGUoRG9jdW1lbnQmIGRvY3VtZW50LCBTY3JpcHRTb3VyY2VDb2RlJiYgY29kZSkKKyAg
ICA6IG1fZG9jdW1lbnQobWFrZVdlYWtQdHIoZG9jdW1lbnQpKQorICAgICwgbV9zZXNzaW9uSUQo
bV9kb2N1bWVudC0+c2Vzc2lvbklEKCkpCisgICAgLCBtX3NjcmlwdChtYWtlVW5pcXVlUmVmPFdv
cmtsZXRTY3JpcHRDb250cm9sbGVyPih0aGlzKSkKKyAgICAsIG1fdG9wT3JpZ2luKFNlY3VyaXR5
T3JpZ2luOjpjcmVhdGVVbmlxdWUoKSkKKyAgICAsIG1faWRlbnRpZmllcigiV29ya2xldEdsb2Jh
bFNjb3BlOiIgKyBJbnNwZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmll
cigpKQorICAgICwgbV9ldmVudFF1ZXVlKCp0aGlzKQorICAgICwgbV9jb2RlKFdURk1vdmUoY29k
ZSkpCit7CisgICAgYXV0byogZnJhbWUgPSBtX2RvY3VtZW50LT5mcmFtZSgpOworICAgIG1fanNS
dW50aW1lRmxhZ3MgPSBmcmFtZSA/IGZyYW1lLT5zZXR0aW5ncygpLmphdmFTY3JpcHRSdW50aW1l
RmxhZ3MoKSA6IEpTQzo6UnVudGltZUZsYWdzKCk7CisgICAgQVNTRVJUKG1fZG9jdW1lbnQtPnBh
Z2UoKSk7CisKKyAgICBzZXRTZWN1cml0eU9yaWdpblBvbGljeShTZWN1cml0eU9yaWdpblBvbGlj
eTo6Y3JlYXRlKG1fdG9wT3JpZ2luLmNvcHlSZWYoKSkpOworICAgIHNldENvbnRlbnRTZWN1cml0
eVBvbGljeShzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgY29k
ZS51cmwoKSB9LCAqdGhpcykpOworfQorCitXb3JrbGV0R2xvYmFsU2NvcGU6On5Xb3JrbGV0R2xv
YmFsU2NvcGUoKQoreworICAgIHJlbW92ZUZyb21Db250ZXh0c01hcCgpOworICAgIG1fc2NyaXB0
LT53b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKCktPnNldENvbnNvbGVDbGllbnQobnVsbHB0cik7
Cit9CisKK1N0cmluZyBXb3JrbGV0R2xvYmFsU2NvcGU6Om9yaWdpbigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fdG9wT3JpZ2luLT50b1N0cmluZygpOworfQorCitTdHJpbmcgV29ya2xldEdsb2Jh
bFNjb3BlOjp1c2VyQWdlbnQoY29uc3QgVVJMJiB1cmwpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1f
ZG9jdW1lbnQpOworICAgIHJldHVybiBtX2RvY3VtZW50LT51c2VyQWdlbnQodXJsKTsKK30KKwor
dm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmV2YWx1YXRlKCkKK3sKKyAgICBtX3NjcmlwdC0+ZXZh
bHVhdGUobV9jb2RlKTsKK30KKworYm9vbCBXb3JrbGV0R2xvYmFsU2NvcGU6OmlzSlNFeGVjdXRp
b25Gb3JiaWRkZW4oKSBjb25zdAoreworICAgIHJldHVybiBtX3NjcmlwdC0+aXNFeGVjdXRpb25G
b3JiaWRkZW4oKTsKK30KKwordm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmRpc2FibGVFdmFsKGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQoreworICAgIG1fc2NyaXB0LT5kaXNhYmxlRXZhbChl
cnJvck1lc3NhZ2UpOworfQorCit2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6ZGlzYWJsZVdlYkFz
c2VtYmx5KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQoreworICAgIG1fc2NyaXB0LT5kaXNh
YmxlV2ViQXNzZW1ibHkoZXJyb3JNZXNzYWdlKTsKK30KKworVVJMIFdvcmtsZXRHbG9iYWxTY29w
ZTo6Y29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0Cit7CisgICAgaWYgKHVybC5p
c051bGwoKSkKKyAgICAgICAgcmV0dXJuIFVSTCgpOworICAgIHJldHVybiBVUkwobV9jb2RlLnVy
bCgpLCB1cmwpOworfQorCit2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6bG9nRXhjZXB0aW9uVG9D
b25zb2xlKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVS
TCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFJlZlB0cjxTY3JpcHRDYWxsU3Rh
Y2s+JiYgc3RhY2spCit7CisgICAgQVNTRVJUKG1fZG9jdW1lbnQpOworICAgIG1fZG9jdW1lbnQt
PmxvZ0V4Y2VwdGlvblRvQ29uc29sZShlcnJvck1lc3NhZ2UsIHNvdXJjZVVSTCwgbGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCBXVEZNb3ZlKHN0YWNrKSk7Cit9CisKK3ZvaWQgV29ya2xldEdsb2Jh
bFNjb3BlOjphZGRDb25zb2xlTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25z
b2xlTWVzc2FnZT4mJiBtZXNzYWdlKQoreworICAgIEFTU0VSVChtX2RvY3VtZW50KTsKKyAgICBt
X2RvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpKTsKK30KKwordm9p
ZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291
cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQg
bG9uZyByZXF1ZXN0SWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQobV9kb2N1bWVudCk7CisgICAg
bV9kb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2Uoc291cmNlLCBsZXZlbCwgbWVzc2FnZSwgcmVx
dWVzdElkZW50aWZpZXIpOworfQorCit2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6YWRkTWVzc2Fn
ZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2VUZXh0LCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgdW5zaWduZWQgbGluZU51bWJl
ciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiYmIGNhbGxT
dGFjaywgSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlm
aWVyKQoreworICAgIEFTU0VSVChtX2RvY3VtZW50KTsKKyAgICBtX2RvY3VtZW50LT5hZGRNZXNz
YWdlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlciwgV1RGTW92ZShjYWxsU3RhY2spLCBzdGF0ZSwgcmVxdWVzdElkZW50aWZpZXIp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDA5YzVlOGUzNmI3ZDIx
ZGY0OTM1MjA0YzE0OWUyMjhjOGY3MGMzOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5oCkBAIC0wLDAgKzEsMTM3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisKKyNpbmNsdWRlICJFdmVudFRhcmdl
dC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgorI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKKyNpbmNsdWRlICJTdXBw
bGVtZW50YWJsZS5oIgorI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgIldvcmtlckV2ZW50UXVl
dWUuaCIKKworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVNZXNzYWdlLmg+CisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvUnVudGltZUZsYWdzLmg+CisjaW5jbHVkZSA8cGFsL1Nlc3Np
b25JRC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBXb3JrbGV0U2NyaXB0Q29udHJvbGxl
cjsKK2NsYXNzIFNjcmlwdFNvdXJjZUNvZGU7CisKK2NsYXNzIFdvcmtsZXRHbG9iYWxTY29wZSA6
IHB1YmxpYyBSZWZDb3VudGVkPFdvcmtsZXRHbG9iYWxTY29wZT4sIHB1YmxpYyBTdXBwbGVtZW50
YWJsZTxXb3JrbGV0R2xvYmFsU2NvcGU+LCBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
cHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEgeworcHVibGljOgorICAgIH5Xb3JrbGV0
R2xvYmFsU2NvcGUoKTsKKworICAgIHZpcnR1YWwgYm9vbCBpc1BhaW50V29ya2xldEdsb2JhbFNj
b3BlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIGNvbnN0IFVSTCYgdXJsKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9jb2RlLnVybCgpOyB9CisgICAgU3RyaW5nIG9yaWdpbigpIGNv
bnN0IGZpbmFsOworICAgIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJu
IG1faWRlbnRpZmllcjsgfQorCisgICAgdm9pZCBldmFsdWF0ZSgpOworCisgICAgdXNpbmcgUmVm
Q291bnRlZDo6cmVmOworICAgIHVzaW5nIFJlZkNvdW50ZWQ6OmRlcmVmOworCisgICAgV29ya2xl
dFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdCgpIHsgcmV0dXJuICZtX3NjcmlwdC5nZXQoKTsgfQor
CisgICAgdm9pZCBhZGRDb25zb2xlTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpD
b25zb2xlTWVzc2FnZT4mJikgZmluYWw7CisKKyAgICBib29sIGlzSlNFeGVjdXRpb25Gb3JiaWRk
ZW4oKSBjb25zdCBmaW5hbDsKKyAgICBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV90b3BPcmlnaW4uZ2V0KCk7IH0KKworICAgIFNvY2tldFByb3ZpZGVy
KiBzb2NrZXRQcm92aWRlcigpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KKworICAgIGJvb2wg
aXNDb250ZXh0VGhyZWFkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wg
aXNTZWN1cmVDb250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIEpT
Qzo6UnVudGltZUZsYWdzIGpzUnVudGltZUZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9qc1J1bnRp
bWVGbGFnczsgfQorCitwcm90ZWN0ZWQ6CisgICAgV29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50
JiwgU2NyaXB0U291cmNlQ29kZSYmKTsKKworICAgIFdlYWtQdHI8RG9jdW1lbnQ+IG1fZG9jdW1l
bnQ7CisKK3ByaXZhdGU6CisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisgICAgSURCQ2xp
ZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGlkYkNvbm5lY3Rpb25Qcm94eSgpIGZpbmFsIHsgQVNT
RVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBudWxscHRyOyB9CisjZW5kaWYKKworICAgIHZvaWQg
cG9zdFRhc2soVGFzayYmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisKKyAgICB2
b2lkIHJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBmaW5hbCB7IHJlZigpOyB9CisgICAgdm9p
ZCBkZXJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KKworICAg
IHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9CisgICAgdm9pZCBkZXJlZkV2
ZW50VGFyZ2V0KCkgZmluYWwgeyBkZXJlZigpOyB9CisKKyAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gY29uc3Rf
Y2FzdDxXb3JrbGV0R2xvYmFsU2NvcGUqPih0aGlzKTsgfQorICAgIEV2ZW50VGFyZ2V0SW50ZXJm
YWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gV29ya2xldEds
b2JhbFNjb3BlRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CisKKyAgICBib29sIGlzV29ya2xl
dEdsb2JhbFNjb3BlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgdm9pZCBs
b2dFeGNlcHRpb25Ub0NvbnNvbGUoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGNvbnN0IFN0
cmluZyYsIGludCwgaW50LCBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s+JiYpIGZp
bmFsOworICAgIHZvaWQgYWRkTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkLCB1bnNpZ25lZCwgUmVmUHRyPElu
c3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPiYmLCBKU0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIGxv
bmcpIGZpbmFsOworICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVz
c2FnZUxldmVsLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBsb25nKSBmaW5hbDsKKworICAgIEV2
ZW50VGFyZ2V0KiBlcnJvckV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZXR1cm4gdGhpczsgfQorICAg
IEV2ZW50UXVldWUmIGV2ZW50UXVldWUoKSBjb25zdCBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOyByZXR1cm4gbV9ldmVudFF1ZXVlOyB9CisKKyNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykK
KyAgICBib29sIHdyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgVmVjdG9yPHVp
bnQ4X3Q+JikgZmluYWwgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFs
c2U7IH0KKyAgICBib29sIHVud3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mLCBW
ZWN0b3I8dWludDhfdD4mKSBmaW5hbCB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJl
dHVybiBmYWxzZTsgfQorI2VuZGlmCisgICAgVVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYp
IGNvbnN0IGZpbmFsOworICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9CisgICAgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBVUkwm
KSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIGRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYpIGZpbmFs
OworICAgIHZvaWQgZGlzYWJsZVdlYkFzc2VtYmx5KGNvbnN0IFN0cmluZyYpIGZpbmFsOworCisg
ICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CisgICAgVW5pcXVlUmVmPFdvcmtsZXRTY3Jp
cHRDb250cm9sbGVyPiBtX3NjcmlwdDsKKworICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gbV90b3BP
cmlnaW47CisgICAgU3RyaW5nIG1faWRlbnRpZmllcjsKKworICAgIC8vIEZJWE1FOiBUaGlzIGlz
IG5vdCBpbXBsZW1lbnRlZCBwcm9wZXJseSwgaXQganVzdCBzYXRpc2ZpZXMgdGhlIGNvbXBpbGVy
LgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTExMzYK
KyAgICBtdXRhYmxlIFdvcmtlckV2ZW50UXVldWUgbV9ldmVudFF1ZXVlOworCisgICAgSlNDOjpS
dW50aW1lRmxhZ3MgbV9qc1J1bnRpbWVGbGFnczsKKyAgICBTY3JpcHRTb3VyY2VDb2RlIG1fY29k
ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19CRUdJTihXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGUpCitzdGF0aWMgYm9vbCBpc1R5cGUo
Y29uc3QgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeyByZXR1cm4g
Y29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0VORCgpCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmts
ZXRHbG9iYWxTY29wZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFs
U2NvcGUuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3NTlmMGNlMWQxNmY4NjkxODYwMTI3NzZmMGRiMTZiNjFi
YWE0NzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0
R2xvYmFsU2NvcGUuaWRsCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKwor
WworICAgIEN1c3RvbVByb3h5VG9KU09iamVjdCwKKyAgICBFeHBvc2VkPVdvcmtsZXQsCisgICAg
RW5hYmxlZEF0UnVudGltZT1DU1NQYWludGluZ0FQSSwKKyAgICBDb25kaXRpb25hbD1DU1NfUEFJ
TlRJTkdfQVBJLAorICAgIEpTTGVnYWN5UGFyZW50PUpTV29ya2xldEdsb2JhbFNjb3BlQmFzZSwK
KyAgICBJbXBsaWNpdFRoaXMsCisgICAgSXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3Qs
CisgICAgSXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3RPblByb3RvdHlwZSwKKyAgICBH
bG9iYWw9V29ya2xldCwKK10gaW50ZXJmYWNlIFdvcmtsZXRHbG9iYWxTY29wZSA6IEV2ZW50VGFy
Z2V0IHsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2Ny
aXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0
Q29udHJvbGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDU1ZDdmMTE2OGVlYjVhY2YwNDJmZjE0YmZjOTlj
NzNkY2NiOGYzNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dv
cmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMCwwICsxLDE4NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgorCisjaWYgRU5BQkxFKENTU19QQUlO
VElOR19BUEkpCisKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJKU0V2ZW50
VGFyZ2V0LmgiCisjaW5jbHVkZSAiSlNFeGVjU3RhdGUuaCIKKyNpbmNsdWRlICJKU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgorI2luY2x1
ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKKyNpbmNsdWRlICJXb3JrbGV0Q29uc29sZUNsaWVu
dC5oIgorCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29tcGxldGlvbi5oPgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0V4Y2VwdGlvbi5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0V4
Y2VwdGlvbkhlbHBlcnMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HQ0FjdGl2aXR5Q2Fs
bGJhY2suaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4KKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9Qcm9taXNlRGVmZXJyZWRUaW1lci5oPgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFt
ZXNwYWNlIEpTQzsKKworV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OldvcmtsZXRTY3JpcHRDb250
cm9sbGVyKFdvcmtsZXRHbG9iYWxTY29wZSogd29ya2xldEdsb2JhbFNjb3BlKQorICAgIDogbV92
bShWTTo6Y3JlYXRlKCkpCisgICAgLCBtX3dvcmtsZXRHbG9iYWxTY29wZSh3b3JrbGV0R2xvYmFs
U2NvcGUpCisgICAgLCBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIoKm1fdm0pCit7CisgICAg
bV92bS0+aGVhcC5hY3F1aXJlQWNjZXNzKCk7IC8vIEl0J3Mgbm90IGNsZWFyIHRoYXQgd2UgaGF2
ZSBnb29kIGRpc2NpcGxpbmUgZm9yIGhlYXAgYWNjZXNzLCBzbyB0dXJuIGl0IG9uIHBlcm1hbmVu
dGx5LgorICAgIEpTVk1DbGllbnREYXRhOjppbml0Tm9ybWFsV29ybGQobV92bS5nZXQoKSk7Cit9
CisKK1dvcmtsZXRTY3JpcHRDb250cm9sbGVyOjp+V29ya2xldFNjcmlwdENvbnRyb2xsZXIoKQor
eworICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKCkpOworICAgIG1fd29ya2xldEdsb2JhbFNjb3Bl
V3JhcHBlci5jbGVhcigpOworICAgIG1fdm0gPSBudWxscHRyOworICAgIGlmIChtX3dvcmtsZXRH
bG9iYWxTY29wZVdyYXBwZXIpIHsKKyAgICAgICAgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVy
LT5jbGVhckRPTUd1YXJkZWRPYmplY3RzKCk7CisgICAgICAgIG1fd29ya2xldEdsb2JhbFNjb3Bl
V3JhcHBlci0+c2V0Q29uc29sZUNsaWVudChudWxscHRyKTsKKyAgICAgICAgbV9jb25zb2xlQ2xp
ZW50ID0gbnVsbHB0cjsKKyAgICB9Cit9CisKK3ZvaWQgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6
OmZvcmJpZEV4ZWN1dGlvbigpCit7CisgICAgQVNTRVJUKG1fd29ya2xldEdsb2JhbFNjb3BlLT5p
c0NvbnRleHRUaHJlYWQoKSk7CisgICAgbV9leGVjdXRpb25Gb3JiaWRkZW4gPSB0cnVlOworfQor
Citib29sIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppc0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNv
bnN0Cit7CisgICAgQVNTRVJUKG1fd29ya2xldEdsb2JhbFNjb3BlLT5pc0NvbnRleHRUaHJlYWQo
KSk7CisgICAgcmV0dXJuIG1fZXhlY3V0aW9uRm9yYmlkZGVuOworfQorCit2b2lkIFdvcmtsZXRT
Y3JpcHRDb250cm9sbGVyOjpkaXNhYmxlRXZhbChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkK
K3sKKyAgICBpbml0U2NyaXB0SWZOZWVkZWQoKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9jayB7IHZt
KCkgfTsKKworICAgIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+c2V0RXZhbEVuYWJsZWQo
ZmFsc2UsIGVycm9yTWVzc2FnZSk7Cit9CisKK3ZvaWQgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6
OmRpc2FibGVXZWJBc3NlbWJseShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKK3sKKyAgICBp
bml0U2NyaXB0SWZOZWVkZWQoKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9jayB7IHZtKCkgfTsKKwor
ICAgIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+c2V0V2ViQXNzZW1ibHlFbmFibGVkKGZh
bHNlLCBlcnJvck1lc3NhZ2UpOworfQorCisKK3RlbXBsYXRlPHR5cGVuYW1lIEpTR2xvYmFsU2Nv
cGVQcm90b3R5cGUsIHR5cGVuYW1lIEpTR2xvYmFsU2NvcGUsIHR5cGVuYW1lIEdsb2JhbFNjb3Bl
Pgordm9pZCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdFdpdGhTdWJjbGFzcygp
Cit7CisgICAgQVNTRVJUKCFtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpOworCisgICAgSlNM
b2NrSG9sZGVyIGxvY2sgeyB2bSgpIH07CisKKyAgICAvLyBFeHBsaWNpdGx5IHByb3RlY3QgdGhl
IGdsb2JhbCBvYmplY3QncyBwcm90b3R5cGUgc28gaXQgaXNuJ3QgY29sbGVjdGVkCisgICAgLy8g
d2hlbiB3ZSBhbGxvY2F0ZSB0aGUgZ2xvYmFsIG9iamVjdC4gKE9uY2UgdGhlIGdsb2JhbCBvYmpl
Y3QgaXMgZnVsbHkKKyAgICAvLyBjb25zdHJ1Y3RlZCwgaXQgY2FuIG1hcmsgaXRzIG93biBwcm90
b3R5cGUuKQorICAgIFN0cnVjdHVyZSogY29udGV4dFByb3RvdHlwZVN0cnVjdHVyZSA9IEpTR2xv
YmFsU2NvcGVQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSgqbV92bSwgbnVsbHB0ciwganNOdWxs
KCkpOworICAgIGF1dG8qIGNvbnRleHRQcm90b3R5cGUgPSBKU0dsb2JhbFNjb3BlUHJvdG90eXBl
OjpjcmVhdGUoKm1fdm0sIG51bGxwdHIsIGNvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUpOworICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gSlNHbG9iYWxTY29wZTo6Y3JlYXRlU3RydWN0dXJlKCpt
X3ZtLCBudWxscHRyLCBjb250ZXh0UHJvdG90eXBlKTsKKyAgICBhdXRvKiBwcm94eVN0cnVjdHVy
ZSA9IEpTUHJveHk6OmNyZWF0ZVN0cnVjdHVyZSgqbV92bSwgbnVsbHB0ciwganNOdWxsKCksIFB1
cmVGb3J3YXJkaW5nUHJveHlUeXBlKTsKKyAgICBhdXRvKiBwcm94eSA9IEpTUHJveHk6OmNyZWF0
ZSgqbV92bSwgcHJveHlTdHJ1Y3R1cmUpOworCisgICAgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFw
cGVyLnNldCgqbV92bSwgSlNHbG9iYWxTY29wZTo6Y3JlYXRlKCptX3ZtLCBzdHJ1Y3R1cmUsIHN0
YXRpY19jYXN0PEdsb2JhbFNjb3BlJj4oKm1fd29ya2xldEdsb2JhbFNjb3BlKSwgcHJveHkpKTsK
KyAgICBjb250ZXh0UHJvdG90eXBlU3RydWN0dXJlLT5zZXRHbG9iYWxPYmplY3QoKm1fdm0sIG1f
d29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7CisgICAgQVNTRVJUKHN0cnVjdHVyZS0+
Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKTsKKyAgICBBU1NF
UlQobV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5zdHJ1Y3R1cmUoKm1fdm0pLT5nbG9iYWxP
YmplY3QoKSA9PSBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpOworICAgIGNvbnRleHRQcm90
b3R5cGUtPnN0cnVjdHVyZSgqbV92bSktPnNldEdsb2JhbE9iamVjdCgqbV92bSwgbV93b3JrbGV0
R2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKTsKKyAgICBjb250ZXh0UHJvdG90eXBlLT5zdHJ1Y3R1
cmUoKm1fdm0pLT5zZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbigqbV92bSwgSlNHbG9iYWxT
Y29wZTo6cHJvdG90eXBlKCptX3ZtLCAqbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLmdldCgp
KSk7CisKKyAgICBwcm94eS0+c2V0VGFyZ2V0KCptX3ZtLCBtX3dvcmtsZXRHbG9iYWxTY29wZVdy
YXBwZXIuZ2V0KCkpOworICAgIHByb3h5LT5zdHJ1Y3R1cmUoKm1fdm0pLT5zZXRHbG9iYWxPYmpl
Y3QoKm1fdm0sIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7CisKKyAgICBBU1NF
UlQobV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmts
ZXRHbG9iYWxTY29wZVdyYXBwZXIpOworICAgIEFTU0VSVChhc09iamVjdChtX3dvcmtsZXRHbG9i
YWxTY29wZVdyYXBwZXItPmdldFByb3RvdHlwZURpcmVjdCgqbV92bSkpLT5nbG9iYWxPYmplY3Qo
KSA9PSBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpOworCisgICAgbV9jb25zb2xlQ2xpZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrbGV0Q29uc29sZUNsaWVudD4oKm1fd29ya2xldEdsb2Jh
bFNjb3BlKTsKKyAgICBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPnNldENvbnNvbGVDbGll
bnQobV9jb25zb2xlQ2xpZW50LmdldCgpKTsKK30KKwordm9pZCBXb3JrbGV0U2NyaXB0Q29udHJv
bGxlcjo6aW5pdFNjcmlwdCgpCit7CisgICAgaWYgKGlzPFBhaW50V29ya2xldEdsb2JhbFNjb3Bl
PihtX3dvcmtsZXRHbG9iYWxTY29wZSkpIHsKKyAgICAgICAgaW5pdFNjcmlwdFdpdGhTdWJjbGFz
czxKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlUHJvdG90eXBlLCBKU1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlLCBQYWludFdvcmtsZXRHbG9iYWxTY29wZT4oKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIFdvcmtsZXRTY3JpcHRD
b250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBT
dHJpbmcqIHJldHVybmVkRXhjZXB0aW9uTWVzc2FnZSkKK3sKKyAgICBpZiAoaXNFeGVjdXRpb25G
b3JiaWRkZW4oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRp
b24+IGV4Y2VwdGlvbjsKKyAgICBldmFsdWF0ZShzb3VyY2VDb2RlLCBleGNlcHRpb24sIHJldHVy
bmVkRXhjZXB0aW9uTWVzc2FnZSk7CisgICAgaWYgKGV4Y2VwdGlvbikgeworICAgICAgICBKU0xv
Y2tIb2xkZXIgbG9jayh2bSgpKTsKKyAgICAgICAgcmVwb3J0RXhjZXB0aW9uKG1fd29ya2xldEds
b2JhbFNjb3BlV3JhcHBlci0+Z2xvYmFsRXhlYygpLCBleGNlcHRpb24pOworICAgIH0KK30KKwor
Ly8gSW1wb3J0YW50OiBUaGUgY2FsbGVyIG9mIHRoaXMgZnVuY3Rpb24gbXVzdCB2ZXJpZnkgdGhh
dCB0aGUgcmV0dXJuZWQgZXhjZXB0aW9uIG1lc3NhZ2UgZG9lcyBub3QgdmlvbGF0ZSBDT1JTIGlm
IGl0IGlzIGdvaW5nIHRvIGJlIHBhc3NlZCBiYWNrIHRvIEpTLgordm9pZCBXb3JrbGV0U2NyaXB0
Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwg
TmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbiwgU3RyaW5nKiByZXR1
cm5lZEV4Y2VwdGlvbk1lc3NhZ2UpCit7CisgICAgaWYgKGlzRXhlY3V0aW9uRm9yYmlkZGVuKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIGluaXRTY3JpcHRJZk5lZWRlZCgpOworCisgICAgYXV0
byYgc3RhdGUgPSAqbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxFeGVjKCk7Cisg
ICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9jayB7IHZtIH07CisK
KyAgICBKU0V4ZWNTdGF0ZTo6cHJvZmlsZWRFdmFsdWF0ZSgmc3RhdGUsIEpTQzo6UHJvZmlsaW5n
UmVhc29uOjpPdGhlciwgc291cmNlQ29kZS5qc1NvdXJjZUNvZGUoKSwgbV93b3JrbGV0R2xvYmFs
U2NvcGVXcmFwcGVyLT5nbG9iYWxUaGlzKCksIHJldHVybmVkRXhjZXB0aW9uKTsKKworICAgIGlm
IChyZXR1cm5lZEV4Y2VwdGlvbiAmJiByZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2UpIHsKKyAgICAg
ICAgLy8gVGhpcyBGSVhNRSBpcyBmcm9tIFdvcmtlclNjcmlwdENvbnRyb2xsZXIuCisgICAgICAg
IC8vIEZJWE1FOiBJdCdzIG5vdCBncmVhdCB0aGF0IHRoaXMgY2FuIHJ1biBhcmJpdHJhcnkgY29k
ZSB0byBzdHJpbmctaWZ5IHRoZSB2YWx1ZSBvZiB0aGUgZXhjZXB0aW9uLgorICAgICAgICAvLyBE
byB3ZSBuZWVkIHRvIGRvIGFueXRoaW5nIHRvIGhhbmRsZSB0aGF0IHByb3Blcmx5LCBpZiBpdCwg
c2F5LCByYWlzZXMgYW5vdGhlciBleGNlcHRpb24/CisgICAgICAgICpyZXR1cm5lZEV4Y2VwdGlv
bk1lc3NhZ2UgPSByZXR1cm5lZEV4Y2VwdGlvbi0+dmFsdWUoKS50b1dURlN0cmluZygmc3RhdGUp
OworICAgIH0KK30KKwordm9pZCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6c2V0RXhjZXB0aW9u
KEpTQzo6RXhjZXB0aW9uKiBleGNlcHRpb24pCit7CisgICAgYXV0byogZXhlYyA9IG1fd29ya2xl
dEdsb2JhbFNjb3BlV3JhcHBlci0+Z2xvYmFsRXhlYygpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIHRocm93
RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBleGNlcHRpb24pOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmts
ZXRTY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2Ny
aXB0Q29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhNTc4YmJmOWFiMzIxYzk3MDE0NGViOGZjZTM4
YmVlNTM2NWU4N2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9X
b3JrbGV0U2NyaXB0Q29udHJvbGxlci5oCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJM
RShDU1NfUEFJTlRJTkdfQVBJKQorCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGVidWdnZXIu
aD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1J1bkxvb3BUaW1lci5oPgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1N0cm9uZy5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5j
bHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvTmFrZWRQdHIuaD4KKworbmFtZXNwYWNl
IEpTQyB7CitjbGFzcyBWTTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBKU1dv
cmtsZXRHbG9iYWxTY29wZTsKK2NsYXNzIFNjcmlwdFNvdXJjZUNvZGU7CitjbGFzcyBXb3JrbGV0
Q29uc29sZUNsaWVudDsKK2NsYXNzIFdvcmtsZXRHbG9iYWxTY29wZTsKK2NsYXNzIFdvcmtsZXRD
b25zb2xlQ2xpZW50OworCitjbGFzcyBXb3JrbGV0U2NyaXB0Q29udHJvbGxlciB7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoV29ya2xldFNjcmlwdENvbnRyb2xsZXIpOyBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcihXb3JrbGV0
R2xvYmFsU2NvcGUqKTsKKyAgICB+V29ya2xldFNjcmlwdENvbnRyb2xsZXIoKTsKKworICAgIEpT
V29ya2xldEdsb2JhbFNjb3BlKiB3b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKCkKKyAgICB7Cisg
ICAgICAgIGluaXRTY3JpcHRJZk5lZWRlZCgpOworICAgICAgICByZXR1cm4gbV93b3JrbGV0R2xv
YmFsU2NvcGVXcmFwcGVyLmdldCgpOworICAgIH0KKworICAgIHZvaWQgZm9yYmlkRXhlY3V0aW9u
KCk7CisgICAgYm9vbCBpc0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0OworCisgICAgdm9pZCBk
aXNhYmxlRXZhbChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CisgICAgdm9pZCBkaXNhYmxl
V2ViQXNzZW1ibHkoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOworCisgICAgdm9pZCBldmFs
dWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgU3RyaW5nKiByZXR1cm5lZEV4Y2VwdGlvbk1l
c3NhZ2UgPSBudWxscHRyKTsKKyAgICB2b2lkIGV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNv
ZGUmLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uLCBTdHJpbmcq
IHJldHVybmVkRXhjZXB0aW9uTWVzc2FnZSA9IG51bGxwdHIpOworCisgICAgdm9pZCBzZXRFeGNl
cHRpb24oSlNDOjpFeGNlcHRpb24qKTsKKworICAgIEpTQzo6Vk0mIHZtKCkgeyByZXR1cm4gKm1f
dm07IH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGluaXRTY3JpcHRJZk5lZWRlZCgpCisgICAgewor
ICAgICAgICBpZiAoIW1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcikKKyAgICAgICAgICAgIGlu
aXRTY3JpcHQoKTsKKyAgICB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0U2NyaXB0KCk7
CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBKU0dsb2JhbFNjb3BlUHJvdG90eXBlLCB0eXBlbmFt
ZSBKU0dsb2JhbFNjb3BlLCB0eXBlbmFtZSBHbG9iYWxTY29wZT4KKyAgICB2b2lkIGluaXRTY3Jp
cHRXaXRoU3ViY2xhc3MoKTsKKworICAgIGJvb2wgbV9leGVjdXRpb25Gb3JiaWRkZW4geyBmYWxz
ZSB9OworICAgIFJlZlB0cjxKU0M6OlZNPiBtX3ZtOworICAgIFdvcmtsZXRHbG9iYWxTY29wZSog
bV93b3JrbGV0R2xvYmFsU2NvcGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdvcmtsZXRDb25zb2xl
Q2xpZW50PiBtX2NvbnNvbGVDbGllbnQ7CisgICAgSlNDOjpTdHJvbmc8SlNXb3JrbGV0R2xvYmFs
U2NvcGU+IG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcjsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDJjYTNlZGU0NWVjNzZlMmI5MzZkMzU5YjI0ZjRlMTM4MGQzZDhiZjguLmU3
YTFlOTVhNWY4NjNmYjM0ZjI1Yzk2Y2Y1ZTM5OWQ2NTA4NmUxNzIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOC0x
MC0yOSAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAg
ICAgQWRkIG5ldyBnbG9iYWwgb2JqZWN0IGFuZCBwcmVsaW1pbmFyeSBXb3JrbGV0cyBzdXBwb3J0
IGZvciBDU1MgcGFpbnRpbmcgYXBpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTA5NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvYmluZGluZ3MvbWFpbi5weToKKyAgICAg
ICAgKEJpbmRpbmdzVGVzdHMuZ2VuZXJhdGVfc3VwcGxlbWVudGFsX2RlcGVuZGVuY3kpOgorICAg
ICAgICAoQmluZGluZ3NUZXN0cy5tYWluKToKKwogMjAxOC0xMC0yNiAgQ29tbWl0IFF1ZXVlICA8
Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBv
dXQgcjIzNzQ3OSBhbmQgcjIzNzQ4NC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvYmluZGluZ3MvbWFpbi5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmluZGluZ3MvbWFp
bi5weQppbmRleCAwNGNiZDg1MDU2NzNiZDVjNmYyZTlkNzA1MjA4MWYxMmQ2NmM0NGUyLi4yMDkz
N2JlZDZkOWQ3YjhhNjIzODAzODhiN2VlYzVlYmFkNGI0OTMxIDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2JpbmRpbmdzL21haW4ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9iaW5kaW5ncy9tYWluLnB5CkBAIC03MCw3ICs3MCw3IEBAIGNsYXNzIEJpbmRpbmdzVGVz
dHM6CiAgICAgICAgICAgICBleGl0X2NvZGUgPSBlLmV4aXRfY29kZQogICAgICAgICByZXR1cm4g
ZXhpdF9jb2RlCiAKLSAgICBkZWYgZ2VuZXJhdGVfc3VwcGxlbWVudGFsX2RlcGVuZGVuY3koc2Vs
ZiwgaW5wdXRfZGlyZWN0b3J5LCBzdXBwbGVtZW50YWxfZGVwZW5kZW5jeV9maWxlLCB3aW5kb3df
Y29uc3RydWN0b3JzX2ZpbGUsIHdvcmtlcmdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlLCBk
ZWRpY2F0ZWR3b3JrZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSwgc2VydmljZXdvcmtl
cmdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlKToKKyAgICBkZWYgZ2VuZXJhdGVfc3VwcGxl
bWVudGFsX2RlcGVuZGVuY3koc2VsZiwgaW5wdXRfZGlyZWN0b3J5LCBzdXBwbGVtZW50YWxfZGVw
ZW5kZW5jeV9maWxlLCB3aW5kb3dfY29uc3RydWN0b3JzX2ZpbGUsIHdvcmtlcmdsb2JhbHNjb3Bl
X2NvbnN0cnVjdG9yc19maWxlLCBkZWRpY2F0ZWR3b3JrZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3Rv
cnNfZmlsZSwgc2VydmljZXdvcmtlcmdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlLCB3b3Jr
bGV0Z2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGUsIHBhaW50d29ya2xldGdsb2JhbHNjb3Bl
X2NvbnN0cnVjdG9yc19maWxlKToKICAgICAgICAgaWRsX2ZpbGVzX2xpc3QgPSB0ZW1wZmlsZS5t
a3N0ZW1wKCkKICAgICAgICAgZm9yIGlucHV0X2ZpbGUgaW4gb3MubGlzdGRpcihpbnB1dF9kaXJl
Y3RvcnkpOgogICAgICAgICAgICAgKG5hbWUsIGV4dGVuc2lvbikgPSBvcy5wYXRoLnNwbGl0ZXh0
KGlucHV0X2ZpbGUpCkBAIC04OCw3ICs4OCw5IEBAIGNsYXNzIEJpbmRpbmdzVGVzdHM6CiAgICAg
ICAgICAgICAgICAnLS13aW5kb3dDb25zdHJ1Y3RvcnNGaWxlJywgd2luZG93X2NvbnN0cnVjdG9y
c19maWxlLAogICAgICAgICAgICAgICAgJy0td29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNG
aWxlJywgd29ya2VyZ2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGUsCiAgICAgICAgICAgICAg
ICAnLS1kZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUnLCBkZWRpY2F0
ZWR3b3JrZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSwKLSAgICAgICAgICAgICAgICct
LXNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUnLCBzZXJ2aWNld29ya2Vy
Z2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGVdCisgICAgICAgICAgICAgICAnLS1zZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlJywgc2VydmljZXdvcmtlcmdsb2JhbHNj
b3BlX2NvbnN0cnVjdG9yc19maWxlLAorICAgICAgICAgICAgICAgJy0td29ya2xldEdsb2JhbFNj
b3BlQ29uc3RydWN0b3JzRmlsZScsIHdvcmtsZXRnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmls
ZSwKKyAgICAgICAgICAgICAgICctLXBhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3Jz
RmlsZScsIHBhaW50d29ya2xldGdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlXQogCiAgICAg
ICAgIGV4aXRfY29kZSA9IDAKICAgICAgICAgdHJ5OgpAQCAtMTg1LDEzICsxODcsMTcgQEAgY2xh
c3MgQmluZGluZ3NUZXN0czoKICAgICAgICAgd29ya2VyZ2xvYmFsc2NvcGVfY29uc3RydWN0b3Jz
X2ZpbGUgPSB0ZW1wZmlsZS5ta3N0ZW1wKCkKICAgICAgICAgZGVkaWNhdGVkd29ya2VyZ2xvYmFs
c2NvcGVfY29uc3RydWN0b3JzX2ZpbGUgPSB0ZW1wZmlsZS5ta3N0ZW1wKCkKICAgICAgICAgc2Vy
dmljZXdvcmtlcmdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlID0gdGVtcGZpbGUubWtzdGVt
cCgpCi0gICAgICAgIGlmIHNlbGYuZ2VuZXJhdGVfc3VwcGxlbWVudGFsX2RlcGVuZGVuY3koaW5w
dXRfZGlyZWN0b3J5LCBzdXBwbGVtZW50YWxfZGVwZW5kZW5jeV9maWxlWzFdLCB3aW5kb3dfY29u
c3RydWN0b3JzX2ZpbGVbMV0sIHdvcmtlcmdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlWzFd
LCBkZWRpY2F0ZWR3b3JrZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZVsxXSwgc2Vydmlj
ZXdvcmtlcmdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlWzFdKToKKyAgICAgICAgd29ya2xl
dGdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlID0gdGVtcGZpbGUubWtzdGVtcCgpCisgICAg
ICAgIHBhaW50d29ya2xldGdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlID0gdGVtcGZpbGUu
bWtzdGVtcCgpCisgICAgICAgIGlmIHNlbGYuZ2VuZXJhdGVfc3VwcGxlbWVudGFsX2RlcGVuZGVu
Y3koaW5wdXRfZGlyZWN0b3J5LCBzdXBwbGVtZW50YWxfZGVwZW5kZW5jeV9maWxlWzFdLCB3aW5k
b3dfY29uc3RydWN0b3JzX2ZpbGVbMV0sIHdvcmtlcmdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19m
aWxlWzFdLCBkZWRpY2F0ZWR3b3JrZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZVsxXSwg
c2VydmljZXdvcmtlcmdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlWzFdLCB3b3JrbGV0Z2xv
YmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGVbMV0sIHBhaW50d29ya2xldGdsb2JhbHNjb3BlX2Nv
bnN0cnVjdG9yc19maWxlWzFdKToKICAgICAgICAgICAgIHByaW50KCdGYWlsZWQgdG8gZ2VuZXJh
dGUgYSBzdXBwbGVtZW50YWwgZGVwZW5kZW5jeSBmaWxlLicpCiAgICAgICAgICAgICBzZWxmLmNs
b3NlX2FuZF9yZW1vdmUoc3VwcGxlbWVudGFsX2RlcGVuZGVuY3lfZmlsZSkKICAgICAgICAgICAg
IHNlbGYuY2xvc2VfYW5kX3JlbW92ZSh3aW5kb3dfY29uc3RydWN0b3JzX2ZpbGUpCiAgICAgICAg
ICAgICBzZWxmLmNsb3NlX2FuZF9yZW1vdmUod29ya2VyZ2xvYmFsc2NvcGVfY29uc3RydWN0b3Jz
X2ZpbGUpCiAgICAgICAgICAgICBzZWxmLmNsb3NlX2FuZF9yZW1vdmUoZGVkaWNhdGVkd29ya2Vy
Z2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGUpCiAgICAgICAgICAgICBzZWxmLmNsb3NlX2Fu
ZF9yZW1vdmUoc2VydmljZXdvcmtlcmdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlKQorICAg
ICAgICAgICAgc2VsZi5jbG9zZV9hbmRfcmVtb3ZlKHdvcmtsZXRnbG9iYWxzY29wZV9jb25zdHJ1
Y3RvcnNfZmlsZSkKKyAgICAgICAgICAgIHNlbGYuY2xvc2VfYW5kX3JlbW92ZShwYWludHdvcmts
ZXRnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSkKICAgICAgICAgICAgIHJldHVybiAtMQog
CiAgICAgICAgIGZvciBnZW5lcmF0b3IgaW4gc2VsZi5nZW5lcmF0b3JzOgpAQCAtMjA1LDYgKzIx
MSw4IEBAIGNsYXNzIEJpbmRpbmdzVGVzdHM6CiAgICAgICAgIHNlbGYuY2xvc2VfYW5kX3JlbW92
ZSh3b3JrZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSkKICAgICAgICAgc2VsZi5jbG9z
ZV9hbmRfcmVtb3ZlKGRlZGljYXRlZHdvcmtlcmdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxl
KQogICAgICAgICBzZWxmLmNsb3NlX2FuZF9yZW1vdmUoc2VydmljZXdvcmtlcmdsb2JhbHNjb3Bl
X2NvbnN0cnVjdG9yc19maWxlKQorICAgICAgICBzZWxmLmNsb3NlX2FuZF9yZW1vdmUod29ya2xl
dGdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlKQorICAgICAgICBzZWxmLmNsb3NlX2FuZF9y
ZW1vdmUocGFpbnR3b3JrbGV0Z2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGUpCiAKICAgICAg
ICAgaWYgc2VsZi5qc29uX2ZpbGVfbmFtZToKICAgICAgICAgICAgIGpzb25fZGF0YSA9IHsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCAxYjU4MGQ5NDkwMTFmNDY0MTNiZGM2M2Y4NDg5NDc2MjA3MjQwNTRjLi45ZGQyY2ZkMThm
MWI5N2M1ODBmZjIwNjZkZjVhZWQxZjM2OGQ1OWJjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIw
MTgtMTAtMjkgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisg
ICAgICAgIEFkZCBuZXcgZ2xvYmFsIG9iamVjdCBhbmQgcHJlbGltaW5hcnkgV29ya2xldHMgc3Vw
cG9ydCBmb3IgQ1NTIHBhaW50aW5nIGFwaQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTkwOTc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIGEgbmV3IHRlc3QgaGFybmVzcyBmb3Igd29ya2xldCB0ZXN0
cywgc2luY2UgdGhleSBkbyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIGRvbS4KKworICAgICAgICAq
IGZhc3QvY3NzLWN1c3RvbS1wYWludC9iYXNpYy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFz
dC9jc3MtY3VzdG9tLXBhaW50L2Jhc2ljLmh0bWw6CisgICAgICAgICogZmFzdC9jc3MtY3VzdG9t
LXBhaW50L3JlZ2lzdGVyUGFpbnRCaW5kaW5ncy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVnaXN0ZXJQYWludEJpbmRpbmdzLWV4cGVjdGVk
LnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVnaXN0ZXJQ
YWludEJpbmRpbmdzLmh0bWw6CisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Jlc291
cmNlcy90ZXN0aGFybmVzcy13b3JrbGV0LmpzOiBBZGRlZC4KKyAgICAgICAgKGZvcm1hdF92YWx1
ZSk6CisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qczogQWRkZWQuCisgICAgICAgIChhc3luYy5pbXBvcnRXb3JrbGV0KToKKyAgICAgICAgKiBm
YXN0L2Nzcy1jdXN0b20tcGFpbnQvd29ya2xldC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvd29ya2xldC5odG1sOiBBZGRlZC4KKwogMjAxOC0x
MC0yNiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIzNzQ3OSBhbmQgcjIzNzQ4NC4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9iYXNpYy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYmFzaWMtZXhwZWN0ZWQudHh0CmluZGV4
IGVhYTE3NDNlNDM5OTAwYmZkNzNiMGMxOTE2ZTNkMmVjZWU2ZDRiNTYuLjAyMDU5Zjk4MzVlMjM2
YWE1ZTk5Mjk1NTE0OTE3M2I1ZDc1MjU1YTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzLWN1c3RvbS1wYWludC9iYXNpYy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9jc3MtY3VzdG9tLXBhaW50L2Jhc2ljLWV4cGVjdGVkLnR4dApAQCAtMSwxMCArMSwzIEBACiAK
LVBBU1MgdGVzdCB0aGF0IHJlZ2lzdGVyUGFpbnQgcnVucyAKLVBBU1MgdGVzdCB0aGF0IHJlZ2lz
dGVyUGFpbnQgcnVucyB3aXRob3V0IGlucHV0UHJvcGVydGllcyAKLVBBU1MgdGVzdCB0aGF0IHJl
Z2lzdGVyUGFpbnQgcnVucyB3aXRoIGlucHV0QXJndW1lbnRzIAotUEFTUyB0ZXN0IHRoYXQgcmVn
aXN0ZXJQYWludCBydW5zIHdpdGggY29udGV4dE9wdGlvbnMgCi1QQVNTIHRlc3QgdGhhdCByZWdp
c3RlclBhaW50IHJ1bnMgd2l0aCBwcmVkZWZpbmVkIGNsYXNzIAotUEFTUyB0ZXN0IHRoYXQgcmVn
aXN0ZXJQYWludCBhY2NlcHRzIG9ubHkgYSBzdHJpbmcgYW5kIGEgY2xhc3MgY29uc3RydWN0b3Ig
CiBQQVNTIHRlc3QgdGhhdCB0ZXN0IGRpdiBoYXMgcGFpbnQoKSB2YWx1ZSAKLVBBU1MgdGVzdCB0
aGF0IHRlc3QgZGl2IHBhaW50IGNhbGxiYWNrIGdldHMgY2FsbGVkIAogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYmFzaWMuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvY3NzLWN1c3RvbS1wYWludC9iYXNpYy5odG1sCmluZGV4IDNmNGRjM2EyZDAyZWYyMWEy
ZTk3MmQ0YzhiNGYyZmFlOGMzODk0NTguLjRjOGIwY2Y1MmUxNmQ1YzhmMDI4NzhlMmNmNzU3OTUz
NDBlMjhmOTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9i
YXNpYy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9iYXNpYy5o
dG1sCkBAIC0xNiw3MCArMTYsNyBAQAogPGRpdiBpZD0icGFpbnQiPjwvZGl2PgogCiA8c2NyaXB0
PgotdGVzdChmdW5jdGlvbigpIHsKLSAgQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lz
dGVyUGFpbnQoJ3Rlc3QxJywgY2xhc3MgewotICAgIHN0YXRpYyBnZXQgaW5wdXRQcm9wZXJ0aWVz
KCkgeyByZXR1cm4gWyItLXRlc3QiXTsgfQotICAgIHBhaW50KCkgeyB9Ci0gIH0pOwotfSwgJ3Rl
c3QgdGhhdCByZWdpc3RlclBhaW50IHJ1bnMnKTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgQ1NT
LnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3QyJywgY2xhc3Mgewot
ICAgIHBhaW50KCkgeyB9Ci0gIH0pOwotfSwgJ3Rlc3QgdGhhdCByZWdpc3RlclBhaW50IHJ1bnMg
d2l0aG91dCBpbnB1dFByb3BlcnRpZXMnKTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgQ1NTLnBh
aW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3QzJywgY2xhc3MgewotICAg
IHN0YXRpYyBnZXQgaW5wdXRBcmd1bWVudHMoKSB7IHJldHVybiBbIjxsZW5ndGg+Il07IH0KLSAg
ICBwYWludCgpIHsgfQotICB9KTsKLX0sICd0ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBydW5zIHdp
dGggaW5wdXRBcmd1bWVudHMnKTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgQ1NTLnBhaW50V29y
a2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3Q0JywgY2xhc3MgewotICAgIHN0YXRp
YyBnZXQgY29udGV4dE9wdGlvbnMoKSB7IHJldHVybiB7IGFscGhhOiB0cnVlIH07IH0KLSAgICBw
YWludCgpIHsgfQotICB9KTsKLX0sICd0ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBydW5zIHdpdGgg
Y29udGV4dE9wdGlvbnMnKTsKLQotY2xhc3MgTXlQYWludCB7Ci0gIHBhaW50KCkgeyB9Ci19Ci0K
LXRlc3QoZnVuY3Rpb24oKSB7Ci0gIENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3Rl
clBhaW50KCd0ZXN0NScsIE15UGFpbnQpOwotICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdJbnZh
bGlkTW9kaWZpY2F0aW9uRXJyb3InfSwgKCkgPT4gQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3Bl
LnJlZ2lzdGVyUGFpbnQoJ3Rlc3Q1JywgTXlQYWludCkpOwotICBDU1MucGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUucmVnaXN0ZXJQYWludCgndGVzdDYnLCBjbGFzcyBleHRlbmRzIE15UGFpbnQgeyB9
KTsKLX0sICd0ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBydW5zIHdpdGggcHJlZGVmaW5lZCBjbGFz
cycpOwotCi10ZXN0KGZ1bmN0aW9uKCkgewotICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdJbnZh
bGlkTW9kaWZpY2F0aW9uRXJyb3InfSwgKCkgPT4gQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3Bl
LnJlZ2lzdGVyUGFpbnQoJ3Rlc3Q2JywgJ3Rlc3QnKSk7Ci0gIGFzc2VydF90aHJvd3MobmV3IFR5
cGVFcnJvcigpLCAoKSA9PiBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWlu
dCgndGVzdDcnKSk7Ci0gIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBDU1Mu
cGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgndGVzdDgnLCBbXSkpOwotICBh
c3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gQ1NTLnBhaW50V29ya2xldEdsb2Jh
bFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3Q5Jywge30pKTsKLSAgYXNzZXJ0X3Rocm93cyhuZXcg
VHlwZUVycm9yKCksICgpID0+IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBh
aW50KCd0ZXN0MTAnLCA1KSk7Ci0gIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9
PiBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgnJywgNSkpOwotfSwg
J3Rlc3QgdGhhdCByZWdpc3RlclBhaW50IGFjY2VwdHMgb25seSBhIHN0cmluZyBhbmQgYSBjbGFz
cyBjb25zdHJ1Y3RvcicpOwotCiB0ZXN0KGZ1bmN0aW9uKCkgewogICBhc3NlcnRfZXF1YWxzKGdl
dENvbXB1dGVkU3R5bGUocGFpbnQpLmdldFByb3BlcnR5VmFsdWUoImJhY2tncm91bmQtaW1hZ2Ui
KSwgInBhaW50KG15LXBhaW50KSIpOwogfSwgJ3Rlc3QgdGhhdCB0ZXN0IGRpdiBoYXMgcGFpbnQo
KSB2YWx1ZScpOwotCi1sZXQgcGFpbnRfY2FsbGVkX3Rlc3QgPSBhc3luY190ZXN0KCd0ZXN0IHRo
YXQgdGVzdCBkaXYgcGFpbnQgY2FsbGJhY2sgZ2V0cyBjYWxsZWQnKTsKLXBhaW50X2NhbGxlZF90
ZXN0LnN0ZXAoZnVuY3Rpb24oKSB7Ci0gIENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdp
c3RlclBhaW50KCdteS1wYWludCcsIGNsYXNzIHsKLSAgICBwYWludChjdHgsIGdlb20sIHByb3Bl
cnRpZXMpIHsKLSAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKXsKLSAgICAgICAgZm9y
ICh2YXIgaiA9IDA7IGogPCA2OyBqKyspewotICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSAncmdi
KCcgKyBNYXRoLmZsb29yKDI1NSAtIDQyLjUgKiBpKSArICcsJyArCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICBNYXRoLmZsb29yKDI1NSAtIDQyLjUgKiBqKSArICcsMCknOwotICAgICAgICAg
IGN0eC5maWxsUmVjdChqICogMjUsIGkgKiAyNSwgMjUsIDI1KTsKLSAgICAgICAgfQotICAgICAg
fQotICAgICAgcGFpbnRfY2FsbGVkX3Rlc3QuZG9uZSgpOwotICAgIH0KLSAgfSk7Ci19KTsKLQog
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQv
cmVnaXN0ZXJQYWludEJpbmRpbmdzLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy1jdXN0b20tcGFpbnQvcmVnaXN0ZXJQYWludEJpbmRpbmdzLWV4cGVjdGVkLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGI0MmI2MmRhMTNlZGE4MTk2MTBiMzE5N2I0ZTQ1YTU0NzNiZGNmMwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9yZWdpc3RlclBhaW50
QmluZGluZ3MtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDE2IEBACis8IURPQ1RZUEUgaHRtbD48
IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGV4cGVyaW1lbnRhbDpDU1NQYWludGluZ0FQSUVuYWJs
ZWQ9dHJ1ZSBdIC0tPgorCis8Y2FudmFzIGlkPSJwYWludCIgd2lkdGg9IjE1MHB4IiBoZWlnaHQ9
IjE1MHB4IiA+PC9jYW52YXM+CisKKzxzY3JpcHQgaWQ9ImNvZGUiPgordmFyIGNhbnZhcyA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYWludCcpOwordmFyIGN0eCA9IGNhbnZhcy5nZXRDb250
ZXh0KCcyZCcpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKyl7CisgIGZvciAodmFyIGog
PSAwOyBqIDwgNjsgaisrKXsKKyAgICBjdHguZmlsbFN0eWxlID0gJ3JnYignICsgTWF0aC5mbG9v
cigyNTUgLSA0Mi41ICogaSkgKyAnLCcgKworICAgICAgICAgICAgICAgICAgICAgTWF0aC5mbG9v
cigyNTUgLSA0Mi41ICogaikgKyAnLDApJzsKKyAgICBjdHguZmlsbFJlY3QoaiAqIDI1LCBpICog
MjUsIDI1LCAyNSk7CisgIH0KK30KKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MtY3VzdG9tLXBhaW50L3JlZ2lzdGVyUGFpbnRCaW5kaW5ncy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVnaXN0ZXJQYWludEJpbmRpbmdz
LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzAxNDMxNTJiZDg2
YzlkYjBkOTcyOTI0MjJkNWI4YWY4OGE1MTA2Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVn
aXN0ZXJQYWludEJpbmRpbmdzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDEzICsw
LDAgQEAKLQotUEFTUyByZWdpc3RlclBhaW50IG11c3QgYmUgYSBtZXRob2QgCi1QQVNTIG11c3Qg
Z2V0ICJwcm90b3R5cGUiIHByb3BlcnR5IG9mIHRoZSBjb25zdHJ1Y3RvciAKLVBBU1MgbXVzdCBy
ZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgZ2V0dGluZyAiaW5wdXRQcm9wZXJ0aWVz
IiBwcm9wZXJ0eSBvZiB0aGUgY29uc3RydWN0b3IgCi1QQVNTIG11c3QgcmV0aHJvdyBhbiBleGNl
cHRpb24gdGhyb3duIHdoaWxlIGdldHRpbmcgInByb3RvdHlwZSIgcHJvcGVydHkgb2YgdGhlIGNv
bnN0cnVjdG9yIAotUEFTUyBtdXN0IHRocm93IHdoZW4gInByb3RvdHlwZSIgcHJvcGVydHkgb2Yg
dGhlIGNvbnN0cnVjdG9yIGlzIG5vdCBhbiBvYmplY3QgCi1QQVNTIG11c3QgZ2V0IHBhaW50IGNh
bGxiYWNrIG9mIHRoZSBjb25zdHJ1Y3RvciBwcm90b3R5cGUgCi1QQVNTIG11c3QgcmV0aHJvdyBh
biBleGNlcHRpb24gdGhyb3duIHdoaWxlIGdldHRpbmcgcGFpbnQgY2FsbGJhY2sgb24gdGhlIGNv
bnN0cnVjdG9yIHByb3RvdHlwZSAKLVBBU1MgbXVzdCByZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJv
d24gd2hpbGUgY29udmVydGluZyBwYWludCBjYWxsYmFjayB2YWx1ZSB0byBGdW5jdGlvbiBjYWxs
YmFjayB0eXBlIAotUEFTUyBtdXN0IHJldGhyb3cgYW4gZXhjZXB0aW9uIHRocm93biB3aGlsZSBj
b252ZXJ0aW5nIHRoZSB2YWx1ZSBvZiBpbnB1dEFyZ3VtZW50cyB0byBzZXF1ZW5jZTxET01TdHJp
bmc+IAotUEFTUyBtdXN0IHJldGhyb3cgYW4gZXhjZXB0aW9uIHRocm93biB3aGlsZSBpdGVyYXRp
bmcgb3ZlciBpbnB1dEFyZ3VtZW50cyB0byBzZXF1ZW5jZTxET01TdHJpbmc+IAotUEFTUyBtdXN0
IHJldGhyb3cgYW4gZXhjZXB0aW9uIHRocm93biB3aGlsZSByZXRyaWV2aW5nIFN5bWJvbC5pdGVy
YXRvciBvbiBpbnB1dEFyZ3VtZW50cyAKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9j
c3MtY3VzdG9tLXBhaW50L3JlZ2lzdGVyUGFpbnRCaW5kaW5ncy5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MtY3VzdG9tLXBhaW50L3JlZ2lzdGVyUGFpbnRCaW5kaW5ncy5odG1sCmluZGV4IGRj
OTAyYzRjZDY1OTEwZDViMThjYWUxNTRlZjMzOGNhOTg5OGJjZGMuLmZjMTNlYjliYTQ1NjUzOWM5
NGY0ZjYyNjI4NDUxY2RkODQ1ZjM0YjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3Nz
LWN1c3RvbS1wYWludC9yZWdpc3RlclBhaW50QmluZGluZ3MuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVnaXN0ZXJQYWludEJpbmRpbmdzLmh0bWwKQEAgLTIs
MTcgKzIsNjQgQEAKIDxtZXRhIG5hbWU9ImF1dGhvciIgdGl0bGU9Ikp1c3RpbiBNaWNoYXVkIiBo
cmVmPSJtYWlsdG86anVzdGluX21pY2hhdWRAd2Via2l0Lm9yZyI+CiA8bWV0YSBuYW1lPSJhc3Nl
cnQiIGNvbnRlbnQ9InJlZ2lzdGVyUGFpbnQgYWNjZXNzZXMgYXJndW1lbnRzIGluIHRoZSBjb3Jy
ZWN0IG9yZGVyIj4KIDxsaW5rIHJlbD0iaGVscCIgY29udGVudD0iaHR0cHM6Ly9kcmFmdHMuY3Nz
LWhvdWRpbmkub3JnL2Nzcy1wYWludC1hcGktMS8iPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKworPHN0eWxlPgorICAjcGFp
bnQgeworICAgIGJhY2tncm91bmQtaW1hZ2U6IHBhaW50KG15LXBhaW50KTsKKyAgICB3aWR0aDog
MTUwcHg7CisgICAgaGVpZ2h0OiAxNTBweDsKKyAgfQorPC9zdHlsZT4KKworPGRpdiBpZD0icGFp
bnQiPjwvZGl2PgorCis8c2NyaXB0IGlkPSJjb2RlIiB0eXBlPSJ0ZXh0L3dvcmtsZXQiPgogY2xh
c3MgTXlQYWludCB7CiAgIHBhaW50KCkgeyB9CiB9CiAKLXRlc3QoZnVuY3Rpb24gKCkgewotICAg
IGFzc2VydF90cnVlKCdyZWdpc3RlclBhaW50JyBpbiBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUuX19wcm90b19fLCAnInJlZ2lzdGVyUGFpbnQiIGV4aXN0cyBvbiBwcm90b3R5cGUnKTsKLSAg
ICBhc3NlcnRfdHJ1ZSgncmVnaXN0ZXJQYWludCcgaW4gQ1NTLnBhaW50V29ya2xldEdsb2JhbFNj
b3BlLCAnInJlZ2lzdGVyUGFpbnQiIGV4aXN0cyBvbiB3aW5kb3cnKTsKLX0sICdyZWdpc3RlclBh
aW50IG11c3QgYmUgYSBtZXRob2QnKTsKK3Rlc3QoZnVuY3Rpb24oKSB7CisgIHJlZ2lzdGVyUGFp
bnQoJ2Jhc2ljMScsIGNsYXNzIHsKKyAgICBzdGF0aWMgZ2V0IGlucHV0UHJvcGVydGllcygpIHsg
cmV0dXJuIFsiLS10ZXN0Il07IH0KKyAgICBwYWludCgpIHsgfQorICB9KTsKK30sICd0ZXN0IHRo
YXQgcmVnaXN0ZXJQYWludCBydW5zJyk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgIHJlZ2lzdGVy
UGFpbnQoJ2Jhc2ljMicsIGNsYXNzIHsKKyAgICBwYWludCgpIHsgfQorICB9KTsKK30sICd0ZXN0
IHRoYXQgcmVnaXN0ZXJQYWludCBydW5zIHdpdGhvdXQgaW5wdXRQcm9wZXJ0aWVzJyk7CisKK3Rl
c3QoZnVuY3Rpb24oKSB7CisgIHJlZ2lzdGVyUGFpbnQoJ2Jhc2ljMycsIGNsYXNzIHsKKyAgICBz
dGF0aWMgZ2V0IGlucHV0QXJndW1lbnRzKCkgeyByZXR1cm4gWyI8bGVuZ3RoPiJdOyB9CisgICAg
cGFpbnQoKSB7IH0KKyAgfSk7Cit9LCAndGVzdCB0aGF0IHJlZ2lzdGVyUGFpbnQgcnVucyB3aXRo
IGlucHV0QXJndW1lbnRzJyk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgIHJlZ2lzdGVyUGFpbnQo
J2Jhc2ljNCcsIGNsYXNzIHsKKyAgICBzdGF0aWMgZ2V0IGNvbnRleHRPcHRpb25zKCkgeyByZXR1
cm4geyBhbHBoYTogdHJ1ZSB9OyB9CisgICAgcGFpbnQoKSB7IH0KKyAgfSk7Cit9LCAndGVzdCB0
aGF0IHJlZ2lzdGVyUGFpbnQgcnVucyB3aXRoIGNvbnRleHRPcHRpb25zJyk7CisKK3Rlc3QoZnVu
Y3Rpb24oKSB7CisgIHJlZ2lzdGVyUGFpbnQoJ2Jhc2ljNScsIE15UGFpbnQpOworICBhc3NlcnRf
dGhyb3dzKHsnbmFtZSc6ICdJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3InfSwgKCkgPT4gcmVnaXN0
ZXJQYWludCgnYmFzaWM1JywgTXlQYWludCkpOworICByZWdpc3RlclBhaW50KCdiYXNpYzYnLCBj
bGFzcyBleHRlbmRzIE15UGFpbnQgeyB9KTsKK30sICd0ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBy
dW5zIHdpdGggcHJlZGVmaW5lZCBjbGFzcycpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICBhc3Nl
cnRfdGhyb3dzKHsnbmFtZSc6ICdJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3InfSwgKCkgPT4gcmVn
aXN0ZXJQYWludCgnYmFzaWM2JywgJ3Rlc3QnKSk7CisgIGFzc2VydF90aHJvd3MobmV3IFR5cGVF
cnJvcigpLCAoKSA9PiByZWdpc3RlclBhaW50KCdiYXNpYzgnKSk7CisgIGFzc2VydF90aHJvd3Mo
bmV3IFR5cGVFcnJvcigpLCAoKSA9PiByZWdpc3RlclBhaW50KCdiYXNpYzknLCBbXSkpOworICBh
c3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gcmVnaXN0ZXJQYWludCgnYmFzaWMx
MCcsIHt9KSk7CisgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiByZWdpc3Rl
clBhaW50KCdiYXNpYzExJywgNSkpOworICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwg
KCkgPT4gcmVnaXN0ZXJQYWludCgnJywgNSkpOworfSwgJ3Rlc3QgdGhhdCByZWdpc3RlclBhaW50
IGFjY2VwdHMgb25seSBhIHN0cmluZyBhbmQgYSBjbGFzcyBjb25zdHJ1Y3RvcicpOwogCiB0ZXN0
KGZ1bmN0aW9uICgpIHsKICAgICBjb25zdCBjYWxscyA9IFtdOwpAQCAtMjIsNyArNjksNyBAQCB0
ZXN0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIHJldHVybiB0YXJnZXRbbmFtZV07CiAgICAg
ICAgIH0KICAgICB9KTsKLSAgICBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQ
YWludCgndGVzdC1wcm90bycsIHByb3h5KTsKKyAgICByZWdpc3RlclBhaW50KCd0ZXN0LXByb3Rv
JywgcHJveHkpOwogICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2FsbHMsIFsiaW5wdXRQcm9wZXJ0
aWVzIiwgImlucHV0QXJndW1lbnRzIiwgImNvbnRleHRPcHRpb25zIiwgInByb3RvdHlwZSJdKTsK
IH0sICdtdXN0IGdldCAicHJvdG90eXBlIiBwcm9wZXJ0eSBvZiB0aGUgY29uc3RydWN0b3InKTsK
IApAQCAtMzYsNyArODMsNyBAQCB0ZXN0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIHJldHVy
biB0YXJnZXRbbmFtZV07CiAgICAgICAgIH0KICAgICB9KTsKLSAgICBhc3NlcnRfdGhyb3dzKHsn
bmFtZSc6ICdleHBlY3RlZEVycm9yJ30sIGZ1bmN0aW9uICgpIHsgQ1NTLnBhaW50V29ya2xldEds
b2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3QtcmV0aHJvdy1pbnB1dFByb3BlcnRpZXMwJywg
cHJveHkpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdleHBlY3RlZEVycm9yJ30s
IGZ1bmN0aW9uICgpIHsgcmVnaXN0ZXJQYWludCgndGVzdC1yZXRocm93LWlucHV0UHJvcGVydGll
czAnLCBwcm94eSk7IH0pOwogfSwgJ211c3QgcmV0aHJvdyBhbiBleGNlcHRpb24gdGhyb3duIHdo
aWxlIGdldHRpbmcgImlucHV0UHJvcGVydGllcyIgcHJvcGVydHkgb2YgdGhlIGNvbnN0cnVjdG9y
Jyk7CiAKIHRlc3QoZnVuY3Rpb24gKCkgewpAQCAtNDksNyArOTYsNyBAQCB0ZXN0KGZ1bmN0aW9u
ICgpIHsKICAgICAgICAgICAgIHJldHVybiB0YXJnZXRbbmFtZV07CiAgICAgICAgIH0KICAgICB9
KTsKLSAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdleHBlY3RlZEVycm9yJ30sIGZ1bmN0aW9u
ICgpIHsgQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3QtcmV0
aHJvdy1wcm90bycsIHByb3h5KTsgfSk7CisgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnZXhw
ZWN0ZWRFcnJvcid9LCBmdW5jdGlvbiAoKSB7IHJlZ2lzdGVyUGFpbnQoJ3Rlc3QtcmV0aHJvdy1w
cm90bycsIHByb3h5KTsgfSk7CiB9LCAnbXVzdCByZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJvd24g
d2hpbGUgZ2V0dGluZyAicHJvdG90eXBlIiBwcm9wZXJ0eSBvZiB0aGUgY29uc3RydWN0b3InKTsK
IAogdGVzdChmdW5jdGlvbiAoKSB7CkBAIC02MywxNiArMTEwLDE2IEBAIHRlc3QoZnVuY3Rpb24g
KCkgewogICAgIH0pOwogCiAgICAgcmV0dXJuZWRWYWx1ZSA9IG51bGw7Ci0gICAgYXNzZXJ0X3Ro
cm93cyh7J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgQ1NTLnBhaW50V29ya2xl
dEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3QtcmV0aHJvdy1wcm90by1ub29iajEnLCBw
cm94eSk7IH0sCisgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0
aW9uICgpIHsgcmVnaXN0ZXJQYWludCgndGVzdC1yZXRocm93LXByb3RvLW5vb2JqMScsIHByb3h5
KTsgfSwKICAgICAgICAgJ211c3QgdGhyb3cgd2hlbiAicHJvdG90eXBlIiBwcm9wZXJ0eSBvZiB0
aGUgY29uc3RydWN0b3IgaXMgbnVsbCcpOwogICAgIHJldHVybmVkVmFsdWUgPSB1bmRlZmluZWQ7
Ci0gICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsg
Q1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3QtcmV0aHJvdy1w
cm90by1ub29iajInLCBwcm94eSk7IH0sCisgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnVHlw
ZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgcmVnaXN0ZXJQYWludCgndGVzdC1yZXRocm93LXByb3Rv
LW5vb2JqMicsIHByb3h5KTsgfSwKICAgICAgICAgJ211c3QgdGhyb3cgd2hlbiAicHJvdG90eXBl
IiBwcm9wZXJ0eSBvZiB0aGUgY29uc3RydWN0b3IgaXMgdW5kZWZpbmVkJyk7CiAgICAgcmV0dXJu
ZWRWYWx1ZSA9ICdoZWxsbyc7Ci0gICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnVHlwZUVycm9y
J30sIGZ1bmN0aW9uICgpIHsgQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFp
bnQoJ3Rlc3QtcmV0aHJvdy1wcm90by1ub29iajMnLCBwcm94eSk7OyB9LAorICAgIGFzc2VydF90
aHJvd3MoeyduYW1lJzogJ1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IHJlZ2lzdGVyUGFpbnQo
J3Rlc3QtcmV0aHJvdy1wcm90by1ub29iajMnLCBwcm94eSk7OyB9LAogICAgICAgICAnbXVzdCB0
aHJvdyB3aGVuICJwcm90b3R5cGUiIHByb3BlcnR5IG9mIHRoZSBjb25zdHJ1Y3RvciBpcyBhIHN0
cmluZycpOwogICAgIHJldHVybmVkVmFsdWUgPSAxOwotICAgIGFzc2VydF90aHJvd3MoeyduYW1l
JzogJ1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5yZWdpc3RlclBhaW50KCd0ZXN0LXJldGhyb3ctcHJvdG8tbm9vYmo0JywgcHJveHkpOzsgfSwK
KyAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBy
ZWdpc3RlclBhaW50KCd0ZXN0LXJldGhyb3ctcHJvdG8tbm9vYmo0JywgcHJveHkpOzsgfSwKICAg
ICAgICAgJ211c3QgdGhyb3cgd2hlbiAicHJvdG90eXBlIiBwcm9wZXJ0eSBvZiB0aGUgY29uc3Ry
dWN0b3IgaXMgYSBudW1iZXInKTsKIAogfSwgJ211c3QgdGhyb3cgd2hlbiAicHJvdG90eXBlIiBw
cm9wZXJ0eSBvZiB0aGUgY29uc3RydWN0b3IgaXMgbm90IGFuIG9iamVjdCcpOwpAQCAtODcsNyAr
MTM0LDcgQEAgdGVzdChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0W25h
bWVdOwogICAgICAgICB9CiAgICAgfSk7Ci0gICAgQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3Bl
LnJlZ2lzdGVyUGFpbnQoJ2NhbGxiYWNrcycsIGNvbnN0cnVjdG9yKTsKKyAgICByZWdpc3RlclBh
aW50KCdjYWxsYmFja3MnLCBjb25zdHJ1Y3Rvcik7CiAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhj
YWxscywgWydwYWludCddKTsKIH0sICdtdXN0IGdldCBwYWludCBjYWxsYmFjayBvZiB0aGUgY29u
c3RydWN0b3IgcHJvdG90eXBlJyk7CiAKQEAgLTEwMiw3ICsxNDksNyBAQCB0ZXN0KGZ1bmN0aW9u
ICgpIHsKICAgICAgICAgICAgIHJldHVybiB0YXJnZXRbbmFtZV07CiAgICAgICAgIH0KICAgICB9
KTsKLSAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdleHBlY3RlZEVycm9yJ30sIGZ1bmN0aW9u
ICgpIHsgQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ2NhbGxiYWNr
cy10aHJvdycsIGNvbnN0cnVjdG9yKTsgfSk7CisgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAn
ZXhwZWN0ZWRFcnJvcid9LCBmdW5jdGlvbiAoKSB7IHJlZ2lzdGVyUGFpbnQoJ2NhbGxiYWNrcy10
aHJvdycsIGNvbnN0cnVjdG9yKTsgfSk7CiAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjYWxscywg
WydwYWludCddKTsKIH0sICdtdXN0IHJldGhyb3cgYW4gZXhjZXB0aW9uIHRocm93biB3aGlsZSBn
ZXR0aW5nIHBhaW50IGNhbGxiYWNrIG9uIHRoZSBjb25zdHJ1Y3RvciBwcm90b3R5cGUnKTsKIApA
QCAtMTE3LDcgKzE2NCw3IEBAIHRlc3QoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgcmV0dXJu
IHRhcmdldFtuYW1lXTsKICAgICAgICAgfQogICAgIH0pOwotICAgIGFzc2VydF90aHJvd3Moeydu
YW1lJzogJ1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IENTUy5wYWludFdvcmtsZXRHbG9iYWxT
Y29wZS5yZWdpc3RlclBhaW50KCdjYWxsYmFja3MtdGhyb3cyJywgY29uc3RydWN0b3IpOyB9KTsK
KyAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBy
ZWdpc3RlclBhaW50KCdjYWxsYmFja3MtdGhyb3cyJywgY29uc3RydWN0b3IpOyB9KTsKICAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKGNhbGxzLCBbJ3BhaW50J10pOwogfSwgJ211c3QgcmV0aHJvdyBh
biBleGNlcHRpb24gdGhyb3duIHdoaWxlIGNvbnZlcnRpbmcgcGFpbnQgY2FsbGJhY2sgdmFsdWUg
dG8gRnVuY3Rpb24gY2FsbGJhY2sgdHlwZScpOwogCkBAIC0xMzEsNyArMTc4LDcgQEAgdGVzdChm
dW5jdGlvbiAoKSB7CiAgICAgICAgICAgcmV0dXJuIHRhcmdldFtuYW1lXTsKICAgICAgIH0KICAg
fSk7Ci0gIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7
IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCdzZXF1ZW5jZS10aHJv
dycsIHByb3h5KTsgfSk7CisgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1R5cGVFcnJvcid9LCBm
dW5jdGlvbiAoKSB7IHJlZ2lzdGVyUGFpbnQoJ3NlcXVlbmNlLXRocm93JywgcHJveHkpOyB9KTsK
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjYWxscywgWyJpbnB1dFByb3BlcnRpZXMiLCAiaW5wdXRB
cmd1bWVudHMiXSk7CiB9LCAnbXVzdCByZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUg
Y29udmVydGluZyB0aGUgdmFsdWUgb2YgaW5wdXRBcmd1bWVudHMgdG8gc2VxdWVuY2U8RE9NU3Ry
aW5nPicpOwogCkBAIC0xNDEsMTIgKzE4OCwzNiBAQCB0ZXN0KGZ1bmN0aW9uICgpIHsKICAgICAg
ICAgeWllbGQgJzxsZW5ndGg+JzsKICAgICAgICAgdGhyb3cge25hbWU6ICdTb21lRXJyb3InfTsK
ICAgICB9fTsKLSAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdTb21lRXJyb3InfSwgZnVuY3Rp
b24gKCkgeyBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgnc2VxdWVu
Y2UtdGhyb3cyJywgY29uc3RydWN0b3IpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6
ICdTb21lRXJyb3InfSwgZnVuY3Rpb24gKCkgeyByZWdpc3RlclBhaW50KCdzZXF1ZW5jZS10aHJv
dzInLCBjb25zdHJ1Y3Rvcik7IH0pOwogfSwgJ211c3QgcmV0aHJvdyBhbiBleGNlcHRpb24gdGhy
b3duIHdoaWxlIGl0ZXJhdGluZyBvdmVyIGlucHV0QXJndW1lbnRzIHRvIHNlcXVlbmNlPERPTVN0
cmluZz4nKTsKIAogdGVzdChmdW5jdGlvbiAoKSB7CiAgICAgY29uc3QgY29uc3RydWN0b3IgPSBm
dW5jdGlvbiAoKSB7fQogICAgIGNvbnN0cnVjdG9yLmlucHV0QXJndW1lbnRzID0ge1tTeW1ib2wu
aXRlcmF0b3JdOiAxfTsKLSAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwg
ZnVuY3Rpb24gKCkgeyBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgn
c3ltYm9sLWl0ZXJhdG9yLXRocm93MicsIGNvbnN0cnVjdG9yKTsgfSk7CisgICAgYXNzZXJ0X3Ro
cm93cyh7J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgcmVnaXN0ZXJQYWludCgn
c3ltYm9sLWl0ZXJhdG9yLXRocm93MicsIGNvbnN0cnVjdG9yKTsgfSk7CiB9LCAnbXVzdCByZXRo
cm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgcmV0cmlldmluZyBTeW1ib2wuaXRlcmF0b3Ig
b24gaW5wdXRBcmd1bWVudHMnKTsKKworYXNzZXJ0X3RydWUoUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUuaGFzUnVuQVRlc3QpOworaWYgKFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmVycm9ycykgewor
ICBjb25zb2xlLmxvZygiVGhlIGZvbGxvd2luZyAoIiArIFBhaW50V29ya2xldEdsb2JhbFNjb3Bl
LmVycm9ycy5sZW5ndGggKyAiKSB0ZXN0cyBmYWlsZWQ6ICIpCisgIGNvbnNvbGUubG9nKEpTT04u
c3RyaW5naWZ5KFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmVycm9ycykpOworICBhc3NlcnRfdHJ1
ZShmYWxzZSk7Cit9CisKK2NsYXNzIE15UGFpbnQyIHsKKyAgcGFpbnQoY3R4LCBnZW9tLCBwcm9w
ZXJ0aWVzKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspeworICAgICAgZm9yICh2
YXIgaiA9IDA7IGogPCA2OyBqKyspeworICAgICAgICBjdHguZmlsbFN0eWxlID0gJ3JnYignICsg
TWF0aC5mbG9vcigyNTUgLSA0Mi41ICogaSkgKyAnLCcgKworICAgICAgICAgICAgICAgICAgICAg
ICAgIE1hdGguZmxvb3IoMjU1IC0gNDIuNSAqIGopICsgJywwKSc7CisgICAgICAgIGN0eC5maWxs
UmVjdChqICogMjUsIGkgKiAyNSwgMjUsIDI1KTsKKyAgICAgIH0KKyAgICB9CisgIH0KK30KK3Jl
Z2lzdGVyUGFpbnQoJ215LXBhaW50JywgTXlQYWludDIpOworPC9zY3JpcHQ+CisKKzxzY3JpcHQ+
CisgIGltcG9ydFdvcmtsZXQoQ1NTLnBhaW50V29ya2xldCwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2NvZGUnKS50ZXh0Q29udGVudCk7CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mtd29ya2xldC5q
cyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9yZXNvdXJjZXMvdGVzdGhhcm5l
c3Mtd29ya2xldC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NWMzZTc0ZWU2YzEzMTQxOWMxNjg5ZWU4OWQwMWE0
MWFhNzAyZWNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9t
LXBhaW50L3Jlc291cmNlcy90ZXN0aGFybmVzcy13b3JrbGV0LmpzCkBAIC0wLDAgKzEsNzM5IEBA
CisvLyBUaGVzZSBhcmUgaGVscGVycyB0byBiZSBldmFsdWF0ZWQgaW5zaWRlIGEgd29ya2xldAor
Ly8gVGhleSBhcmUgbW9zdGx5IGZyb20gdGhlIHdwdCB0ZXN0aGFybmVzcy5qcy4KKworLyoKKyAq
IENvbnZlcnQgYSB2YWx1ZSB0byBhIG5pY2UsIGh1bWFuLXJlYWRhYmxlIHN0cmluZworICovCitm
dW5jdGlvbiBmb3JtYXRfdmFsdWUodmFsLCBzZWVuKQoreworICAgIGlmICghc2VlbikgeworICAg
ICAgICBzZWVuID0gW107CisgICAgfQorICAgIGlmICh0eXBlb2YgdmFsID09PSAib2JqZWN0IiAm
JiB2YWwgIT09IG51bGwpIHsKKyAgICAgICAgaWYgKHNlZW4uaW5kZXhPZih2YWwpID49IDApIHsK
KyAgICAgICAgICAgIHJldHVybiAiWy4uLl0iOworICAgICAgICB9CisgICAgICAgIHNlZW4ucHVz
aCh2YWwpOworICAgIH0KKyAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWwpKSB7CisgICAgICAgIHJl
dHVybiAiWyIgKyB2YWwubWFwKGZ1bmN0aW9uKHgpIHtyZXR1cm4gZm9ybWF0X3ZhbHVlKHgsIHNl
ZW4pO30pLmpvaW4oIiwgIikgKyAiXSI7CisgICAgfQorCisgICAgc3dpdGNoICh0eXBlb2YgdmFs
KSB7CisgICAgY2FzZSAic3RyaW5nIjoKKyAgICAgICAgdmFsID0gdmFsLnJlcGxhY2UoIlxcIiwg
IlxcXFwiKTsKKyAgICAgICAgZm9yICh2YXIgcCBpbiByZXBsYWNlbWVudHMpIHsKKyAgICAgICAg
ICAgIHZhciByZXBsYWNlID0gIlxcIiArIHJlcGxhY2VtZW50c1twXTsKKyAgICAgICAgICAgIHZh
bCA9IHZhbC5yZXBsYWNlKFJlZ0V4cChTdHJpbmcuZnJvbUNoYXJDb2RlKHApLCAiZyIpLCByZXBs
YWNlKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gJyInICsgdmFsLnJlcGxhY2UoLyIvZywg
J1xcIicpICsgJyInOworICAgIGNhc2UgImJvb2xlYW4iOgorICAgIGNhc2UgInVuZGVmaW5lZCI6
CisgICAgICAgIHJldHVybiBTdHJpbmcodmFsKTsKKyAgICBjYXNlICJudW1iZXIiOgorICAgICAg
ICAvLyBJbiBKYXZhU2NyaXB0LCAtMCA9PT0gMCBhbmQgU3RyaW5nKC0wKSA9PSAiMCIsIHNvIHdl
IGhhdmUgdG8KKyAgICAgICAgLy8gc3BlY2lhbC1jYXNlLgorICAgICAgICBpZiAodmFsID09PSAt
MCAmJiAxL3ZhbCA9PT0gLUluZmluaXR5KSB7CisgICAgICAgICAgICByZXR1cm4gIi0wIjsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gU3RyaW5nKHZhbCk7CisgICAgY2FzZSAib2JqZWN0IjoK
KyAgICAgICAgaWYgKHZhbCA9PT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuICJudWxsIjsK
KyAgICAgICAgfQorCisgICAgICAgIC8vIFNwZWNpYWwtY2FzZSBOb2RlIG9iamVjdHMsIHNpbmNl
IHRob3NlIGNvbWUgdXAgYSBsb3QgaW4gbXkgdGVzdHMuICBJCisgICAgICAgIC8vIGlnbm9yZSBu
YW1lc3BhY2VzLgorICAgICAgICBpZiAoaXNfbm9kZSh2YWwpKSB7CisgICAgICAgICAgICBzd2l0
Y2ggKHZhbC5ub2RlVHlwZSkgeworICAgICAgICAgICAgY2FzZSBOb2RlLkVMRU1FTlRfTk9ERToK
KyAgICAgICAgICAgICAgICB2YXIgcmV0ID0gIjwiICsgdmFsLmxvY2FsTmFtZTsKKyAgICAgICAg
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbC5hdHRyaWJ1dGVzLmxlbmd0aDsgaSsrKSB7
CisgICAgICAgICAgICAgICAgICAgIHJldCArPSAiICIgKyB2YWwuYXR0cmlidXRlc1tpXS5uYW1l
ICsgJz0iJyArIHZhbC5hdHRyaWJ1dGVzW2ldLnZhbHVlICsgJyInOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICByZXQgKz0gIj4iICsgdmFsLmlubmVySFRNTCArICI8LyIgKyB2
YWwubG9jYWxOYW1lICsgIj4iOworICAgICAgICAgICAgICAgIHJldHVybiAiRWxlbWVudCBub2Rl
ICIgKyB0cnVuY2F0ZShyZXQsIDYwKTsKKyAgICAgICAgICAgIGNhc2UgTm9kZS5URVhUX05PREU6
CisgICAgICAgICAgICAgICAgcmV0dXJuICdUZXh0IG5vZGUgIicgKyB0cnVuY2F0ZSh2YWwuZGF0
YSwgNjApICsgJyInOworICAgICAgICAgICAgY2FzZSBOb2RlLlBST0NFU1NJTkdfSU5TVFJVQ1RJ
T05fTk9ERToKKyAgICAgICAgICAgICAgICByZXR1cm4gIlByb2Nlc3NpbmdJbnN0cnVjdGlvbiBu
b2RlIHdpdGggdGFyZ2V0ICIgKyBmb3JtYXRfdmFsdWUodHJ1bmNhdGUodmFsLnRhcmdldCwgNjAp
KSArICIgYW5kIGRhdGEgIiArIGZvcm1hdF92YWx1ZSh0cnVuY2F0ZSh2YWwuZGF0YSwgNjApKTsK
KyAgICAgICAgICAgIGNhc2UgTm9kZS5DT01NRU5UX05PREU6CisgICAgICAgICAgICAgICAgcmV0
dXJuICJDb21tZW50IG5vZGUgPCEtLSIgKyB0cnVuY2F0ZSh2YWwuZGF0YSwgNjApICsgIi0tPiI7
CisgICAgICAgICAgICBjYXNlIE5vZGUuRE9DVU1FTlRfTk9ERToKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gIkRvY3VtZW50IG5vZGUgd2l0aCAiICsgdmFsLmNoaWxkTm9kZXMubGVuZ3RoICsgKHZh
bC5jaGlsZE5vZGVzLmxlbmd0aCA9PSAxID8gIiBjaGlsZCIgOiAiIGNoaWxkcmVuIik7CisgICAg
ICAgICAgICBjYXNlIE5vZGUuRE9DVU1FTlRfVFlQRV9OT0RFOgorICAgICAgICAgICAgICAgIHJl
dHVybiAiRG9jdW1lbnRUeXBlIG5vZGUiOworICAgICAgICAgICAgY2FzZSBOb2RlLkRPQ1VNRU5U
X0ZSQUdNRU5UX05PREU6CisgICAgICAgICAgICAgICAgcmV0dXJuICJEb2N1bWVudEZyYWdtZW50
IG5vZGUgd2l0aCAiICsgdmFsLmNoaWxkTm9kZXMubGVuZ3RoICsgKHZhbC5jaGlsZE5vZGVzLmxl
bmd0aCA9PSAxID8gIiBjaGlsZCIgOiAiIGNoaWxkcmVuIik7CisgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgIHJldHVybiAiTm9kZSBvYmplY3Qgb2YgdW5rbm93biB0eXBlIjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgLyogZmFsbHMgdGhyb3VnaCAqLworICAg
IGRlZmF1bHQ6CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gdHlwZW9mIHZhbCAr
ICcgIicgKyB0cnVuY2F0ZShTdHJpbmcodmFsKSwgMTAwMCkgKyAnIic7CisgICAgICAgIH0gY2F0
Y2goZSkgeworICAgICAgICAgICAgcmV0dXJuICgiW3N0cmluZ2lmeWluZyBvYmplY3QgdGhyZXcg
IiArIFN0cmluZyhlKSArCisgICAgICAgICAgICAgICAgICAgICIgd2l0aCB0eXBlICIgKyBTdHJp
bmcodHlwZW9mIGUpICsgIl0iKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gaXNf
c2luZ2xlX25vZGUodGVtcGxhdGUpCit7CisgICAgcmV0dXJuIHR5cGVvZiB0ZW1wbGF0ZVswXSA9
PT0gInN0cmluZyI7Cit9CisKK2Z1bmN0aW9uIHN1YnN0aXR1dGUodGVtcGxhdGUsIHN1YnN0aXR1
dGlvbnMpCit7CisgICAgaWYgKHR5cGVvZiB0ZW1wbGF0ZSA9PT0gImZ1bmN0aW9uIikgeworICAg
ICAgICB2YXIgcmVwbGFjZW1lbnQgPSB0ZW1wbGF0ZShzdWJzdGl0dXRpb25zKTsKKyAgICAgICAg
aWYgKCFyZXBsYWNlbWVudCkgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0K
KworICAgICAgICByZXR1cm4gc3Vic3RpdHV0ZShyZXBsYWNlbWVudCwgc3Vic3RpdHV0aW9ucyk7
CisgICAgfQorCisgICAgaWYgKGlzX3NpbmdsZV9ub2RlKHRlbXBsYXRlKSkgeworICAgICAgICBy
ZXR1cm4gc3Vic3RpdHV0ZV9zaW5nbGUodGVtcGxhdGUsIHN1YnN0aXR1dGlvbnMpOworICAgIH0K
KworICAgIHJldHVybiBmaWx0ZXIobWFwKHRlbXBsYXRlLCBmdW5jdGlvbih4KSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBzdWJzdGl0dXRlKHgsIHN1YnN0aXR1dGlvbnMpOwor
ICAgICAgICAgICAgICAgICAgICAgIH0pLCBmdW5jdGlvbih4KSB7cmV0dXJuIHggIT09IG51bGw7
fSk7Cit9CisKK2Z1bmN0aW9uIHN1YnN0aXR1dGVfc2luZ2xlKHRlbXBsYXRlLCBzdWJzdGl0dXRp
b25zKQoreworICAgIHZhciBzdWJzdGl0dXRpb25fcmUgPSAvXCRceyhbXiB9XSopXH0vZzsKKwor
ICAgIGZ1bmN0aW9uIGRvX3N1YnN0aXR1dGlvbihpbnB1dCkgeworICAgICAgICB2YXIgY29tcG9u
ZW50cyA9IGlucHV0LnNwbGl0KHN1YnN0aXR1dGlvbl9yZSk7CisgICAgICAgIHZhciBydiA9IFtd
OworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbXBvbmVudHMubGVuZ3RoOyBpICs9IDIp
IHsKKyAgICAgICAgICAgIHJ2LnB1c2goY29tcG9uZW50c1tpXSk7CisgICAgICAgICAgICBpZiAo
Y29tcG9uZW50c1tpICsgMV0pIHsKKyAgICAgICAgICAgICAgICBydi5wdXNoKFN0cmluZyhzdWJz
dGl0dXRpb25zW2NvbXBvbmVudHNbaSArIDFdXSkpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIHJldHVybiBydjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdWJzdGl0dXRlX2F0
dHJzKGF0dHJzLCBydikKKyAgICB7CisgICAgICAgIHJ2WzFdID0ge307CisgICAgICAgIGZvciAo
dmFyIG5hbWUgaW4gdGVtcGxhdGVbMV0pIHsKKyAgICAgICAgICAgIGlmIChhdHRycy5oYXNPd25Q
cm9wZXJ0eShuYW1lKSkgeworICAgICAgICAgICAgICAgIHZhciBuZXdfbmFtZSA9IGRvX3N1YnN0
aXR1dGlvbihuYW1lKS5qb2luKCIiKTsKKyAgICAgICAgICAgICAgICB2YXIgbmV3X3ZhbHVlID0g
ZG9fc3Vic3RpdHV0aW9uKGF0dHJzW25hbWVdKS5qb2luKCIiKTsKKyAgICAgICAgICAgICAgICBy
dlsxXVtuZXdfbmFtZV0gPSBuZXdfdmFsdWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBzdWJzdGl0dXRlX2NoaWxkcmVuKGNoaWxkcmVuLCBydikKKyAg
ICB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHsK
KyAgICAgICAgICAgIGlmIChjaGlsZHJlbltpXSBpbnN0YW5jZW9mIE9iamVjdCkgeworICAgICAg
ICAgICAgICAgIHZhciByZXBsYWNlbWVudCA9IHN1YnN0aXR1dGUoY2hpbGRyZW5baV0sIHN1YnN0
aXR1dGlvbnMpOworICAgICAgICAgICAgICAgIGlmIChyZXBsYWNlbWVudCAhPT0gbnVsbCkgewor
ICAgICAgICAgICAgICAgICAgICBpZiAoaXNfc2luZ2xlX25vZGUocmVwbGFjZW1lbnQpKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBydi5wdXNoKHJlcGxhY2VtZW50KTsKKyAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuZChydiwgcmVw
bGFjZW1lbnQpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBleHRlbmQocnYsIGRvX3N1YnN0aXR1
dGlvbihTdHJpbmcoY2hpbGRyZW5baV0pKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIHJ2OworICAgIH0KKworICAgIHZhciBydiA9IFtdOworICAgIHJ2LnB1c2go
ZG9fc3Vic3RpdHV0aW9uKFN0cmluZyh0ZW1wbGF0ZVswXSkpLmpvaW4oIiIpKTsKKworICAgIGlm
ICh0ZW1wbGF0ZVswXSA9PT0gInt0ZXh0fSIpIHsKKyAgICAgICAgc3Vic3RpdHV0ZV9jaGlsZHJl
bih0ZW1wbGF0ZS5zbGljZSgxKSwgcnYpOworICAgIH0gZWxzZSB7CisgICAgICAgIHN1YnN0aXR1
dGVfYXR0cnModGVtcGxhdGVbMV0sIHJ2KTsKKyAgICAgICAgc3Vic3RpdHV0ZV9jaGlsZHJlbih0
ZW1wbGF0ZS5zbGljZSgyKSwgcnYpOworICAgIH0KKworICAgIHJldHVybiBydjsKK30KKworZnVu
Y3Rpb24gYXNzZXJ0KGV4cGVjdGVkX3RydWUsIGZ1bmN0aW9uX25hbWUsIGRlc2NyaXB0aW9uLCBl
cnJvciwgc3Vic3RpdHV0aW9ucykKK3sKKyAgICBpZiAoZXhwZWN0ZWRfdHJ1ZSAhPT0gdHJ1ZSkg
eworICAgICAgICB2YXIgbXNnID0gbWFrZV9tZXNzYWdlKGZ1bmN0aW9uX25hbWUsIGRlc2NyaXB0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yLCBzdWJzdGl0dXRpb25z
KTsKKyAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkVycm9yKG1zZyk7CisgICAgfQorfQorCitm
dW5jdGlvbiBBc3NlcnRpb25FcnJvcihtZXNzYWdlKQoreworICAgIHRoaXMubWVzc2FnZSA9IG1l
c3NhZ2U7CisgICAgdGhpcy5zdGFjayA9IHRoaXMuZ2V0X3N0YWNrKCk7Cit9CisKK0Fzc2VydGlv
bkVycm9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKTsKKworQXNz
ZXJ0aW9uRXJyb3IucHJvdG90eXBlLmdldF9zdGFjayA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBz
dGFjayA9IG5ldyBFcnJvcigpLnN0YWNrOworICAgIC8vIElFMTEgZG9lcyBub3QgaW5pdGlhbGl6
ZSAnRXJyb3Iuc3RhY2snIHVudGlsIHRoZSBvYmplY3QgaXMgdGhyb3duLgorICAgIGlmICghc3Rh
Y2spIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigpOworICAg
ICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBzdGFjayA9IGUuc3RhY2s7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICAvLyAnRXJyb3Iuc3RhY2snIGlzIG5vdCBzdXBwb3J0ZWQgaW4gYWxs
IGJyb3dzZXJzL3ZlcnNpb25zCisgICAgaWYgKCFzdGFjaykgeworICAgICAgICByZXR1cm4gIihT
dGFjayB0cmFjZSB1bmF2YWlsYWJsZSkiOworICAgIH0KKworICAgIHZhciBsaW5lcyA9IHN0YWNr
LnNwbGl0KCJcbiIpOworCisgICAgLy8gQ3JlYXRlIGEgcGF0dGVybiB0byBtYXRjaCBzdGFjayBm
cmFtZXMgb3JpZ2luYXRpbmcgd2l0aGluIHRlc3RoYXJuZXNzLmpzLiAgVGhlc2UgaW5jbHVkZSB0
aGUKKyAgICAvLyBzY3JpcHQgVVJMLCBmb2xsb3dlZCBieSB0aGUgbGluZS9jb2wgKGUuZy4sICcv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzOjEyMDoyMScpLgorICAgIC8vIEVzY2FwZSB0aGUgVVJM
IHBlciBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzM1NjE0OTMvaXMtdGhlcmUt
YS1yZWdleHAtZXNjYXBlLWZ1bmN0aW9uLWluLWphdmFzY3JpcHQKKyAgICAvLyBpbiBjYXNlIGl0
IGNvbnRhaW5zIFJlZ0V4cCBjaGFyYWN0ZXJzLgorICAgIHZhciBzY3JpcHRfdXJsID0gZ2V0X3Nj
cmlwdF91cmwoKTsKKyAgICB2YXIgcmVfdGV4dCA9IHNjcmlwdF91cmwgPyBzY3JpcHRfdXJsLnJl
cGxhY2UoL1stXC9cXF4kKis/LigpfFtcXXt9XS9nLCAnXFwkJicpIDogIlxcYnRlc3RoYXJuZXNz
LmpzIjsKKyAgICB2YXIgcmUgPSBuZXcgUmVnRXhwKHJlX3RleHQgKyAiOlxcZCs6XFxkKyIpOwor
CisgICAgLy8gU29tZSBicm93c2VycyBpbmNsdWRlIGEgcHJlYW1ibGUgdGhhdCBzcGVjaWZpZXMg
dGhlIHR5cGUgb2YgdGhlIGVycm9yIG9iamVjdC4gIFNraXAgdGhpcyBieQorICAgIC8vIGFkdmFu
Y2luZyB1bnRpbCB3ZSBmaW5kIHRoZSBmaXJzdCBzdGFjayBmcmFtZSBvcmlnaW5hdGluZyBmcm9t
IHRlc3RoYXJuZXNzLmpzLgorICAgIHZhciBpID0gMDsKKyAgICB3aGlsZSAoIXJlLnRlc3QobGlu
ZXNbaV0pICYmIGkgPCBsaW5lcy5sZW5ndGgpIHsKKyAgICAgICAgaSsrOworICAgIH0KKworICAg
IC8vIFRoZW4gc2tpcCB0aGUgdG9wIGZyYW1lcyBvcmlnaW5hdGluZyBmcm9tIHRlc3RoYXJuZXNz
LmpzIHRvIGJlZ2luIHRoZSBzdGFjayBhdCB0aGUgdGVzdCBjb2RlLgorICAgIHdoaWxlIChyZS50
ZXN0KGxpbmVzW2ldKSAmJiBpIDwgbGluZXMubGVuZ3RoKSB7CisgICAgICAgIGkrKzsKKyAgICB9
CisKKyAgICAvLyBQYXJhbm9pZCBjaGVjayB0aGF0IHdlIGRpZG4ndCBza2lwIGFsbCBmcmFtZXMu
ICBJZiBzbywgcmV0dXJuIHRoZSBvcmlnaW5hbCBzdGFjayB1bm1vZGlmaWVkLgorICAgIGlmIChp
ID49IGxpbmVzLmxlbmd0aCkgeworICAgICAgICByZXR1cm4gc3RhY2s7CisgICAgfQorCisgICAg
cmV0dXJuIGxpbmVzLnNsaWNlKGkpLmpvaW4oIlxuIik7Cit9CisKK2Z1bmN0aW9uIG1ha2VfbWVz
c2FnZShmdW5jdGlvbl9uYW1lLCBkZXNjcmlwdGlvbiwgZXJyb3IsIHN1YnN0aXR1dGlvbnMpCit7
CisgICAgZm9yICh2YXIgcCBpbiBzdWJzdGl0dXRpb25zKSB7CisgICAgICAgIGlmIChzdWJzdGl0
dXRpb25zLmhhc093blByb3BlcnR5KHApKSB7CisgICAgICAgICAgICBzdWJzdGl0dXRpb25zW3Bd
ID0gZm9ybWF0X3ZhbHVlKHN1YnN0aXR1dGlvbnNbcF0pOworICAgICAgICB9CisgICAgfQorICAg
IHZhciBub2RlX2Zvcm0gPSBzdWJzdGl0dXRlKFsie3RleHR9IiwgIiR7ZnVuY3Rpb25fbmFtZX06
ICR7ZGVzY3JpcHRpb259IiArIGVycm9yXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtZXJnZSh7ZnVuY3Rpb25fbmFtZTpmdW5jdGlvbl9uYW1lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjooZGVzY3JpcHRpb24/ZGVzY3JpcHRpb24g
KyAiICI6IiIpfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic3Rp
dHV0aW9ucykpOworICAgIHJldHVybiBub2RlX2Zvcm0uc2xpY2UoMSkuam9pbigiIik7Cit9CisK
K2Z1bmN0aW9uIGZpbHRlcihhcnJheSwgY2FsbGFibGUsIHRoaXNPYmopIHsKKyAgICB2YXIgcnYg
PSBbXTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7CisgICAg
ICAgIGlmIChhcnJheS5oYXNPd25Qcm9wZXJ0eShpKSkgeworICAgICAgICAgICAgdmFyIHBhc3Mg
PSBjYWxsYWJsZS5jYWxsKHRoaXNPYmosIGFycmF5W2ldLCBpLCBhcnJheSk7CisgICAgICAgICAg
ICBpZiAocGFzcykgeworICAgICAgICAgICAgICAgIHJ2LnB1c2goYXJyYXlbaV0pOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBydjsKK30KKworZnVuY3Rpb24g
bWFwKGFycmF5LCBjYWxsYWJsZSwgdGhpc09iaikKK3sKKyAgICB2YXIgcnYgPSBbXTsKKyAgICBy
di5sZW5ndGggPSBhcnJheS5sZW5ndGg7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5s
ZW5ndGg7IGkrKykgeworICAgICAgICBpZiAoYXJyYXkuaGFzT3duUHJvcGVydHkoaSkpIHsKKyAg
ICAgICAgICAgIHJ2W2ldID0gY2FsbGFibGUuY2FsbCh0aGlzT2JqLCBhcnJheVtpXSwgaSwgYXJy
YXkpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBydjsKK30KKworZnVuY3Rpb24gZm9y
RWFjaChhcnJheSwgY2FsbGJhY2ssIHRoaXNPYmopCit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBhcnJheS5sZW5ndGg7IGkrKykgeworICAgICAgICBpZiAoYXJyYXkuaGFzT3duUHJvcGVydHko
aSkpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrLmNhbGwodGhpc09iaiwgYXJyYXlbaV0sIGksIGFy
cmF5KTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gbWVyZ2UoYSxiKQoreworICAg
IHZhciBydiA9IHt9OworICAgIHZhciBwOworICAgIGZvciAocCBpbiBhKSB7CisgICAgICAgIHJ2
W3BdID0gYVtwXTsKKyAgICB9CisgICAgZm9yIChwIGluIGIpIHsKKyAgICAgICAgcnZbcF0gPSBi
W3BdOworICAgIH0KKyAgICByZXR1cm4gcnY7Cit9CisKK2Z1bmN0aW9uIHNhbWVfdmFsdWUoeCwg
eSkgeworICAgIGlmICh5ICE9PSB5KSB7CisgICAgICAgIC8vTmFOIGNhc2UKKyAgICAgICAgcmV0
dXJuIHggIT09IHg7CisgICAgfQorICAgIGlmICh4ID09PSAwICYmIHkgPT09IDApIHsKKyAgICAg
ICAgLy9EaXN0aW5ndWlzaCArMCBhbmQgLTAKKyAgICAgICAgcmV0dXJuIDEveCA9PT0gMS95Owor
ICAgIH0KKyAgICByZXR1cm4geCA9PT0geTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X2VxdWFscyhh
Y3R1YWwsIGV4cGVjdGVkLCBkZXNjcmlwdGlvbikKK3sKKyAgICAgLyoKKyAgICAgICogVGVzdCBp
ZiB0d28gcHJpbWl0aXZlcyBhcmUgZXF1YWwgb3IgdHdvIG9iamVjdHMKKyAgICAgICogYXJlIHRo
ZSBzYW1lIG9iamVjdAorICAgICAgKi8KKyAgICBpZiAodHlwZW9mIGFjdHVhbCAhPSB0eXBlb2Yg
ZXhwZWN0ZWQpIHsKKyAgICAgICAgYXNzZXJ0KGZhbHNlLCAiYXNzZXJ0X2VxdWFscyIsIGRlc2Ny
aXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCAoIiArIHR5cGVvZiBleHBl
Y3RlZCArICIpICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgKCIgKyB0eXBlb2YgYWN0dWFsICsgIikgJHth
Y3R1YWx9IiwKKyAgICAgICAgICAgICAgICAgICAgICB7ZXhwZWN0ZWQ6ZXhwZWN0ZWQsIGFjdHVh
bDphY3R1YWx9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhc3NlcnQoc2FtZV92YWx1
ZShhY3R1YWwsIGV4cGVjdGVkKSwgImFzc2VydF9lcXVhbHMiLCBkZXNjcmlwdGlvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkICR7ZXhwZWN0ZWR9
IGJ1dCBnb3QgJHthY3R1YWx9IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAge2V4cGVjdGVkOmV4cGVjdGVkLCBhY3R1YWw6YWN0dWFsfSk7Cit9CisKK2Z1bmN0aW9u
IGFzc2VydF9ub3RfZXF1YWxzKGFjdHVhbCwgZXhwZWN0ZWQsIGRlc2NyaXB0aW9uKQoreworICAg
ICAvKgorICAgICAgKiBUZXN0IGlmIHR3byBwcmltaXRpdmVzIGFyZSB1bmVxdWFsIG9yIHR3byBv
YmplY3RzCisgICAgICAqIGFyZSBkaWZmZXJlbnQgb2JqZWN0cworICAgICAgKi8KKyAgICBhc3Nl
cnQoIXNhbWVfdmFsdWUoYWN0dWFsLCBleHBlY3RlZCksICJhc3NlcnRfbm90X2VxdWFscyIsIGRl
c2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdv
dCBkaXNhbGxvd2VkIHZhbHVlICR7YWN0dWFsfSIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB7YWN0dWFsOmFjdHVhbH0pOworfQorCitmdW5jdGlvbiBhc3NlcnRf
aW5fYXJyYXkoYWN0dWFsLCBleHBlY3RlZCwgZGVzY3JpcHRpb24pCit7CisgICAgYXNzZXJ0KGV4
cGVjdGVkLmluZGV4T2YoYWN0dWFsKSAhPSAtMSwgImFzc2VydF9pbl9hcnJheSIsIGRlc2NyaXB0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSAk
e2FjdHVhbH0gbm90IGluIGFycmF5ICR7ZXhwZWN0ZWR9IiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB7YWN0dWFsOmFjdHVhbCwgZXhwZWN0ZWQ6ZXhwZWN0ZWR9
KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X29iamVjdF9lcXVhbHMoYWN0dWFsLCBleHBlY3RlZCwg
ZGVzY3JpcHRpb24pCit7CisgICAgIC8vVGhpcyBuZWVkcyB0byBiZSBpbXByb3ZlZCBhIGdyZWF0
IGRlYWwKKyAgICAgZnVuY3Rpb24gY2hlY2tfZXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgc3RhY2sp
CisgICAgIHsKKyAgICAgICAgIHN0YWNrLnB1c2goYWN0dWFsKTsKKworICAgICAgICAgdmFyIHA7
CisgICAgICAgICBmb3IgKHAgaW4gYWN0dWFsKSB7CisgICAgICAgICAgICAgYXNzZXJ0KGV4cGVj
dGVkLmhhc093blByb3BlcnR5KHApLCAiYXNzZXJ0X29iamVjdF9lcXVhbHMiLCBkZXNjcmlwdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmV4
cGVjdGVkIHByb3BlcnR5ICR7cH0iLCB7cDpwfSk7CisKKyAgICAgICAgICAgICBpZiAodHlwZW9m
IGFjdHVhbFtwXSA9PT0gIm9iamVjdCIgJiYgYWN0dWFsW3BdICE9PSBudWxsKSB7CisgICAgICAg
ICAgICAgICAgIGlmIChzdGFjay5pbmRleE9mKGFjdHVhbFtwXSkgPT09IC0xKSB7CisgICAgICAg
ICAgICAgICAgICAgICBjaGVja19lcXVhbChhY3R1YWxbcF0sIGV4cGVjdGVkW3BdLCBzdGFjayk7
CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgICBhc3NlcnQoc2FtZV92YWx1ZShhY3R1YWxbcF0sIGV4cGVjdGVkW3BdKSwgImFzc2VydF9v
YmplY3RfZXF1YWxzIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAicHJvcGVydHkgJHtwfSBleHBlY3RlZCAke2V4cGVjdGVk
fSBnb3QgJHthY3R1YWx9IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHtwOnAsIGV4cGVjdGVkOmV4cGVjdGVkLCBhY3R1YWw6YWN0dWFsfSk7Cisg
ICAgICAgICAgICAgfQorICAgICAgICAgfQorICAgICAgICAgZm9yIChwIGluIGV4cGVjdGVkKSB7
CisgICAgICAgICAgICAgYXNzZXJ0KGFjdHVhbC5oYXNPd25Qcm9wZXJ0eShwKSwKKyAgICAgICAg
ICAgICAgICAgICAgImFzc2VydF9vYmplY3RfZXF1YWxzIiwgZGVzY3JpcHRpb24sCisgICAgICAg
ICAgICAgICAgICAgICJleHBlY3RlZCBwcm9wZXJ0eSAke3B9IG1pc3NpbmciLCB7cDpwfSk7Cisg
ICAgICAgICB9CisgICAgICAgICBzdGFjay5wb3AoKTsKKyAgICAgfQorICAgICBjaGVja19lcXVh
bChhY3R1YWwsIGV4cGVjdGVkLCBbXSk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9hcnJheV9lcXVh
bHMoYWN0dWFsLCBleHBlY3RlZCwgZGVzY3JpcHRpb24pCit7CisgICAgYXNzZXJ0KGFjdHVhbC5s
ZW5ndGggPT09IGV4cGVjdGVkLmxlbmd0aCwKKyAgICAgICAgICAgImFzc2VydF9hcnJheV9lcXVh
bHMiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgImxlbmd0aHMgZGlmZmVyLCBleHBlY3RlZCAk
e2V4cGVjdGVkfSBnb3QgJHthY3R1YWx9IiwKKyAgICAgICAgICAge2V4cGVjdGVkOmV4cGVjdGVk
Lmxlbmd0aCwgYWN0dWFsOmFjdHVhbC5sZW5ndGh9KTsKKworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgYWN0dWFsLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGFzc2VydChhY3R1YWwuaGFzT3duUHJv
cGVydHkoaSkgPT09IGV4cGVjdGVkLmhhc093blByb3BlcnR5KGkpLAorICAgICAgICAgICAgICAg
ImFzc2VydF9hcnJheV9lcXVhbHMiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICJwcm9w
ZXJ0eSAke2l9LCBwcm9wZXJ0eSBleHBlY3RlZCB0byBiZSAke2V4cGVjdGVkfSBidXQgd2FzICR7
YWN0dWFsfSIsCisgICAgICAgICAgICAgICB7aTppLCBleHBlY3RlZDpleHBlY3RlZC5oYXNPd25Q
cm9wZXJ0eShpKSA/ICJwcmVzZW50IiA6ICJtaXNzaW5nIiwKKyAgICAgICAgICAgICAgIGFjdHVh
bDphY3R1YWwuaGFzT3duUHJvcGVydHkoaSkgPyAicHJlc2VudCIgOiAibWlzc2luZyJ9KTsKKyAg
ICAgICAgYXNzZXJ0KHNhbWVfdmFsdWUoZXhwZWN0ZWRbaV0sIGFjdHVhbFtpXSksCisgICAgICAg
ICAgICAgICAiYXNzZXJ0X2FycmF5X2VxdWFscyIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAg
ICAgInByb3BlcnR5ICR7aX0sIGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9
IiwKKyAgICAgICAgICAgICAgIHtpOmksIGV4cGVjdGVkOmV4cGVjdGVkW2ldLCBhY3R1YWw6YWN0
dWFsW2ldfSk7CisgICAgfQorfQorCitmdW5jdGlvbiBhc3NlcnRfYXBwcm94X2VxdWFscyhhY3R1
YWwsIGV4cGVjdGVkLCBlcHNpbG9uLCBkZXNjcmlwdGlvbikKK3sKKyAgICAvKgorICAgICAqIFRl
c3QgaWYgdHdvIHByaW1pdGl2ZSBudW1iZXJzIGFyZSBlcXVhbCB3aXRoaW5nICsvLSBlcHNpbG9u
CisgICAgICovCisgICAgYXNzZXJ0KHR5cGVvZiBhY3R1YWwgPT09ICJudW1iZXIiLAorICAgICAg
ICAgICAiYXNzZXJ0X2FwcHJveF9lcXVhbHMiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgImV4
cGVjdGVkIGEgbnVtYmVyIGJ1dCBnb3QgYSAke3R5cGVfYWN0dWFsfSIsCisgICAgICAgICAgIHt0
eXBlX2FjdHVhbDp0eXBlb2YgYWN0dWFsfSk7CisKKyAgICBhc3NlcnQoTWF0aC5hYnMoYWN0dWFs
IC0gZXhwZWN0ZWQpIDw9IGVwc2lsb24sCisgICAgICAgICAgICJhc3NlcnRfYXBwcm94X2VxdWFs
cyIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAiZXhwZWN0ZWQgJHtleHBlY3RlZH0gKy8tICR7
ZXBzaWxvbn0gYnV0IGdvdCAke2FjdHVhbH0iLAorICAgICAgICAgICB7ZXhwZWN0ZWQ6ZXhwZWN0
ZWQsIGFjdHVhbDphY3R1YWwsIGVwc2lsb246ZXBzaWxvbn0pOworfQorCitmdW5jdGlvbiBhc3Nl
cnRfbGVzc190aGFuKGFjdHVhbCwgZXhwZWN0ZWQsIGRlc2NyaXB0aW9uKQoreworICAgIC8qCisg
ICAgICogVGVzdCBpZiBhIHByaW1pdGl2ZSBudW1iZXIgaXMgbGVzcyB0aGFuIGFub3RoZXIKKyAg
ICAgKi8KKyAgICBhc3NlcnQodHlwZW9mIGFjdHVhbCA9PT0gIm51bWJlciIsCisgICAgICAgICAg
ICJhc3NlcnRfbGVzc190aGFuIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICJleHBlY3RlZCBh
IG51bWJlciBidXQgZ290IGEgJHt0eXBlX2FjdHVhbH0iLAorICAgICAgICAgICB7dHlwZV9hY3R1
YWw6dHlwZW9mIGFjdHVhbH0pOworCisgICAgYXNzZXJ0KGFjdHVhbCA8IGV4cGVjdGVkLAorICAg
ICAgICAgICAiYXNzZXJ0X2xlc3NfdGhhbiIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAiZXhw
ZWN0ZWQgYSBudW1iZXIgbGVzcyB0aGFuICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9IiwK
KyAgICAgICAgICAge2V4cGVjdGVkOmV4cGVjdGVkLCBhY3R1YWw6YWN0dWFsfSk7Cit9CisKK2Z1
bmN0aW9uIGFzc2VydF9ncmVhdGVyX3RoYW4oYWN0dWFsLCBleHBlY3RlZCwgZGVzY3JpcHRpb24p
Cit7CisgICAgLyoKKyAgICAgKiBUZXN0IGlmIGEgcHJpbWl0aXZlIG51bWJlciBpcyBncmVhdGVy
IHRoYW4gYW5vdGhlcgorICAgICAqLworICAgIGFzc2VydCh0eXBlb2YgYWN0dWFsID09PSAibnVt
YmVyIiwKKyAgICAgICAgICAgImFzc2VydF9ncmVhdGVyX3RoYW4iLCBkZXNjcmlwdGlvbiwKKyAg
ICAgICAgICAgImV4cGVjdGVkIGEgbnVtYmVyIGJ1dCBnb3QgYSAke3R5cGVfYWN0dWFsfSIsCisg
ICAgICAgICAgIHt0eXBlX2FjdHVhbDp0eXBlb2YgYWN0dWFsfSk7CisKKyAgICBhc3NlcnQoYWN0
dWFsID4gZXhwZWN0ZWQsCisgICAgICAgICAgICJhc3NlcnRfZ3JlYXRlcl90aGFuIiwgZGVzY3Jp
cHRpb24sCisgICAgICAgICAgICJleHBlY3RlZCBhIG51bWJlciBncmVhdGVyIHRoYW4gJHtleHBl
Y3RlZH0gYnV0IGdvdCAke2FjdHVhbH0iLAorICAgICAgICAgICB7ZXhwZWN0ZWQ6ZXhwZWN0ZWQs
IGFjdHVhbDphY3R1YWx9KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X2JldHdlZW5fZXhjbHVzaXZl
KGFjdHVhbCwgbG93ZXIsIHVwcGVyLCBkZXNjcmlwdGlvbikKK3sKKyAgICAvKgorICAgICAqIFRl
c3QgaWYgYSBwcmltaXRpdmUgbnVtYmVyIGlzIGJldHdlZW4gdHdvIG90aGVycworICAgICAqLwor
ICAgIGFzc2VydCh0eXBlb2YgYWN0dWFsID09PSAibnVtYmVyIiwKKyAgICAgICAgICAgImFzc2Vy
dF9iZXR3ZWVuX2V4Y2x1c2l2ZSIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAiZXhwZWN0ZWQg
YSBudW1iZXIgYnV0IGdvdCBhICR7dHlwZV9hY3R1YWx9IiwKKyAgICAgICAgICAge3R5cGVfYWN0
dWFsOnR5cGVvZiBhY3R1YWx9KTsKKworICAgIGFzc2VydChhY3R1YWwgPiBsb3dlciAmJiBhY3R1
YWwgPCB1cHBlciwKKyAgICAgICAgICAgImFzc2VydF9iZXR3ZWVuX2V4Y2x1c2l2ZSIsIGRlc2Ny
aXB0aW9uLAorICAgICAgICAgICAiZXhwZWN0ZWQgYSBudW1iZXIgZ3JlYXRlciB0aGFuICR7bG93
ZXJ9ICIgKworICAgICAgICAgICAiYW5kIGxlc3MgdGhhbiAke3VwcGVyfSBidXQgZ290ICR7YWN0
dWFsfSIsCisgICAgICAgICAgIHtsb3dlcjpsb3dlciwgdXBwZXI6dXBwZXIsIGFjdHVhbDphY3R1
YWx9KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X2xlc3NfdGhhbl9lcXVhbChhY3R1YWwsIGV4cGVj
dGVkLCBkZXNjcmlwdGlvbikKK3sKKyAgICAvKgorICAgICAqIFRlc3QgaWYgYSBwcmltaXRpdmUg
bnVtYmVyIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byBhbm90aGVyCisgICAgICovCisgICAgYXNz
ZXJ0KHR5cGVvZiBhY3R1YWwgPT09ICJudW1iZXIiLAorICAgICAgICAgICAiYXNzZXJ0X2xlc3Nf
dGhhbl9lcXVhbCIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAiZXhwZWN0ZWQgYSBudW1iZXIg
YnV0IGdvdCBhICR7dHlwZV9hY3R1YWx9IiwKKyAgICAgICAgICAge3R5cGVfYWN0dWFsOnR5cGVv
ZiBhY3R1YWx9KTsKKworICAgIGFzc2VydChhY3R1YWwgPD0gZXhwZWN0ZWQsCisgICAgICAgICAg
ICJhc3NlcnRfbGVzc190aGFuX2VxdWFsIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICJleHBl
Y3RlZCBhIG51bWJlciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJHtleHBlY3RlZH0gYnV0IGdvdCAk
e2FjdHVhbH0iLAorICAgICAgICAgICB7ZXhwZWN0ZWQ6ZXhwZWN0ZWQsIGFjdHVhbDphY3R1YWx9
KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X2dyZWF0ZXJfdGhhbl9lcXVhbChhY3R1YWwsIGV4cGVj
dGVkLCBkZXNjcmlwdGlvbikKK3sKKyAgICAvKgorICAgICAqIFRlc3QgaWYgYSBwcmltaXRpdmUg
bnVtYmVyIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBhbm90aGVyCisgICAgICovCisgICAg
YXNzZXJ0KHR5cGVvZiBhY3R1YWwgPT09ICJudW1iZXIiLAorICAgICAgICAgICAiYXNzZXJ0X2dy
ZWF0ZXJfdGhhbl9lcXVhbCIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAiZXhwZWN0ZWQgYSBu
dW1iZXIgYnV0IGdvdCBhICR7dHlwZV9hY3R1YWx9IiwKKyAgICAgICAgICAge3R5cGVfYWN0dWFs
OnR5cGVvZiBhY3R1YWx9KTsKKworICAgIGFzc2VydChhY3R1YWwgPj0gZXhwZWN0ZWQsCisgICAg
ICAgICAgICJhc3NlcnRfZ3JlYXRlcl90aGFuX2VxdWFsIiwgZGVzY3JpcHRpb24sCisgICAgICAg
ICAgICJleHBlY3RlZCBhIG51bWJlciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJHtleHBlY3Rl
ZH0gYnV0IGdvdCAke2FjdHVhbH0iLAorICAgICAgICAgICB7ZXhwZWN0ZWQ6ZXhwZWN0ZWQsIGFj
dHVhbDphY3R1YWx9KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X2JldHdlZW5faW5jbHVzaXZlKGFj
dHVhbCwgbG93ZXIsIHVwcGVyLCBkZXNjcmlwdGlvbikKK3sKKyAgICAvKgorICAgICAqIFRlc3Qg
aWYgYSBwcmltaXRpdmUgbnVtYmVyIGlzIGJldHdlZW4gdG8gdHdvIG90aGVycyBvciBlcXVhbCB0
byBlaXRoZXIgb2YgdGhlbQorICAgICAqLworICAgIGFzc2VydCh0eXBlb2YgYWN0dWFsID09PSAi
bnVtYmVyIiwKKyAgICAgICAgICAgImFzc2VydF9iZXR3ZWVuX2luY2x1c2l2ZSIsIGRlc2NyaXB0
aW9uLAorICAgICAgICAgICAiZXhwZWN0ZWQgYSBudW1iZXIgYnV0IGdvdCBhICR7dHlwZV9hY3R1
YWx9IiwKKyAgICAgICAgICAge3R5cGVfYWN0dWFsOnR5cGVvZiBhY3R1YWx9KTsKKworICAgIGFz
c2VydChhY3R1YWwgPj0gbG93ZXIgJiYgYWN0dWFsIDw9IHVwcGVyLAorICAgICAgICAgICAiYXNz
ZXJ0X2JldHdlZW5faW5jbHVzaXZlIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICJleHBlY3Rl
ZCBhIG51bWJlciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJHtsb3dlcn0gIiArCisgICAgICAg
ICAgICJhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICR7dXBwZXJ9IGJ1dCBnb3QgJHthY3R1YWx9
IiwKKyAgICAgICAgICAge2xvd2VyOmxvd2VyLCB1cHBlcjp1cHBlciwgYWN0dWFsOmFjdHVhbH0p
OworfQorCitmdW5jdGlvbiBhc3NlcnRfdGhyb3dzKGNvZGUsIGZ1bmMsIGRlc2NyaXB0aW9uKQor
eworICAgIHRyeSB7CisgICAgICAgIGZ1bmMuY2FsbCh0aGlzKTsKKyAgICAgICAgYXNzZXJ0KGZh
bHNlLCAiYXNzZXJ0X3Rocm93cyIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgIiR7ZnVu
Y30gZGlkIG5vdCB0aHJvdyIsIHtmdW5jOmZ1bmN9KTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAg
ICAgIGlmIChlIGluc3RhbmNlb2YgQXNzZXJ0aW9uRXJyb3IpIHsKKyAgICAgICAgICAgIHRocm93
IGU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvZGUgPT09IG51bGwpIHsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAodHlwZW9mIGNvZGUgPT09ICJvYmplY3Qi
KSB7CisgICAgICAgICAgICBhc3NlcnQodHlwZW9mIGUgPT0gIm9iamVjdCIgJiYgIm5hbWUiIGlu
IGUgJiYgZS5uYW1lID09IGNvZGUubmFtZSwKKyAgICAgICAgICAgICAgICAgICAiYXNzZXJ0X3Ro
cm93cyIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICIke2Z1bmN9IHRocmV3ICR7
YWN0dWFsfSAoJHthY3R1YWxfbmFtZX0pIGV4cGVjdGVkICR7ZXhwZWN0ZWR9ICgke2V4cGVjdGVk
X25hbWV9KSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmdW5jOmZ1bmMsIGFj
dHVhbDplLCBhY3R1YWxfbmFtZTplLm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBleHBlY3RlZDpjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhw
ZWN0ZWRfbmFtZTpjb2RlLm5hbWV9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIHZhciBjb2RlX25hbWVfbWFwID0geworICAgICAgICAgICAgSU5ERVhfU0laRV9F
UlI6ICdJbmRleFNpemVFcnJvcicsCisgICAgICAgICAgICBISUVSQVJDSFlfUkVRVUVTVF9FUlI6
ICdIaWVyYXJjaHlSZXF1ZXN0RXJyb3InLAorICAgICAgICAgICAgV1JPTkdfRE9DVU1FTlRfRVJS
OiAnV3JvbmdEb2N1bWVudEVycm9yJywKKyAgICAgICAgICAgIElOVkFMSURfQ0hBUkFDVEVSX0VS
UjogJ0ludmFsaWRDaGFyYWN0ZXJFcnJvcicsCisgICAgICAgICAgICBOT19NT0RJRklDQVRJT05f
QUxMT1dFRF9FUlI6ICdOb01vZGlmaWNhdGlvbkFsbG93ZWRFcnJvcicsCisgICAgICAgICAgICBO
T1RfRk9VTkRfRVJSOiAnTm90Rm91bmRFcnJvcicsCisgICAgICAgICAgICBOT1RfU1VQUE9SVEVE
X0VSUjogJ05vdFN1cHBvcnRlZEVycm9yJywKKyAgICAgICAgICAgIElOVVNFX0FUVFJJQlVURV9F
UlI6ICdJblVzZUF0dHJpYnV0ZUVycm9yJywKKyAgICAgICAgICAgIElOVkFMSURfU1RBVEVfRVJS
OiAnSW52YWxpZFN0YXRlRXJyb3InLAorICAgICAgICAgICAgU1lOVEFYX0VSUjogJ1N5bnRheEVy
cm9yJywKKyAgICAgICAgICAgIElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUjogJ0ludmFsaWRNb2Rp
ZmljYXRpb25FcnJvcicsCisgICAgICAgICAgICBOQU1FU1BBQ0VfRVJSOiAnTmFtZXNwYWNlRXJy
b3InLAorICAgICAgICAgICAgSU5WQUxJRF9BQ0NFU1NfRVJSOiAnSW52YWxpZEFjY2Vzc0Vycm9y
JywKKyAgICAgICAgICAgIFRZUEVfTUlTTUFUQ0hfRVJSOiAnVHlwZU1pc21hdGNoRXJyb3InLAor
ICAgICAgICAgICAgU0VDVVJJVFlfRVJSOiAnU2VjdXJpdHlFcnJvcicsCisgICAgICAgICAgICBO
RVRXT1JLX0VSUjogJ05ldHdvcmtFcnJvcicsCisgICAgICAgICAgICBBQk9SVF9FUlI6ICdBYm9y
dEVycm9yJywKKyAgICAgICAgICAgIFVSTF9NSVNNQVRDSF9FUlI6ICdVUkxNaXNtYXRjaEVycm9y
JywKKyAgICAgICAgICAgIFFVT1RBX0VYQ0VFREVEX0VSUjogJ1F1b3RhRXhjZWVkZWRFcnJvcics
CisgICAgICAgICAgICBUSU1FT1VUX0VSUjogJ1RpbWVvdXRFcnJvcicsCisgICAgICAgICAgICBJ
TlZBTElEX05PREVfVFlQRV9FUlI6ICdJbnZhbGlkTm9kZVR5cGVFcnJvcicsCisgICAgICAgICAg
ICBEQVRBX0NMT05FX0VSUjogJ0RhdGFDbG9uZUVycm9yJworICAgICAgICB9OworCisgICAgICAg
IHZhciBuYW1lID0gY29kZSBpbiBjb2RlX25hbWVfbWFwID8gY29kZV9uYW1lX21hcFtjb2RlXSA6
IGNvZGU7CisKKyAgICAgICAgdmFyIG5hbWVfY29kZV9tYXAgPSB7CisgICAgICAgICAgICBJbmRl
eFNpemVFcnJvcjogMSwKKyAgICAgICAgICAgIEhpZXJhcmNoeVJlcXVlc3RFcnJvcjogMywKKyAg
ICAgICAgICAgIFdyb25nRG9jdW1lbnRFcnJvcjogNCwKKyAgICAgICAgICAgIEludmFsaWRDaGFy
YWN0ZXJFcnJvcjogNSwKKyAgICAgICAgICAgIE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yOiA3
LAorICAgICAgICAgICAgTm90Rm91bmRFcnJvcjogOCwKKyAgICAgICAgICAgIE5vdFN1cHBvcnRl
ZEVycm9yOiA5LAorICAgICAgICAgICAgSW5Vc2VBdHRyaWJ1dGVFcnJvcjogMTAsCisgICAgICAg
ICAgICBJbnZhbGlkU3RhdGVFcnJvcjogMTEsCisgICAgICAgICAgICBTeW50YXhFcnJvcjogMTIs
CisgICAgICAgICAgICBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3I6IDEzLAorICAgICAgICAgICAg
TmFtZXNwYWNlRXJyb3I6IDE0LAorICAgICAgICAgICAgSW52YWxpZEFjY2Vzc0Vycm9yOiAxNSwK
KyAgICAgICAgICAgIFR5cGVNaXNtYXRjaEVycm9yOiAxNywKKyAgICAgICAgICAgIFNlY3VyaXR5
RXJyb3I6IDE4LAorICAgICAgICAgICAgTmV0d29ya0Vycm9yOiAxOSwKKyAgICAgICAgICAgIEFi
b3J0RXJyb3I6IDIwLAorICAgICAgICAgICAgVVJMTWlzbWF0Y2hFcnJvcjogMjEsCisgICAgICAg
ICAgICBRdW90YUV4Y2VlZGVkRXJyb3I6IDIyLAorICAgICAgICAgICAgVGltZW91dEVycm9yOiAy
MywKKyAgICAgICAgICAgIEludmFsaWROb2RlVHlwZUVycm9yOiAyNCwKKyAgICAgICAgICAgIERh
dGFDbG9uZUVycm9yOiAyNSwKKworICAgICAgICAgICAgRW5jb2RpbmdFcnJvcjogMCwKKyAgICAg
ICAgICAgIE5vdFJlYWRhYmxlRXJyb3I6IDAsCisgICAgICAgICAgICBVbmtub3duRXJyb3I6IDAs
CisgICAgICAgICAgICBDb25zdHJhaW50RXJyb3I6IDAsCisgICAgICAgICAgICBEYXRhRXJyb3I6
IDAsCisgICAgICAgICAgICBUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3I6IDAsCisgICAgICAgICAg
ICBSZWFkT25seUVycm9yOiAwLAorICAgICAgICAgICAgVmVyc2lvbkVycm9yOiAwLAorICAgICAg
ICAgICAgT3BlcmF0aW9uRXJyb3I6IDAsCisgICAgICAgICAgICBOb3RBbGxvd2VkRXJyb3I6IDAK
KyAgICAgICAgfTsKKworICAgICAgICBpZiAoIShuYW1lIGluIG5hbWVfY29kZV9tYXApKSB7Cisg
ICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRXJyb3IoJ1Rlc3QgYnVnOiB1bnJlY29nbml6
ZWQgRE9NRXhjZXB0aW9uIGNvZGUgIicgKyBjb2RlICsgJyIgcGFzc2VkIHRvIGFzc2VydF90aHJv
d3MoKScpOworICAgICAgICB9CisKKyAgICAgICAgdmFyIHJlcXVpcmVkX3Byb3BzID0geyBjb2Rl
OiBuYW1lX2NvZGVfbWFwW25hbWVdIH07CisKKyAgICAgICAgaWYgKHJlcXVpcmVkX3Byb3BzLmNv
ZGUgPT09IDAgfHwKKyAgICAgICAgICAgKHR5cGVvZiBlID09ICJvYmplY3QiICYmCisgICAgICAg
ICAgICAibmFtZSIgaW4gZSAmJgorICAgICAgICAgICAgZS5uYW1lICE9PSBlLm5hbWUudG9VcHBl
ckNhc2UoKSAmJgorICAgICAgICAgICAgZS5uYW1lICE9PSAiRE9NRXhjZXB0aW9uIikpIHsKKyAg
ICAgICAgICAgIC8vIE5ldyBzdHlsZSBleGNlcHRpb246IGFsc28gdGVzdCB0aGUgbmFtZSBwcm9w
ZXJ0eS4KKyAgICAgICAgICAgIHJlcXVpcmVkX3Byb3BzLm5hbWUgPSBuYW1lOworICAgICAgICB9
CisKKyAgICAgICAgLy9XZSdkIGxpa2UgdG8gdGVzdCB0aGF0IGUgaW5zdGFuY2VvZiB0aGUgYXBw
cm9wcmlhdGUgaW50ZXJmYWNlLAorICAgICAgICAvL2J1dCB3ZSBjYW4ndCwgYmVjYXVzZSB3ZSBk
b24ndCBrbm93IHdoYXQgd2luZG93IGl0IHdhcyBjcmVhdGVkCisgICAgICAgIC8vaW4uICBJdCBt
aWdodCBiZSBhbiBpbnN0YW5jZW9mIHRoZSBhcHByb3ByaWF0ZSBpbnRlcmZhY2Ugb24gc29tZQor
ICAgICAgICAvL3Vua25vd24gb3RoZXIgd2luZG93LiAgVE9ETzogV29yayBhcm91bmQgdGhpcyBz
b21laG93PworCisgICAgICAgIGFzc2VydCh0eXBlb2YgZSA9PSAib2JqZWN0IiwKKyAgICAgICAg
ICAgICAgICJhc3NlcnRfdGhyb3dzIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAiJHtm
dW5jfSB0aHJldyAke2V9IHdpdGggdHlwZSAke3R5cGV9LCBub3QgYW4gb2JqZWN0IiwKKyAgICAg
ICAgICAgICAgIHtmdW5jOmZ1bmMsIGU6ZSwgdHlwZTp0eXBlb2YgZX0pOworCisgICAgICAgIGZv
ciAodmFyIHByb3AgaW4gcmVxdWlyZWRfcHJvcHMpIHsKKyAgICAgICAgICAgIGFzc2VydCh0eXBl
b2YgZSA9PSAib2JqZWN0IiAmJiBwcm9wIGluIGUgJiYgZVtwcm9wXSA9PSByZXF1aXJlZF9wcm9w
c1twcm9wXSwKKyAgICAgICAgICAgICAgICAgICAiYXNzZXJ0X3Rocm93cyIsIGRlc2NyaXB0aW9u
LAorICAgICAgICAgICAgICAgICAgICIke2Z1bmN9IHRocmV3ICR7ZX0gdGhhdCBpcyBub3QgYSBE
T01FeGNlcHRpb24gIiArIGNvZGUgKyAiOiBwcm9wZXJ0eSAke3Byb3B9IGlzIGVxdWFsIHRvICR7
YWN0dWFsfSwgZXhwZWN0ZWQgJHtleHBlY3RlZH0iLAorICAgICAgICAgICAgICAgICAgIHtmdW5j
OmZ1bmMsIGU6ZSwgcHJvcDpwcm9wLCBhY3R1YWw6ZVtwcm9wXSwgZXhwZWN0ZWQ6cmVxdWlyZWRf
cHJvcHNbcHJvcF19KTsKKyAgICAgICAgfQorICAgIH0KK30KKworLyoKKyAqIFJldHVybiB0cnVl
IGlmIG9iamVjdCBpcyBwcm9iYWJseSBhIE5vZGUgb2JqZWN0LgorICovCitmdW5jdGlvbiBpc19u
b2RlKG9iamVjdCkKK3sKKyAgICAvLyBJIHVzZSBkdWNrLXR5cGluZyBpbnN0ZWFkIG9mIGluc3Rh
bmNlb2YsIGJlY2F1c2UKKyAgICAvLyBpbnN0YW5jZW9mIGRvZXNuJ3Qgd29yayBpZiB0aGUgbm9k
ZSBpcyBmcm9tIGFub3RoZXIgd2luZG93IChsaWtlIGFuCisgICAgLy8gaWZyYW1lJ3MgY29udGVu
dFdpbmRvdyk6CisgICAgLy8gaHR0cDovL3d3dy53My5vcmcvQnVncy9QdWJsaWMvc2hvd19idWcu
Y2dpP2lkPTEyMjk1CisgICAgdHJ5IHsKKyAgICAgICAgdmFyIGhhc19ub2RlX3Byb3BlcnRpZXMg
PSAoIm5vZGVUeXBlIiBpbiBvYmplY3QgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIm5vZGVOYW1lIiBpbiBvYmplY3QgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIm5vZGVWYWx1ZSIgaW4gb2JqZWN0ICYmCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJjaGlsZE5vZGVzIiBpbiBvYmplY3QpOworICAgIH0gY2F0Y2ggKGUpIHsK
KyAgICAgICAgLy8gV2UncmUgcHJvYmFibHkgY3Jvc3Mtb3JpZ2luLCB3aGljaCBtZWFucyB3ZSBh
cmVuJ3QgYSBub2RlCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoaGFz
X25vZGVfcHJvcGVydGllcykgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgb2JqZWN0Lm5v
ZGVUeXBlOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAvLyBUaGUgb2JqZWN0
IGlzIHByb2JhYmx5IE5vZGUucHJvdG90eXBlIG9yIGFub3RoZXIgcHJvdG90eXBlCisgICAgICAg
ICAgICAvLyBvYmplY3QgdGhhdCBpbmhlcml0cyBmcm9tIGl0LCBhbmQgbm90IGEgTm9kZSBpbnN0
YW5jZS4KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2YXIgcmVwbGFjZW1lbnRz
ID0geworICAgICIwIjogIjAiLAorICAgICIxIjogIngwMSIsCisgICAgIjIiOiAieDAyIiwKKyAg
ICAiMyI6ICJ4MDMiLAorICAgICI0IjogIngwNCIsCisgICAgIjUiOiAieDA1IiwKKyAgICAiNiI6
ICJ4MDYiLAorICAgICI3IjogIngwNyIsCisgICAgIjgiOiAiYiIsCisgICAgIjkiOiAidCIsCisg
ICAgIjEwIjogIm4iLAorICAgICIxMSI6ICJ2IiwKKyAgICAiMTIiOiAiZiIsCisgICAgIjEzIjog
InIiLAorICAgICIxNCI6ICJ4MGUiLAorICAgICIxNSI6ICJ4MGYiLAorICAgICIxNiI6ICJ4MTAi
LAorICAgICIxNyI6ICJ4MTEiLAorICAgICIxOCI6ICJ4MTIiLAorICAgICIxOSI6ICJ4MTMiLAor
ICAgICIyMCI6ICJ4MTQiLAorICAgICIyMSI6ICJ4MTUiLAorICAgICIyMiI6ICJ4MTYiLAorICAg
ICIyMyI6ICJ4MTciLAorICAgICIyNCI6ICJ4MTgiLAorICAgICIyNSI6ICJ4MTkiLAorICAgICIy
NiI6ICJ4MWEiLAorICAgICIyNyI6ICJ4MWIiLAorICAgICIyOCI6ICJ4MWMiLAorICAgICIyOSI6
ICJ4MWQiLAorICAgICIzMCI6ICJ4MWUiLAorICAgICIzMSI6ICJ4MWYiLAorICAgICIweGZmZmQi
OiAidWZmZmQiLAorICAgICIweGZmZmUiOiAidWZmZmUiLAorICAgICIweGZmZmYiOiAidWZmZmYi
LAorfTsKKworZnVuY3Rpb24gZXh0ZW5kKGFycmF5LCBpdGVtcykKK3sKKyAgICBBcnJheS5wcm90
b3R5cGUucHVzaC5hcHBseShhcnJheSwgaXRlbXMpOworfQorCitmdW5jdGlvbiBnZXRfc2NyaXB0
X3VybCgpCit7CisgICAgcmV0dXJuICIvIjsKK30KKworLyoKKyAqIFJldHVybiBhIHN0cmluZyB0
cnVuY2F0ZWQgdG8gdGhlIGdpdmVuIGxlbmd0aCwgd2l0aCAuLi4gYWRkZWQgYXQgdGhlIGVuZAor
ICogaWYgaXQgd2FzIGxvbmdlci4KKyAqLworZnVuY3Rpb24gdHJ1bmNhdGUocywgbGVuKQorewor
ICAgIGlmIChzLmxlbmd0aCA+IGxlbikgeworICAgICAgICByZXR1cm4gcy5zdWJzdHJpbmcoMCwg
bGVuIC0gMykgKyAiLi4uIjsKKyAgICB9CisgICAgcmV0dXJuIHM7Cit9CisKK2Z1bmN0aW9uIGFz
c2VydF90cnVlKGFjdHVhbCwgZGVzY3JpcHRpb24pCit7CisgICAgYXNzZXJ0KGFjdHVhbCA9PT0g
dHJ1ZSwgImFzc2VydF90cnVlIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImV4cGVjdGVkIHRydWUgZ290ICR7YWN0dWFsfSIsIHthY3R1YWw6YWN0dWFsfSk7Cit9
CisKK2Z1bmN0aW9uIGFzc2VydF9mYWxzZShhY3R1YWwsIGRlc2NyaXB0aW9uKQoreworICAgIGFz
c2VydChhY3R1YWwgPT09IGZhbHNlLCAiYXNzZXJ0X2ZhbHNlIiwgZGVzY3JpcHRpb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCBmYWxzZSBnb3QgJHthY3R1YWx9Iiwg
e2FjdHVhbDphY3R1YWx9KTsKK30KKworZnVuY3Rpb24gdGVzdCh0c3QsIG5hbWUpIHsKKyAgdHJ5
IHsKKyAgICB0c3QoKTsKKyAgfSBjYXRjaCAoZSkgeworICAgIGlmICghUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuZXJyb3JzKQorICAgICAgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuZXJyb3JzID0g
W107CisgICAgICBQYWludFdvcmtsZXRHbG9iYWxTY29wZS5lcnJvcnMucHVzaCh7IG5hbWU6IG5h
bWUsIGVycm9yOiBlLm1lc3NhZ2UgfSk7CisgIH0KKyAgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUu
aGFzUnVuQVRlc3QgPSB0cnVlOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mt
Y3VzdG9tLXBhaW50L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzLWN1c3RvbS1wYWludC9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWIx
M2Q0MzI5MGY4MzRkMGY5YTY5OTMwNTAwYTY3YWMxNWJmNWVkZgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMKQEAgLTAsMCArMSwyMyBAQAoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKKworLy8gSW1wb3J0cyBjb2RlIGludG8gYSB3b3JrbGV0LCB3aXRoIHNv
bWUgaGVscGVycy4KK2FzeW5jIGZ1bmN0aW9uIGltcG9ydFdvcmtsZXQod29ya2xldCwgY29kZSkg
eworICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKCJyZXNvdXJjZXMvdGVzdGhhcm5lc3Mt
d29ya2xldC5qcyIpOworICBjb25zdCBmaW5hbENvZGUgPSAoYXdhaXQgcmVzcG9uc2UudGV4dCgp
KSArIGNvZGU7CisKKyAgbGV0IHVybDsKKyAgLy8gRklYTUU6IFRoaXMgaXMgdGVtcG9yYXJ5LCB1
bnRpbCB3ZSBzdXBwb3J0IGxvYWRpbmcgc2NyaXB0cyBieSB1cmwKKyAgaWYgKHdpbmRvdy5jaHJv
bWUpIHsKKyAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2ZpbmFsQ29kZV0sIHt0eXBlOiAndGV4
dC9qYXZhc2NyaXB0J30pOworICAgIHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7Cisg
IH0gZWxzZSB7CisgICAgdXJsID0gZmluYWxDb2RlOworICB9CisKKyAgd29ya2xldC5hZGRNb2R1
bGUodXJsKTsKKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsKKyAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgIH0sIDMwMDApOwor
ICB9Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvd29y
a2xldC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3dv
cmtsZXQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YjQyYjYyZGExM2VkYTgxOTYxMGIzMTk3
YjRlNDVhNTQ3M2JkY2YzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mt
Y3VzdG9tLXBhaW50L3dvcmtsZXQtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDE2IEBACis8IURP
Q1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGV4cGVyaW1lbnRhbDpDU1NQYWlu
dGluZ0FQSUVuYWJsZWQ9dHJ1ZSBdIC0tPgorCis8Y2FudmFzIGlkPSJwYWludCIgd2lkdGg9IjE1
MHB4IiBoZWlnaHQ9IjE1MHB4IiA+PC9jYW52YXM+CisKKzxzY3JpcHQgaWQ9ImNvZGUiPgordmFy
IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYWludCcpOwordmFyIGN0eCA9IGNh
bnZhcy5nZXRDb250ZXh0KCcyZCcpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKyl7Cisg
IGZvciAodmFyIGogPSAwOyBqIDwgNjsgaisrKXsKKyAgICBjdHguZmlsbFN0eWxlID0gJ3JnYign
ICsgTWF0aC5mbG9vcigyNTUgLSA0Mi41ICogaSkgKyAnLCcgKworICAgICAgICAgICAgICAgICAg
ICAgTWF0aC5mbG9vcigyNTUgLSA0Mi41ICogaikgKyAnLDApJzsKKyAgICBjdHguZmlsbFJlY3Qo
aiAqIDI1LCBpICogMjUsIDI1LCAyNSk7CisgIH0KK30KKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3dvcmtsZXQuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC93b3JrbGV0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmNmZjkz
NTY4NTM0MjA0YTJhYTBjYzZlOGQ5ZTg5NDQwMTJlMmU2NQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC93b3JrbGV0Lmh0bWwKQEAgLTAsMCArMSw0
MiBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBleHBlcmltZW50
YWw6Q1NTUGFpbnRpbmdBUElFbmFibGVkPXRydWUgXSAtLT4KKzxtZXRhIG5hbWU9ImF1dGhvciIg
dGl0bGU9Ikp1c3RpbiBNaWNoYXVkIiBocmVmPSJtYWlsdG86anVzdGluX21pY2hhdWRAd2Via2l0
Lm9yZyI+Cis8bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9IlRlc3Qgd29ya2xldCBhZGRNb2R1
bGUgYW5kIGdsb2JhbCBvYmplY3QiPgorPGxpbmsgcmVsPSJoZWxwIiBjb250ZW50PSJodHRwczov
L2RyYWZ0cy5jc3MtaG91ZGluaS5vcmcvY3NzLXBhaW50LWFwaS0xLyI+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKworPHN0eWxlPgorICAjcGFpbnQg
eworICAgIGJhY2tncm91bmQtaW1hZ2U6IHBhaW50KG15LXBhaW50KTsKKyAgICB3aWR0aDogMTUw
cHg7CisgICAgaGVpZ2h0OiAxNTBweDsKKyAgfQorPC9zdHlsZT4KKworPGRpdiBpZD0icGFpbnQi
PjwvZGl2PgorCis8c2NyaXB0IGlkPSJjb2RlIiB0eXBlPSJ0ZXh0L3dvcmtsZXQiPgorY2xhc3Mg
TXlQYWludCB7CisgIHBhaW50KGN0eCwgZ2VvbSwgcHJvcGVydGllcykgeworICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgNjsgaSsrKXsKKyAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgNjsgaisrKXsK
KyAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2IoJyArIE1hdGguZmxvb3IoMjU1IC0gNDIuNSAq
IGkpICsgJywnICsKKyAgICAgICAgICAgICAgICAgICAgICAgICBNYXRoLmZsb29yKDI1NSAtIDQy
LjUgKiBqKSArICcsMCknOworICAgICAgICBjdHguZmlsbFJlY3QoaiAqIDI1LCBpICogMjUsIDI1
LCAyNSk7CisgICAgICB9CisgICAgfQorICAgIGNvbnNvbGUubG9nKCJIZWxsbyBmcm9tIHBhaW50
IGNhbGxiYWNrISIpOworICAgIGFzc2VydF9ncmVhdGVyX3RoYW4oZXZhbCgiZGV2aWNlUGl4ZWxS
YXRpbyIpLCAwKTsKKyAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdSZWZlcmVuY2VFcnJvcid9
LCBmdW5jdGlvbiAoKSB7IGV2YWwoIndpbmRvdyIpOyB9KTsKKworICAgIGNvbnN0IHByb21pc2Ug
PSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7IGNvbnNvbGUubG9nKCJJbiBwcm9t
aXNlIik7IHJlc29sdmUoKSB9KTsKKyAgICBwcm9taXNlLnRoZW4oKCkgPT4gY29uc29sZS5sb2co
IlByb21pc2Ugd2FzIHJlc29sdmVkIikpOworICB9Cit9Citjb25zb2xlLmxvZygiSGVsbG8gZnJv
bSBwYWludCB3b3JrbGV0ISIpOworcmVnaXN0ZXJQYWludCgnbXktcGFpbnQnLCBNeVBhaW50KTsK
K2NvbnNvbGUubG9nKFdpbmRvdyk7IC8vIHRlc3QgdGhhdCB1bmNhdWdodCBleGNlcHRpb25zIGRv
IG5vdCBhZmZlY3QgcmVnaXN0ZXJlZCBwYWludCBjYWxsYmFja3MKKzwvc2NyaXB0PgorCis8c2Ny
aXB0PgoraW1wb3J0V29ya2xldChDU1MucGFpbnRXb3JrbGV0LCBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnY29kZScpLnRleHRDb250ZW50KTsKKzwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353643</attachid>
            <date>2018-11-01 14:14:56 -0700</date>
            <delta_ts>2018-11-02 17:30:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190979-20181101141456.patch</filename>
            <type>text/plain</type>
            <size>188688</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjQ4NmIwMmU1NmRmOTIz
MGM2MTUyMTYzZWI3MmZkYzA0OTBmMzgxNS4uZjI0NTI5MzNmZjAwMzQ0OGRlYzEzNmRiMWJmZjQy
ODVmYmMyNWRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MyBAQAorMjAxOC0xMC0yOSAgSnVz
dGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIG5l
dyBnbG9iYWwgb2JqZWN0IGFuZCBwcmVsaW1pbmFyeSBXb3JrbGV0cyBzdXBwb3J0IGZvciBDU1Mg
cGFpbnRpbmcgYXBpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTA5NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUZXN0OiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvd29ya2xldC5odG1sCisKKyAgICAgICAg
QWRkIGEgbmV3IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgYW5kIGdsb2JhbCBvYmplY3QgdG8gcnVu
IHdvcmtsZXRzIGluLiBUaGlzIGlzIG1vc3RseSBjb3B5K3Bhc3RlCisgICAgICAgIGZyb20gV29y
a2VycywgYnV0IHdpdGhvdXQgYW55IG9mIHRoZSB0aHJlYWRpbmcuIFdvcmtsZXQuYWRkTW9kdWxl
IGRvZXMgbm90IHlldCBzdXBwb3J0IGxvYWRpbmcgc2NyaXB0cworICAgICAgICBvciBkb2luZyBj
cm9zcyBvcmlnaW4gY2hlY2tpbmcuIFRoZXJlIGFyZSBxdWl0ZSBhIGZldyBwYXJ0cyBvZiB0aGUg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCBhcGkgdGhhdCBhcmUKKyAgICAgICAgbGVmdCBhcyBBU1NF
UlRfTk9UX1JFQUNIRUQoKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2Jq
ZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0IGNvbnN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20u
Y3BwLgorICAgICAgICAoV2ViQ29yZTo6SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6dmlzaXRB
ZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNQYWludFdvcmtsZXRHbG9i
YWxTY29wZTo6cmVnaXN0ZXJQYWludCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrbGV0
R2xvYmFsU2NvcGVCYXNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtsZXRH
bG9iYWxTY29wZUJhc2U6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZSk6CisgICAgICAgIChXZWJD
b3JlOjpKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6Y2xlYXJET01HdWFyZGVkT2JqZWN0
cyk6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnZpc2l0Q2hp
bGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpkZXN0
cm95KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtsZXRHbG9i
YWxTY29wZUJhc2U6OnN1cHBvcnRzUmljaFNvdXJjZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6
SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzaG91bGRJbnRlcnJ1cHRTY3JpcHQpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzaG91bGRJbnRlcnJ1cHRTY3Jp
cHRCZWZvcmVUaW1lb3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3Bl
QmFzZTo6amF2YVNjcmlwdFJ1bnRpbWVGbGFncyk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToK
KyAgICAgICAgKFdlYkNvcmU6OnRvSlNXb3JrbGV0R2xvYmFsU2NvcGUpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6d3JhcHBlZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnByb3h5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6Y3JlYXRlU3RydWN0dXJlKToK
KyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFN0
YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29w
ZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjU3RhdGVGcm9tV29ya2xldEdsb2JhbFNjb3BlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKElzRE9NR2xvYmFsT2JqZWN0KToKKyAgICAgICAg
KFNob3VsZFVzZUdsb2JhbE9iamVjdFByb3RvdHlwZSk6CisgICAgICAgIChHZW5lcmF0ZUhlYWRl
cik6CisgICAgICAgIChHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZ0ZvckV4
cG9zZWQpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGw6CisgICAgICAgICogY3NzL0NTU1BhaW50
SW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYWludEltYWdlVmFsdWU6Omlt
YWdlKToKKyAgICAgICAgKiBjc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRPTUNTU1BhaW50V29ya2xldDo6ZW5zdXJlUGFpbnRXb3JrbGV0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTUNTU1BhaW50V29ya2xldDo6ZW5zdXJlUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9ET01DU1NQYWludFdvcmtsZXQuaDoKKyAgICAg
ICAgKiBjc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmlkbDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVuc3VyZUNTU1BhaW50V29ya2xldCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVuc3VyZUNTU1BhaW50V29ya2xldEds
b2JhbFNjb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpnZXRDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSk6CisgICAg
ICAgICogZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbjoKKyAgICAgICAgKiBkb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0Ojp2bSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpleGVj
U3RhdGUpOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojppc1dvcmtsZXRHbG9iYWxTY29wZSBj
b25zdCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dlckFnZW50OjppbmplY3Rl
ZFNjcmlwdEZvckV2YWwpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtl
clJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1lQWdlbnQ6
OmluamVjdGVkU2NyaXB0Rm9yRXZhbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3Vz
dG9tUGFpbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludEltYWdlOjpD
dXN0b21QYWludEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50SW1hZ2U6OmRv
Q3VzdG9tUGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1h
Z2UuaDoKKyAgICAgICAgKiB3b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHA6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5j
cHAuCisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludFdvcmtsZXRH
bG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6
ZGV2aWNlUGl4ZWxSYXRpbyk6CisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxT
Y29wZTo6YWRkUmVnaXN0ZXJlZFBhaW50KToKKyAgICAgICAgKiB3b3JrbGV0cy9QYWludFdvcmts
ZXRHbG9iYWxTY29wZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50
V29ya2xldEdsb2JhbFNjb3BlLmguCisgICAgICAgICogd29ya2xldHMvUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUuaWRsLgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXQuY3BwOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
LgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtsZXQ6OldvcmtsZXQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldDo6YWRkTW9kdWxl
KToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwLgorICAgICAgICAqIHdvcmts
ZXRzL1dvcmtsZXQuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUuaWRsLgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRDb25zb2xl
Q2xpZW50LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93
b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0
Q29uc29sZUNsaWVudDo6V29ya2xldENvbnNvbGVDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2xldENvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtsZXRDb25zb2xlQ2xpZW50Ojpjb3VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrbGV0Q29uc29sZUNsaWVudDo6dGltZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0
Q29uc29sZUNsaWVudDo6dGltZUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29s
ZUNsaWVudDo6cHJvZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29sZUNsaWVu
dDo6cHJvZmlsZUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29sZUNsaWVudDo6
dGFrZUhlYXBTbmFwc2hvdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29sZUNsaWVu
dDo6dGltZVN0YW1wKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRDb25zb2xlQ2xpZW50Ojpy
ZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldENvbnNvbGVDbGllbnQ6OnJlY29yZEVu
ZCk6CisgICAgICAgICogd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuaDogQWRkZWQuCisg
ICAgICAgICogd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxTY29wZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6On5Xb3JrbGV0R2xvYmFsU2NvcGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpldmFsdWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmlzSlNFeGVjdXRpb25Gb3JiaWRkZW4gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpkaXNhYmxlRXZhbCk6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmRpc2FibGVXZWJBc3NlbWJs
eSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmNvbXBsZXRlVVJMIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6bG9nRXhjZXB0aW9u
VG9Db25zb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29u
c29sZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjphZGRN
ZXNzYWdlKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmlzUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpp
ZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6
c2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6anNSdW50aW1l
RmxhZ3MgY29uc3QpOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3Jr
bGV0R2xvYmFsU2NvcGUuaWRsOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlLmlkbC4KKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0U2Ny
aXB0Q29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlw
dENvbnRyb2xsZXI6OldvcmtsZXRTY3JpcHRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjp+V29ya2xldFNjcmlwdENvbnRyb2xsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmZvcmJpZEV4ZWN1dGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6aXNFeGVjdXRpb25G
b3JiaWRkZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xs
ZXI6OmRpc2FibGVFdmFsKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRTY3JpcHRDb250cm9s
bGVyOjpkaXNhYmxlV2ViQXNzZW1ibHkpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlw
dENvbnRyb2xsZXI6OmluaXRTY3JpcHRXaXRoU3ViY2xhc3MpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtsZXRTY3JpcHRDb250cm9sbGVyOjpzZXRFeGNlcHRpb24pOgorICAgICAgICAqIHdvcmtsZXRz
L1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V29y
a2xldFNjcmlwdENvbnRyb2xsZXI6OndvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OnZtKToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0SWZOZWVkZWQpOgorCiAyMDE4
LTEwLTI2ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjM3NDU4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRl
eCAxMjliNmM1NDkzMmY5ZTRlODg0NjZkY2Y5MThjYmQ2ZTE3NDY0MmQ1Li5jNmZlMjM1ZTA5YzEz
M2M5OWRlMTMyN2EyODBhYzUzYTEwMjc5NDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTQz
LDYgKzE0Myw3IEBAIHNldChXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJD
T1JFX0RJUn0vd29ya2Vycy9zZXJ2aWNlIgogICAgICIke1dFQkNPUkVfRElSfS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dCIKICAgICAiJHtXRUJDT1JFX0RJUn0vd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ciIKKyAgICAiJHtXRUJDT1JFX0RJUn0vd29ya2xldHMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3ht
bCIKICAgICAiJHtXRUJDT1JFX0RJUn0veG1sL3BhcnNlciIKICAgICAiJHtERVJJVkVEX1NPVVJD
RVNfV0VCQ09SRV9ESVJ9IgpAQCAtNTM3LDcgKzUzOCw2IEBAIHNldChXZWJDb3JlX05PTl9TVkdf
SURMX0ZJTEVTCiAgICAgY3NzL0NTU01lZGlhUnVsZS5pZGwKICAgICBjc3MvQ1NTTmFtZXNwYWNl
UnVsZS5pZGwKICAgICBjc3MvQ1NTUGFpbnRDYWxsYmFjay5pZGwKLSAgICBjc3MvQ1NTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUuaWRsCiAgICAgY3NzL0NTU1BhZ2VSdWxlLmlkbAogICAgIGNzcy9D
U1NSdWxlLmlkbAogICAgIGNzcy9DU1NSdWxlTGlzdC5pZGwKQEAgLTkwNiw2ICs5MDYsMTAgQEAg
c2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICB3b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlclVwZGF0ZVZpYUNhY2hlLmlkbAogICAgIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyV2luZG93Q2xpZW50LmlkbAogCisgICAgd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUuaWRsCisgICAgd29ya2xldHMvV29ya2xldC5pZGwKKyAgICB3b3JrbGV0cy9Xb3JrbGV0R2xv
YmFsU2NvcGUuaWRsCisKICAgICB4bWwvRE9NUGFyc2VyLmlkbAogICAgIHhtbC9YTUxIdHRwUmVx
dWVzdC5pZGwKICAgICB4bWwvWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5pZGwKQEAgLTE2ODQs
NiArMTY4OCw4IEBAIHNldChXSU5ET1dfQ09OU1RSVUNUT1JTX0ZJTEUgJHtERVJJVkVEX1NPVVJD
RVNfV0VCQ09SRV9ESVJ9L0RPTVdpbmRvd0NvbnN0cnVjdG9yCiBzZXQoV09SS0VSR0xPQkFMU0NP
UEVfQ09OU1RSVUNUT1JTX0ZJTEUgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L1dvcmtl
ckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCkKIHNldChERURJQ0FURURXT1JLRVJHTE9CQUxT
Q09QRV9DT05TVFJVQ1RPUlNfRklMRSAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsKQogc2V0KFNFUlZJQ0VXT1JL
RVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSAke0RFUklWRURfU09VUkNFU19XRUJDT1JF
X0RJUn0vU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCkKK3NldChXT1JL
TEVUR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09S
RV9ESVJ9L1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwpCitzZXQoUEFJTlRXT1JL
TEVUR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09S
RV9ESVJ9L1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCkKIAogV0VCS0lU
X0ZSQU1FV09SS19ERUNMQVJFKFdlYkNvcmUpCiBXRUJLSVRfSU5DTFVERV9DT05GSUdfRklMRVNf
SUZfRVhJU1RTKCkKQEAgLTE4NjMsNyArMTg2OSw5IEBAIEdFTkVSQVRFX0JJTkRJTkdTKFdlYkNv
cmVCaW5kaW5ncwogICAgICAgICAtLXdpbmRvd0NvbnN0cnVjdG9yc0ZpbGUgJHtXSU5ET1dfQ09O
U1RSVUNUT1JTX0ZJTEV9CiAgICAgICAgIC0td29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNG
aWxlICR7V09SS0VSR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEV9CiAgICAgICAgIC0tZGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlICR7REVESUNBVEVEV09SS0VS
R0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEV9Ci0gICAgICAgIC0tc2VydmljZVdvcmtlckds
b2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSAke1NFUlZJQ0VXT1JLRVJHTE9CQUxTQ09QRV9DT05T
VFJVQ1RPUlNfRklMRX0pCisgICAgICAgIC0tc2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3JzRmlsZSAke1NFUlZJQ0VXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRX0K
KyAgICAgICAgLS13b3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlICR7V09SS0xFVEdM
T0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFfQorICAgICAgICAtLXBhaW50V29ya2xldEdsb2Jh
bFNjb3BlQ29uc3RydWN0b3JzRmlsZSAke1BBSU5UV09SS0xFVEdMT0JBTFNDT1BFX0NPTlNUUlVD
VE9SU19GSUxFfSkKIAogR0VORVJBVEVfQklORElOR1MoV2ViQ29yZVRlc3RTdXBwb3J0QmluZGlu
Z3MKICAgICBPVVRQVVRfU09VUkNFIFdlYkNvcmVUZXN0U3VwcG9ydF9TT1VSQ0VTCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA2NjM5MGQ0OWZiMzlkNmM0YjJjNDc2MjYwNWQyNjA1
ZmIyYjViMTBkLi44ZTkwMTcxNzAzM2U1YzYyZThhYzgyZTBjN2Y2YTk3NTIwM2VjZjEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTg2LDYgKzg2LDcgQEAgVlBBVEggPSBcCiAg
ICAgJChXZWJDb3JlKS93ZWJzb2NrZXRzIFwKICAgICAkKFdlYkNvcmUpL3dvcmtlcnMgXAogICAg
ICQoV2ViQ29yZSkvd29ya2Vycy9zZXJ2aWNlIFwKKyAgICAkKFdlYkNvcmUpL3dvcmtsZXRzIFwK
ICAgICAkKFdlYkNvcmUpL3htbCBcCiAjCiAKQEAgLTQ1Miw3ICs0NTMsNiBAQCBKU19CSU5ESU5H
X0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9jc3MvQ1NTTmFtZXNwYWNlUnVsZS5pZGwgXAogICAg
ICQoV2ViQ29yZSkvY3NzL0NTU1BhZ2VSdWxlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9jc3MvQ1NT
UGFpbnRDYWxsYmFjay5pZGwgXAotICAgICQoV2ViQ29yZSkvY3NzL0NTU1BhaW50V29ya2xldEds
b2JhbFNjb3BlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9jc3MvQ1NTUnVsZS5pZGwgXAogICAgICQo
V2ViQ29yZSkvY3NzL0NTU1J1bGVMaXN0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9jc3MvQ1NTU3R5
bGVEZWNsYXJhdGlvbi5pZGwgXApAQCAtMTAyNCw2ICsxMDI0LDkgQEAgSlNfQklORElOR19JRExT
ID0gXAogICAgICQoV2ViQ29yZSkvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb24uaWRsIFwKICAgICAkKFdlYkNvcmUpL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
VXBkYXRlVmlhQ2FjaGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyV2luZG93Q2xpZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS93b3JrbGV0cy9QYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5pZGwgXAorICAgICQoV2ViQ29yZSkvd29ya2xldHMvV29ya2xl
dC5pZGwgXAorICAgICQoV2ViQ29yZSkvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmlkbCBc
CiAgICAgJChXZWJDb3JlKS94bWwvRE9NUGFyc2VyLmlkbCBcCiAgICAgJChXZWJDb3JlKS94bWwv
WE1MSHR0cFJlcXVlc3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL3htbC9YTUxIdHRwUmVxdWVzdEV2
ZW50VGFyZ2V0LmlkbCBcCkBAIC0xMTU2LDYgKzExNTksNyBAQCBhbGwgOiBcCiAgICAgJChTVVBQ
TEVNRU5UQUxfREVQRU5ERU5DWV9GSUxFKSBcCiAgICAgJChXSU5ET1dfQ09OU1RSVUNUT1JTX0ZJ
TEUpIFwKICAgICAkKFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFKSBcCisgICAg
JChXT1JLTEVUR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUpIFwKICAgICAkKEpTX0RPTV9I
RUFERVJTKSBcCiAgICAgJChXRUJfRE9NX0hFQURFUlMpIFwKICAgICBcCkBAIC0xNTA0LDYgKzE1
MDgsNyBAQCBJRExfSU5DTFVERVMgPSBcCiAgICAgJChXZWJDb3JlKS9zdmcgXAogICAgICQoV2Vi
Q29yZSkvdGVzdGluZyBcCiAgICAgJChXZWJDb3JlKS93b3JrZXJzIFwKKyAgICAkKFdlYkNvcmUp
L3dvcmtsZXRzIFwKICAgICAkKFdlYkNvcmUpL3htbAogCiBJRExfQ09NTU9OX0FSR1MgPSAkKElE
TF9JTkNMVURFUzolPS0taW5jbHVkZSAlKSAtLXdyaXRlLWRlcGVuZGVuY2llcyAtLW91dHB1dERp
ciAuCkBAIC0xNTE2LDYgKzE1MjEsOCBAQCBXSU5ET1dfQ09OU1RSVUNUT1JTX0ZJTEUgPSAuL0RP
TVdpbmRvd0NvbnN0cnVjdG9ycy5pZGwKIFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19G
SUxFID0gLi9Xb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKIERFRElDQVRFRFdPUktF
UkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFID0gLi9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZUNvbnN0cnVjdG9ycy5pZGwKIFNFUlZJQ0VXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RP
UlNfRklMRSA9IC4vU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbAorV09S
S0xFVEdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFID0gLi9Xb3JrbGV0R2xvYmFsU2NvcGVD
b25zdHJ1Y3RvcnMuaWRsCitQQUlOVFdPUktMRVRHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklM
RSA9IC4vUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCiBJRExfRklMRVNf
VE1QID0gLi9pZGxfZmlsZXMudG1wCiBJRExfQVRUUklCVVRFU19GSUxFID0gJChXZWJDb3JlKS9i
aW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgogCkBAIC0xNTI4LDEwICsxNTM1LDEw
IEBAIGVuZGVmCiAKICQoU1VQUExFTUVOVEFMX01BS0VGSUxFX0RFUFMpIDogJChQUkVQUk9DRVNT
X0lETFNfU0NSSVBUUykgJChKU19CSU5ESU5HX0lETFMpICQoUExBVEZPUk1fRkVBVFVSRV9ERUZJ
TkVTKSBEZXJpdmVkU291cmNlcy5tYWtlCiAJJChmb3JlYWNoIGYsJChKU19CSU5ESU5HX0lETFMp
LEBlY2hvICQoZik+PiQoSURMX0ZJTEVTX1RNUCkkKE5MKSkKLQkkKFBFUkwpICQoV2ViQ29yZSkv
YmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGwgLS1kZWZpbmVzICIkKEZFQVRVUkVf
QU5EX1BMQVRGT1JNX0RFRklORVMpICQoQURESVRJT05BTF9JRExfREVGSU5FUykgTEFOR1VBR0Vf
SkFWQVNDUklQVCIgLS1pZGxGaWxlc0xpc3QgJChJRExfRklMRVNfVE1QKSAtLXN1cHBsZW1lbnRh
bERlcGVuZGVuY3lGaWxlICQoU1VQUExFTUVOVEFMX0RFUEVOREVOQ1lfRklMRSkgLS13aW5kb3dD
b25zdHJ1Y3RvcnNGaWxlICQoV0lORE9XX0NPTlNUUlVDVE9SU19GSUxFKSAtLXdvcmtlckdsb2Jh
bFNjb3BlQ29uc3RydWN0b3JzRmlsZSAkKFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19G
SUxFKSAtLWRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSAkKERFRElD
QVRFRFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFKSAtLXNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgJChTRVJWSUNFV09SS0VSR0xPQkFMU0NPUEVfQ09O
U1RSVUNUT1JTX0ZJTEUpIC0tc3VwcGxlbWVudGFsTWFrZWZpbGVEZXBzICRACisJJChQRVJMKSAk
KFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsIC0tZGVmaW5lcyAi
JChGRUFUVVJFX0FORF9QTEFURk9STV9ERUZJTkVTKSAkKEFERElUSU9OQUxfSURMX0RFRklORVMp
IExBTkdVQUdFX0pBVkFTQ1JJUFQiIC0taWRsRmlsZXNMaXN0ICQoSURMX0ZJTEVTX1RNUCkgLS1z
dXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZSAkKFNVUFBMRU1FTlRBTF9ERVBFTkRFTkNZX0ZJTEUp
IC0td2luZG93Q29uc3RydWN0b3JzRmlsZSAkKFdJTkRPV19DT05TVFJVQ1RPUlNfRklMRSkgLS13
b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgJChXT1JLRVJHTE9CQUxTQ09QRV9DT05T
VFJVQ1RPUlNfRklMRSkgLS1kZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0Zp
bGUgJChERURJQ0FURURXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSkgLS1zZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlICQoU0VSVklDRVdPUktFUkdMT0JB
TFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFKSAtLXdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9y
c0ZpbGUgJChXT1JLTEVUR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUpIC0tcGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlICQoUEFJTlRXT1JLTEVUR0xPQkFMU0NPUEVf
Q09OU1RSVUNUT1JTX0ZJTEUpIC0tc3VwcGxlbWVudGFsTWFrZWZpbGVEZXBzICRACiAJJChERUxF
VEUpICQoSURMX0ZJTEVTX1RNUCkKIAotSlMlLmNwcCBKUyUuaCA6ICUuaWRsICQoSlNfQklORElO
R1NfU0NSSVBUUykgJChJRExfQVRUUklCVVRFU19GSUxFKSAkKFdJTkRPV19DT05TVFJVQ1RPUlNf
RklMRSkgJChXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSkgJChQTEFURk9STV9G
RUFUVVJFX0RFRklORVMpCitKUyUuY3BwIEpTJS5oIDogJS5pZGwgJChKU19CSU5ESU5HU19TQ1JJ
UFRTKSAkKElETF9BVFRSSUJVVEVTX0ZJTEUpICQoV0lORE9XX0NPTlNUUlVDVE9SU19GSUxFKSAk
KFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFKSAkKFdPUktMRVRHTE9CQUxTQ09Q
RV9DT05TVFJVQ1RPUlNfRklMRSkgJChQTEFURk9STV9GRUFUVVJFX0RFRklORVMpCiAJJChQRVJM
KSAkKFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGwgJChJRExf
Q09NTU9OX0FSR1MpIC0tZGVmaW5lcyAiJChGRUFUVVJFX0FORF9QTEFURk9STV9ERUZJTkVTKSAk
KEFERElUSU9OQUxfSURMX0RFRklORVMpIExBTkdVQUdFX0pBVkFTQ1JJUFQiIC0tZ2VuZXJhdG9y
IEpTIC0taWRsQXR0cmlidXRlc0ZpbGUgJChJRExfQVRUUklCVVRFU19GSUxFKSAtLXN1cHBsZW1l
bnRhbERlcGVuZGVuY3lGaWxlICQoU1VQUExFTUVOVEFMX0RFUEVOREVOQ1lfRklMRSkgJDwKIAog
LWluY2x1ZGUgJChTVVBQTEVNRU5UQUxfTUFLRUZJTEVfREVQUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXgg
YWViNjYyZWIyZjAwZTBjMmJkY2ViNWM3YWExZmU1NDBiMGMxYmI3Yy4uMTE4ZjU5MzYxN2Y5MWI4
ZTg1NGVlODc0MTlmMjIxNzYzYTYzMjEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTM4NSw3ICszODUs
NiBAQCBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRTdHJpbmdzLmNwcAogYmluZGluZ3MvanMvSlNE
T01Db252ZXJ0V2ViR0wuY3BwCiBiaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmNwcAogYmluZGlu
Z3MvanMvSlNEZXByZWNhdGVkQ1NTT01WYWx1ZUN1c3RvbS5jcHAKLWJpbmRpbmdzL2pzL0pTQ1NT
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwCiBiaW5kaW5ncy9qcy9KU0NhbGxiYWNr
RGF0YS5jcHAKIGJpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNw
cAogYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcApAQCAtNDQ2LDYgKzQ0
NSw3IEBAIGJpbmRpbmdzL2pzL0pTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcAogYmluZGluZ3MvanMv
SlNOb2RlTGlzdEN1c3RvbS5jcHAKIGJpbmRpbmdzL2pzL0pTT2Zmc2NyZWVuQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQ3VzdG9tLmNwcAogYmluZGluZ3MvanMvSlNQYWludFJlbmRlcmluZ0NvbnRl
eHQyREN1c3RvbS5jcHAKK2JpbmRpbmdzL2pzL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0
b20uY3BwCiBiaW5kaW5ncy9qcy9KU1BheW1lbnRNZXRob2RDaGFuZ2VFdmVudEN1c3RvbS5jcHAK
IGJpbmRpbmdzL2pzL0pTUGF5bWVudFJlc3BvbnNlQ3VzdG9tLmNwcAogYmluZGluZ3MvanMvSlNQ
ZXJmb3JtYW5jZUVudHJ5Q3VzdG9tLmNwcApAQCAtNDc4LDYgKzQ3OCw3IEBAIGJpbmRpbmdzL2pz
L0pTV2luZG93UHJveHkuY3BwCiBiaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5j
cHAKIGJpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwCiBiaW5kaW5ncy9q
cy9KU1dvcmtlck5hdmlnYXRvckN1c3RvbS5jcHAKK2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2Jh
bFNjb3BlQmFzZS5jcHAKIGJpbmRpbmdzL2pzL0pTWE1MRG9jdW1lbnRDdXN0b20uY3BwCiBiaW5k
aW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAogYmluZGluZ3MvanMvSlNYUGF0aE5T
UmVzb2x2ZXJDdXN0b20uY3BwCkBAIC02MTMsNyArNjE0LDYgQEAgY3NzL0NTU05hbWVkSW1hZ2VW
YWx1ZS5jcHAKIGNzcy9DU1NOYW1lc3BhY2VSdWxlLmNwcAogY3NzL0NTU1BhZ2VSdWxlLmNwcAog
Y3NzL0NTU1BhaW50SW1hZ2VWYWx1ZS5jcHAKLWNzcy9DU1NQYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5jcHAKIGNzcy9DU1NQZW5kaW5nU3Vic3RpdHV0aW9uVmFsdWUuY3BwCiBjc3MvQ1NTUHJpbWl0
aXZlVmFsdWUuY3BwCiBjc3MvQ1NTUHJvcGVydHkuY3BwCkBAIC0yMzcxLDYgKzIzNzEsMTIgQEAg
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKIHdvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAogd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKIAord29ya2xldHMvV29ya2xldC5jcHAK
K3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcAord29ya2xldHMvV29ya2xldEdsb2Jh
bFNjb3BlLmNwcAord29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCit3b3JrbGV0
cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKKwogeG1sL0RPTVBhcnNlci5jcHAKIHhtbC9O
YXRpdmVYUGF0aE5TUmVzb2x2ZXIuY3BwCiB4bWwvWE1MRXJyb3JzLmNwcApAQCAtMjQ4MCw3ICsy
NDg2LDkgQEAgSlNDU1NLZXlmcmFtZXNSdWxlLmNwcAogSlNDU1NNZWRpYVJ1bGUuY3BwCiBKU0NT
U05hbWVzcGFjZVJ1bGUuY3BwCiBKU0NTU1BhaW50Q2FsbGJhY2suY3BwCi1KU0NTU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlLmNwcAorSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKK0pTV29y
a2xldC5jcHAKK0pTV29ya2xldEdsb2JhbFNjb3BlLmNwcAogSlNDU1NQYWdlUnVsZS5jcHAKIEpT
Q1NTUnVsZS5jcHAKIEpTQ1NTUnVsZUxpc3QuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmMyZDcxZWZjNzcxNTdkZGUzZDM0
NGYyYWZlNDc5NjczNjE0NmE4My4uYWJiMDQyZThjNDE4MzA5ZGNkZjhhZGIxM2YxODc4Yzg5Yzdi
YTQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTM1MiwxNCArMTM1MiwxOSBAQAogCQk0QjM0ODA5NDBFRUY1MEQ0MDBBQzFC
NDEgLyogSW1hZ2VTb3VyY2VDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEIzNDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0cuaCAq
LzsgfTsKIAkJNEI1QkREOUIyMTY1OEExNTAwREQ0MjYyIC8qIENTU1BhaW50Q2FsbGJhY2suaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCNUJERDlBMjE2
NThBMTUwMERENDI2MiAvKiBDU1NQYWludENhbGxiYWNrLmggKi87IH07CiAJCTRCNkI1Q0JEMjE2
NDBFRkYwMDYwMzgxNyAvKiBET01DU1NQYWludFdvcmtsZXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCNkI1Q0I4MjE2M0VDMDcwMDYwMzgxNyAvKiBE
T01DU1NQYWludFdvcmtsZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwotCQk0QjZCNUNDMDIxNjQzODY0MDA2MDM4MTcgLyogQ1NTUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDRCNkI1Q0JGMjE2NDM4NjQwMDYwMzgxNyAvKiBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5oICovOyB9OworCQk0QjZCNUNDMDIxNjQzODY0MDA2MDM4MTcgLyogUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRCNkI1Q0JGMjE2NDM4NjQwMDYwMzgxNyAvKiBQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oICov
OyB9OwogCQk0QjZFODc2OTIxNzZENjkyMDA0MjBFNUUgLyogQ1NTUGFpbnRJbWFnZVZhbHVlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjZFODc2ODIx
NzZENjkyMDA0MjBFNUUgLyogQ1NTUGFpbnRJbWFnZVZhbHVlLmggKi87IH07CiAJCTRCNkZBNkY0
MEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCNkZBNkYyMEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFy
dFJlcGxhY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0QjdBRTQ5MzIxNzdCNTZGMDBDNTk5NTkgLyogQ3VzdG9tUGFpbnRJbWFnZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI3QUU0OTIyMTc3QjU2
RjAwQzU5OTU5IC8qIEN1c3RvbVBhaW50SW1hZ2UuaCAqLzsgfTsKKwkJNEI3RjlDNTIyMTgzQjVF
NTAwMUNFQkEwIC8qIFdvcmtsZXRDb25zb2xlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjdGOUM1MTIxODNCNUU1MDAxQ0VCQTAgLyogV29y
a2xldENvbnNvbGVDbGllbnQuaCAqLzsgfTsKIAkJNEJBRTk1QjEwQjJGQTlDRTAwQUVEOEEwIC8q
IEVkaXRvckRlbGV0ZUFjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEJBRTk1QjAwQjJGQTlDRTAwQUVEOEEwIC8qIEVkaXRvckRlbGV0ZUFjdGlv
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRC
REEzRkZFMjE1MUI2RjUwMEZENjYwNCAvKiBET01DU1NDdXN0b21Qcm9wZXJ0eURlc2NyaXB0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCREEzRkY4
MjE1MUI2RjIwMEZENjYwNCAvKiBET01DU1NDdXN0b21Qcm9wZXJ0eURlc2NyaXB0b3IuaCAqLzsg
fTsKIAkJNEJEQTNGRkYyMTUxQjZGNTAwRkQ2NjA0IC8qIERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJv
cGVydHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRC
REEzRkY5MjE1MUI2RjMwMEZENjYwNCAvKiBET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5Lmgg
Ki87IH07CiAJCTRCREE0MDAxMjE1MUI2RjUwMEZENjYwNCAvKiBDU1NSZWdpc3RlcmVkQ3VzdG9t
UHJvcGVydHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRCREEzRkZCMjE1MUI2RjQwMEZENjYwNCAvKiBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0QkRF
QTMyMDIxN0VDNTVGMDA1MkRGQ0QgLyogV29ya2xldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJERUEzMUYyMTdFQzU1RjAwNTJERkNEIC8qIFdvcmts
ZXQuaCAqLzsgfTsKKwkJNEJERUEzMjUyMTdGRTJFNDAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxT
Y29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJE
RUEzMjQyMTdGRTJFNDAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxTY29wZS5oICovOyB9OworCQk0
QkRFQTMyODIxODAwM0Y3MDA1MkRGQ0QgLyogV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCREVBMzI3MjE4MDAz
RjcwMDUyREZDRCAvKiBXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oICovOyB9OworCQk0QkRFQTMy
QzIxODAzM0VCMDA1MkRGQ0QgLyogSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QkRFQTMyQjIxODAzM0VCMDA1
MkRGQ0QgLyogSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmggKi87IH07CiAJCTREM0IwMEFCMjE1
RDY5QTcwMDc2Qjk4MyAvKiBNZWRpYVJlY29yZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RDNCMDBBOTIxNUQ2OUE3MDA3NkI5ODMgLyogTWVkaWFS
ZWNvcmRlci5oICovOyB9OwogCQk0RDNCMDBBRjIxNUQ2QTY5MDA3NkI5ODMgLyogQmxvYkV2ZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RDNCMDBB
RDIxNUQ2QTY5MDA3NkI5ODMgLyogQmxvYkV2ZW50LmggKi87IH07CiAJCTREQjcxMzBEMjE2RUNC
NEQwMDk2QTRERCAvKiBNZWRpYVJlY29yZGVyRXJyb3JFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNERCNzEzMEMyMTZFQzJCRDAwOTZBNEREIC8q
IE1lZGlhUmVjb3JkZXJFcnJvckV2ZW50LmggKi87IH07CkBAIC03OTAxLDE2ICs3OTA2LDE4IEBA
CiAJCTRCNkI1Q0I2MjE2M0RDMUEwMDYwMzgxNyAvKiBET01DU1NQYWludFdvcmtsZXQuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IERPTUNTU1BhaW50V29ya2xldC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTRCNkI1Q0I4MjE2M0VDMDcwMDYwMzgxNyAvKiBET01DU1NQYWludFdvcmtsZXQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRE9NQ1NTUGFpbnRXb3JrbGV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTRCNkI1Q0I5MjE2M0VEMzIwMDYwMzgxNyAvKiBET01DU1NQYWludFdvcmtsZXQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRE9NQ1NTUGFpbnRXb3JrbGV0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNEI2QjVDQkUyMTY0MzRGQjAwNjAzODE3IC8qIEpTQ1NTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDU1NQYWludFdv
cmtsZXRHbG9iYWxTY29wZUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTRCNkI1Q0JGMjE2NDM4NjQwMDYwMzgxNyAvKiBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk0QjZCNUNDMTIxNjQzOUNGMDA2MDM4MTcgLyogQ1NTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0QjZCNUNDMzIx
NjQzQThFMDA2MDM4MTcgLyogQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENT
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNEI2QjVDQkUyMTY0MzRGQjAwNjAzODE3IC8qIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZUN1
c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRCNkI1Q0JGMjE2NDM4NjQw
MDYwMzgxNyAvKiBQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QjZC
NUNDMTIxNjQzOUNGMDA2MDM4MTcgLyogUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0QjZCNUNDMzIxNjQzQThFMDA2MDM4MTcgLyogUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI2RTg3NjgyMTc2RDY5MjAwNDIwRTVFIC8qIENTU1Bh
aW50SW1hZ2VWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NQYWludEltYWdlVmFsdWUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI2RTg3NkIyMTc2RDhBMTAwNDIwRTVFIC8qIENT
U1BhaW50SW1hZ2VWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NQYWludEltYWdlVmFs
dWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QjZGQTZGMjBDMzlFNDhDMDAw
ODcwMTEgLyogU21hcnRSZXBsYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNtYXJ0UmVwbGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QjZGQTZGNjBD
MzlFNEExMDAwODcwMTEgLyogU21hcnRSZXBsYWNlQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU21hcnRSZXBsYWNlQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0QjdBRTQ5MjIxNzdCNTZGMDBDNTk5NTkgLyogQ3VzdG9tUGFpbnRJbWFnZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDdXN0b21QYWludEltYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTRCN0FFNDk1MjE3N0I2M0UwMEM1OTk1OSAvKiBDdXN0b21QYWludEltYWdlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEN1c3RvbVBhaW50SW1hZ2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0QjdGOUM1MTIxODNCNUU1MDAxQ0VCQTAgLyogV29ya2xldENvbnNv
bGVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2xldENvbnNvbGVDbGllbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEI3RjlDNTQyMTgzQjYzNDAwMUNFQkEwIC8qIFdvcmts
ZXRDb25zb2xlQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtsZXRDb25zb2xlQ2xp
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEJBRTk1QjAwQjJGQTlDRTAw
QUVEOEEwIC8qIEVkaXRvckRlbGV0ZUFjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBFZGl0b3JEZWxldGVBY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNEJEQTNGRjUyMTUxQjZGMDAwRkQ2NjA0IC8qIERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVy
dHkuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVy
dHkuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QkRBM0ZGNzIxNTFCNkYxMDBG
RDY2MDQgLyogRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc5MTgsNiArNzkyNSwxNiBAQAogCQk0QkRB
M0ZGOTIxNTFCNkYzMDBGRDY2MDQgLyogRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01DU1NSZWdpc3RlckN1c3RvbVByb3Bl
cnR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCREEzRkZBMjE1MUI2RjMwMEZE
NjYwNCAvKiBET01DU1NDdXN0b21Qcm9wZXJ0eURlc2NyaXB0b3IuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IERPTUNTU0N1c3RvbVByb3BlcnR5RGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTRCREEzRkZCMjE1MUI2RjQwMEZENjYwNCAvKiBDU1NSZWdpc3Rl
cmVkQ3VzdG9tUHJvcGVydHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NT
UmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTRCREVBMzFDMjE3RUJDRjUwMDUyREZDRCAvKiBXb3JrbGV0LmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXb3JrbGV0Lmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEJERUEzMUYyMTdFQzU1RjAwNTJERkNE
IC8qIFdvcmtsZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2xldC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0QkRFQTMyMzIxN0VDOTZBMDA1MkRGQ0QgLyogV29ya2xldC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXb3JrbGV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNEJERUEzMjQyMTdGRTJFNDAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxTY29wZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXb3JrbGV0R2xvYmFsU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNEJERUEzMjYyMTdGRTJGQTAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxTY29wZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrbGV0R2xvYmFsU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0QkRFQTMyNzIxODAwM0Y3MDA1MkRGQ0QgLyogV29ya2xldFNjcmlw
dENvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEJERUEzMjkyMTgwMDQwQzAwNTJERkNEIC8q
IFdvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtsZXRT
Y3JpcHRDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEJERUEz
MkEyMTgwMTA3MjAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxTY29wZS5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV29ya2xl
dEdsb2JhbFNjb3BlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEJERUEzMkIy
MTgwMzNFQjAwNTJERkNEIC8qIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNEJERUEzMkQyMTgwMzQwNTAwNTJERkNEIC8qIEpTV29ya2xldEdsb2JhbFNjb3BlQmFz
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RDNCMDBBNDIxNUQ2MTA0MDA3NkI5ODMgLyog
TWVkaWFSZWNvcmRlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTWVkaWFSZWNvcmRlci5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTREM0IwMEE2MjE1RDY0NUIwMDc2Qjk4
MyAvKiBCbG9iRXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEJsb2JFdmVudC5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTREM0IwMEE4MjE1RDY5QTYwMDc2Qjk4MyAv
KiBNZWRpYVJlY29yZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE1lZGlhUmVjb3JkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU4MDEs
NiArMTU4MTgsNyBAQAogCQkJCUIyMjI3N0NBMEQwMEJGMUUwMDcxQjc4MiAvKiBzdmcgKi8sCiAJ
CQkJNDE3REE0Q0QxMzczNDIwNDAwN0M1N0ZCIC8qIHRlc3RpbmcgKi8sCiAJCQkJMkU0MzQ2MzEw
RjU0NkE2ODAwQjBGMUJBIC8qIHdvcmtlcnMgKi8sCisJCQkJNEJERUEzMTgyMTdFQkI4ODAwNTJE
RkNEIC8qIHdvcmtsZXRzICovLAogCQkJCUUxRjA0MjQzMDk4MzkzODkwMDY2OTRFQSAvKiB4bWwg
Ki8sCiAJCQkJNjU2NTgwRUMwOUQxMkIyMDAwMEU2MUQ3IC8qIERlcml2ZWQgU291cmNlcyAqLywK
IAkJCQkwODlDMTY2NUZFODQxMTU4QzAyQUFDMDcgLyogUmVzb3VyY2VzICovLApAQCAtMTgwMzYs
NiArMTgwNTQsMjYgQEAKIAkJCXBhdGggPSBhbmltYXRpb247CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwogCQl9OworCQk0QkRFQTMxODIxN0VCQjg4MDA1MkRGQ0QgLyogd29ya2xldHMgKi8g
PSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTRCNkI1Q0MxMjE2
NDM5Q0YwMDYwMzgxNyAvKiBQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAgKi8sCisJCQkJNEI2
QjVDQkYyMTY0Mzg2NDAwNjAzODE3IC8qIFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmggKi8sCisJ
CQkJNEI2QjVDQzMyMTY0M0E4RTAwNjAzODE3IC8qIFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmlk
bCAqLywKKwkJCQk0QkRFQTMyMzIxN0VDOTZBMDA1MkRGQ0QgLyogV29ya2xldC5jcHAgKi8sCisJ
CQkJNEJERUEzMUYyMTdFQzU1RjAwNTJERkNEIC8qIFdvcmtsZXQuaCAqLywKKwkJCQk0QkRFQTMx
QzIxN0VCQ0Y1MDA1MkRGQ0QgLyogV29ya2xldC5pZGwgKi8sCisJCQkJNEI3RjlDNTQyMTgzQjYz
NDAwMUNFQkEwIC8qIFdvcmtsZXRDb25zb2xlQ2xpZW50LmNwcCAqLywKKwkJCQk0QjdGOUM1MTIx
ODNCNUU1MDAxQ0VCQTAgLyogV29ya2xldENvbnNvbGVDbGllbnQuaCAqLywKKwkJCQk0QkRFQTMy
NjIxN0ZFMkZBMDA1MkRGQ0QgLyogV29ya2xldEdsb2JhbFNjb3BlLmNwcCAqLywKKwkJCQk0QkRF
QTMyNDIxN0ZFMkU0MDA1MkRGQ0QgLyogV29ya2xldEdsb2JhbFNjb3BlLmggKi8sCisJCQkJNEJE
RUEzMkEyMTgwMTA3MjAwNTJERkNEIC8qIFdvcmtsZXRHbG9iYWxTY29wZS5pZGwgKi8sCisJCQkJ
NEJERUEzMjkyMTgwMDQwQzAwNTJERkNEIC8qIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcCAq
LywKKwkJCQk0QkRFQTMyNzIxODAwM0Y3MDA1MkRGQ0QgLyogV29ya2xldFNjcmlwdENvbnRyb2xs
ZXIuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gd29ya2xldHM7CisJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOworCQl9OwogCQk0RDNCMDBBMDIxNUQ1QzBGMDA3NkI5ODMgLyogbWVkaWFyZWNvcmRl
ciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yNDQwOSw2
ICsyNDQ0Nyw4IEBACiAJCQkJQkNCRkI1M0IwRENEMjlDRjAwMTlCM0U1IC8qIEpTV2luZG93UHJv
eHkuaCAqLywKIAkJCQlFMUMzNkQzMjBFQjBBMDk0MDA3NDEwQkMgLyogSlNXb3JrZXJHbG9iYWxT
Y29wZUJhc2UuY3BwICovLAogCQkJCUUxQzM2RDMzMEVCMEEwOTQwMDc0MTBCQyAvKiBKU1dvcmtl
ckdsb2JhbFNjb3BlQmFzZS5oICovLAorCQkJCTRCREVBMzJEMjE4MDM0MDUwMDUyREZDRCAvKiBK
U1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwICovLAorCQkJCTRCREVBMzJCMjE4MDMzRUIwMDUy
REZDRCAvKiBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuaCAqLywKIAkJCQk3MDlBMDFGRDFFM0Qw
QkNDMDA2QjBENEMgLyogTW9kdWxlRmV0Y2hGYWlsdXJlS2luZC5oICovLAogCQkJCTQxQjQ1OUVE
MUY1NUVCQzcwMDAwRjZGRCAvKiBSZWFkYWJsZVN0cmVhbS5jcHAgKi8sCiAJCQkJNDFCNDU5REEx
RjRDQURCOTAwMDBGNkZEIC8qIFJlYWRhYmxlU3RyZWFtLmggKi8sCkBAIC0yNDQ0OSwxMiArMjQ0
ODksMTIgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTdDRDM0NDFCMUYzMkRFMzAwMDBEQ0Q0OSAv
KiBDYWNoZWQgQXR0cmlidXRlcyB3LyBJbnZhbGlkYXRpb24gKi8sCiAJCQkJN0MzRDhFRTQxRTA4
QkFCRTAwMjNCMDg0IC8qIEdDIC8gV3JhcHBpbmcgT25seSAqLywKLQkJCQk0QjZCNUNCRTIxNjQz
NEZCMDA2MDM4MTcgLyogSlNDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZUN1c3RvbS5jcHAgKi8s
CiAJCQkJOUJDNUY5REYxRDVBQUY2QTAwMkI3NDlEIC8qIEpTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5
Q3VzdG9tLmNwcCAqLywKIAkJCQlCQ0Q5QzI1RTBDMTdBQTY3MDA1QzkwQTIgLyogSlNET01XaW5k
b3dDdXN0b20uY3BwICovLAogCQkJCTY1MkZCQkJCMERFMjdDQjYwMDAxRDM4NiAvKiBKU0RPTVdp
bmRvd0N1c3RvbS5oICovLAogCQkJCUJDNTgyM0Y0MEMwQTk4REYwMDUzRjFCNSAvKiBKU0hUTUxF
bGVtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlCQ0UxQzQzRjBEOTgzMEY0MDAzQjAyRjIgLyogSlNM
b2NhdGlvbkN1c3RvbS5jcHAgKi8sCisJCQkJNEI2QjVDQkUyMTY0MzRGQjAwNjAzODE3IC8qIEpT
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwICovLAogCQkJCTQxOEMzOTVEMUM4RjBB
QUIwMDUxQzhBMyAvKiBKU1JlYWRhYmxlU3RyZWFtU291cmNlQ3VzdG9tLmNwcCAqLywKIAkJCQk0
NkJDQkJCRTIwODUwMDVCMDA3MTA2MzggLyogSlNSZW1vdGVET01XaW5kb3dDdXN0b20uY3BwICov
LAogCQkJKTsKQEAgLTI2MDUyLDkgKzI2MDkyLDYgQEAKIAkJCQk0QjVCREQ5OTIxNjU4OEU1MDBE
RDQyNjIgLyogQ1NTUGFpbnRDYWxsYmFjay5pZGwgKi8sCiAJCQkJNEI2RTg3NkIyMTc2RDhBMTAw
NDIwRTVFIC8qIENTU1BhaW50SW1hZ2VWYWx1ZS5jcHAgKi8sCiAJCQkJNEI2RTg3NjgyMTc2RDY5
MjAwNDIwRTVFIC8qIENTU1BhaW50SW1hZ2VWYWx1ZS5oICovLAotCQkJCTRCNkI1Q0MxMjE2NDM5
Q0YwMDYwMzgxNyAvKiBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAgKi8sCi0JCQkJNEI2
QjVDQkYyMTY0Mzg2NDAwNjAzODE3IC8qIENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmggKi8s
Ci0JCQkJNEI2QjVDQzMyMTY0M0E4RTAwNjAzODE3IC8qIENTU1BhaW50V29ya2xldEdsb2JhbFNj
b3BlLmlkbCAqLywKIAkJCQk5NDE4Mjc4QzFEOENBRTk1MDA0OTI3NjQgLyogQ1NTUGVuZGluZ1N1
YnN0aXR1dGlvblZhbHVlLmNwcCAqLywKIAkJCQk5NDE4Mjc4RDFEOENBRTk1MDA0OTI3NjQgLyog
Q1NTUGVuZGluZ1N1YnN0aXR1dGlvblZhbHVlLmggKi8sCiAJCQkJQTgwRTZDREIwQTE5ODlDQTAw
N0ZCOEM1IC8qIENTU1ByaW1pdGl2ZVZhbHVlLmNwcCAqLywKQEAgLTI4MDU1LDcgKzI4MDkyLDYg
QEAKIAkJCQlBODBFNkQwMDBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTUGFnZVJ1bGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTRCNUJERDlCMjE2NThBMTUwMERENDI2MiAvKiBDU1NQYWludENhbGxiYWNr
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0QjZFODc2OTIxNzZENjkyMDA0MjBFNUUgLyogQ1NTUGFp
bnRJbWFnZVZhbHVlLmggaW4gSGVhZGVycyAqLywKLQkJCQk0QjZCNUNDMDIxNjQzODY0MDA2MDM4
MTcgLyogQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk0
NkQzNzJFMUQ2Q0IyOTQwMDc3MDg0RiAvKiBDU1NQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUU0QTc5OTUyMjBFRTRCMTQwMEMxOTU2OCAvKiBDU1NQYXJzZXJDb250ZXh0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5NDlDNzcwMTFENkUxRDk4MDBDMERFNEYgLyogQ1NTUGFyc2VyRmFzdFBhdGhz
LmggaW4gSGVhZGVycyAqLywKQEAgLTI5NzU4LDYgKzI5Nzk0LDcgQEAKIAkJCQlFMUMzNjJFRjBF
QUYyQUE5MDA3NDEwQkMgLyogSlNXb3JrZXJMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTEyNzFBNTgwRUVFQ0RFNDAwRjYxMjEzIC8qIEpTV29ya2VyTmF2aWdhdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MUYxNzUwNjFGMzU4QkY3MDBDNzQ5NTAgLyogSlNXb3JrZXJUeXBlLmggaW4g
SGVhZGVycyAqLywKKwkJCQk0QkRFQTMyQzIxODAzM0VCMDA1MkRGQ0QgLyogSlNXb3JrbGV0R2xv
YmFsU2NvcGVCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzRDOTZERDFBRDQ0ODM1MDAzNjVB
NjAgLyogSlNXcml0YWJsZVN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM1OENCNzAxQzUz
Mjc3NTAwRTBDMkQ4IC8qIEpTWE1MRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMzQ4
QkQ0MERCN0Y4MDQwMDRBQkFCOSAvKiBKU1hNTEh0dHBSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywK
QEAgLTMwMTQ0LDYgKzMwMTgxLDcgQEAKIAkJCQkwODg1MDY3RjExREEwNDVCMDAxODJCOTggLyog
UGFpbnRJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODg1MDY4MDExREEwNDVCMDAxODJCOTgg
LyogUGFpbnRQaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEIxRTEzRUIyMTc5MzdCMzAwNDJD
Rjk4IC8qIFBhaW50UmVuZGVyaW5nQ29udGV4dDJELmggaW4gSGVhZGVycyAqLywKKwkJCQk0QjZC
NUNDMDIxNjQzODY0MDA2MDM4MTcgLyogUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4MEU2Q0ZCMEExOTg5Q0EwMDdGQjhDNSAvKiBQYWlyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRDMxNjBBMzEyQjAyNkY3MDBDMUEzNTkgLyogUGFubmVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRDMxNjAxQTEyQjAyNjc2MDBDMUEzNTkgLyogUGFubmVyTm9kZS5oIGluIEhl
YWRlcnMgKi8sCkBAIC0zMTU2Miw2ICszMTYwMCwxMCBAQAogCQkJCTk3QUFCRDJEMTRGQTA5RDUw
MDc0NTdBRSAvKiBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTU0QTBDNjgxREI4MDdEOTAwMTdBOTBCIC8qIFdvcmtlclRvUGFnZUZyb250ZW5k
Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGMTc0RkUxRjM1ODk5MjAwQzc0OTUwIC8q
IFdvcmtlclR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTRCREVBMzIwMjE3RUM1NUYwMDUyREZD
RCAvKiBXb3JrbGV0LmggaW4gSGVhZGVycyAqLywKKwkJCQk0QjdGOUM1MjIxODNCNUU1MDAxQ0VC
QTAgLyogV29ya2xldENvbnNvbGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTRCREVBMzI1
MjE3RkUyRTQwMDUyREZDRCAvKiBXb3JrbGV0R2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTRCREVBMzI4MjE4MDAzRjcwMDUyREZDRCAvKiBXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMjQwOTlFNjQ5MjAwNTZFNTgxIC8qIFdyYXBDb250
ZW50c0luRHVtbXlTcGFuQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE2RTZGRTkxQkJE
MTJFNTAwMEE2MDUzIC8qIFdyaXRhYmxlU3RyZWFtQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxNkU2RkU4MUJCRDEyREYwMDBBNjA1MyAvKiBXcml0YWJsZVN0cmVhbUludGVybmFsc0J1
aWx0aW5zLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZUN1c3RvbS5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5ZmEzNDVhNWUzOGYzOWYzYzFkZWRjZDUz
YjZmYTM3Mzg1NTEzYjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NQYWludFdvcmtsZXRHbG9iYWxT
Y29wZUN1c3RvbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzMgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJKU0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCi0KLSNpZiBFTkFCTEUo
Q1NTX1BBSU5USU5HX0FQSSkKLQotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiSlND
U1NQYWludENhbGxiYWNrLmgiCi0jaW5jbHVkZSAiSlNET01Db252ZXJ0Q2FsbGJhY2tzLmgiCi0j
aW5jbHVkZSAiSlNET01Db252ZXJ0U2VxdWVuY2VzLmgiCi0jaW5jbHVkZSA8d3RmL1NldEZvclNj
b3BlLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLXN0
YXRpYyBKU1ZhbHVlIHRocm93SW52YWxpZE1vZGlmaWNhdGlvbkVycm9yKEV4ZWNTdGF0ZSYgc3Rh
dGUsIFRocm93U2NvcGUmIHNjb3BlLCBBU0NJSUxpdGVyYWwgbWVzc2FnZSkKLXsKLSAgICBzY29w
ZS5hc3NlcnROb0V4Y2VwdGlvbigpOwotICAgIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUs
IGNyZWF0ZURPTUV4Y2VwdGlvbigmc3RhdGUsIEludmFsaWRNb2RpZmljYXRpb25FcnJvciwgbWVz
c2FnZSkpOwotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCi12b2lkIEpTQ1NTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGU6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKEpTQzo6U2xvdFZpc2l0
b3ImIHZpc2l0b3IpCi17Ci0gICAgZm9yIChhdXRvJiByZWdpc3RlcmVkIDogd3JhcHBlZCgpLnBh
aW50RGVmaW5pdGlvbk1hcCgpLnZhbHVlcygpKQotICAgICAgICByZWdpc3RlcmVkLT5wYWludENh
bGxiYWNrLT52aXNpdEpTRnVuY3Rpb24odmlzaXRvcik7Ci19Ci0KLS8vIGh0dHBzOi8vZHJhZnRz
LmNzcy1ob3VkaW5pLm9yZy9jc3MtcGFpbnQtYXBpLyNyZWdpc3RlcmluZy1jdXN0b20tcGFpbnQK
LUpTVmFsdWUgSlNDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6cmVnaXN0ZXJQYWludChFeGVj
U3RhdGUmIHN0YXRlKQotewotICAgIHVzaW5nIFBhaW50RGVmaW5pdGlvbiA9IENTU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb247Ci0KLSAgICBDU1NQYWludFdvcmtsZXRH
bG9iYWxTY29wZSYgd29ya2xldEdsb2JhbFNjb3BlID0gd3JhcHBlZCgpOwotICAgIFZNJiB2bSA9
IHN0YXRlLnZtKCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwot
Ci0gICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDIpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3IoJnN0YXRlKSk7Ci0KLSAgICBBdG9taWNTdHJpbmcgbmFtZShzdGF0ZS51bmNoZWNr
ZWRBcmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT50b0F0b21pY1N0cmluZygmc3RhdGUpKTsK
LSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwotICAgIEpTVmFsdWUg
Y29uc3RydWN0b3JWYWx1ZSA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpOwotICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7Ci0KLSAgICBpZiAobmFtZS5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCAiVGhlIGZp
cnN0IGFyZ3VtZW50IG11c3Qgbm90IGJlIHRoZSBlbXB0eSBzdHJpbmciX3MpOwotCi0gICAgYXV0
byYgcGFpbnREZWZpbml0aW9uTWFwID0gd29ya2xldEdsb2JhbFNjb3BlLnBhaW50RGVmaW5pdGlv
bk1hcCgpOwotCi0gICAgaWYgKHBhaW50RGVmaW5pdGlvbk1hcC5jb250YWlucyhuYW1lKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93SW52YWxpZE1vZGlmaWNhdGlvbkVycm9yKHN0YXRlLCBzY29wZSwg
IlRoaXMgbmFtZSBoYXMgYWxyZWFkeSBiZWVuIHJlZ2lzdGVyZWQiX3MpOwotCi0gICAgVmVjdG9y
PFN0cmluZz4gaW5wdXRQcm9wZXJ0aWVzOwotCi0gICAgSlNWYWx1ZSBpbnB1dFByb3BlcnRpZXNJ
dGVyYWJsZVZhbHVlID0gY29uc3RydWN0b3JWYWx1ZS5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZ2bSwgImlucHV0UHJvcGVydGllcyIpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwotCi0gICAgaWYgKCFpbnB1dFByb3BlcnRpZXNJdGVyYWJs
ZVZhbHVlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIGlucHV0UHJvcGVydGllcyA9IGNvbnZlcnQ8
SURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj4oc3RhdGUsIGlucHV0UHJvcGVydGllc0l0ZXJhYmxl
VmFsdWUpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7Ci0KLSAg
ICAvLyBGSVhNRTogVmFsaWRhdGUgaW5wdXQgcHJvcGVydGllcyBoZXJlIChzdGVwIDcpLgotCi0g
ICAgVmVjdG9yPFN0cmluZz4gaW5wdXRBcmd1bWVudHM7Ci0KLSAgICBKU1ZhbHVlIGlucHV0QXJn
dW1lbnRzSXRlcmFibGVWYWx1ZSA9IGNvbnN0cnVjdG9yVmFsdWUuZ2V0KCZzdGF0ZSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmdm0sICJpbnB1dEFyZ3VtZW50cyIpKTsKLSAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwotCi0gICAgaWYgKCFpbnB1dEFyZ3VtZW50c0l0
ZXJhYmxlVmFsdWUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgaW5wdXRBcmd1bWVudHMgPSBjb252
ZXJ0PElETFNlcXVlbmNlPElETERPTVN0cmluZz4+KHN0YXRlLCBpbnB1dEFyZ3VtZW50c0l0ZXJh
YmxlVmFsdWUpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7Ci0K
LSAgICAvLyBGSVhNRTogUGFyc2Ugc3ludGF4IGZvciBpbnB1dEFyZ3VtZW50cyBoZXJlIChzdGVw
cyAxMSBhbmQgMTIpLgotCi0gICAgSlNWYWx1ZSBjb250ZXh0T3B0aW9uc1ZhbHVlID0gY29uc3Ry
dWN0b3JWYWx1ZS5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImNvbnRl
eHRPcHRpb25zIikpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7
Ci0gICAgVU5VU0VEX1BBUkFNKGNvbnRleHRPcHRpb25zVmFsdWUpOwotCi0gICAgLy8gRklYTUU6
IENvbnZlcnQgdG8gUGFpbnRSZW5kZXJpbmdDb250ZXh0MkRTZXR0aW5ncyBoZXJlIChzdGVwIDE0
KS4KLQotICAgIGlmICghY29uc3RydWN0b3JWYWx1ZS5pc0NvbnN0cnVjdG9yKHZtKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsICJUaGUgc2Vjb25kIGFyZ3Vt
ZW50IG11c3QgYmUgYSBjb25zdHJ1Y3RvciJfcyk7Ci0KLSAgICBKU1ZhbHVlIHByb3RvdHlwZVZh
bHVlID0gY29uc3RydWN0b3JWYWx1ZS5nZXQoJnN0YXRlLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90
b3R5cGUpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7Ci0KLSAg
ICBpZiAoIXByb3RvdHlwZVZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcigmc3RhdGUsIHNjb3BlLCAiVGhlIHNlY29uZCBhcmd1bWVudCBtdXN0IGhhdmUgYSBw
cm90b3R5cGUgdGhhdCBpcyBhbiBvYmplY3QiX3MpOwotCi0gICAgSlNWYWx1ZSBwYWludFZhbHVl
ID0gcHJvdG90eXBlVmFsdWUuZ2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0s
ICJwYWludCIpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwot
Ci0gICAgaWYgKHBhaW50VmFsdWUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsICJUaGUgY2xhc3MgbXVzdCBoYXZlIGEgcGFpbnQgbWV0
aG9kIl9zKTsKLQotICAgIFJlZlB0cjxKU0NTU1BhaW50Q2FsbGJhY2s+IHBhaW50ID0gY29udmVy
dDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTQ1NTUGFpbnRDYWxsYmFjaz4+KHN0YXRlLCBwYWludFZh
bHVlLCAqZ2xvYmFsT2JqZWN0KCkpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpT
VmFsdWUoKSk7Ci0KLSAgICBhdXRvIHBhaW50RGVmaW5pdGlvbiA9IHN0ZDo6dW5pcXVlX3B0cjxQ
YWludERlZmluaXRpb24+KG5ldyBQYWludERlZmluaXRpb24geyBuYW1lLCBwYWludC5yZWxlYXNl
Tm9uTnVsbCgpLCBpbnB1dFByb3BlcnRpZXMsIGlucHV0QXJndW1lbnRzIH0pOwotICAgIHBhaW50
RGVmaW5pdGlvbk1hcC5hZGQobmFtZSwgV1RGTW92ZShwYWludERlZmluaXRpb24pKTsKLQotICAg
IC8vIEZJWE1FOiBjb25zdHJ1Y3QgZG9jdW1lbnREZWZpbml0aW9uIChzdGVwIDIyKS4KLQotICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCi19Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAppbmRleCBlYmIyZjYxZGRjYzMy
NWEwMWRjNTI0YjJiNTJlYjhiMTE0MTQzMDU4Li43ZGRhMjU4NmVmN2IzNWM3NTZiMWIwMjM5ZjFj
MWY3NjE2ZGUzMTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01H
bG9iYWxPYmplY3QuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiSlNSZWFkYWJsZVN0
cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuaCIKICNpbmNsdWRlICJKU1JlbW90ZURPTVdpbmRvdy5o
IgogI2luY2x1ZGUgIkpTV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJKU1dvcmtsZXRH
bG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIlJlamVjdGVkUHJvbWlzZVRyYWNrZXIuaCIKICNpbmNs
dWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlZENsb25l
LmgiCkBAIC0xOTQsNiArMTk1LDEwIEBAIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIEpTRE9NR2xv
YmFsT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgaWYgKGluaGVyaXRzPEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlPih2bSgp
KSkKICAgICAgICAgcmV0dXJuIGpzQ2FzdDxjb25zdCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZSo+
KHRoaXMpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisjaWYgRU5BQkxFKENTU19QQUlOVElO
R19BUEkpCisgICAgaWYgKGluaGVyaXRzPEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZT4odm0oKSkp
CisgICAgICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlKj4o
dGhpcyktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyNlbmRpZgogICAgIGRhdGFMb2coIlVu
ZXhwZWN0ZWQgZ2xvYmFsIG9iamVjdDogIiwgSlNWYWx1ZSh0aGlzKSwgIlxuIik7CiAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQYWludFdvcmtsZXRHbG9i
YWxTY29wZUN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYThjZWFlNjBiYTcwMjZlYjdlYjJlMmNhOTEw
YjIxZGVmNTM1OWFlZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwCkBAIC0wLDAgKzEsNDIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgorCisjaWYg
RU5BQkxFKENTU19QQUlOVElOR19BUEkpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5h
bWVzcGFjZSBKU0M7CisKK3ZvaWQgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6dmlzaXRBZGRp
dGlvbmFsQ2hpbGRyZW4oSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKHdyYXBwZWQoKS5wYWludERlZmluaXRpb25Mb2NrKCkpOworICAgIGZv
ciAoYXV0byYgcmVnaXN0ZXJlZCA6IHdyYXBwZWQoKS5wYWludERlZmluaXRpb25NYXAoKS52YWx1
ZXMoKSkKKyAgICAgICAgcmVnaXN0ZXJlZC0+cGFpbnRDYWxsYmFjay0+dmlzaXRKU0Z1bmN0aW9u
KHZpc2l0b3IpOworfQorCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiNWE3
NTU2ODJkMTYxNDZhNWI4OTJiOWM3NWU3YTM1NjE2YTdjNjEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwCkBA
IC0wLDAgKzEsMTQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
KgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU1dvcmtsZXRHbG9iYWxT
Y29wZUJhc2UuaCIKKworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorCisjaW5jbHVkZSAi
RE9NV3JhcHBlcldvcmxkLmgiCisjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3RUYXNrLmgiCisj
aW5jbHVkZSAiSlNXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrbGV0R2xvYmFs
U2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U0NKU1ZhbHVlSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK2NvbnN0IENsYXNzSW5mbyBK
U1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnNfaW5mbyA9IHsgIldvcmtsZXRHbG9iYWxTY29wZSIs
ICZKU0RPTUdsb2JhbE9iamVjdDo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZSkgfTsKKworY29uc3QgR2xvYmFsT2Jq
ZWN0TWV0aG9kVGFibGUgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzX2dsb2JhbE9iamVjdE1l
dGhvZFRhYmxlID0geworICAgICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLAorICAgICZzaG91bGRJ
bnRlcnJ1cHRTY3JpcHQsCisgICAgJmphdmFTY3JpcHRSdW50aW1lRmxhZ3MsCisgICAgbnVsbHB0
ciwgLy8gcXVldWVUYXNrVG9FdmVudExvb3AKKyAgICAmc2hvdWxkSW50ZXJydXB0U2NyaXB0QmVm
b3JlVGltZW91dCwKKyAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJJbXBvcnRNb2R1bGUKKyAg
ICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJSZXNvbHZlCisgICAgbnVsbHB0ciwgLy8gbW9kdWxl
TG9hZGVyRmV0Y2gKKyAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRh
UHJvcGVydGllcworICAgIG51bGxwdHIsIC8vIG1vZHVsZUxvYWRlckV2YWx1YXRlCisgICAgJnBy
b21pc2VSZWplY3Rpb25UcmFja2VyLAorICAgICZkZWZhdWx0TGFuZ3VhZ2UsCisgICAgbnVsbHB0
ciwgLy8gY29tcGlsZVN0cmVhbWluZworICAgIG51bGxwdHIsIC8vIGluc3RhbnRpYXRlU3RyZWFt
aW5nCit9OworCitKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OkpTV29ya2xldEdsb2JhbFNjb3Bl
QmFzZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRyPFdvcmts
ZXRHbG9iYWxTY29wZT4mJiBpbXBsKQorICAgIDogSlNET01HbG9iYWxPYmplY3Qodm0sIHN0cnVj
dHVyZSwgbm9ybWFsV29ybGQodm0pLCAmc19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSkKKyAgICAs
IG1fd3JhcHBlZChXVEZNb3ZlKGltcGwpKQoreworfQorCit2b2lkIEpTV29ya2xldEdsb2JhbFNj
b3BlQmFzZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1Byb3h5KiBwcm94eSkKK3sKKyAgICBt
X3Byb3h5LnNldCh2bSwgdGhpcywgcHJveHkpOworCisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
dm0sIG1fcHJveHkuZ2V0KCkpOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7Cit9
CisKK3ZvaWQgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpjbGVhckRPTUd1YXJkZWRPYmplY3Rz
KCkKK3sKKyAgICBhdXRvIGd1YXJkZWRPYmplY3RzID0gbV9ndWFyZGVkT2JqZWN0czsKKyAgICBm
b3IgKGF1dG8mIGd1YXJkZWQgOiBndWFyZGVkT2JqZWN0cykKKyAgICAgICAgZ3VhcmRlZC0+Y2xl
YXIoKTsKK30KKwordm9pZCBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBhdXRvKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZSo+KGNlbGwpOworICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBCYXNlOjp2aXNp
dENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNP
YmplY3QtPm1fcHJveHkpOworfQorCit2b2lkIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6ZGVz
dHJveShKU0NlbGwqIGNlbGwpCit7CisgICAgc3RhdGljX2Nhc3Q8SlNXb3JrbGV0R2xvYmFsU2Nv
cGVCYXNlKj4oY2VsbCktPkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6fkpTV29ya2xldEdsb2Jh
bFNjb3BlQmFzZSgpOworfQorCitTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBKU1dvcmtsZXRHbG9i
YWxTY29wZUJhc2U6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAoreworICAgIHJldHVy
biBtX3dyYXBwZWQuZ2V0KCk7Cit9CisKK2Jvb2wgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpz
dXBwb3J0c1JpY2hTb3VyY2VJbmZvKGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvYmplY3QpCit7Cisg
ICAgcmV0dXJuIEpTR2xvYmFsT2JqZWN0OjpzdXBwb3J0c1JpY2hTb3VyY2VJbmZvKG9iamVjdCk7
Cit9CisKK2Jvb2wgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzaG91bGRJbnRlcnJ1cHRTY3Jp
cHQoY29uc3QgSlNHbG9iYWxPYmplY3QqIG9iamVjdCkKK3sKKyAgICByZXR1cm4gSlNHbG9iYWxP
YmplY3Q6OnNob3VsZEludGVycnVwdFNjcmlwdChvYmplY3QpOworfQorCitib29sIEpTV29ya2xl
dEdsb2JhbFNjb3BlQmFzZTo6c2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dChjb25z
dCBKU0dsb2JhbE9iamVjdCogb2JqZWN0KQoreworICAgIHJldHVybiBKU0dsb2JhbE9iamVjdDo6
c2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dChvYmplY3QpOworfQorCitSdW50aW1l
RmxhZ3MgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpqYXZhU2NyaXB0UnVudGltZUZsYWdzKGNv
bnN0IEpTR2xvYmFsT2JqZWN0KiBvYmplY3QpCit7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpz
Q2FzdDxjb25zdCBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UqPihvYmplY3QpOworICAgIHJldHVy
biB0aGlzT2JqZWN0LT5tX3dyYXBwZWQtPmpzUnVudGltZUZsYWdzKCk7Cit9CisKK0pTVmFsdWUg
dG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiwgV29ya2xldEdsb2JhbFNj
b3BlJiB3b3JrbGV0R2xvYmFsU2NvcGUpCit7CisgICAgcmV0dXJuIHRvSlMoZXhlYywgd29ya2xl
dEdsb2JhbFNjb3BlKTsKK30KKworSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSosIFdvcmtsZXRHbG9i
YWxTY29wZSYgd29ya2xldEdsb2JhbFNjb3BlKQoreworICAgIGF1dG8qIGNvbnRleHRXcmFwcGVy
ID0gd29ya2xldEdsb2JhbFNjb3BlLnNjcmlwdCgpLndvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIo
KTsKKyAgICBBU1NFUlQoY29udGV4dFdyYXBwZXIpOworICAgIHJldHVybiBjb250ZXh0V3JhcHBl
ci0+cHJveHkoKTsKK30KKworSlNXb3JrbGV0R2xvYmFsU2NvcGUqIHRvSlNXb3JrbGV0R2xvYmFs
U2NvcGUoVk0mIHZtLCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGlmICghdmFsdWUuaXNPYmplY3Qo
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0byogY2xhc3NJbmZvID0gYXNPYmpl
Y3QodmFsdWUpLT5jbGFzc0luZm8odm0pOworCisgICAgaWYgKGNsYXNzSW5mbyA9PSBKU1Byb3h5
OjppbmZvKCkpCisgICAgICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTV29ya2xldEdsb2JhbFNj
b3BlKj4odm0sIGpzQ2FzdDxKU1Byb3h5Kj4oYXNPYmplY3QodmFsdWUpKS0+dGFyZ2V0KCkpOwor
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFs
U2NvcGVCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxT
Y29wZUJhc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMzJkY2FhNGE3Mjk3N2Y3ZTIyNDI0ODRlNjExMWI4ZjEx
OTVkMDIxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
b3JrbGV0R2xvYmFsU2NvcGVCYXNlLmgKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShDU1NfUEFJTlRJTkdfQVBJKQorCisjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIK
KyNpbmNsdWRlICJKU0RPTVdyYXBwZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBKU1dvcmtsZXRHbG9iYWxTY29wZTsKK2NsYXNzIFdvcmtsZXRHbG9iYWxTY29wZTsKKworY2xh
c3MgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlIDogcHVibGljIEpTRE9NR2xvYmFsT2JqZWN0IHsK
KyAgICB1c2luZyBCYXNlID0gSlNET01HbG9iYWxPYmplY3Q7CitwdWJsaWM6CisgICAgc3RhdGlj
IHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAg
V29ya2xldEdsb2JhbFNjb3BlJiB3cmFwcGVkKCkgY29uc3QgeyByZXR1cm4gKm1fd3JhcHBlZDsg
fQorICAgIEpTQzo6SlNQcm94eSogcHJveHkoKSBjb25zdCB7IEFTU0VSVChtX3Byb3h5KTsgcmV0
dXJuIG1fcHJveHkuZ2V0KCk7IH0KKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CisKKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEpTQzo6
U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJ
bmZvKEpTQzo6R2xvYmFsT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAg
IH0KKworICAgIHN0YXRpYyBjb25zdCBKU0M6Okdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIHNfZ2xv
YmFsT2JqZWN0TWV0aG9kVGFibGU7CisKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c1JpY2hTb3Vy
Y2VJbmZvKGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgYm9vbCBzaG91
bGRJbnRlcnJ1cHRTY3JpcHQoY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHN0YXRp
YyBib29sIHNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQoY29uc3QgSlNDOjpKU0ds
b2JhbE9iamVjdCopOworICAgIHN0YXRpYyBKU0M6OlJ1bnRpbWVGbGFncyBqYXZhU2NyaXB0UnVu
dGltZUZsYWdzKGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgdm9pZCBx
dWV1ZVRhc2tUb0V2ZW50TG9vcChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgUmVmPEpTQzo6TWljcm90
YXNrPiYmKTsKKworICAgIHZvaWQgY2xlYXJET01HdWFyZGVkT2JqZWN0cygpOworCitwcm90ZWN0
ZWQ6CisgICAgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlKEpTQzo6Vk0mLCBKU0M6OlN0cnVjdHVy
ZSosIFJlZlB0cjxXb3JrbGV0R2xvYmFsU2NvcGU+JiYpOworICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oSlNDOjpWTSYsIEpTQzo6SlNQcm94eSopOworCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGls
ZHJlbihKU0M6OkpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKTsKKworcHJpdmF0ZToKKyAgICBS
ZWZQdHI8V29ya2xldEdsb2JhbFNjb3BlPiBtX3dyYXBwZWQ7CisgICAgSlNDOjpXcml0ZUJhcnJp
ZXI8SlNDOjpKU1Byb3h5PiBtX3Byb3h5OworfTsKKworLy8gUmV0dXJucyBhIEpTV29ya2xldEds
b2JhbFNjb3BlIG9yIGpzTnVsbCgpCisvLyBBbHdheXMgaWdub3JlcyB0aGUgZXhlY1N0YXRlIGFu
ZCBwYXNzZWQgZ2xvYmFsT2JqZWN0LCBXb3JrbGV0R2xvYmFsU2NvcGUgaXMgaXRzZWxmIGEgZ2xv
YmFsT2JqZWN0IGFuZCB3aWxsIGFsd2F5cyB1c2UgaXRzIG93biBwcm90b3R5cGUgY2hhaW4uCitK
U0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgV29y
a2xldEdsb2JhbFNjb3BlJik7CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFdvcmtsZXRHbG9iYWxT
Y29wZSogc2NvcGUpIHsgcmV0dXJuIHNjb3BlID8gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsICpz
Y29wZSkgOiBKU0M6OmpzTnVsbCgpOyB9CitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0
ZSosIFdvcmtsZXRHbG9iYWxTY29wZSYpOworaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBXb3JrbGV0R2xvYmFsU2NvcGUqIHNjb3BlKSB7IHJldHVybiBzY29w
ZSA/IHRvSlMoZXhlYywgKnNjb3BlKSA6IEpTQzo6anNOdWxsKCk7IH0KKworSlNXb3JrbGV0R2xv
YmFsU2NvcGUqIHRvSlNXb3JrbGV0R2xvYmFsU2NvcGUoSlNDOjpWTSYsIEpTQzo6SlNWYWx1ZSk7
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDU1NfUEFJTlRJ
TkdfQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3Rh
dGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwCmluZGV4
IGVlZTgzOWNjNDI2NGZiZTRhMjlkZmI5OTFiNWZkZTUwZDYwYmFiMWMuLjM3YjBjZGVjYTY1MzU5
OWU5OWJiNmE5MDI2M2U4MmMxNTQ5MWQxNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRTdGF0ZS5jcHAKQEAgLTM1LDExICszNSwxNCBAQAogI2luY2x1ZGUgIkZyYW1lLmgi
CiAjaW5jbHVkZSAiSlNET01XaW5kb3dCYXNlLmgiCiAjaW5jbHVkZSAiSlNXb3JrZXJHbG9iYWxT
Y29wZS5oIgorI2luY2x1ZGUgIkpTV29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiTm9k
ZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJTY3JpcHRDb250
cm9sbGVyLmgiCisjaW5jbHVkZSAiV29ya2xldEdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29y
a2xldFNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9DYWxsRnJh
bWUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0dsb2JhbE9iamVjdC5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KQEAgLTk1LDkgKzk4LDE2IEBAIEpT
Qzo6RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tUGFnZShET01XcmFwcGVyV29ybGQmIHdvcmxkLCBQ
YWdlKiBwYWdlKQogICAgIHJldHVybiBwYWdlID8gcGFnZS0+bWFpbkZyYW1lKCkuc2NyaXB0KCku
Z2xvYmFsT2JqZWN0KHdvcmxkKS0+Z2xvYmFsRXhlYygpIDogbnVsbHB0cjsKIH0KIAotSlNDOjpF
eGVjU3RhdGUqIGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZShXb3JrZXJHbG9iYWxTY29w
ZSogd29ya2VyR2xvYmFsU2NvcGUpCitKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbVdvcmtl
ckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKIHsKLSAg
ICByZXR1cm4gd29ya2VyR2xvYmFsU2NvcGUtPnNjcmlwdCgpLT53b3JrZXJHbG9iYWxTY29wZVdy
YXBwZXIoKS0+Z2xvYmFsRXhlYygpOworICAgIHJldHVybiB3b3JrZXJHbG9iYWxTY29wZS5zY3Jp
cHQoKS0+d29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKCktPmdsb2JhbEV4ZWMoKTsKIH0KIAorI2lm
IEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZUZyb21X
b3JrbGV0R2xvYmFsU2NvcGUoV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrbGV0R2xvYmFsU2NvcGUp
Cit7CisgICAgcmV0dXJuIHdvcmtsZXRHbG9iYWxTY29wZS5zY3JpcHQoKS53b3JrbGV0R2xvYmFs
U2NvcGVXcmFwcGVyKCktPmdsb2JhbEV4ZWMoKTsKK30KKyNlbmRpZgorCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaAppbmRleCA3NDQyMWZkOTViYTE3NzU2ZWI4OWMw
MDQyNmMzM2ZiNTQ1NDk4MzkwLi4xNTM4NGE3MTFmMzU2Y2VlNDc4Y2E5OWUyNTU1YjFlZWEyNDgy
YWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgKQEAgLTQ0LDYg
KzQ0LDkgQEAgY2xhc3MgTm9kZTsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CisjaWYgRU5BQkxFKENTU19QQUlOVElO
R19BUEkpCitjbGFzcyBXb3JrbGV0R2xvYmFsU2NvcGU7CisjZW5kaWYKIAogRE9NV2luZG93KiBk
b21XaW5kb3dGcm9tRXhlY1N0YXRlKEpTQzo6RXhlY1N0YXRlKik7CiBGcmFtZSogZnJhbWVGcm9t
RXhlY1N0YXRlKEpTQzo6RXhlY1N0YXRlKik7CkBAIC01Myw2ICs1Niw5IEBAIEpTQzo6RXhlY1N0
YXRlKiBtYWluV29ybGRFeGVjU3RhdGUoRnJhbWUqKTsKIAogSlNDOjpFeGVjU3RhdGUqIGV4ZWNT
dGF0ZUZyb21Ob2RlKERPTVdyYXBwZXJXb3JsZCYsIE5vZGUqKTsKIFdFQkNPUkVfRVhQT1JUIEpT
Qzo6RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tUGFnZShET01XcmFwcGVyV29ybGQmLCBQYWdlKik7
Ci1KU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3BlKFdvcmtlckds
b2JhbFNjb3BlKik7CitKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNj
b3BlKFdvcmtlckdsb2JhbFNjb3BlJik7CisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCitK
U0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbVdvcmtsZXRHbG9iYWxTY29wZShXb3JrbGV0R2xv
YmFsU2NvcGUmKTsKKyNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKaW5kZXggMWM5Mzg1
OWVjYzE2ODc0YzBjMDdlMzczYjI5NzNjNDI1MDVkZWE4MC4uMjkyZmQ5NzkyNDQ5ZDM3N2QyNzVj
MjgyNGJlMTUyZGNhNmZkNjkxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1dlYkNvcmVCdWlsdGluTmFtZXMuaApAQCAtNTEsNyArNTEsNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgbWFjcm8oQ3JlZGVudGlhbCkgXAogICAgIG1hY3JvKENyZWRlbnRpYWxzQ29udGFp
bmVyKSBcCiAgICAgbWFjcm8oQ1NTQW5pbWF0aW9uKSBcCi0gICAgbWFjcm8oQ1NTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUpIFwKICAgICBtYWNybyhDU1NUcmFuc2l0aW9uKSBcCiAgICAgbWFjcm8o
Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5KSBcCiAgICAgbWFjcm8oRGF0YWJhc2UpIFwKQEAgLTEyMyw2
ICsxMjIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oU1FMUmVzdWx0U2V0KSBc
CiAgICAgbWFjcm8oU1FMUmVzdWx0U2V0Um93TGlzdCkgXAogICAgIG1hY3JvKFNRTFRyYW5zYWN0
aW9uKSBcCisgICAgbWFjcm8oUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUpIFwKICAgICBtYWNybyhQ
ZXJmb3JtYW5jZUVudHJ5KSBcCiAgICAgbWFjcm8oUGVyZm9ybWFuY2VFbnRyeUxpc3QpIFwKICAg
ICBtYWNybyhQZXJmb3JtYW5jZU1hcmspIFwKQEAgLTIxMCw2ICsyMTAsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgbWFjcm8oV2ViS2l0TWVkaWFLZXlzKSBcCiAgICAgbWFjcm8oV2ViU29j
a2V0KSBcCiAgICAgbWFjcm8oV2luZG93Q2xpZW50KSBcCisgICAgbWFjcm8oV29ya2xldCkgXAor
ICAgIG1hY3JvKFdvcmtsZXRHbG9iYWxTY29wZSkgXAogICAgIG1hY3JvKFdyaXRhYmxlU3RyZWFt
KSBcCiAgICAgbWFjcm8oWE1MSHR0cFJlcXVlc3QpIFwKICAgICBtYWNybyhhcHBlbmRGcm9tSlMp
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0KaW5kZXggNDhmY2U3YmMxNmE4ODBkNjNmNDMyYTAxOGYxZmVlMmY2N2JmNWJkYy4uNjMx
YzM5NDRlY2QyN2U1MmE3ZDUyMzJhYjY2MGMwZDY5ZDdmYjVkYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTQ5Nyw3ICs0
OTcsNyBAQCBzdWIgR2V0Q3VzdG9tSXNSZWFjaGFibGUKIHN1YiBJc0RPTUdsb2JhbE9iamVjdAog
ewogICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKLSAgICByZXR1cm4gJGludGVyZmFjZS0+dHlw
ZS0+bmFtZSBlcSAiRE9NV2luZG93IiB8fCAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIGVxICJSZW1v
dGVET01XaW5kb3ciIHx8ICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJm
YWNlLCAiV29ya2VyR2xvYmFsU2NvcGUiKSB8fCAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIGVxICJU
ZXN0R2xvYmFsT2JqZWN0IjsKKyAgICByZXR1cm4gJGludGVyZmFjZS0+dHlwZS0+bmFtZSBlcSAi
RE9NV2luZG93IiB8fCAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIGVxICJSZW1vdGVET01XaW5kb3ci
IHx8ICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiV29ya2Vy
R2xvYmFsU2NvcGUiKSB8fCAkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVy
ZmFjZSwgIldvcmtsZXRHbG9iYWxTY29wZSIpIHx8ICRpbnRlcmZhY2UtPnR5cGUtPm5hbWUgZXEg
IlRlc3RHbG9iYWxPYmplY3QiOwogfQogCiBzdWIgU2hvdWxkVXNlR2xvYmFsT2JqZWN0UHJvdG90
eXBlCkBAIC01MDYsNiArNTA2LDggQEAgc3ViIFNob3VsZFVzZUdsb2JhbE9iamVjdFByb3RvdHlw
ZQogCiAgICAgIyBGb3Igd29ya2VycywgdGhlIGdsb2JhbCBvYmplY3QgaXMgYSBEZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZS4KICAgICByZXR1cm4gMCBpZiAkaW50ZXJmYWNlLT50eXBlLT5uYW1l
IGVxICJXb3JrZXJHbG9iYWxTY29wZSI7CisgICAgIyBGb3Igd29ya2xldHMsIHRoZSBnbG9iYWwg
b2JqZWN0IGlzIGEgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuCisgICAgcmV0dXJuIDAgaWYgJGlu
dGVyZmFjZS0+dHlwZS0+bmFtZSBlcSAiV29ya2xldEdsb2JhbFNjb3BlIjsKIAogICAgIHJldHVy
biBJc0RPTUdsb2JhbE9iamVjdCgkaW50ZXJmYWNlKTsKIH0KQEAgLTI1MzcsNyArMjUzOSw3IEBA
IHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAg
ICBwdHItPmZpbmlzaENyZWF0aW9uKHZtLCBwcm94eSk7XG4iKTsKICAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHB0cjtcbiIpOwogICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiICAgIH1cblxuIik7Ci0gICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPklu
aGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrZXJHbG9iYWxTY29wZSIpKSB7CisgICAg
fSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJX
b3JrZXJHbG9iYWxTY29wZSIpIHx8ICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgk
aW50ZXJmYWNlLCAiV29ya2xldEdsb2JhbFNjb3BlIikpIHsKICAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiAgICBzdGF0aWMgJGNsYXNzTmFtZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6
OlN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWY8JGltcGxUeXBlPiYmIGltcGwsIEpTQzo6SlNQcm94
eSogcHJveHkpXG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB7XG4iKTsK
ICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgJGNsYXNzTmFtZSogcHRyID0g
bmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDwkY2xhc3NOYW1lPih2bS5oZWFwKSkgJHtj
bGFzc05hbWV9KHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUoaW1wbCkpO1xuIik7CkBAIC0yODQ1LDcg
KzI4NDcsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAjIENvbnN0cnVjdG9yCiAgICAgaWYg
KCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciIHx8ICRpbnRlcmZhY2VOYW1lIGVxICJSZW1v
dGVET01XaW5kb3ciKSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgJGNsYXNz
TmFtZShKU0M6OlZNJiwgSlNDOjpTdHJ1Y3R1cmUqLCBSZWY8JGltcGxUeXBlPiYmLCBKU1dpbmRv
d1Byb3h5Kik7XG4iKTsKLSAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRl
cmZhY2UoJGludGVyZmFjZSwgIldvcmtlckdsb2JhbFNjb3BlIikpIHsKKyAgICB9IGVsc2lmICgk
Y29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldvcmtlckdsb2Jh
bFNjb3BlIikgfHwgJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2Us
ICJXb3JrbGV0R2xvYmFsU2NvcGUiKSkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
ICAgICRjbGFzc05hbWUoSlNDOjpWTSYsIEpTQzo6U3RydWN0dXJlKiwgUmVmPCRpbXBsVHlwZT4m
Jik7XG4iKTsKICAgICB9IGVsc2lmICghTmVlZHNJbXBsZW1lbnRhdGlvbkNsYXNzKCRpbnRlcmZh
Y2UpKSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgJGNsYXNzTmFtZShKU0M6
OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Jik7XG5cbiIpOwpAQCAtMjg1NSw3ICsyODU3
LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAKICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRP
TVdpbmRvdyIgfHwgJGludGVyZmFjZU5hbWUgZXEgIlJlbW90ZURPTVdpbmRvdyIpIHsKICAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0m
LCBKU1dpbmRvd1Byb3h5Kik7XG4iKTsKLSAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SW5o
ZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldvcmtlckdsb2JhbFNjb3BlIikpIHsKKyAgICB9
IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldv
cmtlckdsb2JhbFNjb3BlIikgfHwgJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRp
bnRlcmZhY2UsICJXb3JrbGV0R2xvYmFsU2NvcGUiKSkgewogICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYsIEpTQzo6SlNQcm94eSop
O1xuIik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTtcbiIpOwpAQCAtMzY2Miw2ICszNjY0LDggQEAg
c3ViIEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nRm9yRXhwb3NlZAogICAg
ICAgICBwdXNoKEAkY29uanVuY3RzLCAianNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oIiAuICRn
bG9iYWxPYmplY3RQdHIgLiAiKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0RvY3VtZW50
KCkiKTsKICAgICB9IGVsc2lmICgkZXhwb3NlZCBlcSAiV29ya2VyIikgewogICAgICAgICBwdXNo
KEAkY29uanVuY3RzLCAianNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oIiAuICRnbG9iYWxPYmpl
Y3RQdHIgLiAiKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1dvcmtlckdsb2JhbFNjb3Bl
KCkiKTsKKyAgICB9IGVsc2lmICgkZXhwb3NlZCBlcSAiV29ya2xldCIpIHsKKyAgICAgICAgcHVz
aChAJGNvbmp1bmN0cywgImpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCIgLiAkZ2xvYmFsT2Jq
ZWN0UHRyIC4gIiktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNXb3JrbGV0R2xvYmFsU2Nv
cGUoKSIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGFzc2VydCgiVW5yZWNvZ25pemVkIHZhbHVl
ICciIC4gRHVtcGVyKCRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFeHBvc2VkfSkgLiAi
JyBmb3IgdGhlIEV4cG9zZWQgZXh0ZW5kZWQgYXR0cmlidXRlIG9uICciIC4gcmVmKCRjb250ZXh0
KSAuICInLiIpOwogICAgIH0KQEAgLTQyNTIsNyArNDI1Niw3IEBAIHN1YiBHZW5lcmF0ZUltcGxl
bWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIDogJHBhcmVudENsYXNz
TmFtZSh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKGltcGwpLCBwcm94eSlcbiIpOwogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1c
blxuIik7Ci0gICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRp
bnRlcmZhY2UsICJXb3JrZXJHbG9iYWxTY29wZSIpKSB7CisgICAgfSBlbHNpZiAoJGNvZGVHZW5l
cmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrZXJHbG9iYWxTY29wZSIp
IHx8ICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiV29ya2xl
dEdsb2JhbFNjb3BlIikpIHsKICAgICAgICAgQWRkSW5jbHVkZXNGb3JJbXBsZW1lbnRhdGlvblR5
cGVJbkltcGwoJGludGVyZmFjZU5hbWUpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiR7
Y2xhc3NOYW1lfTo6JGNsYXNzTmFtZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWY8
JGltcGxUeXBlPiYmIGltcGwpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
OiAkcGFyZW50Q2xhc3NOYW1lKHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUoaW1wbCkpXG4iKTsKQEAg
LTQyNzMsNyArNDI3Nyw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFtZX06OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgSlNXaW5kb3dQcm94eSogcHJveHkpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJ7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0sIHByb3h5KTtcblxuIik7Ci0gICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPklu
aGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrZXJHbG9iYWxTY29wZSIpKSB7CisgICAg
fSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJX
b3JrZXJHbG9iYWxTY29wZSIpIHx8ICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgk
aW50ZXJmYWNlLCAiV29ya2xldEdsb2JhbFNjb3BlIikpIHsKICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJ2b2lkICR7Y2xhc3NOYW1lfTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1Byb3h5
KiBwcm94eSlcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgcHJveHkp
O1xuXG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJl
cHJvY2Vzcy1pZGxzLnBsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9j
ZXNzLWlkbHMucGwKaW5kZXggM2UwNWM3YjQ5NjgyYmVlNjRmNjg5OGI0ZGY0NDg0MjUxMzQzOGI1
MS4uNDZjZDNiOGY5Y2E5YzExYWE1MWZiZDlmYTg3NjBmYTdiMGZkOTMzNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGwKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGwKQEAgLTM2
LDYgKzM2LDggQEAgbXkgJHdpbmRvd0NvbnN0cnVjdG9yc0ZpbGU7CiBteSAkd29ya2VyR2xvYmFs
U2NvcGVDb25zdHJ1Y3RvcnNGaWxlOwogbXkgJGRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29u
c3RydWN0b3JzRmlsZTsKIG15ICRzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNG
aWxlOworbXkgJHdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGU7CitteSAkcGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlOwogbXkgJHN1cHBsZW1lbnRhbE1ha2Vm
aWxlRGVwczsKIAogR2V0T3B0aW9ucygnZGVmaW5lcz1zJyA9PiBcJGRlZmluZXMsCkBAIC00Niw2
ICs0OCw4IEBAIEdldE9wdGlvbnMoJ2RlZmluZXM9cycgPT4gXCRkZWZpbmVzLAogICAgICAgICAg
ICAnd29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlPXMnID0+IFwkd29ya2VyR2xvYmFs
U2NvcGVDb25zdHJ1Y3RvcnNGaWxlLAogICAgICAgICAgICAnZGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGVDb25zdHJ1Y3RvcnNGaWxlPXMnID0+IFwkZGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVD
b25zdHJ1Y3RvcnNGaWxlLAogICAgICAgICAgICAnc2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29u
c3RydWN0b3JzRmlsZT1zJyA9PiBcJHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9y
c0ZpbGUsCisgICAgICAgICAgICd3b3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlPXMn
ID0+IFwkd29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSwKKyAgICAgICAgICAgJ3Bh
aW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZT1zJyA9PiBcJHBhaW50V29ya2xl
dEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSwKICAgICAgICAgICAgJ3N1cHBsZW1lbnRhbE1h
a2VmaWxlRGVwcz1zJyA9PiBcJHN1cHBsZW1lbnRhbE1ha2VmaWxlRGVwcyk7CiAKIGRpZSgnTXVz
dCBzcGVjaWZ5ICNkZWZpbmUgbWFjcm9zIHVzaW5nIC0tZGVmaW5lcy4nKSB1bmxlc3MgZGVmaW5l
ZCgkZGVmaW5lcyk7CkBAIC01NCw2ICs1OCw4IEBAIGRpZSgnTXVzdCBzcGVjaWZ5IGFuIG91dHB1
dCBmaWxlIHVzaW5nIC0td2luZG93Q29uc3RydWN0b3JzRmlsZS4nKSB1bmxlc3MgZGVmaW5lCiBk
aWUoJ011c3Qgc3BlY2lmeSBhbiBvdXRwdXQgZmlsZSB1c2luZyAtLXdvcmtlckdsb2JhbFNjb3Bl
Q29uc3RydWN0b3JzRmlsZS4nKSB1bmxlc3MgZGVmaW5lZCgkd29ya2VyR2xvYmFsU2NvcGVDb25z
dHJ1Y3RvcnNGaWxlKTsKIGRpZSgnTXVzdCBzcGVjaWZ5IGFuIG91dHB1dCBmaWxlIHVzaW5nIC0t
ZGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlLicpIHVubGVzcyBkZWZp
bmVkKCRkZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOwogZGllKCdN
dXN0IHNwZWNpZnkgYW4gb3V0cHV0IGZpbGUgdXNpbmcgLS1zZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGVDb25zdHJ1Y3RvcnNGaWxlLicpIHVubGVzcyBkZWZpbmVkKCRzZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGVDb25zdHJ1Y3RvcnNGaWxlKTsKK2RpZSgnTXVzdCBzcGVjaWZ5IGFuIG91dHB1dCBmaWxl
IHVzaW5nIC0td29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZS4nKSB1bmxlc3MgZGVm
aW5lZCgkd29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSk7CitkaWUoJ011c3Qgc3Bl
Y2lmeSBhbiBvdXRwdXQgZmlsZSB1c2luZyAtLXBhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3JzRmlsZS4nKSB1bmxlc3MgZGVmaW5lZCgkcGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25z
dHJ1Y3RvcnNGaWxlKTsKIGRpZSgnTXVzdCBzcGVjaWZ5IHRoZSBmaWxlIGxpc3RpbmcgYWxsIElE
THMgdXNpbmcgLS1pZGxGaWxlc0xpc3QuJykgdW5sZXNzIGRlZmluZWQoJGlkbEZpbGVzTGlzdCk7
CiAKICRzdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZSA9IEN5Z3dpblBhdGhJZk5lZWRlZCgkc3Vw
cGxlbWVudGFsRGVwZW5kZW5jeUZpbGUpOwpAQCAtNjEsNiArNjcsOCBAQCAkd2luZG93Q29uc3Ry
dWN0b3JzRmlsZSA9IEN5Z3dpblBhdGhJZk5lZWRlZCgkd2luZG93Q29uc3RydWN0b3JzRmlsZSk7
CiAkd29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlID0gQ3lnd2luUGF0aElmTmVlZGVk
KCR3b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOwogJGRlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSA9IEN5Z3dpblBhdGhJZk5lZWRlZCgkZGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlKTsKICRzZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGVDb25zdHJ1Y3RvcnNGaWxlID0gQ3lnd2luUGF0aElmTmVlZGVkKCRzZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlKTsKKyR3b3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1
Y3RvcnNGaWxlID0gQ3lnd2luUGF0aElmTmVlZGVkKCR3b3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1
Y3RvcnNGaWxlKTsKKyRwYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgPSBD
eWd3aW5QYXRoSWZOZWVkZWQoJHBhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmls
ZSk7CiAkc3VwcGxlbWVudGFsTWFrZWZpbGVEZXBzID0gQ3lnd2luUGF0aElmTmVlZGVkKCRzdXBw
bGVtZW50YWxNYWtlZmlsZURlcHMpOwogCiBvcGVuIEZILCAiPCAkaWRsRmlsZXNMaXN0IiBvciBk
aWUgIkNhbm5vdCBvcGVuICRpZGxGaWxlc0xpc3RcbiI7CkBAIC04MCw2ICs4OCw4IEBAIG15ICR3
aW5kb3dDb25zdHJ1Y3RvcnNDb2RlID0gIiI7CiBteSAkd29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1
Y3RvcnNDb2RlID0gIiI7CiBteSAkZGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rv
cnNDb2RlID0gIiI7CiBteSAkc2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzQ29k
ZSA9ICIiOworbXkgJHdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0NvZGUgPSAiIjsKK215
ICRwYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0NvZGUgPSAiIjsKIAogIyBHZXQg
cmlkIG9mIGR1cGxpY2F0ZXMgaW4gaWRsRmlsZXMgYXJyYXkuCiBteSAlaWRsRmlsZUhhc2ggPSBt
YXAgeyAkXywgMSB9IEBpZGxGaWxlczsKQEAgLTE0Myw2ICsxNTMsMTAgQEAgZm9yZWFjaCBteSAk
aWRsRmlsZSAoc29ydCBrZXlzICVpZGxGaWxlSGFzaCkgewogICAgICAgICAgICAgICAgICAgICAk
ZGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNDb2RlIC49ICRhdHRyaWJ1dGVD
b2RlOwogICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRnbG9iYWxDb250ZXh0IGVxICJTZXJ2aWNl
V29ya2VyIikgewogICAgICAgICAgICAgICAgICAgICAkc2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
Q29uc3RydWN0b3JzQ29kZSAuPSAkYXR0cmlidXRlQ29kZTsKKyAgICAgICAgICAgICAgICB9IGVs
c2lmICgkZ2xvYmFsQ29udGV4dCBlcSAiV29ya2xldCIpIHsKKyAgICAgICAgICAgICAgICAgICAg
JHdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0NvZGUgLj0gJGF0dHJpYnV0ZUNvZGU7Cisg
ICAgICAgICAgICAgICAgfSBlbHNpZiAoJGdsb2JhbENvbnRleHQgZXEgIlBhaW50V29ya2xldCIp
IHsKKyAgICAgICAgICAgICAgICAgICAgJHBhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0
b3JzQ29kZSAuPSAkYXR0cmlidXRlQ29kZTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgICAgICBkaWUgIlVuc3VwcG9ydGVkIGdsb2JhbCBjb250ZXh0ICckZ2xvYmFs
Q29udGV4dCcgdXNlZCBpbiBbRXhwb3NlZF0gYXQgJGlkbEZpbGUiOwogICAgICAgICAgICAgICAg
IH0KQEAgLTE1Nyw2ICsxNzEsOCBAQCBHZW5lcmF0ZVBhcnRpYWxJbnRlcmZhY2UoIkRPTVdpbmRv
dyIsICR3aW5kb3dDb25zdHJ1Y3RvcnNDb2RlLCAkd2luZG93Q29uc3RydWN0bwogR2VuZXJhdGVQ
YXJ0aWFsSW50ZXJmYWNlKCJXb3JrZXJHbG9iYWxTY29wZSIsICR3b3JrZXJHbG9iYWxTY29wZUNv
bnN0cnVjdG9yc0NvZGUsICR3b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOwogR2Vu
ZXJhdGVQYXJ0aWFsSW50ZXJmYWNlKCJEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSIsICRkZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0NvZGUsICRkZWRpY2F0ZWRXb3JrZXJH
bG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOwogR2VuZXJhdGVQYXJ0aWFsSW50ZXJmYWNlKCJT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUiLCAkc2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3JzQ29kZSwgJHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOwor
R2VuZXJhdGVQYXJ0aWFsSW50ZXJmYWNlKCJXb3JrbGV0R2xvYmFsU2NvcGUiLCAkd29ya2xldEds
b2JhbFNjb3BlQ29uc3RydWN0b3JzQ29kZSwgJHdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9y
c0ZpbGUpOworR2VuZXJhdGVQYXJ0aWFsSW50ZXJmYWNlKCJQYWludFdvcmtsZXRHbG9iYWxTY29w
ZSIsICRwYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0NvZGUsICRwYWludFdvcmts
ZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOwogCiAjIFJlc29sdmVzIHBhcnRpYWwgaW50
ZXJmYWNlcyBhbmQgaW1wbGVtZW50cyBkZXBlbmRlbmNpZXMuCiBmb3JlYWNoIG15ICRpZGxGaWxl
IChzb3J0IGtleXMgJXN1cHBsZW1lbnRhbERlcGVuZGVuY2llcykgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50SW1hZ2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmNwcAppbmRleCBhNjkwZTQxZDc2NzFkZWEwMzUzMjFmYWZl
N2I3ZmE5NzExYWJkYTUyLi43MzFmMzFkZDRlOGJkNWNkMDQyNWNiYmZiZjQ2MjNiNzEwYjE4NGRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmNwcApAQCAtMjksOCAr
MjksOCBAQAogCiAjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCiAKLSNpbmNsdWRlICJDU1NQ
YWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIkN1c3RvbVBhaW50SW1hZ2UuaCIK
KyNpbmNsdWRlICJQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIlJlbmRlckVs
ZW1lbnQuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAgLTUwLDgg
KzUwLDExIEBAIFJlZlB0cjxJbWFnZT4gQ1NTUGFpbnRJbWFnZVZhbHVlOjppbWFnZShSZW5kZXJF
bGVtZW50JiByZW5kZXJFbGVtZW50LCBjb25zdCBGbG9hCiB7CiAgICAgaWYgKHNpemUuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvJiBzZWxlY3RlZEdsb2JhbFNj
b3BlID0gcmVuZGVyRWxlbWVudC5kb2N1bWVudCgpLmVuc3VyZUNTU1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlKCk7Ci0gICAgYXV0byogcmVnaXN0cmF0aW9uID0gc2VsZWN0ZWRHbG9iYWxTY29wZS5w
YWludERlZmluaXRpb25NYXAoKS5nZXQobV9uYW1lKTsKKyAgICBhdXRvKiBzZWxlY3RlZEdsb2Jh
bFNjb3BlID0gcmVuZGVyRWxlbWVudC5kb2N1bWVudCgpLnBhaW50V29ya2xldEdsb2JhbFNjb3Bl
KCk7CisgICAgaWYgKCFzZWxlY3RlZEdsb2JhbFNjb3BlKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHNlbGVjdGVkR2xvYmFsU2NvcGUtPnBhaW50
RGVmaW5pdGlvbkxvY2soKSk7CisgICAgYXV0byogcmVnaXN0cmF0aW9uID0gc2VsZWN0ZWRHbG9i
YWxTY29wZS0+cGFpbnREZWZpbml0aW9uTWFwKCkuZ2V0KG1fbmFtZSk7CiAKICAgICBpZiAoIXJl
Z2lzdHJhdGlvbikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZWQ5NzNjZDM4ZDY4ZTQzY2M1Mjg1YzU4MTA0YjI1ZGRiNmUxMGMyOC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
NTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJDU1NQYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5oIgotCi0jaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotUmVmPENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlPiBDU1NQYWludFdvcmtsZXRHbG9i
YWxTY29wZTo6Y3JlYXRlKCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NQYWludFdv
cmtsZXRHbG9iYWxTY29wZSgpKTsKLX0KLQotQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OkNT
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlKCkKLXsKLX0KLQotZG91YmxlIENTU1BhaW50V29ya2xl
dEdsb2JhbFNjb3BlOjpkZXZpY2VQaXhlbFJhdGlvKCkKLXsKLSAgICByZXR1cm4gMS4wOwotfQot
Ci1FeGNlcHRpb25Pcjx2b2lkPiBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6YWRkUmVnaXN0
ZXJlZFBhaW50KCkKLXsKLSAgICByZXR1cm4geyB9OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjNiMGQ5ZDhmM2YwMjM3
ZTI3OTJmY2VmN2U0NzdmZTU4YzYyYTMwOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShD
U1NfUEFJTlRJTkdfQVBJKQotCi0jaW5jbHVkZSAiQ1NTUGFpbnRDYWxsYmFjay5oIgotI2luY2x1
ZGUgIkV4Y2VwdGlvbk9yLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIEpT
QyB7Ci0KLWNsYXNzIEpTVmFsdWU7Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlIDogcHVibGljIFJl
ZkNvdW50ZWQ8Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+IHsKLXB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlPiBjcmVhdGUoKTsKLQotICAgIEV4Y2Vw
dGlvbk9yPHZvaWQ+IGFkZFJlZ2lzdGVyZWRQYWludCgpOwotICAgIGRvdWJsZSBkZXZpY2VQaXhl
bFJhdGlvKCk7Ci0KLSAgICBzdHJ1Y3QgUGFpbnREZWZpbml0aW9uIHsKLSAgICAgICAgY29uc3Qg
QXRvbWljU3RyaW5nIG5hbWU7Ci0gICAgICAgIGNvbnN0IFJlZjxDU1NQYWludENhbGxiYWNrPiBw
YWludENhbGxiYWNrOwotICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiBpbnB1dFByb3BlcnRp
ZXM7Ci0gICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+IGlucHV0QXJndW1lbnRzOwotICAgIH07
Ci0KLSAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFBhaW50RGVmaW5pdGlvbj4+
JiBwYWludERlZmluaXRpb25NYXAoKSB7IHJldHVybiBtX3BhaW50RGVmaW5pdGlvbk1hcDsgfQot
Ci1wcml2YXRlOgotICAgIENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlKCk7Ci0KLSAgICBIYXNo
TWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFBhaW50RGVmaW5pdGlvbj4+IG1fcGFpbnREZWZp
bml0aW9uTWFwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaWRsIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmlkbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTUzNmMwYTQxMzk1YzBhMWEwODRmYTFmN2ViNWE2YzJi
YTcyYTYxZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaWRsCisrKyAvZGV2
L251bGwKQEAgLTEsMzUgKzAsMCBAQAotLyoKLSogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSoKLSogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0qIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotKiBh
cmUgbWV0OgotKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0qIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0qICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSoKLSogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0qIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0qIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0qIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0qLwotCi1bCi0gICAgRW5h
YmxlZEF0UnVudGltZT1DU1NQYWludGluZ0FQSSwKLSAgICBDb25kaXRpb25hbD1DU1NfUEFJTlRJ
TkdfQVBJLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAgSlNDdXN0b21NYXJr
RnVuY3Rpb24sCi0gICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0Ci1dIGludGVyZmFjZSBDU1NQ
YWludFdvcmtsZXRHbG9iYWxTY29wZSB7Ci0gICAgW0N1c3RvbSwgTWF5VGhyb3dFeGNlcHRpb25d
IHZvaWQgcmVnaXN0ZXJQYWludChET01TdHJpbmcgbmFtZSwgRnVuY3Rpb24gcGFpbnRDdG9yKTsK
LSAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBkZXZpY2VQaXhlbFJh
dGlvOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmts
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5jcHAKaW5kZXgg
MTIwNjgxYjhkNzYxMzQ2ZGE3MmFjYzVhMGIyMjY5ZTE0MDczNTg5Yi4uNjVhMmZkZjhkZmFjYjRk
N2Y3MWQ3NjFjYjIxNjZiMWE5Mjg0YzA3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0RPTUNTU1BhaW50V29ya2xldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1Bh
aW50V29ya2xldC5jcHAKQEAgLTI4LDE2ICsyOCwxNyBAQAogCiAjaWYgRU5BQkxFKENTU19QQUlO
VElOR19BUEkpCiAKLSNpbmNsdWRlICJDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgogI2lu
Y2x1ZGUgIkRPTUNTU05hbWVzcGFjZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVk
ZSAiV29ya2xldC5oIgorCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUmIERPTUNTU1BhaW50
V29ya2xldDo6ZW5zdXJlUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoRG9jdW1lbnQmIGRvY3VtZW50
KQorV29ya2xldCYgRE9NQ1NTUGFpbnRXb3JrbGV0OjplbnN1cmVQYWludFdvcmtsZXQoRG9jdW1l
bnQmIGRvY3VtZW50KQogewotICAgIHJldHVybiBkb2N1bWVudC5lbnN1cmVDU1NQYWludFdvcmts
ZXRHbG9iYWxTY29wZSgpOworICAgIHJldHVybiBkb2N1bWVudC5lbnN1cmVQYWludFdvcmtsZXQo
KTsKIH0KIAogRE9NQ1NTUGFpbnRXb3JrbGV0KiBET01DU1NQYWludFdvcmtsZXQ6OmZyb20oRE9N
Q1NTTmFtZXNwYWNlJiBjc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NT
UGFpbnRXb3JrbGV0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmgK
aW5kZXggZWU1ZWZiMTFkMTliYjYyZjM4ZTU2ZTEwZTVkNjE2M2NjOWQ4ZmIzZi4uYTJjYjM3M2Y2
YTAzNDEzZDEyMWI0MDE0MzRiZmQ5ZWY5OWE5NzZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01D
U1NQYWludFdvcmtsZXQuaApAQCAtMzUsMTQgKzM1LDE0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU7Citj
bGFzcyBXb3JrbGV0OwogY2xhc3MgRE9NQ1NTTmFtZXNwYWNlOwogCiBjbGFzcyBET01DU1NQYWlu
dFdvcmtsZXQgZmluYWwgOiBwdWJsaWMgU3VwcGxlbWVudDxET01DU1NOYW1lc3BhY2U+IHsKIHB1
YmxpYzoKICAgICBleHBsaWNpdCBET01DU1NQYWludFdvcmtsZXQoRE9NQ1NTTmFtZXNwYWNlJikg
eyB9CiAKLSAgICBzdGF0aWMgQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUmIGVuc3VyZVBhaW50
V29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50Jik7CisgICAgc3RhdGljIFdvcmtsZXQmIGVuc3Vy
ZVBhaW50V29ya2xldChEb2N1bWVudCYpOwogCiBwcml2YXRlOgogICAgIHN0YXRpYyBET01DU1NQ
YWludFdvcmtsZXQqIGZyb20oRE9NQ1NTTmFtZXNwYWNlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9E
T01DU1NQYWludFdvcmtsZXQuaWRsCmluZGV4IDE5MGNkYjQ1ZWM3NTNkZWJiZTk2ZjhkODMzODEz
ZjQ0NjM1YWU4YzMuLmFhNTllNWVlMmRlOTE4MWQzMDQ3ZmUzNDgwNGZlNTI3YTI2Zjc0MTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuaWRsCkBAIC0yNyw2ICsyNyw1
IEBACiAgICAgRW5hYmxlZEF0UnVudGltZT1DU1NQYWludGluZ0FQSSwKICAgICBDb25kaXRpb25h
bD1DU1NfUEFJTlRJTkdfQVBJLAogXSBwYXJ0aWFsIGludGVyZmFjZSBET01DU1NOYW1lc3BhY2Ug
ewotICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5vdCBhY3R1YWxseSBwYXJ0IG9mIHRoZSBzcGVjLCBh
bmQgc2hvdWxkIGJlIHJlcGxhY2VkIHdoZW4gd29ya2xldHMgYXJlIGltcGxlbWVudGVkCi0gICAg
W0ltcGxlbWVudGVkQXM9ZW5zdXJlUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUsQ2FsbFdpdGg9RG9j
dW1lbnRdIHN0YXRpYyByZWFkb25seSBhdHRyaWJ1dGUgQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUgcGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU7CisgICAgW0ltcGxlbWVudGVkQXM9ZW5zdXJlUGFp
bnRXb3JrbGV0LENhbGxXaXRoPURvY3VtZW50XSBzdGF0aWMgcmVhZG9ubHkgYXR0cmlidXRlIFdv
cmtsZXQgcGFpbnRXb3JrbGV0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDdiNDgw
OGJlNmEzODY3NTEwMDgwYzBiYTQwMmMxNzFmMWU1ODAzMDguLjNkOTUwZmZkMzRhZmE2YmI3YmIy
MjY3NTdmNTVmZGE4NDc0OWU1NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMzUsNyAr
MzUsNiBAQAogI2luY2x1ZGUgIkNEQVRBU2VjdGlvbi5oIgogI2luY2x1ZGUgIkNTU0FuaW1hdGlv
bkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJDU1NGb250U2VsZWN0b3IuaCIKLSNpbmNsdWRlICJD
U1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIkNTU1N0eWxlRGVjbGFyYXRp
b24uaCIKICNpbmNsdWRlICJDU1NTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiQ2FjaGVkQ1NTU3R5
bGVTaGVldC5oIgpAQCAtMTQwLDYgKzEzOSw3IEBACiAjaW5jbHVkZSAiUGFnZUNvbnNvbGVDbGll
bnQuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJQYWdlVHJhbnNpdGlvbkV2
ZW50LmgiCisjaW5jbHVkZSAiUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybUxvY2FsZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCkBAIC0yMTcsNiArMjE3LDcgQEAKICNpbmNs
dWRlICJXZWJBbmltYXRpb24uaCIKICNpbmNsdWRlICJXaGVlbEV2ZW50LmgiCiAjaW5jbHVkZSAi
V2luZG93RmVhdHVyZXMuaCIKKyNpbmNsdWRlICJXb3JrbGV0LmgiCiAjaW5jbHVkZSAiWE1MRG9j
dW1lbnQuaCIKICNpbmNsdWRlICJYTUxEb2N1bWVudFBhcnNlci5oIgogI2luY2x1ZGUgIlhNTE5T
TmFtZXMuaCIKQEAgLTgzNzcsMTEgKzgzNzgsMTYgQEAgdm9pZCBEb2N1bWVudDo6ZnJhbWVXYXNE
aXNjb25uZWN0ZWRGcm9tT3duZXIoKQogfQogCiAjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkp
Ci1DU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSYgRG9jdW1lbnQ6OmVuc3VyZUNTU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlKCkKK1dvcmtsZXQmIERvY3VtZW50OjplbnN1cmVQYWludFdvcmtsZXQo
KQogewotICAgIGlmICghbV9DU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSkKLSAgICAgICAgbV9D
U1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSA9IENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlOjpj
cmVhdGUoKTsKLSAgICByZXR1cm4gKm1fQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU7CisgICAg
aWYgKCFtX3BhaW50V29ya2xldCkKKyAgICAgICAgbV9wYWludFdvcmtsZXQgPSBXb3JrbGV0Ojpj
cmVhdGUoKTsKKyAgICByZXR1cm4gKm1fcGFpbnRXb3JrbGV0OworfQorCit2b2lkIERvY3VtZW50
OjpzZXRQYWludFdvcmtsZXRHbG9iYWxTY29wZShSZWY8UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+
JiYgc2NvcGUpCit7CisgICAgbV9wYWludFdvcmtsZXRHbG9iYWxTY29wZSA9IFdURk1vdmUoc2Nv
cGUpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggODU0MmMxNTU2NzE3ZjI3
YjYwODkwN2QyZDE0ZWUxNGNkYTI0OGZkOC4uNmRkZjE0NWVkYTViYWI2NTdjZmY5OGViYmMwZjcw
OTM5NGU5MTA5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTg4LDcgKzg4LDYgQEAgY2xhc3Mg
QXR0cjsKIGNsYXNzIENEQVRBU2VjdGlvbjsKIGNsYXNzIENTU0N1c3RvbVByb3BlcnR5VmFsdWU7
CiBjbGFzcyBDU1NGb250U2VsZWN0b3I7Ci1jbGFzcyBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29w
ZTsKIGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb247CiBjbGFzcyBDU1NTdHlsZVNoZWV0OwogY2xh
c3MgQ2FjaGVkQ1NTU3R5bGVTaGVldDsKQEAgLTE1NCw2ICsxNTMsNyBAQCBjbGFzcyBNb3VzZUV2
ZW50V2l0aEhpdFRlc3RSZXN1bHRzOwogY2xhc3MgTm9kZUZpbHRlcjsKIGNsYXNzIE5vZGVJdGVy
YXRvcjsKIGNsYXNzIFBhZ2U7CitjbGFzcyBQYWludFdvcmtsZXRHbG9iYWxTY29wZTsKIGNsYXNz
IFBsYXRmb3JtTW91c2VFdmVudDsKIGNsYXNzIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjsKIGNsYXNz
IFF1YWxpZmllZE5hbWU7CkBAIC0xOTQsNiArMTk0LDcgQEAgY2xhc3MgV2ViR0xSZW5kZXJpbmdD
b250ZXh0OwogY2xhc3MgV2ViR1BVUmVuZGVyaW5nQ29udGV4dDsKIGNsYXNzIFdlYk1ldGFsUmVu
ZGVyaW5nQ29udGV4dDsKIGNsYXNzIFdpbmRvd1Byb3h5OworY2xhc3MgV29ya2xldDsKIGNsYXNz
IFhQYXRoRXZhbHVhdG9yOwogY2xhc3MgWFBhdGhFeHByZXNzaW9uOwogY2xhc3MgWFBhdGhOU1Jl
c29sdmVyOwpAQCAtMTM1MCw2ICsxMzUxLDEwIEBAIHB1YmxpYzoKICAgICAvLyBDYWxsZXJzIHNo
b3VsZCB0cnkgdG8gY3JlYXRlIHRoZSBDb25zb2xlTWVzc2FnZSB0aGVtc2VsdmVzLgogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2Fn
ZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50
aWZpZXIgPSAwKSBmaW5hbDsKIAorICAgIC8vIFRoZSBmb2xsb3dpbmcgYWRkTWVzc2FnZSBmdW5j
dGlvbiBpcyBkZXByZWNhdGVkLgorICAgIC8vIENhbGxlcnMgc2hvdWxkIHRyeSB0byBjcmVhdGUg
dGhlIENvbnNvbGVNZXNzYWdlIHRoZW1zZWx2ZXMuCisgICAgdm9pZCBhZGRNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmIHNvdXJjZVVSTCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVy
LCBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s+JiYsIEpTQzo6RXhlY1N0YXRlKiA9
IG51bGxwdHIsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIgPSAwKSBmaW5hbDsKKwog
ICAgIFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuICpTZWN1
cml0eUNvbnRleHQ6OnNlY3VyaXR5T3JpZ2luKCk7IH0KICAgICBTZWN1cml0eU9yaWdpbiYgdG9w
T3JpZ2luKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdG9wRG9jdW1lbnQoKS5zZWN1cml0eU9yaWdp
bigpOyB9CiAKQEAgLTE1MTcsNyArMTUyMiw5IEBAIHB1YmxpYzoKICAgICBib29sIHJlZ2lzdGVy
Q1NTUHJvcGVydHkoQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5JiYpOwogCiAjaWYgRU5BQkxF
KENTU19QQUlOVElOR19BUEkpCi0gICAgQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUmIGVuc3Vy
ZUNTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlKCk7CisgICAgV29ya2xldCYgZW5zdXJlUGFpbnRX
b3JrbGV0KCk7CisgICAgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUqIHBhaW50V29ya2xldEdsb2Jh
bFNjb3BlKCkgeyByZXR1cm4gbV9wYWludFdvcmtsZXRHbG9iYWxTY29wZS5nZXQoKTsgfQorICAg
IHZvaWQgc2V0UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoUmVmPFBhaW50V29ya2xldEdsb2JhbFNj
b3BlPiYmKTsKICNlbmRpZgogCiAgICAgdm9pZCBzZXRBc1J1bm5pbmdVc2VyU2NyaXB0cygpIHsg
bV9pc1J1bm5pbmdVc2VyU2NyaXB0cyA9IHRydWU7IH0KQEAgLTE1NzAsMTAgKzE1NzcsNiBAQCBw
cml2YXRlOgogICAgIHZvaWQgcmVmU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGZpbmFsIHsgcmVm
KCk7IH0KICAgICB2b2lkIGRlcmVmU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGZpbmFsIHsgZGVy
ZWYoKTsgfQogCi0gICAgLy8gVGhlIGZvbGxvd2luZyBhZGRNZXNzYWdlIGZ1bmN0aW9uIGlzIGRl
cHJlY2F0ZWQuCi0gICAgLy8gQ2FsbGVycyBzaG91bGQgdHJ5IHRvIGNyZWF0ZSB0aGUgQ29uc29s
ZU1lc3NhZ2UgdGhlbXNlbHZlcy4KLSAgICB2b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwg
TWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNl
VVJMLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIFJlZlB0cjxJ
bnNwZWN0b3I6OlNjcmlwdENhbGxTdGFjaz4mJiwgSlNDOjpFeGVjU3RhdGUqID0gbnVsbHB0ciwg
dW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciA9IDApIGZpbmFsOwotCiAgICAgU2Vjb25k
cyBtaW5pbXVtRE9NVGltZXJJbnRlcnZhbCgpIGNvbnN0IGZpbmFsOwogCiAgICAgU2Vjb25kcyBk
b21UaW1lckFsaWdubWVudEludGVydmFsKGJvb2wgaGFzUmVhY2hlZE1heE5lc3RpbmdMZXZlbCkg
Y29uc3QgZmluYWw7CkBAIC0yMDYwLDcgKzIwNjMsOCBAQCBwcml2YXRlOgogICAgIENTU1JlZ2lz
dGVyZWRDdXN0b21Qcm9wZXJ0eVNldCBtX0NTU1JlZ2lzdGVyZWRQcm9wZXJ0eVNldDsKIAogI2lm
IEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQotICAgIFJlZlB0cjxDU1NQYWludFdvcmtsZXRHbG9i
YWxTY29wZT4gbV9DU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZTsKKyAgICBSZWZQdHI8V29ya2xl
dD4gbV9wYWludFdvcmtsZXQ7CisgICAgUmVmUHRyPFBhaW50V29ya2xldEdsb2JhbFNjb3BlPiBt
X3BhaW50V29ya2xldEdsb2JhbFNjb3BlOwogI2VuZGlmCiAKICAgICBib29sIG1faXNSdW5uaW5n
VXNlclNjcmlwdHMgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50VGFyZ2V0RmFjdG9yeS5pbiBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3Rv
cnkuaW4KaW5kZXggNjBhYjFhNTgyODhiZTk5YTI5N2VlOTIzYjg4OTQwZjE5M2Y2ZjU1Zi4uNzhh
MjJiMzE2YTRjNDY4MGIxZDdjMjI3NGFjYjZhYjdmZDU2NDhiZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCkBAIC01Miw2ICs1Miw3IEBAIFdlYkFuaW1hdGlvbgog
V2ViS2l0TWVkaWFLZXlTZXNzaW9uIGNvbmRpdGlvbmFsPUxFR0FDWV9FTkNSWVBURURfTUVESUEK
IFdlYlNvY2tldAogV29ya2VyCitXb3JrbGV0R2xvYmFsU2NvcGUgY29uZGl0aW9uYWw9Q1NTX1BB
SU5USU5HX0FQSQogWE1MSHR0cFJlcXVlc3QKIFhNTEh0dHBSZXF1ZXN0VXBsb2FkCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAppbmRleCBiYTVjMzYz
MjRiYzgzNDAwZTQ0YjhjOWMxNWIxNTVlNTgzNzBjZmJmLi5kOGY2MGUyOWQzOWNmZmE5OTgyMDFk
OTI4YWRhOGIzNzI0ZjZiYmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuY3BwCkBAIC01NCw2ICs1NCw4IEBACiAjaW5jbHVkZSAiV29ya2VyR2xvYmFs
U2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJOYXZpZ2F0b3IuaCIKICNpbmNsdWRlICJXb3JrZXJU
aHJlYWQuaCIKKyNpbmNsdWRlICJXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3Jr
bGV0U2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NhdGNoU2Nv
cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FeGNlcHRpb24uaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU1Byb21pc2UuaD4KQEAgLTQ3Niw4ICs0NzgsMTUgQEAgSlNDOjpWTSYg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6dm0oKQogewogICAgIGlmIChpczxEb2N1bWVudD4oKnRo
aXMpKQogICAgICAgICByZXR1cm4gY29tbW9uVk0oKTsKKyAgICBpZiAoaXM8V29ya2VyR2xvYmFs
U2NvcGU+KCp0aGlzKSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3Bl
PigqdGhpcykuc2NyaXB0KCktPnZtKCk7CisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisg
ICAgaWYgKGlzPFdvcmtsZXRHbG9iYWxTY29wZT4oKnRoaXMpKQorICAgICAgICByZXR1cm4gZG93
bmNhc3Q8V29ya2xldEdsb2JhbFNjb3BlPigqdGhpcykuc2NyaXB0KCkudm0oKTsKKyNlbmRpZgog
Ci0gICAgcmV0dXJuIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykuc2NyaXB0KCkt
PnZtKCk7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gY29t
bW9uVk0oKTsKIH0KIAogUmVqZWN0ZWRQcm9taXNlVHJhY2tlciYgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6ZW5zdXJlUmVqZWN0ZWRQcm9taXNlVHJhY2tlclNsb3coKQpAQCAtNTE5LDggKzUyOCwx
NSBAQCBKU0M6OkV4ZWNTdGF0ZSogU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZXhlY1N0YXRlKCkK
ICAgICAgICAgcmV0dXJuIGV4ZWNTdGF0ZUZyb21QYWdlKG1haW5UaHJlYWROb3JtYWxXb3JsZCgp
LCBkb2N1bWVudC5wYWdlKCkpOwogICAgIH0KIAotICAgIFdvcmtlckdsb2JhbFNjb3BlKiB3b3Jr
ZXJHbG9iYWxTY29wZSA9IHN0YXRpY19jYXN0PFdvcmtlckdsb2JhbFNjb3BlKj4odGhpcyk7Ci0g
ICAgcmV0dXJuIGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29w
ZSk7CisgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykpCisgICAgICAgIHJldHVy
biBleGVjU3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2Nv
cGU+KCp0aGlzKSk7CisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisgICAgaWYgKGlzPFdv
cmtsZXRHbG9iYWxTY29wZT4oKnRoaXMpKQorICAgICAgICByZXR1cm4gZXhlY1N0YXRlRnJvbVdv
cmtsZXRHbG9iYWxTY29wZShkb3duY2FzdDxXb3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlzKSk7Cisj
ZW5kaWYKKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOwog
fQogCiBTdHJpbmcgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZG9tYWluRm9yQ2FjaGVQYXJ0aXRp
b24oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgK
aW5kZXggMmI2NDc1ZTYyN2RjZWZkNWRkYjY0MzRlMTUxNTU0NjVlNTVjNDdlNC4uNzg1OTA0NTgy
M2I3YzYzMDUwYWUwMWYxYTY0NWJhZDMwYjJkYzc5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC04OSw2ICs4OSw3IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgYm9vbCBpc0RvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2
aXJ0dWFsIGJvb2wgaXNXb3JrZXJHbG9iYWxTY29wZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBib29sIGlzV29ya2xldEdsb2JhbFNjb3BlKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRleHRUaHJlYWQoKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIGlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSBj
b25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dv
cmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IGNhYzA2MjU2OTlhNDE4
Yjg5MGQzZDExM2QzYzQ5MjdiZGU2ZmVjOWQuLmIyMGNiYmM5NTA3MDI4MTFiNjU4OWFjMWRmYmQ1
NzMzOTE5M2QzMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
d29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC02MCw3ICs2MCw3
IEBAIEluamVjdGVkU2NyaXB0IFdvcmtlckRlYnVnZ2VyQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9y
RXZhbChFcnJvclN0cmluZyYgZXJyb3JTdHJpCiAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlw
dCgpOwogICAgIH0KIAotICAgIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSA9IGV4ZWNTdGF0
ZUZyb21Xb3JrZXJHbG9iYWxTY29wZSgmbV93b3JrZXJHbG9iYWxTY29wZSk7CisgICAgSlNDOjpF
eGVjU3RhdGUqIHNjcmlwdFN0YXRlID0gZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3BlKG1f
d29ya2VyR2xvYmFsU2NvcGUpOwogICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5p
bmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQu
Y3BwCmluZGV4IDljYzY5ZDE3MjRjZGFkMThmOThlM2QzYjMyZjI5NjhhNTU0ZTA2N2QuLjhjMzIx
NDg3YzY4NWZkMzRmYWVhYTc1NTBjOThhMjI5MDg3NWQzMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFn
ZW50LmNwcApAQCAtNjUsNyArNjUsNyBAQCBJbmplY3RlZFNjcmlwdCBXb3JrZXJSdW50aW1lQWdl
bnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYgZXJyb3JTdHJpbgogICAgICAg
ICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKICAgICB9CiAKLSAgICBKU0M6OkV4ZWNTdGF0ZSog
c2NyaXB0U3RhdGUgPSBleGVjU3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUoJm1fd29ya2VyR2xv
YmFsU2NvcGUpOworICAgIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSA9IGV4ZWNTdGF0ZUZy
b21Xb3JrZXJHbG9iYWxTY29wZShtX3dvcmtlckdsb2JhbFNjb3BlKTsKICAgICByZXR1cm4gaW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3RhdGUpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWlu
dEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50
SW1hZ2UuY3BwCmluZGV4IGQyZTQyYzBjOWU2MTk5ZjUyNzQyOTE2NzBmMTdhMDZlOWRlODIwZmIu
LjE1YWE5MjRjMmI2MTcxZTUzNTBjMTAxZDQ0MGJlNmMzY2NhNTBjOTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwCkBA
IC0zNyw3ICszNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ3VzdG9tUGFpbnRJbWFn
ZTo6Q3VzdG9tUGFpbnRJbWFnZShjb25zdCBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6UGFp
bnREZWZpbml0aW9uJiBkZWZpbml0aW9uLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCitDdXN0b21Q
YWludEltYWdlOjpDdXN0b21QYWludEltYWdlKGNvbnN0IFBhaW50V29ya2xldEdsb2JhbFNjb3Bl
OjpQYWludERlZmluaXRpb24mIGRlZmluaXRpb24sIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKICAg
ICA6IG1fcGFpbnRDYWxsYmFjayhkZWZpbml0aW9uLnBhaW50Q2FsbGJhY2suZ2V0KCkpCiB7CiAg
ICAgc2V0Q29udGFpbmVyU2l6ZShzaXplKTsKQEAgLTYzLDcgKzYzLDYgQEAgSW1hZ2VEcmF3UmVz
dWx0IEN1c3RvbVBhaW50SW1hZ2U6OmRvQ3VzdG9tUGFpbnQoR3JhcGhpY3NDb250ZXh0JiBkZXN0
Q29udGV4dCwgY28KICAgICBpZiAocmVzdWx0LnR5cGUoKSAhPSBDYWxsYmFja1Jlc3VsdFR5cGU6
OlN1Y2Nlc3MpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CiAK
LSAgICBVTlVTRURfUEFSQU0oZGVzdENvbnRleHQpOwogICAgIGF1dG8gaW1hZ2UgPSBjYW52YXMt
PmNvcGllZEltYWdlKCk7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuIEltYWdlRHJh
d1Jlc3VsdDo6RGlkTm90aGluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuaAppbmRleCAwM2FiMmE4ODg2ODNhM2Y1Mzg3MWRhYzVi
NTFmODkxOWRhNGM0ZGQyLi5lYjZhODFiYWUyNGQxMTdlMGNkMzQ4OGRjNDdhNzZlNjJiMDQyMGNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWlu
dEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFp
bnRJbWFnZS5oCkBAIC0yNyw4ICsyNyw4IEBACiAKICNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQ
SSkKIAotI2luY2x1ZGUgIkNTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAi
R2VuZXJhdGVkSW1hZ2UuaCIKKyNpbmNsdWRlICJQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgSW1hZ2VCdWZm
ZXI7CiAKIGNsYXNzIEN1c3RvbVBhaW50SW1hZ2UgZmluYWwgOiBwdWJsaWMgR2VuZXJhdGVkSW1h
Z2UgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q3VzdG9tUGFpbnRJbWFnZT4gY3JlYXRlKGNv
bnN0IENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb24mIGRlZmluaXRp
b24sIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKKyAgICBzdGF0aWMgUmVmPEN1c3RvbVBhaW50SW1h
Z2U+IGNyZWF0ZShjb25zdCBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6UGFpbnREZWZpbml0aW9u
JiBkZWZpbml0aW9uLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBDdXN0b21QYWludEltYWdlKGRlZmluaXRpb24sIHNpemUpKTsKICAg
ICB9CkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQ3VzdG9tUGFpbnRJbWFn
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogcHJpdmF0ZToKLSAgICBDdXN0
b21QYWludEltYWdlKGNvbnN0IENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmlu
aXRpb24mLCBjb25zdCBGbG9hdFNpemUmKTsKKyAgICBDdXN0b21QYWludEltYWdlKGNvbnN0IFBh
aW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb24mLCBjb25zdCBGbG9hdFNpemUm
KTsKIAogICAgIEltYWdlRHJhd1Jlc3VsdCBkb0N1c3RvbVBhaW50KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0U2l6ZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0
cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Q
YWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTI5YTIwMGQxMGRmM2ZkNmI3
YWNmYmE5Nzg4ZWMxYzRiYThhMGE0MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcApAQCAtMCwwICsxLDEzMyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgorCisjaWYgRU5B
QkxFKENTU19QQUlOVElOR19BUEkpCisKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKKyNpbmNsdWRl
ICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkpTQ1NTUGFpbnRDYWxsYmFjay5oIgorI2luY2x1ZGUg
IkpTRE9NQ29udmVydENhbGxiYWNrcy5oIgorI2luY2x1ZGUgIkpTRE9NQ29udmVydFNlcXVlbmNl
cy5oIgorI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
Cit1c2luZyBuYW1lc3BhY2UgSlNDOworCitSZWY8UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+IFBh
aW50V29ya2xldEdsb2JhbFNjb3BlOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBTY3JpcHRT
b3VyY2VDb2RlJiYgY29kZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQYWludFdvcmts
ZXRHbG9iYWxTY29wZShkb2N1bWVudCwgV1RGTW92ZShjb2RlKSkpOworfQorCitQYWludFdvcmts
ZXRHbG9iYWxTY29wZTo6UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoRG9jdW1lbnQmIGRvY3VtZW50
LCBTY3JpcHRTb3VyY2VDb2RlJiYgY29kZSkKKyAgICA6IFdvcmtsZXRHbG9iYWxTY29wZShkb2N1
bWVudCwgV1RGTW92ZShjb2RlKSkKK3sKK30KKworZG91YmxlIFBhaW50V29ya2xldEdsb2JhbFNj
b3BlOjpkZXZpY2VQaXhlbFJhdGlvKCkgY29uc3QKK3sKKyAgICBpZiAoIXJlc3BvbnNhYmxlRG9j
dW1lbnQoKSB8fCAhcmVzcG9uc2FibGVEb2N1bWVudCgpLT5kb21XaW5kb3coKSkKKyAgICAgICAg
cmV0dXJuIDEuMDsKKyAgICByZXR1cm4gcmVzcG9uc2FibGVEb2N1bWVudCgpLT5kb21XaW5kb3co
KS0+ZGV2aWNlUGl4ZWxSYXRpbygpOworfQorCisvLyBodHRwczovL2RyYWZ0cy5jc3MtaG91ZGlu
aS5vcmcvY3NzLXBhaW50LWFwaS8jcmVnaXN0ZXJpbmctY3VzdG9tLXBhaW50CitFeGNlcHRpb25P
cjx2b2lkPiBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6cmVnaXN0ZXJQYWludChKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgU3Ryb25nPEpTT2JqZWN0PiBwYWludENvbnN0cnVjdG9yKQoreworICAgIGF1dG8m
IHZtID0gKnBhaW50Q29uc3RydWN0b3ItPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCisgICAgLy8gVmFsaWRhdGUgdGhhdCBwYWludENvbnN0cnVjdG9y
IGlzIGEgVm9pZEZ1bmN0aW9uCisgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgaWYgKEpTQzo6
Z2V0Q2FsbERhdGEodm0sIHBhaW50Q29uc3RydWN0b3IuZ2V0KCksIGNhbGxEYXRhKSA9PSBKU0M6
OkNhbGxUeXBlOjpOb25lKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAi
cGFpbnRDb25zdHJ1Y3RvciBtdXN0IGJlIGNhbGxhYmxlIiB9OworCisgICAgaWYgKG5hbWUuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiVGhlIGZpcnN0
IGFyZ3VtZW50IG11c3Qgbm90IGJlIHRoZSBlbXB0eSBzdHJpbmciIH07CisKKyAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKHBhaW50RGVmaW5pdGlvbkxvY2soKSk7CisKKyAgICBpZiAocGFpbnRE
ZWZpbml0aW9uTWFwKCkuY29udGFpbnMobmFtZSkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3IsICJUaGlzIG5hbWUgaGFzIGFscmVhZHkgYmVlbiBy
ZWdpc3RlcmVkIiB9OworCisgICAgVmVjdG9yPFN0cmluZz4gaW5wdXRQcm9wZXJ0aWVzOworCisg
ICAgSlNWYWx1ZSBpbnB1dFByb3BlcnRpZXNJdGVyYWJsZVZhbHVlID0gcGFpbnRDb25zdHJ1Y3Rv
ci0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJpbnB1dFByb3BlcnRp
ZXMiKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3Rp
bmdFeGNlcHRpb25FcnJvciB9KTsKKworICAgIGlmICghaW5wdXRQcm9wZXJ0aWVzSXRlcmFibGVW
YWx1ZS5pc1VuZGVmaW5lZCgpKQorICAgICAgICBpbnB1dFByb3BlcnRpZXMgPSBjb252ZXJ0PElE
TFNlcXVlbmNlPElETERPTVN0cmluZz4+KHN0YXRlLCBpbnB1dFByb3BlcnRpZXNJdGVyYWJsZVZh
bHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGlu
Z0V4Y2VwdGlvbkVycm9yIH0pOworCisgICAgLy8gRklYTUU6IFZhbGlkYXRlIGlucHV0IHByb3Bl
cnRpZXMgaGVyZSAoc3RlcCA3KS4KKworICAgIFZlY3RvcjxTdHJpbmc+IGlucHV0QXJndW1lbnRz
OworCisgICAgSlNWYWx1ZSBpbnB1dEFyZ3VtZW50c0l0ZXJhYmxlVmFsdWUgPSBwYWludENvbnN0
cnVjdG9yLT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImlucHV0QXJn
dW1lbnRzIikpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4
aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7CisKKyAgICBpZiAoIWlucHV0QXJndW1lbnRzSXRlcmFi
bGVWYWx1ZS5pc1VuZGVmaW5lZCgpKQorICAgICAgICBpbnB1dEFyZ3VtZW50cyA9IGNvbnZlcnQ8
SURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj4oc3RhdGUsIGlucHV0QXJndW1lbnRzSXRlcmFibGVW
YWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3Rp
bmdFeGNlcHRpb25FcnJvciB9KTsKKworICAgIC8vIEZJWE1FOiBQYXJzZSBzeW50YXggZm9yIGlu
cHV0QXJndW1lbnRzIGhlcmUgKHN0ZXBzIDExIGFuZCAxMikuCisKKyAgICBKU1ZhbHVlIGNvbnRl
eHRPcHRpb25zVmFsdWUgPSBwYWludENvbnN0cnVjdG9yLT5nZXQoJnN0YXRlLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKCZ2bSwgImNvbnRleHRPcHRpb25zIikpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7CisgICAg
VU5VU0VEX1BBUkFNKGNvbnRleHRPcHRpb25zVmFsdWUpOworCisgICAgLy8gRklYTUU6IENvbnZl
cnQgdG8gUGFpbnRSZW5kZXJpbmdDb250ZXh0MkRTZXR0aW5ncyBoZXJlIChzdGVwIDE0KS4KKwor
ICAgIGlmICghcGFpbnRDb25zdHJ1Y3Rvci0+aXNDb25zdHJ1Y3Rvcih2bSkpCisgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJUaGUgc2Vjb25kIGFyZ3VtZW50IG11c3QgYmUg
YSBjb25zdHJ1Y3RvciIgfTsKKworICAgIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUgPSBwYWludENv
bnN0cnVjdG9yLT5nZXQoJnN0YXRlLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9u
RXJyb3IgfSk7CisKKyAgICBpZiAoIXByb3RvdHlwZVZhbHVlLmlzT2JqZWN0KCkpCisgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJUaGUgc2Vjb25kIGFyZ3VtZW50IG11c3Qg
aGF2ZSBhIHByb3RvdHlwZSB0aGF0IGlzIGFuIG9iamVjdCIgfTsKKworICAgIEpTVmFsdWUgcGFp
bnRWYWx1ZSA9IHByb3RvdHlwZVZhbHVlLmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoJnZtLCAicGFpbnQiKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0
aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKKworICAgIGlmIChwYWludFZhbHVlLmlz
VW5kZWZpbmVkKCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJUaGUg
Y2xhc3MgbXVzdCBoYXZlIGEgcGFpbnQgbWV0aG9kIiB9OworCisgICAgUmVmUHRyPEpTQ1NTUGFp
bnRDYWxsYmFjaz4gcGFpbnQgPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNDU1NQYWlu
dENhbGxiYWNrPj4oc3RhdGUsIHBhaW50VmFsdWUsIGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9
KTsKKworICAgIGF1dG8gcGFpbnREZWZpbml0aW9uID0gc3RkOjp1bmlxdWVfcHRyPFBhaW50RGVm
aW5pdGlvbj4obmV3IFBhaW50RGVmaW5pdGlvbiB7IG5hbWUsIHBhaW50LnJlbGVhc2VOb25OdWxs
KCksIGlucHV0UHJvcGVydGllcywgaW5wdXRBcmd1bWVudHMgfSk7CisgICAgcGFpbnREZWZpbml0
aW9uTWFwKCkuYWRkKG5hbWUsIFdURk1vdmUocGFpbnREZWZpbml0aW9uKSk7CisKKyAgICAvLyBG
SVhNRTogY29uc3RydWN0IGRvY3VtZW50RGVmaW5pdGlvbiAoc3RlcCAyMikuCisKKyAgICByZXR1
cm4geyB9OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjMyNzFmMTU0MjkxNGI4NWI0YjI1Zjc5MTkyZWE0Y2VjY2E4YTU1MAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgK
QEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisKKyNp
bmNsdWRlICJDU1NQYWludENhbGxiYWNrLmgiCisjaW5jbHVkZSAiV29ya2xldEdsb2JhbFNjb3Bl
LmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nLmg+CisKK25hbWVzcGFjZSBKU0Mg
eworY2xhc3MgSlNPYmplY3Q7Cit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworY2xhc3MgSlNET01HbG9iYWxPYmplY3Q7CisKK2NsYXNzIFBhaW50V29ya2xldEdsb2Jh
bFNjb3BlIDogcHVibGljIFdvcmtsZXRHbG9iYWxTY29wZSB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFJlZjxQYWludFdvcmtsZXRHbG9iYWxTY29wZT4gY3JlYXRlKERvY3VtZW50JiwgU2NyaXB0U291
cmNlQ29kZSYmKTsKKworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlZ2lzdGVyUGFpbnQoSlNDOjpF
eGVjU3RhdGUmLCBKU0RPTUdsb2JhbE9iamVjdCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgSlNDOjpT
dHJvbmc8SlNDOjpKU09iamVjdD4gcGFpbnRDb25zdHJ1Y3Rvcik7CisgICAgZG91YmxlIGRldmlj
ZVBpeGVsUmF0aW8oKSBjb25zdDsKKworICAgIHN0cnVjdCBQYWludERlZmluaXRpb24geworICAg
ICAgICBjb25zdCBBdG9taWNTdHJpbmcgbmFtZTsKKyAgICAgICAgY29uc3QgUmVmPENTU1BhaW50
Q2FsbGJhY2s+IHBhaW50Q2FsbGJhY2s7CisgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+IGlu
cHV0UHJvcGVydGllczsKKyAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4gaW5wdXRBcmd1bWVu
dHM7CisgICAgfTsKKworICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8UGFpbnRE
ZWZpbml0aW9uPj4mIHBhaW50RGVmaW5pdGlvbk1hcCgpIHsgQVNTRVJUKG1fcGFpbnREZWZpbml0
aW9uTG9jay5pc0xvY2tlZCgpKTsgcmV0dXJuIG1fcGFpbnREZWZpbml0aW9uTWFwOyB9CisgICAg
TG9jayYgcGFpbnREZWZpbml0aW9uTG9jaygpIHsgcmV0dXJuIG1fcGFpbnREZWZpbml0aW9uTG9j
azsgfQorCitwcml2YXRlOgorICAgIFBhaW50V29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50Jiwg
U2NyaXB0U291cmNlQ29kZSYmKTsKKworICAgIGJvb2wgaXNQYWludFdvcmtsZXRHbG9iYWxTY29w
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKworICAgIEhhc2hNYXA8U3RyaW5nLCBz
dGQ6OnVuaXF1ZV9wdHI8UGFpbnREZWZpbml0aW9uPj4gbV9wYWludERlZmluaXRpb25NYXA7Cisg
ICAgTG9jayBtX3BhaW50RGVmaW5pdGlvbkxvY2s7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6UGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUpCitzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkgeyByZXR1cm4gaXM8V2ViQ29yZTo6V29ya2xldEdsb2Jh
bFNjb3BlPihjb250ZXh0KSAmJiBkb3duY2FzdDxXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU+
KGNvbnRleHQpLmlzUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoKTsgfQorc3RhdGljIGJvb2wgaXNU
eXBlKGNvbnN0IFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZSYgY29udGV4dCkgeyByZXR1cm4g
Y29udGV4dC5pc1BhaW50V29ya2xldEdsb2JhbFNjb3BlKCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfRU5EKCkKKworI2VuZGlmIC8vIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaWRs
IGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaWRsCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjAxMmE4YTkyZDFjOWE2MDRiZWNlNWY1ZTIwZmIzNzRhMmZiNDIxMWYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxT
Y29wZS5pZGwKQEAgLTAsMCArMSwzOSBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
KiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCitbCisgICAg
RXhwb3NlZD1QYWludFdvcmtsZXQsCisgICAgRW5hYmxlZEF0UnVudGltZT1DU1NQYWludGluZ0FQ
SSwKKyAgICBDb25kaXRpb25hbD1DU1NfUEFJTlRJTkdfQVBJLAorICAgIEpTQ3VzdG9tTWFya0Z1
bmN0aW9uLAorICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdCwKKyAgICBJbXBsaWNpdFRoaXMs
CisgICAgSXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3QsCisgICAgSXNJbW11dGFibGVQ
cm90b3R5cGVFeG90aWNPYmplY3RPblByb3RvdHlwZSwKKyAgICBHbG9iYWw9KFdvcmtsZXQsUGFp
bnRXb3JrbGV0KSwKK10gaW50ZXJmYWNlIFBhaW50V29ya2xldEdsb2JhbFNjb3BlIDogV29ya2xl
dEdsb2JhbFNjb3BlIHsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb24sQ2FsbFdpdGg9U2NyaXB0U3Rh
dGUmR2xvYmFsT2JqZWN0XSB2b2lkIHJlZ2lzdGVyUGFpbnQoRE9NU3RyaW5nIG5hbWUsIG9iamVj
dCBwYWludENvbnN0cnVjdG9yKTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5yZXN0cmljdGVk
IGRvdWJsZSBkZXZpY2VQaXhlbFJhdGlvOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1dvcmtsZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMzhmMmM1ODk2ZjJjYmQ5ZmY4NmNkNTgwMDEyMTllMTg5NDQ2Nzc3Mgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQuY3BwCkBA
IC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV29ya2xldC5oIgorCisjaWYgRU5B
QkxFKENTU19QQUlOVElOR19BUEkpCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUg
IlBhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxXb3JrbGV0PiBXb3JrbGV0OjpjcmVhdGUo
KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdvcmtsZXQoKSk7Cit9CisKK1dvcmtsZXQ6
OldvcmtsZXQoKQoreworfQorCit2b2lkIFdvcmtsZXQ6OmFkZE1vZHVsZShEb2N1bWVudCYgZG9j
dW1lbnQsIGNvbnN0IFN0cmluZyYgbW9kdWxlVVJMKQoreworICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgZG93bmxvYWQgdGhlIHNvdXJjZSBmcm9tIHRoZSBVUkwKKyAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxMTM2CisgICAgYXV0byBjb250ZXh0ID0gUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGU6OmNyZWF0ZShkb2N1bWVudCwgU2NyaXB0U291cmNlQ29kZSht
b2R1bGVVUkwpKTsKKyAgICBjb250ZXh0LT5ldmFsdWF0ZSgpOworICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgc3RvcmUgbXVsdGlwbGUgZ2xvYmFsIHNjb3BlcyBhbmQgY2hvb3NlIGJldHdlZW4gdGhl
bQorICAgIC8vIFRoaXMgd2lsbCBub3QgZnVuY3Rpb24gY29ycmVjdGx5IGlmIG11bHRpcGxlIG1v
ZHVsZXMgYXJlIGFkZGVkLgorICAgIGRvY3VtZW50LnNldFBhaW50V29ya2xldEdsb2JhbFNjb3Bl
KFdURk1vdmUoY29udGV4dCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwODA4Zjg5NWUwNWJmZTI2
Y2YzYWNiYmFmNjI4ZmRhNGFmZWRjMzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrbGV0cy9Xb3JrbGV0LmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU2Ny
aXB0V3JhcHBhYmxlLmgiCisKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworY2xhc3MgRG9jdW1lbnQ7CisKK2NsYXNzIFdvcmtsZXQgOiBwdWJsaWMg
UmVmQ291bnRlZDxXb3JrbGV0PiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFJlZjxXb3JrbGV0PiBjcmVhdGUoKTsKKyAgICAKKyAgICB2b2lkIGFkZE1vZHVs
ZShEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgbW9kdWxlVVJMKTsKKworcHJvdGVjdGVkOgorICAg
IFdvcmtsZXQoKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmlkbCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtsZXRzL1dvcmtsZXQuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3NGNjOTEzODAwYjc5ZWU3MGE1
YzQ0Njc5ZWYxNWZlN2VjODQ5ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrbGV0cy9Xb3JrbGV0LmlkbApAQCAtMCwwICsxLDMzIEBACisvKgorKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyov
CisKK1sKKyAgICBFbmFibGVkQXRSdW50aW1lPUNTU1BhaW50aW5nQVBJLAorICAgIENvbmRpdGlv
bmFsPUNTU19QQUlOVElOR19BUEksCisgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKKyAg
ICBHbG9iYWw9V29ya2xldCwKK10gaW50ZXJmYWNlIFdvcmtsZXQgeworICAgIFtDYWxsV2l0aD1E
b2N1bWVudF0gdm9pZCBhZGRNb2R1bGUoVVNWU3RyaW5nIG1vZHVsZVVSTC8qLCBvcHRpb25hbCBX
b3JrbGV0T3B0aW9ucyBvcHRpb25zKi8pOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmts
ZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OTUwNmI5ZTM5MzEzNGNl
YzMzNjM2Y2E2NmYxYzVkYzI0Yjg4MTgyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuY3BwCkBAIC0wLDAgKzEsNzAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV29ya2xldENvbnNvbGVD
bGllbnQuaCIKKworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorCisjaW5jbHVkZSAiSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29s
ZU1lc3NhZ2UuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRBcmd1bWVudHMuaD4K
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxsU3RhY2suaD4KKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5Lmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKK1dvcmtsZXRDb25zb2xlQ2xpZW50
OjpXb3JrbGV0Q29uc29sZUNsaWVudChXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtsZXRHbG9iYWxT
Y29wZSkKKyAgICA6IG1fd29ya2xldEdsb2JhbFNjb3BlKHdvcmtsZXRHbG9iYWxTY29wZSkKK3sK
K30KKworV29ya2xldENvbnNvbGVDbGllbnQ6On5Xb3JrbGV0Q29uc29sZUNsaWVudCgpID0gZGVm
YXVsdDsKKwordm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2
ZWwoTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBKU0M6OkV4ZWNTdGF0ZSog
ZXhlYywgUmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmIGFyZ3VtZW50cykKK3sKKyAg
ICBTdHJpbmcgbWVzc2FnZVRleHQ7CisgICAgYXJndW1lbnRzLT5nZXRGaXJzdEFyZ3VtZW50QXNT
dHJpbmcobWVzc2FnZVRleHQpOworICAgIGF1dG8gbWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8
SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgdHlw
ZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBXVEZNb3ZlKGFyZ3VtZW50cyksIGV4ZWMpOworICAgIG1f
d29ya2xldEdsb2JhbFNjb3BlLmFkZENvbnNvbGVNZXNzYWdlKFdURk1vdmUobWVzc2FnZSkpOwor
fQorCit2b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50Ojpjb3VudChKU0M6OkV4ZWNTdGF0ZSosIFJl
ZjxTY3JpcHRBcmd1bWVudHM+JiYpIHsgfQorCit2b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50Ojp0
aW1lKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJikgeyB9Cit2b2lkIFdvcmtsZXRDb25z
b2xlQ2xpZW50Ojp0aW1lRW5kKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJikgeyB9CisK
K3ZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6OnByb2ZpbGUoSlNDOjpFeGVjU3RhdGUqLCBjb25z
dCBTdHJpbmcmKSB7IH0KK3ZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6OnByb2ZpbGVFbmQoSlND
OjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmKSB7IH0KKwordm9pZCBXb3JrbGV0Q29uc29sZUNs
aWVudDo6dGFrZUhlYXBTbmFwc2hvdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpIHsg
fQordm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6dGltZVN0YW1wKEpTQzo6RXhlY1N0YXRlKiwg
UmVmPFNjcmlwdEFyZ3VtZW50cz4mJikgeyB9CisKK3ZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6
OnJlY29yZChKU0M6OkV4ZWNTdGF0ZSosIFJlZjxTY3JpcHRBcmd1bWVudHM+JiYpIHsgfQordm9p
ZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6cmVjb3JkRW5kKEpTQzo6RXhlY1N0YXRlKiwgUmVmPFNj
cmlwdEFyZ3VtZW50cz4mJikgeyB9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNTIwZjc1OTYwZmY4Yjc2OGUxYzZjNDBmNWQxOTI5ZWIwODY0MjM5YgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmgK
QEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KENTU19QQUlOVElOR19BUEkpCisKKyNpbmNsdWRlICJXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlQ2xpZW50Lmg+CisjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBFeGVjU3RhdGU7Cit9CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV29ya2xldENvbnNvbGVDbGllbnQgZmluYWwgOiBwdWJs
aWMgSlNDOjpDb25zb2xlQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1
YmxpYzoKKyAgICBleHBsaWNpdCBXb3JrbGV0Q29uc29sZUNsaWVudChXb3JrbGV0R2xvYmFsU2Nv
cGUmKTsKKyAgICB2aXJ0dWFsIH5Xb3JrbGV0Q29uc29sZUNsaWVudCgpOworCitwcml2YXRlOgor
ICAgIHZvaWQgbWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwoTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZl
bCwgSlNDOjpFeGVjU3RhdGUqLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYpIGZp
bmFsOworICAgIHZvaWQgY291bnQoSlNDOjpFeGVjU3RhdGUqLCBSZWY8SW5zcGVjdG9yOjpTY3Jp
cHRBcmd1bWVudHM+JiYpIGZpbmFsOworICAgIHZvaWQgcHJvZmlsZShKU0M6OkV4ZWNTdGF0ZSos
IGNvbnN0IFN0cmluZyYgdGl0bGUpIGZpbmFsOworICAgIHZvaWQgcHJvZmlsZUVuZChKU0M6OkV4
ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgdGl0bGUpIGZpbmFsOworICAgIHZvaWQgdGFrZUhlYXBT
bmFwc2hvdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgdGl0bGUpIGZpbmFsOworICAg
IHZvaWQgdGltZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgdGl0bGUpIGZpbmFsOwor
ICAgIHZvaWQgdGltZUVuZChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgdGl0bGUpIGZp
bmFsOworICAgIHZvaWQgdGltZVN0YW1wKEpTQzo6RXhlY1N0YXRlKiwgUmVmPEluc3BlY3Rvcjo6
U2NyaXB0QXJndW1lbnRzPiYmKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZChKU0M6OkV4ZWNTdGF0
ZSosIFJlZjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4mJikgZmluYWw7CisgICAgdm9pZCBy
ZWNvcmRFbmQoSlNDOjpFeGVjU3RhdGUqLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+
JiYpIGZpbmFsOworCisgICAgV29ya2xldEdsb2JhbFNjb3BlJiBtX3dvcmtsZXRHbG9iYWxTY29w
ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTBkMzAwOWRh
OTNhYzQzYjE2ZTBkZDQwZDA0Y2Y4MmUwMGIyNDBiNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTAsMCArMSwxNDAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldvcmtsZXRHbG9iYWxTY29wZS5oIgorCisjaWYg
RU5BQkxFKENTU19QQUlOVElOR19BUEkpCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1
ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCisjaW5j
bHVkZSAiSlNXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJQYWdlQ29uc29sZUNsaWVu
dC5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luUG9saWN5LmgiCisjaW5jbHVkZSAiU2V0dGlu
Z3MuaCIKKyNpbmNsdWRlICJXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgorCisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvRXhjZXB0aW9uLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSWRl
bnRpZmllcnNGYWN0b3J5Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+Cisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0Q2FsbFN0YWNrLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKK1dvcmtsZXRHbG9iYWxTY29w
ZTo6V29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50JiBkb2N1bWVudCwgU2NyaXB0U291cmNlQ29k
ZSYmIGNvZGUpCisgICAgOiBtX2RvY3VtZW50KG1ha2VXZWFrUHRyKGRvY3VtZW50KSkKKyAgICAs
IG1fc2Vzc2lvbklEKG1fZG9jdW1lbnQtPnNlc3Npb25JRCgpKQorICAgICwgbV9zY3JpcHQobWFr
ZVVuaXF1ZVJlZjxXb3JrbGV0U2NyaXB0Q29udHJvbGxlcj4odGhpcykpCisgICAgLCBtX3RvcE9y
aWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCkpCisgICAgLCBtX2lkZW50aWZpZXIo
bWFrZVN0cmluZygiV29ya2xldEdsb2JhbFNjb3BlOiJfcywgSW5zcGVjdG9yOjpJZGVudGlmaWVy
c0ZhY3Rvcnk6OmNyZWF0ZUlkZW50aWZpZXIoKSkpCisgICAgLCBtX2V2ZW50UXVldWUoKnRoaXMp
CisgICAgLCBtX2NvZGUoV1RGTW92ZShjb2RlKSkKK3sKKyAgICBhdXRvKiBmcmFtZSA9IGRvY3Vt
ZW50LmZyYW1lKCk7CisgICAgbV9qc1J1bnRpbWVGbGFncyA9IGZyYW1lID8gZnJhbWUtPnNldHRp
bmdzKCkuamF2YVNjcmlwdFJ1bnRpbWVGbGFncygpIDogSlNDOjpSdW50aW1lRmxhZ3MoKTsKKyAg
ICBBU1NFUlQoZG9jdW1lbnQucGFnZSgpKTsKKworICAgIHNldFNlY3VyaXR5T3JpZ2luUG9saWN5
KFNlY3VyaXR5T3JpZ2luUG9saWN5OjpjcmVhdGUobV90b3BPcmlnaW4uY29weVJlZigpKSk7Cisg
ICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudFNlY3Vy
aXR5UG9saWN5PihVUkwgeyBjb2RlLnVybCgpIH0sICp0aGlzKSk7Cit9CisKK1dvcmtsZXRHbG9i
YWxTY29wZTo6fldvcmtsZXRHbG9iYWxTY29wZSgpCit7CisgICAgcmVtb3ZlRnJvbUNvbnRleHRz
TWFwKCk7CisgICAgbV9zY3JpcHQtPndvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIoKS0+c2V0Q29u
c29sZUNsaWVudChudWxscHRyKTsKK30KKworU3RyaW5nIFdvcmtsZXRHbG9iYWxTY29wZTo6b3Jp
Z2luKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90b3BPcmlnaW4tPnRvU3RyaW5nKCk7Cit9CisK
K1N0cmluZyBXb3JrbGV0R2xvYmFsU2NvcGU6OnVzZXJBZ2VudChjb25zdCBVUkwmIHVybCkgY29u
c3QKK3sKKyAgICBpZiAoIW1fZG9jdW1lbnQpCisgICAgICAgIHJldHVybiAiIjsKKyAgICByZXR1
cm4gbV9kb2N1bWVudC0+dXNlckFnZW50KHVybCk7Cit9CisKK3ZvaWQgV29ya2xldEdsb2JhbFNj
b3BlOjpldmFsdWF0ZSgpCit7CisgICAgbV9zY3JpcHQtPmV2YWx1YXRlKG1fY29kZSk7Cit9CisK
K2Jvb2wgV29ya2xldEdsb2JhbFNjb3BlOjppc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9zY3JpcHQtPmlzRXhlY3V0aW9uRm9yYmlkZGVuKCk7Cit9CisKK3Zv
aWQgV29ya2xldEdsb2JhbFNjb3BlOjpkaXNhYmxlRXZhbChjb25zdCBTdHJpbmcmIGVycm9yTWVz
c2FnZSkKK3sKKyAgICBtX3NjcmlwdC0+ZGlzYWJsZUV2YWwoZXJyb3JNZXNzYWdlKTsKK30KKwor
dm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmRpc2FibGVXZWJBc3NlbWJseShjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSkKK3sKKyAgICBtX3NjcmlwdC0+ZGlzYWJsZVdlYkFzc2VtYmx5KGVycm9y
TWVzc2FnZSk7Cit9CisKK1VSTCBXb3JrbGV0R2xvYmFsU2NvcGU6OmNvbXBsZXRlVVJMKGNvbnN0
IFN0cmluZyYgdXJsKSBjb25zdAoreworICAgIGlmICh1cmwuaXNOdWxsKCkpCisgICAgICAgIHJl
dHVybiBVUkwoKTsKKyAgICByZXR1cm4gVVJMKG1fY29kZS51cmwoKSwgdXJsKTsKK30KKwordm9p
ZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmxvZ0V4Y2VwdGlvblRvQ29uc29sZShjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGludCBsaW5lTnVtYmVyLCBp
bnQgY29sdW1uTnVtYmVyLCBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiYmIHN0YWNrKQoreworICAg
IGlmICghbV9kb2N1bWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fZG9jdW1lbnQtPmxvZ0V4
Y2VwdGlvblRvQ29uc29sZShlcnJvck1lc3NhZ2UsIHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29s
dW1uTnVtYmVyLCBXVEZNb3ZlKHN0YWNrKSk7Cit9CisKK3ZvaWQgV29ya2xldEdsb2JhbFNjb3Bl
OjphZGRDb25zb2xlTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVz
c2FnZT4mJiBtZXNzYWdlKQoreworICAgIGlmICghbV9kb2N1bWVudCkKKyAgICAgICAgcmV0dXJu
OworICAgIG1fZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKFdURk1vdmUobWVzc2FnZSkpOwor
fQorCit2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNv
dXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1
bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQoreworICAgIGlmICghbV9kb2N1bWVudCkK
KyAgICAgICAgcmV0dXJuOworICAgIG1fZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKHNvdXJj
ZSwgbGV2ZWwsIG1lc3NhZ2UsIHJlcXVlc3RJZGVudGlmaWVyKTsKK30KKwordm9pZCBXb3JrbGV0
R2xvYmFsU2NvcGU6OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZl
bCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlVGV4dCwgY29uc3QgU3RyaW5nJiBzb3VyY2VV
UkwsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgUmVmUHRyPFNj
cmlwdENhbGxTdGFjaz4mJiBjYWxsU3RhY2ssIEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdW5zaWdu
ZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKK3sKKyAgICBpZiAoIW1fZG9jdW1lbnQpCisgICAg
ICAgIHJldHVybjsKKyAgICBtX2RvY3VtZW50LT5hZGRNZXNzYWdlKHNvdXJjZSwgbGV2ZWwsIG1l
c3NhZ2VUZXh0LCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgV1RGTW92ZShj
YWxsU3RhY2spLCBzdGF0ZSwgcmVxdWVzdElkZW50aWZpZXIpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dv
cmtsZXRHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2Jh
bFNjb3BlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjAxNTY0ZDg2N2MxMGFhY2Y5Y2YwYzFkZjY5MDY1Y2ZlZjJk
NzVjNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRH
bG9iYWxTY29wZS5oCkBAIC0wLDAgKzEsMTM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKENTU19Q
QUlOVElOR19BUEkpCisKKyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIkV4Y2Vw
dGlvbk9yLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUg
IlNjcmlwdFNvdXJjZUNvZGUuaCIKKyNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlICJXb3JrZXJF
dmVudFF1ZXVlLmgiCisKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlTWVzc2FnZS5o
PgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1J1bnRpbWVGbGFncy5oPgorI2luY2x1ZGUgPHBh
bC9TZXNzaW9uSUQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisjaW5jbHVkZSA8d3Rm
L1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgV29ya2xldFNjcmlwdENv
bnRyb2xsZXI7CitjbGFzcyBTY3JpcHRTb3VyY2VDb2RlOworCitjbGFzcyBXb3JrbGV0R2xvYmFs
U2NvcGUgOiBwdWJsaWMgUmVmQ291bnRlZDxXb3JrbGV0R2xvYmFsU2NvcGU+LCBwdWJsaWMgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEgewor
cHVibGljOgorICAgIH5Xb3JrbGV0R2xvYmFsU2NvcGUoKTsKKworICAgIHZpcnR1YWwgYm9vbCBp
c1BhaW50V29ya2xldEdsb2JhbFNjb3BlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworICAg
IGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb2RlLnVybCgpOyB9Cisg
ICAgU3RyaW5nIG9yaWdpbigpIGNvbnN0IGZpbmFsOworICAgIGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorCisgICAgdm9pZCBldmFsdWF0
ZSgpOworCisgICAgdXNpbmcgUmVmQ291bnRlZDo6cmVmOworICAgIHVzaW5nIFJlZkNvdW50ZWQ6
OmRlcmVmOworCisgICAgV29ya2xldFNjcmlwdENvbnRyb2xsZXImIHNjcmlwdCgpIHsgcmV0dXJu
IG1fc2NyaXB0LmdldCgpOyB9CisKKyAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6dW5p
cXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiYmKSBmaW5hbDsKKworICAgIGJvb2wg
aXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0IGZpbmFsOworICAgIFNlY3VyaXR5T3JpZ2lu
JiB0b3BPcmlnaW4oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3RvcE9yaWdpbi5nZXQoKTsgfQor
CisgICAgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyKCkgZmluYWwgeyByZXR1cm4gbnVs
bHB0cjsgfQorCisgICAgYm9vbCBpc0NvbnRleHRUaHJlYWQoKSBjb25zdCBmaW5hbCB7IHJldHVy
biB0cnVlOyB9CisgICAgYm9vbCBpc1NlY3VyZUNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBmYWxzZTsgfQorCisgICAgSlNDOjpSdW50aW1lRmxhZ3MganNSdW50aW1lRmxhZ3MoKSBjb25z
dCB7IHJldHVybiBtX2pzUnVudGltZUZsYWdzOyB9CisKK3Byb3RlY3RlZDoKKyAgICBXb3JrbGV0
R2xvYmFsU2NvcGUoRG9jdW1lbnQmLCBTY3JpcHRTb3VyY2VDb2RlJiYpOworCisgICAgRG9jdW1l
bnQqIHJlc3BvbnNhYmxlRG9jdW1lbnQoKSB7IHJldHVybiBtX2RvY3VtZW50LmdldCgpOyB9Cisg
ICAgY29uc3QgRG9jdW1lbnQqIHJlc3BvbnNhYmxlRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBt
X2RvY3VtZW50LmdldCgpOyB9CisKK3ByaXZhdGU6CisjaWYgRU5BQkxFKElOREVYRURfREFUQUJB
U0UpCisgICAgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGlkYkNvbm5lY3Rpb25Qcm94
eSgpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBudWxscHRyOyB9CisjZW5k
aWYKKworICAgIHZvaWQgcG9zdFRhc2soVGFzayYmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOyB9CisKKyAgICB2b2lkIHJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBmaW5hbCB7IHJl
ZigpOyB9CisgICAgdm9pZCBkZXJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBmaW5hbCB7IGRl
cmVmKCk7IH0KKworICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9Cisg
ICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBkZXJlZigpOyB9CisKKyAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWwg
eyByZXR1cm4gY29uc3RfY2FzdDxXb3JrbGV0R2xvYmFsU2NvcGUqPih0aGlzKTsgfQorICAgIEV2
ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gV29ya2xldEdsb2JhbFNjb3BlRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CisKKyAg
ICBib29sIGlzV29ya2xldEdsb2JhbFNjb3BlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsg
fQorCisgICAgdm9pZCBsb2dFeGNlcHRpb25Ub0NvbnNvbGUoY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UsIGNvbnN0IFN0cmluZyYsIGludCwgaW50LCBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRD
YWxsU3RhY2s+JiYpIGZpbmFsOworICAgIHZvaWQgYWRkTWVzc2FnZShNZXNzYWdlU291cmNlLCBN
ZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkLCB1bnNp
Z25lZCwgUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPiYmLCBKU0M6OkV4ZWNTdGF0
ZSosIHVuc2lnbmVkIGxvbmcpIGZpbmFsOworICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2UoTWVz
c2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBsb25nKSBm
aW5hbDsKKworICAgIEV2ZW50VGFyZ2V0KiBlcnJvckV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZXR1
cm4gdGhpczsgfQorICAgIEV2ZW50UXVldWUmIGV2ZW50UXVldWUoKSBjb25zdCBmaW5hbCB7IEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gbV9ldmVudFF1ZXVlOyB9CisKKyNpZiBFTkFCTEUo
U1VCVExFX0NSWVBUTykKKyAgICBib29sIHdyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiwgVmVjdG9yPHVpbnQ4X3Q+JikgZmluYWwgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHVud3JhcENyeXB0b0tleShjb25zdCBWZWN0
b3I8dWludDhfdD4mLCBWZWN0b3I8dWludDhfdD4mKSBmaW5hbCB7IFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCisgICAgVVJMIGNvbXBsZXRlVVJM
KGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOworICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9CisgICAgU3RyaW5nIHVzZXJB
Z2VudChjb25zdCBVUkwmKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIGRpc2FibGVFdmFsKGNvbnN0
IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgZGlzYWJsZVdlYkFzc2VtYmx5KGNvbnN0IFN0cmlu
ZyYpIGZpbmFsOworCisgICAgV2Vha1B0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKKworICAgIFBB
TDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOworICAgIFVuaXF1ZVJlZjxXb3JrbGV0U2NyaXB0Q29u
dHJvbGxlcj4gbV9zY3JpcHQ7CisKKyAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IG1fdG9wT3JpZ2lu
OworICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CisKKyAgICAvLyBGSVhNRTogVGhpcyBpcyBub3Qg
aW1wbGVtZW50ZWQgcHJvcGVybHksIGl0IGp1c3Qgc2F0aXNmaWVzIHRoZSBjb21waWxlci4KKyAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxMTM2CisgICAg
bXV0YWJsZSBXb3JrZXJFdmVudFF1ZXVlIG1fZXZlbnRRdWV1ZTsKKworICAgIEpTQzo6UnVudGlt
ZUZsYWdzIG1fanNSdW50aW1lRmxhZ3M7CisgICAgU2NyaXB0U291cmNlQ29kZSBtX2NvZGU7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVH
SU4oV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlKQorc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0
IFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsgcmV0dXJuIGNvbnRl
eHQuaXNXb3JrbGV0R2xvYmFsU2NvcGUoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQo
KQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xv
YmFsU2NvcGUuaWRsIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3Bl
LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kNzU5ZjBjZTFkMTZmODY5MTg2MDEyNzc2ZjBkYjE2YjYxYmFhNDc4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2Jh
bFNjb3BlLmlkbApAQCAtMCwwICsxLDM3IEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKK1sKKyAg
ICBDdXN0b21Qcm94eVRvSlNPYmplY3QsCisgICAgRXhwb3NlZD1Xb3JrbGV0LAorICAgIEVuYWJs
ZWRBdFJ1bnRpbWU9Q1NTUGFpbnRpbmdBUEksCisgICAgQ29uZGl0aW9uYWw9Q1NTX1BBSU5USU5H
X0FQSSwKKyAgICBKU0xlZ2FjeVBhcmVudD1KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UsCisgICAg
SW1wbGljaXRUaGlzLAorICAgIElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0LAorICAg
IElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0T25Qcm90b3R5cGUsCisgICAgR2xvYmFs
PVdvcmtsZXQsCitdIGludGVyZmFjZSBXb3JrbGV0R2xvYmFsU2NvcGUgOiBFdmVudFRhcmdldCB7
Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRy
b2xsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1NWQ3ZjExNjhlZWI1YWNmMDQyZmYxNGJmYzk5YzczZGNj
YjhmMzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0
U2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTAsMCArMSwxODcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIKKworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdf
QVBJKQorCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSAiSlNFdmVudFRhcmdl
dC5oIgorI2luY2x1ZGUgIkpTRXhlY1N0YXRlLmgiCisjaW5jbHVkZSAiSlNQYWludFdvcmtsZXRH
bG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKKyNpbmNsdWRlICJX
ZWJDb3JlSlNDbGllbnREYXRhLmgiCisjaW5jbHVkZSAiV29ya2xldENvbnNvbGVDbGllbnQuaCIK
KworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbXBsZXRpb24uaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9FeGNlcHRpb24uaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FeGNlcHRp
b25IZWxwZXJzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvR0NBY3Rpdml0eUNhbGxiYWNr
Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+CisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvUHJvbWlzZURlZmVycmVkVGltZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9TdHJvbmdJbmxpbmVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5hbWVzcGFj
ZSBKU0M7CisKK1dvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpXb3JrbGV0U2NyaXB0Q29udHJvbGxl
cihXb3JrbGV0R2xvYmFsU2NvcGUqIHdvcmtsZXRHbG9iYWxTY29wZSkKKyAgICA6IG1fdm0oVk06
OmNyZWF0ZSgpKQorICAgICwgbV93b3JrbGV0R2xvYmFsU2NvcGUod29ya2xldEdsb2JhbFNjb3Bl
KQorICAgICwgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKCptX3ZtKQoreworICAgIG1fdm0t
PmhlYXAuYWNxdWlyZUFjY2VzcygpOyAvLyBJdCdzIG5vdCBjbGVhciB0aGF0IHdlIGhhdmUgZ29v
ZCBkaXNjaXBsaW5lIGZvciBoZWFwIGFjY2Vzcywgc28gdHVybiBpdCBvbiBwZXJtYW5lbnRseS4K
KyAgICBKU1ZNQ2xpZW50RGF0YTo6aW5pdE5vcm1hbFdvcmxkKG1fdm0uZ2V0KCkpOworfQorCitX
b3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6fldvcmtsZXRTY3JpcHRDb250cm9sbGVyKCkKK3sKKyAg
ICBKU0xvY2tIb2xkZXIgbG9jayh2bSgpKTsKKyAgICBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBw
ZXIuY2xlYXIoKTsKKyAgICBtX3ZtID0gbnVsbHB0cjsKKyAgICBpZiAobV93b3JrbGV0R2xvYmFs
U2NvcGVXcmFwcGVyKSB7CisgICAgICAgIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+Y2xl
YXJET01HdWFyZGVkT2JqZWN0cygpOworICAgICAgICBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBw
ZXItPnNldENvbnNvbGVDbGllbnQobnVsbHB0cik7CisgICAgICAgIG1fY29uc29sZUNsaWVudCA9
IG51bGxwdHI7CisgICAgfQorfQorCit2b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpmb3Ji
aWRFeGVjdXRpb24oKQoreworICAgIEFTU0VSVChtX3dvcmtsZXRHbG9iYWxTY29wZS0+aXNDb250
ZXh0VGhyZWFkKCkpOworICAgIG1fZXhlY3V0aW9uRm9yYmlkZGVuID0gdHJ1ZTsKK30KKworYm9v
bCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6aXNFeGVjdXRpb25Gb3JiaWRkZW4oKSBjb25zdAor
eworICAgIEFTU0VSVChtX3dvcmtsZXRHbG9iYWxTY29wZS0+aXNDb250ZXh0VGhyZWFkKCkpOwor
ICAgIHJldHVybiBtX2V4ZWN1dGlvbkZvcmJpZGRlbjsKK30KKwordm9pZCBXb3JrbGV0U2NyaXB0
Q29udHJvbGxlcjo6ZGlzYWJsZUV2YWwoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCit7Cisg
ICAgaW5pdFNjcmlwdElmTmVlZGVkKCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2sgeyB2bSgpIH07
CisKKyAgICBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPnNldEV2YWxFbmFibGVkKGZhbHNl
LCBlcnJvck1lc3NhZ2UpOworfQorCit2b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpkaXNh
YmxlV2ViQXNzZW1ibHkoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCit7CisgICAgaW5pdFNj
cmlwdElmTmVlZGVkKCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2sgeyB2bSgpIH07CisKKyAgICBt
X3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPnNldFdlYkFzc2VtYmx5RW5hYmxlZChmYWxzZSwg
ZXJyb3JNZXNzYWdlKTsKK30KKworCit0ZW1wbGF0ZTx0eXBlbmFtZSBKU0dsb2JhbFNjb3BlUHJv
dG90eXBlLCB0eXBlbmFtZSBKU0dsb2JhbFNjb3BlLCB0eXBlbmFtZSBHbG9iYWxTY29wZT4KK3Zv
aWQgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHRXaXRoU3ViY2xhc3MoKQorewor
ICAgIEFTU0VSVCghbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKTsKKworICAgIEpTTG9ja0hv
bGRlciBsb2NrIHsgdm0oKSB9OworCisgICAgLy8gRXhwbGljaXRseSBwcm90ZWN0IHRoZSBnbG9i
YWwgb2JqZWN0J3MgcHJvdG90eXBlIHNvIGl0IGlzbid0IGNvbGxlY3RlZAorICAgIC8vIHdoZW4g
d2UgYWxsb2NhdGUgdGhlIGdsb2JhbCBvYmplY3QuIChPbmNlIHRoZSBnbG9iYWwgb2JqZWN0IGlz
IGZ1bGx5CisgICAgLy8gY29uc3RydWN0ZWQsIGl0IGNhbiBtYXJrIGl0cyBvd24gcHJvdG90eXBl
LikKKyAgICBTdHJ1Y3R1cmUqIGNvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUgPSBKU0dsb2JhbFNj
b3BlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoKm1fdm0sIG51bGxwdHIsIGpzTnVsbCgpKTsK
KyAgICBhdXRvKiBjb250ZXh0UHJvdG90eXBlID0gSlNHbG9iYWxTY29wZVByb3RvdHlwZTo6Y3Jl
YXRlKCptX3ZtLCBudWxscHRyLCBjb250ZXh0UHJvdG90eXBlU3RydWN0dXJlKTsKKyAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IEpTR2xvYmFsU2NvcGU6OmNyZWF0ZVN0cnVjdHVyZSgqbV92bSwg
bnVsbHB0ciwgY29udGV4dFByb3RvdHlwZSk7CisgICAgYXV0byogcHJveHlTdHJ1Y3R1cmUgPSBK
U1Byb3h5OjpjcmVhdGVTdHJ1Y3R1cmUoKm1fdm0sIG51bGxwdHIsIGpzTnVsbCgpLCBQdXJlRm9y
d2FyZGluZ1Byb3h5VHlwZSk7CisgICAgYXV0byogcHJveHkgPSBKU1Byb3h5OjpjcmVhdGUoKm1f
dm0sIHByb3h5U3RydWN0dXJlKTsKKworICAgIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci5z
ZXQoKm1fdm0sIEpTR2xvYmFsU2NvcGU6OmNyZWF0ZSgqbV92bSwgc3RydWN0dXJlLCBzdGF0aWNf
Y2FzdDxHbG9iYWxTY29wZSY+KCptX3dvcmtsZXRHbG9iYWxTY29wZSksIHByb3h5KSk7CisgICAg
Y29udGV4dFByb3RvdHlwZVN0cnVjdHVyZS0+c2V0R2xvYmFsT2JqZWN0KCptX3ZtLCBtX3dvcmts
ZXRHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpOworICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmdsb2Jh
bE9iamVjdCgpID09IG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcik7CisgICAgQVNTRVJUKG1f
d29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+c3RydWN0dXJlKCptX3ZtKS0+Z2xvYmFsT2JqZWN0
KCkgPT0gbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKTsKKyAgICBjb250ZXh0UHJvdG90eXBl
LT5zdHJ1Y3R1cmUoKm1fdm0pLT5zZXRHbG9iYWxPYmplY3QoKm1fdm0sIG1fd29ya2xldEdsb2Jh
bFNjb3BlV3JhcHBlci5nZXQoKSk7CisgICAgY29udGV4dFByb3RvdHlwZS0+c3RydWN0dXJlKCpt
X3ZtKS0+c2V0UHJvdG90eXBlV2l0aG91dFRyYW5zaXRpb24oKm1fdm0sIEpTR2xvYmFsU2NvcGU6
OnByb3RvdHlwZSgqbV92bSwgKm1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSkpOwor
CisgICAgcHJveHktPnNldFRhcmdldCgqbV92bSwgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVy
LmdldCgpKTsKKyAgICBwcm94eS0+c3RydWN0dXJlKCptX3ZtKS0+c2V0R2xvYmFsT2JqZWN0KCpt
X3ZtLCBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpOworCisgICAgQVNTRVJUKG1f
d29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3JrbGV0R2xv
YmFsU2NvcGVXcmFwcGVyKTsKKyAgICBBU1NFUlQoYXNPYmplY3QobV93b3JrbGV0R2xvYmFsU2Nv
cGVXcmFwcGVyLT5nZXRQcm90b3R5cGVEaXJlY3QoKm1fdm0pKS0+Z2xvYmFsT2JqZWN0KCkgPT0g
bV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKTsKKworICAgIG1fY29uc29sZUNsaWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8V29ya2xldENvbnNvbGVDbGllbnQ+KCptX3dvcmtsZXRHbG9iYWxTY29w
ZSk7CisgICAgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5zZXRDb25zb2xlQ2xpZW50KG1f
Y29uc29sZUNsaWVudC5nZXQoKSk7Cit9CisKK3ZvaWQgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6
OmluaXRTY3JpcHQoKQoreworICAgIGlmIChpczxQYWludFdvcmtsZXRHbG9iYWxTY29wZT4obV93
b3JrbGV0R2xvYmFsU2NvcGUpKSB7CisgICAgICAgIGluaXRTY3JpcHRXaXRoU3ViY2xhc3M8SlNQ
YWludFdvcmtsZXRHbG9iYWxTY29wZVByb3RvdHlwZSwgSlNQYWludFdvcmtsZXRHbG9iYWxTY29w
ZSwgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBXb3JrbGV0U2NyaXB0Q29udHJv
bGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgU3RyaW5n
KiByZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2UpCit7CisgICAgaWYgKGlzRXhlY3V0aW9uRm9yYmlk
ZGVuKCkpCisgICAgICAgIHJldHVybjsKKworICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiBl
eGNlcHRpb247CisgICAgZXZhbHVhdGUoc291cmNlQ29kZSwgZXhjZXB0aW9uLCByZXR1cm5lZEV4
Y2VwdGlvbk1lc3NhZ2UpOworICAgIGlmIChleGNlcHRpb24pIHsKKyAgICAgICAgSlNMb2NrSG9s
ZGVyIGxvY2sodm0oKSk7CisgICAgICAgIHJlcG9ydEV4Y2VwdGlvbihtX3dvcmtsZXRHbG9iYWxT
Y29wZVdyYXBwZXItPmdsb2JhbEV4ZWMoKSwgZXhjZXB0aW9uKTsKKyAgICB9Cit9CisKKy8vIElt
cG9ydGFudDogVGhlIGNhbGxlciBvZiB0aGlzIGZ1bmN0aW9uIG11c3QgdmVyaWZ5IHRoYXQgdGhl
IHJldHVybmVkIGV4Y2VwdGlvbiBtZXNzYWdlIGRvZXMgbm90IHZpb2xhdGUgQ09SUyBpZiBpdCBp
cyBnb2luZyB0byBiZSBwYXNzZWQgYmFjayB0byBKUy4KK3ZvaWQgV29ya2xldFNjcmlwdENvbnRy
b2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIE5ha2Vk
UHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24sIFN0cmluZyogcmV0dXJuZWRF
eGNlcHRpb25NZXNzYWdlKQoreworICAgIGlmIChpc0V4ZWN1dGlvbkZvcmJpZGRlbigpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpbml0U2NyaXB0SWZOZWVkZWQoKTsKKworICAgIGF1dG8mIHN0
YXRlID0gKm1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+Z2xvYmFsRXhlYygpOworICAgIFZN
JiB2bSA9IHN0YXRlLnZtKCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2sgeyB2bSB9OworCisgICAg
SlNFeGVjU3RhdGU6OnByb2ZpbGVkRXZhbHVhdGUoJnN0YXRlLCBKU0M6OlByb2ZpbGluZ1JlYXNv
bjo6T3RoZXIsIHNvdXJjZUNvZGUuanNTb3VyY2VDb2RlKCksIG1fd29ya2xldEdsb2JhbFNjb3Bl
V3JhcHBlci0+Z2xvYmFsVGhpcygpLCByZXR1cm5lZEV4Y2VwdGlvbik7CisKKyAgICBpZiAocmV0
dXJuZWRFeGNlcHRpb24gJiYgcmV0dXJuZWRFeGNlcHRpb25NZXNzYWdlKSB7CisgICAgICAgIC8v
IFRoaXMgRklYTUUgaXMgZnJvbSBXb3JrZXJTY3JpcHRDb250cm9sbGVyLgorICAgICAgICAvLyBG
SVhNRTogSXQncyBub3QgZ3JlYXQgdGhhdCB0aGlzIGNhbiBydW4gYXJiaXRyYXJ5IGNvZGUgdG8g
c3RyaW5nLWlmeSB0aGUgdmFsdWUgb2YgdGhlIGV4Y2VwdGlvbi4KKyAgICAgICAgLy8gRG8gd2Ug
bmVlZCB0byBkbyBhbnl0aGluZyB0byBoYW5kbGUgdGhhdCBwcm9wZXJseSwgaWYgaXQsIHNheSwg
cmFpc2VzIGFub3RoZXIgZXhjZXB0aW9uPworICAgICAgICAqcmV0dXJuZWRFeGNlcHRpb25NZXNz
YWdlID0gcmV0dXJuZWRFeGNlcHRpb24tPnZhbHVlKCkudG9XVEZTdHJpbmcoJnN0YXRlKTsKKyAg
ICB9Cit9CisKK3ZvaWQgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OnNldEV4Y2VwdGlvbihKU0M6
OkV4Y2VwdGlvbiogZXhjZXB0aW9uKQoreworICAgIGF1dG8qIGV4ZWMgPSBtX3dvcmtsZXRHbG9i
YWxTY29wZVdyYXBwZXItPmdsb2JhbEV4ZWMoKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICB0aHJvd0V4Y2Vw
dGlvbihleGVjLCBzY29wZSwgZXhjZXB0aW9uKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2Ny
aXB0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENv
bnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYTU3OGJiZjlhYjMyMWM5NzAxNDRlYjhmY2UzOGJlZTUz
NjVlODdmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xl
dFNjcmlwdENvbnRyb2xsZXIuaApAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQ1NT
X1BBSU5USU5HX0FQSSkKKworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RlYnVnZ2VyLmg+Cisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSdW5Mb29wVGltZXIuaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9TdHJvbmcuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUg
PHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL05ha2VkUHRyLmg+CisKK25hbWVzcGFjZSBKU0Mg
eworY2xhc3MgVk07Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSlNXb3JrbGV0
R2xvYmFsU2NvcGU7CitjbGFzcyBTY3JpcHRTb3VyY2VDb2RlOworY2xhc3MgV29ya2xldENvbnNv
bGVDbGllbnQ7CitjbGFzcyBXb3JrbGV0R2xvYmFsU2NvcGU7CitjbGFzcyBXb3JrbGV0Q29uc29s
ZUNsaWVudDsKKworY2xhc3MgV29ya2xldFNjcmlwdENvbnRyb2xsZXIgeworICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFdvcmtsZXRTY3JpcHRDb250cm9sbGVyKTsgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CitwdWJsaWM6CisgICAgV29ya2xldFNjcmlwdENvbnRyb2xsZXIoV29ya2xldEdsb2Jh
bFNjb3BlKik7CisgICAgfldvcmtsZXRTY3JpcHRDb250cm9sbGVyKCk7CisKKyAgICBKU1dvcmts
ZXRHbG9iYWxTY29wZSogd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcigpCisgICAgeworICAgICAg
ICBpbml0U2NyaXB0SWZOZWVkZWQoKTsKKyAgICAgICAgcmV0dXJuIG1fd29ya2xldEdsb2JhbFNj
b3BlV3JhcHBlci5nZXQoKTsKKyAgICB9CisKKyAgICB2b2lkIGZvcmJpZEV4ZWN1dGlvbigpOwor
ICAgIGJvb2wgaXNFeGVjdXRpb25Gb3JiaWRkZW4oKSBjb25zdDsKKworICAgIHZvaWQgZGlzYWJs
ZUV2YWwoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOworICAgIHZvaWQgZGlzYWJsZVdlYkFz
c2VtYmx5KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKKworICAgIHZvaWQgZXZhbHVhdGUo
Y29uc3QgU2NyaXB0U291cmNlQ29kZSYsIFN0cmluZyogcmV0dXJuZWRFeGNlcHRpb25NZXNzYWdl
ID0gbnVsbHB0cik7CisgICAgdm9pZCBldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwg
TmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbiwgU3RyaW5nKiByZXR1
cm5lZEV4Y2VwdGlvbk1lc3NhZ2UgPSBudWxscHRyKTsKKworICAgIHZvaWQgc2V0RXhjZXB0aW9u
KEpTQzo6RXhjZXB0aW9uKik7CisKKyAgICBKU0M6OlZNJiB2bSgpIHsgcmV0dXJuICptX3ZtOyB9
CisKK3ByaXZhdGU6CisgICAgdm9pZCBpbml0U2NyaXB0SWZOZWVkZWQoKQorICAgIHsKKyAgICAg
ICAgaWYgKCFtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpCisgICAgICAgICAgICBpbml0U2Ny
aXB0KCk7CisgICAgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdFNjcmlwdCgpOworCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgSlNHbG9iYWxTY29wZVByb3RvdHlwZSwgdHlwZW5hbWUgSlNH
bG9iYWxTY29wZSwgdHlwZW5hbWUgR2xvYmFsU2NvcGU+CisgICAgdm9pZCBpbml0U2NyaXB0V2l0
aFN1YmNsYXNzKCk7CisKKyAgICBib29sIG1fZXhlY3V0aW9uRm9yYmlkZGVuIHsgZmFsc2UgfTsK
KyAgICBSZWZQdHI8SlNDOjpWTT4gbV92bTsKKyAgICBXb3JrbGV0R2xvYmFsU2NvcGUqIG1fd29y
a2xldEdsb2JhbFNjb3BlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXb3JrbGV0Q29uc29sZUNsaWVu
dD4gbV9jb25zb2xlQ2xpZW50OworICAgIEpTQzo6U3Ryb25nPEpTV29ya2xldEdsb2JhbFNjb3Bl
PiBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCAyY2EzZWRlNDVlYzc2ZTJiOTM2ZDM1OWIyNGY0ZTEzODBkM2Q4YmY4Li5lN2ExZTk1
YTVmODYzZmIzNGYyNWM5NmNmNWUzOTlkNjUwODZlMTcyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTgtMTAtMjkg
IEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBuZXcgZ2xvYmFsIG9iamVjdCBhbmQgcHJlbGltaW5hcnkgV29ya2xldHMgc3VwcG9ydCBmb3Ig
Q1NTIHBhaW50aW5nIGFwaQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTkwOTc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2JpbmRpbmdzL21haW4ucHk6CisgICAgICAgIChC
aW5kaW5nc1Rlc3RzLmdlbmVyYXRlX3N1cHBsZW1lbnRhbF9kZXBlbmRlbmN5KToKKyAgICAgICAg
KEJpbmRpbmdzVGVzdHMubWFpbik6CisKIDIwMTgtMTAtMjYgIENvbW1pdCBRdWV1ZSAgPGNvbW1p
dC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIy
Mzc0NzkgYW5kIHIyMzc0ODQuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2Jp
bmRpbmdzL21haW4ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2JpbmRpbmdzL21haW4ucHkK
aW5kZXggMDRjYmQ4NTA1NjczYmQ1YzZmMmU5ZDcwNTIwODFmMTJkNjZjNDRlMi4uMjA5MzdiZWQ2
ZDlkN2I4YTYyMzgwMzg4YjdlZWM1ZWJhZDRiNDkzMSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9iaW5kaW5ncy9tYWluLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
YmluZGluZ3MvbWFpbi5weQpAQCAtNzAsNyArNzAsNyBAQCBjbGFzcyBCaW5kaW5nc1Rlc3RzOgog
ICAgICAgICAgICAgZXhpdF9jb2RlID0gZS5leGl0X2NvZGUKICAgICAgICAgcmV0dXJuIGV4aXRf
Y29kZQogCi0gICAgZGVmIGdlbmVyYXRlX3N1cHBsZW1lbnRhbF9kZXBlbmRlbmN5KHNlbGYsIGlu
cHV0X2RpcmVjdG9yeSwgc3VwcGxlbWVudGFsX2RlcGVuZGVuY3lfZmlsZSwgd2luZG93X2NvbnN0
cnVjdG9yc19maWxlLCB3b3JrZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSwgZGVkaWNh
dGVkd29ya2VyZ2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGUsIHNlcnZpY2V3b3JrZXJnbG9i
YWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSk6CisgICAgZGVmIGdlbmVyYXRlX3N1cHBsZW1lbnRh
bF9kZXBlbmRlbmN5KHNlbGYsIGlucHV0X2RpcmVjdG9yeSwgc3VwcGxlbWVudGFsX2RlcGVuZGVu
Y3lfZmlsZSwgd2luZG93X2NvbnN0cnVjdG9yc19maWxlLCB3b3JrZXJnbG9iYWxzY29wZV9jb25z
dHJ1Y3RvcnNfZmlsZSwgZGVkaWNhdGVkd29ya2VyZ2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2Zp
bGUsIHNlcnZpY2V3b3JrZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSwgd29ya2xldGds
b2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlLCBwYWludHdvcmtsZXRnbG9iYWxzY29wZV9jb25z
dHJ1Y3RvcnNfZmlsZSk6CiAgICAgICAgIGlkbF9maWxlc19saXN0ID0gdGVtcGZpbGUubWtzdGVt
cCgpCiAgICAgICAgIGZvciBpbnB1dF9maWxlIGluIG9zLmxpc3RkaXIoaW5wdXRfZGlyZWN0b3J5
KToKICAgICAgICAgICAgIChuYW1lLCBleHRlbnNpb24pID0gb3MucGF0aC5zcGxpdGV4dChpbnB1
dF9maWxlKQpAQCAtODgsNyArODgsOSBAQCBjbGFzcyBCaW5kaW5nc1Rlc3RzOgogICAgICAgICAg
ICAgICAgJy0td2luZG93Q29uc3RydWN0b3JzRmlsZScsIHdpbmRvd19jb25zdHJ1Y3RvcnNfZmls
ZSwKICAgICAgICAgICAgICAgICctLXdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZScs
IHdvcmtlcmdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlLAogICAgICAgICAgICAgICAgJy0t
ZGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlJywgZGVkaWNhdGVkd29y
a2VyZ2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGUsCi0gICAgICAgICAgICAgICAnLS1zZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlJywgc2VydmljZXdvcmtlcmdsb2Jh
bHNjb3BlX2NvbnN0cnVjdG9yc19maWxlXQorICAgICAgICAgICAgICAgJy0tc2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZScsIHNlcnZpY2V3b3JrZXJnbG9iYWxzY29wZV9j
b25zdHJ1Y3RvcnNfZmlsZSwKKyAgICAgICAgICAgICAgICctLXdvcmtsZXRHbG9iYWxTY29wZUNv
bnN0cnVjdG9yc0ZpbGUnLCB3b3JrbGV0Z2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGUsCisg
ICAgICAgICAgICAgICAnLS1wYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUn
LCBwYWludHdvcmtsZXRnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZV0KIAogICAgICAgICBl
eGl0X2NvZGUgPSAwCiAgICAgICAgIHRyeToKQEAgLTE4NSwxMyArMTg3LDE3IEBAIGNsYXNzIEJp
bmRpbmdzVGVzdHM6CiAgICAgICAgIHdvcmtlcmdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxl
ID0gdGVtcGZpbGUubWtzdGVtcCgpCiAgICAgICAgIGRlZGljYXRlZHdvcmtlcmdsb2JhbHNjb3Bl
X2NvbnN0cnVjdG9yc19maWxlID0gdGVtcGZpbGUubWtzdGVtcCgpCiAgICAgICAgIHNlcnZpY2V3
b3JrZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSA9IHRlbXBmaWxlLm1rc3RlbXAoKQot
ICAgICAgICBpZiBzZWxmLmdlbmVyYXRlX3N1cHBsZW1lbnRhbF9kZXBlbmRlbmN5KGlucHV0X2Rp
cmVjdG9yeSwgc3VwcGxlbWVudGFsX2RlcGVuZGVuY3lfZmlsZVsxXSwgd2luZG93X2NvbnN0cnVj
dG9yc19maWxlWzFdLCB3b3JrZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZVsxXSwgZGVk
aWNhdGVkd29ya2VyZ2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGVbMV0sIHNlcnZpY2V3b3Jr
ZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZVsxXSk6CisgICAgICAgIHdvcmtsZXRnbG9i
YWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSA9IHRlbXBmaWxlLm1rc3RlbXAoKQorICAgICAgICBw
YWludHdvcmtsZXRnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSA9IHRlbXBmaWxlLm1rc3Rl
bXAoKQorICAgICAgICBpZiBzZWxmLmdlbmVyYXRlX3N1cHBsZW1lbnRhbF9kZXBlbmRlbmN5KGlu
cHV0X2RpcmVjdG9yeSwgc3VwcGxlbWVudGFsX2RlcGVuZGVuY3lfZmlsZVsxXSwgd2luZG93X2Nv
bnN0cnVjdG9yc19maWxlWzFdLCB3b3JrZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZVsx
XSwgZGVkaWNhdGVkd29ya2VyZ2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGVbMV0sIHNlcnZp
Y2V3b3JrZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZVsxXSwgd29ya2xldGdsb2JhbHNj
b3BlX2NvbnN0cnVjdG9yc19maWxlWzFdLCBwYWludHdvcmtsZXRnbG9iYWxzY29wZV9jb25zdHJ1
Y3RvcnNfZmlsZVsxXSk6CiAgICAgICAgICAgICBwcmludCgnRmFpbGVkIHRvIGdlbmVyYXRlIGEg
c3VwcGxlbWVudGFsIGRlcGVuZGVuY3kgZmlsZS4nKQogICAgICAgICAgICAgc2VsZi5jbG9zZV9h
bmRfcmVtb3ZlKHN1cHBsZW1lbnRhbF9kZXBlbmRlbmN5X2ZpbGUpCiAgICAgICAgICAgICBzZWxm
LmNsb3NlX2FuZF9yZW1vdmUod2luZG93X2NvbnN0cnVjdG9yc19maWxlKQogICAgICAgICAgICAg
c2VsZi5jbG9zZV9hbmRfcmVtb3ZlKHdvcmtlcmdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxl
KQogICAgICAgICAgICAgc2VsZi5jbG9zZV9hbmRfcmVtb3ZlKGRlZGljYXRlZHdvcmtlcmdsb2Jh
bHNjb3BlX2NvbnN0cnVjdG9yc19maWxlKQogICAgICAgICAgICAgc2VsZi5jbG9zZV9hbmRfcmVt
b3ZlKHNlcnZpY2V3b3JrZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSkKKyAgICAgICAg
ICAgIHNlbGYuY2xvc2VfYW5kX3JlbW92ZSh3b3JrbGV0Z2xvYmFsc2NvcGVfY29uc3RydWN0b3Jz
X2ZpbGUpCisgICAgICAgICAgICBzZWxmLmNsb3NlX2FuZF9yZW1vdmUocGFpbnR3b3JrbGV0Z2xv
YmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGUpCiAgICAgICAgICAgICByZXR1cm4gLTEKIAogICAg
ICAgICBmb3IgZ2VuZXJhdG9yIGluIHNlbGYuZ2VuZXJhdG9yczoKQEAgLTIwNSw2ICsyMTEsOCBA
QCBjbGFzcyBCaW5kaW5nc1Rlc3RzOgogICAgICAgICBzZWxmLmNsb3NlX2FuZF9yZW1vdmUod29y
a2VyZ2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGUpCiAgICAgICAgIHNlbGYuY2xvc2VfYW5k
X3JlbW92ZShkZWRpY2F0ZWR3b3JrZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSkKICAg
ICAgICAgc2VsZi5jbG9zZV9hbmRfcmVtb3ZlKHNlcnZpY2V3b3JrZXJnbG9iYWxzY29wZV9jb25z
dHJ1Y3RvcnNfZmlsZSkKKyAgICAgICAgc2VsZi5jbG9zZV9hbmRfcmVtb3ZlKHdvcmtsZXRnbG9i
YWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSkKKyAgICAgICAgc2VsZi5jbG9zZV9hbmRfcmVtb3Zl
KHBhaW50d29ya2xldGdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlKQogCiAgICAgICAgIGlm
IHNlbGYuanNvbl9maWxlX25hbWU6CiAgICAgICAgICAgICBqc29uX2RhdGEgPSB7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
MWI1ODBkOTQ5MDExZjQ2NDEzYmRjNjNmODQ4OTQ3NjIwNzI0MDU0Yy4uOWRkMmNmZDE4ZjFiOTdj
NTgwZmYyMDY2ZGY1YWVkMWYzNjhkNTliYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE4LTEw
LTI5ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAg
ICBBZGQgbmV3IGdsb2JhbCBvYmplY3QgYW5kIHByZWxpbWluYXJ5IFdvcmtsZXRzIHN1cHBvcnQg
Zm9yIENTUyBwYWludGluZyBhcGkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MDk3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBhIG5ldyB0ZXN0IGhhcm5lc3MgZm9yIHdvcmtsZXQgdGVzdHMsIHNp
bmNlIHRoZXkgZG8gbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBkb20uCisKKyAgICAgICAgKiBmYXN0
L2Nzcy1jdXN0b20tcGFpbnQvYmFzaWMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvY3Nz
LWN1c3RvbS1wYWludC9iYXNpYy5odG1sOgorICAgICAgICAqIGZhc3QvY3NzLWN1c3RvbS1wYWlu
dC9yZWdpc3RlclBhaW50QmluZGluZ3MtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9jc3MtY3VzdG9tLXBhaW50L3JlZ2lzdGVyUGFpbnRCaW5kaW5ncy1leHBlY3RlZC50eHQ6
IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L3JlZ2lzdGVyUGFpbnRC
aW5kaW5ncy5odG1sOgorICAgICAgICAqIGZhc3QvY3NzLWN1c3RvbS1wYWludC9yZXNvdXJjZXMv
dGVzdGhhcm5lc3Mtd29ya2xldC5qczogQWRkZWQuCisgICAgICAgIChmb3JtYXRfdmFsdWUpOgor
ICAgICAgICAqIGZhc3QvY3NzLWN1c3RvbS1wYWludC9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanM6
IEFkZGVkLgorICAgICAgICAoYXN5bmMuaW1wb3J0V29ya2xldCk6CisgICAgICAgICogZmFzdC9j
c3MtY3VzdG9tLXBhaW50L3dvcmtsZXQtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9jc3MtY3VzdG9tLXBhaW50L3dvcmtsZXQuaHRtbDogQWRkZWQuCisKIDIwMTgtMTAtMjYg
IENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMzc0NzkgYW5kIHIyMzc0ODQuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYmFzaWMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2Jhc2ljLWV4cGVjdGVkLnR4dAppbmRleCBlYWEx
NzQzZTQzOTkwMGJmZDczYjBjMTkxNmUzZDJlY2VlNmQ0YjU2Li4wMjA1OWY5ODM1ZTIzNmFhNWU5
OTI5NTUxNDkxNzNiNWQ3NTI1NWE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1j
dXN0b20tcGFpbnQvYmFzaWMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3Nz
LWN1c3RvbS1wYWludC9iYXNpYy1leHBlY3RlZC50eHQKQEAgLTEsMTAgKzEsMyBAQAogCi1QQVNT
IHRlc3QgdGhhdCByZWdpc3RlclBhaW50IHJ1bnMgCi1QQVNTIHRlc3QgdGhhdCByZWdpc3RlclBh
aW50IHJ1bnMgd2l0aG91dCBpbnB1dFByb3BlcnRpZXMgCi1QQVNTIHRlc3QgdGhhdCByZWdpc3Rl
clBhaW50IHJ1bnMgd2l0aCBpbnB1dEFyZ3VtZW50cyAKLVBBU1MgdGVzdCB0aGF0IHJlZ2lzdGVy
UGFpbnQgcnVucyB3aXRoIGNvbnRleHRPcHRpb25zIAotUEFTUyB0ZXN0IHRoYXQgcmVnaXN0ZXJQ
YWludCBydW5zIHdpdGggcHJlZGVmaW5lZCBjbGFzcyAKLVBBU1MgdGVzdCB0aGF0IHJlZ2lzdGVy
UGFpbnQgYWNjZXB0cyBvbmx5IGEgc3RyaW5nIGFuZCBhIGNsYXNzIGNvbnN0cnVjdG9yIAogUEFT
UyB0ZXN0IHRoYXQgdGVzdCBkaXYgaGFzIHBhaW50KCkgdmFsdWUgCi1QQVNTIHRlc3QgdGhhdCB0
ZXN0IGRpdiBwYWludCBjYWxsYmFjayBnZXRzIGNhbGxlZCAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2Jhc2ljLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy1jdXN0b20tcGFpbnQvYmFzaWMuaHRtbAppbmRleCAzZjRkYzNhMmQwMmVmMjFhMmU5NzJk
NGM4YjRmMmZhZThjMzg5NDU4Li40YzhiMGNmNTJlMTZkNWM4ZjAyODc4ZTJjZjc1Nzk1MzQwZTI4
Zjk2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYmFzaWMu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYmFzaWMuaHRtbApA
QCAtMTYsNzAgKzE2LDcgQEAKIDxkaXYgaWQ9InBhaW50Ij48L2Rpdj4KIAogPHNjcmlwdD4KLXRl
c3QoZnVuY3Rpb24oKSB7Ci0gIENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBh
aW50KCd0ZXN0MScsIGNsYXNzIHsKLSAgICBzdGF0aWMgZ2V0IGlucHV0UHJvcGVydGllcygpIHsg
cmV0dXJuIFsiLS10ZXN0Il07IH0KLSAgICBwYWludCgpIHsgfQotICB9KTsKLX0sICd0ZXN0IHRo
YXQgcmVnaXN0ZXJQYWludCBydW5zJyk7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gIENTUy5wYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCd0ZXN0MicsIGNsYXNzIHsKLSAgICBw
YWludCgpIHsgfQotICB9KTsKLX0sICd0ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBydW5zIHdpdGhv
dXQgaW5wdXRQcm9wZXJ0aWVzJyk7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gIENTUy5wYWludFdv
cmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCd0ZXN0MycsIGNsYXNzIHsKLSAgICBzdGF0
aWMgZ2V0IGlucHV0QXJndW1lbnRzKCkgeyByZXR1cm4gWyI8bGVuZ3RoPiJdOyB9Ci0gICAgcGFp
bnQoKSB7IH0KLSAgfSk7Ci19LCAndGVzdCB0aGF0IHJlZ2lzdGVyUGFpbnQgcnVucyB3aXRoIGlu
cHV0QXJndW1lbnRzJyk7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gIENTUy5wYWludFdvcmtsZXRH
bG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCd0ZXN0NCcsIGNsYXNzIHsKLSAgICBzdGF0aWMgZ2V0
IGNvbnRleHRPcHRpb25zKCkgeyByZXR1cm4geyBhbHBoYTogdHJ1ZSB9OyB9Ci0gICAgcGFpbnQo
KSB7IH0KLSAgfSk7Ci19LCAndGVzdCB0aGF0IHJlZ2lzdGVyUGFpbnQgcnVucyB3aXRoIGNvbnRl
eHRPcHRpb25zJyk7Ci0KLWNsYXNzIE15UGFpbnQgewotICBwYWludCgpIHsgfQotfQotCi10ZXN0
KGZ1bmN0aW9uKCkgewotICBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWlu
dCgndGVzdDUnLCBNeVBhaW50KTsKLSAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnSW52YWxpZE1v
ZGlmaWNhdGlvbkVycm9yJ30sICgpID0+IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdp
c3RlclBhaW50KCd0ZXN0NScsIE15UGFpbnQpKTsKLSAgQ1NTLnBhaW50V29ya2xldEdsb2JhbFNj
b3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3Q2JywgY2xhc3MgZXh0ZW5kcyBNeVBhaW50IHsgfSk7Ci19
LCAndGVzdCB0aGF0IHJlZ2lzdGVyUGFpbnQgcnVucyB3aXRoIHByZWRlZmluZWQgY2xhc3MnKTsK
LQotdGVzdChmdW5jdGlvbigpIHsKLSAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnSW52YWxpZE1v
ZGlmaWNhdGlvbkVycm9yJ30sICgpID0+IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdp
c3RlclBhaW50KCd0ZXN0NicsICd0ZXN0JykpOwotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJy
b3IoKSwgKCkgPT4gQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rl
c3Q3JykpOwotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gQ1NTLnBhaW50
V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3Q4JywgW10pKTsKLSAgYXNzZXJ0
X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5yZWdpc3RlclBhaW50KCd0ZXN0OScsIHt9KSk7Ci0gIGFzc2VydF90aHJvd3MobmV3IFR5cGVF
cnJvcigpLCAoKSA9PiBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgn
dGVzdDEwJywgNSkpOwotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gQ1NT
LnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJycsIDUpKTsKLX0sICd0ZXN0
IHRoYXQgcmVnaXN0ZXJQYWludCBhY2NlcHRzIG9ubHkgYSBzdHJpbmcgYW5kIGEgY2xhc3MgY29u
c3RydWN0b3InKTsKLQogdGVzdChmdW5jdGlvbigpIHsKICAgYXNzZXJ0X2VxdWFscyhnZXRDb21w
dXRlZFN0eWxlKHBhaW50KS5nZXRQcm9wZXJ0eVZhbHVlKCJiYWNrZ3JvdW5kLWltYWdlIiksICJw
YWludChteS1wYWludCkiKTsKIH0sICd0ZXN0IHRoYXQgdGVzdCBkaXYgaGFzIHBhaW50KCkgdmFs
dWUnKTsKLQotbGV0IHBhaW50X2NhbGxlZF90ZXN0ID0gYXN5bmNfdGVzdCgndGVzdCB0aGF0IHRl
c3QgZGl2IHBhaW50IGNhbGxiYWNrIGdldHMgY2FsbGVkJyk7Ci1wYWludF9jYWxsZWRfdGVzdC5z
dGVwKGZ1bmN0aW9uKCkgewotICBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQ
YWludCgnbXktcGFpbnQnLCBjbGFzcyB7Ci0gICAgcGFpbnQoY3R4LCBnZW9tLCBwcm9wZXJ0aWVz
KSB7Ci0gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKyl7Ci0gICAgICAgIGZvciAodmFy
IGogPSAwOyBqIDwgNjsgaisrKXsKLSAgICAgICAgICBjdHguZmlsbFN0eWxlID0gJ3JnYignICsg
TWF0aC5mbG9vcigyNTUgLSA0Mi41ICogaSkgKyAnLCcgKwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTWF0aC5mbG9vcigyNTUgLSA0Mi41ICogaikgKyAnLDApJzsKLSAgICAgICAgICBjdHgu
ZmlsbFJlY3QoaiAqIDI1LCBpICogMjUsIDI1LCAyNSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAg
ICAgIHBhaW50X2NhbGxlZF90ZXN0LmRvbmUoKTsKLSAgICB9Ci0gIH0pOwotfSk7Ci0KIDwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3JlZ2lz
dGVyUGFpbnRCaW5kaW5ncy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3Vz
dG9tLXBhaW50L3JlZ2lzdGVyUGFpbnRCaW5kaW5ncy1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRiNDJiNjJkYTEzZWRhODE5NjEwYjMxOTdiNGU0NWE1NDczYmRjZjMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVnaXN0ZXJQYWludEJpbmRp
bmdzLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxNiBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3
ZWJraXQtdGVzdC1ydW5uZXIgWyBleHBlcmltZW50YWw6Q1NTUGFpbnRpbmdBUElFbmFibGVkPXRy
dWUgXSAtLT4KKworPGNhbnZhcyBpZD0icGFpbnQiIHdpZHRoPSIxNTBweCIgaGVpZ2h0PSIxNTBw
eCIgPjwvY2FudmFzPgorCis8c2NyaXB0IGlkPSJjb2RlIj4KK3ZhciBjYW52YXMgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgncGFpbnQnKTsKK3ZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgn
MmQnKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspeworICBmb3IgKHZhciBqID0gMDsg
aiA8IDY7IGorKyl7CisgICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2IoJyArIE1hdGguZmxvb3IoMjU1
IC0gNDIuNSAqIGkpICsgJywnICsKKyAgICAgICAgICAgICAgICAgICAgIE1hdGguZmxvb3IoMjU1
IC0gNDIuNSAqIGopICsgJywwKSc7CisgICAgY3R4LmZpbGxSZWN0KGogKiAyNSwgaSAqIDI1LCAy
NSwgMjUpOworICB9Cit9Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzLWN1c3RvbS1wYWludC9yZWdpc3RlclBhaW50QmluZGluZ3MtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3JlZ2lzdGVyUGFpbnRCaW5kaW5ncy1leHBl
Y3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwMTQzMTUyYmQ4NmM5ZGIw
ZDk3MjkyNDIyZDViOGFmODhhNTEwNmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3JlZ2lzdGVy
UGFpbnRCaW5kaW5ncy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBA
Ci0KLVBBU1MgcmVnaXN0ZXJQYWludCBtdXN0IGJlIGEgbWV0aG9kIAotUEFTUyBtdXN0IGdldCAi
cHJvdG90eXBlIiBwcm9wZXJ0eSBvZiB0aGUgY29uc3RydWN0b3IgCi1QQVNTIG11c3QgcmV0aHJv
dyBhbiBleGNlcHRpb24gdGhyb3duIHdoaWxlIGdldHRpbmcgImlucHV0UHJvcGVydGllcyIgcHJv
cGVydHkgb2YgdGhlIGNvbnN0cnVjdG9yIAotUEFTUyBtdXN0IHJldGhyb3cgYW4gZXhjZXB0aW9u
IHRocm93biB3aGlsZSBnZXR0aW5nICJwcm90b3R5cGUiIHByb3BlcnR5IG9mIHRoZSBjb25zdHJ1
Y3RvciAKLVBBU1MgbXVzdCB0aHJvdyB3aGVuICJwcm90b3R5cGUiIHByb3BlcnR5IG9mIHRoZSBj
b25zdHJ1Y3RvciBpcyBub3QgYW4gb2JqZWN0IAotUEFTUyBtdXN0IGdldCBwYWludCBjYWxsYmFj
ayBvZiB0aGUgY29uc3RydWN0b3IgcHJvdG90eXBlIAotUEFTUyBtdXN0IHJldGhyb3cgYW4gZXhj
ZXB0aW9uIHRocm93biB3aGlsZSBnZXR0aW5nIHBhaW50IGNhbGxiYWNrIG9uIHRoZSBjb25zdHJ1
Y3RvciBwcm90b3R5cGUgCi1QQVNTIG11c3QgcmV0aHJvdyBhbiBleGNlcHRpb24gdGhyb3duIHdo
aWxlIGNvbnZlcnRpbmcgcGFpbnQgY2FsbGJhY2sgdmFsdWUgdG8gRnVuY3Rpb24gY2FsbGJhY2sg
dHlwZSAKLVBBU1MgbXVzdCByZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgY29udmVy
dGluZyB0aGUgdmFsdWUgb2YgaW5wdXRBcmd1bWVudHMgdG8gc2VxdWVuY2U8RE9NU3RyaW5nPiAK
LVBBU1MgbXVzdCByZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgaXRlcmF0aW5nIG92
ZXIgaW5wdXRBcmd1bWVudHMgdG8gc2VxdWVuY2U8RE9NU3RyaW5nPiAKLVBBU1MgbXVzdCByZXRo
cm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgcmV0cmlldmluZyBTeW1ib2wuaXRlcmF0b3Ig
b24gaW5wdXRBcmd1bWVudHMgCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1
c3RvbS1wYWludC9yZWdpc3RlclBhaW50QmluZGluZ3MuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzLWN1c3RvbS1wYWludC9yZWdpc3RlclBhaW50QmluZGluZ3MuaHRtbAppbmRleCBkYzkwMmM0
Y2Q2NTkxMGQ1YjE4Y2FlMTU0ZWYzMzhjYTk4OThiY2RjLi5mMTZiZDg0MzcyOTdhZDI2MDljZWQ2
Njg2ZDQ3YjgyZDFkZjZlNjFjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0
b20tcGFpbnQvcmVnaXN0ZXJQYWludEJpbmRpbmdzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9jc3MtY3VzdG9tLXBhaW50L3JlZ2lzdGVyUGFpbnRCaW5kaW5ncy5odG1sCkBAIC0yLDE3ICsy
LDY0IEBACiA8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxlPSJKdXN0aW4gTWljaGF1ZCIgaHJlZj0i
bWFpbHRvOmp1c3Rpbl9taWNoYXVkQHdlYmtpdC5vcmciPgogPG1ldGEgbmFtZT0iYXNzZXJ0IiBj
b250ZW50PSJyZWdpc3RlclBhaW50IGFjY2Vzc2VzIGFyZ3VtZW50cyBpbiB0aGUgY29ycmVjdCBv
cmRlciI+CiA8bGluayByZWw9ImhlbHAiIGNvbnRlbnQ9Imh0dHBzOi8vZHJhZnRzLmNzcy1ob3Vk
aW5pLm9yZy9jc3MtcGFpbnQtYXBpLTEvIj4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisKKzxzdHlsZT4KKyAgI3BhaW50IHsK
KyAgICBiYWNrZ3JvdW5kLWltYWdlOiBwYWludChteS1wYWludCk7CisgICAgd2lkdGg6IDE1MHB4
OworICAgIGhlaWdodDogMTUwcHg7CisgIH0KKzwvc3R5bGU+CisKKzxkaXYgaWQ9InBhaW50Ij48
L2Rpdj4KKworPHNjcmlwdCBpZD0iY29kZSIgdHlwZT0idGV4dC93b3JrbGV0Ij4KIGNsYXNzIE15
UGFpbnQgewogICBwYWludCgpIHsgfQogfQogCi10ZXN0KGZ1bmN0aW9uICgpIHsKLSAgICBhc3Nl
cnRfdHJ1ZSgncmVnaXN0ZXJQYWludCcgaW4gQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLl9f
cHJvdG9fXywgJyJyZWdpc3RlclBhaW50IiBleGlzdHMgb24gcHJvdG90eXBlJyk7Ci0gICAgYXNz
ZXJ0X3RydWUoJ3JlZ2lzdGVyUGFpbnQnIGluIENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZSwg
JyJyZWdpc3RlclBhaW50IiBleGlzdHMgb24gd2luZG93Jyk7Ci19LCAncmVnaXN0ZXJQYWludCBt
dXN0IGJlIGEgbWV0aG9kJyk7Cit0ZXN0KGZ1bmN0aW9uKCkgeworICByZWdpc3RlclBhaW50KCdi
YXNpYzEnLCBjbGFzcyB7CisgICAgc3RhdGljIGdldCBpbnB1dFByb3BlcnRpZXMoKSB7IHJldHVy
biBbIi0tdGVzdCJdOyB9CisgICAgcGFpbnQoKSB7IH0KKyAgfSk7Cit9LCAndGVzdCB0aGF0IHJl
Z2lzdGVyUGFpbnQgcnVucycpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICByZWdpc3RlclBhaW50
KCdiYXNpYzInLCBjbGFzcyB7CisgICAgcGFpbnQoKSB7IH0KKyAgfSk7Cit9LCAndGVzdCB0aGF0
IHJlZ2lzdGVyUGFpbnQgcnVucyB3aXRob3V0IGlucHV0UHJvcGVydGllcycpOworCit0ZXN0KGZ1
bmN0aW9uKCkgeworICByZWdpc3RlclBhaW50KCdiYXNpYzMnLCBjbGFzcyB7CisgICAgc3RhdGlj
IGdldCBpbnB1dEFyZ3VtZW50cygpIHsgcmV0dXJuIFsiPGxlbmd0aD4iXTsgfQorICAgIHBhaW50
KCkgeyB9CisgIH0pOworfSwgJ3Rlc3QgdGhhdCByZWdpc3RlclBhaW50IHJ1bnMgd2l0aCBpbnB1
dEFyZ3VtZW50cycpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICByZWdpc3RlclBhaW50KCdiYXNp
YzQnLCBjbGFzcyB7CisgICAgc3RhdGljIGdldCBjb250ZXh0T3B0aW9ucygpIHsgcmV0dXJuIHsg
YWxwaGE6IHRydWUgfTsgfQorICAgIHBhaW50KCkgeyB9CisgIH0pOworfSwgJ3Rlc3QgdGhhdCBy
ZWdpc3RlclBhaW50IHJ1bnMgd2l0aCBjb250ZXh0T3B0aW9ucycpOworCit0ZXN0KGZ1bmN0aW9u
KCkgeworICByZWdpc3RlclBhaW50KCdiYXNpYzUnLCBNeVBhaW50KTsKKyAgYXNzZXJ0X3Rocm93
cyh7J25hbWUnOiAnSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yJ30sICgpID0+IHJlZ2lzdGVyUGFp
bnQoJ2Jhc2ljNScsIE15UGFpbnQpKTsKKyAgcmVnaXN0ZXJQYWludCgnYmFzaWM2JywgY2xhc3Mg
ZXh0ZW5kcyBNeVBhaW50IHsgfSk7Cit9LCAndGVzdCB0aGF0IHJlZ2lzdGVyUGFpbnQgcnVucyB3
aXRoIHByZWRlZmluZWQgY2xhc3MnKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgYXNzZXJ0X3Ro
cm93cyh7J25hbWUnOiAnVHlwZUVycm9yJ30sICgpID0+IHJlZ2lzdGVyUGFpbnQoJ2Jhc2ljNics
ICd0ZXN0JykpOworICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gcmVnaXN0
ZXJQYWludCgnYmFzaWM4JykpOworICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkg
PT4gcmVnaXN0ZXJQYWludCgnYmFzaWM5JywgW10pKTsKKyAgYXNzZXJ0X3Rocm93cyhuZXcgVHlw
ZUVycm9yKCksICgpID0+IHJlZ2lzdGVyUGFpbnQoJ2Jhc2ljMTAnLCB7fSkpOworICBhc3NlcnRf
dGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gcmVnaXN0ZXJQYWludCgnYmFzaWMxMScsIDUp
KTsKKyAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHJlZ2lzdGVyUGFpbnQo
JycsIDUpKTsKK30sICd0ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBhY2NlcHRzIG9ubHkgYSBzdHJp
bmcgYW5kIGEgY2xhc3MgY29uc3RydWN0b3InKTsKIAogdGVzdChmdW5jdGlvbiAoKSB7CiAgICAg
Y29uc3QgY2FsbHMgPSBbXTsKQEAgLTIyLDcgKzY5LDcgQEAgdGVzdChmdW5jdGlvbiAoKSB7CiAg
ICAgICAgICAgICByZXR1cm4gdGFyZ2V0W25hbWVdOwogICAgICAgICB9CiAgICAgfSk7Ci0gICAg
Q1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3QtcHJvdG8nLCBw
cm94eSk7CisgICAgcmVnaXN0ZXJQYWludCgndGVzdC1wcm90bycsIHByb3h5KTsKICAgICBhc3Nl
cnRfYXJyYXlfZXF1YWxzKGNhbGxzLCBbImlucHV0UHJvcGVydGllcyIsICJpbnB1dEFyZ3VtZW50
cyIsICJjb250ZXh0T3B0aW9ucyIsICJwcm90b3R5cGUiXSk7CiB9LCAnbXVzdCBnZXQgInByb3Rv
dHlwZSIgcHJvcGVydHkgb2YgdGhlIGNvbnN0cnVjdG9yJyk7CiAKQEAgLTM2LDcgKzgzLDcgQEAg
dGVzdChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0W25hbWVdOwogICAg
ICAgICB9CiAgICAgfSk7Ci0gICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnZXhwZWN0ZWRFcnJv
cid9LCBmdW5jdGlvbiAoKSB7IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBh
aW50KCd0ZXN0LXJldGhyb3ctaW5wdXRQcm9wZXJ0aWVzMCcsIHByb3h5KTsgfSk7CisgICAgYXNz
ZXJ0X3Rocm93cyh7J25hbWUnOiAnZXhwZWN0ZWRFcnJvcid9LCBmdW5jdGlvbiAoKSB7IHJlZ2lz
dGVyUGFpbnQoJ3Rlc3QtcmV0aHJvdy1pbnB1dFByb3BlcnRpZXMwJywgcHJveHkpOyB9KTsKIH0s
ICdtdXN0IHJldGhyb3cgYW4gZXhjZXB0aW9uIHRocm93biB3aGlsZSBnZXR0aW5nICJpbnB1dFBy
b3BlcnRpZXMiIHByb3BlcnR5IG9mIHRoZSBjb25zdHJ1Y3RvcicpOwogCiB0ZXN0KGZ1bmN0aW9u
ICgpIHsKQEAgLTQ5LDcgKzk2LDcgQEAgdGVzdChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBy
ZXR1cm4gdGFyZ2V0W25hbWVdOwogICAgICAgICB9CiAgICAgfSk7Ci0gICAgYXNzZXJ0X3Rocm93
cyh7J25hbWUnOiAnZXhwZWN0ZWRFcnJvcid9LCBmdW5jdGlvbiAoKSB7IENTUy5wYWludFdvcmts
ZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCd0ZXN0LXJldGhyb3ctcHJvdG8nLCBwcm94eSk7
IH0pOworICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ2V4cGVjdGVkRXJyb3InfSwgZnVuY3Rp
b24gKCkgeyByZWdpc3RlclBhaW50KCd0ZXN0LXJldGhyb3ctcHJvdG8nLCBwcm94eSk7IH0pOwog
fSwgJ211c3QgcmV0aHJvdyBhbiBleGNlcHRpb24gdGhyb3duIHdoaWxlIGdldHRpbmcgInByb3Rv
dHlwZSIgcHJvcGVydHkgb2YgdGhlIGNvbnN0cnVjdG9yJyk7CiAKIHRlc3QoZnVuY3Rpb24gKCkg
ewpAQCAtNjMsMTYgKzExMCwxNiBAQCB0ZXN0KGZ1bmN0aW9uICgpIHsKICAgICB9KTsKIAogICAg
IHJldHVybmVkVmFsdWUgPSBudWxsOwotICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1R5cGVF
cnJvcid9LCBmdW5jdGlvbiAoKSB7IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3Rl
clBhaW50KCd0ZXN0LXJldGhyb3ctcHJvdG8tbm9vYmoxJywgcHJveHkpOyB9LAorICAgIGFzc2Vy
dF90aHJvd3MoeyduYW1lJzogJ1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IHJlZ2lzdGVyUGFp
bnQoJ3Rlc3QtcmV0aHJvdy1wcm90by1ub29iajEnLCBwcm94eSk7IH0sCiAgICAgICAgICdtdXN0
IHRocm93IHdoZW4gInByb3RvdHlwZSIgcHJvcGVydHkgb2YgdGhlIGNvbnN0cnVjdG9yIGlzIG51
bGwnKTsKICAgICByZXR1cm5lZFZhbHVlID0gdW5kZWZpbmVkOwotICAgIGFzc2VydF90aHJvd3Mo
eyduYW1lJzogJ1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IENTUy5wYWludFdvcmtsZXRHbG9i
YWxTY29wZS5yZWdpc3RlclBhaW50KCd0ZXN0LXJldGhyb3ctcHJvdG8tbm9vYmoyJywgcHJveHkp
OyB9LAorICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1R5cGVFcnJvcid9LCBmdW5jdGlvbiAo
KSB7IHJlZ2lzdGVyUGFpbnQoJ3Rlc3QtcmV0aHJvdy1wcm90by1ub29iajInLCBwcm94eSk7IH0s
CiAgICAgICAgICdtdXN0IHRocm93IHdoZW4gInByb3RvdHlwZSIgcHJvcGVydHkgb2YgdGhlIGNv
bnN0cnVjdG9yIGlzIHVuZGVmaW5lZCcpOwogICAgIHJldHVybmVkVmFsdWUgPSAnaGVsbG8nOwot
ICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IENT
Uy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCd0ZXN0LXJldGhyb3ctcHJv
dG8tbm9vYmozJywgcHJveHkpOzsgfSwKKyAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBl
RXJyb3InfSwgZnVuY3Rpb24gKCkgeyByZWdpc3RlclBhaW50KCd0ZXN0LXJldGhyb3ctcHJvdG8t
bm9vYmozJywgcHJveHkpOzsgfSwKICAgICAgICAgJ211c3QgdGhyb3cgd2hlbiAicHJvdG90eXBl
IiBwcm9wZXJ0eSBvZiB0aGUgY29uc3RydWN0b3IgaXMgYSBzdHJpbmcnKTsKICAgICByZXR1cm5l
ZFZhbHVlID0gMTsKLSAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwgZnVu
Y3Rpb24gKCkgeyBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgndGVz
dC1yZXRocm93LXByb3RvLW5vb2JqNCcsIHByb3h5KTs7IH0sCisgICAgYXNzZXJ0X3Rocm93cyh7
J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgcmVnaXN0ZXJQYWludCgndGVzdC1y
ZXRocm93LXByb3RvLW5vb2JqNCcsIHByb3h5KTs7IH0sCiAgICAgICAgICdtdXN0IHRocm93IHdo
ZW4gInByb3RvdHlwZSIgcHJvcGVydHkgb2YgdGhlIGNvbnN0cnVjdG9yIGlzIGEgbnVtYmVyJyk7
CiAKIH0sICdtdXN0IHRocm93IHdoZW4gInByb3RvdHlwZSIgcHJvcGVydHkgb2YgdGhlIGNvbnN0
cnVjdG9yIGlzIG5vdCBhbiBvYmplY3QnKTsKQEAgLTg3LDcgKzEzNCw3IEBAIHRlc3QoZnVuY3Rp
b24gKCkgewogICAgICAgICAgICAgcmV0dXJuIHRhcmdldFtuYW1lXTsKICAgICAgICAgfQogICAg
IH0pOwotICAgIENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCdjYWxs
YmFja3MnLCBjb25zdHJ1Y3Rvcik7CisgICAgcmVnaXN0ZXJQYWludCgnY2FsbGJhY2tzJywgY29u
c3RydWN0b3IpOwogICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2FsbHMsIFsncGFpbnQnXSk7CiB9
LCAnbXVzdCBnZXQgcGFpbnQgY2FsbGJhY2sgb2YgdGhlIGNvbnN0cnVjdG9yIHByb3RvdHlwZScp
OwogCkBAIC0xMDIsNyArMTQ5LDcgQEAgdGVzdChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBy
ZXR1cm4gdGFyZ2V0W25hbWVdOwogICAgICAgICB9CiAgICAgfSk7Ci0gICAgYXNzZXJ0X3Rocm93
cyh7J25hbWUnOiAnZXhwZWN0ZWRFcnJvcid9LCBmdW5jdGlvbiAoKSB7IENTUy5wYWludFdvcmts
ZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCdjYWxsYmFja3MtdGhyb3cnLCBjb25zdHJ1Y3Rv
cik7IH0pOworICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ2V4cGVjdGVkRXJyb3InfSwgZnVu
Y3Rpb24gKCkgeyByZWdpc3RlclBhaW50KCdjYWxsYmFja3MtdGhyb3cnLCBjb25zdHJ1Y3Rvcik7
IH0pOwogICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2FsbHMsIFsncGFpbnQnXSk7CiB9LCAnbXVz
dCByZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgZ2V0dGluZyBwYWludCBjYWxsYmFj
ayBvbiB0aGUgY29uc3RydWN0b3IgcHJvdG90eXBlJyk7CiAKQEAgLTExNyw3ICsxNjQsNyBAQCB0
ZXN0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIHJldHVybiB0YXJnZXRbbmFtZV07CiAgICAg
ICAgIH0KICAgICB9KTsKLSAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwg
ZnVuY3Rpb24gKCkgeyBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgn
Y2FsbGJhY2tzLXRocm93MicsIGNvbnN0cnVjdG9yKTsgfSk7CisgICAgYXNzZXJ0X3Rocm93cyh7
J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgcmVnaXN0ZXJQYWludCgnY2FsbGJh
Y2tzLXRocm93MicsIGNvbnN0cnVjdG9yKTsgfSk7CiAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhj
YWxscywgWydwYWludCddKTsKIH0sICdtdXN0IHJldGhyb3cgYW4gZXhjZXB0aW9uIHRocm93biB3
aGlsZSBjb252ZXJ0aW5nIHBhaW50IGNhbGxiYWNrIHZhbHVlIHRvIEZ1bmN0aW9uIGNhbGxiYWNr
IHR5cGUnKTsKIApAQCAtMTMxLDcgKzE3OCw3IEBAIHRlc3QoZnVuY3Rpb24gKCkgewogICAgICAg
ICAgIHJldHVybiB0YXJnZXRbbmFtZV07CiAgICAgICB9CiAgIH0pOwotICBhc3NlcnRfdGhyb3dz
KHsnbmFtZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBDU1MucGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUucmVnaXN0ZXJQYWludCgnc2VxdWVuY2UtdGhyb3cnLCBwcm94eSk7IH0pOworICBh
c3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyByZWdpc3Rl
clBhaW50KCdzZXF1ZW5jZS10aHJvdycsIHByb3h5KTsgfSk7CiAgIGFzc2VydF9hcnJheV9lcXVh
bHMoY2FsbHMsIFsiaW5wdXRQcm9wZXJ0aWVzIiwgImlucHV0QXJndW1lbnRzIl0pOwogfSwgJ211
c3QgcmV0aHJvdyBhbiBleGNlcHRpb24gdGhyb3duIHdoaWxlIGNvbnZlcnRpbmcgdGhlIHZhbHVl
IG9mIGlucHV0QXJndW1lbnRzIHRvIHNlcXVlbmNlPERPTVN0cmluZz4nKTsKIApAQCAtMTQxLDEy
ICsxODgsMzYgQEAgdGVzdChmdW5jdGlvbiAoKSB7CiAgICAgICAgIHlpZWxkICc8bGVuZ3RoPic7
CiAgICAgICAgIHRocm93IHtuYW1lOiAnU29tZUVycm9yJ307CiAgICAgfX07Ci0gICAgYXNzZXJ0
X3Rocm93cyh7J25hbWUnOiAnU29tZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgQ1NTLnBhaW50V29y
a2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3NlcXVlbmNlLXRocm93MicsIGNvbnN0cnVj
dG9yKTsgfSk7CisgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnU29tZUVycm9yJ30sIGZ1bmN0
aW9uICgpIHsgcmVnaXN0ZXJQYWludCgnc2VxdWVuY2UtdGhyb3cyJywgY29uc3RydWN0b3IpOyB9
KTsKIH0sICdtdXN0IHJldGhyb3cgYW4gZXhjZXB0aW9uIHRocm93biB3aGlsZSBpdGVyYXRpbmcg
b3ZlciBpbnB1dEFyZ3VtZW50cyB0byBzZXF1ZW5jZTxET01TdHJpbmc+Jyk7CiAKIHRlc3QoZnVu
Y3Rpb24gKCkgewogICAgIGNvbnN0IGNvbnN0cnVjdG9yID0gZnVuY3Rpb24gKCkge30KICAgICBj
b25zdHJ1Y3Rvci5pbnB1dEFyZ3VtZW50cyA9IHtbU3ltYm9sLml0ZXJhdG9yXTogMX07Ci0gICAg
YXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgQ1NTLnBh
aW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3N5bWJvbC1pdGVyYXRvci10aHJv
dzInLCBjb25zdHJ1Y3Rvcik7IH0pOworICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1R5cGVF
cnJvcid9LCBmdW5jdGlvbiAoKSB7IHJlZ2lzdGVyUGFpbnQoJ3N5bWJvbC1pdGVyYXRvci10aHJv
dzInLCBjb25zdHJ1Y3Rvcik7IH0pOwogfSwgJ211c3QgcmV0aHJvdyBhbiBleGNlcHRpb24gdGhy
b3duIHdoaWxlIHJldHJpZXZpbmcgU3ltYm9sLml0ZXJhdG9yIG9uIGlucHV0QXJndW1lbnRzJyk7
CisKK2Fzc2VydF90cnVlKFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmhhc1J1bkFUZXN0KTsKK2lm
IChQYWludFdvcmtsZXRHbG9iYWxTY29wZS5lcnJvcnMpIHsKKyAgY29uc29sZS5sb2coIlRoZSBm
b2xsb3dpbmcgKCIgKyBQYWludFdvcmtsZXRHbG9iYWxTY29wZS5lcnJvcnMubGVuZ3RoICsgIikg
dGVzdHMgZmFpbGVkOiAiKQorICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShQYWludFdvcmts
ZXRHbG9iYWxTY29wZS5lcnJvcnMpKTsKKyAgYXNzZXJ0X3RydWUoZmFsc2UpOworfQorCitjbGFz
cyBNeVBhaW50MiB7CisgIHBhaW50KGN0eCwgZ2VvbSwgcHJvcGVydGllcykgeworICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgNjsgaSsrKXsKKyAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgNjsgaisr
KXsKKyAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2IoJyArIE1hdGguZmxvb3IoMjU1IC0gNDIu
NSAqIGkpICsgJywnICsKKyAgICAgICAgICAgICAgICAgICAgICAgICBNYXRoLmZsb29yKDI1NSAt
IDQyLjUgKiBqKSArICcsMCknOworICAgICAgICBjdHguZmlsbFJlY3QoaiAqIDI1LCBpICogMjUs
IDI1LCAyNSk7CisgICAgICB9CisgICAgfQorICB9Cit9CityZWdpc3RlclBhaW50KCdteS1wYWlu
dCcsIE15UGFpbnQyKTsKKzwvc2NyaXB0PgorCis8c2NyaXB0PgorICBpbXBvcnRXb3JrbGV0KENT
Uy5wYWludFdvcmtsZXQsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2RlJykudGV4dENvbnRl
bnQpOwogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20t
cGFpbnQvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLXdvcmtsZXQuanMgYi9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy1jdXN0b20tcGFpbnQvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLXdvcmtsZXQuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNDVjM2U3NGVlNmMxMzE0MTljMTY4OWVlODlkMDFhNDFhYTcwMmVjYwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9yZXNvdXJjZXMvdGVz
dGhhcm5lc3Mtd29ya2xldC5qcwpAQCAtMCwwICsxLDczOSBAQAorLy8gVGhlc2UgYXJlIGhlbHBl
cnMgdG8gYmUgZXZhbHVhdGVkIGluc2lkZSBhIHdvcmtsZXQKKy8vIFRoZXkgYXJlIG1vc3RseSBm
cm9tIHRoZSB3cHQgdGVzdGhhcm5lc3MuanMuCisKKy8qCisgKiBDb252ZXJ0IGEgdmFsdWUgdG8g
YSBuaWNlLCBodW1hbi1yZWFkYWJsZSBzdHJpbmcKKyAqLworZnVuY3Rpb24gZm9ybWF0X3ZhbHVl
KHZhbCwgc2VlbikKK3sKKyAgICBpZiAoIXNlZW4pIHsKKyAgICAgICAgc2VlbiA9IFtdOworICAg
IH0KKyAgICBpZiAodHlwZW9mIHZhbCA9PT0gIm9iamVjdCIgJiYgdmFsICE9PSBudWxsKSB7Cisg
ICAgICAgIGlmIChzZWVuLmluZGV4T2YodmFsKSA+PSAwKSB7CisgICAgICAgICAgICByZXR1cm4g
IlsuLi5dIjsKKyAgICAgICAgfQorICAgICAgICBzZWVuLnB1c2godmFsKTsKKyAgICB9CisgICAg
aWYgKEFycmF5LmlzQXJyYXkodmFsKSkgeworICAgICAgICByZXR1cm4gIlsiICsgdmFsLm1hcChm
dW5jdGlvbih4KSB7cmV0dXJuIGZvcm1hdF92YWx1ZSh4LCBzZWVuKTt9KS5qb2luKCIsICIpICsg
Il0iOworICAgIH0KKworICAgIHN3aXRjaCAodHlwZW9mIHZhbCkgeworICAgIGNhc2UgInN0cmlu
ZyI6CisgICAgICAgIHZhbCA9IHZhbC5yZXBsYWNlKCJcXCIsICJcXFxcIik7CisgICAgICAgIGZv
ciAodmFyIHAgaW4gcmVwbGFjZW1lbnRzKSB7CisgICAgICAgICAgICB2YXIgcmVwbGFjZSA9ICJc
XCIgKyByZXBsYWNlbWVudHNbcF07CisgICAgICAgICAgICB2YWwgPSB2YWwucmVwbGFjZShSZWdF
eHAoU3RyaW5nLmZyb21DaGFyQ29kZShwKSwgImciKSwgcmVwbGFjZSk7CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuICciJyArIHZhbC5yZXBsYWNlKC8iL2csICdcXCInKSArICciJzsKKyAgICBj
YXNlICJib29sZWFuIjoKKyAgICBjYXNlICJ1bmRlZmluZWQiOgorICAgICAgICByZXR1cm4gU3Ry
aW5nKHZhbCk7CisgICAgY2FzZSAibnVtYmVyIjoKKyAgICAgICAgLy8gSW4gSmF2YVNjcmlwdCwg
LTAgPT09IDAgYW5kIFN0cmluZygtMCkgPT0gIjAiLCBzbyB3ZSBoYXZlIHRvCisgICAgICAgIC8v
IHNwZWNpYWwtY2FzZS4KKyAgICAgICAgaWYgKHZhbCA9PT0gLTAgJiYgMS92YWwgPT09IC1JbmZp
bml0eSkgeworICAgICAgICAgICAgcmV0dXJuICItMCI7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIFN0cmluZyh2YWwpOworICAgIGNhc2UgIm9iamVjdCI6CisgICAgICAgIGlmICh2YWwgPT09
IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiAibnVsbCI7CisgICAgICAgIH0KKworICAgICAg
ICAvLyBTcGVjaWFsLWNhc2UgTm9kZSBvYmplY3RzLCBzaW5jZSB0aG9zZSBjb21lIHVwIGEgbG90
IGluIG15IHRlc3RzLiAgSQorICAgICAgICAvLyBpZ25vcmUgbmFtZXNwYWNlcy4KKyAgICAgICAg
aWYgKGlzX25vZGUodmFsKSkgeworICAgICAgICAgICAgc3dpdGNoICh2YWwubm9kZVR5cGUpIHsK
KyAgICAgICAgICAgIGNhc2UgTm9kZS5FTEVNRU5UX05PREU6CisgICAgICAgICAgICAgICAgdmFy
IHJldCA9ICI8IiArIHZhbC5sb2NhbE5hbWU7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCB2YWwuYXR0cmlidXRlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAg
ICByZXQgKz0gIiAiICsgdmFsLmF0dHJpYnV0ZXNbaV0ubmFtZSArICc9IicgKyB2YWwuYXR0cmli
dXRlc1tpXS52YWx1ZSArICciJzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
cmV0ICs9ICI+IiArIHZhbC5pbm5lckhUTUwgKyAiPC8iICsgdmFsLmxvY2FsTmFtZSArICI+IjsK
KyAgICAgICAgICAgICAgICByZXR1cm4gIkVsZW1lbnQgbm9kZSAiICsgdHJ1bmNhdGUocmV0LCA2
MCk7CisgICAgICAgICAgICBjYXNlIE5vZGUuVEVYVF9OT0RFOgorICAgICAgICAgICAgICAgIHJl
dHVybiAnVGV4dCBub2RlICInICsgdHJ1bmNhdGUodmFsLmRhdGEsIDYwKSArICciJzsKKyAgICAg
ICAgICAgIGNhc2UgTm9kZS5QUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU6CisgICAgICAgICAg
ICAgICAgcmV0dXJuICJQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gbm9kZSB3aXRoIHRhcmdldCAiICsg
Zm9ybWF0X3ZhbHVlKHRydW5jYXRlKHZhbC50YXJnZXQsIDYwKSkgKyAiIGFuZCBkYXRhICIgKyBm
b3JtYXRfdmFsdWUodHJ1bmNhdGUodmFsLmRhdGEsIDYwKSk7CisgICAgICAgICAgICBjYXNlIE5v
ZGUuQ09NTUVOVF9OT0RFOgorICAgICAgICAgICAgICAgIHJldHVybiAiQ29tbWVudCBub2RlIDwh
LS0iICsgdHJ1bmNhdGUodmFsLmRhdGEsIDYwKSArICItLT4iOworICAgICAgICAgICAgY2FzZSBO
b2RlLkRPQ1VNRU5UX05PREU6CisgICAgICAgICAgICAgICAgcmV0dXJuICJEb2N1bWVudCBub2Rl
IHdpdGggIiArIHZhbC5jaGlsZE5vZGVzLmxlbmd0aCArICh2YWwuY2hpbGROb2Rlcy5sZW5ndGgg
PT0gMSA/ICIgY2hpbGQiIDogIiBjaGlsZHJlbiIpOworICAgICAgICAgICAgY2FzZSBOb2RlLkRP
Q1VNRU5UX1RZUEVfTk9ERToKKyAgICAgICAgICAgICAgICByZXR1cm4gIkRvY3VtZW50VHlwZSBu
b2RlIjsKKyAgICAgICAgICAgIGNhc2UgTm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgorICAg
ICAgICAgICAgICAgIHJldHVybiAiRG9jdW1lbnRGcmFnbWVudCBub2RlIHdpdGggIiArIHZhbC5j
aGlsZE5vZGVzLmxlbmd0aCArICh2YWwuY2hpbGROb2Rlcy5sZW5ndGggPT0gMSA/ICIgY2hpbGQi
IDogIiBjaGlsZHJlbiIpOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gIk5vZGUgb2JqZWN0IG9mIHVua25vd24gdHlwZSI7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgIC8qIGZhbGxzIHRocm91Z2ggKi8KKyAgICBkZWZhdWx0OgorICAgICAgICB0
cnkgeworICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWwgKyAnICInICsgdHJ1bmNhdGUoU3Ry
aW5nKHZhbCksIDEwMDApICsgJyInOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAg
IHJldHVybiAoIltzdHJpbmdpZnlpbmcgb2JqZWN0IHRocmV3ICIgKyBTdHJpbmcoZSkgKworICAg
ICAgICAgICAgICAgICAgICAiIHdpdGggdHlwZSAiICsgU3RyaW5nKHR5cGVvZiBlKSArICJdIik7
CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIGlzX3NpbmdsZV9ub2RlKHRlbXBsYXRl
KQoreworICAgIHJldHVybiB0eXBlb2YgdGVtcGxhdGVbMF0gPT09ICJzdHJpbmciOworfQorCitm
dW5jdGlvbiBzdWJzdGl0dXRlKHRlbXBsYXRlLCBzdWJzdGl0dXRpb25zKQoreworICAgIGlmICh0
eXBlb2YgdGVtcGxhdGUgPT09ICJmdW5jdGlvbiIpIHsKKyAgICAgICAgdmFyIHJlcGxhY2VtZW50
ID0gdGVtcGxhdGUoc3Vic3RpdHV0aW9ucyk7CisgICAgICAgIGlmICghcmVwbGFjZW1lbnQpIHsK
KyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHN1
YnN0aXR1dGUocmVwbGFjZW1lbnQsIHN1YnN0aXR1dGlvbnMpOworICAgIH0KKworICAgIGlmIChp
c19zaW5nbGVfbm9kZSh0ZW1wbGF0ZSkpIHsKKyAgICAgICAgcmV0dXJuIHN1YnN0aXR1dGVfc2lu
Z2xlKHRlbXBsYXRlLCBzdWJzdGl0dXRpb25zKTsKKyAgICB9CisKKyAgICByZXR1cm4gZmlsdGVy
KG1hcCh0ZW1wbGF0ZSwgZnVuY3Rpb24oeCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gc3Vic3RpdHV0ZSh4LCBzdWJzdGl0dXRpb25zKTsKKyAgICAgICAgICAgICAgICAgICAg
ICB9KSwgZnVuY3Rpb24oeCkge3JldHVybiB4ICE9PSBudWxsO30pOworfQorCitmdW5jdGlvbiBz
dWJzdGl0dXRlX3NpbmdsZSh0ZW1wbGF0ZSwgc3Vic3RpdHV0aW9ucykKK3sKKyAgICB2YXIgc3Vi
c3RpdHV0aW9uX3JlID0gL1wkXHsoW14gfV0qKVx9L2c7CisKKyAgICBmdW5jdGlvbiBkb19zdWJz
dGl0dXRpb24oaW5wdXQpIHsKKyAgICAgICAgdmFyIGNvbXBvbmVudHMgPSBpbnB1dC5zcGxpdChz
dWJzdGl0dXRpb25fcmUpOworICAgICAgICB2YXIgcnYgPSBbXTsKKyAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBjb21wb25lbnRzLmxlbmd0aDsgaSArPSAyKSB7CisgICAgICAgICAgICBydi5w
dXNoKGNvbXBvbmVudHNbaV0pOworICAgICAgICAgICAgaWYgKGNvbXBvbmVudHNbaSArIDFdKSB7
CisgICAgICAgICAgICAgICAgcnYucHVzaChTdHJpbmcoc3Vic3RpdHV0aW9uc1tjb21wb25lbnRz
W2kgKyAxXV0pKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcnY7
CisgICAgfQorCisgICAgZnVuY3Rpb24gc3Vic3RpdHV0ZV9hdHRycyhhdHRycywgcnYpCisgICAg
eworICAgICAgICBydlsxXSA9IHt9OworICAgICAgICBmb3IgKHZhciBuYW1lIGluIHRlbXBsYXRl
WzFdKSB7CisgICAgICAgICAgICBpZiAoYXR0cnMuaGFzT3duUHJvcGVydHkobmFtZSkpIHsKKyAg
ICAgICAgICAgICAgICB2YXIgbmV3X25hbWUgPSBkb19zdWJzdGl0dXRpb24obmFtZSkuam9pbigi
Iik7CisgICAgICAgICAgICAgICAgdmFyIG5ld192YWx1ZSA9IGRvX3N1YnN0aXR1dGlvbihhdHRy
c1tuYW1lXSkuam9pbigiIik7CisgICAgICAgICAgICAgICAgcnZbMV1bbmV3X25hbWVdID0gbmV3
X3ZhbHVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24g
c3Vic3RpdHV0ZV9jaGlsZHJlbihjaGlsZHJlbiwgcnYpCisgICAgeworICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBpZiAoY2hp
bGRyZW5baV0gaW5zdGFuY2VvZiBPYmplY3QpIHsKKyAgICAgICAgICAgICAgICB2YXIgcmVwbGFj
ZW1lbnQgPSBzdWJzdGl0dXRlKGNoaWxkcmVuW2ldLCBzdWJzdGl0dXRpb25zKTsKKyAgICAgICAg
ICAgICAgICBpZiAocmVwbGFjZW1lbnQgIT09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKGlzX3NpbmdsZV9ub2RlKHJlcGxhY2VtZW50KSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgcnYucHVzaChyZXBsYWNlbWVudCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBleHRlbmQocnYsIHJlcGxhY2VtZW50KTsKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgZXh0ZW5kKHJ2LCBkb19zdWJzdGl0dXRpb24oU3RyaW5nKGNoaWxkcmVu
W2ldKSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBydjsKKyAg
ICB9CisKKyAgICB2YXIgcnYgPSBbXTsKKyAgICBydi5wdXNoKGRvX3N1YnN0aXR1dGlvbihTdHJp
bmcodGVtcGxhdGVbMF0pKS5qb2luKCIiKSk7CisKKyAgICBpZiAodGVtcGxhdGVbMF0gPT09ICJ7
dGV4dH0iKSB7CisgICAgICAgIHN1YnN0aXR1dGVfY2hpbGRyZW4odGVtcGxhdGUuc2xpY2UoMSks
IHJ2KTsKKyAgICB9IGVsc2UgeworICAgICAgICBzdWJzdGl0dXRlX2F0dHJzKHRlbXBsYXRlWzFd
LCBydik7CisgICAgICAgIHN1YnN0aXR1dGVfY2hpbGRyZW4odGVtcGxhdGUuc2xpY2UoMiksIHJ2
KTsKKyAgICB9CisKKyAgICByZXR1cm4gcnY7Cit9CisKK2Z1bmN0aW9uIGFzc2VydChleHBlY3Rl
ZF90cnVlLCBmdW5jdGlvbl9uYW1lLCBkZXNjcmlwdGlvbiwgZXJyb3IsIHN1YnN0aXR1dGlvbnMp
Cit7CisgICAgaWYgKGV4cGVjdGVkX3RydWUgIT09IHRydWUpIHsKKyAgICAgICAgdmFyIG1zZyA9
IG1ha2VfbWVzc2FnZShmdW5jdGlvbl9uYW1lLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlcnJvciwgc3Vic3RpdHV0aW9ucyk7CisgICAgICAgIHRocm93IG5l
dyBBc3NlcnRpb25FcnJvcihtc2cpOworICAgIH0KK30KKworZnVuY3Rpb24gQXNzZXJ0aW9uRXJy
b3IobWVzc2FnZSkKK3sKKyAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlOworICAgIHRoaXMuc3Rh
Y2sgPSB0aGlzLmdldF9zdGFjaygpOworfQorCitBc3NlcnRpb25FcnJvci5wcm90b3R5cGUgPSBP
YmplY3QuY3JlYXRlKEVycm9yLnByb3RvdHlwZSk7CisKK0Fzc2VydGlvbkVycm9yLnByb3RvdHlw
ZS5nZXRfc3RhY2sgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgc3RhY2sgPSBuZXcgRXJyb3IoKS5z
dGFjazsKKyAgICAvLyBJRTExIGRvZXMgbm90IGluaXRpYWxpemUgJ0Vycm9yLnN0YWNrJyB1bnRp
bCB0aGUgb2JqZWN0IGlzIHRocm93bi4KKyAgICBpZiAoIXN0YWNrKSB7CisgICAgICAgIHRyeSB7
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsKKyAgICAgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICAgICAgc3RhY2sgPSBlLnN0YWNrOworICAgICAgICB9CisgICAgfQorCisgICAgLy8g
J0Vycm9yLnN0YWNrJyBpcyBub3Qgc3VwcG9ydGVkIGluIGFsbCBicm93c2Vycy92ZXJzaW9ucwor
ICAgIGlmICghc3RhY2spIHsKKyAgICAgICAgcmV0dXJuICIoU3RhY2sgdHJhY2UgdW5hdmFpbGFi
bGUpIjsKKyAgICB9CisKKyAgICB2YXIgbGluZXMgPSBzdGFjay5zcGxpdCgiXG4iKTsKKworICAg
IC8vIENyZWF0ZSBhIHBhdHRlcm4gdG8gbWF0Y2ggc3RhY2sgZnJhbWVzIG9yaWdpbmF0aW5nIHdp
dGhpbiB0ZXN0aGFybmVzcy5qcy4gIFRoZXNlIGluY2x1ZGUgdGhlCisgICAgLy8gc2NyaXB0IFVS
TCwgZm9sbG93ZWQgYnkgdGhlIGxpbmUvY29sIChlLmcuLCAnL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qczoxMjA6MjEnKS4KKyAgICAvLyBFc2NhcGUgdGhlIFVSTCBwZXIgaHR0cDovL3N0YWNrb3Zl
cmZsb3cuY29tL3F1ZXN0aW9ucy8zNTYxNDkzL2lzLXRoZXJlLWEtcmVnZXhwLWVzY2FwZS1mdW5j
dGlvbi1pbi1qYXZhc2NyaXB0CisgICAgLy8gaW4gY2FzZSBpdCBjb250YWlucyBSZWdFeHAgY2hh
cmFjdGVycy4KKyAgICB2YXIgc2NyaXB0X3VybCA9IGdldF9zY3JpcHRfdXJsKCk7CisgICAgdmFy
IHJlX3RleHQgPSBzY3JpcHRfdXJsID8gc2NyaXB0X3VybC5yZXBsYWNlKC9bLVwvXFxeJCorPy4o
KXxbXF17fV0vZywgJ1xcJCYnKSA6ICJcXGJ0ZXN0aGFybmVzcy5qcyI7CisgICAgdmFyIHJlID0g
bmV3IFJlZ0V4cChyZV90ZXh0ICsgIjpcXGQrOlxcZCsiKTsKKworICAgIC8vIFNvbWUgYnJvd3Nl
cnMgaW5jbHVkZSBhIHByZWFtYmxlIHRoYXQgc3BlY2lmaWVzIHRoZSB0eXBlIG9mIHRoZSBlcnJv
ciBvYmplY3QuICBTa2lwIHRoaXMgYnkKKyAgICAvLyBhZHZhbmNpbmcgdW50aWwgd2UgZmluZCB0
aGUgZmlyc3Qgc3RhY2sgZnJhbWUgb3JpZ2luYXRpbmcgZnJvbSB0ZXN0aGFybmVzcy5qcy4KKyAg
ICB2YXIgaSA9IDA7CisgICAgd2hpbGUgKCFyZS50ZXN0KGxpbmVzW2ldKSAmJiBpIDwgbGluZXMu
bGVuZ3RoKSB7CisgICAgICAgIGkrKzsKKyAgICB9CisKKyAgICAvLyBUaGVuIHNraXAgdGhlIHRv
cCBmcmFtZXMgb3JpZ2luYXRpbmcgZnJvbSB0ZXN0aGFybmVzcy5qcyB0byBiZWdpbiB0aGUgc3Rh
Y2sgYXQgdGhlIHRlc3QgY29kZS4KKyAgICB3aGlsZSAocmUudGVzdChsaW5lc1tpXSkgJiYgaSA8
IGxpbmVzLmxlbmd0aCkgeworICAgICAgICBpKys7CisgICAgfQorCisgICAgLy8gUGFyYW5vaWQg
Y2hlY2sgdGhhdCB3ZSBkaWRuJ3Qgc2tpcCBhbGwgZnJhbWVzLiAgSWYgc28sIHJldHVybiB0aGUg
b3JpZ2luYWwgc3RhY2sgdW5tb2RpZmllZC4KKyAgICBpZiAoaSA+PSBsaW5lcy5sZW5ndGgpIHsK
KyAgICAgICAgcmV0dXJuIHN0YWNrOworICAgIH0KKworICAgIHJldHVybiBsaW5lcy5zbGljZShp
KS5qb2luKCJcbiIpOworfQorCitmdW5jdGlvbiBtYWtlX21lc3NhZ2UoZnVuY3Rpb25fbmFtZSwg
ZGVzY3JpcHRpb24sIGVycm9yLCBzdWJzdGl0dXRpb25zKQoreworICAgIGZvciAodmFyIHAgaW4g
c3Vic3RpdHV0aW9ucykgeworICAgICAgICBpZiAoc3Vic3RpdHV0aW9ucy5oYXNPd25Qcm9wZXJ0
eShwKSkgeworICAgICAgICAgICAgc3Vic3RpdHV0aW9uc1twXSA9IGZvcm1hdF92YWx1ZShzdWJz
dGl0dXRpb25zW3BdKTsKKyAgICAgICAgfQorICAgIH0KKyAgICB2YXIgbm9kZV9mb3JtID0gc3Vi
c3RpdHV0ZShbInt0ZXh0fSIsICIke2Z1bmN0aW9uX25hbWV9OiAke2Rlc2NyaXB0aW9ufSIgKyBl
cnJvcl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2Uoe2Z1bmN0aW9uX25h
bWU6ZnVuY3Rpb25fbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGVzY3JpcHRpb246KGRlc2NyaXB0aW9uP2Rlc2NyaXB0aW9uICsgIiAiOiIiKX0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnN0aXR1dGlvbnMpKTsKKyAgICByZXR1
cm4gbm9kZV9mb3JtLnNsaWNlKDEpLmpvaW4oIiIpOworfQorCitmdW5jdGlvbiBmaWx0ZXIoYXJy
YXksIGNhbGxhYmxlLCB0aGlzT2JqKSB7CisgICAgdmFyIHJ2ID0gW107CisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykgeworICAgICAgICBpZiAoYXJyYXkuaGFzT3du
UHJvcGVydHkoaSkpIHsKKyAgICAgICAgICAgIHZhciBwYXNzID0gY2FsbGFibGUuY2FsbCh0aGlz
T2JqLCBhcnJheVtpXSwgaSwgYXJyYXkpOworICAgICAgICAgICAgaWYgKHBhc3MpIHsKKyAgICAg
ICAgICAgICAgICBydi5wdXNoKGFycmF5W2ldKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KKyAgICByZXR1cm4gcnY7Cit9CisKK2Z1bmN0aW9uIG1hcChhcnJheSwgY2FsbGFibGUs
IHRoaXNPYmopCit7CisgICAgdmFyIHJ2ID0gW107CisgICAgcnYubGVuZ3RoID0gYXJyYXkubGVu
Z3RoOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHsKKyAgICAg
ICAgaWYgKGFycmF5Lmhhc093blByb3BlcnR5KGkpKSB7CisgICAgICAgICAgICBydltpXSA9IGNh
bGxhYmxlLmNhbGwodGhpc09iaiwgYXJyYXlbaV0sIGksIGFycmF5KTsKKyAgICAgICAgfQorICAg
IH0KKyAgICByZXR1cm4gcnY7Cit9CisKK2Z1bmN0aW9uIGZvckVhY2goYXJyYXksIGNhbGxiYWNr
LCB0aGlzT2JqKQoreworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKysp
IHsKKyAgICAgICAgaWYgKGFycmF5Lmhhc093blByb3BlcnR5KGkpKSB7CisgICAgICAgICAgICBj
YWxsYmFjay5jYWxsKHRoaXNPYmosIGFycmF5W2ldLCBpLCBhcnJheSk7CisgICAgICAgIH0KKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIG1lcmdlKGEsYikKK3sKKyAgICB2YXIgcnYgPSB7fTsKKyAgICB2
YXIgcDsKKyAgICBmb3IgKHAgaW4gYSkgeworICAgICAgICBydltwXSA9IGFbcF07CisgICAgfQor
ICAgIGZvciAocCBpbiBiKSB7CisgICAgICAgIHJ2W3BdID0gYltwXTsKKyAgICB9CisgICAgcmV0
dXJuIHJ2OworfQorCitmdW5jdGlvbiBzYW1lX3ZhbHVlKHgsIHkpIHsKKyAgICBpZiAoeSAhPT0g
eSkgeworICAgICAgICAvL05hTiBjYXNlCisgICAgICAgIHJldHVybiB4ICE9PSB4OworICAgIH0K
KyAgICBpZiAoeCA9PT0gMCAmJiB5ID09PSAwKSB7CisgICAgICAgIC8vRGlzdGluZ3Vpc2ggKzAg
YW5kIC0wCisgICAgICAgIHJldHVybiAxL3ggPT09IDEveTsKKyAgICB9CisgICAgcmV0dXJuIHgg
PT09IHk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9lcXVhbHMoYWN0dWFsLCBleHBlY3RlZCwgZGVz
Y3JpcHRpb24pCit7CisgICAgIC8qCisgICAgICAqIFRlc3QgaWYgdHdvIHByaW1pdGl2ZXMgYXJl
IGVxdWFsIG9yIHR3byBvYmplY3RzCisgICAgICAqIGFyZSB0aGUgc2FtZSBvYmplY3QKKyAgICAg
ICovCisgICAgaWYgKHR5cGVvZiBhY3R1YWwgIT0gdHlwZW9mIGV4cGVjdGVkKSB7CisgICAgICAg
IGFzc2VydChmYWxzZSwgImFzc2VydF9lcXVhbHMiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAiZXhwZWN0ZWQgKCIgKyB0eXBlb2YgZXhwZWN0ZWQgKyAiKSAke2V4cGVjdGVk
fSBidXQgZ290ICgiICsgdHlwZW9mIGFjdHVhbCArICIpICR7YWN0dWFsfSIsCisgICAgICAgICAg
ICAgICAgICAgICAge2V4cGVjdGVkOmV4cGVjdGVkLCBhY3R1YWw6YWN0dWFsfSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgYXNzZXJ0KHNhbWVfdmFsdWUoYWN0dWFsLCBleHBlY3RlZCks
ICJhc3NlcnRfZXF1YWxzIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJleHBlY3RlZCAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfSIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtleHBlY3RlZDpleHBl
Y3RlZCwgYWN0dWFsOmFjdHVhbH0pOworfQorCitmdW5jdGlvbiBhc3NlcnRfbm90X2VxdWFscyhh
Y3R1YWwsIGV4cGVjdGVkLCBkZXNjcmlwdGlvbikKK3sKKyAgICAgLyoKKyAgICAgICogVGVzdCBp
ZiB0d28gcHJpbWl0aXZlcyBhcmUgdW5lcXVhbCBvciB0d28gb2JqZWN0cworICAgICAgKiBhcmUg
ZGlmZmVyZW50IG9iamVjdHMKKyAgICAgICovCisgICAgYXNzZXJ0KCFzYW1lX3ZhbHVlKGFjdHVh
bCwgZXhwZWN0ZWQpLCAiYXNzZXJ0X25vdF9lcXVhbHMiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnb3QgZGlzYWxsb3dlZCB2YWx1ZSAk
e2FjdHVhbH0iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2Fj
dHVhbDphY3R1YWx9KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X2luX2FycmF5KGFjdHVhbCwgZXhw
ZWN0ZWQsIGRlc2NyaXB0aW9uKQoreworICAgIGFzc2VydChleHBlY3RlZC5pbmRleE9mKGFjdHVh
bCkgIT0gLTEsICJhc3NlcnRfaW5fYXJyYXkiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUgJHthY3R1YWx9IG5vdCBpbiBhcnJh
eSAke2V4cGVjdGVkfSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAge2FjdHVhbDphY3R1YWwsIGV4cGVjdGVkOmV4cGVjdGVkfSk7Cit9CisKK2Z1bmN0aW9uIGFz
c2VydF9vYmplY3RfZXF1YWxzKGFjdHVhbCwgZXhwZWN0ZWQsIGRlc2NyaXB0aW9uKQoreworICAg
ICAvL1RoaXMgbmVlZHMgdG8gYmUgaW1wcm92ZWQgYSBncmVhdCBkZWFsCisgICAgIGZ1bmN0aW9u
IGNoZWNrX2VxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIHN0YWNrKQorICAgICB7CisgICAgICAgICBz
dGFjay5wdXNoKGFjdHVhbCk7CisKKyAgICAgICAgIHZhciBwOworICAgICAgICAgZm9yIChwIGlu
IGFjdHVhbCkgeworICAgICAgICAgICAgIGFzc2VydChleHBlY3RlZC5oYXNPd25Qcm9wZXJ0eShw
KSwgImFzc2VydF9vYmplY3RfZXF1YWxzIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5leHBlY3RlZCBwcm9wZXJ0eSAke3B9
Iiwge3A6cH0pOworCisgICAgICAgICAgICAgaWYgKHR5cGVvZiBhY3R1YWxbcF0gPT09ICJvYmpl
Y3QiICYmIGFjdHVhbFtwXSAhPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICBpZiAoc3RhY2su
aW5kZXhPZihhY3R1YWxbcF0pID09PSAtMSkgeworICAgICAgICAgICAgICAgICAgICAgY2hlY2tf
ZXF1YWwoYWN0dWFsW3BdLCBleHBlY3RlZFtwXSwgc3RhY2spOworICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgYXNzZXJ0KHNhbWVfdmFs
dWUoYWN0dWFsW3BdLCBleHBlY3RlZFtwXSksICJhc3NlcnRfb2JqZWN0X2VxdWFscyIsIGRlc2Ny
aXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgInByb3BlcnR5ICR7cH0gZXhwZWN0ZWQgJHtleHBlY3RlZH0gZ290ICR7YWN0dWFsfSIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cDpwLCBl
eHBlY3RlZDpleHBlY3RlZCwgYWN0dWFsOmFjdHVhbH0pOworICAgICAgICAgICAgIH0KKyAgICAg
ICAgIH0KKyAgICAgICAgIGZvciAocCBpbiBleHBlY3RlZCkgeworICAgICAgICAgICAgIGFzc2Vy
dChhY3R1YWwuaGFzT3duUHJvcGVydHkocCksCisgICAgICAgICAgICAgICAgICAgICJhc3NlcnRf
b2JqZWN0X2VxdWFscyIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0
ZWQgcHJvcGVydHkgJHtwfSBtaXNzaW5nIiwge3A6cH0pOworICAgICAgICAgfQorICAgICAgICAg
c3RhY2sucG9wKCk7CisgICAgIH0KKyAgICAgY2hlY2tfZXF1YWwoYWN0dWFsLCBleHBlY3RlZCwg
W10pOworfQorCitmdW5jdGlvbiBhc3NlcnRfYXJyYXlfZXF1YWxzKGFjdHVhbCwgZXhwZWN0ZWQs
IGRlc2NyaXB0aW9uKQoreworICAgIGFzc2VydChhY3R1YWwubGVuZ3RoID09PSBleHBlY3RlZC5s
ZW5ndGgsCisgICAgICAgICAgICJhc3NlcnRfYXJyYXlfZXF1YWxzIiwgZGVzY3JpcHRpb24sCisg
ICAgICAgICAgICJsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgJHtleHBlY3RlZH0gZ290ICR7YWN0
dWFsfSIsCisgICAgICAgICAgIHtleHBlY3RlZDpleHBlY3RlZC5sZW5ndGgsIGFjdHVhbDphY3R1
YWwubGVuZ3RofSk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFjdHVhbC5sZW5ndGg7IGkr
KykgeworICAgICAgICBhc3NlcnQoYWN0dWFsLmhhc093blByb3BlcnR5KGkpID09PSBleHBlY3Rl
ZC5oYXNPd25Qcm9wZXJ0eShpKSwKKyAgICAgICAgICAgICAgICJhc3NlcnRfYXJyYXlfZXF1YWxz
IiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAicHJvcGVydHkgJHtpfSwgcHJvcGVydHkg
ZXhwZWN0ZWQgdG8gYmUgJHtleHBlY3RlZH0gYnV0IHdhcyAke2FjdHVhbH0iLAorICAgICAgICAg
ICAgICAge2k6aSwgZXhwZWN0ZWQ6ZXhwZWN0ZWQuaGFzT3duUHJvcGVydHkoaSkgPyAicHJlc2Vu
dCIgOiAibWlzc2luZyIsCisgICAgICAgICAgICAgICBhY3R1YWw6YWN0dWFsLmhhc093blByb3Bl
cnR5KGkpID8gInByZXNlbnQiIDogIm1pc3NpbmcifSk7CisgICAgICAgIGFzc2VydChzYW1lX3Zh
bHVlKGV4cGVjdGVkW2ldLCBhY3R1YWxbaV0pLAorICAgICAgICAgICAgICAgImFzc2VydF9hcnJh
eV9lcXVhbHMiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICJwcm9wZXJ0eSAke2l9LCBl
eHBlY3RlZCAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfSIsCisgICAgICAgICAgICAgICB7
aTppLCBleHBlY3RlZDpleHBlY3RlZFtpXSwgYWN0dWFsOmFjdHVhbFtpXX0pOworICAgIH0KK30K
KworZnVuY3Rpb24gYXNzZXJ0X2FwcHJveF9lcXVhbHMoYWN0dWFsLCBleHBlY3RlZCwgZXBzaWxv
biwgZGVzY3JpcHRpb24pCit7CisgICAgLyoKKyAgICAgKiBUZXN0IGlmIHR3byBwcmltaXRpdmUg
bnVtYmVycyBhcmUgZXF1YWwgd2l0aGluZyArLy0gZXBzaWxvbgorICAgICAqLworICAgIGFzc2Vy
dCh0eXBlb2YgYWN0dWFsID09PSAibnVtYmVyIiwKKyAgICAgICAgICAgImFzc2VydF9hcHByb3hf
ZXF1YWxzIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICJleHBlY3RlZCBhIG51bWJlciBidXQg
Z290IGEgJHt0eXBlX2FjdHVhbH0iLAorICAgICAgICAgICB7dHlwZV9hY3R1YWw6dHlwZW9mIGFj
dHVhbH0pOworCisgICAgYXNzZXJ0KE1hdGguYWJzKGFjdHVhbCAtIGV4cGVjdGVkKSA8PSBlcHNp
bG9uLAorICAgICAgICAgICAiYXNzZXJ0X2FwcHJveF9lcXVhbHMiLCBkZXNjcmlwdGlvbiwKKyAg
ICAgICAgICAgImV4cGVjdGVkICR7ZXhwZWN0ZWR9ICsvLSAke2Vwc2lsb259IGJ1dCBnb3QgJHth
Y3R1YWx9IiwKKyAgICAgICAgICAge2V4cGVjdGVkOmV4cGVjdGVkLCBhY3R1YWw6YWN0dWFsLCBl
cHNpbG9uOmVwc2lsb259KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X2xlc3NfdGhhbihhY3R1YWws
IGV4cGVjdGVkLCBkZXNjcmlwdGlvbikKK3sKKyAgICAvKgorICAgICAqIFRlc3QgaWYgYSBwcmlt
aXRpdmUgbnVtYmVyIGlzIGxlc3MgdGhhbiBhbm90aGVyCisgICAgICovCisgICAgYXNzZXJ0KHR5
cGVvZiBhY3R1YWwgPT09ICJudW1iZXIiLAorICAgICAgICAgICAiYXNzZXJ0X2xlc3NfdGhhbiIs
IGRlc2NyaXB0aW9uLAorICAgICAgICAgICAiZXhwZWN0ZWQgYSBudW1iZXIgYnV0IGdvdCBhICR7
dHlwZV9hY3R1YWx9IiwKKyAgICAgICAgICAge3R5cGVfYWN0dWFsOnR5cGVvZiBhY3R1YWx9KTsK
KworICAgIGFzc2VydChhY3R1YWwgPCBleHBlY3RlZCwKKyAgICAgICAgICAgImFzc2VydF9sZXNz
X3RoYW4iLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgImV4cGVjdGVkIGEgbnVtYmVyIGxlc3Mg
dGhhbiAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfSIsCisgICAgICAgICAgIHtleHBlY3Rl
ZDpleHBlY3RlZCwgYWN0dWFsOmFjdHVhbH0pOworfQorCitmdW5jdGlvbiBhc3NlcnRfZ3JlYXRl
cl90aGFuKGFjdHVhbCwgZXhwZWN0ZWQsIGRlc2NyaXB0aW9uKQoreworICAgIC8qCisgICAgICog
VGVzdCBpZiBhIHByaW1pdGl2ZSBudW1iZXIgaXMgZ3JlYXRlciB0aGFuIGFub3RoZXIKKyAgICAg
Ki8KKyAgICBhc3NlcnQodHlwZW9mIGFjdHVhbCA9PT0gIm51bWJlciIsCisgICAgICAgICAgICJh
c3NlcnRfZ3JlYXRlcl90aGFuIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICJleHBlY3RlZCBh
IG51bWJlciBidXQgZ290IGEgJHt0eXBlX2FjdHVhbH0iLAorICAgICAgICAgICB7dHlwZV9hY3R1
YWw6dHlwZW9mIGFjdHVhbH0pOworCisgICAgYXNzZXJ0KGFjdHVhbCA+IGV4cGVjdGVkLAorICAg
ICAgICAgICAiYXNzZXJ0X2dyZWF0ZXJfdGhhbiIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAi
ZXhwZWN0ZWQgYSBudW1iZXIgZ3JlYXRlciB0aGFuICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1
YWx9IiwKKyAgICAgICAgICAge2V4cGVjdGVkOmV4cGVjdGVkLCBhY3R1YWw6YWN0dWFsfSk7Cit9
CisKK2Z1bmN0aW9uIGFzc2VydF9iZXR3ZWVuX2V4Y2x1c2l2ZShhY3R1YWwsIGxvd2VyLCB1cHBl
ciwgZGVzY3JpcHRpb24pCit7CisgICAgLyoKKyAgICAgKiBUZXN0IGlmIGEgcHJpbWl0aXZlIG51
bWJlciBpcyBiZXR3ZWVuIHR3byBvdGhlcnMKKyAgICAgKi8KKyAgICBhc3NlcnQodHlwZW9mIGFj
dHVhbCA9PT0gIm51bWJlciIsCisgICAgICAgICAgICJhc3NlcnRfYmV0d2Vlbl9leGNsdXNpdmUi
LCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgImV4cGVjdGVkIGEgbnVtYmVyIGJ1dCBnb3QgYSAk
e3R5cGVfYWN0dWFsfSIsCisgICAgICAgICAgIHt0eXBlX2FjdHVhbDp0eXBlb2YgYWN0dWFsfSk7
CisKKyAgICBhc3NlcnQoYWN0dWFsID4gbG93ZXIgJiYgYWN0dWFsIDwgdXBwZXIsCisgICAgICAg
ICAgICJhc3NlcnRfYmV0d2Vlbl9leGNsdXNpdmUiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAg
ImV4cGVjdGVkIGEgbnVtYmVyIGdyZWF0ZXIgdGhhbiAke2xvd2VyfSAiICsKKyAgICAgICAgICAg
ImFuZCBsZXNzIHRoYW4gJHt1cHBlcn0gYnV0IGdvdCAke2FjdHVhbH0iLAorICAgICAgICAgICB7
bG93ZXI6bG93ZXIsIHVwcGVyOnVwcGVyLCBhY3R1YWw6YWN0dWFsfSk7Cit9CisKK2Z1bmN0aW9u
IGFzc2VydF9sZXNzX3RoYW5fZXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgZGVzY3JpcHRpb24pCit7
CisgICAgLyoKKyAgICAgKiBUZXN0IGlmIGEgcHJpbWl0aXZlIG51bWJlciBpcyBsZXNzIHRoYW4g
b3IgZXF1YWwgdG8gYW5vdGhlcgorICAgICAqLworICAgIGFzc2VydCh0eXBlb2YgYWN0dWFsID09
PSAibnVtYmVyIiwKKyAgICAgICAgICAgImFzc2VydF9sZXNzX3RoYW5fZXF1YWwiLCBkZXNjcmlw
dGlvbiwKKyAgICAgICAgICAgImV4cGVjdGVkIGEgbnVtYmVyIGJ1dCBnb3QgYSAke3R5cGVfYWN0
dWFsfSIsCisgICAgICAgICAgIHt0eXBlX2FjdHVhbDp0eXBlb2YgYWN0dWFsfSk7CisKKyAgICBh
c3NlcnQoYWN0dWFsIDw9IGV4cGVjdGVkLAorICAgICAgICAgICAiYXNzZXJ0X2xlc3NfdGhhbl9l
cXVhbCIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAiZXhwZWN0ZWQgYSBudW1iZXIgbGVzcyB0
aGFuIG9yIGVxdWFsIHRvICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9IiwKKyAgICAgICAg
ICAge2V4cGVjdGVkOmV4cGVjdGVkLCBhY3R1YWw6YWN0dWFsfSk7Cit9CisKK2Z1bmN0aW9uIGFz
c2VydF9ncmVhdGVyX3RoYW5fZXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgZGVzY3JpcHRpb24pCit7
CisgICAgLyoKKyAgICAgKiBUZXN0IGlmIGEgcHJpbWl0aXZlIG51bWJlciBpcyBncmVhdGVyIHRo
YW4gb3IgZXF1YWwgdG8gYW5vdGhlcgorICAgICAqLworICAgIGFzc2VydCh0eXBlb2YgYWN0dWFs
ID09PSAibnVtYmVyIiwKKyAgICAgICAgICAgImFzc2VydF9ncmVhdGVyX3RoYW5fZXF1YWwiLCBk
ZXNjcmlwdGlvbiwKKyAgICAgICAgICAgImV4cGVjdGVkIGEgbnVtYmVyIGJ1dCBnb3QgYSAke3R5
cGVfYWN0dWFsfSIsCisgICAgICAgICAgIHt0eXBlX2FjdHVhbDp0eXBlb2YgYWN0dWFsfSk7CisK
KyAgICBhc3NlcnQoYWN0dWFsID49IGV4cGVjdGVkLAorICAgICAgICAgICAiYXNzZXJ0X2dyZWF0
ZXJfdGhhbl9lcXVhbCIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAiZXhwZWN0ZWQgYSBudW1i
ZXIgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9
IiwKKyAgICAgICAgICAge2V4cGVjdGVkOmV4cGVjdGVkLCBhY3R1YWw6YWN0dWFsfSk7Cit9CisK
K2Z1bmN0aW9uIGFzc2VydF9iZXR3ZWVuX2luY2x1c2l2ZShhY3R1YWwsIGxvd2VyLCB1cHBlciwg
ZGVzY3JpcHRpb24pCit7CisgICAgLyoKKyAgICAgKiBUZXN0IGlmIGEgcHJpbWl0aXZlIG51bWJl
ciBpcyBiZXR3ZWVuIHRvIHR3byBvdGhlcnMgb3IgZXF1YWwgdG8gZWl0aGVyIG9mIHRoZW0KKyAg
ICAgKi8KKyAgICBhc3NlcnQodHlwZW9mIGFjdHVhbCA9PT0gIm51bWJlciIsCisgICAgICAgICAg
ICJhc3NlcnRfYmV0d2Vlbl9pbmNsdXNpdmUiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgImV4
cGVjdGVkIGEgbnVtYmVyIGJ1dCBnb3QgYSAke3R5cGVfYWN0dWFsfSIsCisgICAgICAgICAgIHt0
eXBlX2FjdHVhbDp0eXBlb2YgYWN0dWFsfSk7CisKKyAgICBhc3NlcnQoYWN0dWFsID49IGxvd2Vy
ICYmIGFjdHVhbCA8PSB1cHBlciwKKyAgICAgICAgICAgImFzc2VydF9iZXR3ZWVuX2luY2x1c2l2
ZSIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAiZXhwZWN0ZWQgYSBudW1iZXIgZ3JlYXRlciB0
aGFuIG9yIGVxdWFsIHRvICR7bG93ZXJ9ICIgKworICAgICAgICAgICAiYW5kIGxlc3MgdGhhbiBv
ciBlcXVhbCB0byAke3VwcGVyfSBidXQgZ290ICR7YWN0dWFsfSIsCisgICAgICAgICAgIHtsb3dl
cjpsb3dlciwgdXBwZXI6dXBwZXIsIGFjdHVhbDphY3R1YWx9KTsKK30KKworZnVuY3Rpb24gYXNz
ZXJ0X3Rocm93cyhjb2RlLCBmdW5jLCBkZXNjcmlwdGlvbikKK3sKKyAgICB0cnkgeworICAgICAg
ICBmdW5jLmNhbGwodGhpcyk7CisgICAgICAgIGFzc2VydChmYWxzZSwgImFzc2VydF90aHJvd3Mi
LCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICIke2Z1bmN9IGRpZCBub3QgdGhyb3ciLCB7
ZnVuYzpmdW5jfSk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBpZiAoZSBpbnN0YW5jZW9m
IEFzc2VydGlvbkVycm9yKSB7CisgICAgICAgICAgICB0aHJvdyBlOworICAgICAgICB9CisgICAg
ICAgIGlmIChjb2RlID09PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgaWYgKHR5cGVvZiBjb2RlID09PSAib2JqZWN0IikgeworICAgICAgICAgICAgYXNz
ZXJ0KHR5cGVvZiBlID09ICJvYmplY3QiICYmICJuYW1lIiBpbiBlICYmIGUubmFtZSA9PSBjb2Rl
Lm5hbWUsCisgICAgICAgICAgICAgICAgICAgImFzc2VydF90aHJvd3MiLCBkZXNjcmlwdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAiJHtmdW5jfSB0aHJldyAke2FjdHVhbH0gKCR7YWN0dWFsX25h
bWV9KSBleHBlY3RlZCAke2V4cGVjdGVkfSAoJHtleHBlY3RlZF9uYW1lfSkiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB7ZnVuYzpmdW5jLCBhY3R1YWw6ZSwgYWN0dWFsX25hbWU6
ZS5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ6Y29kZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX25hbWU6Y29kZS5uYW1l
fSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB2YXIgY29kZV9u
YW1lX21hcCA9IHsKKyAgICAgICAgICAgIElOREVYX1NJWkVfRVJSOiAnSW5kZXhTaXplRXJyb3In
LAorICAgICAgICAgICAgSElFUkFSQ0hZX1JFUVVFU1RfRVJSOiAnSGllcmFyY2h5UmVxdWVzdEVy
cm9yJywKKyAgICAgICAgICAgIFdST05HX0RPQ1VNRU5UX0VSUjogJ1dyb25nRG9jdW1lbnRFcnJv
cicsCisgICAgICAgICAgICBJTlZBTElEX0NIQVJBQ1RFUl9FUlI6ICdJbnZhbGlkQ2hhcmFjdGVy
RXJyb3InLAorICAgICAgICAgICAgTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSOiAnTm9Nb2Rp
ZmljYXRpb25BbGxvd2VkRXJyb3InLAorICAgICAgICAgICAgTk9UX0ZPVU5EX0VSUjogJ05vdEZv
dW5kRXJyb3InLAorICAgICAgICAgICAgTk9UX1NVUFBPUlRFRF9FUlI6ICdOb3RTdXBwb3J0ZWRF
cnJvcicsCisgICAgICAgICAgICBJTlVTRV9BVFRSSUJVVEVfRVJSOiAnSW5Vc2VBdHRyaWJ1dGVF
cnJvcicsCisgICAgICAgICAgICBJTlZBTElEX1NUQVRFX0VSUjogJ0ludmFsaWRTdGF0ZUVycm9y
JywKKyAgICAgICAgICAgIFNZTlRBWF9FUlI6ICdTeW50YXhFcnJvcicsCisgICAgICAgICAgICBJ
TlZBTElEX01PRElGSUNBVElPTl9FUlI6ICdJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3InLAorICAg
ICAgICAgICAgTkFNRVNQQUNFX0VSUjogJ05hbWVzcGFjZUVycm9yJywKKyAgICAgICAgICAgIElO
VkFMSURfQUNDRVNTX0VSUjogJ0ludmFsaWRBY2Nlc3NFcnJvcicsCisgICAgICAgICAgICBUWVBF
X01JU01BVENIX0VSUjogJ1R5cGVNaXNtYXRjaEVycm9yJywKKyAgICAgICAgICAgIFNFQ1VSSVRZ
X0VSUjogJ1NlY3VyaXR5RXJyb3InLAorICAgICAgICAgICAgTkVUV09SS19FUlI6ICdOZXR3b3Jr
RXJyb3InLAorICAgICAgICAgICAgQUJPUlRfRVJSOiAnQWJvcnRFcnJvcicsCisgICAgICAgICAg
ICBVUkxfTUlTTUFUQ0hfRVJSOiAnVVJMTWlzbWF0Y2hFcnJvcicsCisgICAgICAgICAgICBRVU9U
QV9FWENFRURFRF9FUlI6ICdRdW90YUV4Y2VlZGVkRXJyb3InLAorICAgICAgICAgICAgVElNRU9V
VF9FUlI6ICdUaW1lb3V0RXJyb3InLAorICAgICAgICAgICAgSU5WQUxJRF9OT0RFX1RZUEVfRVJS
OiAnSW52YWxpZE5vZGVUeXBlRXJyb3InLAorICAgICAgICAgICAgREFUQV9DTE9ORV9FUlI6ICdE
YXRhQ2xvbmVFcnJvcicKKyAgICAgICAgfTsKKworICAgICAgICB2YXIgbmFtZSA9IGNvZGUgaW4g
Y29kZV9uYW1lX21hcCA/IGNvZGVfbmFtZV9tYXBbY29kZV0gOiBjb2RlOworCisgICAgICAgIHZh
ciBuYW1lX2NvZGVfbWFwID0geworICAgICAgICAgICAgSW5kZXhTaXplRXJyb3I6IDEsCisgICAg
ICAgICAgICBIaWVyYXJjaHlSZXF1ZXN0RXJyb3I6IDMsCisgICAgICAgICAgICBXcm9uZ0RvY3Vt
ZW50RXJyb3I6IDQsCisgICAgICAgICAgICBJbnZhbGlkQ2hhcmFjdGVyRXJyb3I6IDUsCisgICAg
ICAgICAgICBOb01vZGlmaWNhdGlvbkFsbG93ZWRFcnJvcjogNywKKyAgICAgICAgICAgIE5vdEZv
dW5kRXJyb3I6IDgsCisgICAgICAgICAgICBOb3RTdXBwb3J0ZWRFcnJvcjogOSwKKyAgICAgICAg
ICAgIEluVXNlQXR0cmlidXRlRXJyb3I6IDEwLAorICAgICAgICAgICAgSW52YWxpZFN0YXRlRXJy
b3I6IDExLAorICAgICAgICAgICAgU3ludGF4RXJyb3I6IDEyLAorICAgICAgICAgICAgSW52YWxp
ZE1vZGlmaWNhdGlvbkVycm9yOiAxMywKKyAgICAgICAgICAgIE5hbWVzcGFjZUVycm9yOiAxNCwK
KyAgICAgICAgICAgIEludmFsaWRBY2Nlc3NFcnJvcjogMTUsCisgICAgICAgICAgICBUeXBlTWlz
bWF0Y2hFcnJvcjogMTcsCisgICAgICAgICAgICBTZWN1cml0eUVycm9yOiAxOCwKKyAgICAgICAg
ICAgIE5ldHdvcmtFcnJvcjogMTksCisgICAgICAgICAgICBBYm9ydEVycm9yOiAyMCwKKyAgICAg
ICAgICAgIFVSTE1pc21hdGNoRXJyb3I6IDIxLAorICAgICAgICAgICAgUXVvdGFFeGNlZWRlZEVy
cm9yOiAyMiwKKyAgICAgICAgICAgIFRpbWVvdXRFcnJvcjogMjMsCisgICAgICAgICAgICBJbnZh
bGlkTm9kZVR5cGVFcnJvcjogMjQsCisgICAgICAgICAgICBEYXRhQ2xvbmVFcnJvcjogMjUsCisK
KyAgICAgICAgICAgIEVuY29kaW5nRXJyb3I6IDAsCisgICAgICAgICAgICBOb3RSZWFkYWJsZUVy
cm9yOiAwLAorICAgICAgICAgICAgVW5rbm93bkVycm9yOiAwLAorICAgICAgICAgICAgQ29uc3Ry
YWludEVycm9yOiAwLAorICAgICAgICAgICAgRGF0YUVycm9yOiAwLAorICAgICAgICAgICAgVHJh
bnNhY3Rpb25JbmFjdGl2ZUVycm9yOiAwLAorICAgICAgICAgICAgUmVhZE9ubHlFcnJvcjogMCwK
KyAgICAgICAgICAgIFZlcnNpb25FcnJvcjogMCwKKyAgICAgICAgICAgIE9wZXJhdGlvbkVycm9y
OiAwLAorICAgICAgICAgICAgTm90QWxsb3dlZEVycm9yOiAwCisgICAgICAgIH07CisKKyAgICAg
ICAgaWYgKCEobmFtZSBpbiBuYW1lX2NvZGVfbWFwKSkgeworICAgICAgICAgICAgdGhyb3cgbmV3
IEFzc2VydGlvbkVycm9yKCdUZXN0IGJ1ZzogdW5yZWNvZ25pemVkIERPTUV4Y2VwdGlvbiBjb2Rl
ICInICsgY29kZSArICciIHBhc3NlZCB0byBhc3NlcnRfdGhyb3dzKCknKTsKKyAgICAgICAgfQor
CisgICAgICAgIHZhciByZXF1aXJlZF9wcm9wcyA9IHsgY29kZTogbmFtZV9jb2RlX21hcFtuYW1l
XSB9OworCisgICAgICAgIGlmIChyZXF1aXJlZF9wcm9wcy5jb2RlID09PSAwIHx8CisgICAgICAg
ICAgICh0eXBlb2YgZSA9PSAib2JqZWN0IiAmJgorICAgICAgICAgICAgIm5hbWUiIGluIGUgJiYK
KyAgICAgICAgICAgIGUubmFtZSAhPT0gZS5uYW1lLnRvVXBwZXJDYXNlKCkgJiYKKyAgICAgICAg
ICAgIGUubmFtZSAhPT0gIkRPTUV4Y2VwdGlvbiIpKSB7CisgICAgICAgICAgICAvLyBOZXcgc3R5
bGUgZXhjZXB0aW9uOiBhbHNvIHRlc3QgdGhlIG5hbWUgcHJvcGVydHkuCisgICAgICAgICAgICBy
ZXF1aXJlZF9wcm9wcy5uYW1lID0gbmFtZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vV2UnZCBs
aWtlIHRvIHRlc3QgdGhhdCBlIGluc3RhbmNlb2YgdGhlIGFwcHJvcHJpYXRlIGludGVyZmFjZSwK
KyAgICAgICAgLy9idXQgd2UgY2FuJ3QsIGJlY2F1c2Ugd2UgZG9uJ3Qga25vdyB3aGF0IHdpbmRv
dyBpdCB3YXMgY3JlYXRlZAorICAgICAgICAvL2luLiAgSXQgbWlnaHQgYmUgYW4gaW5zdGFuY2Vv
ZiB0aGUgYXBwcm9wcmlhdGUgaW50ZXJmYWNlIG9uIHNvbWUKKyAgICAgICAgLy91bmtub3duIG90
aGVyIHdpbmRvdy4gIFRPRE86IFdvcmsgYXJvdW5kIHRoaXMgc29tZWhvdz8KKworICAgICAgICBh
c3NlcnQodHlwZW9mIGUgPT0gIm9iamVjdCIsCisgICAgICAgICAgICAgICAiYXNzZXJ0X3Rocm93
cyIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgIiR7ZnVuY30gdGhyZXcgJHtlfSB3aXRo
IHR5cGUgJHt0eXBlfSwgbm90IGFuIG9iamVjdCIsCisgICAgICAgICAgICAgICB7ZnVuYzpmdW5j
LCBlOmUsIHR5cGU6dHlwZW9mIGV9KTsKKworICAgICAgICBmb3IgKHZhciBwcm9wIGluIHJlcXVp
cmVkX3Byb3BzKSB7CisgICAgICAgICAgICBhc3NlcnQodHlwZW9mIGUgPT0gIm9iamVjdCIgJiYg
cHJvcCBpbiBlICYmIGVbcHJvcF0gPT0gcmVxdWlyZWRfcHJvcHNbcHJvcF0sCisgICAgICAgICAg
ICAgICAgICAgImFzc2VydF90aHJvd3MiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAiJHtmdW5jfSB0aHJldyAke2V9IHRoYXQgaXMgbm90IGEgRE9NRXhjZXB0aW9uICIgKyBjb2Rl
ICsgIjogcHJvcGVydHkgJHtwcm9wfSBpcyBlcXVhbCB0byAke2FjdHVhbH0sIGV4cGVjdGVkICR7
ZXhwZWN0ZWR9IiwKKyAgICAgICAgICAgICAgICAgICB7ZnVuYzpmdW5jLCBlOmUsIHByb3A6cHJv
cCwgYWN0dWFsOmVbcHJvcF0sIGV4cGVjdGVkOnJlcXVpcmVkX3Byb3BzW3Byb3BdfSk7CisgICAg
ICAgIH0KKyAgICB9Cit9CisKKy8qCisgKiBSZXR1cm4gdHJ1ZSBpZiBvYmplY3QgaXMgcHJvYmFi
bHkgYSBOb2RlIG9iamVjdC4KKyAqLworZnVuY3Rpb24gaXNfbm9kZShvYmplY3QpCit7CisgICAg
Ly8gSSB1c2UgZHVjay10eXBpbmcgaW5zdGVhZCBvZiBpbnN0YW5jZW9mLCBiZWNhdXNlCisgICAg
Ly8gaW5zdGFuY2VvZiBkb2Vzbid0IHdvcmsgaWYgdGhlIG5vZGUgaXMgZnJvbSBhbm90aGVyIHdp
bmRvdyAobGlrZSBhbgorICAgIC8vIGlmcmFtZSdzIGNvbnRlbnRXaW5kb3cpOgorICAgIC8vIGh0
dHA6Ly93d3cudzMub3JnL0J1Z3MvUHVibGljL3Nob3dfYnVnLmNnaT9pZD0xMjI5NQorICAgIHRy
eSB7CisgICAgICAgIHZhciBoYXNfbm9kZV9wcm9wZXJ0aWVzID0gKCJub2RlVHlwZSIgaW4gb2Jq
ZWN0ICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub2RlTmFtZSIgaW4g
b2JqZWN0ICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub2RlVmFsdWUi
IGluIG9iamVjdCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hpbGRO
b2RlcyIgaW4gb2JqZWN0KTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIC8vIFdlJ3JlIHBy
b2JhYmx5IGNyb3NzLW9yaWdpbiwgd2hpY2ggbWVhbnMgd2UgYXJlbid0IGEgbm9kZQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKGhhc19ub2RlX3Byb3BlcnRpZXMpIHsK
KyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG9iamVjdC5ub2RlVHlwZTsKKyAgICAgICAgfSBj
YXRjaCAoZSkgeworICAgICAgICAgICAgLy8gVGhlIG9iamVjdCBpcyBwcm9iYWJseSBOb2RlLnBy
b3RvdHlwZSBvciBhbm90aGVyIHByb3RvdHlwZQorICAgICAgICAgICAgLy8gb2JqZWN0IHRoYXQg
aW5oZXJpdHMgZnJvbSBpdCwgYW5kIG5vdCBhIE5vZGUgaW5zdGFuY2UuCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAg
IHJldHVybiBmYWxzZTsKK30KKwordmFyIHJlcGxhY2VtZW50cyA9IHsKKyAgICAiMCI6ICIwIiwK
KyAgICAiMSI6ICJ4MDEiLAorICAgICIyIjogIngwMiIsCisgICAgIjMiOiAieDAzIiwKKyAgICAi
NCI6ICJ4MDQiLAorICAgICI1IjogIngwNSIsCisgICAgIjYiOiAieDA2IiwKKyAgICAiNyI6ICJ4
MDciLAorICAgICI4IjogImIiLAorICAgICI5IjogInQiLAorICAgICIxMCI6ICJuIiwKKyAgICAi
MTEiOiAidiIsCisgICAgIjEyIjogImYiLAorICAgICIxMyI6ICJyIiwKKyAgICAiMTQiOiAieDBl
IiwKKyAgICAiMTUiOiAieDBmIiwKKyAgICAiMTYiOiAieDEwIiwKKyAgICAiMTciOiAieDExIiwK
KyAgICAiMTgiOiAieDEyIiwKKyAgICAiMTkiOiAieDEzIiwKKyAgICAiMjAiOiAieDE0IiwKKyAg
ICAiMjEiOiAieDE1IiwKKyAgICAiMjIiOiAieDE2IiwKKyAgICAiMjMiOiAieDE3IiwKKyAgICAi
MjQiOiAieDE4IiwKKyAgICAiMjUiOiAieDE5IiwKKyAgICAiMjYiOiAieDFhIiwKKyAgICAiMjci
OiAieDFiIiwKKyAgICAiMjgiOiAieDFjIiwKKyAgICAiMjkiOiAieDFkIiwKKyAgICAiMzAiOiAi
eDFlIiwKKyAgICAiMzEiOiAieDFmIiwKKyAgICAiMHhmZmZkIjogInVmZmZkIiwKKyAgICAiMHhm
ZmZlIjogInVmZmZlIiwKKyAgICAiMHhmZmZmIjogInVmZmZmIiwKK307CisKK2Z1bmN0aW9uIGV4
dGVuZChhcnJheSwgaXRlbXMpCit7CisgICAgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoYXJy
YXksIGl0ZW1zKTsKK30KKworZnVuY3Rpb24gZ2V0X3NjcmlwdF91cmwoKQoreworICAgIHJldHVy
biAiLyI7Cit9CisKKy8qCisgKiBSZXR1cm4gYSBzdHJpbmcgdHJ1bmNhdGVkIHRvIHRoZSBnaXZl
biBsZW5ndGgsIHdpdGggLi4uIGFkZGVkIGF0IHRoZSBlbmQKKyAqIGlmIGl0IHdhcyBsb25nZXIu
CisgKi8KK2Z1bmN0aW9uIHRydW5jYXRlKHMsIGxlbikKK3sKKyAgICBpZiAocy5sZW5ndGggPiBs
ZW4pIHsKKyAgICAgICAgcmV0dXJuIHMuc3Vic3RyaW5nKDAsIGxlbiAtIDMpICsgIi4uLiI7Cisg
ICAgfQorICAgIHJldHVybiBzOworfQorCitmdW5jdGlvbiBhc3NlcnRfdHJ1ZShhY3R1YWwsIGRl
c2NyaXB0aW9uKQoreworICAgIGFzc2VydChhY3R1YWwgPT09IHRydWUsICJhc3NlcnRfdHJ1ZSIs
IGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCB0cnVl
IGdvdCAke2FjdHVhbH0iLCB7YWN0dWFsOmFjdHVhbH0pOworfQorCitmdW5jdGlvbiBhc3NlcnRf
ZmFsc2UoYWN0dWFsLCBkZXNjcmlwdGlvbikKK3sKKyAgICBhc3NlcnQoYWN0dWFsID09PSBmYWxz
ZSwgImFzc2VydF9mYWxzZSIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiZXhwZWN0ZWQgZmFsc2UgZ290ICR7YWN0dWFsfSIsIHthY3R1YWw6YWN0dWFsfSk7Cit9
CisKK2Z1bmN0aW9uIHRlc3QodHN0LCBuYW1lKSB7CisgIHRyeSB7CisgICAgdHN0KCk7CisgIH0g
Y2F0Y2ggKGUpIHsKKyAgICBpZiAoIVBhaW50V29ya2xldEdsb2JhbFNjb3BlLmVycm9ycykKKyAg
ICAgIFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmVycm9ycyA9IFtdOworICAgICAgUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUuZXJyb3JzLnB1c2goeyBuYW1lOiBuYW1lLCBlcnJvcjogZS5tZXNzYWdl
IH0pOworICB9CisgIFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmhhc1J1bkFUZXN0ID0gdHJ1ZTsK
K30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFiMTNkNDMyOTBmODM0ZDBmOWE2OTkz
MDUwMGE2N2FjMTViZjVlZGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy1jdXN0b20tcGFpbnQvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzCkBAIC0wLDAgKzEsMjMgQEAK
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKKy8v
IEltcG9ydHMgY29kZSBpbnRvIGEgd29ya2xldCwgd2l0aCBzb21lIGhlbHBlcnMuCithc3luYyBm
dW5jdGlvbiBpbXBvcnRXb3JrbGV0KHdvcmtsZXQsIGNvZGUpIHsKKyAgY29uc3QgcmVzcG9uc2Ug
PSBhd2FpdCBmZXRjaCgicmVzb3VyY2VzL3Rlc3RoYXJuZXNzLXdvcmtsZXQuanMiKTsKKyAgY29u
c3QgZmluYWxDb2RlID0gKGF3YWl0IHJlc3BvbnNlLnRleHQoKSkgKyBjb2RlOworCisgIGxldCB1
cmw7CisgIC8vIEZJWE1FOiBUaGlzIGlzIHRlbXBvcmFyeSwgdW50aWwgd2Ugc3VwcG9ydCBsb2Fk
aW5nIHNjcmlwdHMgYnkgdXJsCisgIGlmICh3aW5kb3cuY2hyb21lKSB7CisgICAgY29uc3QgYmxv
YiA9IG5ldyBCbG9iKFtmaW5hbENvZGVdLCB7dHlwZTogJ3RleHQvamF2YXNjcmlwdCd9KTsKKyAg
ICB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpOworICB9IGVsc2UgeworICAgIHVybCA9
IGZpbmFsQ29kZTsKKyAgfQorCisgIHdvcmtsZXQuYWRkTW9kdWxlKHVybCk7CisgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9LCAzMDAwKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3dvcmtsZXQtZXhwZWN0ZWQuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC93b3JrbGV0LWV4cGVjdGVkLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGI0MmI2MmRhMTNlZGE4MTk2MTBiMzE5N2I0ZTQ1YTU0NzNiZGNmMwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC93b3JrbGV0
LWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxNiBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJr
aXQtdGVzdC1ydW5uZXIgWyBleHBlcmltZW50YWw6Q1NTUGFpbnRpbmdBUElFbmFibGVkPXRydWUg
XSAtLT4KKworPGNhbnZhcyBpZD0icGFpbnQiIHdpZHRoPSIxNTBweCIgaGVpZ2h0PSIxNTBweCIg
PjwvY2FudmFzPgorCis8c2NyaXB0IGlkPSJjb2RlIj4KK3ZhciBjYW52YXMgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgncGFpbnQnKTsKK3ZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQn
KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspeworICBmb3IgKHZhciBqID0gMDsgaiA8
IDY7IGorKyl7CisgICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2IoJyArIE1hdGguZmxvb3IoMjU1IC0g
NDIuNSAqIGkpICsgJywnICsKKyAgICAgICAgICAgICAgICAgICAgIE1hdGguZmxvb3IoMjU1IC0g
NDIuNSAqIGopICsgJywwKSc7CisgICAgY3R4LmZpbGxSZWN0KGogKiAyNSwgaSAqIDI1LCAyNSwg
MjUpOworICB9Cit9Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3Nz
LWN1c3RvbS1wYWludC93b3JrbGV0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20t
cGFpbnQvd29ya2xldC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjZmY5MzU2ODUzNDIwNGEyYWEwY2M2ZThk
OWU4OTQ0MDEyZTJlNjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1j
dXN0b20tcGFpbnQvd29ya2xldC5odG1sCkBAIC0wLDAgKzEsNDIgQEAKKzwhRE9DVFlQRSBodG1s
PjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFsOkNTU1BhaW50aW5nQVBJRW5h
YmxlZD10cnVlIF0gLS0+Cis8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxlPSJKdXN0aW4gTWljaGF1
ZCIgaHJlZj0ibWFpbHRvOmp1c3Rpbl9taWNoYXVkQHdlYmtpdC5vcmciPgorPG1ldGEgbmFtZT0i
YXNzZXJ0IiBjb250ZW50PSJUZXN0IHdvcmtsZXQgYWRkTW9kdWxlIGFuZCBnbG9iYWwgb2JqZWN0
Ij4KKzxsaW5rIHJlbD0iaGVscCIgY29udGVudD0iaHR0cHM6Ly9kcmFmdHMuY3NzLWhvdWRpbmku
b3JnL2Nzcy1wYWludC1hcGktMS8iPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90ZXN0aGFybmVz
cy5qcyI+PC9zY3JpcHQ+CisKKzxzdHlsZT4KKyAgI3BhaW50IHsKKyAgICBiYWNrZ3JvdW5kLWlt
YWdlOiBwYWludChteS1wYWludCk7CisgICAgd2lkdGg6IDE1MHB4OworICAgIGhlaWdodDogMTUw
cHg7CisgIH0KKzwvc3R5bGU+CisKKzxkaXYgaWQ9InBhaW50Ij48L2Rpdj4KKworPHNjcmlwdCBp
ZD0iY29kZSIgdHlwZT0idGV4dC93b3JrbGV0Ij4KK2NsYXNzIE15UGFpbnQgeworICBwYWludChj
dHgsIGdlb20sIHByb3BlcnRpZXMpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKyl7
CisgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDY7IGorKyl7CisgICAgICAgIGN0eC5maWxsU3R5
bGUgPSAncmdiKCcgKyBNYXRoLmZsb29yKDI1NSAtIDQyLjUgKiBpKSArICcsJyArCisgICAgICAg
ICAgICAgICAgICAgICAgICAgTWF0aC5mbG9vcigyNTUgLSA0Mi41ICogaikgKyAnLDApJzsKKyAg
ICAgICAgY3R4LmZpbGxSZWN0KGogKiAyNSwgaSAqIDI1LCAyNSwgMjUpOworICAgICAgfQorICAg
IH0KKyAgICBjb25zb2xlLmxvZygiSGVsbG8gZnJvbSBwYWludCBjYWxsYmFjayEiKTsKKyAgICBh
c3NlcnRfZ3JlYXRlcl90aGFuKGV2YWwoImRldmljZVBpeGVsUmF0aW8iKSwgMCk7CisgICAgYXNz
ZXJ0X3Rocm93cyh7J25hbWUnOiAnUmVmZXJlbmNlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBldmFs
KCJ3aW5kb3ciKTsgfSk7CisKKyAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29s
dmUsIHJlamVjdCkgPT4geyBjb25zb2xlLmxvZygiSW4gcHJvbWlzZSIpOyByZXNvbHZlKCkgfSk7
CisgICAgcHJvbWlzZS50aGVuKCgpID0+IGNvbnNvbGUubG9nKCJQcm9taXNlIHdhcyByZXNvbHZl
ZCIpKTsKKyAgfQorfQorY29uc29sZS5sb2coIkhlbGxvIGZyb20gcGFpbnQgd29ya2xldCEiKTsK
K3JlZ2lzdGVyUGFpbnQoJ215LXBhaW50JywgTXlQYWludCk7Citjb25zb2xlLmxvZyhXaW5kb3cp
OyAvLyB0ZXN0IHRoYXQgdW5jYXVnaHQgZXhjZXB0aW9ucyBkbyBub3QgYWZmZWN0IHJlZ2lzdGVy
ZWQgcGFpbnQgY2FsbGJhY2tzCis8L3NjcmlwdD4KKworPHNjcmlwdD4KK2ltcG9ydFdvcmtsZXQo
Q1NTLnBhaW50V29ya2xldCwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvZGUnKS50ZXh0Q29u
dGVudCk7Cis8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353751</attachid>
            <date>2018-11-02 17:30:17 -0700</date>
            <delta_ts>2018-11-02 21:01:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190979-20181102173016.patch</filename>
            <type>text/plain</type>
            <size>188770</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NzU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTI3OGQ0NmQyZjk5M2Uz
MGU5NDk3Y2FmMzAxMWIzNzBmMGQ5ODRkOS4uMTdhZjcyNDYzMDRhZDQ4NTgwNjYyZDczY2YyM2Qw
NDVmOGVlZDQ4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MyBAQAorMjAxOC0xMS0wMiAgSnVz
dGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIG5l
dyBnbG9iYWwgb2JqZWN0IGFuZCBwcmVsaW1pbmFyeSBXb3JrbGV0cyBzdXBwb3J0IGZvciBDU1Mg
cGFpbnRpbmcgYXBpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTA5NzkKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAg
ICBUZXN0OiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvd29ya2xldC5odG1sCisKKyAgICAgICAgQWRk
IGEgbmV3IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgYW5kIGdsb2JhbCBvYmplY3QgdG8gcnVuIHdv
cmtsZXRzIGluLiBUaGlzIGlzIG1vc3RseSBjb3B5K3Bhc3RlCisgICAgICAgIGZyb20gV29ya2Vy
cywgYnV0IHdpdGhvdXQgYW55IG9mIHRoZSB0aHJlYWRpbmcuIFdvcmtsZXQuYWRkTW9kdWxlIGRv
ZXMgbm90IHlldCBzdXBwb3J0IGxvYWRpbmcgc2NyaXB0cworICAgICAgICBvciBkb2luZyBjcm9z
cyBvcmlnaW4gY2hlY2tpbmcuIFRoZXJlIGFyZSBxdWl0ZSBhIGZldyBwYXJ0cyBvZiB0aGUgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCBhcGkgdGhhdCBhcmUKKyAgICAgICAgbGVmdCBhcyBBU1NFUlRf
Tk9UX1JFQUNIRUQoKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2JqZWN0
OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0IGNvbnN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3Bw
LgorICAgICAgICAoV2ViQ29yZTo6SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6dmlzaXRBZGRp
dGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNQYWludFdvcmtsZXRHbG9iYWxT
Y29wZTo6cmVnaXN0ZXJQYWludCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrbGV0R2xv
YmFsU2NvcGVCYXNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtsZXRHbG9i
YWxTY29wZUJhc2U6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZSk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6Y2xlYXJET01HdWFyZGVkT2JqZWN0cyk6
CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnZpc2l0Q2hpbGRy
ZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpkZXN0cm95
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtsZXRHbG9iYWxT
Y29wZUJhc2U6OnN1cHBvcnRzUmljaFNvdXJjZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6SlNX
b3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzaG91bGRJbnRlcnJ1cHRTY3JpcHQpOgorICAgICAgICAo
V2ViQ29yZTo6SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzaG91bGRJbnRlcnJ1cHRTY3JpcHRC
ZWZvcmVUaW1lb3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFz
ZTo6amF2YVNjcmlwdFJ1bnRpbWVGbGFncyk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAg
ICAgICAgKFdlYkNvcmU6OnRvSlNXb3JrbGV0R2xvYmFsU2NvcGUpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6d3JhcHBlZCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnByb3h5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAg
ICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFN0YXRl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZSk6
CisgICAgICAgIChXZWJDb3JlOjpleGVjU3RhdGVGcm9tV29ya2xldEdsb2JhbFNjb3BlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1dlYkNvcmVCdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKElzRE9NR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKFNo
b3VsZFVzZUdsb2JhbE9iamVjdFByb3RvdHlwZSk6CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6
CisgICAgICAgIChHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZ0ZvckV4cG9z
ZWQpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGw6CisgICAgICAgICogY3NzL0NTU1BhaW50SW1h
Z2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYWludEltYWdlVmFsdWU6OmltYWdl
KToKKyAgICAgICAgKiBjc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRPTUNTU1BhaW50V29ya2xldDo6ZW5zdXJlUGFpbnRXb3JrbGV0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRPTUNTU1BhaW50V29ya2xldDo6ZW5zdXJlUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUp
OiBEZWxldGVkLgorICAgICAgICAqIGNzcy9ET01DU1NQYWludFdvcmtsZXQuaDoKKyAgICAgICAg
KiBjc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmlkbDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVuc3VyZUNTU1BhaW50V29ya2xldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVuc3VyZUNTU1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpnZXRDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAg
ICogZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbjoKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0
Ojp2bSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpleGVjU3Rh
dGUpOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojppc1dvcmtsZXRHbG9iYWxTY29wZSBjb25z
dCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dlckFnZW50OjppbmplY3RlZFNj
cmlwdEZvckV2YWwpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1
bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1lQWdlbnQ6Omlu
amVjdGVkU2NyaXB0Rm9yRXZhbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9t
UGFpbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludEltYWdlOjpDdXN0
b21QYWludEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50SW1hZ2U6OmRvQ3Vz
dG9tUGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2Uu
aDoKKyAgICAgICAgKiB3b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHA6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAu
CisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludFdvcmtsZXRHbG9i
YWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6ZGV2
aWNlUGl4ZWxSYXRpbyk6CisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxTY29w
ZTo6YWRkUmVnaXN0ZXJlZFBhaW50KToKKyAgICAgICAgKiB3b3JrbGV0cy9QYWludFdvcmtsZXRH
bG9iYWxTY29wZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlLmguCisgICAgICAgICogd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUuaWRsLgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXQuY3BwOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwLgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2xldDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtsZXQ6OldvcmtsZXQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldDo6YWRkTW9kdWxlKToK
KyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwLgorICAgICAgICAqIHdvcmtsZXRz
L1dvcmtsZXQuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUuaWRsLgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xp
ZW50LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3Jr
ZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29u
c29sZUNsaWVudDo6V29ya2xldENvbnNvbGVDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2xldENvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKToKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtsZXRDb25zb2xlQ2xpZW50Ojpjb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrbGV0Q29uc29sZUNsaWVudDo6dGltZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29u
c29sZUNsaWVudDo6dGltZUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29sZUNs
aWVudDo6cHJvZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29sZUNsaWVudDo6
cHJvZmlsZUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29sZUNsaWVudDo6dGFr
ZUhlYXBTbmFwc2hvdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29sZUNsaWVudDo6
dGltZVN0YW1wKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRDb25zb2xlQ2xpZW50OjpyZWNv
cmQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldENvbnNvbGVDbGllbnQ6OnJlY29yZEVuZCk6
CisgICAgICAgICogd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuaDogQWRkZWQuCisgICAg
ICAgICogd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6On5Xb3JrbGV0R2xvYmFsU2NvcGUpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpldmFsdWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmlzSlNFeGVjdXRpb25Gb3JiaWRkZW4gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpkaXNhYmxlRXZhbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmRpc2FibGVXZWJBc3NlbWJseSk6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmNvbXBsZXRlVVJMIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6bG9nRXhjZXB0aW9uVG9D
b25zb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29uc29s
ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjphZGRNZXNz
YWdlKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmlzUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjppZGVu
dGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6c2Ny
aXB0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6anNSdW50aW1lRmxh
Z3MgY29uc3QpOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0
R2xvYmFsU2NvcGUuaWRsOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50
V29ya2xldEdsb2JhbFNjb3BlLmlkbC4KKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0U2NyaXB0
Q29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENv
bnRyb2xsZXI6OldvcmtsZXRTY3JpcHRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtsZXRTY3JpcHRDb250cm9sbGVyOjp+V29ya2xldFNjcmlwdENvbnRyb2xsZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmZvcmJpZEV4ZWN1dGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6aXNFeGVjdXRpb25Gb3Ji
aWRkZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6
OmRpc2FibGVFdmFsKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRTY3JpcHRDb250cm9sbGVy
OjpkaXNhYmxlV2ViQXNzZW1ibHkpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENv
bnRyb2xsZXI6OmluaXRTY3JpcHRXaXRoU3ViY2xhc3MpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2xldFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2xldFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmts
ZXRTY3JpcHRDb250cm9sbGVyOjpzZXRFeGNlcHRpb24pOgorICAgICAgICAqIHdvcmtsZXRzL1dv
cmtsZXRTY3JpcHRDb250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2xl
dFNjcmlwdENvbnRyb2xsZXI6OndvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OnZtKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0SWZOZWVkZWQpOgorCiAyMDE4LTEx
LTAyICBBbGkgSnVtYSAgPGFqdW1hQGNocm9taXVtLm9yZz4KIAogICAgICAgICByZXF1ZXN0QW5p
bWF0aW9uRnJhbWUgY2F1c2VzIGJhZCBsb2NhdGlvbiBvZiBwb3NpdGlvbjpmaXhlZCBpbnNpZGUg
b3ZlcmZsb3c6YXV0byBhbmQgaWZyYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGFiZTk2NGFk
ZTRmYWRhYWQyODkxZWM0ZTBiMDZjNjY3YmZiZDgyNjYuLjlhZWIyZGRjY2Q5YjBhODYyMjY3NTMz
NTc2NjY2N2M1YjdhZmQ2NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xNDQsNiArMTQ0LDcg
QEAgc2V0KFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS93
b3JrZXJzL3NlcnZpY2UiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3dvcmtlcnMvc2VydmljZS9jb250
ZXh0IgogICAgICIke1dFQkNPUkVfRElSfS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyIgorICAgICIk
e1dFQkNPUkVfRElSfS93b3JrbGV0cyIKICAgICAiJHtXRUJDT1JFX0RJUn0veG1sIgogICAgICIk
e1dFQkNPUkVfRElSfS94bWwvcGFyc2VyIgogICAgICIke0RFUklWRURfU09VUkNFU19XRUJDT1JF
X0RJUn0iCkBAIC01MzksNyArNTQwLDYgQEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMK
ICAgICBjc3MvQ1NTTWVkaWFSdWxlLmlkbAogICAgIGNzcy9DU1NOYW1lc3BhY2VSdWxlLmlkbAog
ICAgIGNzcy9DU1NQYWludENhbGxiYWNrLmlkbAotICAgIGNzcy9DU1NQYWludFdvcmtsZXRHbG9i
YWxTY29wZS5pZGwKICAgICBjc3MvQ1NTUGFnZVJ1bGUuaWRsCiAgICAgY3NzL0NTU1J1bGUuaWRs
CiAgICAgY3NzL0NTU1J1bGVMaXN0LmlkbApAQCAtOTA4LDYgKzkwOCwxMCBAQCBzZXQoV2ViQ29y
ZV9OT05fU1ZHX0lETF9GSUxFUwogICAgIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyVXBk
YXRlVmlhQ2FjaGUuaWRsCiAgICAgd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dD
bGllbnQuaWRsCiAKKyAgICB3b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5pZGwKKyAg
ICB3b3JrbGV0cy9Xb3JrbGV0LmlkbAorICAgIHdvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5p
ZGwKKwogICAgIHhtbC9ET01QYXJzZXIuaWRsCiAgICAgeG1sL1hNTEh0dHBSZXF1ZXN0LmlkbAog
ICAgIHhtbC9YTUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0LmlkbApAQCAtMTY4Niw2ICsxNjkwLDgg
QEAgc2V0KFdJTkRPV19DT05TVFJVQ1RPUlNfRklMRSAke0RFUklWRURfU09VUkNFU19XRUJDT1JF
X0RJUn0vRE9NV2luZG93Q29uc3RydWN0b3IKIHNldChXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJV
Q1RPUlNfRklMRSAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vV29ya2VyR2xvYmFsU2Nv
cGVDb25zdHJ1Y3RvcnMuaWRsKQogc2V0KERFRElDQVRFRFdPUktFUkdMT0JBTFNDT1BFX0NPTlNU
UlVDVE9SU19GSUxFICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9EZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwpCiBzZXQoU0VSVklDRVdPUktFUkdMT0JBTFND
T1BFX0NPTlNUUlVDVE9SU19GSUxFICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9TZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsKQorc2V0KFdPUktMRVRHTE9CQUxT
Q09QRV9DT05TVFJVQ1RPUlNfRklMRSAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vV29y
a2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCkKK3NldChQQUlOVFdPUktMRVRHTE9CQUxT
Q09QRV9DT05TVFJVQ1RPUlNfRklMRSAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsKQogCiBXRUJLSVRfRlJBTUVXT1JL
X0RFQ0xBUkUoV2ViQ29yZSkKIFdFQktJVF9JTkNMVURFX0NPTkZJR19GSUxFU19JRl9FWElTVFMo
KQpAQCAtMTg2NSw3ICsxODcxLDkgQEAgR0VORVJBVEVfQklORElOR1MoV2ViQ29yZUJpbmRpbmdz
CiAgICAgICAgIC0td2luZG93Q29uc3RydWN0b3JzRmlsZSAke1dJTkRPV19DT05TVFJVQ1RPUlNf
RklMRX0KICAgICAgICAgLS13b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgJHtXT1JL
RVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRX0KICAgICAgICAgLS1kZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgJHtERURJQ0FURURXT1JLRVJHTE9CQUxTQ09Q
RV9DT05TVFJVQ1RPUlNfRklMRX0KLSAgICAgICAgLS1zZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVD
b25zdHJ1Y3RvcnNGaWxlICR7U0VSVklDRVdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19G
SUxFfSkKKyAgICAgICAgLS1zZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxl
ICR7U0VSVklDRVdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFfQorICAgICAgICAt
LXdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgJHtXT1JLTEVUR0xPQkFMU0NPUEVf
Q09OU1RSVUNUT1JTX0ZJTEV9CisgICAgICAgIC0tcGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25z
dHJ1Y3RvcnNGaWxlICR7UEFJTlRXT1JLTEVUR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEV9
KQogCiBHRU5FUkFURV9CSU5ESU5HUyhXZWJDb3JlVGVzdFN1cHBvcnRCaW5kaW5ncwogICAgIE9V
VFBVVF9TT1VSQ0UgV2ViQ29yZVRlc3RTdXBwb3J0X1NPVVJDRVMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5tYWtlCmluZGV4IDUyMGI0MTM3NzJmZjEwZDdlM2ViZmY0NjEyZDNjN2I4NTBkNDYzZmMu
LmRjYzc3MmM2NjZiN2Y5YTAwZDhlNzBkZGFiOGM4OGRhYzZjNDQwMzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQpAQCAtODYsNiArODYsNyBAQCBWUEFUSCA9IFwKICAgICAkKFdlYkNv
cmUpL3dlYnNvY2tldHMgXAogICAgICQoV2ViQ29yZSkvd29ya2VycyBcCiAgICAgJChXZWJDb3Jl
KS93b3JrZXJzL3NlcnZpY2UgXAorICAgICQoV2ViQ29yZSkvd29ya2xldHMgXAogICAgICQoV2Vi
Q29yZSkveG1sIFwKICMKIApAQCAtNDUzLDcgKzQ1NCw2IEBAIEpTX0JJTkRJTkdfSURMUyA9IFwK
ICAgICAkKFdlYkNvcmUpL2Nzcy9DU1NOYW1lc3BhY2VSdWxlLmlkbCBcCiAgICAgJChXZWJDb3Jl
KS9jc3MvQ1NTUGFnZVJ1bGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9DU1NQYWludENhbGxi
YWNrLmlkbCBcCi0gICAgJChXZWJDb3JlKS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUu
aWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9DU1NSdWxlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9j
c3MvQ1NTUnVsZUxpc3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9DU1NTdHlsZURlY2xhcmF0
aW9uLmlkbCBcCkBAIC0xMDI1LDYgKzEwMjUsOSBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAgICAg
JChXZWJDb3JlKS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5pZGwg
XAogICAgICQoV2ViQ29yZSkvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJVcGRhdGVWaWFD
YWNoZS5pZGwgXAogICAgICQoV2ViQ29yZSkvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJX
aW5kb3dDbGllbnQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL3dvcmtsZXRzL1BhaW50V29ya2xldEds
b2JhbFNjb3BlLmlkbCBcCisgICAgJChXZWJDb3JlKS93b3JrbGV0cy9Xb3JrbGV0LmlkbCBcCisg
ICAgJChXZWJDb3JlKS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaWRsIFwKICAgICAkKFdl
YkNvcmUpL3htbC9ET01QYXJzZXIuaWRsIFwKICAgICAkKFdlYkNvcmUpL3htbC9YTUxIdHRwUmVx
dWVzdC5pZGwgXAogICAgICQoV2ViQ29yZSkveG1sL1hNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQu
aWRsIFwKQEAgLTExNTcsNiArMTE2MCw3IEBAIGFsbCA6IFwKICAgICAkKFNVUFBMRU1FTlRBTF9E
RVBFTkRFTkNZX0ZJTEUpIFwKICAgICAkKFdJTkRPV19DT05TVFJVQ1RPUlNfRklMRSkgXAogICAg
ICQoV09SS0VSR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUpIFwKKyAgICAkKFdPUktMRVRH
TE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSkgXAogICAgICQoSlNfRE9NX0hFQURFUlMpIFwK
ICAgICAkKFdFQl9ET01fSEVBREVSUykgXAogICAgIFwKQEAgLTE1MDUsNiArMTUwOSw3IEBAIElE
TF9JTkNMVURFUyA9IFwKICAgICAkKFdlYkNvcmUpL3N2ZyBcCiAgICAgJChXZWJDb3JlKS90ZXN0
aW5nIFwKICAgICAkKFdlYkNvcmUpL3dvcmtlcnMgXAorICAgICQoV2ViQ29yZSkvd29ya2xldHMg
XAogICAgICQoV2ViQ29yZSkveG1sCiAKIElETF9DT01NT05fQVJHUyA9ICQoSURMX0lOQ0xVREVT
OiU9LS1pbmNsdWRlICUpIC0td3JpdGUtZGVwZW5kZW5jaWVzIC0tb3V0cHV0RGlyIC4KQEAgLTE1
MTcsNiArMTUyMiw4IEBAIFdJTkRPV19DT05TVFJVQ1RPUlNfRklMRSA9IC4vRE9NV2luZG93Q29u
c3RydWN0b3JzLmlkbAogV09SS0VSR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUgPSAuL1dv
cmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbAogREVESUNBVEVEV09SS0VSR0xPQkFMU0NP
UEVfQ09OU1RSVUNUT1JTX0ZJTEUgPSAuL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3JzLmlkbAogU0VSVklDRVdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFID0g
Li9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCitXT1JLTEVUR0xPQkFM
U0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUgPSAuL1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9y
cy5pZGwKK1BBSU5UV09SS0xFVEdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFID0gLi9QYWlu
dFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKIElETF9GSUxFU19UTVAgPSAuL2lk
bF9maWxlcy50bXAKIElETF9BVFRSSUJVVEVTX0ZJTEUgPSAkKFdlYkNvcmUpL2JpbmRpbmdzL3Nj
cmlwdHMvSURMQXR0cmlidXRlcy5qc29uCiAKQEAgLTE1MjksMTAgKzE1MzYsMTAgQEAgZW5kZWYK
IAogJChTVVBQTEVNRU5UQUxfTUFLRUZJTEVfREVQUykgOiAkKFBSRVBST0NFU1NfSURMU19TQ1JJ
UFRTKSAkKEpTX0JJTkRJTkdfSURMUykgJChQTEFURk9STV9GRUFUVVJFX0RFRklORVMpIERlcml2
ZWRTb3VyY2VzLm1ha2UKIAkkKGZvcmVhY2ggZiwkKEpTX0JJTkRJTkdfSURMUyksQGVjaG8gJChm
KT4+JChJRExfRklMRVNfVE1QKSQoTkwpKQotCSQoUEVSTCkgJChXZWJDb3JlKS9iaW5kaW5ncy9z
Y3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbCAtLWRlZmluZXMgIiQoRkVBVFVSRV9BTkRfUExBVEZP
Uk1fREVGSU5FUykgJChBRERJVElPTkFMX0lETF9ERUZJTkVTKSBMQU5HVUFHRV9KQVZBU0NSSVBU
IiAtLWlkbEZpbGVzTGlzdCAkKElETF9GSUxFU19UTVApIC0tc3VwcGxlbWVudGFsRGVwZW5kZW5j
eUZpbGUgJChTVVBQTEVNRU5UQUxfREVQRU5ERU5DWV9GSUxFKSAtLXdpbmRvd0NvbnN0cnVjdG9y
c0ZpbGUgJChXSU5ET1dfQ09OU1RSVUNUT1JTX0ZJTEUpIC0td29ya2VyR2xvYmFsU2NvcGVDb25z
dHJ1Y3RvcnNGaWxlICQoV09SS0VSR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUpIC0tZGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlICQoREVESUNBVEVEV09SS0VS
R0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUpIC0tc2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
Q29uc3RydWN0b3JzRmlsZSAkKFNFUlZJQ0VXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNf
RklMRSkgLS1zdXBwbGVtZW50YWxNYWtlZmlsZURlcHMgJEAKKwkkKFBFUkwpICQoV2ViQ29yZSkv
YmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGwgLS1kZWZpbmVzICIkKEZFQVRVUkVf
QU5EX1BMQVRGT1JNX0RFRklORVMpICQoQURESVRJT05BTF9JRExfREVGSU5FUykgTEFOR1VBR0Vf
SkFWQVNDUklQVCIgLS1pZGxGaWxlc0xpc3QgJChJRExfRklMRVNfVE1QKSAtLXN1cHBsZW1lbnRh
bERlcGVuZGVuY3lGaWxlICQoU1VQUExFTUVOVEFMX0RFUEVOREVOQ1lfRklMRSkgLS13aW5kb3dD
b25zdHJ1Y3RvcnNGaWxlICQoV0lORE9XX0NPTlNUUlVDVE9SU19GSUxFKSAtLXdvcmtlckdsb2Jh
bFNjb3BlQ29uc3RydWN0b3JzRmlsZSAkKFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19G
SUxFKSAtLWRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSAkKERFRElD
QVRFRFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFKSAtLXNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgJChTRVJWSUNFV09SS0VSR0xPQkFMU0NPUEVfQ09O
U1RSVUNUT1JTX0ZJTEUpIC0td29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSAkKFdP
UktMRVRHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSkgLS1wYWludFdvcmtsZXRHbG9iYWxT
Y29wZUNvbnN0cnVjdG9yc0ZpbGUgJChQQUlOVFdPUktMRVRHTE9CQUxTQ09QRV9DT05TVFJVQ1RP
UlNfRklMRSkgLS1zdXBwbGVtZW50YWxNYWtlZmlsZURlcHMgJEAKIAkkKERFTEVURSkgJChJRExf
RklMRVNfVE1QKQogCi1KUyUuY3BwIEpTJS5oIDogJS5pZGwgJChKU19CSU5ESU5HU19TQ1JJUFRT
KSAkKElETF9BVFRSSUJVVEVTX0ZJTEUpICQoV0lORE9XX0NPTlNUUlVDVE9SU19GSUxFKSAkKFdP
UktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFKSAkKFBMQVRGT1JNX0ZFQVRVUkVfREVG
SU5FUykKK0pTJS5jcHAgSlMlLmggOiAlLmlkbCAkKEpTX0JJTkRJTkdTX1NDUklQVFMpICQoSURM
X0FUVFJJQlVURVNfRklMRSkgJChXSU5ET1dfQ09OU1RSVUNUT1JTX0ZJTEUpICQoV09SS0VSR0xP
QkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUpICQoV09SS0xFVEdMT0JBTFNDT1BFX0NPTlNUUlVD
VE9SU19GSUxFKSAkKFBMQVRGT1JNX0ZFQVRVUkVfREVGSU5FUykKIAkkKFBFUkwpICQoV2ViQ29y
ZSkvYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbCAkKElETF9DT01NT05fQVJH
UykgLS1kZWZpbmVzICIkKEZFQVRVUkVfQU5EX1BMQVRGT1JNX0RFRklORVMpICQoQURESVRJT05B
TF9JRExfREVGSU5FUykgTEFOR1VBR0VfSkFWQVNDUklQVCIgLS1nZW5lcmF0b3IgSlMgLS1pZGxB
dHRyaWJ1dGVzRmlsZSAkKElETF9BVFRSSUJVVEVTX0ZJTEUpIC0tc3VwcGxlbWVudGFsRGVwZW5k
ZW5jeUZpbGUgJChTVVBQTEVNRU5UQUxfREVQRU5ERU5DWV9GSUxFKSAkPAogCiAtaW5jbHVkZSAk
KFNVUFBMRU1FTlRBTF9NQUtFRklMRV9ERVBTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA3ZTMxZjhhYTE0
MjgwM2JiNGE0NTNjMmUyZWRhMjU5ODg1OGNlZjcwLi5kNTAyNzc3MmIxZTZmYWM2YmY5NDhmZTJm
NzAyZDhhNWQyZjE4YjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMzg4LDcgKzM4OCw2IEBAIGJpbmRp
bmdzL2pzL0pTRE9NQ29udmVydFN0cmluZ3MuY3BwCiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRX
ZWJHTC5jcHAKIGJpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuY3BwCiBiaW5kaW5ncy9qcy9KU0Rl
cHJlY2F0ZWRDU1NPTVZhbHVlQ3VzdG9tLmNwcAotYmluZGluZ3MvanMvSlNDU1NQYWludFdvcmts
ZXRHbG9iYWxTY29wZUN1c3RvbS5jcHAKIGJpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmNwcAog
YmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwCiBiaW5kaW5n
cy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwCkBAIC00NDksNiArNDQ4LDcgQEAgYmlu
ZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwCiBiaW5kaW5ncy9qcy9KU05vZGVMaXN0
Q3VzdG9tLmNwcAogYmluZGluZ3MvanMvSlNPZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRDdXN0b20uY3BwCiBiaW5kaW5ncy9qcy9KU1BhaW50UmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9t
LmNwcAorYmluZGluZ3MvanMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZUN1c3RvbS5jcHAKIGJp
bmRpbmdzL2pzL0pTUGF5bWVudE1ldGhvZENoYW5nZUV2ZW50Q3VzdG9tLmNwcAogYmluZGluZ3Mv
anMvSlNQYXltZW50UmVzcG9uc2VDdXN0b20uY3BwCiBiaW5kaW5ncy9qcy9KU1BlcmZvcm1hbmNl
RW50cnlDdXN0b20uY3BwCkBAIC00ODEsNiArNDgxLDcgQEAgYmluZGluZ3MvanMvSlNXaW5kb3dQ
cm94eS5jcHAKIGJpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcAogYmluZGlu
Z3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAKIGJpbmRpbmdzL2pzL0pTV29ya2Vy
TmF2aWdhdG9yQ3VzdG9tLmNwcAorYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNl
LmNwcAogYmluZGluZ3MvanMvSlNYTUxEb2N1bWVudEN1c3RvbS5jcHAKIGJpbmRpbmdzL2pzL0pT
WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCiBiaW5kaW5ncy9qcy9KU1hQYXRoTlNSZXNvbHZlckN1
c3RvbS5jcHAKQEAgLTYxNiw3ICs2MTcsNiBAQCBjc3MvQ1NTTmFtZWRJbWFnZVZhbHVlLmNwcAog
Y3NzL0NTU05hbWVzcGFjZVJ1bGUuY3BwCiBjc3MvQ1NTUGFnZVJ1bGUuY3BwCiBjc3MvQ1NTUGFp
bnRJbWFnZVZhbHVlLmNwcAotY3NzL0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAogY3Nz
L0NTU1BlbmRpbmdTdWJzdGl0dXRpb25WYWx1ZS5jcHAKIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5j
cHAKIGNzcy9DU1NQcm9wZXJ0eS5jcHAKQEAgLTIzNzcsNiArMjM3NywxMiBAQCB3b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmNwcAogd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyV29ya2VyLmNwcAogCit3b3JrbGV0cy9Xb3JrbGV0LmNwcAord29ya2xldHMv
V29ya2xldENvbnNvbGVDbGllbnQuY3BwCit3b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
Cit3b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKK3dvcmtsZXRzL1BhaW50V29y
a2xldEdsb2JhbFNjb3BlLmNwcAorCiB4bWwvRE9NUGFyc2VyLmNwcAogeG1sL05hdGl2ZVhQYXRo
TlNSZXNvbHZlci5jcHAKIHhtbC9YTUxFcnJvcnMuY3BwCkBAIC0yNDg2LDcgKzI0OTIsOSBAQCBK
U0NTU0tleWZyYW1lc1J1bGUuY3BwCiBKU0NTU01lZGlhUnVsZS5jcHAKIEpTQ1NTTmFtZXNwYWNl
UnVsZS5jcHAKIEpTQ1NTUGFpbnRDYWxsYmFjay5jcHAKLUpTQ1NTUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUuY3BwCitKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAorSlNXb3JrbGV0LmNwcAor
SlNXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCiBKU0NTU1BhZ2VSdWxlLmNwcAogSlNDU1NSdWxlLmNw
cAogSlNDU1NSdWxlTGlzdC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlNDRhOTYyYjY4MmMxYzZjMDlmN2ExYTY1YzYwNjRi
OTY0N2RmM2I3Li4xNjEzOTFhM2JmMzEyMDFhMGIyZmQ5ODc1MDE3MTg3OTRkNjI3ZThkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0xMzUwLDE0ICsxMzUwLDE5IEBACiAJCTRCMzQ4MDk0MEVFRjUwRDQwMEFDMUI0MSAvKiBJbWFn
ZVNvdXJjZUNHLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0QjM0ODA5MjBFRUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VDRy5oICovOyB9OwogCQk0
QjVCREQ5QjIxNjU4QTE1MDBERDQyNjIgLyogQ1NTUGFpbnRDYWxsYmFjay5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI1QkREOUEyMTY1OEExNTAwREQ0
MjYyIC8qIENTU1BhaW50Q2FsbGJhY2suaCAqLzsgfTsKIAkJNEI2QjVDQkQyMTY0MEVGRjAwNjAz
ODE3IC8qIERPTUNTU1BhaW50V29ya2xldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNEI2QjVDQjgyMTYzRUMwNzAwNjAzODE3IC8qIERPTUNTU1BhaW50
V29ya2xldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
Ci0JCTRCNkI1Q0MwMjE2NDM4NjQwMDYwMzgxNyAvKiBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI2QjVD
QkYyMTY0Mzg2NDAwNjAzODE3IC8qIENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmggKi87IH07
CisJCTRCNkI1Q0MwMjE2NDM4NjQwMDYwMzgxNyAvKiBQYWludFdvcmtsZXRHbG9iYWxTY29wZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI2QjVDQkYy
MTY0Mzg2NDAwNjAzODE3IC8qIFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmggKi87IH07CiAJCTRC
NkU4NzY5MjE3NkQ2OTIwMDQyMEU1RSAvKiBDU1NQYWludEltYWdlVmFsdWUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCNkU4NzY4MjE3NkQ2OTIwMDQy
MEU1RSAvKiBDU1NQYWludEltYWdlVmFsdWUuaCAqLzsgfTsKIAkJNEI2RkE2RjQwQzM5RTQ4QzAw
MDg3MDExIC8qIFNtYXJ0UmVwbGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNEI2RkE2RjIwQzM5RTQ4QzAwMDg3MDExIC8qIFNtYXJ0UmVwbGFjZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRCN0FF
NDkzMjE3N0I1NkYwMEM1OTk1OSAvKiBDdXN0b21QYWludEltYWdlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjdBRTQ5MjIxNzdCNTZGMDBDNTk5NTkg
LyogQ3VzdG9tUGFpbnRJbWFnZS5oICovOyB9OworCQk0QjdGOUM1MjIxODNCNUU1MDAxQ0VCQTAg
LyogV29ya2xldENvbnNvbGVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDRCN0Y5QzUxMjE4M0I1RTUwMDFDRUJBMCAvKiBXb3JrbGV0Q29uc29s
ZUNsaWVudC5oICovOyB9OwogCQk0QkFFOTVCMTBCMkZBOUNFMDBBRUQ4QTAgLyogRWRpdG9yRGVs
ZXRlQWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0QkFFOTVCMDBCMkZBOUNFMDBBRUQ4QTAgLyogRWRpdG9yRGVsZXRlQWN0aW9uLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEJEQTNGRkUyMTUx
QjZGNTAwRkQ2NjA0IC8qIERPTUNTU0N1c3RvbVByb3BlcnR5RGVzY3JpcHRvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJEQTNGRjgyMTUxQjZGMjAw
RkQ2NjA0IC8qIERPTUNTU0N1c3RvbVByb3BlcnR5RGVzY3JpcHRvci5oICovOyB9OwogCQk0QkRB
M0ZGRjIxNTFCNkY1MDBGRDY2MDQgLyogRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJEQTNGRjkyMTUx
QjZGMzAwRkQ2NjA0IC8qIERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuaCAqLzsgfTsKIAkJ
NEJEQTQwMDEyMTUxQjZGNTAwRkQ2NjA0IC8qIENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJEQTNGRkIy
MTUxQjZGNDAwRkQ2NjA0IC8qIENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTRCREVBMzIwMjE3RUM1
NUYwMDUyREZDRCAvKiBXb3JrbGV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0QkRFQTMxRjIxN0VDNTVGMDA1MkRGQ0QgLyogV29ya2xldC5oICovOyB9
OworCQk0QkRFQTMyNTIxN0ZFMkU0MDA1MkRGQ0QgLyogV29ya2xldEdsb2JhbFNjb3BlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QkRFQTMyNDIxN0ZF
MkU0MDA1MkRGQ0QgLyogV29ya2xldEdsb2JhbFNjb3BlLmggKi87IH07CisJCTRCREVBMzI4MjE4
MDAzRjcwMDUyREZDRCAvKiBXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJERUEzMjcyMTgwMDNGNzAwNTJERkNE
IC8qIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyLmggKi87IH07CisJCTRCREVBMzJDMjE4MDMzRUIw
MDUyREZDRCAvKiBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCREVBMzJCMjE4MDMzRUIwMDUyREZDRCAvKiBK
U1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuaCAqLzsgfTsKIAkJNEQzQjAwQUIyMTVENjlBNzAwNzZC
OTgzIC8qIE1lZGlhUmVjb3JkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDREM0IwMEE5MjE1RDY5QTcwMDc2Qjk4MyAvKiBNZWRpYVJlY29yZGVyLmgg
Ki87IH07CiAJCTREM0IwMEFGMjE1RDZBNjkwMDc2Qjk4MyAvKiBCbG9iRXZlbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDREM0IwMEFEMjE1RDZBNjkw
MDc2Qjk4MyAvKiBCbG9iRXZlbnQuaCAqLzsgfTsKIAkJNEQzQjUwMTYyMTdFNThCNzAwNjY1REIx
IC8qIE1lZGlhUmVjb3JkZXJQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0RDNCNTAxNDIxN0U1OEI3MDA2NjVEQjEgLyogTWVkaWFSZWNvcmRl
clByaXZhdGUuaCAqLzsgfTsKQEAgLTc4OTksMTYgKzc5MDQsMTggQEAKIAkJNEI2QjVDQjYyMTYz
REMxQTAwNjAzODE3IC8qIERPTUNTU1BhaW50V29ya2xldC5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRE9NQ1NTUGFpbnRX
b3JrbGV0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI2QjVDQjgyMTYzRUMw
NzAwNjAzODE3IC8qIERPTUNTU1BhaW50V29ya2xldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01DU1NQ
YWludFdvcmtsZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI2QjVDQjkyMTYz
RUQzMjAwNjAzODE3IC8qIERPTUNTU1BhaW50V29ya2xldC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBET01DU1NQYWludFdvcmtsZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0
QjZCNUNCRTIxNjQzNEZCMDA2MDM4MTcgLyogSlNDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZUN1
c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNEI2QjVDQkYyMTY0Mzg2
NDAwNjAzODE3IC8qIENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTRCNkI1Q0MxMjE2NDM5Q0YwMDYwMzgxNyAvKiBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTRCNkI1Q0MzMjE2NDNBOEUwMDYwMzgxNyAv
KiBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ1NTUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QjZCNUNCRTIxNjQz
NEZCMDA2MDM4MTcgLyogSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZUN1c3RvbS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEI2QjVDQkYyMTY0Mzg2NDAwNjAzODE3IC8qIFBhaW50
V29ya2xldEdsb2JhbFNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhaW50V29ya2xldEdsb2JhbFNj
b3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRCNkI1Q0MxMjE2NDM5Q0YwMDYw
MzgxNyAvKiBQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQ
YWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTRCNkI1Q0MzMjE2NDNBOEUwMDYwMzgxNyAvKiBQYWludFdvcmtsZXRHbG9iYWxTY29wZS5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0QjZFODc2ODIxNzZENjkyMDA0MjBFNUUgLyogQ1NTUGFpbnRJbWFnZVZhbHVlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENTU1BhaW50SW1hZ2VWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0QjZFODc2QjIxNzZEOEExMDA0MjBFNUUgLyogQ1NTUGFpbnRJbWFnZVZhbHVl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU1BhaW50SW1hZ2VWYWx1ZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCNkZBNkYyMEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFydFJl
cGxhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU21hcnRSZXBsYWNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCNkZBNkY2MEMzOUU0QTEwMDA4NzAxMSAv
KiBTbWFydFJlcGxhY2VDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTbWFydFJlcGxhY2VDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCN0FF
NDkyMjE3N0I1NkYwMEM1OTk1OSAvKiBDdXN0b21QYWludEltYWdlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEN1c3RvbVBhaW50SW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI3QUU0
OTUyMTc3QjYzRTAwQzU5OTU5IC8qIEN1c3RvbVBhaW50SW1hZ2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQ3VzdG9tUGFpbnRJbWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTRCN0Y5QzUxMjE4M0I1RTUwMDFDRUJBMCAvKiBXb3JrbGV0Q29uc29sZUNsaWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXb3JrbGV0Q29uc29sZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0QjdGOUM1NDIxODNCNjM0MDAxQ0VCQTAgLyogV29ya2xldENvbnNvbGVDbGllbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2xldENvbnNvbGVDbGllbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0QkFFOTVCMDBCMkZBOUNFMDBBRUQ4QTAgLyogRWRpdG9y
RGVsZXRlQWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVkaXRvckRl
bGV0ZUFjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QkRBM0ZGNTIxNTFC
NkYwMDBGRDY2MDQgLyogRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCREEzRkY3MjE1MUI2RjEwMEZENjYwNCAvKiBET01DU1NS
ZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNzkxNiw2ICs3OTIzLDE2IEBACiAJCTRCREEzRkY5MjE1MUI2RjMwMEZE
NjYwNCAvKiBET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEJEQTNGRkEyMTUxQjZGMzAwRkQ2NjA0IC8qIERPTUNTU0N1
c3RvbVByb3BlcnR5RGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRE9NQ1NT
Q3VzdG9tUHJvcGVydHlEZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNEJEQTNGRkIyMTUxQjZGNDAwRkQ2NjA0IC8qIENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NSZWdpc3RlcmVkQ3VzdG9t
UHJvcGVydHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEJERUEzMUMyMTdFQkNG
NTAwNTJERkNEIC8qIFdvcmtsZXQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdvcmtsZXQuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0QkRFQTMxRjIxN0VDNTVGMDA1MkRGQ0QgLyogV29ya2xldC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXb3JrbGV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRC
REVBMzIzMjE3RUM5NkEwMDUyREZDRCAvKiBXb3JrbGV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdvcmtsZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QkRFQTMyNDIxN0ZF
MkU0MDA1MkRGQ0QgLyogV29ya2xldEdsb2JhbFNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmts
ZXRHbG9iYWxTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QkRFQTMyNjIx
N0ZFMkZBMDA1MkRGQ0QgLyogV29ya2xldEdsb2JhbFNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdvcmtsZXRHbG9iYWxTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTRCREVBMzI3MjE4MDAzRjcwMDUyREZDRCAvKiBXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0QkRFQTMyOTIxODAwNDBDMDA1MkRGQ0QgLyogV29ya2xldFNjcmlwdENv
bnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2xldFNjcmlwdENvbnRyb2xsZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QkRFQTMyQTIxODAxMDcyMDA1MkRG
Q0QgLyogV29ya2xldEdsb2JhbFNjb3BlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXb3JrbGV0R2xvYmFsU2NvcGUuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QkRFQTMyQjIxODAzM0VCMDA1MkRGQ0Qg
LyogSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV29ya2xldEds
b2JhbFNjb3BlQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QkRFQTMyRDIx
ODAzNDA1MDA1MkRGQ0QgLyogSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTREM0IwMEE0MjE1RDYxMDQwMDc2Qjk4MyAvKiBNZWRpYVJlY29yZGVyLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYVJlY29yZGVyLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNEQzQjAwQTYyMTVENjQ1QjAwNzZCOTgzIC8qIEJsb2JFdmVudC5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQmxvYkV2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNEQzQjAwQTgyMTVENjlBNjAwNzZCOTgzIC8qIE1lZGlhUmVjb3JkZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFSZWNvcmRlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTgxNiw2ICsxNTgzMyw3IEBACiAJ
CQkJQjIyMjc3Q0EwRDAwQkYxRTAwNzFCNzgyIC8qIHN2ZyAqLywKIAkJCQk0MTdEQTRDRDEzNzM0
MjA0MDA3QzU3RkIgLyogdGVzdGluZyAqLywKIAkJCQkyRTQzNDYzMTBGNTQ2QTY4MDBCMEYxQkEg
Lyogd29ya2VycyAqLywKKwkJCQk0QkRFQTMxODIxN0VCQjg4MDA1MkRGQ0QgLyogd29ya2xldHMg
Ki8sCiAJCQkJRTFGMDQyNDMwOTgzOTM4OTAwNjY5NEVBIC8qIHhtbCAqLywKIAkJCQk2NTY1ODBF
QzA5RDEyQjIwMDAwRTYxRDcgLyogRGVyaXZlZCBTb3VyY2VzICovLAogCQkJCTA4OUMxNjY1RkU4
NDExNThDMDJBQUMwNyAvKiBSZXNvdXJjZXMgKi8sCkBAIC0xODA0OCw2ICsxODA2NiwyNiBAQAog
CQkJcGF0aCA9IGFuaW1hdGlvbjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJ
CTRCREVBMzE4MjE3RUJCODgwMDUyREZDRCAvKiB3b3JrbGV0cyAqLyA9IHsKKwkJCWlzYSA9IFBC
WEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNEI2QjVDQzEyMTY0MzlDRjAwNjAzODE3IC8q
IFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcCAqLywKKwkJCQk0QjZCNUNCRjIxNjQzODY0MDA2
MDM4MTcgLyogUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCAqLywKKwkJCQk0QjZCNUNDMzIxNjQz
QThFMDA2MDM4MTcgLyogUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaWRsICovLAorCQkJCTRCREVB
MzIzMjE3RUM5NkEwMDUyREZDRCAvKiBXb3JrbGV0LmNwcCAqLywKKwkJCQk0QkRFQTMxRjIxN0VD
NTVGMDA1MkRGQ0QgLyogV29ya2xldC5oICovLAorCQkJCTRCREVBMzFDMjE3RUJDRjUwMDUyREZD
RCAvKiBXb3JrbGV0LmlkbCAqLywKKwkJCQk0QjdGOUM1NDIxODNCNjM0MDAxQ0VCQTAgLyogV29y
a2xldENvbnNvbGVDbGllbnQuY3BwICovLAorCQkJCTRCN0Y5QzUxMjE4M0I1RTUwMDFDRUJBMCAv
KiBXb3JrbGV0Q29uc29sZUNsaWVudC5oICovLAorCQkJCTRCREVBMzI2MjE3RkUyRkEwMDUyREZD
RCAvKiBXb3JrbGV0R2xvYmFsU2NvcGUuY3BwICovLAorCQkJCTRCREVBMzI0MjE3RkUyRTQwMDUy
REZDRCAvKiBXb3JrbGV0R2xvYmFsU2NvcGUuaCAqLywKKwkJCQk0QkRFQTMyQTIxODAxMDcyMDA1
MkRGQ0QgLyogV29ya2xldEdsb2JhbFNjb3BlLmlkbCAqLywKKwkJCQk0QkRFQTMyOTIxODAwNDBD
MDA1MkRGQ0QgLyogV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwICovLAorCQkJCTRCREVBMzI3
MjE4MDAzRjcwMDUyREZDRCAvKiBXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oICovLAorCQkJKTsK
KwkJCXBhdGggPSB3b3JrbGV0czsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJ
CTREM0IwMEEwMjE1RDVDMEYwMDc2Qjk4MyAvKiBtZWRpYXJlY29yZGVyICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTI0NDM1LDYgKzI0NDczLDggQEAKIAkJ
CQlCQ0JGQjUzQjBEQ0QyOUNGMDAxOUIzRTUgLyogSlNXaW5kb3dQcm94eS5oICovLAogCQkJCUUx
QzM2RDMyMEVCMEEwOTQwMDc0MTBCQyAvKiBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAgKi8s
CiAJCQkJRTFDMzZEMzMwRUIwQTA5NDAwNzQxMEJDIC8qIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNl
LmggKi8sCisJCQkJNEJERUEzMkQyMTgwMzQwNTAwNTJERkNEIC8qIEpTV29ya2xldEdsb2JhbFNj
b3BlQmFzZS5jcHAgKi8sCisJCQkJNEJERUEzMkIyMTgwMzNFQjAwNTJERkNEIC8qIEpTV29ya2xl
dEdsb2JhbFNjb3BlQmFzZS5oICovLAogCQkJCTcwOUEwMUZEMUUzRDBCQ0MwMDZCMEQ0QyAvKiBN
b2R1bGVGZXRjaEZhaWx1cmVLaW5kLmggKi8sCiAJCQkJNDFCNDU5RUQxRjU1RUJDNzAwMDBGNkZE
IC8qIFJlYWRhYmxlU3RyZWFtLmNwcCAqLywKIAkJCQk0MUI0NTlEQTFGNENBREI5MDAwMEY2RkQg
LyogUmVhZGFibGVTdHJlYW0uaCAqLywKQEAgLTI0NDc1LDEyICsyNDUxNSwxMiBAQAogCQkJY2hp
bGRyZW4gPSAoCiAJCQkJN0NEMzQ0MUIxRjMyREUzMDAwMERDRDQ5IC8qIENhY2hlZCBBdHRyaWJ1
dGVzIHcvIEludmFsaWRhdGlvbiAqLywKIAkJCQk3QzNEOEVFNDFFMDhCQUJFMDAyM0IwODQgLyog
R0MgLyBXcmFwcGluZyBPbmx5ICovLAotCQkJCTRCNkI1Q0JFMjE2NDM0RkIwMDYwMzgxNyAvKiBK
U0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcCAqLywKIAkJCQk5QkM1RjlERjFE
NUFBRjZBMDAyQjc0OUQgLyogSlNDdXN0b21FbGVtZW50UmVnaXN0cnlDdXN0b20uY3BwICovLAog
CQkJCUJDRDlDMjVFMEMxN0FBNjcwMDVDOTBBMiAvKiBKU0RPTVdpbmRvd0N1c3RvbS5jcHAgKi8s
CiAJCQkJNjUyRkJCQkIwREUyN0NCNjAwMDFEMzg2IC8qIEpTRE9NV2luZG93Q3VzdG9tLmggKi8s
CiAJCQkJQkM1ODIzRjQwQzBBOThERjAwNTNGMUI1IC8qIEpTSFRNTEVsZW1lbnRDdXN0b20uY3Bw
ICovLAogCQkJCUJDRTFDNDNGMEQ5ODMwRjQwMDNCMDJGMiAvKiBKU0xvY2F0aW9uQ3VzdG9tLmNw
cCAqLywKKwkJCQk0QjZCNUNCRTIxNjQzNEZCMDA2MDM4MTcgLyogSlNQYWludFdvcmtsZXRHbG9i
YWxTY29wZUN1c3RvbS5jcHAgKi8sCiAJCQkJNDE4QzM5NUQxQzhGMEFBQjAwNTFDOEEzIC8qIEpT
UmVhZGFibGVTdHJlYW1Tb3VyY2VDdXN0b20uY3BwICovLAogCQkJCTQ2QkNCQkJFMjA4NTAwNUIw
MDcxMDYzOCAvKiBKU1JlbW90ZURPTVdpbmRvd0N1c3RvbS5jcHAgKi8sCiAJCQkpOwpAQCAtMjYw
OTYsOSArMjYxMzYsNiBAQAogCQkJCTRCNUJERDk5MjE2NTg4RTUwMERENDI2MiAvKiBDU1NQYWlu
dENhbGxiYWNrLmlkbCAqLywKIAkJCQk0QjZFODc2QjIxNzZEOEExMDA0MjBFNUUgLyogQ1NTUGFp
bnRJbWFnZVZhbHVlLmNwcCAqLywKIAkJCQk0QjZFODc2ODIxNzZENjkyMDA0MjBFNUUgLyogQ1NT
UGFpbnRJbWFnZVZhbHVlLmggKi8sCi0JCQkJNEI2QjVDQzEyMTY0MzlDRjAwNjAzODE3IC8qIENT
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcCAqLywKLQkJCQk0QjZCNUNCRjIxNjQzODY0MDA2
MDM4MTcgLyogQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCAqLywKLQkJCQk0QjZCNUNDMzIx
NjQzQThFMDA2MDM4MTcgLyogQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaWRsICovLAogCQkJ
CTk0MTgyNzhDMUQ4Q0FFOTUwMDQ5Mjc2NCAvKiBDU1NQZW5kaW5nU3Vic3RpdHV0aW9uVmFsdWUu
Y3BwICovLAogCQkJCTk0MTgyNzhEMUQ4Q0FFOTUwMDQ5Mjc2NCAvKiBDU1NQZW5kaW5nU3Vic3Rp
dHV0aW9uVmFsdWUuaCAqLywKIAkJCQlBODBFNkNEQjBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTUHJp
bWl0aXZlVmFsdWUuY3BwICovLApAQCAtMjgwOTksNyArMjgxMzYsNiBAQAogCQkJCUE4MEU2RDAw
MEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NQYWdlUnVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEI1
QkREOUIyMTY1OEExNTAwREQ0MjYyIC8qIENTU1BhaW50Q2FsbGJhY2suaCBpbiBIZWFkZXJzICov
LAogCQkJCTRCNkU4NzY5MjE3NkQ2OTIwMDQyMEU1RSAvKiBDU1NQYWludEltYWdlVmFsdWUuaCBp
biBIZWFkZXJzICovLAotCQkJCTRCNkI1Q0MwMjE2NDM4NjQwMDYwMzgxNyAvKiBDU1NQYWludFdv
cmtsZXRHbG9iYWxTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTQ2RDM3MkUxRDZDQjI5NDAw
NzcwODRGIC8qIENTU1BhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRBNzk5NTIyMEVFNEIx
NDAwQzE5NTY4IC8qIENTU1BhcnNlckNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk0OUM3
NzAxMUQ2RTFEOTgwMEMwREU0RiAvKiBDU1NQYXJzZXJGYXN0UGF0aHMuaCBpbiBIZWFkZXJzICov
LApAQCAtMjk4MDMsNiArMjk4MzksNyBAQAogCQkJCUUxQzM2MkVGMEVBRjJBQTkwMDc0MTBCQyAv
KiBKU1dvcmtlckxvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTI3MUE1ODBFRUVDREU0
MDBGNjEyMTMgLyogSlNXb3JrZXJOYXZpZ2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRjE3
NTA2MUYzNThCRjcwMEM3NDk1MCAvKiBKU1dvcmtlclR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTRCREVBMzJDMjE4MDMzRUIwMDUyREZDRCAvKiBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuaCBp
biBIZWFkZXJzICovLAogCQkJCTdDNEM5NkREMUFENDQ4MzUwMDM2NUE2MCAvKiBKU1dyaXRhYmxl
U3RyZWFtLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzU4Q0I3MDFDNTMyNzc1MDBFMEMyRDggLyog
SlNYTUxEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMzNDhCRDQwREI3RjgwNDAwNEFC
QUI5IC8qIEpTWE1MSHR0cFJlcXVlc3QuaCBpbiBIZWFkZXJzICovLApAQCAtMzAxODgsNiArMzAy
MjUsNyBAQAogCQkJCTA4ODUwNjdGMTFEQTA0NUIwMDE4MkI5OCAvKiBQYWludEluZm8uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTA4ODUwNjgwMTFEQTA0NUIwMDE4MkI5OCAvKiBQYWludFBoYXNlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0QjFFMTNFQjIxNzkzN0IzMDA0MkNGOTggLyogUGFpbnRSZW5k
ZXJpbmdDb250ZXh0MkQuaCBpbiBIZWFkZXJzICovLAorCQkJCTRCNkI1Q0MwMjE2NDM4NjQwMDYw
MzgxNyAvKiBQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgw
RTZDRkIwQTE5ODlDQTAwN0ZCOEM1IC8qIFBhaXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2
MEEzMTJCMDI2RjcwMEMxQTM1OSAvKiBQYW5uZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2
MDFBMTJCMDI2NzYwMEMxQTM1OSAvKiBQYW5uZXJOb2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTMx
NjA3LDYgKzMxNjQ1LDEwIEBACiAJCQkJOTdBQUJEMkQxNEZBMDlENTAwNzQ1N0FFIC8qIFdvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRBMEM2
ODFEQjgwN0Q5MDAxN0E5MEIgLyogV29ya2VyVG9QYWdlRnJvbnRlbmRDaGFubmVsLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MUYxNzRGRTFGMzU4OTkyMDBDNzQ5NTAgLyogV29ya2VyVHlwZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNEJERUEzMjAyMTdFQzU1RjAwNTJERkNEIC8qIFdvcmtsZXQuaCBp
biBIZWFkZXJzICovLAorCQkJCTRCN0Y5QzUyMjE4M0I1RTUwMDFDRUJBMCAvKiBXb3JrbGV0Q29u
c29sZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNEJERUEzMjUyMTdGRTJFNDAwNTJERkNE
IC8qIFdvcmtsZXRHbG9iYWxTY29wZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNEJERUEzMjgyMTgw
MDNGNzAwNTJERkNEIC8qIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5MzMwOUUyNDA5OUU2NDkyMDA1NkU1ODEgLyogV3JhcENvbnRlbnRzSW5EdW1teVNwYW5D
b21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTZFNkZFOTFCQkQxMkU1MDAwQTYwNTMgLyog
V3JpdGFibGVTdHJlYW1CdWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE2RTZGRTgxQkJE
MTJERjAwMEE2MDUzIC8qIFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYjlmYTM0NWE1ZTM4ZjM5ZjNjMWRlZGNkNTNiNmZhMzczODU1MTNiNy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDEzMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkpTQ1NT
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKLQotI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJ
KQotCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJKU0NTU1BhaW50Q2FsbGJhY2su
aCIKLSNpbmNsdWRlICJKU0RPTUNvbnZlcnRDYWxsYmFja3MuaCIKLSNpbmNsdWRlICJKU0RPTUNv
bnZlcnRTZXF1ZW5jZXMuaCIKLSNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotc3RhdGljIEpTVmFsdWUgdGhy
b3dJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3IoRXhlY1N0YXRlJiBzdGF0ZSwgVGhyb3dTY29wZSYg
c2NvcGUsIEFTQ0lJTGl0ZXJhbCBtZXNzYWdlKQotewotICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0
aW9uKCk7Ci0gICAgdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlRE9NRXhjZXB0
aW9uKCZzdGF0ZSwgSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yLCBtZXNzYWdlKSk7Ci0gICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KLXZvaWQgSlNDU1NQYWludFdvcmtsZXRHbG9iYWxTY29w
ZTo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKLXsK
LSAgICBmb3IgKGF1dG8mIHJlZ2lzdGVyZWQgOiB3cmFwcGVkKCkucGFpbnREZWZpbml0aW9uTWFw
KCkudmFsdWVzKCkpCi0gICAgICAgIHJlZ2lzdGVyZWQtPnBhaW50Q2FsbGJhY2stPnZpc2l0SlNG
dW5jdGlvbih2aXNpdG9yKTsKLX0KLQotLy8gaHR0cHM6Ly9kcmFmdHMuY3NzLWhvdWRpbmkub3Jn
L2Nzcy1wYWludC1hcGkvI3JlZ2lzdGVyaW5nLWN1c3RvbS1wYWludAotSlNWYWx1ZSBKU0NTU1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlOjpyZWdpc3RlclBhaW50KEV4ZWNTdGF0ZSYgc3RhdGUpCi17
Ci0gICAgdXNpbmcgUGFpbnREZWZpbml0aW9uID0gQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6
OlBhaW50RGVmaW5pdGlvbjsKLQotICAgIENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlJiB3b3Jr
bGV0R2xvYmFsU2NvcGUgPSB3cmFwcGVkKCk7Ci0gICAgVk0mIHZtID0gc3RhdGUudm0oKTsKLSAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0KLSAgICBpZiAoVU5MSUtF
TFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMikpCi0gICAgICAgIHJldHVybiB0aHJvd0V4Y2Vw
dGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUp
KTsKLQotICAgIEF0b21pY1N0cmluZyBuYW1lKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRv
U3RyaW5nKCZzdGF0ZSktPnRvQXRvbWljU3RyaW5nKCZzdGF0ZSkpOwotICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7Ci0gICAgSlNWYWx1ZSBjb25zdHJ1Y3RvclZhbHVl
ID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgSlNWYWx1ZSgpKTsKLQotICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsICJUaGUgZmlyc3QgYXJndW1lbnQgbXVz
dCBub3QgYmUgdGhlIGVtcHR5IHN0cmluZyJfcyk7Ci0KLSAgICBhdXRvJiBwYWludERlZmluaXRp
b25NYXAgPSB3b3JrbGV0R2xvYmFsU2NvcGUucGFpbnREZWZpbml0aW9uTWFwKCk7Ci0KLSAgICBp
ZiAocGFpbnREZWZpbml0aW9uTWFwLmNvbnRhaW5zKG5hbWUpKQotICAgICAgICByZXR1cm4gdGhy
b3dJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Ioc3RhdGUsIHNjb3BlLCAiVGhpcyBuYW1lIGhhcyBh
bHJlYWR5IGJlZW4gcmVnaXN0ZXJlZCJfcyk7Ci0KLSAgICBWZWN0b3I8U3RyaW5nPiBpbnB1dFBy
b3BlcnRpZXM7Ci0KLSAgICBKU1ZhbHVlIGlucHV0UHJvcGVydGllc0l0ZXJhYmxlVmFsdWUgPSBj
b25zdHJ1Y3RvclZhbHVlLmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAi
aW5wdXRQcm9wZXJ0aWVzIikpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFs
dWUoKSk7Ci0KLSAgICBpZiAoIWlucHV0UHJvcGVydGllc0l0ZXJhYmxlVmFsdWUuaXNVbmRlZmlu
ZWQoKSkKLSAgICAgICAgaW5wdXRQcm9wZXJ0aWVzID0gY29udmVydDxJRExTZXF1ZW5jZTxJRExE
T01TdHJpbmc+PihzdGF0ZSwgaW5wdXRQcm9wZXJ0aWVzSXRlcmFibGVWYWx1ZSk7Ci0gICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKLQotICAgIC8vIEZJWE1FOiBWYWxp
ZGF0ZSBpbnB1dCBwcm9wZXJ0aWVzIGhlcmUgKHN0ZXAgNykuCi0KLSAgICBWZWN0b3I8U3RyaW5n
PiBpbnB1dEFyZ3VtZW50czsKLQotICAgIEpTVmFsdWUgaW5wdXRBcmd1bWVudHNJdGVyYWJsZVZh
bHVlID0gY29uc3RydWN0b3JWYWx1ZS5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KCZ2bSwgImlucHV0QXJndW1lbnRzIikpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IEpTVmFsdWUoKSk7Ci0KLSAgICBpZiAoIWlucHV0QXJndW1lbnRzSXRlcmFibGVWYWx1ZS5pc1Vu
ZGVmaW5lZCgpKQotICAgICAgICBpbnB1dEFyZ3VtZW50cyA9IGNvbnZlcnQ8SURMU2VxdWVuY2U8
SURMRE9NU3RyaW5nPj4oc3RhdGUsIGlucHV0QXJndW1lbnRzSXRlcmFibGVWYWx1ZSk7Ci0gICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKLQotICAgIC8vIEZJWE1FOiBQ
YXJzZSBzeW50YXggZm9yIGlucHV0QXJndW1lbnRzIGhlcmUgKHN0ZXBzIDExIGFuZCAxMikuCi0K
LSAgICBKU1ZhbHVlIGNvbnRleHRPcHRpb25zVmFsdWUgPSBjb25zdHJ1Y3RvclZhbHVlLmdldCgm
c3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiY29udGV4dE9wdGlvbnMiKSk7Ci0g
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKLSAgICBVTlVTRURfUEFS
QU0oY29udGV4dE9wdGlvbnNWYWx1ZSk7Ci0KLSAgICAvLyBGSVhNRTogQ29udmVydCB0byBQYWlu
dFJlbmRlcmluZ0NvbnRleHQyRFNldHRpbmdzIGhlcmUgKHN0ZXAgMTQpLgotCi0gICAgaWYgKCFj
b25zdHJ1Y3RvclZhbHVlLmlzQ29uc3RydWN0b3Iodm0pKQotICAgICAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgIlRoZSBzZWNvbmQgYXJndW1lbnQgbXVzdCBiZSBhIGNv
bnN0cnVjdG9yIl9zKTsKLQotICAgIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUgPSBjb25zdHJ1Y3Rv
clZhbHVlLmdldCgmc3RhdGUsIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7Ci0gICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKLQotICAgIGlmICghcHJvdG90eXBl
VmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwg
c2NvcGUsICJUaGUgc2Vjb25kIGFyZ3VtZW50IG11c3QgaGF2ZSBhIHByb3RvdHlwZSB0aGF0IGlz
IGFuIG9iamVjdCJfcyk7Ci0KLSAgICBKU1ZhbHVlIHBhaW50VmFsdWUgPSBwcm90b3R5cGVWYWx1
ZS5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInBhaW50IikpOwotICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7Ci0KLSAgICBpZiAocGFpbnRW
YWx1ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRl
LCBzY29wZSwgIlRoZSBjbGFzcyBtdXN0IGhhdmUgYSBwYWludCBtZXRob2QiX3MpOwotCi0gICAg
UmVmUHRyPEpTQ1NTUGFpbnRDYWxsYmFjaz4gcGFpbnQgPSBjb252ZXJ0PElETENhbGxiYWNrRnVu
Y3Rpb248SlNDU1NQYWludENhbGxiYWNrPj4oc3RhdGUsIHBhaW50VmFsdWUsICpnbG9iYWxPYmpl
Y3QoKSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKLQotICAg
IGF1dG8gcGFpbnREZWZpbml0aW9uID0gc3RkOjp1bmlxdWVfcHRyPFBhaW50RGVmaW5pdGlvbj4o
bmV3IFBhaW50RGVmaW5pdGlvbiB7IG5hbWUsIHBhaW50LnJlbGVhc2VOb25OdWxsKCksIGlucHV0
UHJvcGVydGllcywgaW5wdXRBcmd1bWVudHMgfSk7Ci0gICAgcGFpbnREZWZpbml0aW9uTWFwLmFk
ZChuYW1lLCBXVEZNb3ZlKHBhaW50RGVmaW5pdGlvbikpOwotCi0gICAgLy8gRklYTUU6IGNvbnN0
cnVjdCBkb2N1bWVudERlZmluaXRpb24gKHN0ZXAgMjIpLgotCi0gICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7Ci19Ci0KLX0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01HbG9iYWxPYmplY3QuY3BwCmluZGV4IGViYjJmNjFkZGNjMzI1YTAxZGM1MjRiMmI1MmVi
OGIxMTQxNDMwNTguLjdkZGEyNTg2ZWY3YjM1Yzc1NmIxYjAyMzlmMWMxZjc2MTZkZTMxMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAK
QEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJKU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0
cnVjdG9ycy5oIgogI2luY2x1ZGUgIkpTUmVtb3RlRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiSlNX
b3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIkpTV29ya2xldEdsb2JhbFNjb3BlLmgiCiAj
aW5jbHVkZSAiUmVqZWN0ZWRQcm9taXNlVHJhY2tlci5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVkQ2xvbmUuaCIKQEAgLTE5NCw2ICsx
OTUsMTAgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogSlNET01HbG9iYWxPYmplY3Q6OnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBp
ZiAoaW5oZXJpdHM8SlNXb3JrZXJHbG9iYWxTY29wZUJhc2U+KHZtKCkpKQogICAgICAgICByZXR1
cm4ganNDYXN0PGNvbnN0IEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlKj4odGhpcyktPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKyAgICBpZiAo
aW5oZXJpdHM8SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlPih2bSgpKSkKKyAgICAgICAgcmV0dXJu
IGpzQ2FzdDxjb25zdCBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UqPih0aGlzKS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOworI2VuZGlmCiAgICAgZGF0YUxvZygiVW5leHBlY3RlZCBnbG9iYWwg
b2JqZWN0OiAiLCBKU1ZhbHVlKHRoaXMpLCAiXG4iKTsKICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZUN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hOGNlYWU2MGJhNzAyNmViN2ViMmUyY2E5MTBiMjFkZWY1MzU5YWVmCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQYWludFdvcmts
ZXRHbG9iYWxTY29wZUN1c3RvbS5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCisKKyNpZiBFTkFCTEUoQ1NTX1BBSU5U
SU5HX0FQSSkKKworbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNwYWNlIEpTQzsKKwor
dm9pZCBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihK
U0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
d3JhcHBlZCgpLnBhaW50RGVmaW5pdGlvbkxvY2soKSk7CisgICAgZm9yIChhdXRvJiByZWdpc3Rl
cmVkIDogd3JhcHBlZCgpLnBhaW50RGVmaW5pdGlvbk1hcCgpLnZhbHVlcygpKQorICAgICAgICBy
ZWdpc3RlcmVkLT5wYWludENhbGxiYWNrLT52aXNpdEpTRnVuY3Rpb24odmlzaXRvcik7Cit9CisK
K30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3Jr
bGV0R2xvYmFsU2NvcGVCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29y
a2xldEdsb2JhbFNjb3BlQmFzZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmI1YTc1NTY4MmQxNjE0NmE1Yjg5
MmI5Yzc1ZTdhMzU2MTZhN2M2MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5jcHAKQEAgLTAsMCArMSwxNDkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5oIgorCisj
aWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisKKyNpbmNsdWRlICJET01XcmFwcGVyV29ybGQu
aCIKKyNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdFRhc2suaCIKKyNpbmNsdWRlICJKU1dvcmts
ZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtsZXRHbG9iYWxTY29wZS5oIgorI2luY2x1
ZGUgIldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0pTVmFsdWVJbmxpbmVz
Lmg+CisjaW5jbHVkZSA8d3RmL0xhbmd1YWdlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
dXNpbmcgbmFtZXNwYWNlIEpTQzsKKworY29uc3QgQ2xhc3NJbmZvIEpTV29ya2xldEdsb2JhbFNj
b3BlQmFzZTo6c19pbmZvID0geyAiV29ya2xldEdsb2JhbFNjb3BlIiwgJkpTRE9NR2xvYmFsT2Jq
ZWN0OjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNXb3Jr
bGV0R2xvYmFsU2NvcGVCYXNlKSB9OworCitjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBK
U1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7Cisg
ICAgJnN1cHBvcnRzUmljaFNvdXJjZUluZm8sCisgICAgJnNob3VsZEludGVycnVwdFNjcmlwdCwK
KyAgICAmamF2YVNjcmlwdFJ1bnRpbWVGbGFncywKKyAgICBudWxscHRyLCAvLyBxdWV1ZVRhc2tU
b0V2ZW50TG9vcAorICAgICZzaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0LAorICAg
IG51bGxwdHIsIC8vIG1vZHVsZUxvYWRlckltcG9ydE1vZHVsZQorICAgIG51bGxwdHIsIC8vIG1v
ZHVsZUxvYWRlclJlc29sdmUKKyAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJGZXRjaAorICAg
IG51bGxwdHIsIC8vIG1vZHVsZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVzCisgICAg
bnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVyRXZhbHVhdGUKKyAgICAmcHJvbWlzZVJlamVjdGlvblRy
YWNrZXIsCisgICAgJmRlZmF1bHRMYW5ndWFnZSwKKyAgICBudWxscHRyLCAvLyBjb21waWxlU3Ry
ZWFtaW5nCisgICAgbnVsbHB0ciwgLy8gaW5zdGFudGlhdGVTdHJlYW1pbmcKK307CisKK0pTV29y
a2xldEdsb2JhbFNjb3BlQmFzZTo6SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlKEpTQzo6Vk0mIHZt
LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8V29ya2xldEdsb2JhbFNjb3BlPiYm
IGltcGwpCisgICAgOiBKU0RPTUdsb2JhbE9iamVjdCh2bSwgc3RydWN0dXJlLCBub3JtYWxXb3Js
ZCh2bSksICZzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlKQorICAgICwgbV93cmFwcGVkKFdURk1v
dmUoaW1wbCkpCit7Cit9CisKK3ZvaWQgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIEpTUHJveHkqIHByb3h5KQoreworICAgIG1fcHJveHkuc2V0KHZtLCB0
aGlzLCBwcm94eSk7CisKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgbV9wcm94eS5nZXQo
KSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKK30KKwordm9pZCBKU1dvcmts
ZXRHbG9iYWxTY29wZUJhc2U6OmNsZWFyRE9NR3VhcmRlZE9iamVjdHMoKQoreworICAgIGF1dG8g
Z3VhcmRlZE9iamVjdHMgPSBtX2d1YXJkZWRPYmplY3RzOworICAgIGZvciAoYXV0byYgZ3VhcmRl
ZCA6IGd1YXJkZWRPYmplY3RzKQorICAgICAgICBndWFyZGVkLT5jbGVhcigpOworfQorCit2b2lk
IEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNX
b3JrbGV0R2xvYmFsU2NvcGVCYXNlKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09i
amVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9wcm94eSk7
Cit9CisKK3ZvaWQgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpkZXN0cm95KEpTQ2VsbCogY2Vs
bCkKK3sKKyAgICBzdGF0aWNfY2FzdDxKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UqPihjZWxsKS0+
SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjp+SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlKCk7Cit9
CisKK1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd3JhcHBlZC5nZXQo
KTsKK30KKworYm9vbCBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnN1cHBvcnRzUmljaFNvdXJj
ZUluZm8oY29uc3QgSlNHbG9iYWxPYmplY3QqIG9iamVjdCkKK3sKKyAgICByZXR1cm4gSlNHbG9i
YWxPYmplY3Q6OnN1cHBvcnRzUmljaFNvdXJjZUluZm8ob2JqZWN0KTsKK30KKworYm9vbCBKU1dv
cmtsZXRHbG9iYWxTY29wZUJhc2U6OnNob3VsZEludGVycnVwdFNjcmlwdChjb25zdCBKU0dsb2Jh
bE9iamVjdCogb2JqZWN0KQoreworICAgIHJldHVybiBKU0dsb2JhbE9iamVjdDo6c2hvdWxkSW50
ZXJydXB0U2NyaXB0KG9iamVjdCk7Cit9CisKK2Jvb2wgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNl
OjpzaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0KGNvbnN0IEpTR2xvYmFsT2JqZWN0
KiBvYmplY3QpCit7CisgICAgcmV0dXJuIEpTR2xvYmFsT2JqZWN0OjpzaG91bGRJbnRlcnJ1cHRT
Y3JpcHRCZWZvcmVUaW1lb3V0KG9iamVjdCk7Cit9CisKK1J1bnRpbWVGbGFncyBKU1dvcmtsZXRH
bG9iYWxTY29wZUJhc2U6OmphdmFTY3JpcHRSdW50aW1lRmxhZ3MoY29uc3QgSlNHbG9iYWxPYmpl
Y3QqIG9iamVjdCkKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PGNvbnN0IEpTV29y
a2xldEdsb2JhbFNjb3BlQmFzZSo+KG9iamVjdCk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1f
d3JhcHBlZC0+anNSdW50aW1lRmxhZ3MoKTsKK30KKworSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSog
ZXhlYywgSlNET01HbG9iYWxPYmplY3QqLCBXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtsZXRHbG9i
YWxTY29wZSkKK3sKKyAgICByZXR1cm4gdG9KUyhleGVjLCB3b3JrbGV0R2xvYmFsU2NvcGUpOwor
fQorCitKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiwgV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrbGV0
R2xvYmFsU2NvcGUpCit7CisgICAgYXV0byogY29udGV4dFdyYXBwZXIgPSB3b3JrbGV0R2xvYmFs
U2NvcGUuc2NyaXB0KCkud29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcigpOworICAgIEFTU0VSVChj
b250ZXh0V3JhcHBlcik7CisgICAgcmV0dXJuIGNvbnRleHRXcmFwcGVyLT5wcm94eSgpOworfQor
CitKU1dvcmtsZXRHbG9iYWxTY29wZSogdG9KU1dvcmtsZXRHbG9iYWxTY29wZShWTSYgdm0sIEpT
VmFsdWUgdmFsdWUpCit7CisgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICBhdXRvKiBjbGFzc0luZm8gPSBhc09iamVjdCh2YWx1ZSktPmNsYXNz
SW5mbyh2bSk7CisKKyAgICBpZiAoY2xhc3NJbmZvID09IEpTUHJveHk6OmluZm8oKSkKKyAgICAg
ICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNXb3JrbGV0R2xvYmFsU2NvcGUqPih2bSwganNDYXN0
PEpTUHJveHkqPihhc09iamVjdCh2YWx1ZSkpLT50YXJnZXQoKSk7CisKKyAgICByZXR1cm4gbnVs
bHB0cjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmFjY2U0YWRmMGFkY2Y5ODJkMjhiN2E2Zjg3YjdhNmEzZWJhMjYzNGQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29w
ZUJhc2UuaApAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKENTU19QQUlOVElO
R19BUEkpCisKKyNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTRE9N
V3JhcHBlci5oIgorI2luY2x1ZGUgIkpTRXZlbnRUYXJnZXQuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBKU1dvcmtsZXRHbG9iYWxTY29wZTsKK2NsYXNzIFdvcmtsZXRHbG9iYWxT
Y29wZTsKKworY2xhc3MgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlIDogcHVibGljIEpTRE9NR2xv
YmFsT2JqZWN0IHsKKyAgICB1c2luZyBCYXNlID0gSlNET01HbG9iYWxPYmplY3Q7CitwdWJsaWM6
CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOworCisgICAgREVDTEFSRV9J
TkZPOworCisgICAgV29ya2xldEdsb2JhbFNjb3BlJiB3cmFwcGVkKCkgY29uc3QgeyByZXR1cm4g
Km1fd3JhcHBlZDsgfQorICAgIEpTQzo6SlNQcm94eSogcHJveHkoKSBjb25zdCB7IEFTU0VSVCht
X3Byb3h5KTsgcmV0dXJuIG1fcHJveHkuZ2V0KCk7IH0KKyAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CisKKyAgICBzdGF0aWMgSlNDOjpT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBKU0M6OlR5cGVJbmZvKEpTQzo6R2xvYmFsT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCkpOworICAgIH0KKworICAgIHN0YXRpYyBjb25zdCBKU0M6Okdsb2JhbE9iamVjdE1ldGhv
ZFRhYmxlIHNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGU7CisKKyAgICBzdGF0aWMgYm9vbCBzdXBw
b3J0c1JpY2hTb3VyY2VJbmZvKGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0
aWMgYm9vbCBzaG91bGRJbnRlcnJ1cHRTY3JpcHQoY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCop
OworICAgIHN0YXRpYyBib29sIHNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQoY29u
c3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHN0YXRpYyBKU0M6OlJ1bnRpbWVGbGFncyBq
YXZhU2NyaXB0UnVudGltZUZsYWdzKGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBz
dGF0aWMgdm9pZCBxdWV1ZVRhc2tUb0V2ZW50TG9vcChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgUmVm
PEpTQzo6TWljcm90YXNrPiYmKTsKKworICAgIHZvaWQgY2xlYXJET01HdWFyZGVkT2JqZWN0cygp
OworCitwcm90ZWN0ZWQ6CisgICAgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlKEpTQzo6Vk0mLCBK
U0M6OlN0cnVjdHVyZSosIFJlZlB0cjxXb3JrbGV0R2xvYmFsU2NvcGU+JiYpOworICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYsIEpTQzo6SlNQcm94eSopOworCisgICAgc3RhdGljIHZv
aWQgdmlzaXRDaGlsZHJlbihKU0M6OkpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKTsKKworcHJp
dmF0ZToKKyAgICBSZWZQdHI8V29ya2xldEdsb2JhbFNjb3BlPiBtX3dyYXBwZWQ7CisgICAgSlND
OjpXcml0ZUJhcnJpZXI8SlNDOjpKU1Byb3h5PiBtX3Byb3h5OworfTsKKworLy8gUmV0dXJucyBh
IEpTV29ya2xldEdsb2JhbFNjb3BlIG9yIGpzTnVsbCgpCisvLyBBbHdheXMgaWdub3JlcyB0aGUg
ZXhlY1N0YXRlIGFuZCBwYXNzZWQgZ2xvYmFsT2JqZWN0LCBXb3JrbGV0R2xvYmFsU2NvcGUgaXMg
aXRzZWxmIGEgZ2xvYmFsT2JqZWN0IGFuZCB3aWxsIGFsd2F5cyB1c2UgaXRzIG93biBwcm90b3R5
cGUgY2hhaW4uCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFs
T2JqZWN0KiwgV29ya2xldEdsb2JhbFNjb3BlJik7CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMo
SlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFdv
cmtsZXRHbG9iYWxTY29wZSogc2NvcGUpIHsgcmV0dXJuIHNjb3BlID8gdG9KUyhleGVjLCBnbG9i
YWxPYmplY3QsICpzY29wZSkgOiBKU0M6OmpzTnVsbCgpOyB9CitKU0M6OkpTVmFsdWUgdG9KUyhK
U0M6OkV4ZWNTdGF0ZSosIFdvcmtsZXRHbG9iYWxTY29wZSYpOworaW5saW5lIEpTQzo6SlNWYWx1
ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBXb3JrbGV0R2xvYmFsU2NvcGUqIHNjb3BlKSB7
IHJldHVybiBzY29wZSA/IHRvSlMoZXhlYywgKnNjb3BlKSA6IEpTQzo6anNOdWxsKCk7IH0KKwor
SlNXb3JrbGV0R2xvYmFsU2NvcGUqIHRvSlNXb3JrbGV0R2xvYmFsU2NvcGUoSlNDOjpWTSYsIEpT
Qzo6SlNWYWx1ZSk7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShDU1NfUEFJTlRJTkdfQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0U3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3Rh
dGUuY3BwCmluZGV4IGVlZTgzOWNjNDI2NGZiZTRhMjlkZmI5OTFiNWZkZTUwZDYwYmFiMWMuLjM3
YjBjZGVjYTY1MzU5OWU5OWJiNmE5MDI2M2U4MmMxNTQ5MWQxNWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKQEAgLTM1LDExICszNSwxNCBAQAogI2luY2x1
ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3dCYXNlLmgiCiAjaW5jbHVkZSAiSlNX
b3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIkpTV29ya2xldEdsb2JhbFNjb3BlLmgiCiAj
aW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTY3JpcHRDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3Jr
ZXJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiV29ya2xldEdsb2JhbFNjb3BlLmgiCisj
aW5jbHVkZSAiV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9DYWxsRnJhbWUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0dsb2JhbE9iamVj
dC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KQEAgLTk1LDkg
Kzk4LDE2IEBAIEpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tUGFnZShET01XcmFwcGVyV29y
bGQmIHdvcmxkLCBQYWdlKiBwYWdlKQogICAgIHJldHVybiBwYWdlID8gcGFnZS0+bWFpbkZyYW1l
KCkuc2NyaXB0KCkuZ2xvYmFsT2JqZWN0KHdvcmxkKS0+Z2xvYmFsRXhlYygpIDogbnVsbHB0cjsK
IH0KIAotSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZShXb3Jr
ZXJHbG9iYWxTY29wZSogd29ya2VyR2xvYmFsU2NvcGUpCitKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0
YXRlRnJvbVdvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxT
Y29wZSkKIHsKLSAgICByZXR1cm4gd29ya2VyR2xvYmFsU2NvcGUtPnNjcmlwdCgpLT53b3JrZXJH
bG9iYWxTY29wZVdyYXBwZXIoKS0+Z2xvYmFsRXhlYygpOworICAgIHJldHVybiB3b3JrZXJHbG9i
YWxTY29wZS5zY3JpcHQoKS0+d29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKCktPmdsb2JhbEV4ZWMo
KTsKIH0KIAorI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorSlNDOjpFeGVjU3RhdGUqIGV4
ZWNTdGF0ZUZyb21Xb3JrbGV0R2xvYmFsU2NvcGUoV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrbGV0
R2xvYmFsU2NvcGUpCit7CisgICAgcmV0dXJuIHdvcmtsZXRHbG9iYWxTY29wZS5zY3JpcHQoKS53
b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKCktPmdsb2JhbEV4ZWMoKTsKK30KKyNlbmRpZgorCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaAppbmRleCA3NDQyMWZkOTVi
YTE3NzU2ZWI4OWMwMDQyNmMzM2ZiNTQ1NDk4MzkwLi4xNTM4NGE3MTFmMzU2Y2VlNDc4Y2E5OWUy
NTU1YjFlZWEyNDgyYWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRl
LmgKQEAgLTQ0LDYgKzQ0LDkgQEAgY2xhc3MgTm9kZTsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CisjaWYgRU5BQkxF
KENTU19QQUlOVElOR19BUEkpCitjbGFzcyBXb3JrbGV0R2xvYmFsU2NvcGU7CisjZW5kaWYKIAog
RE9NV2luZG93KiBkb21XaW5kb3dGcm9tRXhlY1N0YXRlKEpTQzo6RXhlY1N0YXRlKik7CiBGcmFt
ZSogZnJhbWVGcm9tRXhlY1N0YXRlKEpTQzo6RXhlY1N0YXRlKik7CkBAIC01Myw2ICs1Niw5IEBA
IEpTQzo6RXhlY1N0YXRlKiBtYWluV29ybGRFeGVjU3RhdGUoRnJhbWUqKTsKIAogSlNDOjpFeGVj
U3RhdGUqIGV4ZWNTdGF0ZUZyb21Ob2RlKERPTVdyYXBwZXJXb3JsZCYsIE5vZGUqKTsKIFdFQkNP
UkVfRVhQT1JUIEpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tUGFnZShET01XcmFwcGVyV29y
bGQmLCBQYWdlKik7Ci1KU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNj
b3BlKFdvcmtlckdsb2JhbFNjb3BlKik7CitKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbVdv
cmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlJik7CisjaWYgRU5BQkxFKENTU19QQUlO
VElOR19BUEkpCitKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbVdvcmtsZXRHbG9iYWxTY29w
ZShXb3JrbGV0R2xvYmFsU2NvcGUmKTsKKyNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5h
bWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgK
aW5kZXggMjhiMGU4NTBkMDE0MTZlMTA4YTE5YTE3MjA4MGIzZDI5ODUyMmVmZC4uZDI5ZGJiZDU3
YzQ4MmRmYWEwMjMzODYwMWIxMGYwODZjNGE0NjM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaApAQCAtNTEsNyArNTEsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oQ3JlZGVudGlhbCkgXAogICAgIG1hY3JvKENyZWRl
bnRpYWxzQ29udGFpbmVyKSBcCiAgICAgbWFjcm8oQ1NTQW5pbWF0aW9uKSBcCi0gICAgbWFjcm8o
Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUpIFwKICAgICBtYWNybyhDU1NUcmFuc2l0aW9uKSBc
CiAgICAgbWFjcm8oQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5KSBcCiAgICAgbWFjcm8oRGF0YWJhc2Up
IFwKQEAgLTEyMyw2ICsxMjIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oU1FM
UmVzdWx0U2V0KSBcCiAgICAgbWFjcm8oU1FMUmVzdWx0U2V0Um93TGlzdCkgXAogICAgIG1hY3Jv
KFNRTFRyYW5zYWN0aW9uKSBcCisgICAgbWFjcm8oUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUpIFwK
ICAgICBtYWNybyhQZXJmb3JtYW5jZUVudHJ5KSBcCiAgICAgbWFjcm8oUGVyZm9ybWFuY2VFbnRy
eUxpc3QpIFwKICAgICBtYWNybyhQZXJmb3JtYW5jZU1hcmspIFwKQEAgLTIwOSw2ICsyMDksOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oV2ViS2l0TWVkaWFLZXlzKSBcCiAgICAg
bWFjcm8oV2ViU29ja2V0KSBcCiAgICAgbWFjcm8oV2luZG93Q2xpZW50KSBcCisgICAgbWFjcm8o
V29ya2xldCkgXAorICAgIG1hY3JvKFdvcmtsZXRHbG9iYWxTY29wZSkgXAogICAgIG1hY3JvKFdy
aXRhYmxlU3RyZWFtKSBcCiAgICAgbWFjcm8oWE1MSHR0cFJlcXVlc3QpIFwKICAgICBtYWNybyhh
cHBlbmRGcm9tSlMpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KaW5kZXggNWM1NmM1MWFlNmUwZDU4YmU4N2UxNjRhMjg5NTEwZTEw
ZTgyMTVhNS4uM2Y2YzAzOTE0NWMxZGU0MDE3YTkyNjE0MGUwMTFmMWYxOWYwYmJmNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
QEAgLTQ5Nyw3ICs0OTcsNyBAQCBzdWIgR2V0Q3VzdG9tSXNSZWFjaGFibGUKIHN1YiBJc0RPTUds
b2JhbE9iamVjdAogewogICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKLSAgICByZXR1cm4gJGlu
dGVyZmFjZS0+dHlwZS0+bmFtZSBlcSAiRE9NV2luZG93IiB8fCAkaW50ZXJmYWNlLT50eXBlLT5u
YW1lIGVxICJSZW1vdGVET01XaW5kb3ciIHx8ICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVy
ZmFjZSgkaW50ZXJmYWNlLCAiV29ya2VyR2xvYmFsU2NvcGUiKSB8fCAkaW50ZXJmYWNlLT50eXBl
LT5uYW1lIGVxICJUZXN0R2xvYmFsT2JqZWN0IjsKKyAgICByZXR1cm4gJGludGVyZmFjZS0+dHlw
ZS0+bmFtZSBlcSAiRE9NV2luZG93IiB8fCAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIGVxICJSZW1v
dGVET01XaW5kb3ciIHx8ICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJm
YWNlLCAiV29ya2VyR2xvYmFsU2NvcGUiKSB8fCAkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRl
cmZhY2UoJGludGVyZmFjZSwgIldvcmtsZXRHbG9iYWxTY29wZSIpIHx8ICRpbnRlcmZhY2UtPnR5
cGUtPm5hbWUgZXEgIlRlc3RHbG9iYWxPYmplY3QiOwogfQogCiBzdWIgU2hvdWxkVXNlR2xvYmFs
T2JqZWN0UHJvdG90eXBlCkBAIC01MDYsNiArNTA2LDggQEAgc3ViIFNob3VsZFVzZUdsb2JhbE9i
amVjdFByb3RvdHlwZQogCiAgICAgIyBGb3Igd29ya2VycywgdGhlIGdsb2JhbCBvYmplY3QgaXMg
YSBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS4KICAgICByZXR1cm4gMCBpZiAkaW50ZXJmYWNl
LT50eXBlLT5uYW1lIGVxICJXb3JrZXJHbG9iYWxTY29wZSI7CisgICAgIyBGb3Igd29ya2xldHMs
IHRoZSBnbG9iYWwgb2JqZWN0IGlzIGEgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuCisgICAgcmV0
dXJuIDAgaWYgJGludGVyZmFjZS0+dHlwZS0+bmFtZSBlcSAiV29ya2xldEdsb2JhbFNjb3BlIjsK
IAogICAgIHJldHVybiBJc0RPTUdsb2JhbE9iamVjdCgkaW50ZXJmYWNlKTsKIH0KQEAgLTI1Mzcs
NyArMjUzOSw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtLCBwcm94eSk7XG4iKTsKICAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHB0cjtcbiIpOwogICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIH1cblxuIik7Ci0gICAgfSBlbHNpZiAoJGNvZGVH
ZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrZXJHbG9iYWxTY29w
ZSIpKSB7CisgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRp
bnRlcmZhY2UsICJXb3JrZXJHbG9iYWxTY29wZSIpIHx8ICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0
c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiV29ya2xldEdsb2JhbFNjb3BlIikpIHsKICAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgJGNsYXNzTmFtZSogY3JlYXRlKEpTQzo6
Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWY8JGltcGxUeXBlPiYmIGltcGws
IEpTQzo6SlNQcm94eSogcHJveHkpXG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IiAgICB7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgJGNsYXNz
TmFtZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDwkY2xhc3NOYW1lPih2
bS5oZWFwKSkgJHtjbGFzc05hbWV9KHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUoaW1wbCkpO1xuIik7
CkBAIC0yODQ1LDcgKzI4NDcsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAjIENvbnN0cnVj
dG9yCiAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciIHx8ICRpbnRlcmZhY2VO
YW1lIGVxICJSZW1vdGVET01XaW5kb3ciKSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICIgICAgJGNsYXNzTmFtZShKU0M6OlZNJiwgSlNDOjpTdHJ1Y3R1cmUqLCBSZWY8JGltcGxUeXBl
PiYmLCBKU1dpbmRvd1Byb3h5Kik7XG4iKTsKLSAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+
SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldvcmtlckdsb2JhbFNjb3BlIikpIHsKKyAg
ICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwg
Ildvcmtlckdsb2JhbFNjb3BlIikgfHwgJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNl
KCRpbnRlcmZhY2UsICJXb3JrbGV0R2xvYmFsU2NvcGUiKSkgewogICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiICAgICRjbGFzc05hbWUoSlNDOjpWTSYsIEpTQzo6U3RydWN0dXJlKiwgUmVm
PCRpbXBsVHlwZT4mJik7XG4iKTsKICAgICB9IGVsc2lmICghTmVlZHNJbXBsZW1lbnRhdGlvbkNs
YXNzKCRpbnRlcmZhY2UpKSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgJGNs
YXNzTmFtZShKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Jik7XG5cbiIpOwpAQCAt
Mjg1NSw3ICsyODU3LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAKICAgICBpZiAoJGludGVyZmFj
ZU5hbWUgZXEgIkRPTVdpbmRvdyIgfHwgJGludGVyZmFjZU5hbWUgZXEgIlJlbW90ZURPTVdpbmRv
dyIpIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKEpTQzo6Vk0mLCBKU1dpbmRvd1Byb3h5Kik7XG4iKTsKLSAgICB9IGVsc2lmICgkY29kZUdl
bmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIldvcmtlckdsb2JhbFNjb3Bl
IikpIHsKKyAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGlu
dGVyZmFjZSwgIldvcmtlckdsb2JhbFNjb3BlIikgfHwgJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRz
SW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrbGV0R2xvYmFsU2NvcGUiKSkgewogICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYsIEpT
Qzo6SlNQcm94eSopO1xuIik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTtcbiIpOwpAQCAtMzY2Miw2
ICszNjY0LDggQEAgc3ViIEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nRm9y
RXhwb3NlZAogICAgICAgICBwdXNoKEAkY29uanVuY3RzLCAianNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oIiAuICRnbG9iYWxPYmplY3RQdHIgLiAiKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT5pc0RvY3VtZW50KCkiKTsKICAgICB9IGVsc2lmICgkZXhwb3NlZCBlcSAiV29ya2VyIikgewog
ICAgICAgICBwdXNoKEAkY29uanVuY3RzLCAianNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oIiAu
ICRnbG9iYWxPYmplY3RQdHIgLiAiKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1dvcmtl
ckdsb2JhbFNjb3BlKCkiKTsKKyAgICB9IGVsc2lmICgkZXhwb3NlZCBlcSAiV29ya2xldCIpIHsK
KyAgICAgICAgcHVzaChAJGNvbmp1bmN0cywgImpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCIg
LiAkZ2xvYmFsT2JqZWN0UHRyIC4gIiktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNXb3Jr
bGV0R2xvYmFsU2NvcGUoKSIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGFzc2VydCgiVW5yZWNv
Z25pemVkIHZhbHVlICciIC4gRHVtcGVyKCRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntF
eHBvc2VkfSkgLiAiJyBmb3IgdGhlIEV4cG9zZWQgZXh0ZW5kZWQgYXR0cmlidXRlIG9uICciIC4g
cmVmKCRjb250ZXh0KSAuICInLiIpOwogICAgIH0KQEAgLTQyNTIsNyArNDI1Niw3IEBAIHN1YiBH
ZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIDog
JHBhcmVudENsYXNzTmFtZSh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKGltcGwpLCBwcm94eSlcbiIp
OwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIn1cblxuIik7Ci0gICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRz
SW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrZXJHbG9iYWxTY29wZSIpKSB7CisgICAgfSBlbHNp
ZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrZXJH
bG9iYWxTY29wZSIpIHx8ICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJm
YWNlLCAiV29ya2xldEdsb2JhbFNjb3BlIikpIHsKICAgICAgICAgQWRkSW5jbHVkZXNGb3JJbXBs
ZW1lbnRhdGlvblR5cGVJbkltcGwoJGludGVyZmFjZU5hbWUpOwogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiR7Y2xhc3NOYW1lfTo6JGNsYXNzTmFtZShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBSZWY8JGltcGxUeXBlPiYmIGltcGwpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgOiAkcGFyZW50Q2xhc3NOYW1lKHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUoaW1w
bCkpXG4iKTsKQEAgLTQyNzMsNyArNDI3Nyw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9u
CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFtZX06OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgSlNXaW5kb3dQcm94eSogcHJveHkpXG4iKTsKICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQmFz
ZTo6ZmluaXNoQ3JlYXRpb24odm0sIHByb3h5KTtcblxuIik7Ci0gICAgfSBlbHNpZiAoJGNvZGVH
ZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJXb3JrZXJHbG9iYWxTY29w
ZSIpKSB7CisgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRp
bnRlcmZhY2UsICJXb3JrZXJHbG9iYWxTY29wZSIpIHx8ICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0
c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiV29ya2xldEdsb2JhbFNjb3BlIikpIHsKICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7Y2xhc3NOYW1lfTo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBKU1Byb3h5KiBwcm94eSlcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntc
biIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bih2bSwgcHJveHkpO1xuXG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9wcmVwcm9jZXNzLWlkbHMucGwKaW5kZXggM2UwNWM3YjQ5NjgyYmVlNjRmNjg5OGI0ZGY0
NDg0MjUxMzQzOGI1MS4uNDZjZDNiOGY5Y2E5YzExYWE1MWZiZDlmYTg3NjBmYTdiMGZkOTMzNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlk
bHMucGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlk
bHMucGwKQEAgLTM2LDYgKzM2LDggQEAgbXkgJHdpbmRvd0NvbnN0cnVjdG9yc0ZpbGU7CiBteSAk
d29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlOwogbXkgJGRlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZTsKIG15ICRzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVD
b25zdHJ1Y3RvcnNGaWxlOworbXkgJHdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGU7
CitteSAkcGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlOwogbXkgJHN1cHBs
ZW1lbnRhbE1ha2VmaWxlRGVwczsKIAogR2V0T3B0aW9ucygnZGVmaW5lcz1zJyA9PiBcJGRlZmlu
ZXMsCkBAIC00Niw2ICs0OCw4IEBAIEdldE9wdGlvbnMoJ2RlZmluZXM9cycgPT4gXCRkZWZpbmVz
LAogICAgICAgICAgICAnd29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlPXMnID0+IFwk
d29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlLAogICAgICAgICAgICAnZGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlPXMnID0+IFwkZGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlLAogICAgICAgICAgICAnc2VydmljZVdvcmtlckds
b2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZT1zJyA9PiBcJHNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZUNvbnN0cnVjdG9yc0ZpbGUsCisgICAgICAgICAgICd3b3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1
Y3RvcnNGaWxlPXMnID0+IFwkd29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSwKKyAg
ICAgICAgICAgJ3BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZT1zJyA9PiBc
JHBhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSwKICAgICAgICAgICAgJ3N1
cHBsZW1lbnRhbE1ha2VmaWxlRGVwcz1zJyA9PiBcJHN1cHBsZW1lbnRhbE1ha2VmaWxlRGVwcyk7
CiAKIGRpZSgnTXVzdCBzcGVjaWZ5ICNkZWZpbmUgbWFjcm9zIHVzaW5nIC0tZGVmaW5lcy4nKSB1
bmxlc3MgZGVmaW5lZCgkZGVmaW5lcyk7CkBAIC01NCw2ICs1OCw4IEBAIGRpZSgnTXVzdCBzcGVj
aWZ5IGFuIG91dHB1dCBmaWxlIHVzaW5nIC0td2luZG93Q29uc3RydWN0b3JzRmlsZS4nKSB1bmxl
c3MgZGVmaW5lCiBkaWUoJ011c3Qgc3BlY2lmeSBhbiBvdXRwdXQgZmlsZSB1c2luZyAtLXdvcmtl
ckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZS4nKSB1bmxlc3MgZGVmaW5lZCgkd29ya2VyR2xv
YmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlKTsKIGRpZSgnTXVzdCBzcGVjaWZ5IGFuIG91dHB1dCBm
aWxlIHVzaW5nIC0tZGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlLicp
IHVubGVzcyBkZWZpbmVkKCRkZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0Zp
bGUpOwogZGllKCdNdXN0IHNwZWNpZnkgYW4gb3V0cHV0IGZpbGUgdXNpbmcgLS1zZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlLicpIHVubGVzcyBkZWZpbmVkKCRzZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlKTsKK2RpZSgnTXVzdCBzcGVjaWZ5IGFu
IG91dHB1dCBmaWxlIHVzaW5nIC0td29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZS4n
KSB1bmxlc3MgZGVmaW5lZCgkd29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSk7Citk
aWUoJ011c3Qgc3BlY2lmeSBhbiBvdXRwdXQgZmlsZSB1c2luZyAtLXBhaW50V29ya2xldEdsb2Jh
bFNjb3BlQ29uc3RydWN0b3JzRmlsZS4nKSB1bmxlc3MgZGVmaW5lZCgkcGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlKTsKIGRpZSgnTXVzdCBzcGVjaWZ5IHRoZSBmaWxlIGxp
c3RpbmcgYWxsIElETHMgdXNpbmcgLS1pZGxGaWxlc0xpc3QuJykgdW5sZXNzIGRlZmluZWQoJGlk
bEZpbGVzTGlzdCk7CiAKICRzdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZSA9IEN5Z3dpblBhdGhJ
Zk5lZWRlZCgkc3VwcGxlbWVudGFsRGVwZW5kZW5jeUZpbGUpOwpAQCAtNjEsNiArNjcsOCBAQCAk
d2luZG93Q29uc3RydWN0b3JzRmlsZSA9IEN5Z3dpblBhdGhJZk5lZWRlZCgkd2luZG93Q29uc3Ry
dWN0b3JzRmlsZSk7CiAkd29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlID0gQ3lnd2lu
UGF0aElmTmVlZGVkKCR3b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOwogJGRlZGlj
YXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSA9IEN5Z3dpblBhdGhJZk5lZWRl
ZCgkZGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlKTsKICRzZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlID0gQ3lnd2luUGF0aElmTmVlZGVkKCRz
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlKTsKKyR3b3JrbGV0R2xvYmFs
U2NvcGVDb25zdHJ1Y3RvcnNGaWxlID0gQ3lnd2luUGF0aElmTmVlZGVkKCR3b3JrbGV0R2xvYmFs
U2NvcGVDb25zdHJ1Y3RvcnNGaWxlKTsKKyRwYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVj
dG9yc0ZpbGUgPSBDeWd3aW5QYXRoSWZOZWVkZWQoJHBhaW50V29ya2xldEdsb2JhbFNjb3BlQ29u
c3RydWN0b3JzRmlsZSk7CiAkc3VwcGxlbWVudGFsTWFrZWZpbGVEZXBzID0gQ3lnd2luUGF0aElm
TmVlZGVkKCRzdXBwbGVtZW50YWxNYWtlZmlsZURlcHMpOwogCiBvcGVuIEZILCAiPCAkaWRsRmls
ZXNMaXN0IiBvciBkaWUgIkNhbm5vdCBvcGVuICRpZGxGaWxlc0xpc3RcbiI7CkBAIC04MCw2ICs4
OCw4IEBAIG15ICR3aW5kb3dDb25zdHJ1Y3RvcnNDb2RlID0gIiI7CiBteSAkd29ya2VyR2xvYmFs
U2NvcGVDb25zdHJ1Y3RvcnNDb2RlID0gIiI7CiBteSAkZGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGVDb25zdHJ1Y3RvcnNDb2RlID0gIiI7CiBteSAkc2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29u
c3RydWN0b3JzQ29kZSA9ICIiOworbXkgJHdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0Nv
ZGUgPSAiIjsKK215ICRwYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0NvZGUgPSAi
IjsKIAogIyBHZXQgcmlkIG9mIGR1cGxpY2F0ZXMgaW4gaWRsRmlsZXMgYXJyYXkuCiBteSAlaWRs
RmlsZUhhc2ggPSBtYXAgeyAkXywgMSB9IEBpZGxGaWxlczsKQEAgLTE0Myw2ICsxNTMsMTAgQEAg
Zm9yZWFjaCBteSAkaWRsRmlsZSAoc29ydCBrZXlzICVpZGxGaWxlSGFzaCkgewogICAgICAgICAg
ICAgICAgICAgICAkZGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNDb2RlIC49
ICRhdHRyaWJ1dGVDb2RlOwogICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRnbG9iYWxDb250ZXh0
IGVxICJTZXJ2aWNlV29ya2VyIikgewogICAgICAgICAgICAgICAgICAgICAkc2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzQ29kZSAuPSAkYXR0cmlidXRlQ29kZTsKKyAgICAgICAg
ICAgICAgICB9IGVsc2lmICgkZ2xvYmFsQ29udGV4dCBlcSAiV29ya2xldCIpIHsKKyAgICAgICAg
ICAgICAgICAgICAgJHdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0NvZGUgLj0gJGF0dHJp
YnV0ZUNvZGU7CisgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGdsb2JhbENvbnRleHQgZXEgIlBh
aW50V29ya2xldCIpIHsKKyAgICAgICAgICAgICAgICAgICAgJHBhaW50V29ya2xldEdsb2JhbFNj
b3BlQ29uc3RydWN0b3JzQ29kZSAuPSAkYXR0cmlidXRlQ29kZTsKICAgICAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBkaWUgIlVuc3VwcG9ydGVkIGdsb2JhbCBjb250
ZXh0ICckZ2xvYmFsQ29udGV4dCcgdXNlZCBpbiBbRXhwb3NlZF0gYXQgJGlkbEZpbGUiOwogICAg
ICAgICAgICAgICAgIH0KQEAgLTE1Nyw2ICsxNzEsOCBAQCBHZW5lcmF0ZVBhcnRpYWxJbnRlcmZh
Y2UoIkRPTVdpbmRvdyIsICR3aW5kb3dDb25zdHJ1Y3RvcnNDb2RlLCAkd2luZG93Q29uc3RydWN0
bwogR2VuZXJhdGVQYXJ0aWFsSW50ZXJmYWNlKCJXb3JrZXJHbG9iYWxTY29wZSIsICR3b3JrZXJH
bG9iYWxTY29wZUNvbnN0cnVjdG9yc0NvZGUsICR3b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9y
c0ZpbGUpOwogR2VuZXJhdGVQYXJ0aWFsSW50ZXJmYWNlKCJEZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZSIsICRkZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0NvZGUsICRkZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOwogR2VuZXJhdGVQYXJ0aWFs
SW50ZXJmYWNlKCJTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUiLCAkc2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlQ29uc3RydWN0b3JzQ29kZSwgJHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVj
dG9yc0ZpbGUpOworR2VuZXJhdGVQYXJ0aWFsSW50ZXJmYWNlKCJXb3JrbGV0R2xvYmFsU2NvcGUi
LCAkd29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzQ29kZSwgJHdvcmtsZXRHbG9iYWxTY29w
ZUNvbnN0cnVjdG9yc0ZpbGUpOworR2VuZXJhdGVQYXJ0aWFsSW50ZXJmYWNlKCJQYWludFdvcmts
ZXRHbG9iYWxTY29wZSIsICRwYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0NvZGUs
ICRwYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOwogCiAjIFJlc29sdmVz
IHBhcnRpYWwgaW50ZXJmYWNlcyBhbmQgaW1wbGVtZW50cyBkZXBlbmRlbmNpZXMuCiBmb3JlYWNo
IG15ICRpZGxGaWxlIChzb3J0IGtleXMgJXN1cHBsZW1lbnRhbERlcGVuZGVuY2llcykgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50SW1hZ2VWYWx1ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmNwcAppbmRleCBhNjkwZTQxZDc2NzFk
ZWEwMzUzMjFmYWZlN2I3ZmE5NzExYWJkYTUyLi43MzFmMzFkZDRlOGJkNWNkMDQyNWNiYmZiZjQ2
MjNiNzEwYjE4NGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRJbWFn
ZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmNw
cApAQCAtMjksOCArMjksOCBAQAogCiAjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCiAKLSNp
bmNsdWRlICJDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIkN1c3RvbVBh
aW50SW1hZ2UuaCIKKyNpbmNsdWRlICJQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1
ZGUgIlJlbmRlckVsZW1lbnQuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CiAKQEAgLTUwLDggKzUwLDExIEBAIFJlZlB0cjxJbWFnZT4gQ1NTUGFpbnRJbWFnZVZhbHVlOjpp
bWFnZShSZW5kZXJFbGVtZW50JiByZW5kZXJFbGVtZW50LCBjb25zdCBGbG9hCiB7CiAgICAgaWYg
KHNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvJiBzZWxl
Y3RlZEdsb2JhbFNjb3BlID0gcmVuZGVyRWxlbWVudC5kb2N1bWVudCgpLmVuc3VyZUNTU1BhaW50
V29ya2xldEdsb2JhbFNjb3BlKCk7Ci0gICAgYXV0byogcmVnaXN0cmF0aW9uID0gc2VsZWN0ZWRH
bG9iYWxTY29wZS5wYWludERlZmluaXRpb25NYXAoKS5nZXQobV9uYW1lKTsKKyAgICBhdXRvKiBz
ZWxlY3RlZEdsb2JhbFNjb3BlID0gcmVuZGVyRWxlbWVudC5kb2N1bWVudCgpLnBhaW50V29ya2xl
dEdsb2JhbFNjb3BlKCk7CisgICAgaWYgKCFzZWxlY3RlZEdsb2JhbFNjb3BlKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHNlbGVjdGVkR2xvYmFs
U2NvcGUtPnBhaW50RGVmaW5pdGlvbkxvY2soKSk7CisgICAgYXV0byogcmVnaXN0cmF0aW9uID0g
c2VsZWN0ZWRHbG9iYWxTY29wZS0+cGFpbnREZWZpbml0aW9uTWFwKCkuZ2V0KG1fbmFtZSk7CiAK
ICAgICBpZiAoIXJlZ2lzdHJhdGlvbikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQ5NzNjZDM4ZDY4ZTQzY2M1Mjg1YzU4MTA0YjI1ZGRi
NmUxMGMyOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsNTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJDU1NQYWludFdvcmts
ZXRHbG9iYWxTY29wZS5oIgotCi0jaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotUmVmPENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlPiBDU1NQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZTo6Y3JlYXRlKCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSgpKTsKLX0KLQotQ1NTUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGU6OkNTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlKCkKLXsKLX0KLQotZG91YmxlIENT
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlOjpkZXZpY2VQaXhlbFJhdGlvKCkKLXsKLSAgICByZXR1
cm4gMS4wOwotfQotCi1FeGNlcHRpb25Pcjx2b2lkPiBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29w
ZTo6YWRkUmVnaXN0ZXJlZFBhaW50KCkKLXsKLSAgICByZXR1cm4geyB9OwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjNi
MGQ5ZDhmM2YwMjM3ZTI3OTJmY2VmN2U0NzdmZTU4YzYyYTMwOC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQotCi0jaW5jbHVkZSAiQ1NTUGFpbnRDYWxsYmFj
ay5oIgotI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
LSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQot
bmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIEpTVmFsdWU7Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIENTU1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
IDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+IHsKLXB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlPiBjcmVhdGUoKTsK
LQotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGFkZFJlZ2lzdGVyZWRQYWludCgpOwotICAgIGRvdWJs
ZSBkZXZpY2VQaXhlbFJhdGlvKCk7Ci0KLSAgICBzdHJ1Y3QgUGFpbnREZWZpbml0aW9uIHsKLSAg
ICAgICAgY29uc3QgQXRvbWljU3RyaW5nIG5hbWU7Ci0gICAgICAgIGNvbnN0IFJlZjxDU1NQYWlu
dENhbGxiYWNrPiBwYWludENhbGxiYWNrOwotICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiBp
bnB1dFByb3BlcnRpZXM7Ci0gICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+IGlucHV0QXJndW1l
bnRzOwotICAgIH07Ci0KLSAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFBhaW50
RGVmaW5pdGlvbj4+JiBwYWludERlZmluaXRpb25NYXAoKSB7IHJldHVybiBtX3BhaW50RGVmaW5p
dGlvbk1hcDsgfQotCi1wcml2YXRlOgotICAgIENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlKCk7
Ci0KLSAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFBhaW50RGVmaW5pdGlvbj4+
IG1fcGFpbnREZWZpbml0aW9uTWFwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUuaWRsIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
LmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTUzNmMwYTQxMzk1YzBhMWEwODRm
YTFmN2ViNWE2YzJiYTcyYTYxZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUu
aWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotLyoKLSogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSoKLSogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0qIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotKiBhcmUgbWV0OgotKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0qIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0qICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSoKLSogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0qIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0q
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgotKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0qIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0qLwot
Ci1bCi0gICAgRW5hYmxlZEF0UnVudGltZT1DU1NQYWludGluZ0FQSSwKLSAgICBDb25kaXRpb25h
bD1DU1NfUEFJTlRJTkdfQVBJLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAg
SlNDdXN0b21NYXJrRnVuY3Rpb24sCi0gICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0Ci1dIGlu
dGVyZmFjZSBDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSB7Ci0gICAgW0N1c3RvbSwgTWF5VGhy
b3dFeGNlcHRpb25dIHZvaWQgcmVnaXN0ZXJQYWludChET01TdHJpbmcgbmFtZSwgRnVuY3Rpb24g
cGFpbnRDdG9yKTsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBk
ZXZpY2VQaXhlbFJhdGlvOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01D
U1NQYWludFdvcmtsZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xl
dC5jcHAKaW5kZXggMTIwNjgxYjhkNzYxMzQ2ZGE3MmFjYzVhMGIyMjY5ZTE0MDczNTg5Yi4uNjVh
MmZkZjhkZmFjYjRkN2Y3MWQ3NjFjYjIxNjZiMWE5Mjg0YzA3MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0RPTUNTU1BhaW50V29ya2xldC5jcHAKQEAgLTI4LDE2ICsyOCwxNyBAQAogCiAjaWYgRU5B
QkxFKENTU19QQUlOVElOR19BUEkpCiAKLSNpbmNsdWRlICJDU1NQYWludFdvcmtsZXRHbG9iYWxT
Y29wZS5oIgogI2luY2x1ZGUgIkRPTUNTU05hbWVzcGFjZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50
LmgiCisjaW5jbHVkZSAiV29ya2xldC5oIgorCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUm
IERPTUNTU1BhaW50V29ya2xldDo6ZW5zdXJlUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoRG9jdW1l
bnQmIGRvY3VtZW50KQorV29ya2xldCYgRE9NQ1NTUGFpbnRXb3JrbGV0OjplbnN1cmVQYWludFdv
cmtsZXQoRG9jdW1lbnQmIGRvY3VtZW50KQogewotICAgIHJldHVybiBkb2N1bWVudC5lbnN1cmVD
U1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSgpOworICAgIHJldHVybiBkb2N1bWVudC5lbnN1cmVQ
YWludFdvcmtsZXQoKTsKIH0KIAogRE9NQ1NTUGFpbnRXb3JrbGV0KiBET01DU1NQYWludFdvcmts
ZXQ6OmZyb20oRE9NQ1NTTmFtZXNwYWNlJiBjc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFp
bnRXb3JrbGV0LmgKaW5kZXggZWU1ZWZiMTFkMTliYjYyZjM4ZTU2ZTEwZTVkNjE2M2NjOWQ4ZmIz
Zi4uYTJjYjM3M2Y2YTAzNDEzZDEyMWI0MDE0MzRiZmQ5ZWY5OWE5NzZmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuaApAQCAtMzUsMTQgKzM1LDE0IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgQ1NTUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGU7CitjbGFzcyBXb3JrbGV0OwogY2xhc3MgRE9NQ1NTTmFtZXNwYWNlOwogCiBjbGFz
cyBET01DU1NQYWludFdvcmtsZXQgZmluYWwgOiBwdWJsaWMgU3VwcGxlbWVudDxET01DU1NOYW1l
c3BhY2U+IHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBET01DU1NQYWludFdvcmtsZXQoRE9NQ1NT
TmFtZXNwYWNlJikgeyB9CiAKLSAgICBzdGF0aWMgQ1NTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUm
IGVuc3VyZVBhaW50V29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50Jik7CisgICAgc3RhdGljIFdv
cmtsZXQmIGVuc3VyZVBhaW50V29ya2xldChEb2N1bWVudCYpOwogCiBwcml2YXRlOgogICAgIHN0
YXRpYyBET01DU1NQYWludFdvcmtsZXQqIGZyb20oRE9NQ1NTTmFtZXNwYWNlJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuaWRsCmluZGV4IDE5MGNkYjQ1ZWM3NTNkZWJi
ZTk2ZjhkODMzODEzZjQ0NjM1YWU4YzMuLmFhNTllNWVlMmRlOTE4MWQzMDQ3ZmUzNDgwNGZlNTI3
YTI2Zjc0MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmts
ZXQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuaWRsCkBA
IC0yNyw2ICsyNyw1IEBACiAgICAgRW5hYmxlZEF0UnVudGltZT1DU1NQYWludGluZ0FQSSwKICAg
ICBDb25kaXRpb25hbD1DU1NfUEFJTlRJTkdfQVBJLAogXSBwYXJ0aWFsIGludGVyZmFjZSBET01D
U1NOYW1lc3BhY2UgewotICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5vdCBhY3R1YWxseSBwYXJ0IG9m
IHRoZSBzcGVjLCBhbmQgc2hvdWxkIGJlIHJlcGxhY2VkIHdoZW4gd29ya2xldHMgYXJlIGltcGxl
bWVudGVkCi0gICAgW0ltcGxlbWVudGVkQXM9ZW5zdXJlUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUs
Q2FsbFdpdGg9RG9jdW1lbnRdIHN0YXRpYyByZWFkb25seSBhdHRyaWJ1dGUgQ1NTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUgcGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU7CisgICAgW0ltcGxlbWVudGVk
QXM9ZW5zdXJlUGFpbnRXb3JrbGV0LENhbGxXaXRoPURvY3VtZW50XSBzdGF0aWMgcmVhZG9ubHkg
YXR0cmlidXRlIFdvcmtsZXQgcGFpbnRXb3JrbGV0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CmluZGV4IDBmMzkwODhlNWU4MWJkNmEzZGZhMDgyNmEzZWFlZjdhMTY4YTI5ZjIuLmZlNzA1NmZj
NzRlZjU3ZjczZDQwM2Y1ZjE1MzZkMjgzOGY0ODUzOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cApAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIkNEQVRBU2VjdGlvbi5oIgogI2luY2x1ZGUg
IkNTU0FuaW1hdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJDU1NGb250U2VsZWN0b3IuaCIK
LSNpbmNsdWRlICJDU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIkNTU1N0
eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJDU1NTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAi
Q2FjaGVkQ1NTU3R5bGVTaGVldC5oIgpAQCAtMTQwLDYgKzEzOSw3IEBACiAjaW5jbHVkZSAiUGFn
ZUNvbnNvbGVDbGllbnQuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJQYWdl
VHJhbnNpdGlvbkV2ZW50LmgiCisjaW5jbHVkZSAiUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybUxvY2FsZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNz
aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCkBAIC0yMTcsNiArMjE3
LDcgQEAKICNpbmNsdWRlICJXZWJBbmltYXRpb24uaCIKICNpbmNsdWRlICJXaGVlbEV2ZW50Lmgi
CiAjaW5jbHVkZSAiV2luZG93RmVhdHVyZXMuaCIKKyNpbmNsdWRlICJXb3JrbGV0LmgiCiAjaW5j
bHVkZSAiWE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJYTUxEb2N1bWVudFBhcnNlci5oIgogI2lu
Y2x1ZGUgIlhNTE5TTmFtZXMuaCIKQEAgLTg0MDUsMTEgKzg0MDYsMTYgQEAgdm9pZCBEb2N1bWVu
dDo6ZnJhbWVXYXNEaXNjb25uZWN0ZWRGcm9tT3duZXIoKQogfQogCiAjaWYgRU5BQkxFKENTU19Q
QUlOVElOR19BUEkpCi1DU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSYgRG9jdW1lbnQ6OmVuc3Vy
ZUNTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlKCkKK1dvcmtsZXQmIERvY3VtZW50OjplbnN1cmVQ
YWludFdvcmtsZXQoKQogewotICAgIGlmICghbV9DU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSkK
LSAgICAgICAgbV9DU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZSA9IENTU1BhaW50V29ya2xldEds
b2JhbFNjb3BlOjpjcmVhdGUoKTsKLSAgICByZXR1cm4gKm1fQ1NTUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGU7CisgICAgaWYgKCFtX3BhaW50V29ya2xldCkKKyAgICAgICAgbV9wYWludFdvcmtsZXQg
PSBXb3JrbGV0OjpjcmVhdGUoKTsKKyAgICByZXR1cm4gKm1fcGFpbnRXb3JrbGV0OworfQorCit2
b2lkIERvY3VtZW50OjpzZXRQYWludFdvcmtsZXRHbG9iYWxTY29wZShSZWY8UGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGU+JiYgc2NvcGUpCit7CisgICAgbV9wYWludFdvcmtsZXRHbG9iYWxTY29wZSA9
IFdURk1vdmUoc2NvcGUpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggODU0
MmMxNTU2NzE3ZjI3YjYwODkwN2QyZDE0ZWUxNGNkYTI0OGZkOC4uNmRkZjE0NWVkYTViYWI2NTdj
ZmY5OGViYmMwZjcwOTM5NGU5MTA5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTg4LDcgKzg4
LDYgQEAgY2xhc3MgQXR0cjsKIGNsYXNzIENEQVRBU2VjdGlvbjsKIGNsYXNzIENTU0N1c3RvbVBy
b3BlcnR5VmFsdWU7CiBjbGFzcyBDU1NGb250U2VsZWN0b3I7Ci1jbGFzcyBDU1NQYWludFdvcmts
ZXRHbG9iYWxTY29wZTsKIGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb247CiBjbGFzcyBDU1NTdHls
ZVNoZWV0OwogY2xhc3MgQ2FjaGVkQ1NTU3R5bGVTaGVldDsKQEAgLTE1NCw2ICsxNTMsNyBAQCBj
bGFzcyBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzOwogY2xhc3MgTm9kZUZpbHRlcjsKIGNs
YXNzIE5vZGVJdGVyYXRvcjsKIGNsYXNzIFBhZ2U7CitjbGFzcyBQYWludFdvcmtsZXRHbG9iYWxT
Y29wZTsKIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsKIGNsYXNzIFByb2Nlc3NpbmdJbnN0cnVj
dGlvbjsKIGNsYXNzIFF1YWxpZmllZE5hbWU7CkBAIC0xOTQsNiArMTk0LDcgQEAgY2xhc3MgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0OwogY2xhc3MgV2ViR1BVUmVuZGVyaW5nQ29udGV4dDsKIGNsYXNz
IFdlYk1ldGFsUmVuZGVyaW5nQ29udGV4dDsKIGNsYXNzIFdpbmRvd1Byb3h5OworY2xhc3MgV29y
a2xldDsKIGNsYXNzIFhQYXRoRXZhbHVhdG9yOwogY2xhc3MgWFBhdGhFeHByZXNzaW9uOwogY2xh
c3MgWFBhdGhOU1Jlc29sdmVyOwpAQCAtMTM1MCw2ICsxMzUxLDEwIEBAIHB1YmxpYzoKICAgICAv
LyBDYWxsZXJzIHNob3VsZCB0cnkgdG8gY3JlYXRlIHRoZSBDb25zb2xlTWVzc2FnZSB0aGVtc2Vs
dmVzLgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNv
dXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcg
cmVxdWVzdElkZW50aWZpZXIgPSAwKSBmaW5hbDsKIAorICAgIC8vIFRoZSBmb2xsb3dpbmcgYWRk
TWVzc2FnZSBmdW5jdGlvbiBpcyBkZXByZWNhdGVkLgorICAgIC8vIENhbGxlcnMgc2hvdWxkIHRy
eSB0byBjcmVhdGUgdGhlIENvbnNvbGVNZXNzYWdlIHRoZW1zZWx2ZXMuCisgICAgdm9pZCBhZGRN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQg
Y29sdW1uTnVtYmVyLCBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s+JiYsIEpTQzo6
RXhlY1N0YXRlKiA9IG51bGxwdHIsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIgPSAw
KSBmaW5hbDsKKwogICAgIFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbigpIGNvbnN0IHsg
cmV0dXJuICpTZWN1cml0eUNvbnRleHQ6OnNlY3VyaXR5T3JpZ2luKCk7IH0KICAgICBTZWN1cml0
eU9yaWdpbiYgdG9wT3JpZ2luKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdG9wRG9jdW1lbnQoKS5z
ZWN1cml0eU9yaWdpbigpOyB9CiAKQEAgLTE1MTcsNyArMTUyMiw5IEBAIHB1YmxpYzoKICAgICBi
b29sIHJlZ2lzdGVyQ1NTUHJvcGVydHkoQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5JiYpOwog
CiAjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCi0gICAgQ1NTUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUmIGVuc3VyZUNTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlKCk7CisgICAgV29ya2xldCYg
ZW5zdXJlUGFpbnRXb3JrbGV0KCk7CisgICAgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUqIHBhaW50
V29ya2xldEdsb2JhbFNjb3BlKCkgeyByZXR1cm4gbV9wYWludFdvcmtsZXRHbG9iYWxTY29wZS5n
ZXQoKTsgfQorICAgIHZvaWQgc2V0UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoUmVmPFBhaW50V29y
a2xldEdsb2JhbFNjb3BlPiYmKTsKICNlbmRpZgogCiAgICAgdm9pZCBzZXRBc1J1bm5pbmdVc2Vy
U2NyaXB0cygpIHsgbV9pc1J1bm5pbmdVc2VyU2NyaXB0cyA9IHRydWU7IH0KQEAgLTE1NzAsMTAg
KzE1NzcsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVmU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
IGZpbmFsIHsgcmVmKCk7IH0KICAgICB2b2lkIGRlcmVmU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
IGZpbmFsIHsgZGVyZWYoKTsgfQogCi0gICAgLy8gVGhlIGZvbGxvd2luZyBhZGRNZXNzYWdlIGZ1
bmN0aW9uIGlzIGRlcHJlY2F0ZWQuCi0gICAgLy8gQ2FsbGVycyBzaG91bGQgdHJ5IHRvIGNyZWF0
ZSB0aGUgQ29uc29sZU1lc3NhZ2UgdGhlbXNlbHZlcy4KLSAgICB2b2lkIGFkZE1lc3NhZ2UoTWVz
c2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0
cmluZyYgc291cmNlVVJMLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1i
ZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFjaz4mJiwgSlNDOjpFeGVjU3RhdGUq
ID0gbnVsbHB0ciwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciA9IDApIGZpbmFsOwot
CiAgICAgU2Vjb25kcyBtaW5pbXVtRE9NVGltZXJJbnRlcnZhbCgpIGNvbnN0IGZpbmFsOwogCiAg
ICAgU2Vjb25kcyBkb21UaW1lckFsaWdubWVudEludGVydmFsKGJvb2wgaGFzUmVhY2hlZE1heE5l
c3RpbmdMZXZlbCkgY29uc3QgZmluYWw7CkBAIC0yMDYwLDcgKzIwNjMsOCBAQCBwcml2YXRlOgog
ICAgIENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCBtX0NTU1JlZ2lzdGVyZWRQcm9wZXJ0
eVNldDsKIAogI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQotICAgIFJlZlB0cjxDU1NQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZT4gbV9DU1NQYWludFdvcmtsZXRHbG9iYWxTY29wZTsKKyAgICBS
ZWZQdHI8V29ya2xldD4gbV9wYWludFdvcmtsZXQ7CisgICAgUmVmUHRyPFBhaW50V29ya2xldEds
b2JhbFNjb3BlPiBtX3BhaW50V29ya2xldEdsb2JhbFNjb3BlOwogI2VuZGlmCiAKICAgICBib29s
IG1faXNSdW5uaW5nVXNlclNjcmlwdHMgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbiBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dFRhcmdldEZhY3RvcnkuaW4KaW5kZXggNjBhYjFhNTgyODhiZTk5YTI5N2VlOTIzYjg4OTQwZjE5
M2Y2ZjU1Zi4uNzhhMjJiMzE2YTRjNDY4MGIxZDdjMjI3NGFjYjZhYjdmZDU2NDhiZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCkBAIC01Miw2ICs1Miw3IEBAIFdl
YkFuaW1hdGlvbgogV2ViS2l0TWVkaWFLZXlTZXNzaW9uIGNvbmRpdGlvbmFsPUxFR0FDWV9FTkNS
WVBURURfTUVESUEKIFdlYlNvY2tldAogV29ya2VyCitXb3JrbGV0R2xvYmFsU2NvcGUgY29uZGl0
aW9uYWw9Q1NTX1BBSU5USU5HX0FQSQogWE1MSHR0cFJlcXVlc3QKIFhNTEh0dHBSZXF1ZXN0VXBs
b2FkCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcApp
bmRleCBiYTVjMzYzMjRiYzgzNDAwZTQ0YjhjOWMxNWIxNTVlNTgzNzBjZmJmLi5kOGY2MGUyOWQz
OWNmZmE5OTgyMDFkOTI4YWRhOGIzNzI0ZjZiYmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC01NCw2ICs1NCw4IEBACiAjaW5jbHVkZSAi
V29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJOYXZpZ2F0b3IuaCIKICNpbmNs
dWRlICJXb3JrZXJUaHJlYWQuaCIKKyNpbmNsdWRlICJXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNp
bmNsdWRlICJXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0NhdGNoU2NvcGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FeGNlcHRpb24uaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1Byb21pc2UuaD4KQEAgLTQ3Niw4ICs0NzgsMTUg
QEAgSlNDOjpWTSYgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6dm0oKQogewogICAgIGlmIChpczxE
b2N1bWVudD4oKnRoaXMpKQogICAgICAgICByZXR1cm4gY29tbW9uVk0oKTsKKyAgICBpZiAoaXM8
V29ya2VyR2xvYmFsU2NvcGU+KCp0aGlzKSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFdvcmtl
ckdsb2JhbFNjb3BlPigqdGhpcykuc2NyaXB0KCktPnZtKCk7CisjaWYgRU5BQkxFKENTU19QQUlO
VElOR19BUEkpCisgICAgaWYgKGlzPFdvcmtsZXRHbG9iYWxTY29wZT4oKnRoaXMpKQorICAgICAg
ICByZXR1cm4gZG93bmNhc3Q8V29ya2xldEdsb2JhbFNjb3BlPigqdGhpcykuc2NyaXB0KCkudm0o
KTsKKyNlbmRpZgogCi0gICAgcmV0dXJuIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqdGhp
cykuc2NyaXB0KCktPnZtKCk7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gY29tbW9uVk0oKTsKIH0KIAogUmVqZWN0ZWRQcm9taXNlVHJhY2tlciYgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6ZW5zdXJlUmVqZWN0ZWRQcm9taXNlVHJhY2tlclNsb3coKQpAQCAt
NTE5LDggKzUyOCwxNSBAQCBKU0M6OkV4ZWNTdGF0ZSogU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
ZXhlY1N0YXRlKCkKICAgICAgICAgcmV0dXJuIGV4ZWNTdGF0ZUZyb21QYWdlKG1haW5UaHJlYWRO
b3JtYWxXb3JsZCgpLCBkb2N1bWVudC5wYWdlKCkpOwogICAgIH0KIAotICAgIFdvcmtlckdsb2Jh
bFNjb3BlKiB3b3JrZXJHbG9iYWxTY29wZSA9IHN0YXRpY19jYXN0PFdvcmtlckdsb2JhbFNjb3Bl
Kj4odGhpcyk7Ci0gICAgcmV0dXJuIGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZSh3b3Jr
ZXJHbG9iYWxTY29wZSk7CisgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykpCisg
ICAgICAgIHJldHVybiBleGVjU3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUoZG93bmNhc3Q8V29y
a2VyR2xvYmFsU2NvcGU+KCp0aGlzKSk7CisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisg
ICAgaWYgKGlzPFdvcmtsZXRHbG9iYWxTY29wZT4oKnRoaXMpKQorICAgICAgICByZXR1cm4gZXhl
Y1N0YXRlRnJvbVdvcmtsZXRHbG9iYWxTY29wZShkb3duY2FzdDxXb3JrbGV0R2xvYmFsU2NvcGU+
KCp0aGlzKSk7CisjZW5kaWYKKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBudWxscHRyOwogfQogCiBTdHJpbmcgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZG9tYWluRm9y
Q2FjaGVQYXJ0aXRpb24oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgKaW5kZXggMmI2NDc1ZTYyN2RjZWZkNWRkYjY0MzRlMTUxNTU0NjVlNTVjNDdl
NC4uNzg1OTA0NTgyM2I3YzYzMDUwYWUwMWYxYTY0NWJhZDMwYjJkYzc5YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC04OSw2ICs4OSw3IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpc0RvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNXb3JrZXJHbG9iYWxTY29wZSgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzV29ya2xldEdsb2JhbFNjb3BlKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRleHRUaHJlYWQo
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIGlzSlNFeGVjdXRpb25G
b3JiaWRkZW4oKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IGNh
YzA2MjU2OTlhNDE4Yjg5MGQzZDExM2QzYzQ5MjdiZGU2ZmVjOWQuLmIyMGNiYmM5NTA3MDI4MTFi
NjU4OWFjMWRmYmQ1NzMzOTE5M2QzMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwCkBA
IC02MCw3ICs2MCw3IEBAIEluamVjdGVkU2NyaXB0IFdvcmtlckRlYnVnZ2VyQWdlbnQ6OmluamVj
dGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYgZXJyb3JTdHJpCiAgICAgICAgIHJldHVybiBJ
bmplY3RlZFNjcmlwdCgpOwogICAgIH0KIAotICAgIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0
ZSA9IGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZSgmbV93b3JrZXJHbG9iYWxTY29wZSk7
CisgICAgSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlID0gZXhlY1N0YXRlRnJvbVdvcmtlckds
b2JhbFNjb3BlKG1fd29ya2VyR2xvYmFsU2NvcGUpOwogICAgIHJldHVybiBpbmplY3RlZFNjcmlw
dE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJS
dW50aW1lQWdlbnQuY3BwCmluZGV4IDljYzY5ZDE3MjRjZGFkMThmOThlM2QzYjMyZjI5NjhhNTU0
ZTA2N2QuLjhjMzIxNDg3YzY4NWZkMzRmYWVhYTc1NTBjOThhMjI5MDg3NWQzMjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29y
a2VyUnVudGltZUFnZW50LmNwcApAQCAtNjUsNyArNjUsNyBAQCBJbmplY3RlZFNjcmlwdCBXb3Jr
ZXJSdW50aW1lQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYgZXJyb3JT
dHJpbgogICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKICAgICB9CiAKLSAgICBKU0M6
OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUgPSBleGVjU3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUo
Jm1fd29ya2VyR2xvYmFsU2NvcGUpOworICAgIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSA9
IGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZShtX3dvcmtlckdsb2JhbFNjb3BlKTsKICAg
ICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0
U3RhdGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9DdXN0b21QYWludEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0N1c3RvbVBhaW50SW1hZ2UuY3BwCmluZGV4IGQyZTQyYzBjOWU2MTk5ZjUyNzQyOTE2NzBmMTdh
MDZlOWRlODIwZmIuLjE1YWE5MjRjMmI2MTcxZTUzNTBjMTAxZDQ0MGJlNmMzY2NhNTBjOTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50
SW1hZ2UuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ3Vz
dG9tUGFpbnRJbWFnZTo6Q3VzdG9tUGFpbnRJbWFnZShjb25zdCBDU1NQYWludFdvcmtsZXRHbG9i
YWxTY29wZTo6UGFpbnREZWZpbml0aW9uJiBkZWZpbml0aW9uLCBjb25zdCBGbG9hdFNpemUmIHNp
emUpCitDdXN0b21QYWludEltYWdlOjpDdXN0b21QYWludEltYWdlKGNvbnN0IFBhaW50V29ya2xl
dEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb24mIGRlZmluaXRpb24sIGNvbnN0IEZsb2F0U2l6
ZSYgc2l6ZSkKICAgICA6IG1fcGFpbnRDYWxsYmFjayhkZWZpbml0aW9uLnBhaW50Q2FsbGJhY2su
Z2V0KCkpCiB7CiAgICAgc2V0Q29udGFpbmVyU2l6ZShzaXplKTsKQEAgLTYzLDcgKzYzLDYgQEAg
SW1hZ2VEcmF3UmVzdWx0IEN1c3RvbVBhaW50SW1hZ2U6OmRvQ3VzdG9tUGFpbnQoR3JhcGhpY3ND
b250ZXh0JiBkZXN0Q29udGV4dCwgY28KICAgICBpZiAocmVzdWx0LnR5cGUoKSAhPSBDYWxsYmFj
a1Jlc3VsdFR5cGU6OlN1Y2Nlc3MpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRp
ZE5vdGhpbmc7CiAKLSAgICBVTlVTRURfUEFSQU0oZGVzdENvbnRleHQpOwogICAgIGF1dG8gaW1h
Z2UgPSBjYW52YXMtPmNvcGllZEltYWdlKCk7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0
dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuaAppbmRleCAwM2FiMmE4ODg2ODNh
M2Y1Mzg3MWRhYzViNTFmODkxOWRhNGM0ZGQyLi5lYjZhODFiYWUyNGQxMTdlMGNkMzQ4OGRjNDdh
NzZlNjJiMDQyMGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9DdXN0b21QYWludEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ3VzdG9tUGFpbnRJbWFnZS5oCkBAIC0yNyw4ICsyNyw4IEBACiAKICNpZiBFTkFCTEUoQ1NT
X1BBSU5USU5HX0FQSSkKIAotI2luY2x1ZGUgIkNTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgi
CiAjaW5jbHVkZSAiR2VuZXJhdGVkSW1hZ2UuaCIKKyNpbmNsdWRlICJQYWludFdvcmtsZXRHbG9i
YWxTY29wZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM2LDcgKzM2LDcgQEAgY2xh
c3MgSW1hZ2VCdWZmZXI7CiAKIGNsYXNzIEN1c3RvbVBhaW50SW1hZ2UgZmluYWwgOiBwdWJsaWMg
R2VuZXJhdGVkSW1hZ2UgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q3VzdG9tUGFpbnRJbWFn
ZT4gY3JlYXRlKGNvbnN0IENTU1BhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRp
b24mIGRlZmluaXRpb24sIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKKyAgICBzdGF0aWMgUmVmPEN1
c3RvbVBhaW50SW1hZ2U+IGNyZWF0ZShjb25zdCBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6UGFp
bnREZWZpbml0aW9uJiBkZWZpbml0aW9uLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCiAgICAgewog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDdXN0b21QYWludEltYWdlKGRlZmluaXRpb24s
IHNpemUpKTsKICAgICB9CkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQ3Vz
dG9tUGFpbnRJbWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogcHJpdmF0
ZToKLSAgICBDdXN0b21QYWludEltYWdlKGNvbnN0IENTU1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
OjpQYWludERlZmluaXRpb24mLCBjb25zdCBGbG9hdFNpemUmKTsKKyAgICBDdXN0b21QYWludElt
YWdlKGNvbnN0IFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb24mLCBjb25z
dCBGbG9hdFNpemUmKTsKIAogICAgIEltYWdlRHJhd1Jlc3VsdCBkb0N1c3RvbVBhaW50KEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTI5YTIw
MGQxMGRmM2ZkNmI3YWNmYmE5Nzg4ZWMxYzRiYThhMGE0MwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcApAQCAtMCww
ICsxLDEzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQYWludFdvcmtsZXRHbG9iYWxTY29wZS5o
IgorCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisKKyNpbmNsdWRlICJET01XaW5kb3cu
aCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkpTQ1NTUGFpbnRDYWxsYmFjay5o
IgorI2luY2x1ZGUgIkpTRE9NQ29udmVydENhbGxiYWNrcy5oIgorI2luY2x1ZGUgIkpTRE9NQ29u
dmVydFNlcXVlbmNlcy5oIgorI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSlNDOworCitSZWY8UGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGU+IFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBTY3JpcHRTb3VyY2VDb2RlJiYgY29kZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBQYWludFdvcmtsZXRHbG9iYWxTY29wZShkb2N1bWVudCwgV1RGTW92ZShjb2RlKSkpOworfQor
CitQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoRG9jdW1l
bnQmIGRvY3VtZW50LCBTY3JpcHRTb3VyY2VDb2RlJiYgY29kZSkKKyAgICA6IFdvcmtsZXRHbG9i
YWxTY29wZShkb2N1bWVudCwgV1RGTW92ZShjb2RlKSkKK3sKK30KKworZG91YmxlIFBhaW50V29y
a2xldEdsb2JhbFNjb3BlOjpkZXZpY2VQaXhlbFJhdGlvKCkgY29uc3QKK3sKKyAgICBpZiAoIXJl
c3BvbnNhYmxlRG9jdW1lbnQoKSB8fCAhcmVzcG9uc2FibGVEb2N1bWVudCgpLT5kb21XaW5kb3co
KSkKKyAgICAgICAgcmV0dXJuIDEuMDsKKyAgICByZXR1cm4gcmVzcG9uc2FibGVEb2N1bWVudCgp
LT5kb21XaW5kb3coKS0+ZGV2aWNlUGl4ZWxSYXRpbygpOworfQorCisvLyBodHRwczovL2RyYWZ0
cy5jc3MtaG91ZGluaS5vcmcvY3NzLXBhaW50LWFwaS8jcmVnaXN0ZXJpbmctY3VzdG9tLXBhaW50
CitFeGNlcHRpb25Pcjx2b2lkPiBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6cmVnaXN0ZXJQYWlu
dChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qs
IGNvbnN0IFN0cmluZyYgbmFtZSwgU3Ryb25nPEpTT2JqZWN0PiBwYWludENvbnN0cnVjdG9yKQor
eworICAgIGF1dG8mIHZtID0gKnBhaW50Q29uc3RydWN0b3ItPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgLy8gVmFsaWRhdGUgdGhhdCBwYWlu
dENvbnN0cnVjdG9yIGlzIGEgVm9pZEZ1bmN0aW9uCisgICAgQ2FsbERhdGEgY2FsbERhdGE7Cisg
ICAgaWYgKEpTQzo6Z2V0Q2FsbERhdGEodm0sIHBhaW50Q29uc3RydWN0b3IuZ2V0KCksIGNhbGxE
YXRhKSA9PSBKU0M6OkNhbGxUeXBlOjpOb25lKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
VHlwZUVycm9yLCAicGFpbnRDb25zdHJ1Y3RvciBtdXN0IGJlIGNhbGxhYmxlIiB9OworCisgICAg
aWYgKG5hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9y
LCAiVGhlIGZpcnN0IGFyZ3VtZW50IG11c3Qgbm90IGJlIHRoZSBlbXB0eSBzdHJpbmciIH07CisK
KyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHBhaW50RGVmaW5pdGlvbkxvY2soKSk7CisKKyAg
ICBpZiAocGFpbnREZWZpbml0aW9uTWFwKCkuY29udGFpbnMobmFtZSkpCisgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3IsICJUaGlzIG5hbWUgaGFzIGFs
cmVhZHkgYmVlbiByZWdpc3RlcmVkIiB9OworCisgICAgVmVjdG9yPFN0cmluZz4gaW5wdXRQcm9w
ZXJ0aWVzOworCisgICAgSlNWYWx1ZSBpbnB1dFByb3BlcnRpZXNJdGVyYWJsZVZhbHVlID0gcGFp
bnRDb25zdHJ1Y3Rvci0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJp
bnB1dFByb3BlcnRpZXMiKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0
aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKKworICAgIGlmICghaW5wdXRQcm9wZXJ0
aWVzSXRlcmFibGVWYWx1ZS5pc1VuZGVmaW5lZCgpKQorICAgICAgICBpbnB1dFByb3BlcnRpZXMg
PSBjb252ZXJ0PElETFNlcXVlbmNlPElETERPTVN0cmluZz4+KHN0YXRlLCBpbnB1dFByb3BlcnRp
ZXNJdGVyYWJsZVZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRp
b24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOworCisgICAgLy8gRklYTUU6IFZhbGlkYXRl
IGlucHV0IHByb3BlcnRpZXMgaGVyZSAoc3RlcCA3KS4KKworICAgIFZlY3RvcjxTdHJpbmc+IGlu
cHV0QXJndW1lbnRzOworCisgICAgSlNWYWx1ZSBpbnB1dEFyZ3VtZW50c0l0ZXJhYmxlVmFsdWUg
PSBwYWludENvbnN0cnVjdG9yLT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2
bSwgImlucHV0QXJndW1lbnRzIikpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4
Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7CisKKyAgICBpZiAoIWlucHV0QXJn
dW1lbnRzSXRlcmFibGVWYWx1ZS5pc1VuZGVmaW5lZCgpKQorICAgICAgICBpbnB1dEFyZ3VtZW50
cyA9IGNvbnZlcnQ8SURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj4oc3RhdGUsIGlucHV0QXJndW1l
bnRzSXRlcmFibGVWYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0
aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKKworICAgIC8vIEZJWE1FOiBQYXJzZSBz
eW50YXggZm9yIGlucHV0QXJndW1lbnRzIGhlcmUgKHN0ZXBzIDExIGFuZCAxMikuCisKKyAgICBK
U1ZhbHVlIGNvbnRleHRPcHRpb25zVmFsdWUgPSBwYWludENvbnN0cnVjdG9yLT5nZXQoJnN0YXRl
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImNvbnRleHRPcHRpb25zIikpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJy
b3IgfSk7CisgICAgVU5VU0VEX1BBUkFNKGNvbnRleHRPcHRpb25zVmFsdWUpOworCisgICAgLy8g
RklYTUU6IENvbnZlcnQgdG8gUGFpbnRSZW5kZXJpbmdDb250ZXh0MkRTZXR0aW5ncyBoZXJlIChz
dGVwIDE0KS4KKworICAgIGlmICghcGFpbnRDb25zdHJ1Y3Rvci0+aXNDb25zdHJ1Y3Rvcih2bSkp
CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJUaGUgc2Vjb25kIGFyZ3Vt
ZW50IG11c3QgYmUgYSBjb25zdHJ1Y3RvciIgfTsKKworICAgIEpTVmFsdWUgcHJvdG90eXBlVmFs
dWUgPSBwYWludENvbnN0cnVjdG9yLT5nZXQoJnN0YXRlLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90
b3R5cGUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0
aW5nRXhjZXB0aW9uRXJyb3IgfSk7CisKKyAgICBpZiAoIXByb3RvdHlwZVZhbHVlLmlzT2JqZWN0
KCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJUaGUgc2Vjb25kIGFy
Z3VtZW50IG11c3QgaGF2ZSBhIHByb3RvdHlwZSB0aGF0IGlzIGFuIG9iamVjdCIgfTsKKworICAg
IEpTVmFsdWUgcGFpbnRWYWx1ZSA9IHByb3RvdHlwZVZhbHVlLmdldCgmc3RhdGUsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoJnZtLCAicGFpbnQiKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKKworICAgIGlmIChw
YWludFZhbHVlLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBl
RXJyb3IsICJUaGUgY2xhc3MgbXVzdCBoYXZlIGEgcGFpbnQgbWV0aG9kIiB9OworCisgICAgUmVm
UHRyPEpTQ1NTUGFpbnRDYWxsYmFjaz4gcGFpbnQgPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rp
b248SlNDU1NQYWludENhbGxiYWNrPj4oc3RhdGUsIHBhaW50VmFsdWUsIGdsb2JhbE9iamVjdCk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNl
cHRpb25FcnJvciB9KTsKKworICAgIGF1dG8gcGFpbnREZWZpbml0aW9uID0gc3RkOjp1bmlxdWVf
cHRyPFBhaW50RGVmaW5pdGlvbj4obmV3IFBhaW50RGVmaW5pdGlvbiB7IG5hbWUsIHBhaW50LnJl
bGVhc2VOb25OdWxsKCksIGlucHV0UHJvcGVydGllcywgaW5wdXRBcmd1bWVudHMgfSk7CisgICAg
cGFpbnREZWZpbml0aW9uTWFwKCkuYWRkKG5hbWUsIFdURk1vdmUocGFpbnREZWZpbml0aW9uKSk7
CisKKyAgICAvLyBGSVhNRTogY29uc3RydWN0IGRvY3VtZW50RGVmaW5pdGlvbiAoc3RlcCAyMiku
CisKKyAgICByZXR1cm4geyB9OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjMyNzFmMTU0MjkxNGI4NWI0YjI1Zjc5MTkyZWE0Y2VjY2E4YTU1MAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEds
b2JhbFNjb3BlLmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKENTU19QQUlOVElO
R19BUEkpCisKKyNpbmNsdWRlICJDU1NQYWludENhbGxiYWNrLmgiCisjaW5jbHVkZSAiV29ya2xl
dEdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nLmg+CisKK25h
bWVzcGFjZSBKU0MgeworY2xhc3MgSlNPYmplY3Q7Cit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSlNET01HbG9iYWxPYmplY3Q7CisKK2NsYXNzIFBhaW50
V29ya2xldEdsb2JhbFNjb3BlIDogcHVibGljIFdvcmtsZXRHbG9iYWxTY29wZSB7CitwdWJsaWM6
CisgICAgc3RhdGljIFJlZjxQYWludFdvcmtsZXRHbG9iYWxTY29wZT4gY3JlYXRlKERvY3VtZW50
JiwgU2NyaXB0U291cmNlQ29kZSYmKTsKKworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlZ2lzdGVy
UGFpbnQoSlNDOjpFeGVjU3RhdGUmLCBKU0RPTUdsb2JhbE9iamVjdCYsIGNvbnN0IFN0cmluZyYg
bmFtZSwgSlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4gcGFpbnRDb25zdHJ1Y3Rvcik7CisgICAg
ZG91YmxlIGRldmljZVBpeGVsUmF0aW8oKSBjb25zdDsKKworICAgIHN0cnVjdCBQYWludERlZmlu
aXRpb24geworICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcgbmFtZTsKKyAgICAgICAgY29uc3Qg
UmVmPENTU1BhaW50Q2FsbGJhY2s+IHBhaW50Q2FsbGJhY2s7CisgICAgICAgIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+IGlucHV0UHJvcGVydGllczsKKyAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4g
aW5wdXRBcmd1bWVudHM7CisgICAgfTsKKworICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1
ZV9wdHI8UGFpbnREZWZpbml0aW9uPj4mIHBhaW50RGVmaW5pdGlvbk1hcCgpIHsgQVNTRVJUKG1f
cGFpbnREZWZpbml0aW9uTG9jay5pc0xvY2tlZCgpKTsgcmV0dXJuIG1fcGFpbnREZWZpbml0aW9u
TWFwOyB9CisgICAgTG9jayYgcGFpbnREZWZpbml0aW9uTG9jaygpIHsgcmV0dXJuIG1fcGFpbnRE
ZWZpbml0aW9uTG9jazsgfQorCitwcml2YXRlOgorICAgIFBhaW50V29ya2xldEdsb2JhbFNjb3Bl
KERvY3VtZW50JiwgU2NyaXB0U291cmNlQ29kZSYmKTsKKworICAgIGJvb2wgaXNQYWludFdvcmts
ZXRHbG9iYWxTY29wZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKworICAgIEhhc2hN
YXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8UGFpbnREZWZpbml0aW9uPj4gbV9wYWludERlZmlu
aXRpb25NYXA7CisgICAgTG9jayBtX3BhaW50RGVmaW5pdGlvbkxvY2s7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUpCitzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeyByZXR1cm4gaXM8V2ViQ29yZTo6
V29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0KSAmJiBkb3duY2FzdDxXZWJDb3JlOjpXb3JrbGV0
R2xvYmFsU2NvcGU+KGNvbnRleHQpLmlzUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoKTsgfQorc3Rh
dGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZSYgY29udGV4
dCkgeyByZXR1cm4gY29udGV4dC5pc1BhaW50V29ya2xldEdsb2JhbFNjb3BlKCk7IH0KK1NQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKworI2VuZGlmIC8vIEVOQUJMRShDU1NfUEFJTlRJTkdf
QVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuaWRsIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyNmRmN2Q3NTA5YjY2MDliOTljYTA4OWJmMTgzYWUxM2Ew
Zjc5ODMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdv
cmtsZXRHbG9iYWxTY29wZS5pZGwKQEAgLTAsMCArMSwzOSBAQAorLyoKKyogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisq
LworCitbCisgICAgRXhwb3NlZD1QYWludFdvcmtsZXQsCisgICAgRW5hYmxlZEF0UnVudGltZT1D
U1NQYWludGluZ0FQSSwKKyAgICBDb25kaXRpb25hbD1DU1NfUEFJTlRJTkdfQVBJLAorICAgIEpT
Q3VzdG9tTWFya0Z1bmN0aW9uLAorICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdCwKKyAgICBJ
bXBsaWNpdFRoaXMsCisgICAgSXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3QsCisgICAg
SXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3RPblByb3RvdHlwZSwKKyAgICBHbG9iYWw9
KFdvcmtsZXQsUGFpbnRXb3JrbGV0KSwKK10gaW50ZXJmYWNlIFBhaW50V29ya2xldEdsb2JhbFNj
b3BlIDogV29ya2xldEdsb2JhbFNjb3BlIHsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb24sQ2FsbFdp
dGg9RXhlY1N0YXRlJkdsb2JhbE9iamVjdF0gdm9pZCByZWdpc3RlclBhaW50KERPTVN0cmluZyBu
YW1lLCBvYmplY3QgcGFpbnRDb25zdHJ1Y3Rvcik7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVu
cmVzdHJpY3RlZCBkb3VibGUgZGV2aWNlUGl4ZWxSYXRpbzsKK307CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRz
L1dvcmtsZXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4ZjJjNTg5NmYyY2JkOWZmODZjZDU4MDAxMjE5ZTE4
OTQ0Njc3NzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3Jr
bGV0LmNwcApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldvcmtsZXQuaCIK
KworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
KyNpbmNsdWRlICJQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIlNjcmlwdFNv
dXJjZUNvZGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8V29ya2xldD4gV29ya2xl
dDo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXb3JrbGV0KCkpOworfQor
CitXb3JrbGV0OjpXb3JrbGV0KCkKK3sKK30KKwordm9pZCBXb3JrbGV0OjphZGRNb2R1bGUoRG9j
dW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIG1vZHVsZVVSTCkKK3sKKyAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIGRvd25sb2FkIHRoZSBzb3VyY2UgZnJvbSB0aGUgVVJMCisgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTEzNgorICAgIGF1dG8gY29u
dGV4dCA9IFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpjcmVhdGUoZG9jdW1lbnQsIFNjcmlwdFNv
dXJjZUNvZGUobW9kdWxlVVJMKSk7CisgICAgY29udGV4dC0+ZXZhbHVhdGUoKTsKKyAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIHN0b3JlIG11bHRpcGxlIGdsb2JhbCBzY29wZXMgYW5kIGNob29zZSBi
ZXR3ZWVuIHRoZW0KKyAgICAvLyBUaGlzIHdpbGwgbm90IGZ1bmN0aW9uIGNvcnJlY3RseSBpZiBt
dWx0aXBsZSBtb2R1bGVzIGFyZSBhZGRlZC4KKyAgICBkb2N1bWVudC5zZXRQYWludFdvcmtsZXRH
bG9iYWxTY29wZShXVEZNb3ZlKGNvbnRleHQpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQu
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMDgwOGY4
OTVlMDViZmUyNmNmM2FjYmJhZjYyOGZkYTRhZmVkYzMxCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgorCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkp
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIERvY3VtZW50OworCitjbGFzcyBXb3JrbGV0
IDogcHVibGljIFJlZkNvdW50ZWQ8V29ya2xldD4sIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUgewor
cHVibGljOgorICAgIHN0YXRpYyBSZWY8V29ya2xldD4gY3JlYXRlKCk7CisgICAgCisgICAgdm9p
ZCBhZGRNb2R1bGUoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIG1vZHVsZVVSTCk7CisKK3Byb3Rl
Y3RlZDoKKyAgICBXb3JrbGV0KCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5pZGwgYi9T
b3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNzRjYzkxMzgw
MGI3OWVlNzBhNWM0NDY3OWVmMTVmZTdlYzg0OWZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5pZGwKQEAgLTAsMCArMSwzMyBAQAorLyoKKyogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisqLworCitbCisgICAgRW5hYmxlZEF0UnVudGltZT1DU1NQYWludGluZ0FQSSwKKyAg
ICBDb25kaXRpb25hbD1DU1NfUEFJTlRJTkdfQVBJLAorICAgIEltcGxlbWVudGF0aW9uTGFja3NW
VGFibGUsCisgICAgR2xvYmFsPVdvcmtsZXQsCitdIGludGVyZmFjZSBXb3JrbGV0IHsKKyAgICBb
Q2FsbFdpdGg9RG9jdW1lbnRdIHZvaWQgYWRkTW9kdWxlKFVTVlN0cmluZyBtb2R1bGVVUkwvKiwg
b3B0aW9uYWwgV29ya2xldE9wdGlvbnMgb3B0aW9ucyovKTsKK307CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODk1MDZi
OWUzOTMxMzRjZWMzMzYzNmNhNjZmMWM1ZGMyNGI4ODE4MgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcApAQCAtMCwwICsx
LDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldvcmts
ZXRDb25zb2xlQ2xpZW50LmgiCisKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKworI2lu
Y2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0NvbnNvbGVNZXNzYWdlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0QXJn
dW1lbnRzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0Q2FsbFN0YWNrLmg+Cisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCitXb3JrbGV0Q29u
c29sZUNsaWVudDo6V29ya2xldENvbnNvbGVDbGllbnQoV29ya2xldEdsb2JhbFNjb3BlJiB3b3Jr
bGV0R2xvYmFsU2NvcGUpCisgICAgOiBtX3dvcmtsZXRHbG9iYWxTY29wZSh3b3JrbGV0R2xvYmFs
U2NvcGUpCit7Cit9CisKK1dvcmtsZXRDb25zb2xlQ2xpZW50Ojp+V29ya2xldENvbnNvbGVDbGll
bnQoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRo
VHlwZUFuZExldmVsKE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgSlNDOjpF
eGVjU3RhdGUqIGV4ZWMsIFJlZjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4mJiBhcmd1bWVu
dHMpCit7CisgICAgU3RyaW5nIG1lc3NhZ2VUZXh0OworICAgIGFyZ3VtZW50cy0+Z2V0Rmlyc3RB
cmd1bWVudEFzU3RyaW5nKG1lc3NhZ2VUZXh0KTsKKyAgICBhdXRvIG1lc3NhZ2UgPSBzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNv
bGVBUEksIHR5cGUsIGxldmVsLCBtZXNzYWdlVGV4dCwgV1RGTW92ZShhcmd1bWVudHMpLCBleGVj
KTsKKyAgICBtX3dvcmtsZXRHbG9iYWxTY29wZS5hZGRDb25zb2xlTWVzc2FnZShXVEZNb3ZlKG1l
c3NhZ2UpKTsKK30KKwordm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6Y291bnQoSlNDOjpFeGVj
U3RhdGUqLCBSZWY8U2NyaXB0QXJndW1lbnRzPiYmKSB7IH0KKwordm9pZCBXb3JrbGV0Q29uc29s
ZUNsaWVudDo6dGltZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpIHsgfQordm9pZCBX
b3JrbGV0Q29uc29sZUNsaWVudDo6dGltZUVuZChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmlu
ZyYpIHsgfQorCit2b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50Ojpwcm9maWxlKEpTQzo6RXhlY1N0
YXRlKiwgY29uc3QgU3RyaW5nJikgeyB9Cit2b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50Ojpwcm9m
aWxlRW5kKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJikgeyB9CisKK3ZvaWQgV29ya2xl
dENvbnNvbGVDbGllbnQ6OnRha2VIZWFwU25hcHNob3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBT
dHJpbmcmKSB7IH0KK3ZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6OnRpbWVTdGFtcChKU0M6OkV4
ZWNTdGF0ZSosIFJlZjxTY3JpcHRBcmd1bWVudHM+JiYpIHsgfQorCit2b2lkIFdvcmtsZXRDb25z
b2xlQ2xpZW50OjpyZWNvcmQoSlNDOjpFeGVjU3RhdGUqLCBSZWY8U2NyaXB0QXJndW1lbnRzPiYm
KSB7IH0KK3ZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6OnJlY29yZEVuZChKU0M6OkV4ZWNTdGF0
ZSosIFJlZjxTY3JpcHRBcmd1bWVudHM+JiYpIHsgfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25z
b2xlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVu
dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjUyMGY3NTk2MGZmOGI3NjhlMWM2YzQwZjVkMTkyOWViMDg2NDIzOWIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0Q29uc29s
ZUNsaWVudC5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorCisjaW5jbHVkZSAiV29ya2xldEdsb2JhbFNj
b3BlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29sZUNsaWVudC5oPgorI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgRXhlY1N0YXRlOwor
fQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdvcmtsZXRDb25zb2xlQ2xpZW50IGZp
bmFsIDogcHVibGljIEpTQzo6Q29uc29sZUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQgV29ya2xldENvbnNvbGVDbGllbnQoV29ya2xl
dEdsb2JhbFNjb3BlJik7CisgICAgdmlydHVhbCB+V29ya2xldENvbnNvbGVDbGllbnQoKTsKKwor
cHJpdmF0ZToKKyAgICB2b2lkIG1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKE1lc3NhZ2VUeXBlLCBN
ZXNzYWdlTGV2ZWwsIEpTQzo6RXhlY1N0YXRlKiwgUmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1l
bnRzPiYmKSBmaW5hbDsKKyAgICB2b2lkIGNvdW50KEpTQzo6RXhlY1N0YXRlKiwgUmVmPEluc3Bl
Y3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmKSBmaW5hbDsKKyAgICB2b2lkIHByb2ZpbGUoSlNDOjpF
eGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHRpdGxlKSBmaW5hbDsKKyAgICB2b2lkIHByb2ZpbGVF
bmQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHRpdGxlKSBmaW5hbDsKKyAgICB2b2lk
IHRha2VIZWFwU25hcHNob3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHRpdGxlKSBm
aW5hbDsKKyAgICB2b2lkIHRpbWUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHRpdGxl
KSBmaW5hbDsKKyAgICB2b2lkIHRpbWVFbmQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcm
IHRpdGxlKSBmaW5hbDsKKyAgICB2b2lkIHRpbWVTdGFtcChKU0M6OkV4ZWNTdGF0ZSosIFJlZjxJ
bnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4mJikgZmluYWw7CisgICAgdm9pZCByZWNvcmQoSlND
OjpFeGVjU3RhdGUqLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYpIGZpbmFsOwor
ICAgIHZvaWQgcmVjb3JkRW5kKEpTQzo6RXhlY1N0YXRlKiwgUmVmPEluc3BlY3Rvcjo6U2NyaXB0
QXJndW1lbnRzPiYmKSBmaW5hbDsKKworICAgIFdvcmtsZXRHbG9iYWxTY29wZSYgbV93b3JrbGV0
R2xvYmFsU2NvcGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmEwZDMwMDlkYTkzYWM0M2IxNmUwZGQ0MGQwNGNmODJlMDBiMjQwYjUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBAIC0w
LDAgKzEsMTQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXb3JrbGV0R2xvYmFsU2NvcGUu
aCIKKworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorCisjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5oIgorI2luY2x1ZGUgIkpTV29ya2xldEdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiUGFnZUNv
bnNvbGVDbGllbnQuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpblBvbGljeS5oIgorI2luY2x1
ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAiV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIKKwor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0V4Y2VwdGlvbi5oPgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0lkZW50aWZpZXJzRmFjdG9yeS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
TG9jay5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdENhbGxTdGFjay5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCitXb3JrbGV0
R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxTY29wZShEb2N1bWVudCYgZG9jdW1lbnQsIFNjcmlw
dFNvdXJjZUNvZGUmJiBjb2RlKQorICAgIDogbV9kb2N1bWVudChtYWtlV2Vha1B0cihkb2N1bWVu
dCkpCisgICAgLCBtX3Nlc3Npb25JRChtX2RvY3VtZW50LT5zZXNzaW9uSUQoKSkKKyAgICAsIG1f
c2NyaXB0KG1ha2VVbmlxdWVSZWY8V29ya2xldFNjcmlwdENvbnRyb2xsZXI+KHRoaXMpKQorICAg
ICwgbV90b3BPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZVVuaXF1ZSgpKQorICAgICwgbV9p
ZGVudGlmaWVyKG1ha2VTdHJpbmcoIldvcmtsZXRHbG9iYWxTY29wZToiX3MsIEluc3BlY3Rvcjo6
SWRlbnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlmaWVyKCkpKQorICAgICwgbV9ldmVudFF1
ZXVlKCp0aGlzKQorICAgICwgbV9jb2RlKFdURk1vdmUoY29kZSkpCit7CisgICAgYXV0byogZnJh
bWUgPSBkb2N1bWVudC5mcmFtZSgpOworICAgIG1fanNSdW50aW1lRmxhZ3MgPSBmcmFtZSA/IGZy
YW1lLT5zZXR0aW5ncygpLmphdmFTY3JpcHRSdW50aW1lRmxhZ3MoKSA6IEpTQzo6UnVudGltZUZs
YWdzKCk7CisgICAgQVNTRVJUKGRvY3VtZW50LnBhZ2UoKSk7CisKKyAgICBzZXRTZWN1cml0eU9y
aWdpblBvbGljeShTZWN1cml0eU9yaWdpblBvbGljeTo6Y3JlYXRlKG1fdG9wT3JpZ2luLmNvcHlS
ZWYoKSkpOworICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShzdGQ6Om1ha2VfdW5pcXVlPENv
bnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgY29kZS51cmwoKSB9LCAqdGhpcykpOworfQorCitX
b3JrbGV0R2xvYmFsU2NvcGU6On5Xb3JrbGV0R2xvYmFsU2NvcGUoKQoreworICAgIHJlbW92ZUZy
b21Db250ZXh0c01hcCgpOworICAgIG1fc2NyaXB0LT53b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVy
KCktPnNldENvbnNvbGVDbGllbnQobnVsbHB0cik7Cit9CisKK1N0cmluZyBXb3JrbGV0R2xvYmFs
U2NvcGU6Om9yaWdpbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdG9wT3JpZ2luLT50b1N0cmlu
ZygpOworfQorCitTdHJpbmcgV29ya2xldEdsb2JhbFNjb3BlOjp1c2VyQWdlbnQoY29uc3QgVVJM
JiB1cmwpIGNvbnN0Cit7CisgICAgaWYgKCFtX2RvY3VtZW50KQorICAgICAgICByZXR1cm4gIiI7
CisgICAgcmV0dXJuIG1fZG9jdW1lbnQtPnVzZXJBZ2VudCh1cmwpOworfQorCit2b2lkIFdvcmts
ZXRHbG9iYWxTY29wZTo6ZXZhbHVhdGUoKQoreworICAgIG1fc2NyaXB0LT5ldmFsdWF0ZShtX2Nv
ZGUpOworfQorCitib29sIFdvcmtsZXRHbG9iYWxTY29wZTo6aXNKU0V4ZWN1dGlvbkZvcmJpZGRl
bigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2NyaXB0LT5pc0V4ZWN1dGlvbkZvcmJpZGRlbigp
OworfQorCit2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6ZGlzYWJsZUV2YWwoY29uc3QgU3RyaW5n
JiBlcnJvck1lc3NhZ2UpCit7CisgICAgbV9zY3JpcHQtPmRpc2FibGVFdmFsKGVycm9yTWVzc2Fn
ZSk7Cit9CisKK3ZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpkaXNhYmxlV2ViQXNzZW1ibHkoY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCit7CisgICAgbV9zY3JpcHQtPmRpc2FibGVXZWJBc3Nl
bWJseShlcnJvck1lc3NhZ2UpOworfQorCitVUkwgV29ya2xldEdsb2JhbFNjb3BlOjpjb21wbGV0
ZVVSTChjb25zdCBTdHJpbmcmIHVybCkgY29uc3QKK3sKKyAgICBpZiAodXJsLmlzTnVsbCgpKQor
ICAgICAgICByZXR1cm4gVVJMKCk7CisgICAgcmV0dXJuIFVSTChtX2NvZGUudXJsKCksIHVybCk7
Cit9CisKK3ZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpsb2dFeGNlcHRpb25Ub0NvbnNvbGUoY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBpbnQgbGlu
ZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4mJiBzdGFj
aykKK3sKKyAgICBpZiAoIW1fZG9jdW1lbnQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2RvY3Vt
ZW50LT5sb2dFeGNlcHRpb25Ub0NvbnNvbGUoZXJyb3JNZXNzYWdlLCBzb3VyY2VVUkwsIGxpbmVO
dW1iZXIsIGNvbHVtbk51bWJlciwgV1RGTW92ZShzdGFjaykpOworfQorCit2b2lkIFdvcmtsZXRH
bG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6
Q29uc29sZU1lc3NhZ2U+JiYgbWVzc2FnZSkKK3sKKyAgICBpZiAoIW1fZG9jdW1lbnQpCisgICAg
ICAgIHJldHVybjsKKyAgICBtX2RvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShXVEZNb3ZlKG1l
c3NhZ2UpKTsKK30KKwordm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdl
KE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKK3sKKyAgICBpZiAoIW1f
ZG9jdW1lbnQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2RvY3VtZW50LT5hZGRDb25zb2xlTWVz
c2FnZShzb3VyY2UsIGxldmVsLCBtZXNzYWdlLCByZXF1ZXN0SWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgV29ya2xldEdsb2JhbFNjb3BlOjphZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBN
ZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZVRleHQsIGNvbnN0IFN0cmlu
ZyYgc291cmNlVVJMLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIs
IFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+JiYgY2FsbFN0YWNrLCBKU0M6OkV4ZWNTdGF0ZSogc3Rh
dGUsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCit7CisgICAgaWYgKCFtX2RvY3Vt
ZW50KQorICAgICAgICByZXR1cm47CisgICAgbV9kb2N1bWVudC0+YWRkTWVzc2FnZShzb3VyY2Us
IGxldmVsLCBtZXNzYWdlVGV4dCwgc291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIs
IFdURk1vdmUoY2FsbFN0YWNrKSwgc3RhdGUsIHJlcXVlc3RJZGVudGlmaWVyKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dv
cmtsZXRHbG9iYWxTY29wZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYwMTU2NGQ4NjdjMTBhYWNmOWNmMGMxZGY2
OTA2NWNmZWYyZDc1YzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0
cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaApAQCAtMCwwICsxLDEzOSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShDU1NfUEFJTlRJTkdfQVBJKQorCisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNs
dWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIK
KyNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCisjaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVk
ZSAiV29ya2VyRXZlbnRRdWV1ZS5oIgorCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29s
ZU1lc3NhZ2UuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SdW50aW1lRmxhZ3MuaD4KKyNp
bmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2lu
Y2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFdvcmts
ZXRTY3JpcHRDb250cm9sbGVyOworY2xhc3MgU2NyaXB0U291cmNlQ29kZTsKKworY2xhc3MgV29y
a2xldEdsb2JhbFNjb3BlIDogcHVibGljIFJlZkNvdW50ZWQ8V29ya2xldEdsb2JhbFNjb3BlPiwg
cHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxp
bmVEYXRhIHsKK3B1YmxpYzoKKyAgICB+V29ya2xldEdsb2JhbFNjb3BlKCk7CisKKyAgICB2aXJ0
dWFsIGJvb2wgaXNQYWludFdvcmtsZXRHbG9iYWxTY29wZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CisKKyAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29kZS51
cmwoKTsgfQorICAgIFN0cmluZyBvcmlnaW4oKSBjb25zdCBmaW5hbDsKKyAgICBjb25zdCBTdHJp
bmcmIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKworICAgIHZv
aWQgZXZhbHVhdGUoKTsKKworICAgIHVzaW5nIFJlZkNvdW50ZWQ6OnJlZjsKKyAgICB1c2luZyBS
ZWZDb3VudGVkOjpkZXJlZjsKKworICAgIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyJiBzY3JpcHQo
KSB7IHJldHVybiBtX3NjcmlwdC5nZXQoKTsgfQorCisgICAgdm9pZCBhZGRDb25zb2xlTWVzc2Fn
ZShzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4mJikgZmluYWw7CisK
KyAgICBib29sIGlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSBjb25zdCBmaW5hbDsKKyAgICBTZWN1
cml0eU9yaWdpbiYgdG9wT3JpZ2luKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV90b3BPcmlnaW4u
Z2V0KCk7IH0KKworICAgIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlcigpIGZpbmFsIHsg
cmV0dXJuIG51bGxwdHI7IH0KKworICAgIGJvb2wgaXNDb250ZXh0VGhyZWFkKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNTZWN1cmVDb250ZXh0KCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIEpTQzo6UnVudGltZUZsYWdzIGpzUnVudGltZUZs
YWdzKCkgY29uc3QgeyByZXR1cm4gbV9qc1J1bnRpbWVGbGFnczsgfQorCitwcm90ZWN0ZWQ6Cisg
ICAgV29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50JiwgU2NyaXB0U291cmNlQ29kZSYmKTsKKwor
ICAgIERvY3VtZW50KiByZXNwb25zYWJsZURvY3VtZW50KCkgeyByZXR1cm4gbV9kb2N1bWVudC5n
ZXQoKTsgfQorICAgIGNvbnN0IERvY3VtZW50KiByZXNwb25zYWJsZURvY3VtZW50KCkgY29uc3Qg
eyByZXR1cm4gbV9kb2N1bWVudC5nZXQoKTsgfQorCitwcml2YXRlOgorI2lmIEVOQUJMRShJTkRF
WEVEX0RBVEFCQVNFKQorICAgIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiBpZGJDb25u
ZWN0aW9uUHJveHkoKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gbnVsbHB0
cjsgfQorI2VuZGlmCisKKyAgICB2b2lkIHBvc3RUYXNrKFRhc2smJikgZmluYWwgeyBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfQorCisgICAgdm9pZCByZWZTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkg
ZmluYWwgeyByZWYoKTsgfQorICAgIHZvaWQgZGVyZWZTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkg
ZmluYWwgeyBkZXJlZigpOyB9CisKKyAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBy
ZWYoKTsgfQorICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQor
CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIGNvbnN0X2Nhc3Q8V29ya2xldEdsb2JhbFNjb3BlKj4odGhpcyk7
IH0KKyAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIFdvcmtsZXRHbG9iYWxTY29wZUV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlw
ZTsgfQorCisgICAgYm9vbCBpc1dvcmtsZXRHbG9iYWxTY29wZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIHRydWU7IH0KKworICAgIHZvaWQgbG9nRXhjZXB0aW9uVG9Db25zb2xlKGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYWdlLCBjb25zdCBTdHJpbmcmLCBpbnQsIGludCwgUmVmUHRyPEluc3BlY3Rv
cjo6U2NyaXB0Q2FsbFN0YWNrPiYmKSBmaW5hbDsKKyAgICB2b2lkIGFkZE1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCB1bnNp
Z25lZCwgdW5zaWduZWQsIFJlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFjaz4mJiwgSlND
OjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBsb25nKSBmaW5hbDsKKyAgICB2b2lkIGFkZENvbnNvbGVN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiwgdW5zaWdu
ZWQgbG9uZykgZmluYWw7CisKKyAgICBFdmVudFRhcmdldCogZXJyb3JFdmVudFRhcmdldCgpIGZp
bmFsIHsgcmV0dXJuIHRoaXM7IH0KKyAgICBFdmVudFF1ZXVlJiBldmVudFF1ZXVlKCkgY29uc3Qg
ZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIG1fZXZlbnRRdWV1ZTsgfQorCisj
aWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCisgICAgYm9vbCB3cmFwQ3J5cHRvS2V5KGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYsIFZlY3Rvcjx1aW50OF90PiYpIGZpbmFsIHsgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCB1bndyYXBDcnlwdG9LZXko
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgVmVjdG9yPHVpbnQ4X3Q+JikgZmluYWwgeyBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KKyNlbmRpZgorICAgIFVSTCBj
b21wbGV0ZVVSTChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKKyAgICBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQorICAgIFN0
cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJikgY29uc3QgZmluYWw7CisgICAgdm9pZCBkaXNhYmxl
RXZhbChjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIGRpc2FibGVXZWJBc3NlbWJseShj
b25zdCBTdHJpbmcmKSBmaW5hbDsKKworICAgIFdlYWtQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7
CisKKyAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKKyAgICBVbmlxdWVSZWY8V29ya2xl
dFNjcmlwdENvbnRyb2xsZXI+IG1fc2NyaXB0OworCisgICAgUmVmPFNlY3VyaXR5T3JpZ2luPiBt
X3RvcE9yaWdpbjsKKyAgICBTdHJpbmcgbV9pZGVudGlmaWVyOworCisgICAgLy8gRklYTUU6IFRo
aXMgaXMgbm90IGltcGxlbWVudGVkIHByb3Blcmx5LCBpdCBqdXN0IHNhdGlzZmllcyB0aGUgY29t
cGlsZXIuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
MTEzNgorICAgIG11dGFibGUgV29ya2VyRXZlbnRRdWV1ZSBtX2V2ZW50UXVldWU7CisKKyAgICBK
U0M6OlJ1bnRpbWVGbGFncyBtX2pzUnVudGltZUZsYWdzOworICAgIFNjcmlwdFNvdXJjZUNvZGUg
bV9jb2RlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0JFR0lOKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZSkKK3N0YXRpYyBib29sIGlz
VHlwZShjb25zdCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7IHJl
dHVybiBjb250ZXh0LmlzV29ya2xldEdsb2JhbFNjb3BlKCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfRU5EKCkKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMv
V29ya2xldEdsb2JhbFNjb3BlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRH
bG9iYWxTY29wZS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDc1OWYwY2UxZDE2Zjg2OTE4NjAxMjc3NmYwZGIx
NmI2MWJhYTQ3OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dv
cmtsZXRHbG9iYWxTY29wZS5pZGwKQEAgLTAsMCArMSwzNyBAQAorLyoKKyogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisq
LworCitbCisgICAgQ3VzdG9tUHJveHlUb0pTT2JqZWN0LAorICAgIEV4cG9zZWQ9V29ya2xldCwK
KyAgICBFbmFibGVkQXRSdW50aW1lPUNTU1BhaW50aW5nQVBJLAorICAgIENvbmRpdGlvbmFsPUNT
U19QQUlOVElOR19BUEksCisgICAgSlNMZWdhY3lQYXJlbnQ9SlNXb3JrbGV0R2xvYmFsU2NvcGVC
YXNlLAorICAgIEltcGxpY2l0VGhpcywKKyAgICBJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09i
amVjdCwKKyAgICBJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdE9uUHJvdG90eXBlLAor
ICAgIEdsb2JhbD1Xb3JrbGV0LAorXSBpbnRlcmZhY2UgV29ya2xldEdsb2JhbFNjb3BlIDogRXZl
bnRUYXJnZXQgeworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmts
ZXRTY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRT
Y3JpcHRDb250cm9sbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNTVkN2YxMTY4ZWViNWFjZjA0MmZmMTRi
ZmM5OWM3M2RjY2I4ZjM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xl
dHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0wLDAgKzEsMTg3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCisKKyNpZiBFTkFCTEUoQ1NT
X1BBSU5USU5HX0FQSSkKKworI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIkpT
RXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJKU0V4ZWNTdGF0ZS5oIgorI2luY2x1ZGUgIkpTUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCisj
aW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgorI2luY2x1ZGUgIldvcmtsZXRDb25zb2xl
Q2xpZW50LmgiCisKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db21wbGV0aW9uLmg+CisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvRXhjZXB0aW9uLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvRXhjZXB0aW9uSGVscGVycy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dDQWN0aXZp
dHlDYWxsYmFjay5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1Byb21pc2VEZWZlcnJlZFRpbWVyLmg+CisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvU3Ryb25nSW5saW5lcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2lu
ZyBuYW1lc3BhY2UgSlNDOworCitXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6V29ya2xldFNjcmlw
dENvbnRyb2xsZXIoV29ya2xldEdsb2JhbFNjb3BlKiB3b3JrbGV0R2xvYmFsU2NvcGUpCisgICAg
OiBtX3ZtKFZNOjpjcmVhdGUoKSkKKyAgICAsIG1fd29ya2xldEdsb2JhbFNjb3BlKHdvcmtsZXRH
bG9iYWxTY29wZSkKKyAgICAsIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcigqbV92bSkKK3sK
KyAgICBtX3ZtLT5oZWFwLmFjcXVpcmVBY2Nlc3MoKTsgLy8gSXQncyBub3QgY2xlYXIgdGhhdCB3
ZSBoYXZlIGdvb2QgZGlzY2lwbGluZSBmb3IgaGVhcCBhY2Nlc3MsIHNvIHR1cm4gaXQgb24gcGVy
bWFuZW50bHkuCisgICAgSlNWTUNsaWVudERhdGE6OmluaXROb3JtYWxXb3JsZChtX3ZtLmdldCgp
KTsKK30KKworV29ya2xldFNjcmlwdENvbnRyb2xsZXI6On5Xb3JrbGV0U2NyaXB0Q29udHJvbGxl
cigpCit7CisgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0oKSk7CisgICAgbV93b3JrbGV0R2xvYmFs
U2NvcGVXcmFwcGVyLmNsZWFyKCk7CisgICAgbV92bSA9IG51bGxwdHI7CisgICAgaWYgKG1fd29y
a2xldEdsb2JhbFNjb3BlV3JhcHBlcikgeworICAgICAgICBtX3dvcmtsZXRHbG9iYWxTY29wZVdy
YXBwZXItPmNsZWFyRE9NR3VhcmRlZE9iamVjdHMoKTsKKyAgICAgICAgbV93b3JrbGV0R2xvYmFs
U2NvcGVXcmFwcGVyLT5zZXRDb25zb2xlQ2xpZW50KG51bGxwdHIpOworICAgICAgICBtX2NvbnNv
bGVDbGllbnQgPSBudWxscHRyOworICAgIH0KK30KKwordm9pZCBXb3JrbGV0U2NyaXB0Q29udHJv
bGxlcjo6Zm9yYmlkRXhlY3V0aW9uKCkKK3sKKyAgICBBU1NFUlQobV93b3JrbGV0R2xvYmFsU2Nv
cGUtPmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBtX2V4ZWN1dGlvbkZvcmJpZGRlbiA9IHRydWU7
Cit9CisKK2Jvb2wgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmlzRXhlY3V0aW9uRm9yYmlkZGVu
KCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV93b3JrbGV0R2xvYmFsU2NvcGUtPmlzQ29udGV4dFRo
cmVhZCgpKTsKKyAgICByZXR1cm4gbV9leGVjdXRpb25Gb3JiaWRkZW47Cit9CisKK3ZvaWQgV29y
a2xldFNjcmlwdENvbnRyb2xsZXI6OmRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlKQoreworICAgIGluaXRTY3JpcHRJZk5lZWRlZCgpOworICAgIEpTTG9ja0hvbGRlciBsb2Nr
IHsgdm0oKSB9OworCisgICAgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5zZXRFdmFsRW5h
YmxlZChmYWxzZSwgZXJyb3JNZXNzYWdlKTsKK30KKwordm9pZCBXb3JrbGV0U2NyaXB0Q29udHJv
bGxlcjo6ZGlzYWJsZVdlYkFzc2VtYmx5KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQorewor
ICAgIGluaXRTY3JpcHRJZk5lZWRlZCgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrIHsgdm0oKSB9
OworCisgICAgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5zZXRXZWJBc3NlbWJseUVuYWJs
ZWQoZmFsc2UsIGVycm9yTWVzc2FnZSk7Cit9CisKKwordGVtcGxhdGU8dHlwZW5hbWUgSlNHbG9i
YWxTY29wZVByb3RvdHlwZSwgdHlwZW5hbWUgSlNHbG9iYWxTY29wZSwgdHlwZW5hbWUgR2xvYmFs
U2NvcGU+Cit2b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0V2l0aFN1YmNs
YXNzKCkKK3sKKyAgICBBU1NFUlQoIW1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcik7CisKKyAg
ICBKU0xvY2tIb2xkZXIgbG9jayB7IHZtKCkgfTsKKworICAgIC8vIEV4cGxpY2l0bHkgcHJvdGVj
dCB0aGUgZ2xvYmFsIG9iamVjdCdzIHByb3RvdHlwZSBzbyBpdCBpc24ndCBjb2xsZWN0ZWQKKyAg
ICAvLyB3aGVuIHdlIGFsbG9jYXRlIHRoZSBnbG9iYWwgb2JqZWN0LiAoT25jZSB0aGUgZ2xvYmFs
IG9iamVjdCBpcyBmdWxseQorICAgIC8vIGNvbnN0cnVjdGVkLCBpdCBjYW4gbWFyayBpdHMgb3du
IHByb3RvdHlwZS4pCisgICAgU3RydWN0dXJlKiBjb250ZXh0UHJvdG90eXBlU3RydWN0dXJlID0g
SlNHbG9iYWxTY29wZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKCptX3ZtLCBudWxscHRyLCBq
c051bGwoKSk7CisgICAgYXV0byogY29udGV4dFByb3RvdHlwZSA9IEpTR2xvYmFsU2NvcGVQcm90
b3R5cGU6OmNyZWF0ZSgqbV92bSwgbnVsbHB0ciwgY29udGV4dFByb3RvdHlwZVN0cnVjdHVyZSk7
CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU0dsb2JhbFNjb3BlOjpjcmVhdGVTdHJ1Y3R1
cmUoKm1fdm0sIG51bGxwdHIsIGNvbnRleHRQcm90b3R5cGUpOworICAgIGF1dG8qIHByb3h5U3Ry
dWN0dXJlID0gSlNQcm94eTo6Y3JlYXRlU3RydWN0dXJlKCptX3ZtLCBudWxscHRyLCBqc051bGwo
KSwgUHVyZUZvcndhcmRpbmdQcm94eVR5cGUpOworICAgIGF1dG8qIHByb3h5ID0gSlNQcm94eTo6
Y3JlYXRlKCptX3ZtLCBwcm94eVN0cnVjdHVyZSk7CisKKyAgICBtX3dvcmtsZXRHbG9iYWxTY29w
ZVdyYXBwZXIuc2V0KCptX3ZtLCBKU0dsb2JhbFNjb3BlOjpjcmVhdGUoKm1fdm0sIHN0cnVjdHVy
ZSwgc3RhdGljX2Nhc3Q8R2xvYmFsU2NvcGUmPigqbV93b3JrbGV0R2xvYmFsU2NvcGUpLCBwcm94
eSkpOworICAgIGNvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUtPnNldEdsb2JhbE9iamVjdCgqbV92
bSwgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKTsKKyAgICBBU1NFUlQoc3RydWN0
dXJlLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpOworICAg
IEFTU0VSVChtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPnN0cnVjdHVyZSgqbV92bSktPmds
b2JhbE9iamVjdCgpID09IG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcik7CisgICAgY29udGV4
dFByb3RvdHlwZS0+c3RydWN0dXJlKCptX3ZtKS0+c2V0R2xvYmFsT2JqZWN0KCptX3ZtLCBtX3dv
cmtsZXRHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpOworICAgIGNvbnRleHRQcm90b3R5cGUtPnN0
cnVjdHVyZSgqbV92bSktPnNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9uKCptX3ZtLCBKU0ds
b2JhbFNjb3BlOjpwcm90b3R5cGUoKm1fdm0sICptX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIu
Z2V0KCkpKTsKKworICAgIHByb3h5LT5zZXRUYXJnZXQoKm1fdm0sIG1fd29ya2xldEdsb2JhbFNj
b3BlV3JhcHBlci5nZXQoKSk7CisgICAgcHJveHktPnN0cnVjdHVyZSgqbV92bSktPnNldEdsb2Jh
bE9iamVjdCgqbV92bSwgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKTsKKworICAg
IEFTU0VSVChtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbE9iamVjdCgpID09IG1f
d29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcik7CisgICAgQVNTRVJUKGFzT2JqZWN0KG1fd29ya2xl
dEdsb2JhbFNjb3BlV3JhcHBlci0+Z2V0UHJvdG90eXBlRGlyZWN0KCptX3ZtKSktPmdsb2JhbE9i
amVjdCgpID09IG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcik7CisKKyAgICBtX2NvbnNvbGVD
bGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtsZXRDb25zb2xlQ2xpZW50PigqbV93b3JrbGV0
R2xvYmFsU2NvcGUpOworICAgIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+c2V0Q29uc29s
ZUNsaWVudChtX2NvbnNvbGVDbGllbnQuZ2V0KCkpOworfQorCit2b2lkIFdvcmtsZXRTY3JpcHRD
b250cm9sbGVyOjppbml0U2NyaXB0KCkKK3sKKyAgICBpZiAoaXM8UGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGU+KG1fd29ya2xldEdsb2JhbFNjb3BlKSkgeworICAgICAgICBpbml0U2NyaXB0V2l0aFN1
YmNsYXNzPEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVQcm90b3R5cGUsIEpTUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUsIFBhaW50V29ya2xldEdsb2JhbFNjb3BlPigpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgV29ya2xldFNj
cmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNv
ZGUsIFN0cmluZyogcmV0dXJuZWRFeGNlcHRpb25NZXNzYWdlKQoreworICAgIGlmIChpc0V4ZWN1
dGlvbkZvcmJpZGRlbigpKQorICAgICAgICByZXR1cm47CisKKyAgICBOYWtlZFB0cjxKU0M6OkV4
Y2VwdGlvbj4gZXhjZXB0aW9uOworICAgIGV2YWx1YXRlKHNvdXJjZUNvZGUsIGV4Y2VwdGlvbiwg
cmV0dXJuZWRFeGNlcHRpb25NZXNzYWdlKTsKKyAgICBpZiAoZXhjZXB0aW9uKSB7CisgICAgICAg
IEpTTG9ja0hvbGRlciBsb2NrKHZtKCkpOworICAgICAgICByZXBvcnRFeGNlcHRpb24obV93b3Jr
bGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxFeGVjKCksIGV4Y2VwdGlvbik7CisgICAgfQor
fQorCisvLyBJbXBvcnRhbnQ6IFRoZSBjYWxsZXIgb2YgdGhpcyBmdW5jdGlvbiBtdXN0IHZlcmlm
eSB0aGF0IHRoZSByZXR1cm5lZCBleGNlcHRpb24gbWVzc2FnZSBkb2VzIG5vdCB2aW9sYXRlIENP
UlMgaWYgaXQgaXMgZ29pbmcgdG8gYmUgcGFzc2VkIGJhY2sgdG8gSlMuCit2b2lkIFdvcmtsZXRT
Y3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VD
b2RlLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uLCBTdHJpbmcq
IHJldHVybmVkRXhjZXB0aW9uTWVzc2FnZSkKK3sKKyAgICBpZiAoaXNFeGVjdXRpb25Gb3JiaWRk
ZW4oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW5pdFNjcmlwdElmTmVlZGVkKCk7CisKKyAg
ICBhdXRvJiBzdGF0ZSA9ICptX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbEV4ZWMo
KTsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrIHsgdm0g
fTsKKworICAgIEpTRXhlY1N0YXRlOjpwcm9maWxlZEV2YWx1YXRlKCZzdGF0ZSwgSlNDOjpQcm9m
aWxpbmdSZWFzb246Ok90aGVyLCBzb3VyY2VDb2RlLmpzU291cmNlQ29kZSgpLCBtX3dvcmtsZXRH
bG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbFRoaXMoKSwgcmV0dXJuZWRFeGNlcHRpb24pOworCisg
ICAgaWYgKHJldHVybmVkRXhjZXB0aW9uICYmIHJldHVybmVkRXhjZXB0aW9uTWVzc2FnZSkgewor
ICAgICAgICAvLyBUaGlzIEZJWE1FIGlzIGZyb20gV29ya2VyU2NyaXB0Q29udHJvbGxlci4KKyAg
ICAgICAgLy8gRklYTUU6IEl0J3Mgbm90IGdyZWF0IHRoYXQgdGhpcyBjYW4gcnVuIGFyYml0cmFy
eSBjb2RlIHRvIHN0cmluZy1pZnkgdGhlIHZhbHVlIG9mIHRoZSBleGNlcHRpb24uCisgICAgICAg
IC8vIERvIHdlIG5lZWQgdG8gZG8gYW55dGhpbmcgdG8gaGFuZGxlIHRoYXQgcHJvcGVybHksIGlm
IGl0LCBzYXksIHJhaXNlcyBhbm90aGVyIGV4Y2VwdGlvbj8KKyAgICAgICAgKnJldHVybmVkRXhj
ZXB0aW9uTWVzc2FnZSA9IHJldHVybmVkRXhjZXB0aW9uLT52YWx1ZSgpLnRvV1RGU3RyaW5nKCZz
dGF0ZSk7CisgICAgfQorfQorCit2b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpzZXRFeGNl
cHRpb24oSlNDOjpFeGNlcHRpb24qIGV4Y2VwdGlvbikKK3sKKyAgICBhdXRvKiBleGVjID0gbV93
b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxFeGVjKCk7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
dGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGV4Y2VwdGlvbik7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMv
V29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmts
ZXRTY3JpcHRDb250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmE1NzhiYmY5YWIzMjFjOTcwMTQ0ZWI4
ZmNlMzhiZWU1MzY1ZTg3ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmts
ZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKENTU19QQUlOVElOR19BUEkpCisKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9EZWJ1
Z2dlci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUnVuTG9vcFRpbWVyLmg+CisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
KyNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9OYWtlZFB0ci5oPgorCituYW1l
c3BhY2UgSlNDIHsKK2NsYXNzIFZNOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IEpTV29ya2xldEdsb2JhbFNjb3BlOworY2xhc3MgU2NyaXB0U291cmNlQ29kZTsKK2NsYXNzIFdv
cmtsZXRDb25zb2xlQ2xpZW50OworY2xhc3MgV29ya2xldEdsb2JhbFNjb3BlOworY2xhc3MgV29y
a2xldENvbnNvbGVDbGllbnQ7CisKK2NsYXNzIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyIHsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShXb3JrbGV0U2NyaXB0Q29udHJvbGxlcik7IFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyKFdv
cmtsZXRHbG9iYWxTY29wZSopOworICAgIH5Xb3JrbGV0U2NyaXB0Q29udHJvbGxlcigpOworCisg
ICAgSlNXb3JrbGV0R2xvYmFsU2NvcGUqIHdvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIoKQorICAg
IHsKKyAgICAgICAgaW5pdFNjcmlwdElmTmVlZGVkKCk7CisgICAgICAgIHJldHVybiBtX3dvcmts
ZXRHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCk7CisgICAgfQorCisgICAgdm9pZCBmb3JiaWRFeGVj
dXRpb24oKTsKKyAgICBib29sIGlzRXhlY3V0aW9uRm9yYmlkZGVuKCkgY29uc3Q7CisKKyAgICB2
b2lkIGRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKKyAgICB2b2lkIGRp
c2FibGVXZWJBc3NlbWJseShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CisKKyAgICB2b2lk
IGV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBTdHJpbmcqIHJldHVybmVkRXhjZXB0
aW9uTWVzc2FnZSA9IG51bGxwdHIpOworICAgIHZvaWQgZXZhbHVhdGUoY29uc3QgU2NyaXB0U291
cmNlQ29kZSYsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24sIFN0
cmluZyogcmV0dXJuZWRFeGNlcHRpb25NZXNzYWdlID0gbnVsbHB0cik7CisKKyAgICB2b2lkIHNl
dEV4Y2VwdGlvbihKU0M6OkV4Y2VwdGlvbiopOworCisgICAgSlNDOjpWTSYgdm0oKSB7IHJldHVy
biAqbV92bTsgfQorCitwcml2YXRlOgorICAgIHZvaWQgaW5pdFNjcmlwdElmTmVlZGVkKCkKKyAg
ICB7CisgICAgICAgIGlmICghbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKQorICAgICAgICAg
ICAgaW5pdFNjcmlwdCgpOworICAgIH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRTY3Jp
cHQoKTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEpTR2xvYmFsU2NvcGVQcm90b3R5cGUsIHR5
cGVuYW1lIEpTR2xvYmFsU2NvcGUsIHR5cGVuYW1lIEdsb2JhbFNjb3BlPgorICAgIHZvaWQgaW5p
dFNjcmlwdFdpdGhTdWJjbGFzcygpOworCisgICAgYm9vbCBtX2V4ZWN1dGlvbkZvcmJpZGRlbiB7
IGZhbHNlIH07CisgICAgUmVmUHRyPEpTQzo6Vk0+IG1fdm07CisgICAgV29ya2xldEdsb2JhbFNj
b3BlKiBtX3dvcmtsZXRHbG9iYWxTY29wZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V29ya2xldENv
bnNvbGVDbGllbnQ+IG1fY29uc29sZUNsaWVudDsKKyAgICBKU0M6OlN0cm9uZzxKU1dvcmtsZXRH
bG9iYWxTY29wZT4gbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggNmQzMTg2NmE4MGVmZjVhN2Q1OTRhMzZiZGYzODY0YjU5YTFiNzYx
OC4uOTcxM2IyNDk5ZmQ1NTQ3YjQ2MmIyNTVkNjI0OWRkN2VmMGFiMTU3ZiAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisy
MDE4LTExLTAyICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBZGQgbmV3IGdsb2JhbCBvYmplY3QgYW5kIHByZWxpbWluYXJ5IFdvcmtsZXRzIHN1
cHBvcnQgZm9yIENTUyBwYWludGluZyBhcGkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MDk3OQorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1
bWV6LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9iaW5kaW5ncy9tYWluLnB5OgorICAg
ICAgICAoQmluZGluZ3NUZXN0cy5nZW5lcmF0ZV9zdXBwbGVtZW50YWxfZGVwZW5kZW5jeSk6Cisg
ICAgICAgIChCaW5kaW5nc1Rlc3RzLm1haW4pOgorCiAyMDE4LTExLTAyICBMdWNhcyBGb3JzY2hs
ZXIgIDxsZm9yc2NobGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgV2luZG93cyAxMCBhcmNo
aXZlIGJvdHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmluZGluZ3MvbWFp
bi5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmluZGluZ3MvbWFpbi5weQppbmRleCAwNGNi
ZDg1MDU2NzNiZDVjNmYyZTlkNzA1MjA4MWYxMmQ2NmM0NGUyLi4yMDkzN2JlZDZkOWQ3YjhhNjIz
ODAzODhiN2VlYzVlYmFkNGI0OTMxIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2JpbmRpbmdzL21haW4ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iaW5kaW5ncy9t
YWluLnB5CkBAIC03MCw3ICs3MCw3IEBAIGNsYXNzIEJpbmRpbmdzVGVzdHM6CiAgICAgICAgICAg
ICBleGl0X2NvZGUgPSBlLmV4aXRfY29kZQogICAgICAgICByZXR1cm4gZXhpdF9jb2RlCiAKLSAg
ICBkZWYgZ2VuZXJhdGVfc3VwcGxlbWVudGFsX2RlcGVuZGVuY3koc2VsZiwgaW5wdXRfZGlyZWN0
b3J5LCBzdXBwbGVtZW50YWxfZGVwZW5kZW5jeV9maWxlLCB3aW5kb3dfY29uc3RydWN0b3JzX2Zp
bGUsIHdvcmtlcmdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlLCBkZWRpY2F0ZWR3b3JrZXJn
bG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSwgc2VydmljZXdvcmtlcmdsb2JhbHNjb3BlX2Nv
bnN0cnVjdG9yc19maWxlKToKKyAgICBkZWYgZ2VuZXJhdGVfc3VwcGxlbWVudGFsX2RlcGVuZGVu
Y3koc2VsZiwgaW5wdXRfZGlyZWN0b3J5LCBzdXBwbGVtZW50YWxfZGVwZW5kZW5jeV9maWxlLCB3
aW5kb3dfY29uc3RydWN0b3JzX2ZpbGUsIHdvcmtlcmdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19m
aWxlLCBkZWRpY2F0ZWR3b3JrZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSwgc2Vydmlj
ZXdvcmtlcmdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlLCB3b3JrbGV0Z2xvYmFsc2NvcGVf
Y29uc3RydWN0b3JzX2ZpbGUsIHBhaW50d29ya2xldGdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19m
aWxlKToKICAgICAgICAgaWRsX2ZpbGVzX2xpc3QgPSB0ZW1wZmlsZS5ta3N0ZW1wKCkKICAgICAg
ICAgZm9yIGlucHV0X2ZpbGUgaW4gb3MubGlzdGRpcihpbnB1dF9kaXJlY3RvcnkpOgogICAgICAg
ICAgICAgKG5hbWUsIGV4dGVuc2lvbikgPSBvcy5wYXRoLnNwbGl0ZXh0KGlucHV0X2ZpbGUpCkBA
IC04OCw3ICs4OCw5IEBAIGNsYXNzIEJpbmRpbmdzVGVzdHM6CiAgICAgICAgICAgICAgICAnLS13
aW5kb3dDb25zdHJ1Y3RvcnNGaWxlJywgd2luZG93X2NvbnN0cnVjdG9yc19maWxlLAogICAgICAg
ICAgICAgICAgJy0td29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlJywgd29ya2VyZ2xv
YmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGUsCiAgICAgICAgICAgICAgICAnLS1kZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUnLCBkZWRpY2F0ZWR3b3JrZXJnbG9iYWxz
Y29wZV9jb25zdHJ1Y3RvcnNfZmlsZSwKLSAgICAgICAgICAgICAgICctLXNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUnLCBzZXJ2aWNld29ya2VyZ2xvYmFsc2NvcGVfY29u
c3RydWN0b3JzX2ZpbGVdCisgICAgICAgICAgICAgICAnLS1zZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGVDb25zdHJ1Y3RvcnNGaWxlJywgc2VydmljZXdvcmtlcmdsb2JhbHNjb3BlX2NvbnN0cnVjdG9y
c19maWxlLAorICAgICAgICAgICAgICAgJy0td29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3Jz
RmlsZScsIHdvcmtsZXRnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSwKKyAgICAgICAgICAg
ICAgICctLXBhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZScsIHBhaW50d29y
a2xldGdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlXQogCiAgICAgICAgIGV4aXRfY29kZSA9
IDAKICAgICAgICAgdHJ5OgpAQCAtMTg1LDEzICsxODcsMTcgQEAgY2xhc3MgQmluZGluZ3NUZXN0
czoKICAgICAgICAgd29ya2VyZ2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGUgPSB0ZW1wZmls
ZS5ta3N0ZW1wKCkKICAgICAgICAgZGVkaWNhdGVkd29ya2VyZ2xvYmFsc2NvcGVfY29uc3RydWN0
b3JzX2ZpbGUgPSB0ZW1wZmlsZS5ta3N0ZW1wKCkKICAgICAgICAgc2VydmljZXdvcmtlcmdsb2Jh
bHNjb3BlX2NvbnN0cnVjdG9yc19maWxlID0gdGVtcGZpbGUubWtzdGVtcCgpCi0gICAgICAgIGlm
IHNlbGYuZ2VuZXJhdGVfc3VwcGxlbWVudGFsX2RlcGVuZGVuY3koaW5wdXRfZGlyZWN0b3J5LCBz
dXBwbGVtZW50YWxfZGVwZW5kZW5jeV9maWxlWzFdLCB3aW5kb3dfY29uc3RydWN0b3JzX2ZpbGVb
MV0sIHdvcmtlcmdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlWzFdLCBkZWRpY2F0ZWR3b3Jr
ZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZVsxXSwgc2VydmljZXdvcmtlcmdsb2JhbHNj
b3BlX2NvbnN0cnVjdG9yc19maWxlWzFdKToKKyAgICAgICAgd29ya2xldGdsb2JhbHNjb3BlX2Nv
bnN0cnVjdG9yc19maWxlID0gdGVtcGZpbGUubWtzdGVtcCgpCisgICAgICAgIHBhaW50d29ya2xl
dGdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlID0gdGVtcGZpbGUubWtzdGVtcCgpCisgICAg
ICAgIGlmIHNlbGYuZ2VuZXJhdGVfc3VwcGxlbWVudGFsX2RlcGVuZGVuY3koaW5wdXRfZGlyZWN0
b3J5LCBzdXBwbGVtZW50YWxfZGVwZW5kZW5jeV9maWxlWzFdLCB3aW5kb3dfY29uc3RydWN0b3Jz
X2ZpbGVbMV0sIHdvcmtlcmdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlWzFdLCBkZWRpY2F0
ZWR3b3JrZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZVsxXSwgc2VydmljZXdvcmtlcmds
b2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlWzFdLCB3b3JrbGV0Z2xvYmFsc2NvcGVfY29uc3Ry
dWN0b3JzX2ZpbGVbMV0sIHBhaW50d29ya2xldGdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxl
WzFdKToKICAgICAgICAgICAgIHByaW50KCdGYWlsZWQgdG8gZ2VuZXJhdGUgYSBzdXBwbGVtZW50
YWwgZGVwZW5kZW5jeSBmaWxlLicpCiAgICAgICAgICAgICBzZWxmLmNsb3NlX2FuZF9yZW1vdmUo
c3VwcGxlbWVudGFsX2RlcGVuZGVuY3lfZmlsZSkKICAgICAgICAgICAgIHNlbGYuY2xvc2VfYW5k
X3JlbW92ZSh3aW5kb3dfY29uc3RydWN0b3JzX2ZpbGUpCiAgICAgICAgICAgICBzZWxmLmNsb3Nl
X2FuZF9yZW1vdmUod29ya2VyZ2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGUpCiAgICAgICAg
ICAgICBzZWxmLmNsb3NlX2FuZF9yZW1vdmUoZGVkaWNhdGVkd29ya2VyZ2xvYmFsc2NvcGVfY29u
c3RydWN0b3JzX2ZpbGUpCiAgICAgICAgICAgICBzZWxmLmNsb3NlX2FuZF9yZW1vdmUoc2Vydmlj
ZXdvcmtlcmdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlKQorICAgICAgICAgICAgc2VsZi5j
bG9zZV9hbmRfcmVtb3ZlKHdvcmtsZXRnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSkKKyAg
ICAgICAgICAgIHNlbGYuY2xvc2VfYW5kX3JlbW92ZShwYWludHdvcmtsZXRnbG9iYWxzY29wZV9j
b25zdHJ1Y3RvcnNfZmlsZSkKICAgICAgICAgICAgIHJldHVybiAtMQogCiAgICAgICAgIGZvciBn
ZW5lcmF0b3IgaW4gc2VsZi5nZW5lcmF0b3JzOgpAQCAtMjA1LDYgKzIxMSw4IEBAIGNsYXNzIEJp
bmRpbmdzVGVzdHM6CiAgICAgICAgIHNlbGYuY2xvc2VfYW5kX3JlbW92ZSh3b3JrZXJnbG9iYWxz
Y29wZV9jb25zdHJ1Y3RvcnNfZmlsZSkKICAgICAgICAgc2VsZi5jbG9zZV9hbmRfcmVtb3ZlKGRl
ZGljYXRlZHdvcmtlcmdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlKQogICAgICAgICBzZWxm
LmNsb3NlX2FuZF9yZW1vdmUoc2VydmljZXdvcmtlcmdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19m
aWxlKQorICAgICAgICBzZWxmLmNsb3NlX2FuZF9yZW1vdmUod29ya2xldGdsb2JhbHNjb3BlX2Nv
bnN0cnVjdG9yc19maWxlKQorICAgICAgICBzZWxmLmNsb3NlX2FuZF9yZW1vdmUocGFpbnR3b3Jr
bGV0Z2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGUpCiAKICAgICAgICAgaWYgc2VsZi5qc29u
X2ZpbGVfbmFtZToKICAgICAgICAgICAgIGpzb25fZGF0YSA9IHsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0NDQ4MTVmMWJi
NThkZGUzNzExYThjNGNiMWJjMTk5OTE0N2U0ZTljLi5lM2RiNDgwNjEyZDVmYjRmZmU0Zjc4MWIy
YmZkOTZiZTExYzM3NjI1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTgtMTEtMDIgIEp1c3Rp
biBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBuZXcg
Z2xvYmFsIG9iamVjdCBhbmQgcHJlbGltaW5hcnkgV29ya2xldHMgc3VwcG9ydCBmb3IgQ1NTIHBh
aW50aW5nIGFwaQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTkwOTc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAg
QWRkIGEgbmV3IHRlc3QgaGFybmVzcyBmb3Igd29ya2xldCB0ZXN0cywgc2luY2UgdGhleSBkbyBu
b3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIGRvbS4KKworICAgICAgICAqIGZhc3QvY3NzLWN1c3RvbS1w
YWludC9iYXNpYy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50
L2Jhc2ljLmh0bWw6CisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L3JlZ2lzdGVyUGFp
bnRCaW5kaW5ncy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0
b20tcGFpbnQvcmVnaXN0ZXJQYWludEJpbmRpbmdzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVnaXN0ZXJQYWludEJpbmRpbmdzLmh0bWw6
CisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Jlc291cmNlcy90ZXN0aGFybmVzcy13
b3JrbGV0LmpzOiBBZGRlZC4KKyAgICAgICAgKGZvcm1hdF92YWx1ZSk6CisgICAgICAgICogZmFz
dC9jc3MtY3VzdG9tLXBhaW50L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qczogQWRkZWQuCisgICAg
ICAgIChhc3luYy5pbXBvcnRXb3JrbGV0KToKKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFp
bnQvd29ya2xldC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0
b20tcGFpbnQvd29ya2xldC5odG1sOiBBZGRlZC4KKwogMjAxOC0xMS0wMiAgUGVyIEFybmUgVm9s
bGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gTGF5b3V0IFRlc3QgZmFz
dC9ibG9jay9iYXNpYy9pbmxpbmUtY29udGVudC13aXRoLWZsb2F0aW5nLWltYWdlLmh0bWwgaXMg
ZmFpbGluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2Jh
c2ljLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9iYXNp
Yy1leHBlY3RlZC50eHQKaW5kZXggZWFhMTc0M2U0Mzk5MDBiZmQ3M2IwYzE5MTZlM2QyZWNlZTZk
NGI1Ni4uMDIwNTlmOTgzNWUyMzZhYTVlOTkyOTU1MTQ5MTczYjVkNzUyNTVhOSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2Jhc2ljLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYmFzaWMtZXhwZWN0ZWQudHh0
CkBAIC0xLDEwICsxLDMgQEAKIAotUEFTUyB0ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBydW5zIAot
UEFTUyB0ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBydW5zIHdpdGhvdXQgaW5wdXRQcm9wZXJ0aWVz
IAotUEFTUyB0ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBydW5zIHdpdGggaW5wdXRBcmd1bWVudHMg
Ci1QQVNTIHRlc3QgdGhhdCByZWdpc3RlclBhaW50IHJ1bnMgd2l0aCBjb250ZXh0T3B0aW9ucyAK
LVBBU1MgdGVzdCB0aGF0IHJlZ2lzdGVyUGFpbnQgcnVucyB3aXRoIHByZWRlZmluZWQgY2xhc3Mg
Ci1QQVNTIHRlc3QgdGhhdCByZWdpc3RlclBhaW50IGFjY2VwdHMgb25seSBhIHN0cmluZyBhbmQg
YSBjbGFzcyBjb25zdHJ1Y3RvciAKIFBBU1MgdGVzdCB0aGF0IHRlc3QgZGl2IGhhcyBwYWludCgp
IHZhbHVlIAotUEFTUyB0ZXN0IHRoYXQgdGVzdCBkaXYgcGFpbnQgY2FsbGJhY2sgZ2V0cyBjYWxs
ZWQgCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9iYXNp
Yy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2Jhc2ljLmh0bWwKaW5k
ZXggM2Y0ZGMzYTJkMDJlZjIxYTJlOTcyZDRjOGI0ZjJmYWU4YzM4OTQ1OC4uNGM4YjBjZjUyZTE2
ZDVjOGYwMjg3OGUyY2Y3NTc5NTM0MGUyOGY5NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9jc3MtY3VzdG9tLXBhaW50L2Jhc2ljLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mt
Y3VzdG9tLXBhaW50L2Jhc2ljLmh0bWwKQEAgLTE2LDcwICsxNiw3IEBACiA8ZGl2IGlkPSJwYWlu
dCI+PC9kaXY+CiAKIDxzY3JpcHQ+Ci10ZXN0KGZ1bmN0aW9uKCkgewotICBDU1MucGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgndGVzdDEnLCBjbGFzcyB7Ci0gICAgc3RhdGlj
IGdldCBpbnB1dFByb3BlcnRpZXMoKSB7IHJldHVybiBbIi0tdGVzdCJdOyB9Ci0gICAgcGFpbnQo
KSB7IH0KLSAgfSk7Ci19LCAndGVzdCB0aGF0IHJlZ2lzdGVyUGFpbnQgcnVucycpOwotCi10ZXN0
KGZ1bmN0aW9uKCkgewotICBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWlu
dCgndGVzdDInLCBjbGFzcyB7Ci0gICAgcGFpbnQoKSB7IH0KLSAgfSk7Ci19LCAndGVzdCB0aGF0
IHJlZ2lzdGVyUGFpbnQgcnVucyB3aXRob3V0IGlucHV0UHJvcGVydGllcycpOwotCi10ZXN0KGZ1
bmN0aW9uKCkgewotICBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgn
dGVzdDMnLCBjbGFzcyB7Ci0gICAgc3RhdGljIGdldCBpbnB1dEFyZ3VtZW50cygpIHsgcmV0dXJu
IFsiPGxlbmd0aD4iXTsgfQotICAgIHBhaW50KCkgeyB9Ci0gIH0pOwotfSwgJ3Rlc3QgdGhhdCBy
ZWdpc3RlclBhaW50IHJ1bnMgd2l0aCBpbnB1dEFyZ3VtZW50cycpOwotCi10ZXN0KGZ1bmN0aW9u
KCkgewotICBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgndGVzdDQn
LCBjbGFzcyB7Ci0gICAgc3RhdGljIGdldCBjb250ZXh0T3B0aW9ucygpIHsgcmV0dXJuIHsgYWxw
aGE6IHRydWUgfTsgfQotICAgIHBhaW50KCkgeyB9Ci0gIH0pOwotfSwgJ3Rlc3QgdGhhdCByZWdp
c3RlclBhaW50IHJ1bnMgd2l0aCBjb250ZXh0T3B0aW9ucycpOwotCi1jbGFzcyBNeVBhaW50IHsK
LSAgcGFpbnQoKSB7IH0KLX0KLQotdGVzdChmdW5jdGlvbigpIHsKLSAgQ1NTLnBhaW50V29ya2xl
dEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3Q1JywgTXlQYWludCk7Ci0gIGFzc2VydF90
aHJvd3MoeyduYW1lJzogJ0ludmFsaWRNb2RpZmljYXRpb25FcnJvcid9LCAoKSA9PiBDU1MucGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgndGVzdDUnLCBNeVBhaW50KSk7Ci0g
IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCd0ZXN0NicsIGNsYXNz
IGV4dGVuZHMgTXlQYWludCB7IH0pOwotfSwgJ3Rlc3QgdGhhdCByZWdpc3RlclBhaW50IHJ1bnMg
d2l0aCBwcmVkZWZpbmVkIGNsYXNzJyk7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gIGFzc2VydF90
aHJvd3MoeyduYW1lJzogJ0ludmFsaWRNb2RpZmljYXRpb25FcnJvcid9LCAoKSA9PiBDU1MucGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgndGVzdDYnLCAndGVzdCcpKTsKLSAg
YXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IENTUy5wYWludFdvcmtsZXRHbG9i
YWxTY29wZS5yZWdpc3RlclBhaW50KCd0ZXN0NycpKTsKLSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlw
ZUVycm9yKCksICgpID0+IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50
KCd0ZXN0OCcsIFtdKSk7Ci0gIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBD
U1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgndGVzdDknLCB7fSkpOwot
ICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gQ1NTLnBhaW50V29ya2xldEds
b2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3QxMCcsIDUpKTsKLSAgYXNzZXJ0X3Rocm93cyhu
ZXcgVHlwZUVycm9yKCksICgpID0+IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3Rl
clBhaW50KCcnLCA1KSk7Ci19LCAndGVzdCB0aGF0IHJlZ2lzdGVyUGFpbnQgYWNjZXB0cyBvbmx5
IGEgc3RyaW5nIGFuZCBhIGNsYXNzIGNvbnN0cnVjdG9yJyk7Ci0KIHRlc3QoZnVuY3Rpb24oKSB7
CiAgIGFzc2VydF9lcXVhbHMoZ2V0Q29tcHV0ZWRTdHlsZShwYWludCkuZ2V0UHJvcGVydHlWYWx1
ZSgiYmFja2dyb3VuZC1pbWFnZSIpLCAicGFpbnQobXktcGFpbnQpIik7CiB9LCAndGVzdCB0aGF0
IHRlc3QgZGl2IGhhcyBwYWludCgpIHZhbHVlJyk7Ci0KLWxldCBwYWludF9jYWxsZWRfdGVzdCA9
IGFzeW5jX3Rlc3QoJ3Rlc3QgdGhhdCB0ZXN0IGRpdiBwYWludCBjYWxsYmFjayBnZXRzIGNhbGxl
ZCcpOwotcGFpbnRfY2FsbGVkX3Rlc3Quc3RlcChmdW5jdGlvbigpIHsKLSAgQ1NTLnBhaW50V29y
a2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ215LXBhaW50JywgY2xhc3MgewotICAgIHBh
aW50KGN0eCwgZ2VvbSwgcHJvcGVydGllcykgewotICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2
OyBpKyspewotICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDY7IGorKyl7Ci0gICAgICAgICAg
Y3R4LmZpbGxTdHlsZSA9ICdyZ2IoJyArIE1hdGguZmxvb3IoMjU1IC0gNDIuNSAqIGkpICsgJywn
ICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGguZmxvb3IoMjU1IC0gNDIuNSAqIGop
ICsgJywwKSc7Ci0gICAgICAgICAgY3R4LmZpbGxSZWN0KGogKiAyNSwgaSAqIDI1LCAyNSwgMjUp
OwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBwYWludF9jYWxsZWRfdGVzdC5kb25lKCk7Ci0g
ICAgfQotICB9KTsKLX0pOwotCiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvY3NzLWN1c3RvbS1wYWludC9yZWdpc3RlclBhaW50QmluZGluZ3MtZXhwZWN0ZWQuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9yZWdpc3RlclBhaW50QmluZGluZ3Mt
ZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YjQyYjYyZGExM2VkYTgxOTYxMGIzMTk3YjRlNDVh
NTQ3M2JkY2YzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9t
LXBhaW50L3JlZ2lzdGVyUGFpbnRCaW5kaW5ncy1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTYg
QEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFs
OkNTU1BhaW50aW5nQVBJRW5hYmxlZD10cnVlIF0gLS0+CisKKzxjYW52YXMgaWQ9InBhaW50IiB3
aWR0aD0iMTUwcHgiIGhlaWdodD0iMTUwcHgiID48L2NhbnZhcz4KKworPHNjcmlwdCBpZD0iY29k
ZSI+Cit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhaW50Jyk7Cit2YXIg
Y3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgNjsg
aSsrKXsKKyAgZm9yICh2YXIgaiA9IDA7IGogPCA2OyBqKyspeworICAgIGN0eC5maWxsU3R5bGUg
PSAncmdiKCcgKyBNYXRoLmZsb29yKDI1NSAtIDQyLjUgKiBpKSArICcsJyArCisgICAgICAgICAg
ICAgICAgICAgICBNYXRoLmZsb29yKDI1NSAtIDQyLjUgKiBqKSArICcsMCknOworICAgIGN0eC5m
aWxsUmVjdChqICogMjUsIGkgKiAyNSwgMjUsIDI1KTsKKyAgfQorfQorPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVnaXN0ZXJQYWludEJp
bmRpbmdzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9y
ZWdpc3RlclBhaW50QmluZGluZ3MtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAzMDE0MzE1MmJkODZjOWRiMGQ5NzI5MjQyMmQ1YjhhZjg4YTUxMDZmLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzLWN1c3RvbS1wYWludC9yZWdpc3RlclBhaW50QmluZGluZ3MtZXhwZWN0ZWQudHh0CisrKyAv
ZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotCi1QQVNTIHJlZ2lzdGVyUGFpbnQgbXVzdCBiZSBh
IG1ldGhvZCAKLVBBU1MgbXVzdCBnZXQgInByb3RvdHlwZSIgcHJvcGVydHkgb2YgdGhlIGNvbnN0
cnVjdG9yIAotUEFTUyBtdXN0IHJldGhyb3cgYW4gZXhjZXB0aW9uIHRocm93biB3aGlsZSBnZXR0
aW5nICJpbnB1dFByb3BlcnRpZXMiIHByb3BlcnR5IG9mIHRoZSBjb25zdHJ1Y3RvciAKLVBBU1Mg
bXVzdCByZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgZ2V0dGluZyAicHJvdG90eXBl
IiBwcm9wZXJ0eSBvZiB0aGUgY29uc3RydWN0b3IgCi1QQVNTIG11c3QgdGhyb3cgd2hlbiAicHJv
dG90eXBlIiBwcm9wZXJ0eSBvZiB0aGUgY29uc3RydWN0b3IgaXMgbm90IGFuIG9iamVjdCAKLVBB
U1MgbXVzdCBnZXQgcGFpbnQgY2FsbGJhY2sgb2YgdGhlIGNvbnN0cnVjdG9yIHByb3RvdHlwZSAK
LVBBU1MgbXVzdCByZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgZ2V0dGluZyBwYWlu
dCBjYWxsYmFjayBvbiB0aGUgY29uc3RydWN0b3IgcHJvdG90eXBlIAotUEFTUyBtdXN0IHJldGhy
b3cgYW4gZXhjZXB0aW9uIHRocm93biB3aGlsZSBjb252ZXJ0aW5nIHBhaW50IGNhbGxiYWNrIHZh
bHVlIHRvIEZ1bmN0aW9uIGNhbGxiYWNrIHR5cGUgCi1QQVNTIG11c3QgcmV0aHJvdyBhbiBleGNl
cHRpb24gdGhyb3duIHdoaWxlIGNvbnZlcnRpbmcgdGhlIHZhbHVlIG9mIGlucHV0QXJndW1lbnRz
IHRvIHNlcXVlbmNlPERPTVN0cmluZz4gCi1QQVNTIG11c3QgcmV0aHJvdyBhbiBleGNlcHRpb24g
dGhyb3duIHdoaWxlIGl0ZXJhdGluZyBvdmVyIGlucHV0QXJndW1lbnRzIHRvIHNlcXVlbmNlPERP
TVN0cmluZz4gCi1QQVNTIG11c3QgcmV0aHJvdyBhbiBleGNlcHRpb24gdGhyb3duIHdoaWxlIHJl
dHJpZXZpbmcgU3ltYm9sLml0ZXJhdG9yIG9uIGlucHV0QXJndW1lbnRzIAotCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVnaXN0ZXJQYWludEJpbmRpbmdz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVnaXN0ZXJQYWludEJp
bmRpbmdzLmh0bWwKaW5kZXggZGM5MDJjNGNkNjU5MTBkNWIxOGNhZTE1NGVmMzM4Y2E5ODk4YmNk
Yy4uZjE2YmQ4NDM3Mjk3YWQyNjA5Y2VkNjY4NmQ0N2I4MmQxZGY2ZTYxYyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3JlZ2lzdGVyUGFpbnRCaW5kaW5ncy5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9yZWdpc3RlclBhaW50
QmluZGluZ3MuaHRtbApAQCAtMiwxNyArMiw2NCBAQAogPG1ldGEgbmFtZT0iYXV0aG9yIiB0aXRs
ZT0iSnVzdGluIE1pY2hhdWQiIGhyZWY9Im1haWx0bzpqdXN0aW5fbWljaGF1ZEB3ZWJraXQub3Jn
Ij4KIDxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0icmVnaXN0ZXJQYWludCBhY2Nlc3NlcyBh
cmd1bWVudHMgaW4gdGhlIGNvcnJlY3Qgb3JkZXIiPgogPGxpbmsgcmVsPSJoZWxwIiBjb250ZW50
PSJodHRwczovL2RyYWZ0cy5jc3MtaG91ZGluaS5vcmcvY3NzLXBhaW50LWFwaS0xLyI+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgorCis8c3R5bGU+CisgICNwYWludCB7CisgICAgYmFja2dyb3VuZC1pbWFnZTogcGFpbnQobXkt
cGFpbnQpOworICAgIHdpZHRoOiAxNTBweDsKKyAgICBoZWlnaHQ6IDE1MHB4OworICB9Cis8L3N0
eWxlPgorCis8ZGl2IGlkPSJwYWludCI+PC9kaXY+CisKKzxzY3JpcHQgaWQ9ImNvZGUiIHR5cGU9
InRleHQvd29ya2xldCI+CiBjbGFzcyBNeVBhaW50IHsKICAgcGFpbnQoKSB7IH0KIH0KIAotdGVz
dChmdW5jdGlvbiAoKSB7Ci0gICAgYXNzZXJ0X3RydWUoJ3JlZ2lzdGVyUGFpbnQnIGluIENTUy5w
YWludFdvcmtsZXRHbG9iYWxTY29wZS5fX3Byb3RvX18sICcicmVnaXN0ZXJQYWludCIgZXhpc3Rz
IG9uIHByb3RvdHlwZScpOwotICAgIGFzc2VydF90cnVlKCdyZWdpc3RlclBhaW50JyBpbiBDU1Mu
cGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUsICcicmVnaXN0ZXJQYWludCIgZXhpc3RzIG9uIHdpbmRv
dycpOwotfSwgJ3JlZ2lzdGVyUGFpbnQgbXVzdCBiZSBhIG1ldGhvZCcpOwordGVzdChmdW5jdGlv
bigpIHsKKyAgcmVnaXN0ZXJQYWludCgnYmFzaWMxJywgY2xhc3MgeworICAgIHN0YXRpYyBnZXQg
aW5wdXRQcm9wZXJ0aWVzKCkgeyByZXR1cm4gWyItLXRlc3QiXTsgfQorICAgIHBhaW50KCkgeyB9
CisgIH0pOworfSwgJ3Rlc3QgdGhhdCByZWdpc3RlclBhaW50IHJ1bnMnKTsKKwordGVzdChmdW5j
dGlvbigpIHsKKyAgcmVnaXN0ZXJQYWludCgnYmFzaWMyJywgY2xhc3MgeworICAgIHBhaW50KCkg
eyB9CisgIH0pOworfSwgJ3Rlc3QgdGhhdCByZWdpc3RlclBhaW50IHJ1bnMgd2l0aG91dCBpbnB1
dFByb3BlcnRpZXMnKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgcmVnaXN0ZXJQYWludCgnYmFz
aWMzJywgY2xhc3MgeworICAgIHN0YXRpYyBnZXQgaW5wdXRBcmd1bWVudHMoKSB7IHJldHVybiBb
IjxsZW5ndGg+Il07IH0KKyAgICBwYWludCgpIHsgfQorICB9KTsKK30sICd0ZXN0IHRoYXQgcmVn
aXN0ZXJQYWludCBydW5zIHdpdGggaW5wdXRBcmd1bWVudHMnKTsKKwordGVzdChmdW5jdGlvbigp
IHsKKyAgcmVnaXN0ZXJQYWludCgnYmFzaWM0JywgY2xhc3MgeworICAgIHN0YXRpYyBnZXQgY29u
dGV4dE9wdGlvbnMoKSB7IHJldHVybiB7IGFscGhhOiB0cnVlIH07IH0KKyAgICBwYWludCgpIHsg
fQorICB9KTsKK30sICd0ZXN0IHRoYXQgcmVnaXN0ZXJQYWludCBydW5zIHdpdGggY29udGV4dE9w
dGlvbnMnKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgcmVnaXN0ZXJQYWludCgnYmFzaWM1Jywg
TXlQYWludCk7CisgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ0ludmFsaWRNb2RpZmljYXRpb25F
cnJvcid9LCAoKSA9PiByZWdpc3RlclBhaW50KCdiYXNpYzUnLCBNeVBhaW50KSk7CisgIHJlZ2lz
dGVyUGFpbnQoJ2Jhc2ljNicsIGNsYXNzIGV4dGVuZHMgTXlQYWludCB7IH0pOworfSwgJ3Rlc3Qg
dGhhdCByZWdpc3RlclBhaW50IHJ1bnMgd2l0aCBwcmVkZWZpbmVkIGNsYXNzJyk7CisKK3Rlc3Qo
ZnVuY3Rpb24oKSB7CisgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1R5cGVFcnJvcid9LCAoKSA9
PiByZWdpc3RlclBhaW50KCdiYXNpYzYnLCAndGVzdCcpKTsKKyAgYXNzZXJ0X3Rocm93cyhuZXcg
VHlwZUVycm9yKCksICgpID0+IHJlZ2lzdGVyUGFpbnQoJ2Jhc2ljOCcpKTsKKyAgYXNzZXJ0X3Ro
cm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHJlZ2lzdGVyUGFpbnQoJ2Jhc2ljOScsIFtdKSk7
CisgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiByZWdpc3RlclBhaW50KCdi
YXNpYzEwJywge30pKTsKKyAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHJl
Z2lzdGVyUGFpbnQoJ2Jhc2ljMTEnLCA1KSk7CisgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJv
cigpLCAoKSA9PiByZWdpc3RlclBhaW50KCcnLCA1KSk7Cit9LCAndGVzdCB0aGF0IHJlZ2lzdGVy
UGFpbnQgYWNjZXB0cyBvbmx5IGEgc3RyaW5nIGFuZCBhIGNsYXNzIGNvbnN0cnVjdG9yJyk7CiAK
IHRlc3QoZnVuY3Rpb24gKCkgewogICAgIGNvbnN0IGNhbGxzID0gW107CkBAIC0yMiw3ICs2OSw3
IEBAIHRlc3QoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgcmV0dXJuIHRhcmdldFtuYW1lXTsK
ICAgICAgICAgfQogICAgIH0pOwotICAgIENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdp
c3RlclBhaW50KCd0ZXN0LXByb3RvJywgcHJveHkpOworICAgIHJlZ2lzdGVyUGFpbnQoJ3Rlc3Qt
cHJvdG8nLCBwcm94eSk7CiAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjYWxscywgWyJpbnB1dFBy
b3BlcnRpZXMiLCAiaW5wdXRBcmd1bWVudHMiLCAiY29udGV4dE9wdGlvbnMiLCAicHJvdG90eXBl
Il0pOwogfSwgJ211c3QgZ2V0ICJwcm90b3R5cGUiIHByb3BlcnR5IG9mIHRoZSBjb25zdHJ1Y3Rv
cicpOwogCkBAIC0zNiw3ICs4Myw3IEBAIHRlc3QoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAg
cmV0dXJuIHRhcmdldFtuYW1lXTsKICAgICAgICAgfQogICAgIH0pOwotICAgIGFzc2VydF90aHJv
d3MoeyduYW1lJzogJ2V4cGVjdGVkRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBDU1MucGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgndGVzdC1yZXRocm93LWlucHV0UHJvcGVydGll
czAnLCBwcm94eSk7IH0pOworICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ2V4cGVjdGVkRXJy
b3InfSwgZnVuY3Rpb24gKCkgeyByZWdpc3RlclBhaW50KCd0ZXN0LXJldGhyb3ctaW5wdXRQcm9w
ZXJ0aWVzMCcsIHByb3h5KTsgfSk7CiB9LCAnbXVzdCByZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJv
d24gd2hpbGUgZ2V0dGluZyAiaW5wdXRQcm9wZXJ0aWVzIiBwcm9wZXJ0eSBvZiB0aGUgY29uc3Ry
dWN0b3InKTsKIAogdGVzdChmdW5jdGlvbiAoKSB7CkBAIC00OSw3ICs5Niw3IEBAIHRlc3QoZnVu
Y3Rpb24gKCkgewogICAgICAgICAgICAgcmV0dXJuIHRhcmdldFtuYW1lXTsKICAgICAgICAgfQog
ICAgIH0pOwotICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ2V4cGVjdGVkRXJyb3InfSwgZnVu
Y3Rpb24gKCkgeyBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgndGVz
dC1yZXRocm93LXByb3RvJywgcHJveHkpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6
ICdleHBlY3RlZEVycm9yJ30sIGZ1bmN0aW9uICgpIHsgcmVnaXN0ZXJQYWludCgndGVzdC1yZXRo
cm93LXByb3RvJywgcHJveHkpOyB9KTsKIH0sICdtdXN0IHJldGhyb3cgYW4gZXhjZXB0aW9uIHRo
cm93biB3aGlsZSBnZXR0aW5nICJwcm90b3R5cGUiIHByb3BlcnR5IG9mIHRoZSBjb25zdHJ1Y3Rv
cicpOwogCiB0ZXN0KGZ1bmN0aW9uICgpIHsKQEAgLTYzLDE2ICsxMTAsMTYgQEAgdGVzdChmdW5j
dGlvbiAoKSB7CiAgICAgfSk7CiAKICAgICByZXR1cm5lZFZhbHVlID0gbnVsbDsKLSAgICBhc3Nl
cnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBDU1MucGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgndGVzdC1yZXRocm93LXByb3RvLW5vb2Jq
MScsIHByb3h5KTsgfSwKKyAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwg
ZnVuY3Rpb24gKCkgeyByZWdpc3RlclBhaW50KCd0ZXN0LXJldGhyb3ctcHJvdG8tbm9vYmoxJywg
cHJveHkpOyB9LAogICAgICAgICAnbXVzdCB0aHJvdyB3aGVuICJwcm90b3R5cGUiIHByb3BlcnR5
IG9mIHRoZSBjb25zdHJ1Y3RvciBpcyBudWxsJyk7CiAgICAgcmV0dXJuZWRWYWx1ZSA9IHVuZGVm
aW5lZDsKLSAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24g
KCkgeyBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgndGVzdC1yZXRo
cm93LXByb3RvLW5vb2JqMicsIHByb3h5KTsgfSwKKyAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6
ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyByZWdpc3RlclBhaW50KCd0ZXN0LXJldGhyb3ct
cHJvdG8tbm9vYmoyJywgcHJveHkpOyB9LAogICAgICAgICAnbXVzdCB0aHJvdyB3aGVuICJwcm90
b3R5cGUiIHByb3BlcnR5IG9mIHRoZSBjb25zdHJ1Y3RvciBpcyB1bmRlZmluZWQnKTsKICAgICBy
ZXR1cm5lZFZhbHVlID0gJ2hlbGxvJzsKLSAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBl
RXJyb3InfSwgZnVuY3Rpb24gKCkgeyBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0
ZXJQYWludCgndGVzdC1yZXRocm93LXByb3RvLW5vb2JqMycsIHByb3h5KTs7IH0sCisgICAgYXNz
ZXJ0X3Rocm93cyh7J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgcmVnaXN0ZXJQ
YWludCgndGVzdC1yZXRocm93LXByb3RvLW5vb2JqMycsIHByb3h5KTs7IH0sCiAgICAgICAgICdt
dXN0IHRocm93IHdoZW4gInByb3RvdHlwZSIgcHJvcGVydHkgb2YgdGhlIGNvbnN0cnVjdG9yIGlz
IGEgc3RyaW5nJyk7CiAgICAgcmV0dXJuZWRWYWx1ZSA9IDE7Ci0gICAgYXNzZXJ0X3Rocm93cyh7
J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgQ1NTLnBhaW50V29ya2xldEdsb2Jh
bFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3Rlc3QtcmV0aHJvdy1wcm90by1ub29iajQnLCBwcm94eSk7
OyB9LAorICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1R5cGVFcnJvcid9LCBmdW5jdGlvbiAo
KSB7IHJlZ2lzdGVyUGFpbnQoJ3Rlc3QtcmV0aHJvdy1wcm90by1ub29iajQnLCBwcm94eSk7OyB9
LAogICAgICAgICAnbXVzdCB0aHJvdyB3aGVuICJwcm90b3R5cGUiIHByb3BlcnR5IG9mIHRoZSBj
b25zdHJ1Y3RvciBpcyBhIG51bWJlcicpOwogCiB9LCAnbXVzdCB0aHJvdyB3aGVuICJwcm90b3R5
cGUiIHByb3BlcnR5IG9mIHRoZSBjb25zdHJ1Y3RvciBpcyBub3QgYW4gb2JqZWN0Jyk7CkBAIC04
Nyw3ICsxMzQsNyBAQCB0ZXN0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIHJldHVybiB0YXJn
ZXRbbmFtZV07CiAgICAgICAgIH0KICAgICB9KTsKLSAgICBDU1MucGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUucmVnaXN0ZXJQYWludCgnY2FsbGJhY2tzJywgY29uc3RydWN0b3IpOworICAgIHJlZ2lz
dGVyUGFpbnQoJ2NhbGxiYWNrcycsIGNvbnN0cnVjdG9yKTsKICAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKGNhbGxzLCBbJ3BhaW50J10pOwogfSwgJ211c3QgZ2V0IHBhaW50IGNhbGxiYWNrIG9mIHRo
ZSBjb25zdHJ1Y3RvciBwcm90b3R5cGUnKTsKIApAQCAtMTAyLDcgKzE0OSw3IEBAIHRlc3QoZnVu
Y3Rpb24gKCkgewogICAgICAgICAgICAgcmV0dXJuIHRhcmdldFtuYW1lXTsKICAgICAgICAgfQog
ICAgIH0pOwotICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ2V4cGVjdGVkRXJyb3InfSwgZnVu
Y3Rpb24gKCkgeyBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUucmVnaXN0ZXJQYWludCgnY2Fs
bGJhY2tzLXRocm93JywgY29uc3RydWN0b3IpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzKHsnbmFt
ZSc6ICdleHBlY3RlZEVycm9yJ30sIGZ1bmN0aW9uICgpIHsgcmVnaXN0ZXJQYWludCgnY2FsbGJh
Y2tzLXRocm93JywgY29uc3RydWN0b3IpOyB9KTsKICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNh
bGxzLCBbJ3BhaW50J10pOwogfSwgJ211c3QgcmV0aHJvdyBhbiBleGNlcHRpb24gdGhyb3duIHdo
aWxlIGdldHRpbmcgcGFpbnQgY2FsbGJhY2sgb24gdGhlIGNvbnN0cnVjdG9yIHByb3RvdHlwZScp
OwogCkBAIC0xMTcsNyArMTY0LDcgQEAgdGVzdChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBy
ZXR1cm4gdGFyZ2V0W25hbWVdOwogICAgICAgICB9CiAgICAgfSk7Ci0gICAgYXNzZXJ0X3Rocm93
cyh7J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgQ1NTLnBhaW50V29ya2xldEds
b2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ2NhbGxiYWNrcy10aHJvdzInLCBjb25zdHJ1Y3Rvcik7
IH0pOworICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1R5cGVFcnJvcid9LCBmdW5jdGlvbiAo
KSB7IHJlZ2lzdGVyUGFpbnQoJ2NhbGxiYWNrcy10aHJvdzInLCBjb25zdHJ1Y3Rvcik7IH0pOwog
ICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2FsbHMsIFsncGFpbnQnXSk7CiB9LCAnbXVzdCByZXRo
cm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgY29udmVydGluZyBwYWludCBjYWxsYmFjayB2
YWx1ZSB0byBGdW5jdGlvbiBjYWxsYmFjayB0eXBlJyk7CiAKQEAgLTEzMSw3ICsxNzgsNyBAQCB0
ZXN0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICByZXR1cm4gdGFyZ2V0W25hbWVdOwogICAgICAg
fQogICB9KTsKLSAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9u
ICgpIHsgQ1NTLnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ3NlcXVlbmNl
LXRocm93JywgcHJveHkpOyB9KTsKKyAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnVHlwZUVycm9y
J30sIGZ1bmN0aW9uICgpIHsgcmVnaXN0ZXJQYWludCgnc2VxdWVuY2UtdGhyb3cnLCBwcm94eSk7
IH0pOwogICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNhbGxzLCBbImlucHV0UHJvcGVydGllcyIsICJp
bnB1dEFyZ3VtZW50cyJdKTsKIH0sICdtdXN0IHJldGhyb3cgYW4gZXhjZXB0aW9uIHRocm93biB3
aGlsZSBjb252ZXJ0aW5nIHRoZSB2YWx1ZSBvZiBpbnB1dEFyZ3VtZW50cyB0byBzZXF1ZW5jZTxE
T01TdHJpbmc+Jyk7CiAKQEAgLTE0MSwxMiArMTg4LDM2IEBAIHRlc3QoZnVuY3Rpb24gKCkgewog
ICAgICAgICB5aWVsZCAnPGxlbmd0aD4nOwogICAgICAgICB0aHJvdyB7bmFtZTogJ1NvbWVFcnJv
cid9OwogICAgIH19OwotICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1NvbWVFcnJvcid9LCBm
dW5jdGlvbiAoKSB7IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCdz
ZXF1ZW5jZS10aHJvdzInLCBjb25zdHJ1Y3Rvcik7IH0pOworICAgIGFzc2VydF90aHJvd3Moeydu
YW1lJzogJ1NvbWVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IHJlZ2lzdGVyUGFpbnQoJ3NlcXVlbmNl
LXRocm93MicsIGNvbnN0cnVjdG9yKTsgfSk7CiB9LCAnbXVzdCByZXRocm93IGFuIGV4Y2VwdGlv
biB0aHJvd24gd2hpbGUgaXRlcmF0aW5nIG92ZXIgaW5wdXRBcmd1bWVudHMgdG8gc2VxdWVuY2U8
RE9NU3RyaW5nPicpOwogCiB0ZXN0KGZ1bmN0aW9uICgpIHsKICAgICBjb25zdCBjb25zdHJ1Y3Rv
ciA9IGZ1bmN0aW9uICgpIHt9CiAgICAgY29uc3RydWN0b3IuaW5wdXRBcmd1bWVudHMgPSB7W1N5
bWJvbC5pdGVyYXRvcl06IDF9OwotICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1R5cGVFcnJv
cid9LCBmdW5jdGlvbiAoKSB7IENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBh
aW50KCdzeW1ib2wtaXRlcmF0b3ItdGhyb3cyJywgY29uc3RydWN0b3IpOyB9KTsKKyAgICBhc3Nl
cnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyByZWdpc3RlclBh
aW50KCdzeW1ib2wtaXRlcmF0b3ItdGhyb3cyJywgY29uc3RydWN0b3IpOyB9KTsKIH0sICdtdXN0
IHJldGhyb3cgYW4gZXhjZXB0aW9uIHRocm93biB3aGlsZSByZXRyaWV2aW5nIFN5bWJvbC5pdGVy
YXRvciBvbiBpbnB1dEFyZ3VtZW50cycpOworCithc3NlcnRfdHJ1ZShQYWludFdvcmtsZXRHbG9i
YWxTY29wZS5oYXNSdW5BVGVzdCk7CitpZiAoUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuZXJyb3Jz
KSB7CisgIGNvbnNvbGUubG9nKCJUaGUgZm9sbG93aW5nICgiICsgUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUuZXJyb3JzLmxlbmd0aCArICIpIHRlc3RzIGZhaWxlZDogIikKKyAgY29uc29sZS5sb2co
SlNPTi5zdHJpbmdpZnkoUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuZXJyb3JzKSk7CisgIGFzc2Vy
dF90cnVlKGZhbHNlKTsKK30KKworY2xhc3MgTXlQYWludDIgeworICBwYWludChjdHgsIGdlb20s
IHByb3BlcnRpZXMpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKyl7CisgICAgICBm
b3IgKHZhciBqID0gMDsgaiA8IDY7IGorKyl7CisgICAgICAgIGN0eC5maWxsU3R5bGUgPSAncmdi
KCcgKyBNYXRoLmZsb29yKDI1NSAtIDQyLjUgKiBpKSArICcsJyArCisgICAgICAgICAgICAgICAg
ICAgICAgICAgTWF0aC5mbG9vcigyNTUgLSA0Mi41ICogaikgKyAnLDApJzsKKyAgICAgICAgY3R4
LmZpbGxSZWN0KGogKiAyNSwgaSAqIDI1LCAyNSwgMjUpOworICAgICAgfQorICAgIH0KKyAgfQor
fQorcmVnaXN0ZXJQYWludCgnbXktcGFpbnQnLCBNeVBhaW50Mik7Cis8L3NjcmlwdD4KKworPHNj
cmlwdD4KKyAgaW1wb3J0V29ya2xldChDU1MucGFpbnRXb3JrbGV0LCBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnY29kZScpLnRleHRDb250ZW50KTsKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Jlc291cmNlcy90ZXN0aGFybmVzcy13b3Jr
bGV0LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Jlc291cmNlcy90ZXN0
aGFybmVzcy13b3JrbGV0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ1YzNlNzRlZTZjMTMxNDE5YzE2ODllZTg5
ZDAxYTQxYWE3MDJlY2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1j
dXN0b20tcGFpbnQvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLXdvcmtsZXQuanMKQEAgLTAsMCArMSw3
MzkgQEAKKy8vIFRoZXNlIGFyZSBoZWxwZXJzIHRvIGJlIGV2YWx1YXRlZCBpbnNpZGUgYSB3b3Jr
bGV0CisvLyBUaGV5IGFyZSBtb3N0bHkgZnJvbSB0aGUgd3B0IHRlc3RoYXJuZXNzLmpzLgorCisv
KgorICogQ29udmVydCBhIHZhbHVlIHRvIGEgbmljZSwgaHVtYW4tcmVhZGFibGUgc3RyaW5nCisg
Ki8KK2Z1bmN0aW9uIGZvcm1hdF92YWx1ZSh2YWwsIHNlZW4pCit7CisgICAgaWYgKCFzZWVuKSB7
CisgICAgICAgIHNlZW4gPSBbXTsKKyAgICB9CisgICAgaWYgKHR5cGVvZiB2YWwgPT09ICJvYmpl
Y3QiICYmIHZhbCAhPT0gbnVsbCkgeworICAgICAgICBpZiAoc2Vlbi5pbmRleE9mKHZhbCkgPj0g
MCkgeworICAgICAgICAgICAgcmV0dXJuICJbLi4uXSI7CisgICAgICAgIH0KKyAgICAgICAgc2Vl
bi5wdXNoKHZhbCk7CisgICAgfQorICAgIGlmIChBcnJheS5pc0FycmF5KHZhbCkpIHsKKyAgICAg
ICAgcmV0dXJuICJbIiArIHZhbC5tYXAoZnVuY3Rpb24oeCkge3JldHVybiBmb3JtYXRfdmFsdWUo
eCwgc2Vlbik7fSkuam9pbigiLCAiKSArICJdIjsKKyAgICB9CisKKyAgICBzd2l0Y2ggKHR5cGVv
ZiB2YWwpIHsKKyAgICBjYXNlICJzdHJpbmciOgorICAgICAgICB2YWwgPSB2YWwucmVwbGFjZSgi
XFwiLCAiXFxcXCIpOworICAgICAgICBmb3IgKHZhciBwIGluIHJlcGxhY2VtZW50cykgeworICAg
ICAgICAgICAgdmFyIHJlcGxhY2UgPSAiXFwiICsgcmVwbGFjZW1lbnRzW3BdOworICAgICAgICAg
ICAgdmFsID0gdmFsLnJlcGxhY2UoUmVnRXhwKFN0cmluZy5mcm9tQ2hhckNvZGUocCksICJnIiks
IHJlcGxhY2UpOworICAgICAgICB9CisgICAgICAgIHJldHVybiAnIicgKyB2YWwucmVwbGFjZSgv
Ii9nLCAnXFwiJykgKyAnIic7CisgICAgY2FzZSAiYm9vbGVhbiI6CisgICAgY2FzZSAidW5kZWZp
bmVkIjoKKyAgICAgICAgcmV0dXJuIFN0cmluZyh2YWwpOworICAgIGNhc2UgIm51bWJlciI6Cisg
ICAgICAgIC8vIEluIEphdmFTY3JpcHQsIC0wID09PSAwIGFuZCBTdHJpbmcoLTApID09ICIwIiwg
c28gd2UgaGF2ZSB0bworICAgICAgICAvLyBzcGVjaWFsLWNhc2UuCisgICAgICAgIGlmICh2YWwg
PT09IC0wICYmIDEvdmFsID09PSAtSW5maW5pdHkpIHsKKyAgICAgICAgICAgIHJldHVybiAiLTAi
OworICAgICAgICB9CisgICAgICAgIHJldHVybiBTdHJpbmcodmFsKTsKKyAgICBjYXNlICJvYmpl
Y3QiOgorICAgICAgICBpZiAodmFsID09PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gIm51
bGwiOworICAgICAgICB9CisKKyAgICAgICAgLy8gU3BlY2lhbC1jYXNlIE5vZGUgb2JqZWN0cywg
c2luY2UgdGhvc2UgY29tZSB1cCBhIGxvdCBpbiBteSB0ZXN0cy4gIEkKKyAgICAgICAgLy8gaWdu
b3JlIG5hbWVzcGFjZXMuCisgICAgICAgIGlmIChpc19ub2RlKHZhbCkpIHsKKyAgICAgICAgICAg
IHN3aXRjaCAodmFsLm5vZGVUeXBlKSB7CisgICAgICAgICAgICBjYXNlIE5vZGUuRUxFTUVOVF9O
T0RFOgorICAgICAgICAgICAgICAgIHZhciByZXQgPSAiPCIgKyB2YWwubG9jYWxOYW1lOworICAg
ICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsLmF0dHJpYnV0ZXMubGVuZ3RoOyBp
KyspIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0ICs9ICIgIiArIHZhbC5hdHRyaWJ1dGVzW2ld
Lm5hbWUgKyAnPSInICsgdmFsLmF0dHJpYnV0ZXNbaV0udmFsdWUgKyAnIic7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIHJldCArPSAiPiIgKyB2YWwuaW5uZXJIVE1MICsgIjwv
IiArIHZhbC5sb2NhbE5hbWUgKyAiPiI7CisgICAgICAgICAgICAgICAgcmV0dXJuICJFbGVtZW50
IG5vZGUgIiArIHRydW5jYXRlKHJldCwgNjApOworICAgICAgICAgICAgY2FzZSBOb2RlLlRFWFRf
Tk9ERToKKyAgICAgICAgICAgICAgICByZXR1cm4gJ1RleHQgbm9kZSAiJyArIHRydW5jYXRlKHZh
bC5kYXRhLCA2MCkgKyAnIic7CisgICAgICAgICAgICBjYXNlIE5vZGUuUFJPQ0VTU0lOR19JTlNU
UlVDVElPTl9OT0RFOgorICAgICAgICAgICAgICAgIHJldHVybiAiUHJvY2Vzc2luZ0luc3RydWN0
aW9uIG5vZGUgd2l0aCB0YXJnZXQgIiArIGZvcm1hdF92YWx1ZSh0cnVuY2F0ZSh2YWwudGFyZ2V0
LCA2MCkpICsgIiBhbmQgZGF0YSAiICsgZm9ybWF0X3ZhbHVlKHRydW5jYXRlKHZhbC5kYXRhLCA2
MCkpOworICAgICAgICAgICAgY2FzZSBOb2RlLkNPTU1FTlRfTk9ERToKKyAgICAgICAgICAgICAg
ICByZXR1cm4gIkNvbW1lbnQgbm9kZSA8IS0tIiArIHRydW5jYXRlKHZhbC5kYXRhLCA2MCkgKyAi
LS0+IjsKKyAgICAgICAgICAgIGNhc2UgTm9kZS5ET0NVTUVOVF9OT0RFOgorICAgICAgICAgICAg
ICAgIHJldHVybiAiRG9jdW1lbnQgbm9kZSB3aXRoICIgKyB2YWwuY2hpbGROb2Rlcy5sZW5ndGgg
KyAodmFsLmNoaWxkTm9kZXMubGVuZ3RoID09IDEgPyAiIGNoaWxkIiA6ICIgY2hpbGRyZW4iKTsK
KyAgICAgICAgICAgIGNhc2UgTm9kZS5ET0NVTUVOVF9UWVBFX05PREU6CisgICAgICAgICAgICAg
ICAgcmV0dXJuICJEb2N1bWVudFR5cGUgbm9kZSI7CisgICAgICAgICAgICBjYXNlIE5vZGUuRE9D
VU1FTlRfRlJBR01FTlRfTk9ERToKKyAgICAgICAgICAgICAgICByZXR1cm4gIkRvY3VtZW50RnJh
Z21lbnQgbm9kZSB3aXRoICIgKyB2YWwuY2hpbGROb2Rlcy5sZW5ndGggKyAodmFsLmNoaWxkTm9k
ZXMubGVuZ3RoID09IDEgPyAiIGNoaWxkIiA6ICIgY2hpbGRyZW4iKTsKKyAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuICJOb2RlIG9iamVjdCBvZiB1bmtub3duIHR5
cGUiOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAvKiBmYWxscyB0aHJvdWdoICov
CisgICAgZGVmYXVsdDoKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJldHVybiB0eXBlb2Yg
dmFsICsgJyAiJyArIHRydW5jYXRlKFN0cmluZyh2YWwpLCAxMDAwKSArICciJzsKKyAgICAgICAg
fSBjYXRjaChlKSB7CisgICAgICAgICAgICByZXR1cm4gKCJbc3RyaW5naWZ5aW5nIG9iamVjdCB0
aHJldyAiICsgU3RyaW5nKGUpICsKKyAgICAgICAgICAgICAgICAgICAgIiB3aXRoIHR5cGUgIiAr
IFN0cmluZyh0eXBlb2YgZSkgKyAiXSIpOworICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlv
biBpc19zaW5nbGVfbm9kZSh0ZW1wbGF0ZSkKK3sKKyAgICByZXR1cm4gdHlwZW9mIHRlbXBsYXRl
WzBdID09PSAic3RyaW5nIjsKK30KKworZnVuY3Rpb24gc3Vic3RpdHV0ZSh0ZW1wbGF0ZSwgc3Vi
c3RpdHV0aW9ucykKK3sKKyAgICBpZiAodHlwZW9mIHRlbXBsYXRlID09PSAiZnVuY3Rpb24iKSB7
CisgICAgICAgIHZhciByZXBsYWNlbWVudCA9IHRlbXBsYXRlKHN1YnN0aXR1dGlvbnMpOworICAg
ICAgICBpZiAoIXJlcGxhY2VtZW50KSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAg
ICAgfQorCisgICAgICAgIHJldHVybiBzdWJzdGl0dXRlKHJlcGxhY2VtZW50LCBzdWJzdGl0dXRp
b25zKTsKKyAgICB9CisKKyAgICBpZiAoaXNfc2luZ2xlX25vZGUodGVtcGxhdGUpKSB7CisgICAg
ICAgIHJldHVybiBzdWJzdGl0dXRlX3NpbmdsZSh0ZW1wbGF0ZSwgc3Vic3RpdHV0aW9ucyk7Cisg
ICAgfQorCisgICAgcmV0dXJuIGZpbHRlcihtYXAodGVtcGxhdGUsIGZ1bmN0aW9uKHgpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1YnN0aXR1dGUoeCwgc3Vic3RpdHV0aW9u
cyk7CisgICAgICAgICAgICAgICAgICAgICAgfSksIGZ1bmN0aW9uKHgpIHtyZXR1cm4geCAhPT0g
bnVsbDt9KTsKK30KKworZnVuY3Rpb24gc3Vic3RpdHV0ZV9zaW5nbGUodGVtcGxhdGUsIHN1YnN0
aXR1dGlvbnMpCit7CisgICAgdmFyIHN1YnN0aXR1dGlvbl9yZSA9IC9cJFx7KFteIH1dKilcfS9n
OworCisgICAgZnVuY3Rpb24gZG9fc3Vic3RpdHV0aW9uKGlucHV0KSB7CisgICAgICAgIHZhciBj
b21wb25lbnRzID0gaW5wdXQuc3BsaXQoc3Vic3RpdHV0aW9uX3JlKTsKKyAgICAgICAgdmFyIHJ2
ID0gW107CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29tcG9uZW50cy5sZW5ndGg7IGkg
Kz0gMikgeworICAgICAgICAgICAgcnYucHVzaChjb21wb25lbnRzW2ldKTsKKyAgICAgICAgICAg
IGlmIChjb21wb25lbnRzW2kgKyAxXSkgeworICAgICAgICAgICAgICAgIHJ2LnB1c2goU3RyaW5n
KHN1YnN0aXR1dGlvbnNbY29tcG9uZW50c1tpICsgMV1dKSk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIHJ2OworICAgIH0KKworICAgIGZ1bmN0aW9uIHN1YnN0aXR1
dGVfYXR0cnMoYXR0cnMsIHJ2KQorICAgIHsKKyAgICAgICAgcnZbMV0gPSB7fTsKKyAgICAgICAg
Zm9yICh2YXIgbmFtZSBpbiB0ZW1wbGF0ZVsxXSkgeworICAgICAgICAgICAgaWYgKGF0dHJzLmhh
c093blByb3BlcnR5KG5hbWUpKSB7CisgICAgICAgICAgICAgICAgdmFyIG5ld19uYW1lID0gZG9f
c3Vic3RpdHV0aW9uKG5hbWUpLmpvaW4oIiIpOworICAgICAgICAgICAgICAgIHZhciBuZXdfdmFs
dWUgPSBkb19zdWJzdGl0dXRpb24oYXR0cnNbbmFtZV0pLmpvaW4oIiIpOworICAgICAgICAgICAg
ICAgIHJ2WzFdW25ld19uYW1lXSA9IG5ld192YWx1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKworICAgIGZ1bmN0aW9uIHN1YnN0aXR1dGVfY2hpbGRyZW4oY2hpbGRyZW4sIHJ2
KQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkr
KykgeworICAgICAgICAgICAgaWYgKGNoaWxkcmVuW2ldIGluc3RhbmNlb2YgT2JqZWN0KSB7Cisg
ICAgICAgICAgICAgICAgdmFyIHJlcGxhY2VtZW50ID0gc3Vic3RpdHV0ZShjaGlsZHJlbltpXSwg
c3Vic3RpdHV0aW9ucyk7CisgICAgICAgICAgICAgICAgaWYgKHJlcGxhY2VtZW50ICE9PSBudWxs
KSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChpc19zaW5nbGVfbm9kZShyZXBsYWNlbWVudCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJ2LnB1c2gocmVwbGFjZW1lbnQpOworICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5kKHJ2
LCByZXBsYWNlbWVudCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGV4dGVuZChydiwgZG9fc3Vi
c3RpdHV0aW9uKFN0cmluZyhjaGlsZHJlbltpXSkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gcnY7CisgICAgfQorCisgICAgdmFyIHJ2ID0gW107CisgICAgcnYu
cHVzaChkb19zdWJzdGl0dXRpb24oU3RyaW5nKHRlbXBsYXRlWzBdKSkuam9pbigiIikpOworCisg
ICAgaWYgKHRlbXBsYXRlWzBdID09PSAie3RleHR9IikgeworICAgICAgICBzdWJzdGl0dXRlX2No
aWxkcmVuKHRlbXBsYXRlLnNsaWNlKDEpLCBydik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc3Vi
c3RpdHV0ZV9hdHRycyh0ZW1wbGF0ZVsxXSwgcnYpOworICAgICAgICBzdWJzdGl0dXRlX2NoaWxk
cmVuKHRlbXBsYXRlLnNsaWNlKDIpLCBydik7CisgICAgfQorCisgICAgcmV0dXJuIHJ2OworfQor
CitmdW5jdGlvbiBhc3NlcnQoZXhwZWN0ZWRfdHJ1ZSwgZnVuY3Rpb25fbmFtZSwgZGVzY3JpcHRp
b24sIGVycm9yLCBzdWJzdGl0dXRpb25zKQoreworICAgIGlmIChleHBlY3RlZF90cnVlICE9PSB0
cnVlKSB7CisgICAgICAgIHZhciBtc2cgPSBtYWtlX21lc3NhZ2UoZnVuY3Rpb25fbmFtZSwgZGVz
Y3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IsIHN1YnN0aXR1
dGlvbnMpOworICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRXJyb3IobXNnKTsKKyAgICB9Cit9
CisKK2Z1bmN0aW9uIEFzc2VydGlvbkVycm9yKG1lc3NhZ2UpCit7CisgICAgdGhpcy5tZXNzYWdl
ID0gbWVzc2FnZTsKKyAgICB0aGlzLnN0YWNrID0gdGhpcy5nZXRfc3RhY2soKTsKK30KKworQXNz
ZXJ0aW9uRXJyb3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShFcnJvci5wcm90b3R5cGUpOwor
CitBc3NlcnRpb25FcnJvci5wcm90b3R5cGUuZ2V0X3N0YWNrID0gZnVuY3Rpb24oKSB7CisgICAg
dmFyIHN0YWNrID0gbmV3IEVycm9yKCkuc3RhY2s7CisgICAgLy8gSUUxMSBkb2VzIG5vdCBpbml0
aWFsaXplICdFcnJvci5zdGFjaycgdW50aWwgdGhlIG9iamVjdCBpcyB0aHJvd24uCisgICAgaWYg
KCFzdGFjaykgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7
CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIHN0YWNrID0gZS5zdGFjazsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIC8vICdFcnJvci5zdGFjaycgaXMgbm90IHN1cHBvcnRlZCBp
biBhbGwgYnJvd3NlcnMvdmVyc2lvbnMKKyAgICBpZiAoIXN0YWNrKSB7CisgICAgICAgIHJldHVy
biAiKFN0YWNrIHRyYWNlIHVuYXZhaWxhYmxlKSI7CisgICAgfQorCisgICAgdmFyIGxpbmVzID0g
c3RhY2suc3BsaXQoIlxuIik7CisKKyAgICAvLyBDcmVhdGUgYSBwYXR0ZXJuIHRvIG1hdGNoIHN0
YWNrIGZyYW1lcyBvcmlnaW5hdGluZyB3aXRoaW4gdGVzdGhhcm5lc3MuanMuICBUaGVzZSBpbmNs
dWRlIHRoZQorICAgIC8vIHNjcmlwdCBVUkwsIGZvbGxvd2VkIGJ5IHRoZSBsaW5lL2NvbCAoZS5n
LiwgJy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanM6MTIwOjIxJykuCisgICAgLy8gRXNjYXBlIHRo
ZSBVUkwgcGVyIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzU2MTQ5My9pcy10
aGVyZS1hLXJlZ2V4cC1lc2NhcGUtZnVuY3Rpb24taW4tamF2YXNjcmlwdAorICAgIC8vIGluIGNh
c2UgaXQgY29udGFpbnMgUmVnRXhwIGNoYXJhY3RlcnMuCisgICAgdmFyIHNjcmlwdF91cmwgPSBn
ZXRfc2NyaXB0X3VybCgpOworICAgIHZhciByZV90ZXh0ID0gc2NyaXB0X3VybCA/IHNjcmlwdF91
cmwucmVwbGFjZSgvWy1cL1xcXiQqKz8uKCl8W1xde31dL2csICdcXCQmJykgOiAiXFxidGVzdGhh
cm5lc3MuanMiOworICAgIHZhciByZSA9IG5ldyBSZWdFeHAocmVfdGV4dCArICI6XFxkKzpcXGQr
Iik7CisKKyAgICAvLyBTb21lIGJyb3dzZXJzIGluY2x1ZGUgYSBwcmVhbWJsZSB0aGF0IHNwZWNp
ZmllcyB0aGUgdHlwZSBvZiB0aGUgZXJyb3Igb2JqZWN0LiAgU2tpcCB0aGlzIGJ5CisgICAgLy8g
YWR2YW5jaW5nIHVudGlsIHdlIGZpbmQgdGhlIGZpcnN0IHN0YWNrIGZyYW1lIG9yaWdpbmF0aW5n
IGZyb20gdGVzdGhhcm5lc3MuanMuCisgICAgdmFyIGkgPSAwOworICAgIHdoaWxlICghcmUudGVz
dChsaW5lc1tpXSkgJiYgaSA8IGxpbmVzLmxlbmd0aCkgeworICAgICAgICBpKys7CisgICAgfQor
CisgICAgLy8gVGhlbiBza2lwIHRoZSB0b3AgZnJhbWVzIG9yaWdpbmF0aW5nIGZyb20gdGVzdGhh
cm5lc3MuanMgdG8gYmVnaW4gdGhlIHN0YWNrIGF0IHRoZSB0ZXN0IGNvZGUuCisgICAgd2hpbGUg
KHJlLnRlc3QobGluZXNbaV0pICYmIGkgPCBsaW5lcy5sZW5ndGgpIHsKKyAgICAgICAgaSsrOwor
ICAgIH0KKworICAgIC8vIFBhcmFub2lkIGNoZWNrIHRoYXQgd2UgZGlkbid0IHNraXAgYWxsIGZy
YW1lcy4gIElmIHNvLCByZXR1cm4gdGhlIG9yaWdpbmFsIHN0YWNrIHVubW9kaWZpZWQuCisgICAg
aWYgKGkgPj0gbGluZXMubGVuZ3RoKSB7CisgICAgICAgIHJldHVybiBzdGFjazsKKyAgICB9CisK
KyAgICByZXR1cm4gbGluZXMuc2xpY2UoaSkuam9pbigiXG4iKTsKK30KKworZnVuY3Rpb24gbWFr
ZV9tZXNzYWdlKGZ1bmN0aW9uX25hbWUsIGRlc2NyaXB0aW9uLCBlcnJvciwgc3Vic3RpdHV0aW9u
cykKK3sKKyAgICBmb3IgKHZhciBwIGluIHN1YnN0aXR1dGlvbnMpIHsKKyAgICAgICAgaWYgKHN1
YnN0aXR1dGlvbnMuaGFzT3duUHJvcGVydHkocCkpIHsKKyAgICAgICAgICAgIHN1YnN0aXR1dGlv
bnNbcF0gPSBmb3JtYXRfdmFsdWUoc3Vic3RpdHV0aW9uc1twXSk7CisgICAgICAgIH0KKyAgICB9
CisgICAgdmFyIG5vZGVfZm9ybSA9IHN1YnN0aXR1dGUoWyJ7dGV4dH0iLCAiJHtmdW5jdGlvbl9u
YW1lfTogJHtkZXNjcmlwdGlvbn0iICsgZXJyb3JdLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1lcmdlKHtmdW5jdGlvbl9uYW1lOmZ1bmN0aW9uX25hbWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOihkZXNjcmlwdGlvbj9kZXNjcmlw
dGlvbiArICIgIjoiIil9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dWJzdGl0dXRpb25zKSk7CisgICAgcmV0dXJuIG5vZGVfZm9ybS5zbGljZSgxKS5qb2luKCIiKTsK
K30KKworZnVuY3Rpb24gZmlsdGVyKGFycmF5LCBjYWxsYWJsZSwgdGhpc09iaikgeworICAgIHZh
ciBydiA9IFtdOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHsK
KyAgICAgICAgaWYgKGFycmF5Lmhhc093blByb3BlcnR5KGkpKSB7CisgICAgICAgICAgICB2YXIg
cGFzcyA9IGNhbGxhYmxlLmNhbGwodGhpc09iaiwgYXJyYXlbaV0sIGksIGFycmF5KTsKKyAgICAg
ICAgICAgIGlmIChwYXNzKSB7CisgICAgICAgICAgICAgICAgcnYucHVzaChhcnJheVtpXSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJ2OworfQorCitmdW5j
dGlvbiBtYXAoYXJyYXksIGNhbGxhYmxlLCB0aGlzT2JqKQoreworICAgIHZhciBydiA9IFtdOwor
ICAgIHJ2Lmxlbmd0aCA9IGFycmF5Lmxlbmd0aDsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFy
cmF5Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmIChhcnJheS5oYXNPd25Qcm9wZXJ0eShpKSkg
eworICAgICAgICAgICAgcnZbaV0gPSBjYWxsYWJsZS5jYWxsKHRoaXNPYmosIGFycmF5W2ldLCBp
LCBhcnJheSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJ2OworfQorCitmdW5jdGlv
biBmb3JFYWNoKGFycmF5LCBjYWxsYmFjaywgdGhpc09iaikKK3sKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmIChhcnJheS5oYXNPd25Qcm9w
ZXJ0eShpKSkgeworICAgICAgICAgICAgY2FsbGJhY2suY2FsbCh0aGlzT2JqLCBhcnJheVtpXSwg
aSwgYXJyYXkpOworICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiBtZXJnZShhLGIpCit7
CisgICAgdmFyIHJ2ID0ge307CisgICAgdmFyIHA7CisgICAgZm9yIChwIGluIGEpIHsKKyAgICAg
ICAgcnZbcF0gPSBhW3BdOworICAgIH0KKyAgICBmb3IgKHAgaW4gYikgeworICAgICAgICBydltw
XSA9IGJbcF07CisgICAgfQorICAgIHJldHVybiBydjsKK30KKworZnVuY3Rpb24gc2FtZV92YWx1
ZSh4LCB5KSB7CisgICAgaWYgKHkgIT09IHkpIHsKKyAgICAgICAgLy9OYU4gY2FzZQorICAgICAg
ICByZXR1cm4geCAhPT0geDsKKyAgICB9CisgICAgaWYgKHggPT09IDAgJiYgeSA9PT0gMCkgewor
ICAgICAgICAvL0Rpc3Rpbmd1aXNoICswIGFuZCAtMAorICAgICAgICByZXR1cm4gMS94ID09PSAx
L3k7CisgICAgfQorICAgIHJldHVybiB4ID09PSB5OworfQorCitmdW5jdGlvbiBhc3NlcnRfZXF1
YWxzKGFjdHVhbCwgZXhwZWN0ZWQsIGRlc2NyaXB0aW9uKQoreworICAgICAvKgorICAgICAgKiBU
ZXN0IGlmIHR3byBwcmltaXRpdmVzIGFyZSBlcXVhbCBvciB0d28gb2JqZWN0cworICAgICAgKiBh
cmUgdGhlIHNhbWUgb2JqZWN0CisgICAgICAqLworICAgIGlmICh0eXBlb2YgYWN0dWFsICE9IHR5
cGVvZiBleHBlY3RlZCkgeworICAgICAgICBhc3NlcnQoZmFsc2UsICJhc3NlcnRfZXF1YWxzIiwg
ZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkICgiICsgdHlwZW9m
IGV4cGVjdGVkICsgIikgJHtleHBlY3RlZH0gYnV0IGdvdCAoIiArIHR5cGVvZiBhY3R1YWwgKyAi
KSAke2FjdHVhbH0iLAorICAgICAgICAgICAgICAgICAgICAgIHtleHBlY3RlZDpleHBlY3RlZCwg
YWN0dWFsOmFjdHVhbH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGFzc2VydChzYW1l
X3ZhbHVlKGFjdHVhbCwgZXhwZWN0ZWQpLCAiYXNzZXJ0X2VxdWFscyIsIGRlc2NyaXB0aW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgJHtleHBl
Y3RlZH0gYnV0IGdvdCAke2FjdHVhbH0iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB7ZXhwZWN0ZWQ6ZXhwZWN0ZWQsIGFjdHVhbDphY3R1YWx9KTsKK30KKworZnVu
Y3Rpb24gYXNzZXJ0X25vdF9lcXVhbHMoYWN0dWFsLCBleHBlY3RlZCwgZGVzY3JpcHRpb24pCit7
CisgICAgIC8qCisgICAgICAqIFRlc3QgaWYgdHdvIHByaW1pdGl2ZXMgYXJlIHVuZXF1YWwgb3Ig
dHdvIG9iamVjdHMKKyAgICAgICogYXJlIGRpZmZlcmVudCBvYmplY3RzCisgICAgICAqLworICAg
IGFzc2VydCghc2FtZV92YWx1ZShhY3R1YWwsIGV4cGVjdGVkKSwgImFzc2VydF9ub3RfZXF1YWxz
IiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiZ290IGRpc2FsbG93ZWQgdmFsdWUgJHthY3R1YWx9IiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHthY3R1YWw6YWN0dWFsfSk7Cit9CisKK2Z1bmN0aW9uIGFz
c2VydF9pbl9hcnJheShhY3R1YWwsIGV4cGVjdGVkLCBkZXNjcmlwdGlvbikKK3sKKyAgICBhc3Nl
cnQoZXhwZWN0ZWQuaW5kZXhPZihhY3R1YWwpICE9IC0xLCAiYXNzZXJ0X2luX2FycmF5IiwgZGVz
Y3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZh
bHVlICR7YWN0dWFsfSBub3QgaW4gYXJyYXkgJHtleHBlY3RlZH0iLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHthY3R1YWw6YWN0dWFsLCBleHBlY3RlZDpleHBl
Y3RlZH0pOworfQorCitmdW5jdGlvbiBhc3NlcnRfb2JqZWN0X2VxdWFscyhhY3R1YWwsIGV4cGVj
dGVkLCBkZXNjcmlwdGlvbikKK3sKKyAgICAgLy9UaGlzIG5lZWRzIHRvIGJlIGltcHJvdmVkIGEg
Z3JlYXQgZGVhbAorICAgICBmdW5jdGlvbiBjaGVja19lcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBz
dGFjaykKKyAgICAgeworICAgICAgICAgc3RhY2sucHVzaChhY3R1YWwpOworCisgICAgICAgICB2
YXIgcDsKKyAgICAgICAgIGZvciAocCBpbiBhY3R1YWwpIHsKKyAgICAgICAgICAgICBhc3NlcnQo
ZXhwZWN0ZWQuaGFzT3duUHJvcGVydHkocCksICJhc3NlcnRfb2JqZWN0X2VxdWFscyIsIGRlc2Ny
aXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InVuZXhwZWN0ZWQgcHJvcGVydHkgJHtwfSIsIHtwOnB9KTsKKworICAgICAgICAgICAgIGlmICh0
eXBlb2YgYWN0dWFsW3BdID09PSAib2JqZWN0IiAmJiBhY3R1YWxbcF0gIT09IG51bGwpIHsKKyAg
ICAgICAgICAgICAgICAgaWYgKHN0YWNrLmluZGV4T2YoYWN0dWFsW3BdKSA9PT0gLTEpIHsKKyAg
ICAgICAgICAgICAgICAgICAgIGNoZWNrX2VxdWFsKGFjdHVhbFtwXSwgZXhwZWN0ZWRbcF0sIHN0
YWNrKTsKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgIGFzc2VydChzYW1lX3ZhbHVlKGFjdHVhbFtwXSwgZXhwZWN0ZWRbcF0pLCAiYXNz
ZXJ0X29iamVjdF9lcXVhbHMiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcm9wZXJ0eSAke3B9IGV4cGVjdGVkICR7ZXhw
ZWN0ZWR9IGdvdCAke2FjdHVhbH0iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAge3A6cCwgZXhwZWN0ZWQ6ZXhwZWN0ZWQsIGFjdHVhbDphY3R1YWx9
KTsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9CisgICAgICAgICBmb3IgKHAgaW4gZXhwZWN0
ZWQpIHsKKyAgICAgICAgICAgICBhc3NlcnQoYWN0dWFsLmhhc093blByb3BlcnR5KHApLAorICAg
ICAgICAgICAgICAgICAgICAiYXNzZXJ0X29iamVjdF9lcXVhbHMiLCBkZXNjcmlwdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIHByb3BlcnR5ICR7cH0gbWlzc2luZyIsIHtwOnB9
KTsKKyAgICAgICAgIH0KKyAgICAgICAgIHN0YWNrLnBvcCgpOworICAgICB9CisgICAgIGNoZWNr
X2VxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIFtdKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X2FycmF5
X2VxdWFscyhhY3R1YWwsIGV4cGVjdGVkLCBkZXNjcmlwdGlvbikKK3sKKyAgICBhc3NlcnQoYWN0
dWFsLmxlbmd0aCA9PT0gZXhwZWN0ZWQubGVuZ3RoLAorICAgICAgICAgICAiYXNzZXJ0X2FycmF5
X2VxdWFscyIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAibGVuZ3RocyBkaWZmZXIsIGV4cGVj
dGVkICR7ZXhwZWN0ZWR9IGdvdCAke2FjdHVhbH0iLAorICAgICAgICAgICB7ZXhwZWN0ZWQ6ZXhw
ZWN0ZWQubGVuZ3RoLCBhY3R1YWw6YWN0dWFsLmxlbmd0aH0pOworCisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBhY3R1YWwubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgYXNzZXJ0KGFjdHVhbC5oYXNP
d25Qcm9wZXJ0eShpKSA9PT0gZXhwZWN0ZWQuaGFzT3duUHJvcGVydHkoaSksCisgICAgICAgICAg
ICAgICAiYXNzZXJ0X2FycmF5X2VxdWFscyIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAg
InByb3BlcnR5ICR7aX0sIHByb3BlcnR5IGV4cGVjdGVkIHRvIGJlICR7ZXhwZWN0ZWR9IGJ1dCB3
YXMgJHthY3R1YWx9IiwKKyAgICAgICAgICAgICAgIHtpOmksIGV4cGVjdGVkOmV4cGVjdGVkLmhh
c093blByb3BlcnR5KGkpID8gInByZXNlbnQiIDogIm1pc3NpbmciLAorICAgICAgICAgICAgICAg
YWN0dWFsOmFjdHVhbC5oYXNPd25Qcm9wZXJ0eShpKSA/ICJwcmVzZW50IiA6ICJtaXNzaW5nIn0p
OworICAgICAgICBhc3NlcnQoc2FtZV92YWx1ZShleHBlY3RlZFtpXSwgYWN0dWFsW2ldKSwKKyAg
ICAgICAgICAgICAgICJhc3NlcnRfYXJyYXlfZXF1YWxzIiwgZGVzY3JpcHRpb24sCisgICAgICAg
ICAgICAgICAicHJvcGVydHkgJHtpfSwgZXhwZWN0ZWQgJHtleHBlY3RlZH0gYnV0IGdvdCAke2Fj
dHVhbH0iLAorICAgICAgICAgICAgICAge2k6aSwgZXhwZWN0ZWQ6ZXhwZWN0ZWRbaV0sIGFjdHVh
bDphY3R1YWxbaV19KTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9hcHByb3hfZXF1YWxz
KGFjdHVhbCwgZXhwZWN0ZWQsIGVwc2lsb24sIGRlc2NyaXB0aW9uKQoreworICAgIC8qCisgICAg
ICogVGVzdCBpZiB0d28gcHJpbWl0aXZlIG51bWJlcnMgYXJlIGVxdWFsIHdpdGhpbmcgKy8tIGVw
c2lsb24KKyAgICAgKi8KKyAgICBhc3NlcnQodHlwZW9mIGFjdHVhbCA9PT0gIm51bWJlciIsCisg
ICAgICAgICAgICJhc3NlcnRfYXBwcm94X2VxdWFscyIsIGRlc2NyaXB0aW9uLAorICAgICAgICAg
ICAiZXhwZWN0ZWQgYSBudW1iZXIgYnV0IGdvdCBhICR7dHlwZV9hY3R1YWx9IiwKKyAgICAgICAg
ICAge3R5cGVfYWN0dWFsOnR5cGVvZiBhY3R1YWx9KTsKKworICAgIGFzc2VydChNYXRoLmFicyhh
Y3R1YWwgLSBleHBlY3RlZCkgPD0gZXBzaWxvbiwKKyAgICAgICAgICAgImFzc2VydF9hcHByb3hf
ZXF1YWxzIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICJleHBlY3RlZCAke2V4cGVjdGVkfSAr
Ly0gJHtlcHNpbG9ufSBidXQgZ290ICR7YWN0dWFsfSIsCisgICAgICAgICAgIHtleHBlY3RlZDpl
eHBlY3RlZCwgYWN0dWFsOmFjdHVhbCwgZXBzaWxvbjplcHNpbG9ufSk7Cit9CisKK2Z1bmN0aW9u
IGFzc2VydF9sZXNzX3RoYW4oYWN0dWFsLCBleHBlY3RlZCwgZGVzY3JpcHRpb24pCit7CisgICAg
LyoKKyAgICAgKiBUZXN0IGlmIGEgcHJpbWl0aXZlIG51bWJlciBpcyBsZXNzIHRoYW4gYW5vdGhl
cgorICAgICAqLworICAgIGFzc2VydCh0eXBlb2YgYWN0dWFsID09PSAibnVtYmVyIiwKKyAgICAg
ICAgICAgImFzc2VydF9sZXNzX3RoYW4iLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgImV4cGVj
dGVkIGEgbnVtYmVyIGJ1dCBnb3QgYSAke3R5cGVfYWN0dWFsfSIsCisgICAgICAgICAgIHt0eXBl
X2FjdHVhbDp0eXBlb2YgYWN0dWFsfSk7CisKKyAgICBhc3NlcnQoYWN0dWFsIDwgZXhwZWN0ZWQs
CisgICAgICAgICAgICJhc3NlcnRfbGVzc190aGFuIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAg
ICJleHBlY3RlZCBhIG51bWJlciBsZXNzIHRoYW4gJHtleHBlY3RlZH0gYnV0IGdvdCAke2FjdHVh
bH0iLAorICAgICAgICAgICB7ZXhwZWN0ZWQ6ZXhwZWN0ZWQsIGFjdHVhbDphY3R1YWx9KTsKK30K
KworZnVuY3Rpb24gYXNzZXJ0X2dyZWF0ZXJfdGhhbihhY3R1YWwsIGV4cGVjdGVkLCBkZXNjcmlw
dGlvbikKK3sKKyAgICAvKgorICAgICAqIFRlc3QgaWYgYSBwcmltaXRpdmUgbnVtYmVyIGlzIGdy
ZWF0ZXIgdGhhbiBhbm90aGVyCisgICAgICovCisgICAgYXNzZXJ0KHR5cGVvZiBhY3R1YWwgPT09
ICJudW1iZXIiLAorICAgICAgICAgICAiYXNzZXJ0X2dyZWF0ZXJfdGhhbiIsIGRlc2NyaXB0aW9u
LAorICAgICAgICAgICAiZXhwZWN0ZWQgYSBudW1iZXIgYnV0IGdvdCBhICR7dHlwZV9hY3R1YWx9
IiwKKyAgICAgICAgICAge3R5cGVfYWN0dWFsOnR5cGVvZiBhY3R1YWx9KTsKKworICAgIGFzc2Vy
dChhY3R1YWwgPiBleHBlY3RlZCwKKyAgICAgICAgICAgImFzc2VydF9ncmVhdGVyX3RoYW4iLCBk
ZXNjcmlwdGlvbiwKKyAgICAgICAgICAgImV4cGVjdGVkIGEgbnVtYmVyIGdyZWF0ZXIgdGhhbiAk
e2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfSIsCisgICAgICAgICAgIHtleHBlY3RlZDpleHBl
Y3RlZCwgYWN0dWFsOmFjdHVhbH0pOworfQorCitmdW5jdGlvbiBhc3NlcnRfYmV0d2Vlbl9leGNs
dXNpdmUoYWN0dWFsLCBsb3dlciwgdXBwZXIsIGRlc2NyaXB0aW9uKQoreworICAgIC8qCisgICAg
ICogVGVzdCBpZiBhIHByaW1pdGl2ZSBudW1iZXIgaXMgYmV0d2VlbiB0d28gb3RoZXJzCisgICAg
ICovCisgICAgYXNzZXJ0KHR5cGVvZiBhY3R1YWwgPT09ICJudW1iZXIiLAorICAgICAgICAgICAi
YXNzZXJ0X2JldHdlZW5fZXhjbHVzaXZlIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICJleHBl
Y3RlZCBhIG51bWJlciBidXQgZ290IGEgJHt0eXBlX2FjdHVhbH0iLAorICAgICAgICAgICB7dHlw
ZV9hY3R1YWw6dHlwZW9mIGFjdHVhbH0pOworCisgICAgYXNzZXJ0KGFjdHVhbCA+IGxvd2VyICYm
IGFjdHVhbCA8IHVwcGVyLAorICAgICAgICAgICAiYXNzZXJ0X2JldHdlZW5fZXhjbHVzaXZlIiwg
ZGVzY3JpcHRpb24sCisgICAgICAgICAgICJleHBlY3RlZCBhIG51bWJlciBncmVhdGVyIHRoYW4g
JHtsb3dlcn0gIiArCisgICAgICAgICAgICJhbmQgbGVzcyB0aGFuICR7dXBwZXJ9IGJ1dCBnb3Qg
JHthY3R1YWx9IiwKKyAgICAgICAgICAge2xvd2VyOmxvd2VyLCB1cHBlcjp1cHBlciwgYWN0dWFs
OmFjdHVhbH0pOworfQorCitmdW5jdGlvbiBhc3NlcnRfbGVzc190aGFuX2VxdWFsKGFjdHVhbCwg
ZXhwZWN0ZWQsIGRlc2NyaXB0aW9uKQoreworICAgIC8qCisgICAgICogVGVzdCBpZiBhIHByaW1p
dGl2ZSBudW1iZXIgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGFub3RoZXIKKyAgICAgKi8KKyAg
ICBhc3NlcnQodHlwZW9mIGFjdHVhbCA9PT0gIm51bWJlciIsCisgICAgICAgICAgICJhc3NlcnRf
bGVzc190aGFuX2VxdWFsIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICJleHBlY3RlZCBhIG51
bWJlciBidXQgZ290IGEgJHt0eXBlX2FjdHVhbH0iLAorICAgICAgICAgICB7dHlwZV9hY3R1YWw6
dHlwZW9mIGFjdHVhbH0pOworCisgICAgYXNzZXJ0KGFjdHVhbCA8PSBleHBlY3RlZCwKKyAgICAg
ICAgICAgImFzc2VydF9sZXNzX3RoYW5fZXF1YWwiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAg
ImV4cGVjdGVkIGEgbnVtYmVyIGxlc3MgdGhhbiBvciBlcXVhbCB0byAke2V4cGVjdGVkfSBidXQg
Z290ICR7YWN0dWFsfSIsCisgICAgICAgICAgIHtleHBlY3RlZDpleHBlY3RlZCwgYWN0dWFsOmFj
dHVhbH0pOworfQorCitmdW5jdGlvbiBhc3NlcnRfZ3JlYXRlcl90aGFuX2VxdWFsKGFjdHVhbCwg
ZXhwZWN0ZWQsIGRlc2NyaXB0aW9uKQoreworICAgIC8qCisgICAgICogVGVzdCBpZiBhIHByaW1p
dGl2ZSBudW1iZXIgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGFub3RoZXIKKyAgICAgKi8K
KyAgICBhc3NlcnQodHlwZW9mIGFjdHVhbCA9PT0gIm51bWJlciIsCisgICAgICAgICAgICJhc3Nl
cnRfZ3JlYXRlcl90aGFuX2VxdWFsIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICJleHBlY3Rl
ZCBhIG51bWJlciBidXQgZ290IGEgJHt0eXBlX2FjdHVhbH0iLAorICAgICAgICAgICB7dHlwZV9h
Y3R1YWw6dHlwZW9mIGFjdHVhbH0pOworCisgICAgYXNzZXJ0KGFjdHVhbCA+PSBleHBlY3RlZCwK
KyAgICAgICAgICAgImFzc2VydF9ncmVhdGVyX3RoYW5fZXF1YWwiLCBkZXNjcmlwdGlvbiwKKyAg
ICAgICAgICAgImV4cGVjdGVkIGEgbnVtYmVyIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAke2V4
cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfSIsCisgICAgICAgICAgIHtleHBlY3RlZDpleHBlY3Rl
ZCwgYWN0dWFsOmFjdHVhbH0pOworfQorCitmdW5jdGlvbiBhc3NlcnRfYmV0d2Vlbl9pbmNsdXNp
dmUoYWN0dWFsLCBsb3dlciwgdXBwZXIsIGRlc2NyaXB0aW9uKQoreworICAgIC8qCisgICAgICog
VGVzdCBpZiBhIHByaW1pdGl2ZSBudW1iZXIgaXMgYmV0d2VlbiB0byB0d28gb3RoZXJzIG9yIGVx
dWFsIHRvIGVpdGhlciBvZiB0aGVtCisgICAgICovCisgICAgYXNzZXJ0KHR5cGVvZiBhY3R1YWwg
PT09ICJudW1iZXIiLAorICAgICAgICAgICAiYXNzZXJ0X2JldHdlZW5faW5jbHVzaXZlIiwgZGVz
Y3JpcHRpb24sCisgICAgICAgICAgICJleHBlY3RlZCBhIG51bWJlciBidXQgZ290IGEgJHt0eXBl
X2FjdHVhbH0iLAorICAgICAgICAgICB7dHlwZV9hY3R1YWw6dHlwZW9mIGFjdHVhbH0pOworCisg
ICAgYXNzZXJ0KGFjdHVhbCA+PSBsb3dlciAmJiBhY3R1YWwgPD0gdXBwZXIsCisgICAgICAgICAg
ICJhc3NlcnRfYmV0d2Vlbl9pbmNsdXNpdmUiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgImV4
cGVjdGVkIGEgbnVtYmVyIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAke2xvd2VyfSAiICsKKyAg
ICAgICAgICAgImFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJHt1cHBlcn0gYnV0IGdvdCAke2Fj
dHVhbH0iLAorICAgICAgICAgICB7bG93ZXI6bG93ZXIsIHVwcGVyOnVwcGVyLCBhY3R1YWw6YWN0
dWFsfSk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF90aHJvd3MoY29kZSwgZnVuYywgZGVzY3JpcHRp
b24pCit7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYy5jYWxsKHRoaXMpOworICAgICAgICBhc3Nl
cnQoZmFsc2UsICJhc3NlcnRfdGhyb3dzIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAi
JHtmdW5jfSBkaWQgbm90IHRocm93Iiwge2Z1bmM6ZnVuY30pOworICAgIH0gY2F0Y2ggKGUpIHsK
KyAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBBc3NlcnRpb25FcnJvcikgeworICAgICAgICAgICAg
dGhyb3cgZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY29kZSA9PT0gbnVsbCkgeworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmICh0eXBlb2YgY29kZSA9PT0gIm9i
amVjdCIpIHsKKyAgICAgICAgICAgIGFzc2VydCh0eXBlb2YgZSA9PSAib2JqZWN0IiAmJiAibmFt
ZSIgaW4gZSAmJiBlLm5hbWUgPT0gY29kZS5uYW1lLAorICAgICAgICAgICAgICAgICAgICJhc3Nl
cnRfdGhyb3dzIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgIiR7ZnVuY30gdGhy
ZXcgJHthY3R1YWx9ICgke2FjdHVhbF9uYW1lfSkgZXhwZWN0ZWQgJHtleHBlY3RlZH0gKCR7ZXhw
ZWN0ZWRfbmFtZX0pIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2Z1bmM6ZnVu
YywgYWN0dWFsOmUsIGFjdHVhbF9uYW1lOmUubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGV4cGVjdGVkOmNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBleHBlY3RlZF9uYW1lOmNvZGUubmFtZX0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgdmFyIGNvZGVfbmFtZV9tYXAgPSB7CisgICAgICAgICAgICBJTkRFWF9T
SVpFX0VSUjogJ0luZGV4U2l6ZUVycm9yJywKKyAgICAgICAgICAgIEhJRVJBUkNIWV9SRVFVRVNU
X0VSUjogJ0hpZXJhcmNoeVJlcXVlc3RFcnJvcicsCisgICAgICAgICAgICBXUk9OR19ET0NVTUVO
VF9FUlI6ICdXcm9uZ0RvY3VtZW50RXJyb3InLAorICAgICAgICAgICAgSU5WQUxJRF9DSEFSQUNU
RVJfRVJSOiAnSW52YWxpZENoYXJhY3RlckVycm9yJywKKyAgICAgICAgICAgIE5PX01PRElGSUNB
VElPTl9BTExPV0VEX0VSUjogJ05vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yJywKKyAgICAgICAg
ICAgIE5PVF9GT1VORF9FUlI6ICdOb3RGb3VuZEVycm9yJywKKyAgICAgICAgICAgIE5PVF9TVVBQ
T1JURURfRVJSOiAnTm90U3VwcG9ydGVkRXJyb3InLAorICAgICAgICAgICAgSU5VU0VfQVRUUklC
VVRFX0VSUjogJ0luVXNlQXR0cmlidXRlRXJyb3InLAorICAgICAgICAgICAgSU5WQUxJRF9TVEFU
RV9FUlI6ICdJbnZhbGlkU3RhdGVFcnJvcicsCisgICAgICAgICAgICBTWU5UQVhfRVJSOiAnU3lu
dGF4RXJyb3InLAorICAgICAgICAgICAgSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSOiAnSW52YWxp
ZE1vZGlmaWNhdGlvbkVycm9yJywKKyAgICAgICAgICAgIE5BTUVTUEFDRV9FUlI6ICdOYW1lc3Bh
Y2VFcnJvcicsCisgICAgICAgICAgICBJTlZBTElEX0FDQ0VTU19FUlI6ICdJbnZhbGlkQWNjZXNz
RXJyb3InLAorICAgICAgICAgICAgVFlQRV9NSVNNQVRDSF9FUlI6ICdUeXBlTWlzbWF0Y2hFcnJv
cicsCisgICAgICAgICAgICBTRUNVUklUWV9FUlI6ICdTZWN1cml0eUVycm9yJywKKyAgICAgICAg
ICAgIE5FVFdPUktfRVJSOiAnTmV0d29ya0Vycm9yJywKKyAgICAgICAgICAgIEFCT1JUX0VSUjog
J0Fib3J0RXJyb3InLAorICAgICAgICAgICAgVVJMX01JU01BVENIX0VSUjogJ1VSTE1pc21hdGNo
RXJyb3InLAorICAgICAgICAgICAgUVVPVEFfRVhDRUVERURfRVJSOiAnUXVvdGFFeGNlZWRlZEVy
cm9yJywKKyAgICAgICAgICAgIFRJTUVPVVRfRVJSOiAnVGltZW91dEVycm9yJywKKyAgICAgICAg
ICAgIElOVkFMSURfTk9ERV9UWVBFX0VSUjogJ0ludmFsaWROb2RlVHlwZUVycm9yJywKKyAgICAg
ICAgICAgIERBVEFfQ0xPTkVfRVJSOiAnRGF0YUNsb25lRXJyb3InCisgICAgICAgIH07CisKKyAg
ICAgICAgdmFyIG5hbWUgPSBjb2RlIGluIGNvZGVfbmFtZV9tYXAgPyBjb2RlX25hbWVfbWFwW2Nv
ZGVdIDogY29kZTsKKworICAgICAgICB2YXIgbmFtZV9jb2RlX21hcCA9IHsKKyAgICAgICAgICAg
IEluZGV4U2l6ZUVycm9yOiAxLAorICAgICAgICAgICAgSGllcmFyY2h5UmVxdWVzdEVycm9yOiAz
LAorICAgICAgICAgICAgV3JvbmdEb2N1bWVudEVycm9yOiA0LAorICAgICAgICAgICAgSW52YWxp
ZENoYXJhY3RlckVycm9yOiA1LAorICAgICAgICAgICAgTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJy
b3I6IDcsCisgICAgICAgICAgICBOb3RGb3VuZEVycm9yOiA4LAorICAgICAgICAgICAgTm90U3Vw
cG9ydGVkRXJyb3I6IDksCisgICAgICAgICAgICBJblVzZUF0dHJpYnV0ZUVycm9yOiAxMCwKKyAg
ICAgICAgICAgIEludmFsaWRTdGF0ZUVycm9yOiAxMSwKKyAgICAgICAgICAgIFN5bnRheEVycm9y
OiAxMiwKKyAgICAgICAgICAgIEludmFsaWRNb2RpZmljYXRpb25FcnJvcjogMTMsCisgICAgICAg
ICAgICBOYW1lc3BhY2VFcnJvcjogMTQsCisgICAgICAgICAgICBJbnZhbGlkQWNjZXNzRXJyb3I6
IDE1LAorICAgICAgICAgICAgVHlwZU1pc21hdGNoRXJyb3I6IDE3LAorICAgICAgICAgICAgU2Vj
dXJpdHlFcnJvcjogMTgsCisgICAgICAgICAgICBOZXR3b3JrRXJyb3I6IDE5LAorICAgICAgICAg
ICAgQWJvcnRFcnJvcjogMjAsCisgICAgICAgICAgICBVUkxNaXNtYXRjaEVycm9yOiAyMSwKKyAg
ICAgICAgICAgIFF1b3RhRXhjZWVkZWRFcnJvcjogMjIsCisgICAgICAgICAgICBUaW1lb3V0RXJy
b3I6IDIzLAorICAgICAgICAgICAgSW52YWxpZE5vZGVUeXBlRXJyb3I6IDI0LAorICAgICAgICAg
ICAgRGF0YUNsb25lRXJyb3I6IDI1LAorCisgICAgICAgICAgICBFbmNvZGluZ0Vycm9yOiAwLAor
ICAgICAgICAgICAgTm90UmVhZGFibGVFcnJvcjogMCwKKyAgICAgICAgICAgIFVua25vd25FcnJv
cjogMCwKKyAgICAgICAgICAgIENvbnN0cmFpbnRFcnJvcjogMCwKKyAgICAgICAgICAgIERhdGFF
cnJvcjogMCwKKyAgICAgICAgICAgIFRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcjogMCwKKyAgICAg
ICAgICAgIFJlYWRPbmx5RXJyb3I6IDAsCisgICAgICAgICAgICBWZXJzaW9uRXJyb3I6IDAsCisg
ICAgICAgICAgICBPcGVyYXRpb25FcnJvcjogMCwKKyAgICAgICAgICAgIE5vdEFsbG93ZWRFcnJv
cjogMAorICAgICAgICB9OworCisgICAgICAgIGlmICghKG5hbWUgaW4gbmFtZV9jb2RlX21hcCkp
IHsKKyAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25FcnJvcignVGVzdCBidWc6IHVucmVj
b2duaXplZCBET01FeGNlcHRpb24gY29kZSAiJyArIGNvZGUgKyAnIiBwYXNzZWQgdG8gYXNzZXJ0
X3Rocm93cygpJyk7CisgICAgICAgIH0KKworICAgICAgICB2YXIgcmVxdWlyZWRfcHJvcHMgPSB7
IGNvZGU6IG5hbWVfY29kZV9tYXBbbmFtZV0gfTsKKworICAgICAgICBpZiAocmVxdWlyZWRfcHJv
cHMuY29kZSA9PT0gMCB8fAorICAgICAgICAgICAodHlwZW9mIGUgPT0gIm9iamVjdCIgJiYKKyAg
ICAgICAgICAgICJuYW1lIiBpbiBlICYmCisgICAgICAgICAgICBlLm5hbWUgIT09IGUubmFtZS50
b1VwcGVyQ2FzZSgpICYmCisgICAgICAgICAgICBlLm5hbWUgIT09ICJET01FeGNlcHRpb24iKSkg
eworICAgICAgICAgICAgLy8gTmV3IHN0eWxlIGV4Y2VwdGlvbjogYWxzbyB0ZXN0IHRoZSBuYW1l
IHByb3BlcnR5LgorICAgICAgICAgICAgcmVxdWlyZWRfcHJvcHMubmFtZSA9IG5hbWU7CisgICAg
ICAgIH0KKworICAgICAgICAvL1dlJ2QgbGlrZSB0byB0ZXN0IHRoYXQgZSBpbnN0YW5jZW9mIHRo
ZSBhcHByb3ByaWF0ZSBpbnRlcmZhY2UsCisgICAgICAgIC8vYnV0IHdlIGNhbid0LCBiZWNhdXNl
IHdlIGRvbid0IGtub3cgd2hhdCB3aW5kb3cgaXQgd2FzIGNyZWF0ZWQKKyAgICAgICAgLy9pbi4g
IEl0IG1pZ2h0IGJlIGFuIGluc3RhbmNlb2YgdGhlIGFwcHJvcHJpYXRlIGludGVyZmFjZSBvbiBz
b21lCisgICAgICAgIC8vdW5rbm93biBvdGhlciB3aW5kb3cuICBUT0RPOiBXb3JrIGFyb3VuZCB0
aGlzIHNvbWVob3c/CisKKyAgICAgICAgYXNzZXJ0KHR5cGVvZiBlID09ICJvYmplY3QiLAorICAg
ICAgICAgICAgICAgImFzc2VydF90aHJvd3MiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAg
ICIke2Z1bmN9IHRocmV3ICR7ZX0gd2l0aCB0eXBlICR7dHlwZX0sIG5vdCBhbiBvYmplY3QiLAor
ICAgICAgICAgICAgICAge2Z1bmM6ZnVuYywgZTplLCB0eXBlOnR5cGVvZiBlfSk7CisKKyAgICAg
ICAgZm9yICh2YXIgcHJvcCBpbiByZXF1aXJlZF9wcm9wcykgeworICAgICAgICAgICAgYXNzZXJ0
KHR5cGVvZiBlID09ICJvYmplY3QiICYmIHByb3AgaW4gZSAmJiBlW3Byb3BdID09IHJlcXVpcmVk
X3Byb3BzW3Byb3BdLAorICAgICAgICAgICAgICAgICAgICJhc3NlcnRfdGhyb3dzIiwgZGVzY3Jp
cHRpb24sCisgICAgICAgICAgICAgICAgICAgIiR7ZnVuY30gdGhyZXcgJHtlfSB0aGF0IGlzIG5v
dCBhIERPTUV4Y2VwdGlvbiAiICsgY29kZSArICI6IHByb3BlcnR5ICR7cHJvcH0gaXMgZXF1YWwg
dG8gJHthY3R1YWx9LCBleHBlY3RlZCAke2V4cGVjdGVkfSIsCisgICAgICAgICAgICAgICAgICAg
e2Z1bmM6ZnVuYywgZTplLCBwcm9wOnByb3AsIGFjdHVhbDplW3Byb3BdLCBleHBlY3RlZDpyZXF1
aXJlZF9wcm9wc1twcm9wXX0pOworICAgICAgICB9CisgICAgfQorfQorCisvKgorICogUmV0dXJu
IHRydWUgaWYgb2JqZWN0IGlzIHByb2JhYmx5IGEgTm9kZSBvYmplY3QuCisgKi8KK2Z1bmN0aW9u
IGlzX25vZGUob2JqZWN0KQoreworICAgIC8vIEkgdXNlIGR1Y2stdHlwaW5nIGluc3RlYWQgb2Yg
aW5zdGFuY2VvZiwgYmVjYXVzZQorICAgIC8vIGluc3RhbmNlb2YgZG9lc24ndCB3b3JrIGlmIHRo
ZSBub2RlIGlzIGZyb20gYW5vdGhlciB3aW5kb3cgKGxpa2UgYW4KKyAgICAvLyBpZnJhbWUncyBj
b250ZW50V2luZG93KToKKyAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9CdWdzL1B1YmxpYy9zaG93
X2J1Zy5jZ2k/aWQ9MTIyOTUKKyAgICB0cnkgeworICAgICAgICB2YXIgaGFzX25vZGVfcHJvcGVy
dGllcyA9ICgibm9kZVR5cGUiIGluIG9iamVjdCAmJgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAibm9kZU5hbWUiIGluIG9iamVjdCAmJgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAibm9kZVZhbHVlIiBpbiBvYmplY3QgJiYKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImNoaWxkTm9kZXMiIGluIG9iamVjdCk7CisgICAgfSBjYXRjaCAo
ZSkgeworICAgICAgICAvLyBXZSdyZSBwcm9iYWJseSBjcm9zcy1vcmlnaW4sIHdoaWNoIG1lYW5z
IHdlIGFyZW4ndCBhIG5vZGUKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlm
IChoYXNfbm9kZV9wcm9wZXJ0aWVzKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBvYmpl
Y3Qubm9kZVR5cGU7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIC8vIFRoZSBv
YmplY3QgaXMgcHJvYmFibHkgTm9kZS5wcm90b3R5cGUgb3IgYW5vdGhlciBwcm90b3R5cGUKKyAg
ICAgICAgICAgIC8vIG9iamVjdCB0aGF0IGluaGVyaXRzIGZyb20gaXQsIGFuZCBub3QgYSBOb2Rl
IGluc3RhbmNlLgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZhciByZXBsYWNl
bWVudHMgPSB7CisgICAgIjAiOiAiMCIsCisgICAgIjEiOiAieDAxIiwKKyAgICAiMiI6ICJ4MDIi
LAorICAgICIzIjogIngwMyIsCisgICAgIjQiOiAieDA0IiwKKyAgICAiNSI6ICJ4MDUiLAorICAg
ICI2IjogIngwNiIsCisgICAgIjciOiAieDA3IiwKKyAgICAiOCI6ICJiIiwKKyAgICAiOSI6ICJ0
IiwKKyAgICAiMTAiOiAibiIsCisgICAgIjExIjogInYiLAorICAgICIxMiI6ICJmIiwKKyAgICAi
MTMiOiAiciIsCisgICAgIjE0IjogIngwZSIsCisgICAgIjE1IjogIngwZiIsCisgICAgIjE2Ijog
IngxMCIsCisgICAgIjE3IjogIngxMSIsCisgICAgIjE4IjogIngxMiIsCisgICAgIjE5IjogIngx
MyIsCisgICAgIjIwIjogIngxNCIsCisgICAgIjIxIjogIngxNSIsCisgICAgIjIyIjogIngxNiIs
CisgICAgIjIzIjogIngxNyIsCisgICAgIjI0IjogIngxOCIsCisgICAgIjI1IjogIngxOSIsCisg
ICAgIjI2IjogIngxYSIsCisgICAgIjI3IjogIngxYiIsCisgICAgIjI4IjogIngxYyIsCisgICAg
IjI5IjogIngxZCIsCisgICAgIjMwIjogIngxZSIsCisgICAgIjMxIjogIngxZiIsCisgICAgIjB4
ZmZmZCI6ICJ1ZmZmZCIsCisgICAgIjB4ZmZmZSI6ICJ1ZmZmZSIsCisgICAgIjB4ZmZmZiI6ICJ1
ZmZmZiIsCit9OworCitmdW5jdGlvbiBleHRlbmQoYXJyYXksIGl0ZW1zKQoreworICAgIEFycmF5
LnByb3RvdHlwZS5wdXNoLmFwcGx5KGFycmF5LCBpdGVtcyk7Cit9CisKK2Z1bmN0aW9uIGdldF9z
Y3JpcHRfdXJsKCkKK3sKKyAgICByZXR1cm4gIi8iOworfQorCisvKgorICogUmV0dXJuIGEgc3Ry
aW5nIHRydW5jYXRlZCB0byB0aGUgZ2l2ZW4gbGVuZ3RoLCB3aXRoIC4uLiBhZGRlZCBhdCB0aGUg
ZW5kCisgKiBpZiBpdCB3YXMgbG9uZ2VyLgorICovCitmdW5jdGlvbiB0cnVuY2F0ZShzLCBsZW4p
Cit7CisgICAgaWYgKHMubGVuZ3RoID4gbGVuKSB7CisgICAgICAgIHJldHVybiBzLnN1YnN0cmlu
ZygwLCBsZW4gLSAzKSArICIuLi4iOworICAgIH0KKyAgICByZXR1cm4gczsKK30KKworZnVuY3Rp
b24gYXNzZXJ0X3RydWUoYWN0dWFsLCBkZXNjcmlwdGlvbikKK3sKKyAgICBhc3NlcnQoYWN0dWFs
ID09PSB0cnVlLCAiYXNzZXJ0X3RydWUiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiZXhwZWN0ZWQgdHJ1ZSBnb3QgJHthY3R1YWx9Iiwge2FjdHVhbDphY3R1YWx9
KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X2ZhbHNlKGFjdHVhbCwgZGVzY3JpcHRpb24pCit7Cisg
ICAgYXNzZXJ0KGFjdHVhbCA9PT0gZmFsc2UsICJhc3NlcnRfZmFsc2UiLCBkZXNjcmlwdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIGZhbHNlIGdvdCAke2FjdHVh
bH0iLCB7YWN0dWFsOmFjdHVhbH0pOworfQorCitmdW5jdGlvbiB0ZXN0KHRzdCwgbmFtZSkgewor
ICB0cnkgeworICAgIHRzdCgpOworICB9IGNhdGNoIChlKSB7CisgICAgaWYgKCFQYWludFdvcmts
ZXRHbG9iYWxTY29wZS5lcnJvcnMpCisgICAgICBQYWludFdvcmtsZXRHbG9iYWxTY29wZS5lcnJv
cnMgPSBbXTsKKyAgICAgIFBhaW50V29ya2xldEdsb2JhbFNjb3BlLmVycm9ycy5wdXNoKHsgbmFt
ZTogbmFtZSwgZXJyb3I6IGUubWVzc2FnZSB9KTsKKyAgfQorICBQYWludFdvcmtsZXRHbG9iYWxT
Y29wZS5oYXNSdW5BVGVzdCA9IHRydWU7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy1jdXN0b20tcGFpbnQvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xYjEzZDQzMjkwZjgzNGQwZjlhNjk5MzA1MDBhNjdhYzE1YmY1ZWRmCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5qcwpAQCAtMCwwICsxLDIzIEBACitpZiAod2luZG93LnRlc3RSdW5uZXIpIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOworCisvLyBJbXBvcnRzIGNvZGUgaW50byBhIHdvcmtsZXQsIHdp
dGggc29tZSBoZWxwZXJzLgorYXN5bmMgZnVuY3Rpb24gaW1wb3J0V29ya2xldCh3b3JrbGV0LCBj
b2RlKSB7CisgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goInJlc291cmNlcy90ZXN0aGFy
bmVzcy13b3JrbGV0LmpzIik7CisgIGNvbnN0IGZpbmFsQ29kZSA9IChhd2FpdCByZXNwb25zZS50
ZXh0KCkpICsgY29kZTsKKworICBsZXQgdXJsOworICAvLyBGSVhNRTogVGhpcyBpcyB0ZW1wb3Jh
cnksIHVudGlsIHdlIHN1cHBvcnQgbG9hZGluZyBzY3JpcHRzIGJ5IHVybAorICBpZiAod2luZG93
LmNocm9tZSkgeworICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbZmluYWxDb2RlXSwge3R5cGU6
ICd0ZXh0L2phdmFzY3JpcHQnfSk7CisgICAgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9i
KTsKKyAgfSBlbHNlIHsKKyAgICB1cmwgPSBmaW5hbENvZGU7CisgIH0KKworICB3b3JrbGV0LmFk
ZE1vZHVsZSh1cmwpOworICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeworICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfSwgMzAw
MCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWlu
dC93b3JrbGV0LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFp
bnQvd29ya2xldC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiNDJiNjJkYTEzZWRhODE5NjEw
YjMxOTdiNGU0NWE1NDczYmRjZjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy1jdXN0b20tcGFpbnQvd29ya2xldC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTYgQEAK
KzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFsOkNT
U1BhaW50aW5nQVBJRW5hYmxlZD10cnVlIF0gLS0+CisKKzxjYW52YXMgaWQ9InBhaW50IiB3aWR0
aD0iMTUwcHgiIGhlaWdodD0iMTUwcHgiID48L2NhbnZhcz4KKworPHNjcmlwdCBpZD0iY29kZSI+
Cit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhaW50Jyk7Cit2YXIgY3R4
ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsr
KXsKKyAgZm9yICh2YXIgaiA9IDA7IGogPCA2OyBqKyspeworICAgIGN0eC5maWxsU3R5bGUgPSAn
cmdiKCcgKyBNYXRoLmZsb29yKDI1NSAtIDQyLjUgKiBpKSArICcsJyArCisgICAgICAgICAgICAg
ICAgICAgICBNYXRoLmZsb29yKDI1NSAtIDQyLjUgKiBqKSArICcsMCknOworICAgIGN0eC5maWxs
UmVjdChqICogMjUsIGkgKiAyNSwgMjUsIDI1KTsKKyAgfQorfQorPC9zY3JpcHQ+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvd29ya2xldC5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3dvcmtsZXQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
Y2ZmOTM1Njg1MzQyMDRhMmFhMGNjNmU4ZDllODk0NDAxMmUyZTY1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3dvcmtsZXQuaHRtbApAQCAtMCww
ICsxLDQyIEBACis8IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGV4cGVy
aW1lbnRhbDpDU1NQYWludGluZ0FQSUVuYWJsZWQ9dHJ1ZSBdIC0tPgorPG1ldGEgbmFtZT0iYXV0
aG9yIiB0aXRsZT0iSnVzdGluIE1pY2hhdWQiIGhyZWY9Im1haWx0bzpqdXN0aW5fbWljaGF1ZEB3
ZWJraXQub3JnIj4KKzxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0iVGVzdCB3b3JrbGV0IGFk
ZE1vZHVsZSBhbmQgZ2xvYmFsIG9iamVjdCI+Cis8bGluayByZWw9ImhlbHAiIGNvbnRlbnQ9Imh0
dHBzOi8vZHJhZnRzLmNzcy1ob3VkaW5pLm9yZy9jc3MtcGFpbnQtYXBpLTEvIj4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorCis8c3R5bGU+CisgICNw
YWludCB7CisgICAgYmFja2dyb3VuZC1pbWFnZTogcGFpbnQobXktcGFpbnQpOworICAgIHdpZHRo
OiAxNTBweDsKKyAgICBoZWlnaHQ6IDE1MHB4OworICB9Cis8L3N0eWxlPgorCis8ZGl2IGlkPSJw
YWludCI+PC9kaXY+CisKKzxzY3JpcHQgaWQ9ImNvZGUiIHR5cGU9InRleHQvd29ya2xldCI+Citj
bGFzcyBNeVBhaW50IHsKKyAgcGFpbnQoY3R4LCBnZW9tLCBwcm9wZXJ0aWVzKSB7CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspeworICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA2OyBq
KyspeworICAgICAgICBjdHguZmlsbFN0eWxlID0gJ3JnYignICsgTWF0aC5mbG9vcigyNTUgLSA0
Mi41ICogaSkgKyAnLCcgKworICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGguZmxvb3IoMjU1
IC0gNDIuNSAqIGopICsgJywwKSc7CisgICAgICAgIGN0eC5maWxsUmVjdChqICogMjUsIGkgKiAy
NSwgMjUsIDI1KTsKKyAgICAgIH0KKyAgICB9CisgICAgY29uc29sZS5sb2coIkhlbGxvIGZyb20g
cGFpbnQgY2FsbGJhY2shIik7CisgICAgYXNzZXJ0X2dyZWF0ZXJfdGhhbihldmFsKCJkZXZpY2VQ
aXhlbFJhdGlvIiksIDApOworICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1JlZmVyZW5jZUVy
cm9yJ30sIGZ1bmN0aW9uICgpIHsgZXZhbCgid2luZG93Iik7IH0pOworCisgICAgY29uc3QgcHJv
bWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsgY29uc29sZS5sb2coIklu
IHByb21pc2UiKTsgcmVzb2x2ZSgpIH0pOworICAgIHByb21pc2UudGhlbigoKSA9PiBjb25zb2xl
LmxvZygiUHJvbWlzZSB3YXMgcmVzb2x2ZWQiKSk7CisgIH0KK30KK2NvbnNvbGUubG9nKCJIZWxs
byBmcm9tIHBhaW50IHdvcmtsZXQhIik7CityZWdpc3RlclBhaW50KCdteS1wYWludCcsIE15UGFp
bnQpOworY29uc29sZS5sb2coV2luZG93KTsgLy8gdGVzdCB0aGF0IHVuY2F1Z2h0IGV4Y2VwdGlv
bnMgZG8gbm90IGFmZmVjdCByZWdpc3RlcmVkIHBhaW50IGNhbGxiYWNrcworPC9zY3JpcHQ+CisK
KzxzY3JpcHQ+CitpbXBvcnRXb3JrbGV0KENTUy5wYWludFdvcmtsZXQsIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdjb2RlJykudGV4dENvbnRlbnQpOworPC9zY3JpcHQ+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>