<?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>123472</bug_id>
          
          <creation_ts>2013-10-29 14:38:58 -0700</creation_ts>
          <short_desc>Add InvalidationPoints to the DFG and use them for all watchpoints</short_desc>
          <delta_ts>2013-10-30 20:00:11 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>113647</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>joepeck</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>ossy</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>944614</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-29 14:38:58 -0700</bug_when>
    <thetext>This allows CodeBlock::jettison() to have stronger semantics: it now means that the receiving code block will not continue execution past the current bytecode instruction(s).

Example #1: CodeBlock A is not currently on the stack.  A-&gt;jettison() will ensure that A is never executed again.

Example #2: CodeBlock A is on the stack in a call instruction.  A-&gt;jettison() will allow the call instruction to complete in A, but before the next bytecode instruction executes, A will exit to baseline code.  Also A will never be executed again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944625</commentid>
    <comment_count>1</comment_count>
      <attachid>215430</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-29 14:52:30 -0700</bug_when>
    <thetext>Created attachment 215430
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945093</commentid>
    <comment_count>2</comment_count>
      <attachid>215430</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-10-30 11:54:22 -0700</bug_when>
    <thetext>Comment on attachment 215430
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945131</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-30 12:56:45 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/158304</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945142</commentid>
    <comment_count>4</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-10-30 13:04:58 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Landed in http://trac.webkit.org/changeset/158304

FYI: It broke the Apple Windows build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945143</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-30 13:05:28 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; Landed in http://trac.webkit.org/changeset/158304
&gt; 
&gt; FYI: It broke the Apple Windows build.

I&apos;m looking!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945144</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-30 13:13:47 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; (In reply to comment #3)
&gt; &gt; &gt; Landed in http://trac.webkit.org/changeset/158304
&gt; &gt; 
&gt; &gt; FYI: It broke the Apple Windows build.
&gt; 
&gt; I&apos;m looking!

Fix in r158307.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945147</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-30 13:21:11 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; (In reply to comment #4)
&gt; &gt; &gt; (In reply to comment #3)
&gt; &gt; &gt; &gt; Landed in http://trac.webkit.org/changeset/158304
&gt; &gt; &gt; 
&gt; &gt; &gt; FYI: It broke the Apple Windows build.
&gt; &gt; 
&gt; &gt; I&apos;m looking!
&gt; 
&gt; Fix in r158307.

And another fix in r158308.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945160</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-10-30 13:33:45 -0700</bug_when>
    <thetext>Looks like debug builds are still broken:
http://build.webkit.org/builders/Apple%20MountainLion%20Debug%20%28Build%29/builds/17934/steps/compile-webkit/logs/stdio

/Volumes/Data/slave/mountainlion-debug/build/WebKitBuild/Debug/JavaScriptCore.framework/PrivateHeaders/AbstractMacroAssembler.h:805:31: error: no member named &apos;getDifferenceBetweenLabels&apos; in &apos;JSC::AssemblerLabel&apos;
        return AssemblerType::getDifferenceBetweenLabels(from.m_label, to.m_label);
               ~~~~~~~~~~~~~~~^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945173</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-30 13:57:39 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Looks like debug builds are still broken:
&gt; http://build.webkit.org/builders/Apple%20MountainLion%20Debug%20%28Build%29/builds/17934/steps/compile-webkit/logs/stdio
&gt; 
&gt; /Volumes/Data/slave/mountainlion-debug/build/WebKitBuild/Debug/JavaScriptCore.framework/PrivateHeaders/AbstractMacroAssembler.h:805:31: error: no member named &apos;getDifferenceBetweenLabels&apos; in &apos;JSC::AssemblerLabel&apos;
&gt;         return AssemblerType::getDifferenceBetweenLabels(from.m_label, to.m_label);
&gt;                ~~~~~~~~~~~~~~~^
&gt; fatal error: too many errors emitted, stopping now [-ferror-limit=]
&gt; 20 errors generated.

Fix landed in r158313.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945212</commentid>
    <comment_count>10</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-10-30 15:57:53 -0700</bug_when>
    <thetext>I&apos;m seeing ASSERTs opening the inspector in Debug builds on ToT (r158318). Might be related to this change (I haven&apos;t verified yet though):

ASSERTION FAILED: jitType() == JITCode::None
/Volumes/Data/Code/safari/OpenSource/Source/JavaScriptCore/bytecode/CodeBlock.cpp(2481) : JSC::CodeBlock *JSC::CodeBlock::baselineVersion()
1   0x102641170 WTFCrash
2   0x102044d11 JSC::CodeBlock::baselineVersion()
3   0x1020fe6c0 JSC::ProfiledCodeBlockJettisoningWatchpoint::fireInternal()
4   0x1025ffcc6 JSC::Watchpoint::fire()
5   0x1025ff72f JSC::WatchpointSet::fireAllWatchpoints()
6   0x1025ff820 JSC::WatchpointSet::notifyWriteSlow()
7   0x1022c997c JSC::WatchpointSet::notifyWrite()
8   0x102345737 JSC::InlineWatchpointSet::notifyWrite()
9   0x1025c3bac JSC::Structure::notifyTransitionFromThisStructure() const
10  0x1025bfef9 JSC::Structure::Structure(JSC::VM&amp;, JSC::Structure const*)
11  0x1025bfb95 JSC::Structure::Structure(JSC::VM&amp;, JSC::Structure const*)
12  0x1025c49d6 JSC::Structure::create(JSC::VM&amp;, JSC::Structure const*)
13  0x1025c0d53 JSC::Structure::addPropertyTransition(JSC::VM&amp;, JSC::Structure*, JSC::PropertyName, unsigned int, JSC::JSCell*, int&amp;, JSC::PutPropertySlot::Context)
14  0x101fca3e6 bool JSC::JSObject::putDirectInternal&lt;(JSC::JSObject::PutMode)1&gt;(JSC::VM&amp;, JSC::PropertyName, JSC::JSValue, unsigned int, JSC::PutPropertySlot&amp;, JSC::JSCell*)
15  0x101fc809b JSC::JSObject::putDirect(JSC::VM&amp;, JSC::PropertyName, JSC::JSValue, unsigned int)
16  0x10237d5d5 JSC::JSObject::putDirectNativeFunction(JSC::VM&amp;, JSC::JSGlobalObject*, JSC::PropertyName const&amp;, unsigned int, long long (*)(JSC::ExecState*), JSC::Intrinsic, unsigned int)
17  0x102421cd8 JSC::setUpStaticFunctionSlot(JSC::ExecState*, JSC::HashEntry const*, JSC::JSObject*, JSC::PropertyName, JSC::PropertySlot&amp;)
18  0x1023567b4 bool JSC::getStaticFunctionSlot&lt;JSC::JSSegmentedVariableObject&gt;(JSC::ExecState*, JSC::HashTable const&amp;, JSC::JSObject*, JSC::PropertyName, JSC::PropertySlot&amp;)
19  0x102346904 JSC::JSGlobalObject::getOwnPropertySlot(JSC::JSObject*, JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&amp;)
20  0x1023a0ef6 JSC::abstractAccess(JSC::ExecState*, JSC::JSScope*, JSC::Identifier const&amp;, JSC::GetOrPut, unsigned long, bool&amp;, JSC::ResolveOp&amp;)
21  0x1023a0991 JSC::JSScope::abstractResolve(JSC::ExecState*, JSC::JSScope*, JSC::Identifier const&amp;, JSC::GetOrPut, JSC::ResolveType)
22  0x102041fb7 JSC::CodeBlock::CodeBlock(JSC::ScriptExecutable*, JSC::UnlinkedCodeBlock*, JSC::JSScope*, WTF::PassRefPtr&lt;JSC::SourceProvider&gt;, unsigned int, unsigned int)
23  0x10229907b JSC::FunctionCodeBlock::FunctionCodeBlock(JSC::FunctionExecutable*, JSC::UnlinkedFunctionCodeBlock*, JSC::JSScope*, WTF::PassRefPtr&lt;JSC::SourceProvider&gt;, unsigned int, unsigned int)
24  0x102296961 JSC::FunctionCodeBlock::FunctionCodeBlock(JSC::FunctionExecutable*, JSC::UnlinkedFunctionCodeBlock*, JSC::JSScope*, WTF::PassRefPtr&lt;JSC::SourceProvider&gt;, unsigned int, unsigned int)
25  0x1022940fd JSC::ScriptExecutable::newCodeBlockFor(JSC::CodeSpecializationKind, JSC::JSScope*, JSC::JSObject*&amp;)
26  0x1022945d2 JSC::ScriptExecutable::prepareForExecutionImpl(JSC::ExecState*, JSC::JSScope*, JSC::CodeSpecializationKind)
27  0x101fe4ced JSC::ScriptExecutable::prepareForExecution(JSC::ExecState*, JSC::JSScope*, JSC::CodeSpecializationKind)
28  0x102420d1a JSC::LLInt::setUpCall(JSC::ExecState*, JSC::Instruction*, JSC::CodeSpecializationKind, JSC::JSValue, JSC::LLIntCallLinkInfo*)
29  0x102420bcc JSC::LLInt::genericCall(JSC::ExecState*, JSC::Instruction*, JSC::CodeSpecializationKind)
30  0x10241d02c llint_slow_path_call
31  0x10242644d llint_op_call</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945323</commentid>
    <comment_count>11</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-10-30 20:00:11 -0700</bug_when>
    <thetext>It looks like multiple 4~5+ layout tests started hitting assertions after this patch.

Filed https://bugs.webkit.org/show_bug.cgi?id=123551 to track these assertion failures.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215430</attachid>
            <date>2013-10-29 14:52:30 -0700</date>
            <delta_ts>2013-10-30 11:54:22 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>131988</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU4MjI4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3MSBA
QAorMjAxMy0xMC0yOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEFkZCBJbnZhbGlkYXRpb25Qb2ludHMgdG8gdGhlIERGRyBhbmQgdXNlIHRoZW0gZm9yIGFsbCB3
YXRjaHBvaW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTIzNDcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAg
IAorICAgICAgICBUaGlzIG1ha2VzIGEgZnVuZGFtZW50YWwgY2hhbmdlIHRvIGhvdyB3YXRjaHBv
aW50cyB3b3JrIGluIHRoZSBERkcuCisgICAgICAgIAorICAgICAgICBQcmV2aW91c2x5LCBhIHdh
dGNocG9pbnQgd2FzIGFuIGluc3RydWN0aW9uIHdob3NlIGV4ZWN1dGlvbiBzZW1hbnRpY3Mgd2Vy
ZSBzb21ldGhpbmcKKyAgICAgICAgbGlrZToKKyAgICAgICAgCisgICAgICAgICAgICBpZiAod2F0
Y2hwb2ludC0+aW52YWxpZGF0ZWQpCisgICAgICAgICAgICAgICAgZXhpdAorICAgICAgICAKKyAg
ICAgICAgV2Ugd291bGQgaW1wbGVtZW50IHRoaXMgd2l0aG91dCBhbnkgYnJhbmNoIGJ5IHVzaW5n
IGp1bXAgcmVwbGFjZW1lbnQuCisgICAgICAgIAorICAgICAgICBUaGlzIGlzIGEgdmVyeSBnb29k
IG9wdGltaXphdGlvbi4gQnV0IGl0J3MgYSBiaXQgYXdrd2FyZCBvbmNlIHlvdSBnZXQgYSBsb3Qg
b2YKKyAgICAgICAgd2F0Y2hwb2ludHM6IHNlbWFudGljYWxseSB3ZSB3aWxsIGhhdmUgbG90cyBv
ZiB0aGVzZSBicmFuY2hlcyBpbiB0aGUgY29kZSwgd2hpY2ggdGhlCisgICAgICAgIGNvbXBpbGVy
IG5lZWRzIHRvIHJlYXNvbiBhYm91dCBldmVuIHRob3VnaCB0aGV5IGRvbid0IGFjdHVhbGx5IHJl
c3VsdCBpbiBhbnkgZW1pdHRlZAorICAgICAgICBjb2RlLgorICAgICAgICAKKyAgICAgICAgU2Vw
YXJhdGVseSwgd2UgYWxzbyBoYWQgYSBtZWNoYW5pc20gZm9yIGpldHRpc29uaW5nIGEgQ29kZUJs
b2NrLiBUaGlzIG1lY2hhbmlzbSB3b3VsZAorICAgICAgICBiZSBpbnZva2VkIGlmIGEgQ29kZUJs
b2NrIGV4aXRlZCBhIGxvdC4gSXQgd291bGQgZW5zdXJlIHRoYXQgYSBDb2RlQmxvY2sgd291bGRu
J3QgYmUKKyAgICAgICAgY2FsbGVkIGludG8gYWdhaW4sIGJ1dCBpdCB3b3VsZCBkbyBub3RoaW5n
IGZvciBDb2RlQmxvY2tzIHRoYXQgd2VyZSBhbHJlYWR5IG9uIHRoZQorICAgICAgICBzdGFjay4K
KyAgICAgICAgCisgICAgICAgIFRoaXMgY2hhbmdlIGZsaXBzIGpldHRpc29uaW5nIGFuZCB3YXRj
aHBvaW50IGludmFsaWRhdGlvbiBvbiB0aGVpciBoZWFkcy4gTm93LCB0aGUganVtcAorICAgICAg
ICByZXBsYWNlbWVudCBoYXMgbm90aGluZyB0byBkbyB3aXRoIHdhdGNocG9pbnRzOyBpbnN0ZWFk
IGl0J3Mgc29tZXRoaW5nIHRoYXQgaGFwcGVucyBpZgorICAgICAgICB5b3UgZXZlciBqZXR0aXNv
biBhIENvZGVCbG9jay4gSnVtcCByZXBsYWNlbWVudCBpcyBub3cgYW4gYWxsLW9yLW5vdGhpbmcg
b3BlcmF0aW9uIG92ZXIKKyAgICAgICAgYWxsIG9mIHRoZSBwb3RlbnRpYWwgY2FsbC1yZXR1cm4g
c2FmZS1leGl0LXBvaW50cyBpbiBhIENvZGVCbG9jay4gV2UgY2FsbCB0aGVzZQorICAgICAgICAi
SW52YWxpZGF0aW9uUG9pbnQicy4gQSB3YXRjaHBvaW50IGluc3RydWN0aW9uIGlzIG5vdyAibG93
ZXJlZCIgYnkgaGF2aW5nIHRoZSBERkcKKyAgICAgICAgY29sbGVjdCBhbGwgb2YgdGhlIHdhdGNo
cG9pbnQgc2V0cyB0aGF0IHRoZSBDb2RlQmxvY2sgY2FyZXMgYWJvdXQsIGFuZCB0aGVuIHJlZ2lz
dGVyaW5nCisgICAgICAgIGEgQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50IHdpdGggYWxs
IG9mIHRoZW0uIFRoYXQgaXMsIGlmIHRoZSB3YXRjaHBvaW50IGZpcmVzLCBpdAorICAgICAgICBq
ZXR0aXNvbnMgdGhlIENvZGVCbG9jaywgd2hpY2ggaW4gdHVybiBlbnN1cmVzIHRoYXQgdGhlIENv
ZGVCbG9jayBjYW4ndCBiZSBjYWxsZWQgaW50bworICAgICAgICAoYmVjYXVzZSB0aGUgZW50cnlw
b2ludCBub3cgcG9pbnRzIHRvIGJhc2VsaW5lIGNvZGUpIGFuZCBjYW4ndCBiZSByZXR1cm5lZCBp
bnRvCisgICAgICAgIChiZWNhdXNlIHJldHVybmluZyBleGl0cyB0byBiYXNlbGluZSBiZWZvcmUg
dGhlIG5leHQgYnl0ZWNvZGUgaW5zdHJ1Y3Rpb24pLgorICAgICAgICAKKyAgICAgICAgVGhpcyB3
aWxsIGFsbG93IGZvciBhIHNlbnNpYmxlIGxvd2VyaW5nIG9mIHdhdGNocG9pbnRzIHRvIExMVk0g
SVIuIEl0IHdpbGwgYWxzbyBhbGxvdworICAgICAgICBmb3IgamV0dGlzb24oKSB0byBiZSB1c2Vk
IGVmZmVjdGl2ZWx5IGZvciB0aGluZ3MgbGlrZSBicmVha3BvaW50aW5nIGFuZCBzaW5nbGUtc3Rl
cHBpbmcKKyAgICAgICAgaW4gdGhlIGRlYnVnZ2VyLgorICAgICAgICAKKyAgICAgICAgV2VsbCwg
YmFzaWNhbGx5LCB0aGlzIG1lY2hhbmlzbSBqdXN0IHRha2VzIHVzIGludG8gdGhlIEhvdFNwb3Qt
c3R5bGUgd29ybGQgd2hlcmUgYW55b25lCisgICAgICAgIGNhbiwgYXQgYW55IHRpbWUgYW5kIGZv
ciBhbnkgcmVhc29uLCByZXF1ZXN0IHRoYXQgYW4gb3B0aW1pemVkIENvZGVCbG9jayBpcyByZW5k
ZXJlZAorICAgICAgICBpbW1lZGlhdGVseSBpbnZhbGlkLiBZb3UgY2FuIHVzZSB0aGlzIGZvciBt
YW55IGNvb2wgdGhpbmdzLCBJJ20gc3VyZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYXNzZW1ibGVyL0Fic3RyYWN0
TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OmpldHRpc29uKToKKyAgICAgICAgKiBieXRlY29kZS9Db2Rl
QmxvY2suaDoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9p
bnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBv
aW50OjpmaXJlSW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9ja0pldHRpc29u
aW5nV2F0Y2hwb2ludC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrSmV0dGlzb25p
bmdXYXRjaHBvaW50OjpDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQpOgorICAgICAgICAq
IGJ5dGVjb2RlL0V4aXRLaW5kLmNwcDoKKyAgICAgICAgKEpTQzo6ZXhpdEtpbmRUb1N0cmluZyk6
CisgICAgICAgICogYnl0ZWNvZGUvRXhpdEtpbmQuaDoKKyAgICAgICAgKiBieXRlY29kZS9Qcm9m
aWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpQcm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludDo6ZmlyZUludGVybmFs
KToKKyAgICAgICAgKiBieXRlY29kZS9Qcm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hw
b2ludC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6UHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmlu
Z1dhdGNocG9pbnQ6OlByb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50KToKKyAg
ICAgICAgKiBkZmcvREZHQWJzdHJhY3RIZWFwLmg6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6OjpleGVjdXRlRWZmZWN0
cyk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OndyaXRlc092ZXJsYXApOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RIZWFw
T3ZlcmxhcHM6OkFic3RyYWN0SGVhcE92ZXJsYXBzKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0
cmFjdEhlYXBPdmVybGFwczo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJh
Y3RIZWFwT3ZlcmxhcHM6OnJlc3VsdCk6CisgICAgICAgICogZGZnL0RGR0NvbW1vbkRhdGEuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkNvbW1vbkRhdGE6OmludmFsaWRhdGUpOgorICAgICAgICAq
IGRmZy9ERkdDb21tb25EYXRhLmg6CisgICAgICAgIChKU0M6OkRGRzo6Q29tbW9uRGF0YTo6Q29t
bW9uRGF0YSk6CisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6RGVzaXJlZFdhdGNocG9pbnRzOjphZGRMYXppbHkpOgorICAgICAgICAo
SlNDOjpERkc6OkRlc2lyZWRXYXRjaHBvaW50czo6cmVhbGx5QWRkKToKKyAgICAgICAgKiBkZmcv
REZHRGVzaXJlZFdhdGNocG9pbnRzLmg6CisgICAgICAgIChKU0M6OkRGRzo6V2F0Y2hwb2ludEZv
ckdlbmVyaWNXYXRjaHBvaW50U2V0OjpXYXRjaHBvaW50Rm9yR2VuZXJpY1dhdGNocG9pbnRTZXQp
OgorICAgICAgICAoSlNDOjpERkc6OkdlbmVyaWNEZXNpcmVkV2F0Y2hwb2ludHM6OmFkZExhemls
eSk6CisgICAgICAgIChKU0M6OkRGRzo6R2VuZXJpY0Rlc2lyZWRXYXRjaHBvaW50czo6cmVhbGx5
QWRkKToKKyAgICAgICAgKEpTQzo6REZHOjpHZW5lcmljRGVzaXJlZFdhdGNocG9pbnRzOjphcmVT
dGlsbFZhbGlkKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHSW52YWxp
ZGF0aW9uUG9pbnRJbmplY3Rpb25QaGFzZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpERkc6
OkludmFsaWRhdGlvblBvaW50SW5qZWN0aW9uUGhhc2U6OkludmFsaWRhdGlvblBvaW50SW5qZWN0
aW9uUGhhc2UpOgorICAgICAgICAoSlNDOjpERkc6OkludmFsaWRhdGlvblBvaW50SW5qZWN0aW9u
UGhhc2U6OnJ1bik6CisgICAgICAgIChKU0M6OkRGRzo6SW52YWxpZGF0aW9uUG9pbnRJbmplY3Rp
b25QaGFzZTo6aGFuZGxlKToKKyAgICAgICAgKEpTQzo6REZHOjpJbnZhbGlkYXRpb25Qb2ludElu
amVjdGlvblBoYXNlOjppbnNlcnRJbnZhbGlkYXRpb25DaGVjayk6CisgICAgICAgIChKU0M6OkRG
Rzo6cGVyZm9ybUludmFsaWRhdGlvblBvaW50SW5qZWN0aW9uKToKKyAgICAgICAgKiBkZmcvREZH
SW52YWxpZGF0aW9uUG9pbnRJbmplY3Rpb25QaGFzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBkZmcv
REZHSklUQ29kZS5oOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmxpbmtPU1JFeGl0cyk6CisgICAgICAgIChKU0M6OkRG
Rzo6SklUQ29tcGlsZXI6OmxpbmspOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5oOgor
ICAgICAgICAqIGRmZy9ERkdKdW1wUmVwbGFjZW1lbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6REZHOjpKdW1wUmVwbGFjZW1lbnQ6OmZpcmUpOgorICAgICAgICAqIGRmZy9ERkdKdW1wUmVw
bGFjZW1lbnQuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkRGRzo6SnVtcFJlcGxhY2VtZW50OjpK
dW1wUmVwbGFjZW1lbnQpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAq
IGRmZy9ERkdPU1JFeGl0Q29tcGlsYXRpb25JbmZvLmg6CisgICAgICAgICogZGZnL0RGR09wZXJh
dGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpQbGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKToKKyAgICAgICAgKEpTQzo6REZHOjpQbGFuOjpy
ZWFsbHlBZGQpOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3Bh
Z2F0ZSk6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0SW52YWxpZGF0aW9uUG9p
bnQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVP
YmplY3RFcXVhbGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVHZXRCeVZhbE9uU3RyaW5nKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6bWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpzcGVjdWxhdGVTdHJpbmdPYmplY3RGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZWVwaG9sZUNvbXBhcmVOdWxsKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9sZUJyYW5jaE51bGwp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0RXF1YWxp
dHkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0VG9P
YmplY3RPck90aGVyRXF1YWxpdHkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlUGVlcEhvbGVPYmplY3RUb09iamVjdE9yT3RoZXJFcXVhbGl0eSk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RPck90aGVyTG9naWNhbE5v
dCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmplY3RPck90aGVy
QnJhbmNoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6Cisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlZXBob2xlQ29tcGFyZU51bGwpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xl
QnJhbmNoTnVsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVP
YmplY3RFcXVhbGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVPYmplY3RUb09iamVjdE9yT3RoZXJFcXVhbGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamVjdFRvT2JqZWN0T3JPdGhlckVxdWFsaXR5
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3Ro
ZXJMb2dpY2FsTm90KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdE9i
amVjdE9yT3RoZXJCcmFuY2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlKToKKyAgICAgICAgKiBkZmcvREZHV2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5jcHA6
IEFkZGVkLgorICAgICAgICAoSlNDOjpERkc6OldhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2U6Oldh
dGNocG9pbnRDb2xsZWN0aW9uUGhhc2UpOgorICAgICAgICAoSlNDOjpERkc6OldhdGNocG9pbnRD
b2xsZWN0aW9uUGhhc2U6OnJ1bik6CisgICAgICAgIChKU0M6OkRGRzo6V2F0Y2hwb2ludENvbGxl
Y3Rpb25QaGFzZTo6aGFuZGxlKToKKyAgICAgICAgKEpTQzo6REZHOjpXYXRjaHBvaW50Q29sbGVj
dGlvblBoYXNlOjpoYW5kbGVFZGdlKToKKyAgICAgICAgKEpTQzo6REZHOjpXYXRjaHBvaW50Q29s
bGVjdGlvblBoYXNlOjpoYW5kbGVNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKToKKyAgICAgICAgKEpT
Qzo6REZHOjpXYXRjaHBvaW50Q29sbGVjdGlvblBoYXNlOjpoYW5kbGVTdHJpbmdHZXRCeVZhbCk6
CisgICAgICAgIChKU0M6OkRGRzo6V2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZTo6YWRkTGF6aWx5
KToKKyAgICAgICAgKEpTQzo6REZHOjpXYXRjaHBvaW50Q29sbGVjdGlvblBoYXNlOjpnbG9iYWxP
YmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OnBlcmZvcm1XYXRjaHBvaW50Q29sbGVjdGlvbik6
CisgICAgICAgICogZGZnL0RGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuaDogQWRkZWQuCisg
ICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2Fu
Q29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpG
VEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnQp
OgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlR2V0QnlWYWwpOgor
ICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlR2xvYmFsVmFyV2F0Y2hw
b2ludCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVDb21wYXJl
RXFDb25zdGFudCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVD
b21wYXJlU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21w
aWxlQ29tcGFyZVN0cmljdEVxQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZH
VG9MTFZNOjpjb21waWxlSW52YWxpZGF0aW9uUG9pbnQpOgorICAgICAgICAoSlNDOjpGVEw6Okxv
d2VyREZHVG9MTFZNOjplcXVhbE51bGxPclVuZGVmaW5lZCk6CisgICAgICAgIChKU0M6OkZUTDo6
TG93ZXJERkdUb0xMVk06OnNwZWN1bGF0ZU5vbk51bGxPYmplY3QpOgorICAgICAgICAqIGppdC9K
SVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSnVtcFJlcGxhY2VtZW50V2F0Y2hwb2lu
dC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogaml0L0p1bXBSZXBsYWNlbWVudFdhdGNocG9pbnQu
aDogUmVtb3ZlZC4KKwogMjAxMy0xMC0yOSAgSnVsaWVuIEJyaWFuY2VhdSAgPGpicmlhbmNlQGNp
c2NvLmNvbT4KIAogICAgICAgICBbYXJtXSBGaXggbG90cyBvZiBjcmFzaGVzIGJlY2F1c2Ugb2Yg
NHRoIGFyZ3VtZW50IHJlZ2lzdGVyIHRyYW1wbGluZy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE1ODIyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQCBzZXQoSmF2
YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGJ5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAogICAg
IGJ5dGVjb2RlL0NvZGVCbG9jay5jcHAKICAgICBieXRlY29kZS9Db2RlQmxvY2tIYXNoLmNwcAor
ICAgIGJ5dGVjb2RlL0NvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAKICAgICBieXRl
Y29kZS9Db2RlT3JpZ2luLmNwcAogICAgIGJ5dGVjb2RlL0NvZGVUeXBlLmNwcAogICAgIGJ5dGVj
b2RlL0RGR0V4aXRQcm9maWxlLmNwcApAQCAtNjQsNiArNjUsNyBAQCBzZXQoSmF2YVNjcmlwdENv
cmVfU09VUkNFUwogICAgIGJ5dGVjb2RlL09wY29kZS5jcHAKICAgICBieXRlY29kZS9Qb2x5bW9y
cGhpY1B1dEJ5SWRMaXN0LmNwcAogICAgIGJ5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAK
KyAgICBieXRlY29kZS9Qcm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAK
ICAgICBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAogICAgIGJ5dGVjb2RlL1JlZHVjZVdoaXRl
c3BhY2UuY3BwCiAgICAgYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmNwcApAQCAtMTI0LDkgKzEyNiwx
MSBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGRmZy9ERkdGbHVzaGVkQXQuY3Bw
CiAgICAgZGZnL0RGR0dyYXBoLmNwcAogICAgIGRmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5j
cHAKKyAgICBkZmcvREZHSW52YWxpZGF0aW9uUG9pbnRJbmplY3Rpb25QaGFzZS5jcHAKICAgICBk
ZmcvREZHSklUQ29kZS5jcHAKICAgICBkZmcvREZHSklUQ29tcGlsZXIuY3BwCiAgICAgZGZnL0RG
R0pJVEZpbmFsaXplci5jcHAKKyAgICBkZmcvREZHSnVtcFJlcGxhY2VtZW50LmNwcAogICAgIGRm
Zy9ERkdMSUNNUGhhc2UuY3BwCiAgICAgZGZnL0RGR0xhenlKU1ZhbHVlLmNwcAogICAgIGRmZy9E
RkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuY3BwCkBAIC0xNjgsNiArMTcyLDcgQEAgc2V0KEphdmFT
Y3JpcHRDb3JlX1NPVVJDRVMKICAgICBkZmcvREZHVmFyaWFibGVFdmVudC5jcHAKICAgICBkZmcv
REZHVmFyaWFibGVFdmVudFN0cmVhbS5jcHAKICAgICBkZmcvREZHVmlydHVhbFJlZ2lzdGVyQWxs
b2NhdGlvblBoYXNlLmNwcAorICAgIGRmZy9ERkdXYXRjaHBvaW50Q29sbGVjdGlvblBoYXNlLmNw
cAogICAgIGRmZy9ERkdXb3JrbGlzdC5jcHAKIAogICAgIGRpc2Fzc2VtYmxlci9BUk12N0Rpc2Fz
c2VtYmxlci5jcHAKQEAgLTIzNiw3ICsyNDEsNiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNF
UwogICAgIGppdC9KSVRTdHVicy5jcHAKICAgICBqaXQvSklUVGh1bmtzLmNwcAogICAgIGppdC9K
SVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAKLSAgICBqaXQvSnVtcFJlcGxh
Y2VtZW50V2F0Y2hwb2ludC5jcHAKICAgICBqaXQvUmVnaXN0ZXJTZXQuY3BwCiAgICAgaml0L1Jl
cGF0Y2guY3BwCiAgICAgaml0L1RlbXBSZWdpc3RlclNldC5jcHAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxNTgyMjMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAt
MTEyLDYgKzExMiw4IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9ja0hhc2guY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrSGFzaC5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5oIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrV2l0aEpJVFR5cGUuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uY3BwIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oIFwKQEAgLTE1MCw2ICsxNTIsOCBAQCBqYXZh
c2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UG9seW1vcnBoaWNQdXRCeUlkTGlzdC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwIFwKKwlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNo
cG9pbnQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBl
LmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgg
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcCBcCkBA
IC0yODQsNiArMjg4LDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5oIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0lubGluZUNhY2hlV3JhcHBlci5oIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0lubGluZUNhY2hlV3JhcHBlcklubGluZXMuaCBcCisJU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdJbnZhbGlkYXRpb25Qb2ludEluamVjdGlvblBoYXNlLmNwcCBc
CisJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnZhbGlkYXRpb25Qb2ludEluamVjdGlv
blBoYXNlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5zZXJ0aW9uU2V0Lmgg
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAgXAogCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oIFwKQEAgLTI5MSw2ICsyOTcsOCBAQCBqYXZh
c2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvbXBpbGVyLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklURmluYWxpemVy
LmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRGaW5hbGl6ZXIuaCBcCisJ
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKdW1wUmVwbGFjZW1lbnQuY3BwIFwKKwlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0p1bXBSZXBsYWNlbWVudC5oIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0xJQ01QaGFzZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTElDTVBoYXNlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6
eUpTVmFsdWUuY3BwIFwKQEAgLTM4OSw2ICszOTcsOCBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhZGljRnVuY3Rpb24uaCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9u
UGhhc2UuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZpcnR1YWxSZWdpc3Rl
ckFsbG9jYXRpb25QaGFzZS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dhdGNo
cG9pbnRDb2xsZWN0aW9uUGhhc2UuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdXb3JrbGlzdC5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xp
c3QuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9BUk02NC9BNjRET3Bj
b2RlLmNwcCBcCkBAIC02NjUsOCArNjc1LDYgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25D
YWxsYmFjay5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFdyaXRlQmFycmllci5o
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmggXAotCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSnVtcFJlcGxhY2VtZW50V2F0Y2hwb2ludC5jcHAgXAotCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSnVtcFJlcGxhY2VtZW50V2F0Y2hwb2ludC5oIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmNwcCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlcGF0Y2guY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJv
agkocmV2aXNpb24gMTU4MjIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzAw
LDYgKzMwMCw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxDYWxsTGlu
a1N0YXR1cy5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQ29k
ZUJsb2NrLmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxDb2Rl
QmxvY2tIYXNoLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxD
b2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXGJ5dGVjb2RlXENvZGVPcmlnaW4uY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXGJ5dGVjb2RlXENvZGVUeXBlLmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxieXRlY29kZVxEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwIiAvPg0KQEAg
LTMxMiw2ICszMTMsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcTWV0
aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cYnl0ZWNvZGVcT3Bjb2RlLmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxieXRlY29kZVxQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmNwcCIgLz4NCisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxieXRlY29kZVxQcm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hw
b2ludC5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcUHV0QnlJ
ZFN0YXR1cy5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcUmVk
dWNlV2hpdGVzcGFjZS5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNv
ZGVcU2FtcGxpbmdUb29sLmNwcCIgLz4NCkBAIC0zODgsNyArMzkwLDYgQEAKICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGppdFxKSVRTdHVicy5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5caml0XEpJVFRodW5rcy5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5caml0XEpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcCIgLz4NCi0gICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxqaXRcSnVtcFJlcGxhY2VtZW50V2F0Y2hwb2ludC5jcHAi
IC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caml0XFJlcGF0Y2guY3BwIiAvPg0KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGppdFxUaHVua0dlbmVyYXRvcnMuY3BwIiAvPg0KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGxsaW50XExMSW50Q0xvb3AuY3BwIiAvPg0KQEAgLTY0
NSw2ICs2NDYsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQ2FsbFJl
dHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxieXRlY29kZVxDb2RlQmxvY2suaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxieXRlY29kZVxDb2RlQmxvY2tIYXNoLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cYnl0ZWNvZGVcQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmgiIC8+DQogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQ29kZUJsb2NrV2l0aEpJVFR5cGUuaCIgLz4N
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxDb2RlT3JpZ2luLmgiIC8+DQog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQ29kZVR5cGUuaCIgLz4NCkBAIC02
NjcsNiArNjY5LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXE9wY29k
ZS5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXE9wZXJhbmRzLmgi
IC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcUG9seW1vcnBoaWNQdXRC
eUlkTGlzdC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXFByb2Zp
bGVkQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmgiIC8+DQogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cYnl0ZWNvZGVcUHV0QnlJZFN0YXR1cy5oIiAvPg0KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXFB1dEtpbmQuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxieXRlY29kZVxSZWR1Y2VXaGl0ZXNwYWNlLmgiIC8+DQpAQCAtNzg5LDcgKzc5Miw2
IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxqaXRcSklUVG9ERkdEZWZlcnJlZENvbXBp
bGF0aW9uQ2FsbGJhY2suaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxqaXRcSklU
V3JpdGVCYXJyaWVyLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caml0XEpTSW50
ZXJmYWNlSklULmgiIC8+DQotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caml0XEp1bXBSZXBs
YWNlbWVudFdhdGNocG9pbnQuaCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxqaXRc
UmVnaXN0ZXJTZXQuY3BwIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxSZWdp
c3RlclNldC5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxSZXBhdGNoLmgi
IC8+DQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1ODIyMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNzcsOCArMjc3LDYgQEAKIAkJMEY3NjZEMkYx
NUE4RENFMDAwOEYzNjNFIC8qIEdDQXdhcmVKSVRTdHViUm91dGluZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc2NkQyRDE1QThEQ0REMDA4RjM2
M0UgLyogR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcCAqLzsgfTsKIAkJMEY3NjZEMzAxNUE4RENF
MjAwOEYzNjNFIC8qIEdDQXdhcmVKSVRTdHViUm91dGluZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3NjZEMkUxNUE4RENERDAwOEYzNjNFIC8qIEdD
QXdhcmVKSVRTdHViUm91dGluZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTBGNzY2RDMxMTVBQTgxMTIwMDhGMzYzRSAvKiBKSVRTdHViUm91dGlu
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3NjZE
MUMxNUE1MDI4RDAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMEY3NjZEMzQxNUFFMjUzODAwOEYzNjNF
IC8qIEp1bXBSZXBsYWNlbWVudFdhdGNocG9pbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3NjZEMzIxNUFFMjUzNTAwOEYzNjNFIC8qIEp1bXBS
ZXBsYWNlbWVudFdhdGNocG9pbnQuY3BwICovOyB9OwotCQkwRjc2NkQzNTE1QUUyNTNCMDA4RjM2
M0UgLyogSnVtcFJlcGxhY2VtZW50V2F0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3NjZEMzMxNUFFMjUzNTAwOEYzNjNFIC8qIEp1bXBS
ZXBsYWNlbWVudFdhdGNocG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRjc2NkQzODE1QUU0QTFDMDA4RjM2M0UgLyogU3RydWN0dXJlU3R1
YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjc2NkQzNjE1QUU0QTFBMDA4RjM2M0UgLyogU3RydWN0dXJlU3R1YkNs
ZWFyaW5nV2F0Y2hwb2ludC5jcHAgKi87IH07CiAJCTBGNzY2RDM5MTVBRTRBMUYwMDhGMzYzRSAv
KiBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc2NkQzNzE1QUU0QTFBMDA4RjM2M0UgLyogU3Ry
dWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNzcwMDkyMTQwMkZGM0MwMDc4RUIzOSAvKiBTYW1w
bGluZ0NvdW50ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY3NzAwOTExNDAyRkYyODAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgKi87
IH07CkBAIC0zODcsNiArMzg1LDE2IEBACiAJCTBGQzgxNTBCMTQwNDNDMEUwMENGQTYwMyAvKiBX
cml0ZUJhcnJpZXJTdXBwb3J0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGQzgxNTA4MTQwNDNCQ0EwMENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBw
b3J0LmNwcCAqLzsgfTsKIAkJMEZDODE1MTUxNDA1MTE5QjAwQ0ZBNjAzIC8qIFZUYWJsZVNwZWN0
cnVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkM4
MTUxNDE0MDUxMThEMDBDRkE2MDMgLyogVlRhYmxlU3BlY3RydW0uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkM4MTUxNjE0MDUxMUI1MDBDRkE2
MDMgLyogVlRhYmxlU3BlY3RydW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZDODE1MTIxNDA1MTE4NjAwQ0ZBNjAzIC8qIFZUYWJsZVNwZWN0cnVt
LmNwcCAqLzsgfTsKKwkJMEZDOTdGMzMxODIwMjBENzAwMkM5QjI2IC8qIENvZGVCbG9ja0pldHRp
c29uaW5nV2F0Y2hwb2ludC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkM5N0YyRjE4MjAyMEQ3MDAyQzlCMjYgLyogQ29kZUJsb2NrSmV0dGlzb25p
bmdXYXRjaHBvaW50LmNwcCAqLzsgfTsKKwkJMEZDOTdGMzQxODIwMjBENzAwMkM5QjI2IC8qIENv
ZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDOTdGMzAxODIwMjBENzAwMkM5QjI2IC8qIENvZGVCbG9j
a0pldHRpc29uaW5nV2F0Y2hwb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTBGQzk3RjM1MTgyMDIwRDcwMDJDOUIyNiAvKiBQcm9maWxlZENv
ZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkM5N0YzMTE4MjAyMEQ3MDAyQzlCMjYgLyogUHJvZmls
ZWRDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwICovOyB9OworCQkwRkM5N0YzNjE4
MjAyMEQ3MDAyQzlCMjYgLyogUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzk3RjMy
MTgyMDIwRDcwMDJDOUIyNiAvKiBQcm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2lu
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBG
Qzk3RjNEMTgyMDIxMTkwMDJDOUIyNiAvKiBERkdJbnZhbGlkYXRpb25Qb2ludEluamVjdGlvblBo
YXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
Qzk3RjM3MTgyMDIxMTkwMDJDOUIyNiAvKiBERkdJbnZhbGlkYXRpb25Qb2ludEluamVjdGlvblBo
YXNlLmNwcCAqLzsgfTsKKwkJMEZDOTdGM0UxODIwMjExOTAwMkM5QjI2IC8qIERGR0ludmFsaWRh
dGlvblBvaW50SW5qZWN0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGQzk3RjM4MTgyMDIxMTkwMDJDOUIyNiAvKiBERkdJbnZhbGlkYXRp
b25Qb2ludEluamVjdGlvblBoYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJMEZDOTdGM0YxODIwMjExOTAwMkM5QjI2IC8qIERGR0p1bXBSZXBs
YWNlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkM5N0YzOTE4MjAyMTE5MDAyQzlCMjYgLyogREZHSnVtcFJlcGxhY2VtZW50LmNwcCAqLzsg
fTsKKwkJMEZDOTdGNDAxODIwMjExOTAwMkM5QjI2IC8qIERGR0p1bXBSZXBsYWNlbWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDOTdGM0ExODIw
MjExOTAwMkM5QjI2IC8qIERGR0p1bXBSZXBsYWNlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGQzk3RjQxMTgyMDIxMTkwMDJDOUIyNiAv
KiBERkdXYXRjaHBvaW50Q29sbGVjdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzk3RjNCMTgyMDIxMTkwMDJDOUIyNiAvKiBERkdX
YXRjaHBvaW50Q29sbGVjdGlvblBoYXNlLmNwcCAqLzsgfTsKKwkJMEZDOTdGNDIxODIwMjExOTAw
MkM5QjI2IC8qIERGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzk3RjNDMTgyMDIxMTkwMDJDOUIyNiAv
KiBERkdXYXRjaHBvaW50Q29sbGVjdGlvblBoYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZDQ0FFNDUxNkQwQ0Y3NDAwRDBDNjVCIC8qIFBh
cnNlckVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkNDQUU0MzE2RDBDRjZFMDBEMEM2NUIgLyogUGFyc2VyRXJyb3IuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkNFRkFBQjE4MDRDMTNFMDA0
NzJDRTQgLyogRlRMU2F2ZVJlc3RvcmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZDRUZBQTkxODA0QzEzRTAwNDcyQ0U0IC8qIEZUTFNhdmVSZXN0
b3JlLmNwcCAqLzsgfTsKIAkJMEZDRUZBQUMxODA0QzEzRTAwNDcyQ0U0IC8qIEZUTFNhdmVSZXN0
b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkNF
RkFBQTE4MDRDMTNFMDA0NzJDRTQgLyogRlRMU2F2ZVJlc3RvcmUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTUzNyw4ICsxNTQ1LDYgQEAKIAkJ
MEY3NjZEMkExNUE4Q0MzNDAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lU2V0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVFN0dWJSb3V0aW5lU2V0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGNzY2RDJEMTVBOERDREQwMDhGMzYzRSAvKiBHQ0F3YXJlSklU
U3R1YlJvdXRpbmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR0NB
d2FyZUpJVFN0dWJSb3V0aW5lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3
NjZEMkUxNUE4RENERDAwOEYzNjNFIC8qIEdDQXdhcmVKSVRTdHViUm91dGluZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHQ0F3YXJlSklUU3R1YlJvdXRpbmUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEY3NjZEMzIxNUFFMjUzNTAwOEYzNjNFIC8qIEp1bXBS
ZXBsYWNlbWVudFdhdGNocG9pbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSnVtcFJlcGxhY2VtZW50V2F0Y2hwb2ludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTBGNzY2RDMzMTVBRTI1MzUwMDhGMzYzRSAvKiBKdW1wUmVwbGFjZW1lbnRXYXRj
aHBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEp1bXBSZXBsYWNlbWVu
dFdhdGNocG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3NjZEMzYxNUFF
NEExQTAwOEYzNjNFIC8qIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0
Y2hwb2ludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzY2RDM3MTVBRTRB
MUEwMDhGMzYzRSAvKiBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3NzAwOEUxNDAyRkRENjAwNzhFQjM5
IC8qIFNhbXBsaW5nQ291bnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
YW1wbGluZ0NvdW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2NTgsNiAr
MTY2NCwxNiBAQAogCQkwRkM4MTUwOTE0MDQzQkQyMDBDRkE2MDMgLyogV3JpdGVCYXJyaWVyU3Vw
cG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXcml0ZUJhcnJpZXJTdXBw
b3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQzgxNTEyMTQwNTExODYwMENG
QTYwMyAvKiBWVGFibGVTcGVjdHJ1bS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBWVGFibGVTcGVjdHJ1bS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGQzgxNTE0MTQwNTExOEQwMENGQTYwMyAvKiBWVGFibGVTcGVjdHJ1bS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBWVGFibGVTcGVjdHJ1bS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRkM5N0YyRjE4MjAyMEQ3MDAyQzlCMjYgLyogQ29kZUJsb2NrSmV0dGlz
b25pbmdXYXRjaHBvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGQzk3RjMwMTgyMDIwRDcwMDJDOUIyNiAvKiBDb2RlQmxvY2tKZXR0aXNvbmlu
Z1dhdGNocG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29kZUJsb2Nr
SmV0dGlzb25pbmdXYXRjaHBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
Qzk3RjMxMTgyMDIwRDcwMDJDOUIyNiAvKiBQcm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0
Y2hwb2ludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm9maWxl
ZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGQzk3RjMyMTgyMDIwRDcwMDJDOUIyNiAvKiBQcm9maWxlZENvZGVCbG9ja0pl
dHRpc29uaW5nV2F0Y2hwb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
cm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRkM5N0YzNzE4MjAyMTE5MDAyQzlCMjYgLyogREZHSW52YWxpZGF0aW9u
UG9pbnRJbmplY3Rpb25QaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBERkdJbnZhbGlkYXRpb25Qb2ludEluamVjdGlvblBoYXNlLmNwcDsgcGF0aCA9IGRmZy9E
RkdJbnZhbGlkYXRpb25Qb2ludEluamVjdGlvblBoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEZDOTdGMzgxODIwMjExOTAwMkM5QjI2IC8qIERGR0ludmFsaWRhdGlvblBv
aW50SW5qZWN0aW9uUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZH
SW52YWxpZGF0aW9uUG9pbnRJbmplY3Rpb25QaGFzZS5oOyBwYXRoID0gZGZnL0RGR0ludmFsaWRh
dGlvblBvaW50SW5qZWN0aW9uUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEZDOTdGMzkxODIwMjExOTAwMkM5QjI2IC8qIERGR0p1bXBSZXBsYWNlbWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdKdW1wUmVwbGFjZW1lbnQuY3BwOyBw
YXRoID0gZGZnL0RGR0p1bXBSZXBsYWNlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGQzk3RjNBMTgyMDIxMTkwMDJDOUIyNiAvKiBERkdKdW1wUmVwbGFjZW1lbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHSnVtcFJlcGxhY2VtZW50Lmg7IHBh
dGggPSBkZmcvREZHSnVtcFJlcGxhY2VtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGQzk3RjNCMTgyMDIxMTkwMDJDOUIyNiAvKiBERkdXYXRjaHBvaW50Q29sbGVjdGlvblBo
YXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1dhdGNocG9p
bnRDb2xsZWN0aW9uUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR1dhdGNocG9pbnRDb2xsZWN0aW9u
UGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkM5N0YzQzE4MjAyMTE5
MDAyQzlCMjYgLyogREZHV2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdXYXRjaHBvaW50Q29sbGVjdGlvblBoYXNlLmg7IHBhdGgg
PSBkZmcvREZHV2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRkNCNDA4NTE1QzBBM0MzMDA0ODkzMkIgLyogU2xvdFZpc2l0b3JJbmxpbmVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNsb3RWaXNpdG9ySW5saW5lcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkNDQUU0MzE2RDBDRjZFMDBEMEM2NUIg
LyogUGFyc2VyRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFyc2Vy
RXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDRUZBQTkxODA0QzEzRTAw
NDcyQ0U0IC8qIEZUTFNhdmVSZXN0b3JlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IEZUTFNhdmVSZXN0b3JlLmNwcDsgcGF0aCA9IGZ0bC9GVExTYXZlUmVzdG9yZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yOTM0LDggKzI5NTAsNiBAQAogCQkJ
CTBGQzcxMkUxMTdDRDg3OEYwMDhDQzkzQyAvKiBKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25D
YWxsYmFjay5oICovLAogCQkJCUE3NkY1NEEyMTNCMjhBQUIwMEVGMkJDRSAvKiBKSVRXcml0ZUJh
cnJpZXIuaCAqLywKIAkJCQlBNzZDNTE3NDExODI3NDhEMDA3MTVCMDUgLyogSlNJbnRlcmZhY2VK
SVQuaCAqLywKLQkJCQkwRjc2NkQzMjE1QUUyNTM1MDA4RjM2M0UgLyogSnVtcFJlcGxhY2VtZW50
V2F0Y2hwb2ludC5jcHAgKi8sCi0JCQkJMEY3NjZEMzMxNUFFMjUzNTAwOEYzNjNFIC8qIEp1bXBS
ZXBsYWNlbWVudFdhdGNocG9pbnQuaCAqLywKIAkJCQkwRkMzMTQxNDE4MTQ2RDcwMDAwMzMyMzIg
LyogUmVnaXN0ZXJTZXQuY3BwICovLAogCQkJCTBGQzMxNDEwMTgxNDU1OTEwMDAzMzIzMiAvKiBS
ZWdpc3RlclNldC5oICovLAogCQkJCTBGMjRFNTQ5MTdFRTI3NDkwMEFCQjIxNyAvKiBSZXBhdGNo
LmNwcCAqLywKQEAgLTM3NjAsMTIgKzM3NzQsMTYgQEAKIAkJCQlBNzA0RDkwMDE3QTBCQUE4MDA2
QkE1NTQgLyogREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwICovLAogCQkJCUE3MDREOTAxMTdB
MEJBQTgwMDZCQTU1NCAvKiBERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5oICovLAogCQkJCTBGMkJE
QzFGMTUxRTgwMzgwMENEODkxMCAvKiBERkdJbnNlcnRpb25TZXQuaCAqLywKKwkJCQkwRkM5N0Yz
NzE4MjAyMTE5MDAyQzlCMjYgLyogREZHSW52YWxpZGF0aW9uUG9pbnRJbmplY3Rpb25QaGFzZS5j
cHAgKi8sCisJCQkJMEZDOTdGMzgxODIwMjExOTAwMkM5QjI2IC8qIERGR0ludmFsaWRhdGlvblBv
aW50SW5qZWN0aW9uUGhhc2UuaCAqLywKIAkJCQkwRkVBMEEyRjE3MEQ0MEJGMDBCQjcyMkMgLyog
REZHSklUQ29kZS5jcHAgKi8sCiAJCQkJMEZFQTBBMzAxNzBENDBCRjAwQkI3MjJDIC8qIERGR0pJ
VENvZGUuaCAqLywKIAkJCQk4NkVDOURCQjEzMjhERjgyMDAyQjJBRDcgLyogREZHSklUQ29tcGls
ZXIuY3BwICovLAogCQkJCTg2RUM5REJDMTMyOERGODIwMDJCMkFENyAvKiBERkdKSVRDb21waWxl
ci5oICovLAogCQkJCUE3OEE5NzcwMTc5NzM4QjgwMDlERjc0NCAvKiBERkdKSVRGaW5hbGl6ZXIu
Y3BwICovLAogCQkJCUE3OEE5NzcxMTc5NzM4QjgwMDlERjc0NCAvKiBERkdKSVRGaW5hbGl6ZXIu
aCAqLywKKwkJCQkwRkM5N0YzOTE4MjAyMTE5MDAyQzlCMjYgLyogREZHSnVtcFJlcGxhY2VtZW50
LmNwcCAqLywKKwkJCQkwRkM5N0YzQTE4MjAyMTE5MDAyQzlCMjYgLyogREZHSnVtcFJlcGxhY2Vt
ZW50LmggKi8sCiAJCQkJQTczQTUzNTgxNzk5Q0Q1RDAwMTcwQzE5IC8qIERGR0xhenlKU1ZhbHVl
LmNwcCAqLywKIAkJCQlBNzNBNTM1OTE3OTlDRDVEMDAxNzBDMTkgLyogREZHTGF6eUpTVmFsdWUu
aCAqLywKIAkJCQlBN0Q5QTI5MjE3QTBCQzc0MDBFRTI2MTggLyogREZHTElDTVBoYXNlLmNwcCAq
LywKQEAgLTM4NjQsNiArMzg4Miw4IEBACiAJCQkJMEY4NUEzMUUxNkFCNzZBRTAwNzc1NzFFIC8q
IERGR1ZhcmlhZGljRnVuY3Rpb24uaCAqLywKIAkJCQkwRkZGQzk1MzE0RUY5MDk1MDBDNzI1MzIg
LyogREZHVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmNwcCAqLywKIAkJCQkwRkZGQzk1
NDE0RUY5MDk1MDBDNzI1MzIgLyogREZHVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmgg
Ki8sCisJCQkJMEZDOTdGM0IxODIwMjExOTAwMkM5QjI2IC8qIERGR1dhdGNocG9pbnRDb2xsZWN0
aW9uUGhhc2UuY3BwICovLAorCQkJCTBGQzk3RjNDMTgyMDIxMTkwMDJDOUIyNiAvKiBERkdXYXRj
aHBvaW50Q29sbGVjdGlvblBoYXNlLmggKi8sCiAJCQkJMEZEQjJDRTUxNzQ4MzBBMjAwN0IzQzFC
IC8qIERGR1dvcmtsaXN0LmNwcCAqLywKIAkJCQkwRkRCMkNFNjE3NDgzMEEyMDA3QjNDMUIgLyog
REZHV29ya2xpc3QuaCAqLywKIAkJCSk7CkBAIC0zOTc2LDYgKzM5OTYsOCBAQAogCQkJCTk2OUEw
NzkxMEVEMUQzQUUwMEYxRjY4MSAvKiBDb2RlQmxvY2suaCAqLywKIAkJCQkwRjhGOTQzRDE2Njc2
MzJEMDBENjE5NzEgLyogQ29kZUJsb2NrSGFzaC5jcHAgKi8sCiAJCQkJMEY4Rjk0M0UxNjY3NjMy
RDAwRDYxOTcxIC8qIENvZGVCbG9ja0hhc2guaCAqLywKKwkJCQkwRkM5N0YyRjE4MjAyMEQ3MDAy
QzlCMjYgLyogQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcCAqLywKKwkJCQkwRkM5
N0YzMDE4MjAyMEQ3MDAyQzlCMjYgLyogQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50Lmgg
Ki8sCiAJCQkJMEY5NkVCQjExNjY3NkVGNDAwOEJBREUzIC8qIENvZGVCbG9ja1dpdGhKSVRUeXBl
LmggKi8sCiAJCQkJMEY4Rjk0NDUxNjY3NjRFRTAwRDYxOTcxIC8qIENvZGVPcmlnaW4uY3BwICov
LAogCQkJCTBGQkQ3RTY3MTQ0Nzk5OEYwMDQ4MTMxNSAvKiBDb2RlT3JpZ2luLmggKi8sCkBAIC00
MDE2LDYgKzQwMzgsOCBAQAogCQkJCTBGOUZDOEMwMTRFMUI1RkIwMEQ1MkFFMCAvKiBQb2x5bW9y
cGhpY1B1dEJ5SWRMaXN0LmggKi8sCiAJCQkJMEY5ODIwNUQxNkJGRTM3RjAwMjQwRDAyIC8qIFBy
ZWNpc2VKdW1wVGFyZ2V0cy5jcHAgKi8sCiAJCQkJMEY5ODIwNUUxNkJGRTM3RjAwMjQwRDAyIC8q
IFByZWNpc2VKdW1wVGFyZ2V0cy5oICovLAorCQkJCTBGQzk3RjMxMTgyMDIwRDcwMDJDOUIyNiAv
KiBQcm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAgKi8sCisJCQkJMEZD
OTdGMzIxODIwMjBENzAwMkM5QjI2IC8qIFByb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRj
aHBvaW50LmggKi8sCiAJCQkJMEY5MzMyOTkxNENBN0RDMTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0
dXMuY3BwICovLAogCQkJCTBGOTMzMjlBMTRDQTdEQzEwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVz
LmggKi8sCiAJCQkJMEY5RkM4QzExNEUxQjVGQjAwRDUyQUUwIC8qIFB1dEtpbmQuaCAqLywKQEAg
LTQyMTksNiArNDI0Myw3IEBACiAJCQkJMEYyQkRDMTYxNTFDNUQ0RjAwQ0Q4OTEwIC8qIERGR0Zp
eHVwUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5Q0Y4MTdBMEI4Q0MwMDc3M0FEOCAv
KiBERkdGbHVzaEZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEODlDRkExN0EwQjhDQzAw
NzczQUQ4IC8qIERGR0ZsdXNoTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRkM5N0YzRTE4MjAyMTE5MDAyQzlCMjYgLyogREZHSW52YWxpZGF0aW9uUG9pbnRJbmpl
Y3Rpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFQzlEQzYxMzI4REY4MjAwMkIyQUQ3
IC8qIERGR0dlbmVyYXRpb25JbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkVDOURDODEzMjhE
RjgyMDAyQjJBRDcgLyogREZHR3JhcGguaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MDREOTA2MTdB
MEJBQTgwMDZCQTU1NCAvKiBERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5oIGluIEhlYWRlcnMgKi8s
CkBAIC00MzM2LDYgKzQzNjEsNyBAQAogCQkJCURERjdBQkQ0MTFGNjBFRDIwMDEwOEUzNiAvKiBH
Q0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQkUyQ0FFMTRFOTg1QUEw
MDA1OTNBRCAvKiBHQ0Fzc2VydGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzY2RDMwMTVB
OERDRTIwMDhGMzYzRSAvKiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGQzk3RjQwMTgyMDIxMTkwMDJDOUIyNiAvKiBERkdKdW1wUmVwbGFjZW1lbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMkI2NkFDMTdCNkI1M0YwMEE3QUUzRiAvKiBHQ0luY29taW5nUmVm
Q291bnRlZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2QUQxN0I2QjU0NTAwQTdBRTNGIC8q
IEdDSW5jb21pbmdSZWZDb3VudGVkSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2
QUUxN0I2QjU0NTAwQTdBRTNGIC8qIEdDSW5jb21pbmdSZWZDb3VudGVkU2V0LmggaW4gSGVhZGVy
cyAqLywKQEAgLTQ0ODgsNiArNDUxNCw3IEBACiAJCQkJMEY5MTlEMEQxNTdFRTBBMjAwNEE0RTdE
IC8qIEpTU3ltYm9sVGFibGVPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDJBMEUx
NkY1Q0QwMEIzNDQ2MCAvKiBKU1R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkZCMTdC
NkI1QUIwMEE3QUUzRiAvKiBKU1R5cGVkQXJyYXlDb25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJzICov
LAorCQkJCTBGQzk3RjM2MTgyMDIwRDcwMDJDOUIyNiAvKiBQcm9maWxlZENvZGVCbG9ja0pldHRp
c29uaW5nV2F0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RkQxN0I2QjVBQjAw
QTdBRTNGIC8qIEpTVHlwZWRBcnJheVByb3RvdHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
Q0VGQUFDMTgwNEMxM0UwMDQ3MkNFNCAvKiBGVExTYXZlUmVzdG9yZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEYyQjY2RkYxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVHlwZWRBcnJheXMuaCBpbiBIZWFk
ZXJzICovLApAQCAtNDUwOSw3ICs0NTM2LDYgQEAKIAkJCQkxNDQyNTY2MjE1RURFOThEMDA2NkE0
OUIgLyogSlNXaXRoU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RTNDNjE5MTY3QkFCRUUw
MDZENzYwQSAvKiBKU1dyYXBwZXJNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDJFMEUx
NkY1Q0QwMEIzNDQ2MCAvKiBKU1dyYXBwZXJPYmplY3QuaCBpbiBIZWFkZXJzICovLAotCQkJCTBG
NzY2RDM1MTVBRTI1M0IwMDhGMzYzRSAvKiBKdW1wUmVwbGFjZW1lbnRXYXRjaHBvaW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQ0ZEOEM5MzBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNzJGRkQ2NDEzOTk4NUE4MDBFNTM2NUEgLyogS2V5d29yZExv
b2t1cC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTY5QTA3MkEwRUQxQ0U2OTAwRjFGNjgxIC8qIExh
YmVsLmggaW4gSGVhZGVycyAqLywKQEAgLTQ1ODcsNiArNDYxMyw3IEBACiAJCQkJOTY5QTA3OUIw
RUQxRDNBRTAwRjFGNjgxIC8qIE9wY29kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQkRDMkMx
NTFGREU5MTAwQ0Q4OTEwIC8qIE9wZXJhbmRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzA0NDdF
QTE3QTBCRDQ2MDBGNTg5OEUgLyogT3BlcmFuZHNJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwRkM5N0YzNDE4MjAyMEQ3MDAyQzlCMjYgLyogQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBv
aW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ0ODBFMTZGNUNEMDBCMzQ0NjAgLyogT3Bl
cmF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMjI4RUQxNDM2QUIyNzAwMTk2QzQ4IC8q
IE9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDRCMEUxNkY1Q0QwMEIzNDQ2MCAv
KiBQYXJzZXIuaCBpbiBIZWFkZXJzICovLApAQCAtNDY0Nyw2ICs0Njc0LDcgQEAKIAkJCQlCQzE4
QzQ1RDBFMTZGNUNEMDBCMzQ0NjAgLyogUmVnaXN0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTk2
OUEwNzJCMEVEMUNFNjkwMEYxRjY4MSAvKiBSZWdpc3RlcklELmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkI3RjM5RDE1RUQ4RTQ2MDBGMTY3QjIgLyogUmVqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwRkM5N0Y0MjE4MjAyMTE5MDAyQzlCMjYgLyogREZHV2F0Y2hwb2ludENvbGxlY3Rpb25QaGFz
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZEM0IzQzQxMDE1OUQ3RjAwMjg2NUU3IC8qIFJlcGF0
Y2hCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2OUVCQ0I3MEU4QzZENEEwMDg3MjJDQyAv
KiBSZXN1bHRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjJCMzFCOTE0MDU3N0Q3MDBEQjQ3
NUEgLyogU2FtcGxpbmdDb3VudGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTUxODAsNiArNTIwOCw3
IEBACiAJCQkJMTQyODA4MkQxMDdFQzA1NzAwMTNFN0IyIC8qIENhbGxEYXRhLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGQ0VGQUIxMTgwNUNBNkQwMDQ3MkNFNCAvKiBJbml0aWFsaXplTExWTU1h
Yy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTE0MjlEOEREMEVEMjIwNUIwMEI4OTYxOSAvKiBDYWxs
RnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZDOTdGMzMxODIwMjBENzAwMkM5QjI2IC8q
IENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjBCODNCMDE0QkNGNzE2MDA4ODVCNEYgLyogQ2FsbExpbmtJbmZvLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGOTMzMjlEMTRDQTdEQzMwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRjczRDdBRTE2NUExNDJEMDBBQ0FCNzEgLyogQ2xvc3VyZUNhbGxT
dHViUm91dGluZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTUyMjQsNiArNTI1Myw3IEBACiAJCQkJ
QTcwQjA4MzIxN0EwQjc5QjAwREFGMTRCIC8qIERGR0JpbmFyeVN3aXRjaC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBN0Q4OUNGMzE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25T
ZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZFQzlEQzQxMzI4REY4MjAwMkIyQUQ3IC8qIERG
R0J5dGVDb2RlUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGQzk3RjM1MTgyMDIwRDcw
MDJDOUIyNiAvKiBQcm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkQ4MkUyMTE0MTcyQ0UzMDAxNzlDOTQgLyogREZHQ2FwYWJpbGl0
aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRkZDOTU3MTRFRjkwQTAwMEM3MjUzMiAvKiBE
RkdDRkFQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjNCM0EyNzE1NDRDOTk1MDAzRUQw
RkYgLyogREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTUy
NTgsNiArNTI4OCw3IEBACiAJCQkJODZFQzlEQzcxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0dyYXBo
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3MDREOTA1MTdBMEJBQTgwMDZCQTU1NCAvKiBERkdJ
blBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEEzMzE3MEQ0
MEJGMDBCQjcyMkMgLyogREZHSklUQ29kZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkM5N0Yz
RDE4MjAyMTE5MDAyQzlCMjYgLyogREZHSW52YWxpZGF0aW9uUG9pbnRJbmplY3Rpb25QaGFzZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkVDOURDQjEzMjhERjgyMDAyQjJBRDcgLyogREZHSklU
Q29tcGlsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTc4QTk3NzgxNzk3MzhCODAwOURGNzQ0
IC8qIERGR0pJVEZpbmFsaXplci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzNBNTM1QTE3OTlD
RDVEMDAxNzBDMTkgLyogREZHTGF6eUpTVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01NDAx
LDYgKzU0MzIsNyBAQAogCQkJCTg2RTNDNjE2MTY3QkFCRUUwMDZENzYwQSAvKiBKU0NvbnRleHQu
bW0gaW4gU291cmNlcyAqLywKIAkJCQkwRkQ4QTMxMzE3RDQzMjZDMDBDQTJDNDAgLyogQ29kZUJs
b2NrU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0QkQ1QTMwMEEzRTkxRjYwMEJBRjU5QyAv
KiBKU0NvbnRleHRSZWYuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZDOTdGNDExODIwMjExOTAw
MkM5QjI2IC8qIERGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTcyMDI4QjYxNzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjJCNjZFQjE3QjZCNUFCMDBBN0FFM0YgLyogSlNEYXRhVmll
dy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCNjZFRDE3QjZCNUFCMDBBN0FFM0YgLyogSlNE
YXRhVmlld1Byb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTU0NDksNyArNTQ4MSw2IEBA
CiAJCQkJMTQ0MjU2NjExNUVERTk4RDAwNjZBNDlCIC8qIEpTV2l0aFNjb3BlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTg2RTNDNjE4MTY3QkFCRUUwMDZENzYwQSAvKiBKU1dyYXBwZXJNYXAubW0g
aW4gU291cmNlcyAqLywKIAkJCQkxNDI4MDg3MDEwN0VDMTM0MDAxM0U3QjIgLyogSlNXcmFwcGVy
T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGNzY2RDM0MTVBRTI1MzgwMDhGMzYzRSAv
KiBKdW1wUmVwbGFjZW1lbnRXYXRjaHBvaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRkQ4
QzkyMEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1wVGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEZCNTQ2NzkxNEY1QzQ2QjAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTk1QUI4MzQyMERBNDMyMjUwMEJDODNGMyAvKiBMZWdhY3lQcm9m
aWxlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTU0OTQsNiArNTUyNSw3IEBACiAJCQkJQTdDQTNB
RTMxN0RBNDFBRTAwNjUzOEFGIC8qIFdlYWtNYXBDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk4NkYzRUVCRTE2OENERTkzMDA3N0I5MkEgLyogT2JqQ0NhbGxiYWNrRnVuY3Rpb24u
bW0gaW4gU291cmNlcyAqLywKIAkJCQkxNDQ2OURFNTEwN0VDN0U3MDA2NTA0NDYgLyogT2JqZWN0
Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZDOTdGM0YxODIwMjExOTAwMkM5
QjI2IC8qIERGR0p1bXBSZXBsYWNlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQ2OURF
NjEwN0VDN0U3MDA2NTA0NDYgLyogT2JqZWN0UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUUxMjRBOEY4MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk5NjlBMDc5QTBFRDFEM0FFMDBGMUY2ODEgLyogT3Bjb2RlLmNwcCBpbiBT
b3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDE1ODIyMykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw2IEBAIGlubGluZSBib29sIGlzWDg2KCkKICNlbmRp
ZgogfQogCi1jbGFzcyBKdW1wUmVwbGFjZW1lbnRXYXRjaHBvaW50OwogY2xhc3MgTGlua0J1ZmZl
cjsKIGNsYXNzIFJlcGF0Y2hCdWZmZXI7CiBjbGFzcyBXYXRjaHBvaW50OwpAQCAtMzQyLDcgKzM0
MSw2IEBAIHB1YmxpYzoKICAgICAgICAgZnJpZW5kIGNsYXNzIEFic3RyYWN0TWFjcm9Bc3NlbWJs
ZXI7CiAgICAgICAgIGZyaWVuZCBzdHJ1Y3QgREZHOjpPU1JFeGl0OwogICAgICAgICBmcmllbmQg
Y2xhc3MgSnVtcDsKLSAgICAgICAgZnJpZW5kIGNsYXNzIEp1bXBSZXBsYWNlbWVudFdhdGNocG9p
bnQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY7CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBMaW5rQnVmZmVyOwogICAgICAgICBmcmllbmQgY2xhc3MgV2F0Y2hwb2lu
dDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CShyZXZpc2lvbiAxNTgyMjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc3NSwxNiArMjc3NSw2IEBAIGNvbnN0IFNs
b3dBcmd1bWVudCogQ29kZUJsb2NrOjptYWNoaW5lU2wKIH0KIAogI2lmIEVOQUJMRShKSVQpCi12
b2lkIENvZGVCbG9jazo6cmVvcHRpbWl6ZSgpCi17Ci0gICAgQVNTRVJUKHJlcGxhY2VtZW50KCkg
IT0gdGhpcyk7Ci0gICAgQVNTRVJUKHJlcGxhY2VtZW50KCktPmFsdGVybmF0aXZlKCkgPT0gdGhp
cyk7Ci0gICAgaWYgKERGRzo6c2hvdWxkU2hvd0Rpc2Fzc2VtYmx5KCkpCi0gICAgICAgIGRhdGFM
b2coKnJlcGxhY2VtZW50KCksICIgd2lsbCBiZSBqZXR0aXNvbmVkIGR1ZSB0byByZW9wdGltaXph
dGlvbiBvZiAiLCAqdGhpcywgIi5cbiIpOwotICAgIHJlcGxhY2VtZW50KCktPmpldHRpc29uKCk7
Ci0gICAgY291bnRSZW9wdGltaXphdGlvbigpOwotfQotCiBDb2RlQmxvY2sqIFByb2dyYW1Db2Rl
QmxvY2s6OnJlcGxhY2VtZW50KCkKIHsKICAgICByZXR1cm4ganNDYXN0PFByb2dyYW1FeGVjdXRh
YmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5jb2RlQmxvY2soKTsKQEAgLTI4MTcsMTYgKzI4MDcs
NTMgQEAgREZHOjpDYXBhYmlsaXR5TGV2ZWwgRnVuY3Rpb25Db2RlQmxvY2s6OgogICAgIHJldHVy
biBERkc6OmZ1bmN0aW9uRm9yQ2FsbENhcGFiaWxpdHlMZXZlbCh0aGlzKTsKIH0KIAotdm9pZCBD
b2RlQmxvY2s6OmpldHRpc29uKCkKK3ZvaWQgQ29kZUJsb2NrOjpqZXR0aXNvbihSZW9wdGltaXph
dGlvbk1vZGUgbW9kZSkKIHsKKyAgICBpZiAoREZHOjpzaG91bGRTaG93RGlzYXNzZW1ibHkoKSkg
eworICAgICAgICBkYXRhTG9nKCJKZXR0aXNvbmluZyAiLCAqdGhpcyk7CisgICAgICAgIGlmICht
b2RlID09IENvdW50UmVvcHRpbWl6YXRpb24pCisgICAgICAgICAgICBkYXRhTG9nKCIgYW5kIGNv
dW50aW5nIHJlb3B0aW1pemF0aW9uIik7CisgICAgICAgIGRhdGFMb2coIi5cbiIpOworICAgIH0K
KyAgICAKICAgICBEZWZlckdDIGRlZmVyR0MoKm1faGVhcCk7Ci0gICAgQVNTRVJUKEpJVENvZGU6
OmlzT3B0aW1pemluZ0pJVChqaXRUeXBlKCkpKTsKLSAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNl
bWVudCgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoaml0
VHlwZSgpKSk7CisgICAgCisgICAgLy8gV2Ugd2FudCB0byBhY2NvbXBsaXNoIHR3byB0aGluZ3Mg
aGVyZToKKyAgICAvLyAxKSBNYWtlIHN1cmUgdGhhdCBpZiB0aGlzIENvZGVCbG9jayBpcyBvbiB0
aGUgc3RhY2sgcmlnaHQgbm93LCB0aGVuIGlmIHdlIHJldHVybiB0byBpdAorICAgIC8vICAgIHdl
IHNob3VsZCBPU1IgZXhpdCBhdCB0aGUgdG9wIG9mIHRoZSBuZXh0IGJ5dGVjb2RlIGluc3RydWN0
aW9uIGFmdGVyIHRoZSByZXR1cm4uCisgICAgLy8gMikgTWFrZSBzdXJlIHRoYXQgaWYgd2UgY2Fs
bCB0aGUgb3duZXIgZXhlY3V0YWJsZSwgdGhlbiB3ZSBzaG91bGRuJ3QgY2FsbCB0aGlzIENvZGVC
bG9jay4KKyAgICAKKyAgICAvLyBUaGlzIGFjY29tcGxpc2hlcyB0aGUgT1NSLWV4aXQtb24tcmV0
dXJuIHBhcnQsIGFuZCBkb2VzIGl0cyBvd24gYm9vay1rZWVwaW5nIGFib3V0CisgICAgLy8gd2hl
dGhlciB0aGUgaW52YWxpZGF0aW9uIGhhcyBhbHJlYWR5IGhhcHBlbmVkLgorICAgIGlmICghaml0
Q29kZSgpLT5kZmdDb21tb24oKS0+aW52YWxpZGF0ZSgpKSB7CisgICAgICAgIC8vIE5vdGhpbmcg
dG8gZG8gc2luY2Ugd2UndmUgYWxyZWFkeSBiZWVuIGludmFsaWRhdGVkLiBUaGF0IG1lYW5zIHRo
YXQgd2UgY2Fubm90IGJlCisgICAgICAgIC8vIHRoZSBvcHRpbWl6ZWQgcmVwbGFjZW1lbnQuCisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKHRoaXMgIT0gcmVwbGFjZW1lbnQoKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKERGRzo6c2hvdWxkU2hvd0Rpc2Fzc2VtYmx5KCkp
CisgICAgICAgIGRhdGFMb2coIiAgICBEaWQgaW52YWxpZGF0ZSAiLCAqdGhpcywgIlxuIik7Cisg
ICAgCisgICAgLy8gQ291bnQgdGhlIHJlb3B0aW1pemF0aW9uIGlmIHRoYXQncyB3aGF0IHRoZSB1
c2VyIHdhbnRlZC4KKyAgICBpZiAobW9kZSA9PSBDb3VudFJlb3B0aW1pemF0aW9uKSB7CisgICAg
ICAgIGJhc2VsaW5lVmVyc2lvbigpLT5jb3VudFJlb3B0aW1pemF0aW9uKCk7CisgICAgICAgIGlm
IChERkc6OnNob3VsZFNob3dEaXNhc3NlbWJseSgpKQorICAgICAgICAgICAgZGF0YUxvZygiICAg
IERpZCBjb3VudCByZW9wdGltaXphdGlvbiBmb3IgIiwgKnRoaXMsICJcbiIpOworICAgIH0KKyAg
ICAKKyAgICAvLyBOb3cgdGFrZSBjYXJlIG9mIHRoZSBlbnRyeXBvaW50LgorICAgIGlmICh0aGlz
ICE9IHJlcGxhY2VtZW50KCkpIHsKKyAgICAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHdlIHdlcmUg
bmV2ZXIgdGhlIGVudHJ5cG9pbnQuIFRoaXMgY2FuIGhhcHBlbiBmb3IgT1NSIGVudHJ5IGNvZGUK
KyAgICAgICAgLy8gYmxvY2tzLgorICAgICAgICByZXR1cm47CisgICAgfQogICAgIGFsdGVybmF0
aXZlKCktPm9wdGltaXplQWZ0ZXJXYXJtVXAoKTsKICAgICB0YWxseUZyZXF1ZW50RXhpdFNpdGVz
KCk7Ci0gICAgaWYgKERGRzo6c2hvdWxkU2hvd0Rpc2Fzc2VtYmx5KCkpCi0gICAgICAgIGRhdGFM
b2coIkpldHRpc29uaW5nICIsICp0aGlzLCAiLlxuIik7CiAgICAgYWx0ZXJuYXRpdmUoKS0+aW5z
dGFsbCgpOworICAgIGlmIChERkc6OnNob3VsZFNob3dEaXNhc3NlbWJseSgpKQorICAgICAgICBk
YXRhTG9nKCIgICAgRGlkIGluc3RhbGwgYmFzZWxpbmUgdmVyc2lvbiBvZiAiLCAqdGhpcywgIlxu
Iik7CiB9CiAjZW5kaWYKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suaAkocmV2aXNpb24gMTU4MjIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw2IEBACiAjaW5j
bHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUgIkpJVFdyaXRlQmFycmllci5oIgogI2luY2x1ZGUg
IkpTR2xvYmFsT2JqZWN0LmgiCi0jaW5jbHVkZSAiSnVtcFJlcGxhY2VtZW50V2F0Y2hwb2ludC5o
IgogI2luY2x1ZGUgIkp1bXBUYWJsZS5oIgogI2luY2x1ZGUgIkxMSW50Q2FsbExpbmtJbmZvLmgi
CiAjaW5jbHVkZSAiTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaCIKQEAgLTkyLDYgKzkxLDggQEAg
aW5saW5lIFZpcnR1YWxSZWdpc3RlciB1bm1vZGlmaWVkQXJndW1lbgogCiBzdGF0aWMgQUxXQVlT
X0lOTElORSBpbnQgbWlzc2luZ1RoaXNPYmplY3RNYXJrZXIoKSB7IHJldHVybiBzdGQ6Om51bWVy
aWNfbGltaXRzPGludD46Om1heCgpOyB9CiAKK2VudW0gUmVvcHRpbWl6YXRpb25Nb2RlIHsgRG9u
dENvdW50UmVvcHRpbWl6YXRpb24sIENvdW50UmVvcHRpbWl6YXRpb24gfTsKKwogY2xhc3MgQ29k
ZUJsb2NrIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENvZGVCbG9jaz4sIHB1YmxpYyBV
bmNvbmRpdGlvbmFsRmluYWxpemVyLCBwdWJsaWMgV2Vha1JlZmVyZW5jZUhhcnZlc3RlciB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgZnJpZW5kIGNsYXNzIEpJVDsKQEAgLTI3
Nyw3ICsyNzgsOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gaml0VHlwZSgpID09
IEpJVENvZGU6OkJhc2VsaW5lSklUOwogICAgIH0KLSAgICB2b2lkIGpldHRpc29uKCk7CisgICAg
CisgICAgdm9pZCBqZXR0aXNvbihSZW9wdGltaXphdGlvbk1vZGUgPSBEb250Q291bnRSZW9wdGlt
aXphdGlvbik7CiAgICAgCiAgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCkgPSAw
OwogCkBAIC04NTUsMTAgKzg1Nyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZUFsbFByZWRp
Y3Rpb25zKCkgeyB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShKSVQpCi0gICAgdm9pZCByZW9wdGlt
aXplKCk7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShWRVJCT1NFX1ZBTFVFX1BST0ZJTEUpCiAgICAg
dm9pZCBkdW1wVmFsdWVQcm9maWxlcygpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25p
bmdXYXRjaHBvaW50LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNvZGVCbG9ja0pldHRpc29u
aW5nV2F0Y2hwb2ludC5oIgorCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiREZH
Q29tbW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeworCit2b2lkIENvZGVCbG9ja0pldHRpc29uaW5n
V2F0Y2hwb2ludDo6ZmlyZUludGVybmFsKCkKK3sKKyAgICBpZiAoREZHOjpzaG91bGRTaG93RGlz
YXNzZW1ibHkoKSkKKyAgICAgICAgZGF0YUxvZygiRmlyaW5nIHdhdGNocG9pbnQgIiwgUmF3UG9p
bnRlcih0aGlzKSwgIiBvbiAiLCAqbV9jb2RlQmxvY2ssICJcbiIpOworCisgICAgbV9jb2RlQmxv
Y2stPmpldHRpc29uKENvdW50UmVvcHRpbWl6YXRpb24pOworCisgICAgaWYgKGlzT25MaXN0KCkp
CisgICAgICAgIHJlbW92ZSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2lu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpZm5kZWYgQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50X2gK
KyNkZWZpbmUgQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50X2gKKworI2luY2x1ZGUgIldh
dGNocG9pbnQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIENvZGVCbG9jazsKKworY2xh
c3MgQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50IDogcHVibGljIFdhdGNocG9pbnQgewor
cHVibGljOgorICAgIENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludCgpCisgICAgICAgIDog
bV9jb2RlQmxvY2soMCkKKyAgICB7CisgICAgfQorICAgIAorICAgIENvZGVCbG9ja0pldHRpc29u
aW5nV2F0Y2hwb2ludChDb2RlQmxvY2sqIGNvZGVCbG9jaykKKyAgICAgICAgOiBtX2NvZGVCbG9j
ayhjb2RlQmxvY2spCisgICAgeworICAgIH0KKyAgICAKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFs
IHZvaWQgZmlyZUludGVybmFsKCkgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgQ29kZUJsb2Nr
KiBtX2NvZGVCbG9jazsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gQ29k
ZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50X2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0V4aXRLaW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuY3BwCShyZXZpc2lvbiAxNTgyMjMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
Niw2ICs3Niw4IEBAIGNvbnN0IGNoYXIqIGV4aXRLaW5kVG9TdHJpbmcoRXhpdEtpbmQga2kKICAg
ICAgICAgcmV0dXJuICJVbmNvdW50YWJsZSI7CiAgICAgY2FzZSBVbmNvdW50YWJsZVdhdGNocG9p
bnQ6CiAgICAgICAgIHJldHVybiAiVW5jb3VudGFibGVXYXRjaHBvaW50IjsKKyAgICBjYXNlIFVu
Y291bnRhYmxlSW52YWxpZGF0aW9uOgorICAgICAgICByZXR1cm4gIlVuY291bnRhYmxlSW52YWxp
ZGF0aW9uIjsKICAgICBjYXNlIFdhdGNoZG9nVGltZXJGaXJlZDoKICAgICAgICAgcmV0dXJuICJX
YXRjaGRvZ1RpbWVyRmlyZWQiOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9FeGl0S2luZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9FeGl0S2luZC5oCShyZXZpc2lvbiAxNTgyMjMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBA
QCBlbnVtIEV4aXRLaW5kIHsKICAgICBBcmd1bWVudHNFc2NhcGVkLCAvLyBXZSBleGl0ZWQgYmVj
YXVzZSBhcmd1bWVudHMgZXNjYXBlZCBidXQgd2UgZGlkbid0IGV4cGVjdCB0aGVtIHRvLgogICAg
IE5vdFN0cmluZ09iamVjdCwgLy8gV2UgZXhpdGVkIGJlY2F1c2Ugd2Ugc2hvdWxkbid0IGhhdmUg
YXR0ZW1wdGVkIHRvIG9wdGltaXplIHN0cmluZyBvYmplY3QgYWNjZXNzLgogICAgIFVuY291bnRh
YmxlLCAvLyBXZSBleGl0ZWQgZm9yIG5vbmUgb2YgdGhlIGFib3ZlIHJlYXNvbnMsIGFuZCB3ZSBz
aG91bGQgbm90IGNvdW50IGl0LiBNb3N0IHVzZXMgb2YgdGhpcyBzaG91bGQgYmUgdmlld2VkIGFz
IGEgRklYTUUuCisgICAgVW5jb3VudGFibGVJbnZhbGlkYXRpb24sIC8vIFdlIGV4aXRlZCBiZWNh
dXNlIHRoZSBjb2RlIGJsb2NrIHdhcyBpbnZhbGlkYXRlZDsgdGhpcyBtZWFucyB0aGF0IHdlJ3Zl
IGFscmVhZHkgY291bnRlZCB0aGUgcmVhc29ucyB3aHkgdGhlIGNvZGUgYmxvY2sgd2FzIGludmFs
aWRhdGVkLgogICAgIFVuY291bnRhYmxlV2F0Y2hwb2ludCwgLy8gV2UgZXhpdGVkIGJlY2F1c2Ug
b2YgYSB3YXRjaHBvaW50LCB3aGljaCBpc24ndCBjb3VudGVkIGJlY2F1c2Ugd2F0Y2hwb2ludHMg
ZG8gdHJhY2tpbmcgdGhlbXNlbHZlcy4KICAgICBXYXRjaGRvZ1RpbWVyRmlyZWQgLy8gV2UgZXhp
dGVkIGJlY2F1c2Ugd2UgbmVlZCB0byBzZXJ2aWNlIHRoZSB3YXRjaGRvZyB0aW1lci4KIH07Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0
aXNvbmluZ1dhdGNocG9pbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Qcm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvZmlsZWRDb2Rl
QmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlByb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdX
YXRjaHBvaW50LmgiCisKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJERkdDb21t
b24uaCIKKyNpbmNsdWRlICJERkdFeGl0UHJvZmlsZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
dm9pZCBQcm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludDo6ZmlyZUludGVybmFs
KCkKK3sKKyAgICBpZiAoREZHOjpzaG91bGRTaG93RGlzYXNzZW1ibHkoKSkgeworICAgICAgICBk
YXRhTG9nKAorICAgICAgICAgICAgIkZpcmluZyBwcm9maWxlZCB3YXRjaHBvaW50ICIsIFJhd1Bv
aW50ZXIodGhpcyksICIgb24gIiwgKm1fY29kZUJsb2NrLCAiIGR1ZSB0byAiLAorICAgICAgICAg
ICAgbV9leGl0S2luZCwgIiBhdCAiLCBtX2NvZGVPcmlnaW4sICJcbiIpOworICAgIH0KKyAgICAK
KyAgICBiYXNlbGluZUNvZGVCbG9ja0Zvck9yaWdpbkFuZEJhc2VsaW5lQ29kZUJsb2NrKAorICAg
ICAgICBtX2NvZGVPcmlnaW4sIG1fY29kZUJsb2NrLT5iYXNlbGluZVZlcnNpb24oKSktPmFkZEZy
ZXF1ZW50RXhpdFNpdGUoCisgICAgICAgICAgICBERkc6OkZyZXF1ZW50RXhpdFNpdGUobV9jb2Rl
T3JpZ2luLmJ5dGVjb2RlSW5kZXgsIG1fZXhpdEtpbmQpKTsKKyAgICAKKyAgICBtX2NvZGVCbG9j
ay0+amV0dGlzb24oQ291bnRSZW9wdGltaXphdGlvbik7CisKKyAgICBpZiAoaXNPbkxpc3QoKSkK
KyAgICAgICAgcmVtb3ZlKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmluZ1dh
dGNocG9pbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9maWxlZENvZGVCbG9ja0pldHRpc29u
aW5nV2F0Y2hwb2ludC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBQcm9maWxlZENv
ZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludF9oCisjZGVmaW5lIFByb2ZpbGVkQ29kZUJsb2Nr
SmV0dGlzb25pbmdXYXRjaHBvaW50X2gKKworI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKKyNpbmNs
dWRlICJFeGl0S2luZC5oIgorI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NsYXNzIENvZGVCbG9jazsKKworY2xhc3MgUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNv
bmluZ1dhdGNocG9pbnQgOiBwdWJsaWMgV2F0Y2hwb2ludCB7CitwdWJsaWM6CisgICAgUHJvZmls
ZWRDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQoKQorICAgICAgICA6IG1fZXhpdEtpbmQo
RXhpdEtpbmRVbnNldCkKKyAgICAgICAgLCBtX2NvZGVCbG9jaygwKQorICAgIHsKKyAgICB9Cisg
ICAgCisgICAgUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQoCisgICAgICAg
IENvZGVPcmlnaW4gY29kZU9yaWdpbiwgRXhpdEtpbmQgZXhpdEtpbmQsIENvZGVCbG9jayogY29k
ZUJsb2NrKQorICAgICAgICA6IG1fY29kZU9yaWdpbihjb2RlT3JpZ2luKQorICAgICAgICAsIG1f
ZXhpdEtpbmQoZXhpdEtpbmQpCisgICAgICAgICwgbV9jb2RlQmxvY2soY29kZUJsb2NrKQorICAg
IHsKKyAgICB9CisgICAgCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIGZpcmVJbnRlcm5h
bCgpIE9WRVJSSURFOworCitwcml2YXRlOgorICAgIENvZGVPcmlnaW4gbV9jb2RlT3JpZ2luOwor
ICAgIEV4aXRLaW5kIG1fZXhpdEtpbmQ7CisgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKK307
CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gUHJvZmlsZWRDb2RlQmxvY2tKZXR0
aXNvbmluZ1dhdGNocG9pbnRfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0SGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RIZWFwLmgJKHJldmlzaW9uIDE1ODIyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDgg
QEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKFJlZ0V4cFN0YXRl
KSBcCiAgICAgbWFjcm8oSW50ZXJuYWxTdGF0ZSkgXAogICAgIG1hY3JvKEFic29sdXRlKSBcCisg
ICAgLyogVXNlIHRoaXMgZm9yIHdyaXRlcyBvbmx5LCB0byBpbmRpY2F0ZSB0aGF0IHRoaXMgbWF5
IGZpcmUgd2F0Y2hwb2ludHMuIFVzdWFsbHkgdGhpcyBpcyBuZXZlciBkaXJlY3RseSB3cml0dGVu
IGJ1dCBpbnN0ZWFkIHdlIHRlc3QgdG8gc2VlIGlmIGEgbm9kZSBjbG9iYmVycyB0aGlzOyBpdCBq
dXN0IHNvIGhhcHBlbnMgdGhhdCB5b3UgaGF2ZSB0byB3cml0ZSB3b3JsZCB0byBjbG9iYmVyIGl0
LiAqL1wKKyAgICBtYWNybyhXYXRjaHBvaW50X2ZpcmUpIFwKICAgICAvKiBVc2UgdGhpcyBmb3Ig
cmVhZHMgb25seSwganVzdCB0byBpbmRpY2F0ZSB0aGF0IGlmIHRoZSB3b3JsZCBnb3QgY2xvYmJl
cmVkLCB0aGVuIHRoaXMgb3BlcmF0aW9uIHdpbGwgbm90IHdvcmsuICovXAogICAgIG1hY3JvKE1p
c2NGaWVsZHMpIFwKICAgICAvKiBVc2UgdGhpcyBmb3Igd3JpdGVzIG9ubHksIGp1c3QgdG8gaW5k
aWNhdGUgdGhhdCBob2lzdGluZyB0aGUgbm9kZSBpcyBpbnZhbGlkLiBUaGlzIHdvcmtzIGJlY2F1
c2Ugd2UgZG9uJ3QgaG9pc3QgYW55dGhpbmcgdGhhdCBoYXMgYW55IHNpZGUgZWZmZWN0cyBhdCBh
bGwuICovXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMTU4MjIzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTM1LDYgKzE1MzUsMTAgQEAgYm9vbCBBYnN0cmFjdEludGVycHJl
dGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAg
ICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOwogICAgICAgICBicmVhazsKKyAgICAgICAg
CisgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoKKyAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0
cnVlKTsKKyAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIENoZWNrV2F0Y2hk
b2dUaW1lcjoKICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmNwcAkocmV2aXNpb24gMTU4MjIzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDAsNiArNDAsMTQgQEAgYm9vbCBkb2VzV3JpdGVzKEdyYXBoJiBncmFwaCwgTm9k
ZSogbm9kZQogICAgIHJldHVybiBhZGRXcml0ZS5yZXN1bHQoKTsKIH0KIAorYm9vbCB3cml0ZXNP
dmVybGFwKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgQWJzdHJhY3RIZWFwIGhlYXApCit7Cisg
ICAgTm9PcENsb2JiZXJpemUgYWRkUmVhZDsKKyAgICBBYnN0cmFjdEhlYXBPdmVybGFwcyBhZGRX
cml0ZShoZWFwKTsKKyAgICBjbG9iYmVyaXplKGdyYXBoLCBub2RlLCBhZGRSZWFkLCBhZGRXcml0
ZSk7CisgICAgcmV0dXJuIGFkZFdyaXRlLnJlc3VsdCgpOworfQorCiB9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShyZXZpc2lvbiAxNTgyMjMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkod29ya2luZyBjb3B5KQpAQCAt
MTM3LDYgKzEzNyw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUK
ICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CiAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9T
UkVudGVyOgogICAgIGNhc2UgTG9vcEhpbnQ6CisgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoK
ICAgICAgICAgd3JpdGUoU2lkZVN0YXRlKTsKICAgICAgICAgcmV0dXJuOwogCkBAIC02NjksNiAr
NjcwLDMwIEBAIHByaXZhdGU6CiAKIGJvb2wgZG9lc1dyaXRlcyhHcmFwaCYsIE5vZGUqKTsKIAor
Y2xhc3MgQWJzdHJhY3RIZWFwT3ZlcmxhcHMgeworcHVibGljOgorICAgIEFic3RyYWN0SGVhcE92
ZXJsYXBzKEFic3RyYWN0SGVhcCBoZWFwKQorICAgICAgICA6IG1faGVhcChoZWFwKQorICAgICAg
ICAsIG1fcmVzdWx0KGZhbHNlKQorICAgIHsKKyAgICB9CisgICAgCisgICAgdm9pZCBvcGVyYXRv
cigpKEFic3RyYWN0SGVhcCBvdGhlckhlYXApCisgICAgeworICAgICAgICBpZiAobV9yZXN1bHQp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fcmVzdWx0ID0gbV9oZWFwLm92ZXJsYXBz
KG90aGVySGVhcCk7CisgICAgfQorICAgIAorICAgIGJvb2wgcmVzdWx0KCkgY29uc3QgeyByZXR1
cm4gbV9yZXN1bHQ7IH0KKworcHJpdmF0ZToKKyAgICBBYnN0cmFjdEhlYXAgbV9oZWFwOworICAg
IGJvb2wgbV9yZXN1bHQ7Cit9OworCitib29sIHdyaXRlc092ZXJsYXAoR3JhcGgmLCBOb2RlKiwg
QWJzdHJhY3RIZWFwKTsKKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYgLy8g
RU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1v
bkRhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29t
bW9uRGF0YS5jcHAJKHJldmlzaW9uIDE1ODIyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ29tbW9uRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDE2IEBAIHZv
aWQgQ29tbW9uRGF0YTo6c2hyaW5rVG9GaXQoKQogICAgIHRyYW5zaXRpb25zLnNocmlua1RvRml0
KCk7CiB9CiAKK2Jvb2wgQ29tbW9uRGF0YTo6aW52YWxpZGF0ZSgpCit7CisgICAgaWYgKCFpc1N0
aWxsVmFsaWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBq
dW1wUmVwbGFjZW1lbnRzLnNpemUoKTsgaS0tOykKKyAgICAgICAganVtcFJlcGxhY2VtZW50c1tp
XS5maXJlKCk7CisgICAgaXNTdGlsbFZhbGlkID0gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklU
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmgJKHJldmlz
aW9uIDE1ODIyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uRGF0YS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw4ICszMCwxMSBAQAogCiAjaWYgRU5BQkxFKERGR19KSVQp
CiAKKyNpbmNsdWRlICJDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuaCIKKyNpbmNsdWRl
ICJERkdKdW1wUmVwbGFjZW1lbnQuaCIKICNpbmNsdWRlICJJbmxpbmVDYWxsRnJhbWVTZXQuaCIK
ICNpbmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlICJQcm9maWxlZENvZGVCbG9ja0pldHRpc29u
aW5nV2F0Y2hwb2ludC5oIgogI2luY2x1ZGUgIlByb2ZpbGVyQ29tcGlsYXRpb24uaCIKICNpbmNs
dWRlICJTeW1ib2xUYWJsZS5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAtNjks
MTMgKzcyLDE2IEBAIGNsYXNzIENvbW1vbkRhdGEgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KENvbW1vbkRhdGEpOwogcHVibGljOgogICAgIENvbW1vbkRhdGEoKQotICAgICAgICA6IG1hY2hp
bmVDYXB0dXJlU3RhcnQoc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSkKKyAgICAgICAg
OiBpc1N0aWxsVmFsaWQodHJ1ZSkKKyAgICAgICAgLCBtYWNoaW5lQ2FwdHVyZVN0YXJ0KHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpCiAgICAgeyB9CiAgICAgCiAgICAgdm9pZCBub3Rp
ZnlDb21waWxpbmdTdHJ1Y3R1cmVUcmFuc2l0aW9uKFBsYW4mLCBDb2RlQmxvY2sqLCBOb2RlKik7
CiAgICAgdW5zaWduZWQgYWRkQ29kZU9yaWdpbihDb2RlT3JpZ2luIGNvZGVPcmlnaW4pOwogICAg
IAogICAgIHZvaWQgc2hyaW5rVG9GaXQoKTsKKyAgICAKKyAgICBib29sIGludmFsaWRhdGUoKTsg
Ly8gUmV0dXJucyB0cnVlIGlmIHdlIGRpZCBpbnZhbGlkYXRlLCBvciBmYWxzZSBpZiB0aGUgY29k
ZSBibG9jayB3YXMgYWxyZWFkeSBpbnZhbGlkYXRlZC4KIAogICAgIE93blB0cjxJbmxpbmVDYWxs
RnJhbWVTZXQ+IGlubGluZUNhbGxGcmFtZXM7CiAgICAgVmVjdG9yPENvZGVPcmlnaW4sIDAsIFVu
c2FmZVZlY3Rvck92ZXJmbG93PiBjb2RlT3JpZ2luczsKQEAgLTgzLDEwICs4OSwxNCBAQCBwdWJs
aWM6CiAgICAgVmVjdG9yPElkZW50aWZpZXI+IGRmZ0lkZW50aWZpZXJzOwogICAgIFZlY3RvcjxX
ZWFrUmVmZXJlbmNlVHJhbnNpdGlvbj4gdHJhbnNpdGlvbnM7CiAgICAgVmVjdG9yPFdyaXRlQmFy
cmllcjxKU0NlbGw+PiB3ZWFrUmVmZXJlbmNlczsKKyAgICBTZWdtZW50ZWRWZWN0b3I8Q29kZUJs
b2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LCAxLCAwPiB3YXRjaHBvaW50czsKKyAgICBTZWdtZW50
ZWRWZWN0b3I8UHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQsIDEsIDA+IHBy
b2ZpbGVkV2F0Y2hwb2ludHM7CisgICAgVmVjdG9yPEp1bXBSZXBsYWNlbWVudD4ganVtcFJlcGxh
Y2VtZW50czsKICAgICAKICAgICBSZWZQdHI8UHJvZmlsZXI6OkNvbXBpbGF0aW9uPiBjb21waWxh
dGlvbjsKICAgICBib29sIGxpdmVuZXNzSGFzQmVlblByb3ZlZDsgLy8gSW5pdGlhbGl6ZWQgYW5k
IHVzZWQgb24gZXZlcnkgR0MuCiAgICAgYm9vbCBhbGxUcmFuc2l0aW9uc0hhdmVCZWVuTWFya2Vk
OyAvLyBJbml0aWFsaXplZCBhbmQgdXNlZCBvbiBldmVyeSBHQy4KKyAgICBib29sIGlzU3RpbGxW
YWxpZDsKICAgICAKICAgICBpbnQgbWFjaGluZUNhcHR1cmVTdGFydDsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8U2xvd0FyZ3VtZW50W10+IHNsb3dBcmd1bWVudHM7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwCShyZXZpc2lv
biAxNTgyMjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRXYXRjaHBv
aW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDIwICszMywzMCBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiBEZXNpcmVkV2F0Y2hwb2ludHM6OkRlc2lyZWRXYXRjaHBvaW50
cygpIHsgfQogRGVzaXJlZFdhdGNocG9pbnRzOjp+RGVzaXJlZFdhdGNocG9pbnRzKCkgeyB9CiAK
LXZvaWQgRGVzaXJlZFdhdGNocG9pbnRzOjphZGRMYXppbHkoV2F0Y2hwb2ludCogd2F0Y2hwb2lu
dCwgV2F0Y2hwb2ludFNldCogc2V0KQordm9pZCBEZXNpcmVkV2F0Y2hwb2ludHM6OmFkZExhemls
eShXYXRjaHBvaW50U2V0KiBzZXQpCiB7Ci0gICAgbV9zZXRzLmFkZExhemlseShXYXRjaHBvaW50
Rm9yV2F0Y2hwb2ludFNldCh3YXRjaHBvaW50LCBzZXQpKTsKKyAgICBtX3NldHMuYWRkTGF6aWx5
KHNldCk7CiB9CiAKLXZvaWQgRGVzaXJlZFdhdGNocG9pbnRzOjphZGRMYXppbHkoV2F0Y2hwb2lu
dCogd2F0Y2hwb2ludCwgSW5saW5lV2F0Y2hwb2ludFNldCYgc2V0KQordm9pZCBEZXNpcmVkV2F0
Y2hwb2ludHM6OmFkZExhemlseShJbmxpbmVXYXRjaHBvaW50U2V0JiBzZXQpCiB7Ci0gICAgbV9p
bmxpbmVTZXRzLmFkZExhemlseShXYXRjaHBvaW50Rm9ySW5saW5lV2F0Y2hwb2ludFNldCh3YXRj
aHBvaW50LCAmc2V0KSk7CisgICAgbV9pbmxpbmVTZXRzLmFkZExhemlseSgmc2V0KTsKIH0KIAot
dm9pZCBEZXNpcmVkV2F0Y2hwb2ludHM6OnJlYWxseUFkZCgpCit2b2lkIERlc2lyZWRXYXRjaHBv
aW50czo6YWRkTGF6aWx5KENvZGVPcmlnaW4gY29kZU9yaWdpbiwgRXhpdEtpbmQgZXhpdEtpbmQs
IFdhdGNocG9pbnRTZXQqIHNldCkKIHsKLSAgICBtX3NldHMucmVhbGx5QWRkKCk7Ci0gICAgbV9p
bmxpbmVTZXRzLnJlYWxseUFkZCgpOworICAgIG1fc2V0cy5hZGRMYXppbHkoY29kZU9yaWdpbiwg
ZXhpdEtpbmQsIHNldCk7Cit9CisKK3ZvaWQgRGVzaXJlZFdhdGNocG9pbnRzOjphZGRMYXppbHko
Q29kZU9yaWdpbiBjb2RlT3JpZ2luLCBFeGl0S2luZCBleGl0S2luZCwgSW5saW5lV2F0Y2hwb2lu
dFNldCYgc2V0KQoreworICAgIG1faW5saW5lU2V0cy5hZGRMYXppbHkoY29kZU9yaWdpbiwgZXhp
dEtpbmQsICZzZXQpOworfQorCit2b2lkIERlc2lyZWRXYXRjaHBvaW50czo6cmVhbGx5QWRkKENv
ZGVCbG9jayogY29kZUJsb2NrLCBDb21tb25EYXRhJiBjb21tb25EYXRhKQoreworICAgIG1fc2V0
cy5yZWFsbHlBZGQoY29kZUJsb2NrLCBjb21tb25EYXRhKTsKKyAgICBtX2lubGluZVNldHMucmVh
bGx5QWRkKGNvZGVCbG9jaywgY29tbW9uRGF0YSk7CiB9CiAKIGJvb2wgRGVzaXJlZFdhdGNocG9p
bnRzOjphcmVTdGlsbFZhbGlkKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hwb2ludHMuaAkocmV2aXNpb24gMTU4MjIzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hwb2ludHMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsOCArMzAsMTEgQEAKIAogI2lmIEVOQUJMRShERkdfSklUKQogCisjaW5j
bHVkZSAiQ29kZU9yaWdpbi5oIgorI2luY2x1ZGUgIkRGR0NvbW1vbkRhdGEuaCIKICNpbmNsdWRl
ICJXYXRjaHBvaW50LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIApAQCAtNDAsMjQgKzQzLDI0IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
REZHIHsKIHRlbXBsYXRlPHR5cGVuYW1lIFdhdGNocG9pbnRTZXRUeXBlPgogc3RydWN0IFdhdGNo
cG9pbnRGb3JHZW5lcmljV2F0Y2hwb2ludFNldCB7CiAgICAgV2F0Y2hwb2ludEZvckdlbmVyaWNX
YXRjaHBvaW50U2V0KCkKLSAgICAgICAgOiBtX3dhdGNocG9pbnQoMCkKKyAgICAgICAgOiBtX2V4
aXRLaW5kKEV4aXRLaW5kVW5zZXQpCiAgICAgICAgICwgbV9zZXQoMCkKICAgICB7CiAgICAgfQog
ICAgIAotICAgIFdhdGNocG9pbnRGb3JHZW5lcmljV2F0Y2hwb2ludFNldChXYXRjaHBvaW50KiB3
YXRjaHBvaW50LCBXYXRjaHBvaW50U2V0VHlwZSogc2V0KQotICAgICAgICA6IG1fd2F0Y2hwb2lu
dCh3YXRjaHBvaW50KQorICAgIFdhdGNocG9pbnRGb3JHZW5lcmljV2F0Y2hwb2ludFNldCgKKyAg
ICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBFeGl0S2luZCBleGl0S2luZCwgV2F0Y2hwb2lu
dFNldFR5cGUqIHNldCkKKyAgICAgICAgOiBtX2NvZGVPcmlnaW4oY29kZU9yaWdpbikKKyAgICAg
ICAgLCBtX2V4aXRLaW5kKGV4aXRLaW5kKQogICAgICAgICAsIG1fc2V0KHNldCkKICAgICB7CiAg
ICAgfQogICAgIAotICAgIFdhdGNocG9pbnQqIG1fd2F0Y2hwb2ludDsKKyAgICBDb2RlT3JpZ2lu
IG1fY29kZU9yaWdpbjsKKyAgICBFeGl0S2luZCBtX2V4aXRLaW5kOwogICAgIFdhdGNocG9pbnRT
ZXRUeXBlKiBtX3NldDsKIH07CiAKLXR5cGVkZWYgV2F0Y2hwb2ludEZvckdlbmVyaWNXYXRjaHBv
aW50U2V0PFdhdGNocG9pbnRTZXQ+IFdhdGNocG9pbnRGb3JXYXRjaHBvaW50U2V0OwotdHlwZWRl
ZiBXYXRjaHBvaW50Rm9yR2VuZXJpY1dhdGNocG9pbnRTZXQ8SW5saW5lV2F0Y2hwb2ludFNldD4g
V2F0Y2hwb2ludEZvcklubGluZVdhdGNocG9pbnRTZXQ7Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIFdh
dGNocG9pbnRTZXRUeXBlPgogY2xhc3MgR2VuZXJpY0Rlc2lyZWRXYXRjaHBvaW50cyB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoR2VuZXJpY0Rlc2lyZWRXYXRjaHBvaW50cyk7CkBAIC03MCwy
NSArNzMsNTMgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAgICAgCi0gICAgdm9pZCBhZGRMYXpp
bHkoY29uc3QgV2F0Y2hwb2ludEZvckdlbmVyaWNXYXRjaHBvaW50U2V0PFdhdGNocG9pbnRTZXRU
eXBlPiYgd2F0Y2hwb2ludCkKKyAgICB2b2lkIGFkZExhemlseShXYXRjaHBvaW50U2V0VHlwZSog
c2V0KQorICAgIHsKKyAgICAgICAgbV9zZXRzLmFkZChzZXQpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGFkZExhemlseShDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEV4aXRLaW5kIGV4aXRLaW5kLCBX
YXRjaHBvaW50U2V0VHlwZSogc2V0KQogICAgIHsKLSAgICAgICAgbV93YXRjaHBvaW50cy5hcHBl
bmQod2F0Y2hwb2ludCk7CisgICAgICAgIG1fcHJvZmlsZWRXYXRjaHBvaW50cy5hcHBlbmQoCisg
ICAgICAgICAgICBXYXRjaHBvaW50Rm9yR2VuZXJpY1dhdGNocG9pbnRTZXQ8V2F0Y2hwb2ludFNl
dFR5cGU+KGNvZGVPcmlnaW4sIGV4aXRLaW5kLCBzZXQpKTsKICAgICB9CiAgICAgCi0gICAgdm9p
ZCByZWFsbHlBZGQoKQorICAgIHZvaWQgcmVhbGx5QWRkKENvZGVCbG9jayogY29kZUJsb2NrLCBD
b21tb25EYXRhJiBjb21tb24pCiAgICAgewogICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9yZWFs
bHlBZGRlZCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fd2F0Y2hwb2ludHMuc2l6ZSgp
OyBpLS07KQotICAgICAgICAgICAgbV93YXRjaHBvaW50c1tpXS5tX3NldC0+YWRkKG1fd2F0Y2hw
b2ludHNbaV0ubV93YXRjaHBvaW50KTsKKyAgICAgICAgCisgICAgICAgIHR5cGVuYW1lIEhhc2hT
ZXQ8V2F0Y2hwb2ludFNldFR5cGUqPjo6aXRlcmF0b3IgaXRlciA9IG1fc2V0cy5iZWdpbigpOwor
ICAgICAgICB0eXBlbmFtZSBIYXNoU2V0PFdhdGNocG9pbnRTZXRUeXBlKj46Oml0ZXJhdG9yIGVu
ZCA9IG1fc2V0cy5lbmQoKTsKKyAgICAgICAgZm9yICg7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsK
KyAgICAgICAgICAgIGNvbW1vbi53YXRjaHBvaW50cy5hcHBlbmQoQ29kZUJsb2NrSmV0dGlzb25p
bmdXYXRjaHBvaW50KGNvZGVCbG9jaykpOworICAgICAgICAgICAgKCppdGVyKS0+YWRkKCZjb21t
b24ud2F0Y2hwb2ludHMubGFzdCgpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gbV9wcm9maWxlZFdhdGNocG9pbnRzLnNpemUoKTsgaS0tOykgeworICAg
ICAgICAgICAgV2F0Y2hwb2ludEZvckdlbmVyaWNXYXRjaHBvaW50U2V0PFdhdGNocG9pbnRTZXRU
eXBlPiB3YXRjaHBvaW50ID0KKyAgICAgICAgICAgICAgICBtX3Byb2ZpbGVkV2F0Y2hwb2ludHNb
aV07CisgICAgICAgICAgICBjb21tb24ucHJvZmlsZWRXYXRjaHBvaW50cy5hcHBlbmQoCisgICAg
ICAgICAgICAgICAgUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQod2F0Y2hw
b2ludC5tX2NvZGVPcmlnaW4sIHdhdGNocG9pbnQubV9leGl0S2luZCwgY29kZUJsb2NrKSk7Cisg
ICAgICAgICAgICB3YXRjaHBvaW50Lm1fc2V0LT5hZGQoJmNvbW1vbi5wcm9maWxlZFdhdGNocG9p
bnRzLmxhc3QoKSk7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIG1fcmVhbGx5QWRkZWQg
PSB0cnVlOwogICAgIH0KICAgICAKICAgICBib29sIGFyZVN0aWxsVmFsaWQoKSBjb25zdAogICAg
IHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV93YXRjaHBvaW50cy5zaXplKCk7IGktLTsp
IHsKLSAgICAgICAgICAgIGlmIChtX3dhdGNocG9pbnRzW2ldLm1fc2V0LT5oYXNCZWVuSW52YWxp
ZGF0ZWQoKSkKKyAgICAgICAgdHlwZW5hbWUgSGFzaFNldDxXYXRjaHBvaW50U2V0VHlwZSo+Ojpp
dGVyYXRvciBpdGVyID0gbV9zZXRzLmJlZ2luKCk7CisgICAgICAgIHR5cGVuYW1lIEhhc2hTZXQ8
V2F0Y2hwb2ludFNldFR5cGUqPjo6aXRlcmF0b3IgZW5kID0gbV9zZXRzLmVuZCgpOworICAgICAg
ICBmb3IgKDsgaXRlciAhPSBlbmQ7ICsraXRlcikgeworICAgICAgICAgICAgaWYgKCgqaXRlcikt
Pmhhc0JlZW5JbnZhbGlkYXRlZCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9wcm9maWxlZFdh
dGNocG9pbnRzLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgaWYgKG1fcHJvZmlsZWRXYXRj
aHBvaW50c1tpXS5tX3NldC0+aGFzQmVlbkludmFsaWRhdGVkKCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICB9CisgICAgICAgIAogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAgICAgCkBAIC0xMjYsNyArMTU3LDggQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0
ZToKLSAgICBWZWN0b3I8V2F0Y2hwb2ludEZvckdlbmVyaWNXYXRjaHBvaW50U2V0PFdhdGNocG9p
bnRTZXRUeXBlPj4gbV93YXRjaHBvaW50czsKKyAgICBWZWN0b3I8V2F0Y2hwb2ludEZvckdlbmVy
aWNXYXRjaHBvaW50U2V0PFdhdGNocG9pbnRTZXRUeXBlPj4gbV9wcm9maWxlZFdhdGNocG9pbnRz
OworICAgIEhhc2hTZXQ8V2F0Y2hwb2ludFNldFR5cGUqPiBtX3NldHM7CiAjaWYgIUFTU0VSVF9E
SVNBQkxFRAogICAgIFN0YXRlTWFwIG1fZmlyc3RLbm93blN0YXRlOwogI2VuZGlmCkBAIC0xMzgs
MTAgKzE3MCwxMiBAQCBwdWJsaWM6CiAgICAgRGVzaXJlZFdhdGNocG9pbnRzKCk7CiAgICAgfkRl
c2lyZWRXYXRjaHBvaW50cygpOwogICAgIAotICAgIHZvaWQgYWRkTGF6aWx5KFdhdGNocG9pbnQq
LCBXYXRjaHBvaW50U2V0Kik7Ci0gICAgdm9pZCBhZGRMYXppbHkoV2F0Y2hwb2ludCosIElubGlu
ZVdhdGNocG9pbnRTZXQmKTsKKyAgICB2b2lkIGFkZExhemlseShXYXRjaHBvaW50U2V0Kik7Cisg
ICAgdm9pZCBhZGRMYXppbHkoSW5saW5lV2F0Y2hwb2ludFNldCYpOworICAgIHZvaWQgYWRkTGF6
aWx5KENvZGVPcmlnaW4sIEV4aXRLaW5kLCBXYXRjaHBvaW50U2V0Kik7CisgICAgdm9pZCBhZGRM
YXppbHkoQ29kZU9yaWdpbiwgRXhpdEtpbmQsIElubGluZVdhdGNocG9pbnRTZXQmKTsKICAgICAK
LSAgICB2b2lkIHJlYWxseUFkZCgpOworICAgIHZvaWQgcmVhbGx5QWRkKENvZGVCbG9jayosIENv
bW1vbkRhdGEmKTsKICAgICAKICAgICBib29sIGFyZVN0aWxsVmFsaWQoKSBjb25zdDsKICAgICAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2
aXNpb24gMTU4MjIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODg1LDYgKzg4NSw3IEBAIHByaXZhdGU6CiAgICAgICAg
IGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoKICAgICAgICAgY2FzZSBJbnQ1MlRvRG91Ymxl
OgogICAgICAgICBjYXNlIEludDUyVG9WYWx1ZToKKyAgICAgICAgY2FzZSBJbnZhbGlkYXRpb25Q
b2ludDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
ICAgICBicmVhazsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnZhbGlk
YXRpb25Qb2ludEluamVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ludmFsaWRhdGlvblBvaW50SW5qZWN0aW9uUGhhc2UuY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnZhbGlkYXRpb25Qb2lu
dEluamVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExNCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiREZHSW52YWxpZGF0aW9uUG9pbnRJbmplY3Rpb25QaGFzZS5oIgor
CisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRlICJERkdDbG9iYmVyaXplLmgiCisjaW5j
bHVkZSAiREZHR3JhcGguaCIKKyNpbmNsdWRlICJERkdJbnNlcnRpb25TZXQuaCIKKyNpbmNsdWRl
ICJERkdQaGFzZS5oIgorI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKKworbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgeworCitjbGFzcyBJbnZhbGlkYXRpb25Qb2ludEluamVjdGlvblBoYXNl
IDogcHVibGljIFBoYXNlIHsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7
CisgICAgCitwdWJsaWM6CisgICAgSW52YWxpZGF0aW9uUG9pbnRJbmplY3Rpb25QaGFzZShHcmFw
aCYgZ3JhcGgpCisgICAgICAgIDogUGhhc2UoZ3JhcGgsICJpbnZhbGlkYXRpb24gcG9pbnQgaW5q
ZWN0aW9uIikKKyAgICAgICAgLCBtX2luc2VydGlvblNldChncmFwaCkKKyAgICB7CisgICAgfQor
ICAgIAorICAgIGJvb2wgcnVuKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2dyYXBoLm1fZm9y
bSAhPSBTU0EpOworICAgICAgICAKKyAgICAgICAgQml0VmVjdG9yIGJsb2Nrc1RoYXROZWVkSW52
YWxpZGF0aW9uUG9pbnRzOworICAgICAgICAKKyAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2Nr
SW5kZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7CisgICAgICAgICAg
ICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7CisgICAgICAg
ICAgICBpZiAoIWJsb2NrKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIG5vZGVJbmRleCA9IDA7IG5vZGVJbmRleCA8IGJs
b2NrLT5zaXplKCk7ICsrbm9kZUluZGV4KQorICAgICAgICAgICAgICAgIGhhbmRsZShub2RlSW5k
ZXgsIGJsb2NrLT5hdChub2RlSW5kZXgpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8g
Tm90ZTogdGhpcyBhc3N1bWVzIHRoYXQgY29udHJvbCBmbG93IG9jY3VycyBhdCBieXRlY29kZSBp
bnN0cnVjdGlvbiBib3VuZGFyaWVzLgorICAgICAgICAgICAgaWYgKG1fb3JpZ2luVGhhdEhhZEZp
cmUuaXNTZXQoKSkgeworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5u
dW1TdWNjZXNzb3JzKCk7IGktLTspCisgICAgICAgICAgICAgICAgICAgIGJsb2Nrc1RoYXROZWVk
SW52YWxpZGF0aW9uUG9pbnRzLnNldChibG9jay0+c3VjY2Vzc29yKGkpLT5pbmRleCk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0LmV4ZWN1
dGUoYmxvY2spOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmb3IgKEJsb2NrSW5kZXgg
YmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKKyAgICAg
ICAgICAgIGlmICghYmxvY2tzVGhhdE5lZWRJbnZhbGlkYXRpb25Qb2ludHMuZ2V0KGJsb2NrSW5k
ZXgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgCisgICAgICAgICAg
ICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7CisgICAgICAg
ICAgICBpbnNlcnRJbnZhbGlkYXRpb25DaGVjaygwLCBibG9jay0+YXQoMCkpOworICAgICAgICAg
ICAgbV9pbnNlcnRpb25TZXQuZXhlY3V0ZShibG9jayk7CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGhhbmRsZSh1
bnNpZ25lZCBub2RlSW5kZXgsIE5vZGUqIG5vZGUpCisgICAgeworICAgICAgICBpZiAobV9vcmln
aW5UaGF0SGFkRmlyZS5pc1NldCgpICYmIG1fb3JpZ2luVGhhdEhhZEZpcmUgIT0gbm9kZS0+Y29k
ZU9yaWdpbikgeworICAgICAgICAgICAgaW5zZXJ0SW52YWxpZGF0aW9uQ2hlY2sobm9kZUluZGV4
LCBub2RlKTsKKyAgICAgICAgICAgIG1fb3JpZ2luVGhhdEhhZEZpcmUgPSBDb2RlT3JpZ2luKCk7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmICh3cml0ZXNPdmVybGFwKG1fZ3JhcGgs
IG5vZGUsIFdhdGNocG9pbnRfZmlyZSkpCisgICAgICAgICAgICBtX29yaWdpblRoYXRIYWRGaXJl
ID0gbm9kZS0+Y29kZU9yaWdpbjsKKyAgICB9CisgICAgCisgICAgdm9pZCBpbnNlcnRJbnZhbGlk
YXRpb25DaGVjayh1bnNpZ25lZCBub2RlSW5kZXgsIE5vZGUqIG5vZGUpCisgICAgeworICAgICAg
ICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKG5vZGVJbmRleCwgU3BlY05vbmUsIEludmFsaWRh
dGlvblBvaW50LCBub2RlLT5jb2RlT3JpZ2luKTsKKyAgICB9CisgICAgCisgICAgQ29kZU9yaWdp
biBtX29yaWdpblRoYXRIYWRGaXJlOworICAgIEluc2VydGlvblNldCBtX2luc2VydGlvblNldDsK
K307CisKK2Jvb2wgcGVyZm9ybUludmFsaWRhdGlvblBvaW50SW5qZWN0aW9uKEdyYXBoJiBncmFw
aCkKK3sKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIEludmFsaWRhdGlv
biBQb2ludCBJbmplY3Rpb24gUGhhc2UiKTsKKyAgICByZXR1cm4gcnVuUGhhc2U8SW52YWxpZGF0
aW9uUG9pbnRJbmplY3Rpb25QaGFzZT4oZ3JhcGgpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6REZHCisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdJbnZhbGlkYXRpb25Qb2ludEluamVjdGlvblBoYXNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnZhbGlkYXRpb25Qb2ludElu
amVjdGlvblBoYXNlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ludmFsaWRhdGlvblBvaW50SW5qZWN0aW9uUGhhc2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpZm5kZWYgREZHSW52YWxpZGF0aW9uUG9pbnRJbmplY3Rpb25QaGFzZV9oCisjZGVmaW5l
IERGR0ludmFsaWRhdGlvblBvaW50SW5qZWN0aW9uUGhhc2VfaAorCisjaW5jbHVkZSA8d3RmL1Bs
YXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBERkcgeworCitjbGFzcyBHcmFwaDsKKworLy8gSW5zZXJ0cyBhbiBpbnZhbGlkYXRpb24g
Y2hlY2sgYXQgdGhlIGJlZ2lubmluZyBvZiBhbnkgQ29kZU9yaWdpbiB0aGF0IGZvbGxvd3MgYSBD
b2RlT3JpZ2luCisvLyB0aGF0IGhhZCBhIGNhbGwgKGNsb2JiZXJlZCBXb3JsZCkuCisKK2Jvb2wg
cGVyZm9ybUludmFsaWRhdGlvblBvaW50SW5qZWN0aW9uKEdyYXBoJik7CisKK30gfSAvLyBuYW1l
c3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQorCisjZW5kaWYgLy8g
REZHSW52YWxpZGF0aW9uUG9pbnRJbmplY3Rpb25QaGFzZV9oCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCShyZXZpc2lvbiAxNTgyMjMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgs
NiBAQAogI2luY2x1ZGUgIkRGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uaCIKICNpbmNsdWRlICJFeGVj
dXRpb25Db3VudGVyLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgotI2luY2x1ZGUgIkp1bXBSZXBs
YWNlbWVudFdhdGNocG9pbnQuaCIKICNpbmNsdWRlIDx3dGYvU2VnbWVudGVkVmVjdG9yLmg+CiAK
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKQEAgLTg4LDEzICs4Nyw2IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAgdW5zaWduZWQgYXBw
ZW5kV2F0Y2hwb2ludChjb25zdCBKdW1wUmVwbGFjZW1lbnRXYXRjaHBvaW50JiB3YXRjaHBvaW50
KQotICAgIHsKLSAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gd2F0Y2hwb2ludHMuc2l6ZSgpOwot
ICAgICAgICB3YXRjaHBvaW50cy5hcHBlbmQod2F0Y2hwb2ludCk7Ci0gICAgICAgIHJldHVybiBy
ZXN1bHQ7Ci0gICAgfQotICAgIAogICAgIHZvaWQgcmVjb25zdHJ1Y3QoCiAgICAgICAgIENvZGVC
bG9jayosIENvZGVPcmlnaW4sIHVuc2lnbmVkIHN0cmVhbUluZGV4LCBPcGVyYW5kczxWYWx1ZVJl
Y292ZXJ5PiYgcmVzdWx0KTsKICAgICAKQEAgLTEyNyw3ICsxMTksNiBAQCBwdWJsaWM6CiAgICAg
VmVjdG9yPERGRzo6T1NSRW50cnlEYXRhPiBvc3JFbnRyeTsKICAgICBTZWdtZW50ZWRWZWN0b3I8
REZHOjpPU1JFeGl0LCA4PiBvc3JFeGl0OwogICAgIFZlY3RvcjxERkc6OlNwZWN1bGF0aW9uUmVj
b3Zlcnk+IHNwZWN1bGF0aW9uUmVjb3Zlcnk7Ci0gICAgU2VnbWVudGVkVmVjdG9yPEp1bXBSZXBs
YWNlbWVudFdhdGNocG9pbnQsIDEsIDA+IHdhdGNocG9pbnRzOwogICAgIERGRzo6VmFyaWFibGVF
dmVudFN0cmVhbSB2YXJpYWJsZUV2ZW50U3RyZWFtOwogICAgIERGRzo6TWluaWZpZWRHcmFwaCBt
aW5pZmllZERGRzsKICNpZiBFTkFCTEUoRlRMX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAxNTgyMjMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjYsMTEgKzY2LDExIEBAIHZvaWQgSklUQ29tcGlsZXI6OmxpbmtPU1JFeGl0cygpCiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2ppdENvZGUtPm9zckV4aXQuc2l6ZSgpOyAr
K2kpIHsKICAgICAgICAgICAgIE9TUkV4aXRDb21waWxhdGlvbkluZm8mIGluZm8gPSBtX2V4aXRD
b21waWxhdGlvbkluZm9baV07CiAgICAgICAgICAgICBWZWN0b3I8TGFiZWw+IGxhYmVsczsKLSAg
ICAgICAgICAgIGlmIChpbmZvLm1fd2F0Y2hwb2ludEluZGV4ID09IHN0ZDo6bnVtZXJpY19saW1p
dHM8dW5zaWduZWQ+OjptYXgoKSkgeworICAgICAgICAgICAgaWYgKCFpbmZvLm1fZmFpbHVyZUp1
bXBzLmVtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwg
aW5mby5tX2ZhaWx1cmVKdW1wcy5qdW1wcygpLnNpemUoKTsgKytqKQogICAgICAgICAgICAgICAg
ICAgICBsYWJlbHMuYXBwZW5kKGluZm8ubV9mYWlsdXJlSnVtcHMuanVtcHMoKVtqXS5sYWJlbCgp
KTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIGxhYmVscy5hcHBlbmQobV9q
aXRDb2RlLT53YXRjaHBvaW50c1tpbmZvLm1fd2F0Y2hwb2ludEluZGV4XS5zb3VyY2VMYWJlbCgp
KTsKKyAgICAgICAgICAgICAgICBsYWJlbHMuYXBwZW5kKGluZm8ubV9yZXBsYWNlbWVudFNvdXJj
ZSk7CiAgICAgICAgICAgICBtX2V4aXRTaXRlTGFiZWxzLmFwcGVuZChsYWJlbHMpOwogICAgICAg
ICB9CiAgICAgfQpAQCAtNzksMTEgKzc5LDEwIEBAIHZvaWQgSklUQ29tcGlsZXI6OmxpbmtPU1JF
eGl0cygpCiAgICAgICAgIE9TUkV4aXQmIGV4aXQgPSBtX2ppdENvZGUtPm9zckV4aXRbaV07CiAg
ICAgICAgIE9TUkV4aXRDb21waWxhdGlvbkluZm8mIGluZm8gPSBtX2V4aXRDb21waWxhdGlvbklu
Zm9baV07CiAgICAgICAgIEp1bXBMaXN0JiBmYWlsdXJlSnVtcHMgPSBpbmZvLm1fZmFpbHVyZUp1
bXBzOwotICAgICAgICBBU1NFUlQoZmFpbHVyZUp1bXBzLmVtcHR5KCkgPT0gKGluZm8ubV93YXRj
aHBvaW50SW5kZXggIT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSk7Ci0g
ICAgICAgIGlmIChpbmZvLm1fd2F0Y2hwb2ludEluZGV4ID09IHN0ZDo6bnVtZXJpY19saW1pdHM8
dW5zaWduZWQ+OjptYXgoKSkKKyAgICAgICAgaWYgKCFmYWlsdXJlSnVtcHMuZW1wdHkoKSkKICAg
ICAgICAgICAgIGZhaWx1cmVKdW1wcy5saW5rKHRoaXMpOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBtX2ppdENvZGUtPndhdGNocG9pbnRzW2luZm8ubV93YXRjaHBvaW50SW5kZXhdLnNldERl
c3RpbmF0aW9uKGxhYmVsKCkpOworICAgICAgICAgICAgaW5mby5tX3JlcGxhY2VtZW50RGVzdGlu
YXRpb24gPSBsYWJlbCgpOwogICAgICAgICBqaXRBc3NlcnRIYXNWYWxpZENhbGxGcmFtZSgpOwog
ICAgICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihpKSwgJnZtKCktPm9zckV4aXRJbmRleCk7CiAg
ICAgICAgIGV4aXQuc2V0UGF0Y2hhYmxlQ29kZU9mZnNldChwYXRjaGFibGVKdW1wKCkpOwpAQCAt
MjU3LDggKzI1NiwxMSBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtC
CiAgICAgICAgIE9TUkV4aXRDb21waWxhdGlvbkluZm8mIGluZm8gPSBtX2V4aXRDb21waWxhdGlv
bkluZm9baV07CiAgICAgICAgIGxpbmtCdWZmZXIubGluayhleGl0LmdldFBhdGNoYWJsZUNvZGVP
ZmZzZXRBc0p1bXAoKSwgdGFyZ2V0KTsKICAgICAgICAgZXhpdC5jb3JyZWN0SnVtcChsaW5rQnVm
ZmVyKTsKLSAgICAgICAgaWYgKGluZm8ubV93YXRjaHBvaW50SW5kZXggIT0gc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQotICAgICAgICAgICAgbV9qaXRDb2RlLT53YXRjaHBv
aW50c1tpbmZvLm1fd2F0Y2hwb2ludEluZGV4XS5jb3JyZWN0TGFiZWxzKGxpbmtCdWZmZXIpOwor
ICAgICAgICBpZiAoaW5mby5tX3JlcGxhY2VtZW50U291cmNlLmlzU2V0KCkpIHsKKyAgICAgICAg
ICAgIG1faml0Q29kZS0+Y29tbW9uLmp1bXBSZXBsYWNlbWVudHMuYXBwZW5kKEp1bXBSZXBsYWNl
bWVudCgKKyAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoaW5mby5tX3JlcGxh
Y2VtZW50U291cmNlKSwKKyAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoaW5m
by5tX3JlcGxhY2VtZW50RGVzdGluYXRpb24pKSk7CisgICAgICAgIH0KICAgICB9CiAgICAgCiAg
ICAgaWYgKG1fZ3JhcGguY29tcGlsYXRpb24oKSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNpb24gMTU4MjIzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYs
MTUgKzExNiw2IEBAIHB1YmxpYzoKICAgICAvLyBBY2Nlc3NvcnMgZm9yIHByb3BlcnRpZXMuCiAg
ICAgR3JhcGgmIGdyYXBoKCkgeyByZXR1cm4gbV9ncmFwaDsgfQogICAgIAotICAgIHZvaWQgYWRk
TGF6aWx5KFdhdGNocG9pbnQqIHdhdGNocG9pbnQsIFdhdGNocG9pbnRTZXQqIHNldCkKLSAgICB7
Ci0gICAgICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMoKS5hZGRMYXppbHkod2F0Y2hwb2ludCwgc2V0
KTsKLSAgICB9Ci0gICAgdm9pZCBhZGRMYXppbHkoV2F0Y2hwb2ludCogd2F0Y2hwb2ludCwgSW5s
aW5lV2F0Y2hwb2ludFNldCYgc2V0KQotICAgIHsKLSAgICAgICAgbV9ncmFwaC53YXRjaHBvaW50
cygpLmFkZExhemlseSh3YXRjaHBvaW50LCBzZXQpOwotICAgIH0KLSAgICAKICAgICAvLyBNZXRo
b2RzIHRvIHNldCBsYWJlbHMgZm9yIHRoZSBkaXNhc3NlbWJsZXIuCiAgICAgdm9pZCBzZXRTdGFy
dE9mQ29kZSgpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKdW1w
UmVwbGFjZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSnVtcFJlcGxhY2VtZW50LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSnVtcFJlcGxhY2VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJERkdKdW1wUmVwbGFjZW1lbnQuaCIKKworI2lm
IEVOQUJMRShERkdfSklUKQorCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKKyNpbmNsdWRl
ICJPcHRpb25zLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKwordm9pZCBK
dW1wUmVwbGFjZW1lbnQ6OmZpcmUoKQoreworICAgIGlmIChPcHRpb25zOjpzaG93RGlzYXNzZW1i
bHkoKSkKKyAgICAgICAgZGF0YUxvZ0YoIkZpcmluZyBqdW1wIHJlcGxhY2VtZW50IHdhdGNocG9p
bnQgZnJvbSAlcCwgdG8gJXAuXG4iLCBtX3NvdXJjZS5kYXRhTG9jYXRpb24oKSwgbV9kZXN0aW5h
dGlvbi5kYXRhTG9jYXRpb24oKSk7CisgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVt
cChtX3NvdXJjZSwgbV9kZXN0aW5hdGlvbik7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpE
RkcKKworI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0p1bXBSZXBsYWNlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSnVtcFJlcGxhY2VtZW50LmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0p1bXBSZXBsYWNlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2lmbmRlZiBERkdKdW1wUmVwbGFjZW1lbnRfaAorI2RlZmluZSBERkdKdW1wUmVw
bGFjZW1lbnRfaAorCisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRlICJDb2RlTG9jYXRp
b24uaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCitjbGFzcyBKdW1wUmVw
bGFjZW1lbnQgeworcHVibGljOgorICAgIEp1bXBSZXBsYWNlbWVudChDb2RlTG9jYXRpb25MYWJl
bCBzb3VyY2UsIENvZGVMb2NhdGlvbkxhYmVsIGRlc3RpbmF0aW9uKQorICAgICAgICA6IG1fc291
cmNlKHNvdXJjZSkKKyAgICAgICAgLCBtX2Rlc3RpbmF0aW9uKGRlc3RpbmF0aW9uKQorICAgIHsK
KyAgICB9CisgICAgCisgICAgdm9pZCBmaXJlKCk7CisKK3ByaXZhdGU6CisgICAgQ29kZUxvY2F0
aW9uTGFiZWwgbV9zb3VyY2U7CisgICAgQ29kZUxvY2F0aW9uTGFiZWwgbV9kZXN0aW5hdGlvbjsK
K307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8vIEVOQUJMRShERkdf
SklUKQorCisjZW5kaWYgLy8gREZHSnVtcFJlcGxhY2VtZW50X2gKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMTU4MjIzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3
ICs4OSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oR2V0
TG9jYWxVbmxpbmtlZCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgXAogICAgIC8qIE1hcmtlciBmb3Ig
YW4gYXJndW1lbnQgYmVpbmcgc2V0IGF0IHRoZSBwcm9sb2d1ZSBvZiBhIGZ1bmN0aW9uLiAqL1wK
LSAgICBtYWNybyhTZXRBcmd1bWVudCwgMCB8IE5vZGVEb2VzTm90RXhpdCkgXAorICAgIG1hY3Jv
KFNldEFyZ3VtZW50LCBOb2RlRG9lc05vdEV4aXQpIFwKKyAgICBcCisgICAgLyogTWFya2VyIG9m
IGxvY2F0aW9uIGluIHRoZSBJUiB3aGVyZSB3ZSBtYXkgcG9zc2libHkgcGVyZm9ybSBqdW1wIHJl
cGxhY2VtZW50IHRvICovXAorICAgIC8qIGludmFsaWRhdGUgdGhpcyBjb2RlIGJsb2NrLiAqL1wK
KyAgICBtYWNybyhJbnZhbGlkYXRpb25Qb2ludCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIFwK
ICAgICAvKiBOb2RlcyBmb3IgYml0d2lzZSBvcGVyYXRpb25zLiAqL1wKICAgICBtYWNybyhCaXRB
bmQsIE5vZGVSZXN1bHRJbnQzMiB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5o
CShyZXZpc2lvbiAxNTgyMjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4
aXRDb21waWxhdGlvbkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTMgKzM3LDkgQEAKIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogc3RydWN0IE9TUkV4aXRDb21waWxhdGlv
bkluZm8gewotICAgIE9TUkV4aXRDb21waWxhdGlvbkluZm8oKQotICAgICAgICA6IG1fd2F0Y2hw
b2ludEluZGV4KHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICB7Ci0g
ICAgfQotICAgIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBtX2ZhaWx1cmVKdW1wczsK
LSAgICB1bnNpZ25lZCBtX3dhdGNocG9pbnRJbmRleDsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6TGFi
ZWwgbV9yZXBsYWNlbWVudFNvdXJjZTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbV9yZXBs
YWNlbWVudERlc3RpbmF0aW9uOwogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lv
biAxNTgyMjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDk3LDcgKzEwOTcsNyBAQCBleHRlcm4gIkMiIHZvaWQgSklU
X09QRVJBVElPTiB0cmlnZ2VyUmVvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjb2Rl
QmxvY2stPnJlb3B0aW1pemUoKTsKKyAgICBvcHRpbWl6ZWRDb2RlQmxvY2stPmpldHRpc29uKENv
dW50UmVvcHRpbWl6YXRpb24pOwogfQogCiAjaWYgRU5BQkxFKEZUTF9KSVQpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHJldmlzaW9uIDE1ODIyMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYg
KzQxLDcgQEAKICNpbmNsdWRlICJERkdGYWlsZWRGaW5hbGl6ZXIuaCIKICNpbmNsdWRlICJERkdG
bHVzaExpdmVuZXNzQW5hbHlzaXNQaGFzZS5oIgogI2luY2x1ZGUgIkRGR0ZpeHVwUGhhc2UuaCIK
KyNpbmNsdWRlICJERkdJbnZhbGlkYXRpb25Qb2ludEluamVjdGlvblBoYXNlLmgiCiAjaW5jbHVk
ZSAiREZHSklUQ29tcGlsZXIuaCIKICNpbmNsdWRlICJERkdMSUNNUGhhc2UuaCIKICNpbmNsdWRl
ICJERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuaCIKQEAgLTU2LDYgKzU3LDcgQEAKICNpbmNsdWRl
ICJERkdVbmlmaWNhdGlvblBoYXNlLmgiCiAjaW5jbHVkZSAiREZHVmFsaWRhdGUuaCIKICNpbmNs
dWRlICJERkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2UuaCIKKyNpbmNsdWRlICJERkdX
YXRjaHBvaW50Q29sbGVjdGlvblBoYXNlLmgiCiAjaW5jbHVkZSAiT3BlcmFuZHNJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpA
QCAtMTg3LDYgKzE4OSw3IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxlSW5U
aHIKICAgICBwZXJmb3JtQmFja3dhcmRzUHJvcGFnYXRpb24oZGZnKTsKICAgICBwZXJmb3JtUHJl
ZGljdGlvblByb3BhZ2F0aW9uKGRmZyk7CiAgICAgcGVyZm9ybUZpeHVwKGRmZyk7CisgICAgcGVy
Zm9ybUludmFsaWRhdGlvblBvaW50SW5qZWN0aW9uKGRmZyk7CiAgICAgcGVyZm9ybVR5cGVDaGVj
a0hvaXN0aW5nKGRmZyk7CiAgICAgCiAgICAgdW5zaWduZWQgY291bnQgPSAxOwpAQCAtMjI4LDcg
KzIzMSwyNCBAQCBQbGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUluVGhyCiAgICAg
c3dpdGNoIChtb2RlKSB7CiAgICAgY2FzZSBERkdNb2RlOiB7CiAgICAgICAgIHBlcmZvcm1UaWVy
VXBDaGVja0luamVjdGlvbihkZmcpOwotICAgICAgICBicmVhazsKKworICAgICAgICBwZXJmb3Jt
Q1BTUmV0aHJlYWRpbmcoZGZnKTsKKyAgICAgICAgcGVyZm9ybURDRShkZmcpOworICAgICAgICBw
ZXJmb3JtU3RhY2tMYXlvdXQoZGZnKTsKKyAgICAgICAgcGVyZm9ybVZpcnR1YWxSZWdpc3RlckFs
bG9jYXRpb24oZGZnKTsKKyAgICAgICAgcGVyZm9ybVdhdGNocG9pbnRDb2xsZWN0aW9uKGRmZyk7
CisgICAgICAgIGR1bXBBbmRWZXJpZnlHcmFwaChkZmcsICJHcmFwaCBhZnRlciBvcHRpbWl6YXRp
b246Iik7CisgICAgICAgIAorICAgICAgICBKSVRDb21waWxlciBkYXRhRmxvd0pJVChkZmcpOwor
ICAgICAgICBpZiAoY29kZUJsb2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSkgeworICAg
ICAgICAgICAgZGF0YUZsb3dKSVQuY29tcGlsZUZ1bmN0aW9uKCk7CisgICAgICAgICAgICBkYXRh
Rmxvd0pJVC5saW5rRnVuY3Rpb24oKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGRh
dGFGbG93SklULmNvbXBpbGUoKTsKKyAgICAgICAgICAgIGRhdGFGbG93SklULmxpbmsoKTsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIERGR1BhdGg7CiAgICAgfQogICAgIAog
ICAgIGNhc2UgRlRMTW9kZToKQEAgLTI1Myw2ICsyNzMsNyBAQCBQbGFuOjpDb21waWxhdGlvblBh
dGggUGxhbjo6Y29tcGlsZUluVGhyCiAgICAgICAgIHBlcmZvcm1MaXZlbmVzc0FuYWx5c2lzKGRm
Zyk7CiAgICAgICAgIHBlcmZvcm1GbHVzaExpdmVuZXNzQW5hbHlzaXMoZGZnKTsKICAgICAgICAg
cGVyZm9ybU9TUkF2YWlsYWJpbGl0eUFuYWx5c2lzKGRmZyk7CisgICAgICAgIHBlcmZvcm1XYXRj
aHBvaW50Q29sbGVjdGlvbihkZmcpOwogICAgICAgICAKICAgICAgICAgZHVtcEFuZFZlcmlmeUdy
YXBoKGRmZywgIkdyYXBoIGp1c3QgYmVmb3JlIEZUTCBsb3dlcmluZzoiKTsKICAgICAgICAgCkBA
IC0yODAsMzEgKzMwMSwxNCBAQCBQbGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUlu
VGhyCiAgICAgICAgIHJldHVybiBGVExQYXRoOwogI2Vsc2UKICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiBGYWlsUGF0
aDsKICNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKICAgICB9CiAgICAgICAgIAogICAgIGRlZmF1
bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGJyZWFr
OwotICAgIH0KLSAgICAKLSAgICBwZXJmb3JtQ1BTUmV0aHJlYWRpbmcoZGZnKTsKLSAgICBwZXJm
b3JtRENFKGRmZyk7Ci0gICAgcGVyZm9ybVN0YWNrTGF5b3V0KGRmZyk7Ci0gICAgcGVyZm9ybVZp
cnR1YWxSZWdpc3RlckFsbG9jYXRpb24oZGZnKTsKLSAgICBkdW1wQW5kVmVyaWZ5R3JhcGgoZGZn
LCAiR3JhcGggYWZ0ZXIgb3B0aW1pemF0aW9uOiIpOwotCi0gICAgSklUQ29tcGlsZXIgZGF0YUZs
b3dKSVQoZGZnKTsKLSAgICBpZiAoY29kZUJsb2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29k
ZSkgewotICAgICAgICBkYXRhRmxvd0pJVC5jb21waWxlRnVuY3Rpb24oKTsKLSAgICAgICAgZGF0
YUZsb3dKSVQubGlua0Z1bmN0aW9uKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZGF0YUZsb3dK
SVQuY29tcGlsZSgpOwotICAgICAgICBkYXRhRmxvd0pJVC5saW5rKCk7CisgICAgICAgIHJldHVy
biBGYWlsUGF0aDsKICAgICB9Ci0gICAgCi0gICAgcmV0dXJuIERGR1BhdGg7CiB9CiAKIGJvb2wg
UGxhbjo6aXNTdGlsbFZhbGlkKCkKQEAgLTMxNSw3ICszMTksNyBAQCBib29sIFBsYW46OmlzU3Rp
bGxWYWxpZCgpCiAKIHZvaWQgUGxhbjo6cmVhbGx5QWRkKENvbW1vbkRhdGEqIGNvbW1vbkRhdGEp
CiB7Ci0gICAgd2F0Y2hwb2ludHMucmVhbGx5QWRkKCk7CisgICAgd2F0Y2hwb2ludHMucmVhbGx5
QWRkKGNvZGVCbG9jay5nZXQoKSwgKmNvbW1vbkRhdGEpOwogICAgIGlkZW50aWZpZXJzLnJlYWxs
eUFkZCh2bSwgY29tbW9uRGF0YSk7CiAgICAgd2Vha1JlZmVyZW5jZXMucmVhbGx5QWRkKHZtLCBj
b21tb25EYXRhKTsKICAgICB0cmFuc2l0aW9ucy5yZWFsbHlBZGQodm0sIGNvbW1vbkRhdGEpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE1ODIyMykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MTIsNyArNTEyLDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBab21i
aWVIaW50OgogICAgICAgICBjYXNlIENoZWNrVGllclVwSW5Mb29wOgogICAgICAgICBjYXNlIENo
ZWNrVGllclVwQXRSZXR1cm46Ci0gICAgICAgIGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjog
eworICAgICAgICBjYXNlIENoZWNrVGllclVwQW5kT1NSRW50ZXI6CisgICAgICAgIGNhc2UgSW52
YWxpZGF0aW9uUG9pbnQ6IHsKICAgICAgICAgICAgIC8vIFRoaXMgbm9kZSBzaG91bGQgbmV2ZXIg
YmUgdmlzaWJsZSBhdCB0aGlzIHN0YWdlIG9mIGNvbXBpbGF0aW9uLiBJdCBpcwogICAgICAgICAg
ICAgLy8gaW5zZXJ0ZWQgYnkgZml4dXAoKSwgd2hpY2ggZm9sbG93cyB0aGlzIHBoYXNlLgogICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAxNTgyMjMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMjM5LDYgKzIzOSw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRl
VHlwZSYgc3QKICAgICBjYXNlIExvb3BIaW50OgogICAgIGNhc2UgSW50NTJUb0RvdWJsZToKICAg
ICBjYXNlIEludDUyVG9WYWx1ZToKKyAgICBjYXNlIEludmFsaWRhdGlvblBvaW50OgogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCiAgICAgY2FzZSBHZXRCeVZhbDoKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cAkocmV2aXNpb24gMTU4MjIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY2LDcgKzI2Niw2IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGUKICAgICAgICAgaWYgKCFpc0tu
b3duQ2VsbChvcGVyYW5kLm5vZGUoKSkpCiAgICAgICAgICAgICBub3RDZWxsID0gbV9qaXQuYnJh
bmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBhcmdUYWdHUFIsIFRydXN0ZWRJbW0zMihK
U1ZhbHVlOjpDZWxsVGFnKSk7CiAKLSAgICAgICAgc3BlY3VsYXRpb25XYXRjaHBvaW50Rm9yTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCgpOwogICAgICAgICBtX2ppdC5tb3ZlKGludmVydCA/IFRydXN0
ZWRJbW0zMigxKSA6IFRydXN0ZWRJbW0zMigwKSwgcmVzdWx0UGF5bG9hZEdQUik7CiAgICAgICAg
IG5vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBtX2ppdC5qdW1wKCk7CiAgICAgfSBlbHNlIHsK
QEAgLTMzMyw3ICszMzIsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBl
ZXBoCiAgICAgICAgIGlmICghaXNLbm93bkNlbGwob3BlcmFuZC5ub2RlKCkpKQogICAgICAgICAg
ICAgbm90Q2VsbCA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgYXJn
VGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwogCi0gICAgICAgIHNwZWN1
bGF0aW9uV2F0Y2hwb2ludEZvck1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoKTsKICAgICAgICAganVt
cChpbnZlcnQgPyB0YWtlbiA6IG5vdFRha2VuLCBGb3JjZUp1bXApOwogICAgIH0gZWxzZSB7CiAg
ICAgICAgIEdQUlRlbXBvcmFyeSBsb2NhbEdsb2JhbE9iamVjdCh0aGlzKTsKQEAgLTExNjAsNyAr
MTE1OCw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RFcXVhbGkKICAgICBH
UFJSZWcgb3AyR1BSID0gb3AyLmdwcigpOwogICAgIAogICAgIGlmIChtYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxpZCgpKSB7Ci0gICAgICAgIHNwZWN1bGF0aW9uV2F0
Y2hwb2ludEZvck1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoKTsKICAgICAgICAgREZHX1RZUEVfQ0hF
Q0soCiAgICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2Rl
LT5jaGlsZDEoKSwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAogICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCkBAIC0xMjM4LDcgKzEyMzUsNiBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlT2JqZWN0VG9PYmplCiAgICAgfQogCiAgICAgaWYgKG1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50VmFsaWQpIHsKLSAgICAgICAgc3BlY3VsYXRpb25XYXRj
aHBvaW50Rm9yTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCgpOwogICAgICAgICBERkdfVFlQRV9DSEVD
SygKICAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRD
aGlsZCwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAogICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpFcXVhbCwgCkBAIC0xMjY2LDcgKzEyNjIsNiBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlT2JqZWN0VG9PYmplCiAgICAgCiAgICAgLy8gV2Uga25vdyB0aGF0IHdpdGhp
biB0aGlzIGJyYW5jaCwgcmlnaHRDaGlsZCBtdXN0IGJlIGEgY2VsbC4KICAgICBpZiAobWFzcXVl
cmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCkgewotICAgICAgICBzcGVjdWxhdGlvbldh
dGNocG9pbnRGb3JNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKCk7CiAgICAgICAgIERGR19UWVBFX0NI
RUNLKAogICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AyVGFnR1BSLCBvcDJQYXlsb2FkR1BSKSwg
cmlnaHRDaGlsZCwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LAogICAgICAgICAgICAgbV9qaXQu
YnJhbmNoUHRyKApAQCAtMTM0Nyw3ICsxMzQyLDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVBlZXBIb2xlT2JqZQogICAgIH0KIAogICAgIGlmIChtYXNxdWVyYWRlc0FzVW5kZWZpbmVk
V2F0Y2hwb2ludFZhbGlkKSB7Ci0gICAgICAgIHNwZWN1bGF0aW9uV2F0Y2hwb2ludEZvck1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQoKTsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgICAg
ICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsIFNwZWNPYmpl
Y3QsIG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1
YWwsIApAQCAtMTM3NCw3ICsxMzY4LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBl
ZXBIb2xlT2JqZQogICAgIAogICAgIC8vIFdlIGtub3cgdGhhdCB3aXRoaW4gdGhpcyBicmFuY2gs
IHJpZ2h0Q2hpbGQgbXVzdCBiZSBhIGNlbGwuCiAgICAgaWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWRXYXRjaHBvaW50VmFsaWQpIHsKLSAgICAgICAgc3BlY3VsYXRpb25XYXRjaHBvaW50Rm9yTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCgpOwogICAgICAgICBERkdfVFlQRV9DSEVDSygKICAgICAgICAg
ICAgIEpTVmFsdWVSZWdzKG9wMlRhZ0dQUiwgb3AyUGF5bG9hZEdQUiksIHJpZ2h0Q2hpbGQsICh+
U3BlY0NlbGwpIHwgU3BlY09iamVjdCwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKQEAg
LTE0OTMsOCArMTQ4Niw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RPck90
aGUKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2gzMihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHZhbHVlVGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1
ZTo6Q2VsbFRhZykpOwogICAgIGlmIChtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludFZh
bGlkKSB7Ci0gICAgICAgIHNwZWN1bGF0aW9uV2F0Y2hwb2ludEZvck1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQoKTsKLQogICAgICAgICBERkdfVFlQRV9DSEVDSygKICAgICAgICAgICAgIEpTVmFsdWVS
ZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxvYWRHUFIpLCBub2RlVXNlLCAoflNwZWNDZWxsKSB8
IFNwZWNPYmplY3QsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCkBAIC0xNjI1LDcgKzE2
MTYsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0T3JPdGhlckJyCiAgICAgCiAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwgdmFsdWVUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxs
VGFnKSk7CiAgICAgaWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNTdGlsbFZh
bGlkKCkpIHsKLSAgICAgICAgc3BlY3VsYXRpb25XYXRjaHBvaW50Rm9yTWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCgpOwogICAgICAgICBERkdfVFlQRV9DSEVDSygKICAgICAgICAgICAgIEpTVmFsdWVS
ZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxvYWRHUFIpLCBub2RlVXNlLCAoflNwZWNDZWxsKSB8
IFNwZWNPYmplY3QsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCkBAIC0yNDMzLDE3ICsy
NDIzLDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZTogewogICAgICAgICAgICAgaWYgKG5vZGUt
PmFycmF5TW9kZSgpLmlzSW5Cb3VuZHMoKSkgewotICAgICAgICAgICAgICAgIGlmIChub2RlLT5h
cnJheU1vZGUoKS5pc1NhbmVDaGFpbigpKSB7Ci0gICAgICAgICAgICAgICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+Y29kZU9y
aWdpbik7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QtPmFycmF5UHJv
dG90eXBlQ2hhaW5Jc1NhbmUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIG1faml0LmFkZExhemls
eSgKLSAgICAgICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uV2F0Y2hwb2ludCgpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5hcnJheVByb3RvdHlwZSgpLT5zdHJ1
Y3R1cmUoKS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAg
IG1faml0LmFkZExhemlseSgKLSAgICAgICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uV2F0
Y2hwb2ludCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5vYmplY3RQ
cm90b3R5cGUoKS0+c3RydWN0dXJlKCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0KCkpOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBTcGVjdWxh
dGVTdHJpY3RJbnQzMk9wZXJhbmQgcHJvcGVydHkodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAg
ICAgICAgICAgICAgIFN0b3JhZ2VPcGVyYW5kIHN0b3JhZ2UodGhpcywgbm9kZS0+Y2hpbGQzKCkp
OwogICAgICAgICAgICAgCkBAIC0zMjEwLDEwICszMTg5LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgTmV3QXJyYXk6IHsKICAgICAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPmNvZGVPcmlnaW4pOwogICAgICAgICBpZiAoIWdsb2JhbE9iamVjdC0+aXNIYXZpbmdB
QmFkVGltZSgpICYmICFoYXNBcnJheVN0b3JhZ2Uobm9kZS0+aW5kZXhpbmdUeXBlKCkpKSB7Ci0g
ICAgICAgICAgICBtX2ppdC5hZGRMYXppbHkoCi0gICAgICAgICAgICAgICAgc3BlY3VsYXRpb25X
YXRjaHBvaW50KCksCi0gICAgICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5oYXZpbmdBQmFkVGlt
ZVdhdGNocG9pbnQoKSk7Ci0gICAgICAgICAgICAKICAgICAgICAgICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmlu
Z0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpOwogICAgICAgICAgICAgQVNTRVJUKHN0
cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkgPT0gbm9kZS0+aW5kZXhpbmdUeXBlKCkpOwogICAgICAg
ICAgICAgQVNTRVJUKApAQCAtMzM4MiwxMCArMzM1Nyw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIE5ld0FycmF5V2l0aFNpemU6IHsKICAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPmNvZGVPcmlnaW4pOwogICAgICAgICBpZiAoIWdsb2JhbE9iamVjdC0+aXNI
YXZpbmdBQmFkVGltZSgpICYmICFoYXNBcnJheVN0b3JhZ2Uobm9kZS0+aW5kZXhpbmdUeXBlKCkp
KSB7Ci0gICAgICAgICAgICBtX2ppdC5hZGRMYXppbHkoCi0gICAgICAgICAgICAgICAgc3BlY3Vs
YXRpb25XYXRjaHBvaW50KCksCi0gICAgICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5oYXZpbmdB
QmFkVGltZVdhdGNocG9pbnQoKSk7Ci0gICAgICAgICAgICAKICAgICAgICAgICAgIFNwZWN1bGF0
ZVN0cmljdEludDMyT3BlcmFuZCBzaXplKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAg
ICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgICAgICAgICBHUFJUZW1wb3Jhcnkg
c3RvcmFnZSh0aGlzKTsKQEAgLTM0NjAsMTAgKzM0MzEsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5jb2RlT3JpZ2luKTsKICAg
ICAgICAgSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZSA9IG5vZGUtPmluZGV4aW5nVHlwZSgpOwog
ICAgICAgICBpZiAoIWdsb2JhbE9iamVjdC0+aXNIYXZpbmdBQmFkVGltZSgpICYmICFoYXNBcnJh
eVN0b3JhZ2UoaW5kZXhpbmdUeXBlKSkgewotICAgICAgICAgICAgbV9qaXQuYWRkTGF6aWx5KAot
ICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uV2F0Y2hwb2ludCgpLAotICAgICAgICAgICAgICAg
IGdsb2JhbE9iamVjdC0+aGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50KCkpOwotICAgICAgICAgICAg
CiAgICAgICAgICAgICB1bnNpZ25lZCBudW1FbGVtZW50cyA9IG5vZGUtPm51bUNvbnN0YW50cygp
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwpA
QCAtMzYxNyw5ICszNTg0LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgIH0KIAogICAgIGNhc2UgQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50OiB7Ci0g
ICAgICAgIG1faml0LmFkZExhemlseSgKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uV2F0Y2hwb2lu
dCgpLAotICAgICAgICAgICAganNDYXN0PEpTRnVuY3Rpb24qPihub2RlLT5mdW5jdGlvbigpKS0+
YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KCkpOwogICAgICAgICBub1Jlc3VsdChub2Rl
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMzkwMSwxMCArMzg2NSw2IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgLy8gcXVpdGUgYSBoaW50
IGFscmVhZHkuCiAgICAgICAgIAogICAgICAgICBtX2ppdC5hZGRXZWFrUmVmZXJlbmNlKG5vZGUt
PnN0cnVjdHVyZSgpKTsKLSAgICAgICAgbV9qaXQuYWRkTGF6aWx5KAotICAgICAgICAgICAgc3Bl
Y3VsYXRpb25XYXRjaHBvaW50KAotICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkMSgpLT5vcCgp
ID09IFdlYWtKU0NvbnN0YW50ID8gQmFkV2Vha0NvbnN0YW50Q2FjaGVXYXRjaHBvaW50IDogQmFk
Q2FjaGVXYXRjaHBvaW50KSwKLSAgICAgICAgICAgIG5vZGUtPnN0cnVjdHVyZSgpLT50cmFuc2l0
aW9uV2F0Y2hwb2ludFNldCgpKTsKICAgICAgICAgCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAg
ICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpAQCAt
NDA4NywxMCArNDA0Nyw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICB9CiAKICAgICBjYXNlIEdsb2JhbFZhcldhdGNocG9pbnQ6IHsKLSAgICAgICAgV2F0
Y2hwb2ludFNldCogc2V0ID0gbV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPmNvZGVPcmlnaW4p
LT5zeW1ib2xUYWJsZSgpLT5nZXQoCi0gICAgICAgICAgICBpZGVudGlmaWVyVUlEKG5vZGUtPmlk
ZW50aWZpZXJOdW1iZXJGb3JDaGVjaygpKSkud2F0Y2hwb2ludFNldCgpOwotICAgICAgICBtX2pp
dC5hZGRMYXppbHkoc3BlY3VsYXRpb25XYXRjaHBvaW50KCksIHNldCk7Ci0gICAgICAgIAogI2lm
IERGR19FTkFCTEUoSklUX0FTU0VSVCkKICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhp
cyk7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKQEAgLTQxMTIs
OSArNDA2OCw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICB9CiAKICAgICBjYXNlIFZhckluamVjdGlvbldhdGNocG9pbnQ6IHsKLSAgICAgICAgV2F0Y2hw
b2ludFNldCogc2V0ID0gbV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPmNvZGVPcmlnaW4pLT52
YXJJbmplY3Rpb25XYXRjaHBvaW50KCk7Ci0gICAgICAgIG1faml0LmFkZExhemlseShzcGVjdWxh
dGlvbldhdGNocG9pbnQoKSwgc2V0KTsKLSAgICAgICAgCiAgICAgICAgIG5vUmVzdWx0KG5vZGUp
OwogICAgICAgICBicmVhazsKICAgICB9CkBAIC00MTUwLDcgKzQxMDMsNiBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGlzQ2VsbC5saW5rKCZtX2pp
dCk7CiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQ7
CiAgICAgICAgIGlmIChtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxp
ZCgpKSB7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbldhdGNocG9pbnRGb3JNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkKCk7CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVz
dWx0LmdwcigpKTsKICAgICAgICAgICAgIG5vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBtX2pp
dC5qdW1wKCk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC00NzExLDYgKzQ2NjMsMTAgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9
CiAKKyAgICBjYXNlIEludmFsaWRhdGlvblBvaW50OgorICAgICAgICBlbWl0SW52YWxpZGF0aW9u
UG9pbnQobm9kZSk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBDaGVja1dhdGNoZG9nVGlt
ZXI6CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICBXYXRjaGRvZ1RpbWVy
RmlyZWQsIEpTVmFsdWVSZWdzKCksIDAsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE1ODIyMykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI2NCw4ICsyNjQsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxh
dGl2ZU5vblBlCiAgICAgICAgIGlmICghaXNLbm93bkNlbGwob3BlcmFuZC5ub2RlKCkpKQogICAg
ICAgICAgICAgbm90Q2VsbCA9IG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6Tm9u
WmVybywgYXJnR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwogCi0gICAgICAgIHNwZWN1
bGF0aW9uV2F0Y2hwb2ludEZvck1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoKTsKLQogICAgICAgICBt
X2ppdC5tb3ZlKGludmVydCA/IFRydXN0ZWRJbW0zMigxKSA6IFRydXN0ZWRJbW0zMigwKSwgcmVz
dWx0R1BSKTsKICAgICAgICAgbm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IG1faml0Lmp1bXAo
KTsKICAgICB9IGVsc2UgewpAQCAtMzMxLDggKzMyOSw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
Om5vblNwZWN1bGF0aXZlUGVlcGgKICAgICAgICAgaWYgKCFpc0tub3duQ2VsbChvcGVyYW5kLm5v
ZGUoKSkpCiAgICAgICAgICAgICBub3RDZWxsID0gbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNz
ZW1ibGVyOjpOb25aZXJvLCBhcmdHUFIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CiAKLSAg
ICAgICAgc3BlY3VsYXRpb25XYXRjaHBvaW50Rm9yTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCgpOwot
ICAgICAgICAKICAgICAgICAganVtcChpbnZlcnQgPyB0YWtlbiA6IG5vdFRha2VuLCBGb3JjZUp1
bXApOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBsb2NhbEdsb2JhbE9iamVj
dCh0aGlzKTsKQEAgLTE1MTksNyArMTUxNSw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVPYmplY3RFcXVhbGkKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAg
CiAgICAgaWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNTdGlsbFZhbGlkKCkp
IHsKLSAgICAgICAgc3BlY3VsYXRpb25XYXRjaHBvaW50Rm9yTWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCgpOwogICAgICAgICBERkdfVFlQRV9DSEVDSygKICAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6
OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjT2JqZWN0LCBtX2ppdC5i
cmFuY2hQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKQEAgLTE1
OTMsNyArMTU4OCw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RUb09iamUK
ICAgICB9CiAKICAgICBpZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCkg
ewotICAgICAgICBzcGVjdWxhdGlvbldhdGNocG9pbnRGb3JNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
KCk7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAogICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6
dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQ
dHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKQEAgLTE2MjAsNyAr
MTYxNCw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RUb09iamUKICAgICAK
ICAgICAvLyBXZSBrbm93IHRoYXQgd2l0aGluIHRoaXMgYnJhbmNoLCByaWdodENoaWxkIG11c3Qg
YmUgYSBjZWxsLiAKICAgICBpZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRWYWxp
ZCkgewotICAgICAgICBzcGVjdWxhdGlvbldhdGNocG9pbnRGb3JNYXNxdWVyYWRlc0FzVW5kZWZp
bmVkKCk7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAogICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mo
b3AyR1BSKSwgcmlnaHRDaGlsZCwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFu
Y2hQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKQEAgLTE2OTgs
NyArMTY5MSw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamUKICAg
ICB9CiAKICAgICBpZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCkgewot
ICAgICAgICBzcGVjdWxhdGlvbldhdGNocG9pbnRGb3JNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKCk7
CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAogICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5i
b3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIo
CiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKQEAgLTE3MjUsNyArMTcx
Nyw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamUKICAgICAKICAg
ICAvLyBXZSBrbm93IHRoYXQgd2l0aGluIHRoaXMgYnJhbmNoLCByaWdodENoaWxkIG11c3QgYmUg
YSBjZWxsLiAKICAgICBpZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCkg
ewotICAgICAgICBzcGVjdWxhdGlvbldhdGNocG9pbnRGb3JNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
KCk7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAogICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3Ay
R1BSKSwgcmlnaHRDaGlsZCwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQ
dHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKQEAgLTE4NzIsNyAr
MTg2Myw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RPck90aGUKIAogICAg
IE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9B
c3NlbWJsZXI6Ok5vblplcm8sIHZhbHVlR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwog
ICAgIGlmIChtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludFZhbGlkKSB7Ci0gICAgICAg
IHNwZWN1bGF0aW9uV2F0Y2hwb2ludEZvck1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoKTsKICAgICAg
ICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5v
ZGVVc2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAogICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwKQEAgLTIwMTYsOCArMjAwNiw2IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmplY3RPck90aGVyQnIKICAgICAKICAgICBNYWNyb0Fz
c2VtYmxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVy
OjpOb25aZXJvLCB2YWx1ZUdQUiwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKICAgICBpZiAo
bWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQoKSkgewotICAgICAg
ICBzcGVjdWxhdGlvbldhdGNocG9pbnRGb3JNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKCk7Ci0KICAg
ICAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZUdQUiks
IG5vZGVVc2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAogICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCkBAIC0yNzM4LDE3ICsyNzI2LDYg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgICAgIGNh
c2UgQXJyYXk6OkRvdWJsZTogewogICAgICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmlz
SW5Cb3VuZHMoKSkgewotICAgICAgICAgICAgICAgIGlmIChub2RlLT5hcnJheU1vZGUoKS5pc1Nh
bmVDaGFpbigpKSB7Ci0gICAgICAgICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+Y29kZU9yaWdpbik7Ci0gICAgICAg
ICAgICAgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QtPmFycmF5UHJvdG90eXBlQ2hhaW5Jc1Nh
bmUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIG1faml0LmFkZExhemlseSgKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHNwZWN1bGF0aW9uV2F0Y2hwb2ludCgpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgZ2xvYmFsT2JqZWN0LT5hcnJheVByb3RvdHlwZSgpLT5zdHJ1Y3R1cmUoKS0+dHJhbnNp
dGlvbldhdGNocG9pbnRTZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIG1faml0LmFkZExhemls
eSgKLSAgICAgICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uV2F0Y2hwb2ludCgpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKS0+c3Ry
dWN0dXJlKCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0KCkpOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9w
ZXJhbmQgcHJvcGVydHkodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIFN0
b3JhZ2VPcGVyYW5kIHN0b3JhZ2UodGhpcywgbm9kZS0+Y2hpbGQzKCkpOwogICAgICAgICAgICAg
CkBAIC0zNTI0LDEwICszNTAxLDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgIGNhc2UgTmV3QXJyYXk6IHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPmNvZGVPcmln
aW4pOwogICAgICAgICBpZiAoIWdsb2JhbE9iamVjdC0+aXNIYXZpbmdBQmFkVGltZSgpICYmICFo
YXNBcnJheVN0b3JhZ2Uobm9kZS0+aW5kZXhpbmdUeXBlKCkpKSB7Ci0gICAgICAgICAgICBtX2pp
dC5hZGRMYXppbHkoCi0gICAgICAgICAgICAgICAgc3BlY3VsYXRpb25XYXRjaHBvaW50KCksCi0g
ICAgICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5oYXZpbmdBQmFkVGltZVdhdGNocG9pbnQoKSk7
Ci0gICAgICAgICAgICAKICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFs
T2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9k
ZS0+aW5kZXhpbmdUeXBlKCkpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3RydWN0dXJl
LT5pbmRleGluZ1R5cGUoKSA9PSBub2RlLT5pbmRleGluZ1R5cGUoKSk7CiAgICAgICAgICAgICBB
U1NFUlQoCkBAIC0zNjk5LDEwICszNjcyLDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgIGNhc2UgTmV3QXJyYXlXaXRoU2l6ZTogewogICAgICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+Y29kZU9yaWdpbik7CiAgICAgICAgIGlmICghZ2xvYmFsT2JqZWN0LT5pc0hhdmluZ0FC
YWRUaW1lKCkgJiYgIWhhc0FycmF5U3RvcmFnZShub2RlLT5pbmRleGluZ1R5cGUoKSkpIHsKLSAg
ICAgICAgICAgIG1faml0LmFkZExhemlseSgKLSAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbldh
dGNocG9pbnQoKSwKLSAgICAgICAgICAgICAgICBnbG9iYWxPYmplY3QtPmhhdmluZ0FCYWRUaW1l
V2F0Y2hwb2ludCgpKTsKLSAgICAgICAgICAgIAogICAgICAgICAgICAgU3BlY3VsYXRlU3RyaWN0
SW50MzJPcGVyYW5kIHNpemUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgR1BS
VGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBzdG9yYWdl
KHRoaXMpOwpAQCAtMzc3NCwxMCArMzc0Myw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1f
aml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPmNvZGVPcmlnaW4pOwogICAgICAgICBJ
bmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlID0gbm9kZS0+aW5kZXhpbmdUeXBlKCk7CiAgICAgICAg
IGlmICghZ2xvYmFsT2JqZWN0LT5pc0hhdmluZ0FCYWRUaW1lKCkgJiYgIWhhc0FycmF5U3RvcmFn
ZShpbmRleGluZ1R5cGUpKSB7Ci0gICAgICAgICAgICBtX2ppdC5hZGRMYXppbHkoCi0gICAgICAg
ICAgICAgICAgc3BlY3VsYXRpb25XYXRjaHBvaW50KCksCi0gICAgICAgICAgICAgICAgZ2xvYmFs
T2JqZWN0LT5oYXZpbmdBQmFkVGltZVdhdGNocG9pbnQoKSk7Ci0gICAgICAgICAgICAKICAgICAg
ICAgICAgIHVuc2lnbmVkIG51bUVsZW1lbnRzID0gbm9kZS0+bnVtQ29uc3RhbnRzKCk7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CkBAIC0zOTIw
LDkgKzM4ODUsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgfQogICAgICAgICAKICAgICBjYXNlIEFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludDogewot
ICAgICAgICBtX2ppdC5hZGRMYXppbHkoCi0gICAgICAgICAgICBzcGVjdWxhdGlvbldhdGNocG9p
bnQoKSwKLSAgICAgICAgICAgIGpzQ2FzdDxKU0Z1bmN0aW9uKj4obm9kZS0+ZnVuY3Rpb24oKSkt
PmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgpKTsKICAgICAgICAgbm9SZXN1bHQobm9k
ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTQxOTUsMTAgKzQxNTcsNiBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIC8vIHF1aXRlIGEgaGlu
dCBhbHJlYWR5LgogICAgICAgICAKICAgICAgICAgbV9qaXQuYWRkV2Vha1JlZmVyZW5jZShub2Rl
LT5zdHJ1Y3R1cmUoKSk7Ci0gICAgICAgIG1faml0LmFkZExhemlseSgKLSAgICAgICAgICAgIHNw
ZWN1bGF0aW9uV2F0Y2hwb2ludCgKLSAgICAgICAgICAgICAgICBub2RlLT5jaGlsZDEoKS0+b3Ao
KSA9PSBXZWFrSlNDb25zdGFudCA/IEJhZFdlYWtDb25zdGFudENhY2hlV2F0Y2hwb2ludCA6IEJh
ZENhY2hlV2F0Y2hwb2ludCksCi0gICAgICAgICAgICBub2RlLT5zdHJ1Y3R1cmUoKS0+dHJhbnNp
dGlvbldhdGNocG9pbnRTZXQoKSk7CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC00MzY4LDEw
ICs0MzI2LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
IH0KIAogICAgIGNhc2UgR2xvYmFsVmFyV2F0Y2hwb2ludDogewotICAgICAgICBXYXRjaHBvaW50
U2V0KiBzZXQgPSBtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+Y29kZU9yaWdpbiktPnN5bWJv
bFRhYmxlKCktPmdldCgKLSAgICAgICAgICAgIGlkZW50aWZpZXJVSUQobm9kZS0+aWRlbnRpZmll
ck51bWJlckZvckNoZWNrKCkpKS53YXRjaHBvaW50U2V0KCk7Ci0gICAgICAgIG1faml0LmFkZExh
emlseShzcGVjdWxhdGlvbldhdGNocG9pbnQoKSwgc2V0KTsKLSAgICAgICAgCiAjaWYgREZHX0VO
QUJMRShKSVRfQVNTRVJUKQogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAg
ICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwpAQCAtNDM4OCw5ICs0MzQy
LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIH0KIAog
ICAgIGNhc2UgVmFySW5qZWN0aW9uV2F0Y2hwb2ludDogewotICAgICAgICBXYXRjaHBvaW50U2V0
KiBzZXQgPSBtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+Y29kZU9yaWdpbiktPnZhckluamVj
dGlvbldhdGNocG9pbnQoKTsKLSAgICAgICAgbV9qaXQuYWRkTGF6aWx5KHNwZWN1bGF0aW9uV2F0
Y2hwb2ludCgpLCBzZXQpOwotICAgICAgICAKICAgICAgICAgbm9SZXN1bHQobm9kZSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KQEAgLTQ0MjYsNyArNDM3Nyw2IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgaXNDZWxsLmxpbmsoJm1faml0KTsKICAg
ICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZDsKICAgICAg
ICAgaWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNTdGlsbFZhbGlkKCkpIHsK
LSAgICAgICAgICAgIHNwZWN1bGF0aW9uV2F0Y2hwb2ludEZvck1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQoKTsKICAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCByZXN1bHQuZ3By
KCkpOwogICAgICAgICAgICAgbm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IG1faml0Lmp1bXAo
KTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTQ5NTgsNiArNDkwOCwxMCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZl
RXhlY3V0aW9uKEluYWRlcXVhdGVDb3ZlcmFnZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoKKyAg
ICAgICAgZW1pdEludmFsaWRhdGlvblBvaW50KG5vZGUpOworICAgICAgICBicmVhazsKIAogICAg
IGNhc2UgQ2hlY2tXYXRjaGRvZ1RpbWVyOgogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJ
KHJldmlzaW9uIDE1ODIyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDAsMjYgKzIwMCwyMCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpzcGVjdWxhdGlvbkNoZWNrKEV4CiAgICAgc3BlY3VsYXRpb25DaGVjayhr
aW5kLCBqc1ZhbHVlU291cmNlLCBlZGdlLm5vZGUoKSwganVtcFRvRmFpbCwgcmVjb3ZlcnkpOwog
fQogCi1KdW1wUmVwbGFjZW1lbnRXYXRjaHBvaW50KiBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRp
b25XYXRjaHBvaW50KEV4aXRLaW5kIGtpbmQsIEpTVmFsdWVTb3VyY2UganNWYWx1ZVNvdXJjZSwg
Tm9kZSogbm9kZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRJbnZhbGlkYXRpb25Qb2ludChO
b2RlKiBub2RlKQogewogICAgIGlmICghbV9jb21waWxlT2theSkKLSAgICAgICAgcmV0dXJuIDA7
Ci0gICAgQVNTRVJUKG1faXNDaGVja2luZ0FyZ3VtZW50VHlwZXMgfHwgbV9jYW5FeGl0KTsKKyAg
ICAgICAgcmV0dXJuOworICAgIEFTU0VSVChtX2NhbkV4aXQpOworICAgIEFTU0VSVChtX3NwZWN1
bGF0aW9uRGlyZWN0aW9uID09IEJhY2t3YXJkU3BlY3VsYXRpb24pOwogICAgIE9TUkV4aXRDb21w
aWxhdGlvbkluZm8mIGluZm8gPSBtX2ppdC5hcHBlbmRFeGl0SW5mbyhKSVRDb21waWxlcjo6SnVt
cExpc3QoKSk7CiAgICAgbV9qaXQuaml0Q29kZSgpLT5hcHBlbmRPU1JFeGl0KE9TUkV4aXQoCi0g
ICAgICAgIGtpbmQsIGpzVmFsdWVTb3VyY2UsCisgICAgICAgIFVuY291bnRhYmxlSW52YWxpZGF0
aW9uLCBKU1ZhbHVlU291cmNlKCksCiAgICAgICAgIG1faml0LmdyYXBoKCkubWV0aG9kT2ZHZXR0
aW5nQVZhbHVlUHJvZmlsZUZvcihub2RlKSwKICAgICAgICAgdGhpcywgbV9zdHJlYW0tPnNpemUo
KSkpOwotICAgIGluZm8ubV93YXRjaHBvaW50SW5kZXggPSBtX2ppdC5qaXRDb2RlKCktPmFwcGVu
ZFdhdGNocG9pbnQoCi0gICAgICAgIEp1bXBSZXBsYWNlbWVudFdhdGNocG9pbnQobV9qaXQud2F0
Y2hwb2ludExhYmVsKCkpKTsKLSAgICBpZiAobV9zcGVjdWxhdGlvbkRpcmVjdGlvbiA9PSBGb3J3
YXJkU3BlY3VsYXRpb24pCi0gICAgICAgIGNvbnZlcnRMYXN0T1NSRXhpdFRvRm9yd2FyZCgpOwot
ICAgIHJldHVybiAmbV9qaXQuaml0Q29kZSgpLT53YXRjaHBvaW50c1tpbmZvLm1fd2F0Y2hwb2lu
dEluZGV4XTsKLX0KLQotSnVtcFJlcGxhY2VtZW50V2F0Y2hwb2ludCogU3BlY3VsYXRpdmVKSVQ6
OnNwZWN1bGF0aW9uV2F0Y2hwb2ludChFeGl0S2luZCBraW5kKQotewotICAgIHJldHVybiBzcGVj
dWxhdGlvbldhdGNocG9pbnQoa2luZCwgSlNWYWx1ZVNvdXJjZSgpLCAwKTsKKyAgICBpbmZvLm1f
cmVwbGFjZW1lbnRTb3VyY2UgPSBtX2ppdC53YXRjaHBvaW50TGFiZWwoKTsKKyAgICBBU1NFUlQo
aW5mby5tX3JlcGxhY2VtZW50U291cmNlLmlzU2V0KCkpOworICAgIG5vUmVzdWx0KG5vZGUpOwog
fQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb252ZXJ0TGFzdE9TUkV4aXRUb0ZvcndhcmQoY29u
c3QgVmFsdWVSZWNvdmVyeSYgdmFsdWVSZWNvdmVyeSkKQEAgLTEzNTMsOCArMTM0Nyw2IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamUKICAgICBHUFJSZWcgb3AyR1BS
ID0gb3AyLmdwcigpOwogICAgIAogICAgIGlmIChtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hw
b2ludElzU3RpbGxWYWxpZCgpKSB7Ci0gICAgICAgIHNwZWN1bGF0aW9uV2F0Y2hwb2ludEZvck1h
c3F1ZXJhZGVzQXNVbmRlZmluZWQoKTsKLQogICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5v
ZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiB+U3BlY09iamVjdCkgewogICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjaygKICAgICAgICAgICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJv
eGVkQ2VsbChvcDFHUFIpLCBub2RlLT5jaGlsZDEoKSwgCkBAIC0yMDA0LDE4ICsxOTk2LDYgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25TdAogICAgIH0KICNlbmRpZgog
Ci0gICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmlzT3V0T2ZCb3VuZHMoKSkgewotICAgICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
PmNvZGVPcmlnaW4pOwotICAgICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5zdHJpbmdQcm90b3R5cGVD
aGFpbklzU2FuZSgpKSB7Ci0gICAgICAgICAgICBtX2ppdC5hZGRMYXppbHkoCi0gICAgICAgICAg
ICAgICAgc3BlY3VsYXRpb25XYXRjaHBvaW50KCksCi0gICAgICAgICAgICAgICAgZ2xvYmFsT2Jq
ZWN0LT5zdHJpbmdQcm90b3R5cGUoKS0+c3RydWN0dXJlKCktPnRyYW5zaXRpb25XYXRjaHBvaW50
U2V0KCkpOwotICAgICAgICAgICAgbV9qaXQuYWRkTGF6aWx5KAotICAgICAgICAgICAgICAgIHNw
ZWN1bGF0aW9uV2F0Y2hwb2ludCgpLAotICAgICAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+b2Jq
ZWN0UHJvdG90eXBlKCktPnN0cnVjdHVyZSgpLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldCgpKTsK
LSAgICAgICAgfQotICAgIH0KLQogICAgIEFTU0VSVChBcnJheU1vZGUoQXJyYXk6OlN0cmluZyku
YWxyZWFkeUNoZWNrZWQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbV9zdGF0ZS5mb3JOb2RlKG5vZGUt
PmNoaWxkMSgpKSkpOwogCiAgICAgLy8gdW5zaWduZWQgY29tcGFyaXNvbiBzbyB3ZSBjYW4gZmls
dGVyIG91dCBuZWdhdGl2ZSBpbmRpY2VzIGFuZCBpbmRpY2VzIHRoYXQgYXJlIHRvbyBsYXJnZQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAko
cmV2aXNpb24gMTU4MjIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yODQsMjAgKzI4NCwxMCBAQCBwdWJsaWM6CiAg
ICAgewogICAgICAgICByZXR1cm4gbV9qaXQuZ3JhcGgoKS5tYXNxdWVyYWRlc0FzVW5kZWZpbmVk
V2F0Y2hwb2ludElzU3RpbGxWYWxpZChjb2RlT3JpZ2luKTsKICAgICB9Ci0gICAgdm9pZCBzcGVj
dWxhdGlvbldhdGNocG9pbnRGb3JNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKGNvbnN0IENvZGVPcmln
aW4mIGNvZGVPcmlnaW4pCi0gICAgewotICAgICAgICBtX2ppdC5hZGRMYXppbHkoCi0gICAgICAg
ICAgICBzcGVjdWxhdGlvbldhdGNocG9pbnQoKSwKLSAgICAgICAgICAgIG1faml0LmdyYXBoKCku
Z2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pLT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hw
b2ludCgpKTsKLSAgICB9CiAgICAgYm9vbCBtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2lu
dElzU3RpbGxWYWxpZCgpCiAgICAgewogICAgICAgICByZXR1cm4gbWFzcXVlcmFkZXNBc1VuZGVm
aW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQobV9jdXJyZW50Tm9kZS0+Y29kZU9yaWdpbik7CiAg
ICAgfQotICAgIHZvaWQgc3BlY3VsYXRpb25XYXRjaHBvaW50Rm9yTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCgpCi0gICAgewotICAgICAgICBzcGVjdWxhdGlvbldhdGNocG9pbnRGb3JNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkKG1fY3VycmVudE5vZGUtPmNvZGVPcmlnaW4pOwotICAgIH0KIAogICAgIHZv
aWQgd3JpdGVCYXJyaWVyKEdQUlJlZyBvd25lckdQUiwgR1BSUmVnIHZhbHVlR1BSLCBFZGdlIHZh
bHVlVXNlLCBXcml0ZUJhcnJpZXJVc2VLaW5kLCBHUFJSZWcgc2NyYXRjaEdQUjEgPSBJbnZhbGlk
R1BSUmVnLCBHUFJSZWcgc2NyYXRjaEdQUjIgPSBJbnZhbGlkR1BSUmVnKTsKICAgICB2b2lkIHdy
aXRlQmFycmllcihHUFJSZWcgb3duZXJHUFIsIEpTQ2VsbCogdmFsdWUsIFdyaXRlQmFycmllclVz
ZUtpbmQsIEdQUlJlZyBzY3JhdGNoR1BSMSA9IEludmFsaWRHUFJSZWcsIEdQUlJlZyBzY3JhdGNo
R1BSMiA9IEludmFsaWRHUFJSZWcpOwpAQCAtMjEzMSwxNiArMjEyMSw4IEBAIHB1YmxpYzoKICAg
ICAvLyBBZGQgYSBzcGVjdWxhdGlvbiBjaGVjayB3aXRoIGFkZGl0aW9uYWwgcmVjb3ZlcnkuCiAg
ICAgdm9pZCBiYWNrd2FyZFNwZWN1bGF0aW9uQ2hlY2soRXhpdEtpbmQsIEpTVmFsdWVTb3VyY2Us
IE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBqdW1wVG9GYWlsLCBjb25zdCBTcGVjdWxhdGlv
blJlY292ZXJ5Jik7CiAgICAgdm9pZCBiYWNrd2FyZFNwZWN1bGF0aW9uQ2hlY2soRXhpdEtpbmQs
IEpTVmFsdWVTb3VyY2UsIEVkZ2UsIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGp1bXBUb0ZhaWwsIGNv
bnN0IFNwZWN1bGF0aW9uUmVjb3ZlcnkmKTsKLSAgICAvLyBVc2UgdGhpcyBsaWtlIHlvdSB3b3Vs
ZCB1c2Ugc3BlY3VsYXRpb25DaGVjaygpLCBleGNlcHQgdGhhdCB5b3UgZG9uJ3QgcGFzcyBpdCBh
IGp1bXAKLSAgICAvLyAoYmVjYXVzZSB5b3UgZG9uJ3QgaGF2ZSB0byBleGVjdXRlIGEgYnJhbmNo
OyB0aGF0J3Mga2luZCBvZiB0aGUgd2hvbGUgcG9pbnQpLCBhbmQgeW91Ci0gICAgLy8gbXVzdCBy
ZWdpc3RlciB0aGUgcmV0dXJuZWQgV2F0Y2hwb2ludCB3aXRoIHNvbWV0aGluZyByZWxldmFudC4g
SW4gZ2VuZXJhbCwgdGhpcyBzaG91bGQKLSAgICAvLyBiZSB1c2VkIHdpdGggZXh0cmVtZSBjYXJl
LiBVc2Ugc3BlY3VsYXRpb25DaGVjaygpIHVubGVzcyB5b3UndmUgZ290IGFuIGFtYXppbmcgcmVh
c29uCi0gICAgLy8gbm90IHRvLgotICAgIEp1bXBSZXBsYWNlbWVudFdhdGNocG9pbnQqIHNwZWN1
bGF0aW9uV2F0Y2hwb2ludChFeGl0S2luZCwgSlNWYWx1ZVNvdXJjZSwgTm9kZSopOwotICAgIC8v
IFRoZSBkZWZhdWx0IGZvciBzcGVjdWxhdGlvbiB3YXRjaHBvaW50cyBpcyB0aGF0IHRoZXkncmUg
dW5jb3VudGVkLCBiZWNhdXNlIHRoZQotICAgIC8vIGFjdCBvZiBmaXJpbmcgYSB3YXRjaHBvaW50
IGludmFsaWRhdGVzIGl0LiBTbywgZnV0dXJlIHJlY29tcGlsYXRpb25zIHdpbGwgbm90Ci0gICAg
Ly8gYXR0ZW1wdCB0byBzZXQgdGhpcyB3YXRjaHBvaW50IGFnYWluLgotICAgIEp1bXBSZXBsYWNl
bWVudFdhdGNocG9pbnQqIHNwZWN1bGF0aW9uV2F0Y2hwb2ludChFeGl0S2luZCA9IFVuY291bnRh
YmxlV2F0Y2hwb2ludCk7CisgICAgCisgICAgdm9pZCBlbWl0SW52YWxpZGF0aW9uUG9pbnQoTm9k
ZSopOwogICAgIAogICAgIC8vIEl0IGlzIGdlbmVyYWxseSBhIGdvb2QgaWRlYSB0byBub3QgdXNl
IHRoaXMgZGlyZWN0bHkuCiAgICAgdm9pZCBjb252ZXJ0TGFzdE9TUkV4aXRUb0ZvcndhcmQoY29u
c3QgVmFsdWVSZWNvdmVyeSYgPSBWYWx1ZVJlY292ZXJ5KCkpOwpAQCAtMzAyMiwxOCArMzAwNCwx
MyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmdPYmplCiB7CiAgICAgU3Ry
dWN0dXJlKiBzdHJpbmdPYmplY3RTdHJ1Y3R1cmUgPQogICAgICAgICBtX2ppdC5nbG9iYWxPYmpl
Y3RGb3IobV9jdXJyZW50Tm9kZS0+Y29kZU9yaWdpbiktPnN0cmluZ09iamVjdFN0cnVjdHVyZSgp
OwotICAgIFN0cnVjdHVyZSogc3RyaW5nUHJvdG90eXBlU3RydWN0dXJlID0gc3RyaW5nT2JqZWN0
U3RydWN0dXJlLT5zdG9yZWRQcm90b3R5cGUoKS5hc0NlbGwoKS0+c3RydWN0dXJlKCk7Ci0gICAg
QVNTRVJUKG1faml0LmdyYXBoKCkud2F0Y2hwb2ludHMoKS5pc1ZhbGlkT3JNaXhlZChzdHJpbmdQ
cm90b3R5cGVTdHJ1Y3R1cmUtPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0KCkpKTsKICAgICAKLSAg
ICBpZiAoIW1fc3RhdGUuZm9yTm9kZShlZGdlKS5tX2N1cnJlbnRLbm93blN0cnVjdHVyZS5pc1N1
YnNldE9mKFN0cnVjdHVyZVNldChtX2ppdC5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+
Y29kZU9yaWdpbiktPnN0cmluZ09iamVjdFN0cnVjdHVyZSgpKSkpIHsKKyAgICBpZiAoIW1fc3Rh
dGUuZm9yTm9kZShlZGdlKS5tX2N1cnJlbnRLbm93blN0cnVjdHVyZS5pc1N1YnNldE9mKFN0cnVj
dHVyZVNldChzdHJpbmdPYmplY3RTdHJ1Y3R1cmUpKSkgewogICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKAogICAgICAgICAgICAgTm90U3RyaW5nT2JqZWN0LCBKU1ZhbHVlUmVncygpLCAwLAogICAg
ICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAogICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpO
b3RFcXVhbCwgc3RydWN0dXJlTG9jYXRpb24sIFRydXN0ZWRJbW1QdHIoc3RyaW5nT2JqZWN0U3Ry
dWN0dXJlKSkpOwogICAgIH0KLSAgICBtX2ppdC5hZGRMYXppbHkoCi0gICAgICAgIHNwZWN1bGF0
aW9uV2F0Y2hwb2ludChOb3RTdHJpbmdPYmplY3QpLAotICAgICAgICBzdHJpbmdQcm90b3R5cGVT
dHJ1Y3R1cmUtPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0KCkpOwogfQogCiAjZGVmaW5lIERGR19U
WVBFX0NIRUNLKHNvdXJjZSwgZWRnZSwgdHlwZXNQYXNzZWRUaHJvdWdoLCBqdW1wVG9GYWlsKSBk
byB7IFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV2F0Y2hwb2ludENvbGxl
Y3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdXYXRjaHBvaW50Q29sbGVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHV2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRGR1dhdGNo
cG9pbnRDb2xsZWN0aW9uUGhhc2UuaCIKKworI2lmIEVOQUJMRShERkdfSklUKQorCisjaW5jbHVk
ZSAiQXJyYXlQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJERkdDbG9iYmVyaXplLmgiCisjaW5jbHVk
ZSAiREZHR3JhcGguaCIKKyNpbmNsdWRlICJERkdQaGFzZS5oIgorI2luY2x1ZGUgIk9wZXJhdGlv
bnMuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCitjbGFzcyBXYXRjaHBv
aW50Q29sbGVjdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKKyAgICBzdGF0aWMgY29uc3QgYm9v
bCB2ZXJib3NlID0gZmFsc2U7CisgICAgCitwdWJsaWM6CisgICAgV2F0Y2hwb2ludENvbGxlY3Rp
b25QaGFzZShHcmFwaCYgZ3JhcGgpCisgICAgICAgIDogUGhhc2UoZ3JhcGgsICJ3YXRjaHBvaW50
IGNvbGxlY3Rpb24iKQorICAgIHsKKyAgICB9CisgICAgCisgICAgYm9vbCBydW4oKQorICAgIHsK
KyAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51bUJsb2Nrcygp
OyBibG9ja0luZGV4LS07KSB7CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3Jh
cGguYmxvY2soYmxvY2tJbmRleCk7CisgICAgICAgICAgICBpZiAoIWJsb2NrKQorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IG5vZGVJbmRleCA9IGJsb2NrLT5zaXplKCk7IG5vZGVJbmRleC0tOykgeworICAgICAgICAgICAg
ICAgIG1fbm9kZSA9IGJsb2NrLT5hdChub2RlSW5kZXgpOworICAgICAgICAgICAgICAgIGhhbmRs
ZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBoYW5kbGUoKQorICAgIHsKKyAgICAg
ICAgREZHX05PREVfRE9fVE9fQ0hJTERSRU4obV9ncmFwaCwgbV9ub2RlLCBoYW5kbGVFZGdlKTsK
KyAgICAgICAgCisgICAgICAgIHN3aXRjaCAobV9ub2RlLT5vcCgpKSB7CisgICAgICAgIGNhc2Ug
Q29tcGFyZUVxQ29uc3RhbnQ6CisgICAgICAgIGNhc2UgSXNVbmRlZmluZWQ6CisgICAgICAgICAg
ICBoYW5kbGVNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIAorICAgICAgICBjYXNlIENvbXBhcmVFcToKKyAgICAgICAgICAgIGlmIChtX25v
ZGUtPmlzQmluYXJ5VXNlS2luZChPYmplY3RVc2UpCisgICAgICAgICAgICAgICAgfHwgKG1fbm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IE9iamVjdFVzZSAmJiBtX25vZGUtPmNoaWxkMigpLnVz
ZUtpbmQoKSA9PSBPYmplY3RPck90aGVyVXNlKQorICAgICAgICAgICAgICAgIHx8IChtX25vZGUt
PmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBPYmplY3RPck90aGVyVXNlICYmIG1fbm9kZS0+Y2hpbGQy
KCkudXNlS2luZCgpID09IE9iamVjdFVzZSkpCisgICAgICAgICAgICAgICAgaGFuZGxlTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAg
ICAgICAgY2FzZSBMb2dpY2FsTm90OgorICAgICAgICBjYXNlIEJyYW5jaDoKKyAgICAgICAgICAg
IGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBPYmplY3RPck90aGVyVXNlKQorICAg
ICAgICAgICAgICAgIGhhbmRsZU1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgR2V0QnlWYWw6CisgICAgICAgICAg
ICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS50eXBlKCkgPT0gQXJyYXk6OkRvdWJsZQorICAgICAg
ICAgICAgICAgICYmIG1fbm9kZS0+YXJyYXlNb2RlKCkuaXNTYW5lQ2hhaW4oKSkgeworICAgICAg
ICAgICAgICAgIGFkZExhemlseShnbG9iYWxPYmplY3QoKS0+YXJyYXlQcm90b3R5cGUoKS0+c3Ry
dWN0dXJlKCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0KCkpOworICAgICAgICAgICAgICAgIGFk
ZExhemlseShnbG9iYWxPYmplY3QoKS0+b2JqZWN0UHJvdG90eXBlKCktPnN0cnVjdHVyZSgpLT50
cmFuc2l0aW9uV2F0Y2hwb2ludFNldCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgaWYgKG1fbm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpID09IEFycmF5OjpTdHJp
bmcpCisgICAgICAgICAgICAgICAgaGFuZGxlU3RyaW5nR2V0QnlWYWwoKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgU3RyaW5nQ2hhckF0OgorICAgICAg
ICAgICAgaGFuZGxlU3RyaW5nR2V0QnlWYWwoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgCisgICAgICAgIGNhc2UgTmV3QXJyYXk6CisgICAgICAgIGNhc2UgTmV3QXJyYXlXaXRo
U2l6ZToKKyAgICAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoKKyAgICAgICAgICAgIGlmICghZ2xv
YmFsT2JqZWN0KCktPmlzSGF2aW5nQUJhZFRpbWUoKSAmJiAhaGFzQXJyYXlTdG9yYWdlKG1fbm9k
ZS0+aW5kZXhpbmdUeXBlKCkpKQorICAgICAgICAgICAgICAgIGFkZExhemlseShnbG9iYWxPYmpl
Y3QoKS0+aGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50KCkpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAKKyAgICAgICAgY2FzZSBBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQ6Cisg
ICAgICAgICAgICBhZGRMYXppbHkoanNDYXN0PEpTRnVuY3Rpb24qPihtX25vZGUtPmZ1bmN0aW9u
KCkpLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQoKSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBv
aW50OgorICAgICAgICAgICAgbV9ncmFwaC53YXRjaHBvaW50cygpLmFkZExhemlseSgKKyAgICAg
ICAgICAgICAgICBtX25vZGUtPmNvZGVPcmlnaW4sCisgICAgICAgICAgICAgICAgbV9ub2RlLT5j
aGlsZDEoKS0+b3AoKSA9PSBXZWFrSlNDb25zdGFudCA/IEJhZFdlYWtDb25zdGFudENhY2hlV2F0
Y2hwb2ludCA6IEJhZENhY2hlV2F0Y2hwb2ludCwKKyAgICAgICAgICAgICAgICBtX25vZGUtPnN0
cnVjdHVyZSgpLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldCgpKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgR2xvYmFsVmFyV2F0Y2hwb2ludDoKKyAgICAg
ICAgICAgIGFkZExhemlseSgKKyAgICAgICAgICAgICAgICBnbG9iYWxPYmplY3QoKS0+c3ltYm9s
VGFibGUoKS0+Z2V0KAorICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmlkZW50aWZpZXJzKClb
bV9ub2RlLT5pZGVudGlmaWVyTnVtYmVyRm9yQ2hlY2soKV0pLndhdGNocG9pbnRTZXQoKSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIFZhckluamVjdGlv
bldhdGNocG9pbnQ6CisgICAgICAgICAgICBhZGRMYXppbHkoZ2xvYmFsT2JqZWN0KCktPnZhcklu
amVjdGlvbldhdGNocG9pbnQoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgCisgICAgdm9pZCBoYW5kbGVFZGdlKE5vZGUqLCBFZGdlIGVkZ2UpCisgICAgeworICAgICAg
ICBzd2l0Y2ggKGVkZ2UudXNlS2luZCgpKSB7CisgICAgICAgIGNhc2UgU3RyaW5nT2JqZWN0VXNl
OgorICAgICAgICBjYXNlIFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlOiB7CisgICAgICAgICAgICBT
dHJ1Y3R1cmUqIHN0cmluZ09iamVjdFN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdCgpLT5zdHJpbmdP
YmplY3RTdHJ1Y3R1cmUoKTsKKyAgICAgICAgICAgIFN0cnVjdHVyZSogc3RyaW5nUHJvdG90eXBl
U3RydWN0dXJlID0gc3RyaW5nT2JqZWN0U3RydWN0dXJlLT5zdG9yZWRQcm90b3R5cGUoKS5hc0Nl
bGwoKS0+c3RydWN0dXJlKCk7CisgICAgICAgICAgICBBU1NFUlQobV9ncmFwaC53YXRjaHBvaW50
cygpLmlzVmFsaWRPck1peGVkKHN0cmluZ1Byb3RvdHlwZVN0cnVjdHVyZS0+dHJhbnNpdGlvbldh
dGNocG9pbnRTZXQoKSkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBtX2dyYXBoLndhdGNo
cG9pbnRzKCkuYWRkTGF6aWx5KAorICAgICAgICAgICAgICAgIG1fbm9kZS0+Y29kZU9yaWdpbiwg
Tm90U3RyaW5nT2JqZWN0LAorICAgICAgICAgICAgICAgIHN0cmluZ1Byb3RvdHlwZVN0cnVjdHVy
ZS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXQoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgICAgICAgICAgCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB2b2lkIGhhbmRsZU1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQoKQorICAgIHsKKyAgICAgICAgaWYgKG1fZ3JhcGgubWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQobV9ub2RlLT5jb2RlT3JpZ2luKSkKKyAgICAgICAgICAg
IGFkZExhemlseShnbG9iYWxPYmplY3QoKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9p
bnQoKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgaGFuZGxlU3RyaW5nR2V0QnlWYWwoKQorICAg
IHsKKyAgICAgICAgaWYgKCFtX25vZGUtPmFycmF5TW9kZSgpLmlzT3V0T2ZCb3VuZHMoKSkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QoKS0+c3RyaW5nUHJv
dG90eXBlQ2hhaW5Jc1NhbmUoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgYWRkTGF6
aWx5KGdsb2JhbE9iamVjdCgpLT5zdHJpbmdQcm90b3R5cGUoKS0+c3RydWN0dXJlKCktPnRyYW5z
aXRpb25XYXRjaHBvaW50U2V0KCkpOworICAgICAgICBhZGRMYXppbHkoZ2xvYmFsT2JqZWN0KCkt
Pm9iamVjdFByb3RvdHlwZSgpLT5zdHJ1Y3R1cmUoKS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXQo
KSk7CisgICAgfQorCisgICAgdm9pZCBhZGRMYXppbHkoV2F0Y2hwb2ludFNldCogc2V0KQorICAg
IHsKKyAgICAgICAgbV9ncmFwaC53YXRjaHBvaW50cygpLmFkZExhemlseShzZXQpOworICAgIH0K
KyAgICB2b2lkIGFkZExhemlseShJbmxpbmVXYXRjaHBvaW50U2V0JiBzZXQpCisgICAgeworICAg
ICAgICBtX2dyYXBoLndhdGNocG9pbnRzKCkuYWRkTGF6aWx5KHNldCk7CisgICAgfQorICAgIAor
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+Y29kZU9yaWdpbik7CisgICAgfQorICAg
IAorICAgIE5vZGUqIG1fbm9kZTsKK307CisKK2Jvb2wgcGVyZm9ybVdhdGNocG9pbnRDb2xsZWN0
aW9uKEdyYXBoJiBncmFwaCkKK3sKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigi
REZHIFdhdGNocG9pbnQgQ29sbGVjdGlvbiBQaGFzZSIpOworICAgIHJldHVybiBydW5QaGFzZTxX
YXRjaHBvaW50Q29sbGVjdGlvblBoYXNlPihncmFwaCk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpERkcKKworI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQorCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhh
c2UuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV2F0Y2hw
b2ludENvbGxlY3Rpb25QaGFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBERkdX
YXRjaHBvaW50Q29sbGVjdGlvblBoYXNlX2gKKyNkZWZpbmUgREZHV2F0Y2hwb2ludENvbGxlY3Rp
b25QaGFzZV9oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIEVOQUJMRShERkdf
SklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisKK2NsYXNzIEdyYXBoOwor
CisvLyBDb2xsZWN0cyBhbGwgZGVzaXJlZCB3YXRjaHBvaW50cyBpbnRvIHRoZSBHcmFwaDo6d2F0
Y2hwb2ludHMoKSBkYXRhIHN0cnVjdHVyZS4KKworYm9vbCBwZXJmb3JtV2F0Y2hwb2ludENvbGxl
Y3Rpb24oR3JhcGgmKTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYgLy8g
RU5BQkxFKERGR19KSVQpCisKKyNlbmRpZiAvLyBERkdXYXRjaHBvaW50Q29sbGVjdGlvblBoYXNl
X2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcAkocmV2aXNpb24gMTU4MjIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
YXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw2ICs5NSw3IEBAIGlubGluZSBD
YXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNlIEdldENsb3N1cmVWYXI6
CiAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOgogICAgIGNhc2UgSW50NTJUb1ZhbHVlOgorICAgIGNh
c2UgSW52YWxpZGF0aW9uUG9pbnQ6CiAgICAgICAgIC8vIFRoZXNlIGFyZSBPSy4KICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBHZXRCeUlkOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvTExWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHJldmlzaW9uIDE1ODIyMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NDcsNiArNDQ3LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBGb3JjZU9TUkV4aXQ6
CiAgICAgICAgICAgICBjb21waWxlRm9yY2VPU1JFeGl0KCk7CiAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoKKyAgICAgICAgICAgIGNvbXBpbGVJbnZh
bGlkYXRpb25Qb2ludCgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVmFsdWVU
b0ludDMyOgogICAgICAgICAgICAgY29tcGlsZVZhbHVlVG9JbnQzMigpOwogICAgICAgICAgICAg
YnJlYWs7CkBAIC0xMTM5LDEwICsxMTQyLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVT
dHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludCgpCiAgICAgewogICAgICAgICBhZGRXZWFrUmVm
ZXJlbmNlKG1fbm9kZS0+c3RydWN0dXJlKCkpOwotICAgICAgICAKLSAgICAgICAgLy8gRklYTUU6
IEltcGxlbWVudCBzdHJ1Y3R1cmUgdHJhbnNpdGlvbiB3YXRjaHBvaW50cy4KLSAgICAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMzY0NwotICAgICAgICAK
ICAgICAgICAgc3BlY3VsYXRlQ2VsbChtX25vZGUtPmNoaWxkMSgpKTsKICAgICB9CiAgICAgCkBA
IC0xMzI1LDExICsxMzI0LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICBjYXNl
IEFycmF5OjpEb3VibGU6IHsKICAgICAgICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgpLmlz
SW5Cb3VuZHMoKSkgewotICAgICAgICAgICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgpLmlz
U2FuZUNoYWluKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBz
dHJ1Y3R1cmUgdHJhbnNpdGlvbiB3YXRjaHBvaW50cy4KLSAgICAgICAgICAgICAgICAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMzY0NwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHNwZWN1bGF0ZSgKICAgICAg
ICAgICAgICAgICAgICAgT3V0T2ZCb3VuZHMsIG5vVmFsdWUoKSwgMCwKICAgICAgICAgICAgICAg
ICAgICAgbV9vdXQuYWJvdmVPckVxdWFsKApAQCAtMTY5NSw4ICsxNjg5LDggQEAgcHJpdmF0ZToK
ICAgICAKICAgICB2b2lkIGNvbXBpbGVHbG9iYWxWYXJXYXRjaHBvaW50KCkKICAgICB7Ci0gICAg
ICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgd2F0Y2hwb2ludHMuCi0gICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM2NDcKKyAgICAgICAgLy8gRklYTUU6
IEluIGRlYnVnIG1vZGUgd2UgY291bGQgZW1pdCBzb21lIGFzc2VydGlvbiBjb2RlIGhlcmUuCisg
ICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjM0NzEK
ICAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlR2V0TXlTY29wZSgpCkBAIC0xNzQ1LDcgKzE3
MzksNiBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZUNvbXBhcmVFcUNvbnN0YW50KCkKICAg
ICB7CiAgICAgICAgIEFTU0VSVChtX2dyYXBoLnZhbHVlT2ZKU0NvbnN0YW50KG1fbm9kZS0+Y2hp
bGQyKCkubm9kZSgpKS5pc051bGwoKSk7Ci0gICAgICAgIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRX
YXRjaHBvaW50SWZJc1N0aWxsVmFsaWQoKTsKICAgICAgICAgc2V0Qm9vbGVhbigKICAgICAgICAg
ICAgIGVxdWFsTnVsbE9yVW5kZWZpbmVkKAogICAgICAgICAgICAgICAgIG1fbm9kZS0+Y2hpbGQx
KCksIEFsbENlbGxzQXJlRmFsc2UsIEVxdWFsTnVsbE9yVW5kZWZpbmVkKSk7CkBAIC0xNzc0LDcg
KzE3NjcsNiBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAobV9u
b2RlLT5pc0JpbmFyeVVzZUtpbmQoT2JqZWN0VXNlKSkgewotICAgICAgICAgICAgbWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJZklzU3RpbGxWYWxpZCgpOwogICAgICAgICAgICAgc2V0
Qm9vbGVhbigKICAgICAgICAgICAgICAgICBtX291dC5lcXVhbCgKICAgICAgICAgICAgICAgICAg
ICAgbG93Tm9uTnVsbE9iamVjdChtX25vZGUtPmNoaWxkMSgpKSwKQEAgLTE3OTAsNyArMTc4Miw3
IEBAIHByaXZhdGU6CiAgICAgICAgIEpTVmFsdWUgY29uc3RhbnQgPSBtX2dyYXBoLnZhbHVlT2ZK
U0NvbnN0YW50KG1fbm9kZS0+Y2hpbGQyKCkubm9kZSgpKTsKIAogICAgICAgICBpZiAoY29uc3Rh
bnQuaXNVbmRlZmluZWRPck51bGwoKQotICAgICAgICAgICAgJiYgIW1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWRXYXRjaHBvaW50SWZJc1N0aWxsVmFsaWQoKSkgeworICAgICAgICAgICAgJiYgIW1hc3F1
ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNTdGlsbFZhbGlkKCkpIHsKICAgICAgICAgICAg
IGlmIChjb25zdGFudC5pc051bGwoKSkgewogICAgICAgICAgICAgICAgIHNldEJvb2xlYW4oZXF1
YWxOdWxsT3JVbmRlZmluZWQobV9ub2RlLT5jaGlsZDEoKSwgQWxsQ2VsbHNBcmVGYWxzZSwgRXF1
YWxOdWxsKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjExNiw2ICsyMTA4LDEyIEBA
IHByaXZhdGU6CiAgICAgICAgIHRlcm1pbmF0ZShJbmFkZXF1YXRlQ292ZXJhZ2UpOwogICAgIH0K
ICAgICAKKyAgICB2b2lkIGNvbXBpbGVJbnZhbGlkYXRpb25Qb2ludCgpCisgICAgeworICAgICAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IGludmFsaWRhdGlvbiBwb2ludHMgaW4gdGVybXMgb2YgbGx2
bS5zdGFja21hcC4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExMzY0NworICAgIH0KKyAgICAKICAgICBMVmFsdWUgYm9vbGlmeShFZGdlIGVkZ2Up
CiAgICAgewogICAgICAgICBzd2l0Y2ggKGVkZ2UudXNlS2luZCgpKSB7CkBAIC0yMTU1LDcgKzIx
NTMsNyBAQCBwcml2YXRlOgogICAgICAgICBFZGdlIGVkZ2UsIFN0cmluZ09yT2JqZWN0TW9kZSBj
ZWxsTW9kZSwgRXF1YWxOdWxsT3JVbmRlZmluZWRNb2RlIHByaW1pdGl2ZU1vZGUsCiAgICAgICAg
IE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgb3BlcmFuZE1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3Bl
Y3VsYXRpb24pCiAgICAgewotICAgICAgICBib29sIHZhbGlkV2F0Y2hwb2ludCA9IG1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SWZJc1N0aWxsVmFsaWQoKTsKKyAgICAgICAgYm9vbCB2
YWxpZFdhdGNocG9pbnQgPSBtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxW
YWxpZCgpOwogICAgICAgICAKICAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShlZGdl
LCBvcGVyYW5kTW9kZSk7CiAgICAgICAgIApAQCAtMzA3Nyw3ICszMDc1LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBqc1ZhbHVlVmFsdWUoY2VsbCks
IGVkZ2UsIFNwZWNPYmplY3QsIAogICAgICAgICAgICAgbV9vdXQuZXF1YWwoc3RydWN0dXJlLCBt
X291dC5jb25zdEludFB0cih2bSgpLnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKLSAgICAgICAg
aWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SWZJc1N0aWxsVmFsaWQoKSkKKyAg
ICAgICAgaWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNTdGlsbFZhbGlkKCkp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgICAgICBzcGVjdWxhdGUoCkBAIC0z
MTI3LDE2ICszMTI1LDYgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIG1fZ3JhcGgubWFzcXVl
cmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQobV9ub2RlLT5jb2RlT3JpZ2lu
KTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2lu
dElmSXNTdGlsbFZhbGlkKCkKLSAgICB7Ci0gICAgICAgIGlmICghbWFzcXVlcmFkZXNBc1VuZGVm
aW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgCi0gICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgbWFzcXVlcmFkZXMtYXMtdW5k
ZWZpbmVkIHdhdGNocG9pbnRzLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTEzNjQ3Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICAK
ICAgICBlbnVtIEV4Y2VwdGlvbkNoZWNrTW9kZSB7IE5vRXhjZXB0aW9ucywgQ2hlY2tFeGNlcHRp
b25zIH07CiAgICAgCiAgICAgTFZhbHVlIHZtQ2FsbChMVmFsdWUgZnVuY3Rpb24sIEV4Y2VwdGlv
bkNoZWNrTW9kZSBtb2RlID0gQ2hlY2tFeGNlcHRpb25zKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxNTgyMjMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTA1LDcgKzExMDUsNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9wdGltaXpl
KEV4CiAgICAgICAgICAgICAgICAgICAgICJUcmlnZ2VyaW5nIHJlb3B0aW1pemF0aW9uIG9mICIs
ICpjb2RlQmxvY2ssCiAgICAgICAgICAgICAgICAgICAgICIoIiwgKmNvZGVCbG9jay0+cmVwbGFj
ZW1lbnQoKSwgIikgKGluIGxvb3ApLlxuIik7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBj
b2RlQmxvY2stPnJlb3B0aW1pemUoKTsKKyAgICAgICAgICAgIGNvZGVCbG9jay0+cmVwbGFjZW1l
bnQoKS0+amV0dGlzb24oQ291bnRSZW9wdGltaXphdGlvbik7CiAgICAgICAgICAgICByZXR1cm4g
MDsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CkBAIC0xMTkwLDcgKzExOTAsNyBAQCBjaGFyKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9wdGltaXplKEV4CiAgICAgICAgICAgICAgICAgIlRyaWdn
ZXJpbmcgcmVvcHRpbWl6YXRpb24gb2YgIiwgKmNvZGVCbG9jaywgIiAtPiAiLAogICAgICAgICAg
ICAgICAgICpjb2RlQmxvY2stPnJlcGxhY2VtZW50KCksICIgKGFmdGVyIE9TUiBmYWlsKS5cbiIp
OwogICAgICAgICB9Ci0gICAgICAgIGNvZGVCbG9jay0+cmVvcHRpbWl6ZSgpOworICAgICAgICBv
cHRpbWl6ZWRDb2RlQmxvY2stPmpldHRpc29uKENvdW50UmVvcHRpbWl6YXRpb24pOwogICAgICAg
ICByZXR1cm4gMDsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSnVt
cFJlcGxhY2VtZW50V2F0Y2hwb2ludC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KdW1wUmVwbGFjZW1lbnRXYXRjaHBvaW50LmNwcAkocmV2aXNpb24gMTU4MjIz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KdW1wUmVwbGFjZW1lbnRXYXRjaHBvaW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJKdW1wUmVwbGFjZW1lbnRXYXRjaHBvaW50LmgiCi0KLSNpZiBFTkFCTEUoSklUKQotCi0jaW5j
bHVkZSAiTGlua0J1ZmZlci5oIgotI2luY2x1ZGUgIk9wdGlvbnMuaCIKLQotbmFtZXNwYWNlIEpT
QyB7Ci0KLXZvaWQgSnVtcFJlcGxhY2VtZW50V2F0Y2hwb2ludDo6Y29ycmVjdExhYmVscyhMaW5r
QnVmZmVyJiBsaW5rQnVmZmVyKQotewotICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBsYWJlbDsK
LSAgICBsYWJlbC5tX2xhYmVsLm1fb2Zmc2V0ID0gbV9zb3VyY2U7Ci0gICAgbV9zb3VyY2UgPSBi
aXR3aXNlX2Nhc3Q8dWludHB0cl90PihsaW5rQnVmZmVyLmxvY2F0aW9uT2YobGFiZWwpLmRhdGFM
b2NhdGlvbigpKTsKLSAgICBsYWJlbC5tX2xhYmVsLm1fb2Zmc2V0ID0gbV9kZXN0aW5hdGlvbjsK
LSAgICBtX2Rlc3RpbmF0aW9uID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4obGlua0J1ZmZlci5s
b2NhdGlvbk9mKGxhYmVsKS5kYXRhTG9jYXRpb24oKSk7Ci19Ci0KLXZvaWQgSnVtcFJlcGxhY2Vt
ZW50V2F0Y2hwb2ludDo6ZmlyZUludGVybmFsKCkKLXsKLSAgICB2b2lkKiBzb3VyY2UgPSBiaXR3
aXNlX2Nhc3Q8dm9pZCo+KG1fc291cmNlKTsKLSAgICB2b2lkKiBkZXN0aW5hdGlvbiA9IGJpdHdp
c2VfY2FzdDx2b2lkKj4obV9kZXN0aW5hdGlvbik7Ci0gICAgaWYgKE9wdGlvbnM6OnNob3dEaXNh
c3NlbWJseSgpKQotICAgICAgICBkYXRhTG9nRigiRmlyaW5nIGp1bXAgcmVwbGFjZW1lbnQgd2F0
Y2hwb2ludCBmcm9tICVwLCB0byAlcC5cbiIsIHNvdXJjZSwgZGVzdGluYXRpb24pOwotICAgIE1h
Y3JvQXNzZW1ibGVyOjpyZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwoc291cmNlKSwg
Q29kZUxvY2F0aW9uTGFiZWwoZGVzdGluYXRpb24pKTsKLSAgICBpZiAoaXNPbkxpc3QoKSkKLSAg
ICAgICAgcmVtb3ZlKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gRU5B
QkxFKEpJVCkKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KdW1wUmVwbGFjZW1l
bnRXYXRjaHBvaW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
dW1wUmVwbGFjZW1lbnRXYXRjaHBvaW50LmgJKHJldmlzaW9uIDE1ODIyMykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSnVtcFJlcGxhY2VtZW50V2F0Y2hwb2ludC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDgwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCi0gKi8KLQotI2lmbmRlZiBKdW1wUmVwbGFjZW1lbnRXYXRjaHBvaW50X2gKLSNkZWZpbmUg
SnVtcFJlcGxhY2VtZW50V2F0Y2hwb2ludF9oCi0KLSNpbmNsdWRlICJXYXRjaHBvaW50LmgiCi0j
aW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+Ci0KLSNpZiBFTkFCTEUoSklUKQotCi0jaW5jbHVkZSAi
Q29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKLQotbmFtZXNwYWNl
IEpTQyB7Ci0KLWNsYXNzIEp1bXBSZXBsYWNlbWVudFdhdGNocG9pbnQgOiBwdWJsaWMgV2F0Y2hw
b2ludCB7Ci1wdWJsaWM6Ci0gICAgSnVtcFJlcGxhY2VtZW50V2F0Y2hwb2ludCgpCi0gICAgICAg
IDogbV9zb3VyY2Uoc3RkOjpudW1lcmljX2xpbWl0czx1aW50cHRyX3Q+OjptYXgoKSkKLSAgICAg
ICAgLCBtX2Rlc3RpbmF0aW9uKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludHB0cl90Pjo6bWF4KCkp
Ci0gICAgewotICAgIH0KLSAgICAKLSAgICBKdW1wUmVwbGFjZW1lbnRXYXRjaHBvaW50KE1hY3Jv
QXNzZW1ibGVyOjpMYWJlbCBzb3VyY2UpCi0gICAgICAgIDogbV9zb3VyY2Uoc291cmNlLm1fbGFi
ZWwubV9vZmZzZXQpCi0gICAgICAgICwgbV9kZXN0aW5hdGlvbihzdGQ6Om51bWVyaWNfbGltaXRz
PHVpbnRwdHJfdD46Om1heCgpKQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgTWFjcm9Bc3NlbWJs
ZXI6OkxhYmVsIHNvdXJjZUxhYmVsKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpMYWJlbCBsYWJlbDsKLSAgICAgICAgbGFiZWwubV9sYWJlbC5tX29mZnNldCA9IG1fc291
cmNlOwotICAgICAgICByZXR1cm4gbGFiZWw7Ci0gICAgfQotICAgIAotICAgIHZvaWQgc2V0RGVz
dGluYXRpb24oTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGRlc3RpbmF0aW9uKQotICAgIHsKLSAgICAg
ICAgbV9kZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9uLm1fbGFiZWwubV9vZmZzZXQ7Ci0gICAgfQot
ICAgIAotICAgIHZvaWQgY29ycmVjdExhYmVscyhMaW5rQnVmZmVyJik7Ci0KLXByb3RlY3RlZDoK
LSAgICB2aXJ0dWFsIHZvaWQgZmlyZUludGVybmFsKCkgT1ZFUlJJREU7Ci0KLXByaXZhdGU6Ci0g
ICAgdWludHB0cl90IG1fc291cmNlOwotICAgIHVpbnRwdHJfdCBtX2Rlc3RpbmF0aW9uOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBFTkFCTEUoSklUKQotCi0jZW5kaWYg
Ly8gSnVtcFJlcGxhY2VtZW50V2F0Y2hwb2ludF9oCi0K
</data>
<flag name="review"
          id="238155"
          type_id="1"
          status="+"
          setter="mhahnenberg"
    />
          </attachment>
      

    </bug>

</bugzilla>