<?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>21152</bug_id>
          
          <creation_ts>2008-09-26 14:40:34 -0700</creation_ts>
          <short_desc>Speedup static property get/put</short_desc>
          <delta_ts>2008-09-26 19:36:43 -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>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>92970</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-09-26 14:40:34 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92972</commentid>
    <comment_count>1</comment_count>
      <attachid>23858</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-09-26 14:45:07 -0700</bug_when>
    <thetext>Created attachment 23858
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92980</commentid>
    <comment_count>2</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-09-26 15:21:03 -0700</bug_when>
    <thetext>Do you have any performance measurements?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92984</commentid>
    <comment_count>3</comment_count>
      <attachid>23858</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-09-26 15:29:00 -0700</bug_when>
    <thetext>Comment on attachment 23858
patch

+++ JavaScriptCore/kjs/PropertySlot.h	(working copy)

Please take out the forward declaration of the HashEntry struct.

I&apos;d love to see the actual functions (getRightContext) inlined as much as possible. It seems a shame to pay an extra function call for these little &quot;trampolines&quot;.

+         void setInput(const UString&amp;);

These look indented wrong. What happened?

+    // FIXME: other than sharing code, there is no reason this get function can&apos;t be simpler.

I think that &quot;other than sharing code&quot; is unnecessarily vague here. You need to be more specific about what is being shared.

-JSValue* nonCachingStaticFunctionGetter(ExecState* exec, const Identifier&amp; propertyName, const PropertySlot&amp; slot)

I think you forgot to remove the declaration in the JSDOMBinding.h header.

+    if (!static_cast&lt;JSDOMWindowBase*&gt;(slot.slotBase())-&gt;allowsAccessFrom(exec))
+        return jsUndefined();
+    return static_cast&lt;JSDOMWindowBase*&gt;(slot.slotBase())-&gt;getListener(exec, mousemoveEvent);

These could all be implemented by a call to a single inline helper instead of repeating this code over and over again.

+void setJSDOMWindowBaseEvent(ExecState*, JSObject*, JSValue*)
+{
+}

These empty functions probably need a comment to explain why they&apos;re here but empty.

+        void setListener(JSC::ExecState*, const AtomicString&amp; eventType, JSC::JSValue* function);
     private:

I&apos;d prefer to always have blank lines before private. I&apos;ve noticed others recently deleting them, but I want them visually grouped with whatever comes after the private, not the things before.

+static JSValue* jsEventTargetNodeOnAbort(ExecState*, const Identifier&amp;, const PropertySlot&amp;);

You could use JS_EVENT_LISTENER_FOR_EACH_LISTENER to avoid having to write these all out.

+            # FIXME: this casts to int to match our previous behavior which turned 0xFFFFFFFF in -1 for NodeFilter.SHOW_ALL

You probably mean &quot;into&quot; here. Also, is there a cleaner way to handle this?

+        push(@implContent, &quot;    { \&quot;$key\&quot;, @$specials[$i], (intptr_t)@$value1[$i], (intptr_t)@$value2[$i] },\n&quot;);

C++ casts instead?

+CONSOLE MESSAGE: line 1: Unsafe JavaScript attempt to access frame with URL http://localhost:8000/security/resources/cross-frame-iframe-for-put-test.html from frame with URL http://127.0.0.1:8000/security/cross-frame-access-put.html. Domains, protocols and ports must match.

What? Why no explanation in the ChangeLog.

r=me -- all comments above optional</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93011</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-09-26 19:36:43 -0700</bug_when>
    <thetext>Fixed in r36977.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23858</attachid>
            <date>2008-09-26 14:45:07 -0700</date>
            <delta_ts>2008-09-26 15:29:00 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>209685</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM2OTY4KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsODEgQEAKKzIwMDgtMDktMjYgIFNhbSBXZWlu
aWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBQYXRjaCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxMTUyCisgICAgICAgIFNwZWVkdXAgc3RhdGljIHByb3BlcnR5IGdldC9wdXQKKwor
ICAgICAgICAqIGtqcy9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRQcm9wZXJ0eUF0dHJpYnV0
ZXMpOgorICAgICAgICAqIGtqcy9NYXRoT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6TWF0aE9i
amVjdDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKiBranMvTnVtYmVyQ29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpudW1iZXJDb25zdHJ1Y3Rvck5hTlZhbHVlKToKKyAgICAg
ICAgKEpTQzo6bnVtYmVyQ29uc3RydWN0b3JOZWdJbmZpbml0eSk6CisgICAgICAgIChKU0M6Om51
bWJlckNvbnN0cnVjdG9yUG9zSW5maW5pdHkpOgorICAgICAgICAoSlNDOjpudW1iZXJDb25zdHJ1
Y3Rvck1heFZhbHVlKToKKyAgICAgICAgKEpTQzo6bnVtYmVyQ29uc3RydWN0b3JNaW5WYWx1ZSk6
CisgICAgICAgICoga2pzL1Byb3BlcnR5U2xvdC5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNs
b3Q6Oik6CisgICAgICAgICoga2pzL1JlZ0V4cENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6cmVnRXhwQ29uc3RydWN0b3JEb2xsYXIxKToKKyAgICAgICAgKEpTQzo6cmVnRXhwQ29uc3Ry
dWN0b3JEb2xsYXIyKToKKyAgICAgICAgKEpTQzo6cmVnRXhwQ29uc3RydWN0b3JEb2xsYXIzKToK
KyAgICAgICAgKEpTQzo6cmVnRXhwQ29uc3RydWN0b3JEb2xsYXI0KToKKyAgICAgICAgKEpTQzo6
cmVnRXhwQ29uc3RydWN0b3JEb2xsYXI1KToKKyAgICAgICAgKEpTQzo6cmVnRXhwQ29uc3RydWN0
b3JEb2xsYXI2KToKKyAgICAgICAgKEpTQzo6cmVnRXhwQ29uc3RydWN0b3JEb2xsYXI3KToKKyAg
ICAgICAgKEpTQzo6cmVnRXhwQ29uc3RydWN0b3JEb2xsYXI4KToKKyAgICAgICAgKEpTQzo6cmVn
RXhwQ29uc3RydWN0b3JEb2xsYXI5KToKKyAgICAgICAgKEpTQzo6cmVnRXhwQ29uc3RydWN0b3JJ
bnB1dCk6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9yTXVsdGlsaW5lKToKKyAgICAg
ICAgKEpTQzo6cmVnRXhwQ29uc3RydWN0b3JMYXN0TWF0Y2gpOgorICAgICAgICAoSlNDOjpyZWdF
eHBDb25zdHJ1Y3Rvckxhc3RQYXJlbik6CisgICAgICAgIChKU0M6OnJlZ0V4cENvbnN0cnVjdG9y
TGVmdENvbnRleHQpOgorICAgICAgICAoSlNDOjpyZWdFeHBDb25zdHJ1Y3RvclJpZ2h0Q29udGV4
dCk6CisgICAgICAgIChKU0M6OnNldFJlZ0V4cENvbnN0cnVjdG9ySW5wdXQpOgorICAgICAgICAo
SlNDOjpzZXRSZWdFeHBDb25zdHJ1Y3Rvck11bHRpbGluZSk6CisgICAgICAgIChKU0M6OlJlZ0V4
cENvbnN0cnVjdG9yOjpzZXRJbnB1dCk6CisgICAgICAgIChKU0M6OlJlZ0V4cENvbnN0cnVjdG9y
OjpzZXRNdWx0aWxpbmUpOgorICAgICAgICAoSlNDOjpSZWdFeHBDb25zdHJ1Y3Rvcjo6bXVsdGls
aW5lKToKKyAgICAgICAgKiBranMvUmVnRXhwQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBranMv
UmVnRXhwT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6cmVnRXhwT2JqZWN0R2xvYmFsKToKKyAg
ICAgICAgKEpTQzo6cmVnRXhwT2JqZWN0SWdub3JlQ2FzZSk6CisgICAgICAgIChKU0M6OnJlZ0V4
cE9iamVjdE11bHRpbGluZSk6CisgICAgICAgIChKU0M6OnJlZ0V4cE9iamVjdFNvdXJjZSk6Cisg
ICAgICAgIChKU0M6OnJlZ0V4cE9iamVjdExhc3RJbmRleCk6CisgICAgICAgIChKU0M6OnNldFJl
Z0V4cE9iamVjdExhc3RJbmRleCk6CisgICAgICAgICoga2pzL1JlZ0V4cE9iamVjdC5oOgorICAg
ICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OnNldExhc3RJbmRleCk6CisgICAgICAgIChKU0M6OlJl
Z0V4cE9iamVjdDo6bGFzdEluZGV4KToKKyAgICAgICAgKEpTQzo6UmVnRXhwT2JqZWN0OjpSZWdF
eHBPYmplY3REYXRhOjpSZWdFeHBPYmplY3REYXRhKToKKyAgICAgICAgKiBranMvU3RydWN0dXJl
SUQuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJRDo6Z2V0RW51bWVyYWJsZVByb3BlcnR5
TmFtZXMpOgorICAgICAgICAqIGtqcy9jcmVhdGVfaGFzaF90YWJsZToKKyAgICAgICAgKiBranMv
bGV4ZXIuY3BwOgorICAgICAgICAoSlNDOjpMZXhlcjo6bGV4KToKKyAgICAgICAgKiBranMvbG9v
a3VwLmNwcDoKKyAgICAgICAgKEpTQzo6SGFzaFRhYmxlOjpjcmVhdGVUYWJsZSk6CisgICAgICAg
IChKU0M6Okhhc2hUYWJsZTo6ZGVsZXRlVGFibGUpOgorICAgICAgICAoSlNDOjpzZXRVcFN0YXRp
Y0Z1bmN0aW9uU2xvdCk6CisgICAgICAgICoga2pzL2xvb2t1cC5oOgorICAgICAgICAoSlNDOjpI
YXNoRW50cnk6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpIYXNoRW50cnk6OnNldEtleSk6
CisgICAgICAgIChKU0M6Okhhc2hFbnRyeTo6a2V5KToKKyAgICAgICAgKEpTQzo6SGFzaEVudHJ5
OjphdHRyaWJ1dGVzKToKKyAgICAgICAgKEpTQzo6SGFzaEVudHJ5OjpmdW5jdGlvbik6CisgICAg
ICAgIChKU0M6Okhhc2hFbnRyeTo6ZnVuY3Rpb25MZW5ndGgpOgorICAgICAgICAoSlNDOjpIYXNo
RW50cnk6OnByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKEpTQzo6SGFzaEVudHJ5Ojpwcm9wZXJ0
eVB1dHRlcik6CisgICAgICAgIChKU0M6Okhhc2hFbnRyeTo6bGV4ZXJWYWx1ZSk6CisgICAgICAg
IChKU0M6Okhhc2hFbnRyeTo6KToKKyAgICAgICAgKEpTQzo6SGFzaFRhYmxlOjplbnRyeSk6Cisg
ICAgICAgIChKU0M6OmdldFN0YXRpY1Byb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OmdldFN0
YXRpY1ZhbHVlU2xvdCk6CisgICAgICAgIChKU0M6Omxvb2t1cFB1dCk6CisKIDIwMDgtMDktMjQg
IEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBNYWNpZWogU3RhY2hvd2lhay4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9KU09iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0pTT2JqZWN0LmNwcAkocmV2aXNp
b24gMzY4NzMpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMDksNyArMjA5LDcgQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoRXhl
Y1N0YXRlKgogCiAgICAgLy8gTG9vayBpbiB0aGUgc3RhdGljIGhhc2h0YWJsZSBvZiBwcm9wZXJ0
aWVzCiAgICAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IGZpbmRQcm9wZXJ0eUhhc2hFbnRyeShl
eGVjLCBwcm9wZXJ0eU5hbWUpOwotICAgIGlmIChlbnRyeSAmJiBlbnRyeS0+YXR0cmlidXRlcyAm
IERvbnREZWxldGUpCisgICAgaWYgKGVudHJ5ICYmIGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBEb250
RGVsZXRlKQogICAgICAgICByZXR1cm4gZmFsc2U7IC8vIHRoaXMgYnVpbHRpbiBwcm9wZXJ0eSBj
YW4ndCBiZSBkZWxldGVkCiAKICAgICAvLyBGSVhNRTogU2hvdWxkIHRoZSBjb2RlIGhlcmUgYWN0
dWFsbHkgZG8gc29tZSBkZWxldGlvbj8KQEAgLTQxOCw3ICs0MTgsNyBAQCBib29sIEpTT2JqZWN0
OjpnZXRQcm9wZXJ0eUF0dHJpYnV0ZXMoRXhlCiAgICAgLy8gTG9vayBpbiB0aGUgc3RhdGljIGhh
c2h0YWJsZSBvZiBwcm9wZXJ0aWVzCiAgICAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IGZpbmRQ
cm9wZXJ0eUhhc2hFbnRyeShleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgIGlmIChlbnRyeSkgewot
ICAgICAgICBhdHRyaWJ1dGVzID0gZW50cnktPmF0dHJpYnV0ZXM7CisgICAgICAgIGF0dHJpYnV0
ZXMgPSBlbnRyeS0+YXR0cmlidXRlcygpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAg
ICAgCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvTWF0aE9iamVjdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUva2pzL01hdGhPYmplY3QuY3BwCShyZXZpc2lvbiAzNjg3MykKKysr
IEphdmFTY3JpcHRDb3JlL2tqcy9NYXRoT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1
LDcgKzEwNSw3IEBAIGJvb2wgTWF0aE9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWMKICAg
ICBpZiAoIWVudHJ5KQogICAgICAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xv
dChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogCi0gICAgQVNTRVJUKGVudHJ5LT5hdHRyaWJ1
dGVzICYgRnVuY3Rpb24pOworICAgIEFTU0VSVChlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rp
b24pOwogICAgIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KGV4ZWMsIGVudHJ5LCB0aGlzLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOwogICAgIHJldHVybiB0cnVlOwogfQpJbmRleDogSmF2YVNjcmlwdENv
cmUva2pzL051bWJlckNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9ranMvTnVtYmVyQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAzNjg3MykKKysrIEphdmFTY3Jp
cHRDb3JlL2tqcy9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDcg
KzIxLDYgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk51bWJlckNvbnN0cnVj
dG9yLmgiCi0jaW5jbHVkZSAiTnVtYmVyQ29uc3RydWN0b3IubHV0LmgiCiAKICNpbmNsdWRlICJO
dW1iZXJPYmplY3QuaCIKICNpbmNsdWRlICJOdW1iZXJQcm90b3R5cGUuaCIKQEAgLTMwLDE3ICsy
OSwzMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChOdW1i
ZXJDb25zdHJ1Y3Rvcik7CiAKK3N0YXRpYyBKU1ZhbHVlKiBudW1iZXJDb25zdHJ1Y3Rvck5hTlZh
bHVlKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsK
K3N0YXRpYyBKU1ZhbHVlKiBudW1iZXJDb25zdHJ1Y3Rvck5lZ0luZmluaXR5KEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKK3N0YXRpYyBKU1ZhbHVl
KiBudW1iZXJDb25zdHJ1Y3RvclBvc0luZmluaXR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKK3N0YXRpYyBKU1ZhbHVlKiBudW1iZXJDb25zdHJ1
Y3Rvck1heFZhbHVlKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0
eVNsb3QmKTsKK3N0YXRpYyBKU1ZhbHVlKiBudW1iZXJDb25zdHJ1Y3Rvck1pblZhbHVlKEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKKworfSAvLyBu
YW1lc3BhY2UgSlNDCisKKyNpbmNsdWRlICJOdW1iZXJDb25zdHJ1Y3Rvci5sdXQuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKIGNvbnN0IENsYXNzSW5mbyBOdW1iZXJDb25zdHJ1Y3Rvcjo6aW5mbyA9
IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb246OmluZm8sIDAsIEV4ZWNTdGF0ZTo6bnVt
YmVyVGFibGUgfTsKIAotLyogU291cmNlIGZvciBOdW1iZXJPYmplY3QubHV0LmgKKy8qIFNvdXJj
ZSBmb3IgTnVtYmVyQ29uc3RydWN0b3IubHV0LmgKIEBiZWdpbiBudW1iZXJUYWJsZQotICBOYU4g
ICAgICAgICAgICAgICAgICAgTnVtYmVyQ29uc3RydWN0b3I6Ok5hTlZhbHVlICAgICAgIERvbnRF
bnVtfERvbnREZWxldGV8UmVhZE9ubHkKLSAgTkVHQVRJVkVfSU5GSU5JVFkgICAgIE51bWJlckNv
bnN0cnVjdG9yOjpOZWdJbmZpbml0eSAgICBEb250RW51bXxEb250RGVsZXRlfFJlYWRPbmx5Ci0g
IFBPU0lUSVZFX0lORklOSVRZICAgICBOdW1iZXJDb25zdHJ1Y3Rvcjo6UG9zSW5maW5pdHkgICAg
RG9udEVudW18RG9udERlbGV0ZXxSZWFkT25seQotICBNQVhfVkFMVUUgICAgICAgICAgICAgTnVt
YmVyQ29uc3RydWN0b3I6Ok1heFZhbHVlICAgICAgIERvbnRFbnVtfERvbnREZWxldGV8UmVhZE9u
bHkKLSAgTUlOX1ZBTFVFICAgICAgICAgICAgIE51bWJlckNvbnN0cnVjdG9yOjpNaW5WYWx1ZSAg
ICAgICBEb250RW51bXxEb250RGVsZXRlfFJlYWRPbmx5CisgICBOYU4gICAgICAgICAgICAgICAg
ICAgbnVtYmVyQ29uc3RydWN0b3JOYU5WYWx1ZSAgICAgICBEb250RW51bXxEb250RGVsZXRlfFJl
YWRPbmx5CisgICBORUdBVElWRV9JTkZJTklUWSAgICAgbnVtYmVyQ29uc3RydWN0b3JOZWdJbmZp
bml0eSAgICBEb250RW51bXxEb250RGVsZXRlfFJlYWRPbmx5CisgICBQT1NJVElWRV9JTkZJTklU
WSAgICAgbnVtYmVyQ29uc3RydWN0b3JQb3NJbmZpbml0eSAgICBEb250RW51bXxEb250RGVsZXRl
fFJlYWRPbmx5CisgICBNQVhfVkFMVUUgICAgICAgICAgICAgbnVtYmVyQ29uc3RydWN0b3JNYXhW
YWx1ZSAgICAgICBEb250RW51bXxEb250RGVsZXRlfFJlYWRPbmx5CisgICBNSU5fVkFMVUUgICAg
ICAgICAgICAgbnVtYmVyQ29uc3RydWN0b3JNaW5WYWx1ZSAgICAgICBEb250RW51bXxEb250RGVs
ZXRlfFJlYWRPbmx5CiBAZW5kCiAqLworCiBOdW1iZXJDb25zdHJ1Y3Rvcjo6TnVtYmVyQ29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBleGVjLCBQYXNzUmVmUHRyPFN0cnVjdHVyZUlEPiBzdHJ1Y3R1cmUs
IE51bWJlclByb3RvdHlwZSogbnVtYmVyUHJvdG90eXBlKQogICAgIDogSW50ZXJuYWxGdW5jdGlv
bihleGVjLCBzdHJ1Y3R1cmUsIElkZW50aWZpZXIoZXhlYywgbnVtYmVyUHJvdG90eXBlLT5pbmZv
LmNsYXNzTmFtZSkpCiB7CkBAIC01NiwyMyArNjgsMjkgQEAgYm9vbCBOdW1iZXJDb25zdHJ1Y3Rv
cjo6Z2V0T3duUHJvcGVydHlTbAogICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8TnVtYmVy
Q29uc3RydWN0b3IsIEludGVybmFsRnVuY3Rpb24+KGV4ZWMsIEV4ZWNTdGF0ZTo6bnVtYmVyVGFi
bGUoZXhlYyksIHRoaXMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLUpTVmFsdWUqIE51bWJl
ckNvbnN0cnVjdG9yOjpnZXRWYWx1ZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgaW50IHRva2Vu
KSBjb25zdAorSlNWYWx1ZSogbnVtYmVyQ29uc3RydWN0b3JOYU5WYWx1ZShFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKQoreworICAgIHJldHVy
biBqc05hTihleGVjKTsKK30KKworSlNWYWx1ZSogbnVtYmVyQ29uc3RydWN0b3JOZWdJbmZpbml0
eShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3Qm
KQoreworICAgIHJldHVybiBqc051bWJlckNlbGwoZXhlYywgLUluZik7Cit9CisKK0pTVmFsdWUq
IG51bWJlckNvbnN0cnVjdG9yUG9zSW5maW5pdHkoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90JikKK3sKKyAgICByZXR1cm4ganNOdW1iZXJDZWxs
KGV4ZWMsIEluZik7Cit9CisKK0pTVmFsdWUqIG51bWJlckNvbnN0cnVjdG9yTWF4VmFsdWUoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90JikKK3sK
KyAgICByZXR1cm4ganNOdW1iZXJDZWxsKGV4ZWMsIDEuNzk3NjkzMTM0ODYyMzE1N0UrMzA4KTsK
K30KKworSlNWYWx1ZSogbnVtYmVyQ29uc3RydWN0b3JNaW5WYWx1ZShFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKQogewotICAgIC8vIEVDTUEg
MTUuNy4zCi0gICAgc3dpdGNoICh0b2tlbikgewotICAgICAgICBjYXNlIE5hTlZhbHVlOgotICAg
ICAgICAgICAgcmV0dXJuIGpzTmFOKGV4ZWMpOwotICAgICAgICBjYXNlIE5lZ0luZmluaXR5Ogot
ICAgICAgICAgICAgcmV0dXJuIGpzTnVtYmVyQ2VsbChleGVjLCAtSW5mKTsKLSAgICAgICAgY2Fz
ZSBQb3NJbmZpbml0eToKLSAgICAgICAgICAgIHJldHVybiBqc051bWJlckNlbGwoZXhlYywgSW5m
KTsKLSAgICAgICAgY2FzZSBNYXhWYWx1ZToKLSAgICAgICAgICAgIHJldHVybiBqc051bWJlckNl
bGwoZXhlYywgMS43OTc2OTMxMzQ4NjIzMTU3RSszMDgpOwotICAgICAgICBjYXNlIE1pblZhbHVl
OgotICAgICAgICAgICAgcmV0dXJuIGpzTnVtYmVyQ2VsbChleGVjLCA1RS0zMjQpOwotICAgIH0K
LSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4ganNOdWxsKCk7CisgICAgcmV0
dXJuIGpzTnVtYmVyQ2VsbChleGVjLCA1RS0zMjQpOwogfQogCiAvLyBFQ01BIDE1LjcuMQpJbmRl
eDogSmF2YVNjcmlwdENvcmUva2pzL1Byb3BlcnR5U2xvdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL2tqcy9Qcm9wZXJ0eVNsb3QuaAkocmV2aXNpb24gMzY4NzMpCisrKyBKYXZhU2Ny
aXB0Q29yZS9ranMvUHJvcGVydHlTbG90LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMSwxNiArMTMx
LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBtX2RhdGEucmVnaXN0ZXJTbG90ID0g
cmVnaXN0ZXJTbG90OwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBzZXRTdGF0aWNFbnRyeShK
U1ZhbHVlKiBzbG90QmFzZSwgY29uc3QgSGFzaEVudHJ5KiBzdGF0aWNFbnRyeSwgR2V0VmFsdWVG
dW5jIGdldFZhbHVlKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoc2xvdEJhc2UpOwot
ICAgICAgICAgICAgQVNTRVJUKHN0YXRpY0VudHJ5KTsKLSAgICAgICAgICAgIEFTU0VSVChnZXRW
YWx1ZSk7Ci0gICAgICAgICAgICBtX2dldFZhbHVlID0gZ2V0VmFsdWU7Ci0gICAgICAgICAgICBt
X3Nsb3RCYXNlID0gc2xvdEJhc2U7Ci0gICAgICAgICAgICBtX2RhdGEuc3RhdGljRW50cnkgPSBz
dGF0aWNFbnRyeTsKLSAgICAgICAgfQotCiAgICAgICAgIHZvaWQgc2V0Q3VzdG9tKEpTVmFsdWUq
IHNsb3RCYXNlLCBHZXRWYWx1ZUZ1bmMgZ2V0VmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgICAg
IEFTU0VSVChzbG90QmFzZSk7CkBAIC0xOTgsNyArMTg4LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAj
ZW5kaWYKICAgICAgICAgfQogCi0gICAgICAgIGNvbnN0IEhhc2hFbnRyeSogc3RhdGljRW50cnko
KSBjb25zdCB7IHJldHVybiBtX2RhdGEuc3RhdGljRW50cnk7IH0KICAgICAgICAgdW5zaWduZWQg
aW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuaW5kZXg7IH0KIAogICAgIHByaXZhdGU6CkBA
IC0yMTEsNyArMjAwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBKU09iamVjdCog
Z2V0dGVyRnVuYzsKICAgICAgICAgICAgIEpTVmFsdWUqKiB2YWx1ZVNsb3Q7CiAgICAgICAgICAg
ICBSZWdpc3RlciogcmVnaXN0ZXJTbG90OwotICAgICAgICAgICAgY29uc3QgSGFzaEVudHJ5KiBz
dGF0aWNFbnRyeTsKICAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4OwogICAgICAgICB9IG1fZGF0
YTsKIApJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvUmVnRXhwQ29uc3RydWN0b3IuY3BwCShyZXZp
c2lvbiAzNjg3MykKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIwLDcgKzIwLDYgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIlJlZ0V4cENvbnN0cnVjdG9yLmgiCi0jaW5jbHVkZSAiUmVnRXhwQ29uc3RydWN0
b3IubHV0LmgiCiAKICNpbmNsdWRlICJBcnJheVByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkpTQXJy
YXkuaCIKQEAgLTM0LDMzICszMyw1OCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorc3RhdGljIEpT
VmFsdWUqIHJlZ0V4cENvbnN0cnVjdG9ySW5wdXQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOworc3RhdGljIEpTVmFsdWUqIHJlZ0V4cENvbnN0cnVj
dG9yTXVsdGlsaW5lKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0
eVNsb3QmKTsKK3N0YXRpYyBKU1ZhbHVlKiByZWdFeHBDb25zdHJ1Y3Rvckxhc3RNYXRjaChFeGVj
U3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jik7CitzdGF0aWMg
SlNWYWx1ZSogcmVnRXhwQ29uc3RydWN0b3JMYXN0UGFyZW4oRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOworc3RhdGljIEpTVmFsdWUqIHJlZ0V4cENv
bnN0cnVjdG9yTGVmdENvbnRleHQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0
IFByb3BlcnR5U2xvdCYpOworc3RhdGljIEpTVmFsdWUqIHJlZ0V4cENvbnN0cnVjdG9yUmlnaHRD
b250ZXh0KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3Qm
KTsKK3N0YXRpYyBKU1ZhbHVlKiByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjEoRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOworc3RhdGljIEpTVmFsdWUq
IHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyMihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwg
Y29uc3QgUHJvcGVydHlTbG90Jik7CitzdGF0aWMgSlNWYWx1ZSogcmVnRXhwQ29uc3RydWN0b3JE
b2xsYXIzKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3Qm
KTsKK3N0YXRpYyBKU1ZhbHVlKiByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjQoRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOworc3RhdGljIEpTVmFsdWUq
IHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyNShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwg
Y29uc3QgUHJvcGVydHlTbG90Jik7CitzdGF0aWMgSlNWYWx1ZSogcmVnRXhwQ29uc3RydWN0b3JE
b2xsYXI2KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3Qm
KTsKK3N0YXRpYyBKU1ZhbHVlKiByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjcoRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOworc3RhdGljIEpTVmFsdWUq
IHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyOChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwg
Y29uc3QgUHJvcGVydHlTbG90Jik7CitzdGF0aWMgSlNWYWx1ZSogcmVnRXhwQ29uc3RydWN0b3JE
b2xsYXI5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3Qm
KTsKKworc3RhdGljIHZvaWQgc2V0UmVnRXhwQ29uc3RydWN0b3JJbnB1dChFeGVjU3RhdGUqLCBK
U09iamVjdCosIEpTVmFsdWUqKTsKK3N0YXRpYyB2b2lkIHNldFJlZ0V4cENvbnN0cnVjdG9yTXVs
dGlsaW5lKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSopOworCit9IC8vIG5hbWVzcGFj
ZSBKU0MKKworI2luY2x1ZGUgIlJlZ0V4cENvbnN0cnVjdG9yLmx1dC5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKwogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChSZWdFeHBDb25zdHJ1Y3Rvcik7CiAK
IGNvbnN0IENsYXNzSW5mbyBSZWdFeHBDb25zdHJ1Y3Rvcjo6aW5mbyA9IHsgIkZ1bmN0aW9uIiwg
JkludGVybmFsRnVuY3Rpb246OmluZm8sIDAsIEV4ZWNTdGF0ZTo6cmVnRXhwQ29uc3RydWN0b3JU
YWJsZSB9OwogCiAvKiBTb3VyY2UgZm9yIFJlZ0V4cENvbnN0cnVjdG9yLmx1dC5oCiBAYmVnaW4g
cmVnRXhwQ29uc3RydWN0b3JUYWJsZQotICAgIGlucHV0ICAgICAgICAgICBSZWdFeHBDb25zdHJ1
Y3Rvcjo6SW5wdXQgICAgICAgICAgTm9uZQotICAgICRfICAgICAgICAgICAgICBSZWdFeHBDb25z
dHJ1Y3Rvcjo6SW5wdXQgICAgICAgICAgRG9udEVudW0KLSAgICBtdWx0aWxpbmUgICAgICAgUmVn
RXhwQ29uc3RydWN0b3I6Ok11bHRpbGluZSAgICAgIE5vbmUKLSAgICAkKiAgICAgICAgICAgICAg
UmVnRXhwQ29uc3RydWN0b3I6Ok11bHRpbGluZSAgICAgIERvbnRFbnVtCi0gICAgbGFzdE1hdGNo
ICAgICAgIFJlZ0V4cENvbnN0cnVjdG9yOjpMYXN0TWF0Y2ggICAgICBEb250RGVsZXRlfFJlYWRP
bmx5Ci0gICAgJCYgICAgICAgICAgICAgIFJlZ0V4cENvbnN0cnVjdG9yOjpMYXN0TWF0Y2ggICAg
ICBEb250RGVsZXRlfFJlYWRPbmx5fERvbnRFbnVtCi0gICAgbGFzdFBhcmVuICAgICAgIFJlZ0V4
cENvbnN0cnVjdG9yOjpMYXN0UGFyZW4gICAgICBEb250RGVsZXRlfFJlYWRPbmx5Ci0gICAgJCsg
ICAgICAgICAgICAgIFJlZ0V4cENvbnN0cnVjdG9yOjpMYXN0UGFyZW4gICAgICBEb250RGVsZXRl
fFJlYWRPbmx5fERvbnRFbnVtCi0gICAgbGVmdENvbnRleHQgICAgIFJlZ0V4cENvbnN0cnVjdG9y
OjpMZWZ0Q29udGV4dCAgICBEb250RGVsZXRlfFJlYWRPbmx5Ci0gICAgJGAgICAgICAgICAgICAg
IFJlZ0V4cENvbnN0cnVjdG9yOjpMZWZ0Q29udGV4dCAgICBEb250RGVsZXRlfFJlYWRPbmx5fERv
bnRFbnVtCi0gICAgcmlnaHRDb250ZXh0ICAgIFJlZ0V4cENvbnN0cnVjdG9yOjpSaWdodENvbnRl
eHQgICBEb250RGVsZXRlfFJlYWRPbmx5Ci0gICAgJCcgICAgICAgICAgICAgIFJlZ0V4cENvbnN0
cnVjdG9yOjpSaWdodENvbnRleHQgICBEb250RGVsZXRlfFJlYWRPbmx5fERvbnRFbnVtCi0gICAg
JDEgICAgICAgICAgICAgIFJlZ0V4cENvbnN0cnVjdG9yOjpEb2xsYXIxICAgICAgICBEb250RGVs
ZXRlfFJlYWRPbmx5Ci0gICAgJDIgICAgICAgICAgICAgIFJlZ0V4cENvbnN0cnVjdG9yOjpEb2xs
YXIyICAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5Ci0gICAgJDMgICAgICAgICAgICAgIFJlZ0V4
cENvbnN0cnVjdG9yOjpEb2xsYXIzICAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5Ci0gICAgJDQg
ICAgICAgICAgICAgIFJlZ0V4cENvbnN0cnVjdG9yOjpEb2xsYXI0ICAgICAgICBEb250RGVsZXRl
fFJlYWRPbmx5Ci0gICAgJDUgICAgICAgICAgICAgIFJlZ0V4cENvbnN0cnVjdG9yOjpEb2xsYXI1
ICAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5Ci0gICAgJDYgICAgICAgICAgICAgIFJlZ0V4cENv
bnN0cnVjdG9yOjpEb2xsYXI2ICAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5Ci0gICAgJDcgICAg
ICAgICAgICAgIFJlZ0V4cENvbnN0cnVjdG9yOjpEb2xsYXI3ICAgICAgICBEb250RGVsZXRlfFJl
YWRPbmx5Ci0gICAgJDggICAgICAgICAgICAgIFJlZ0V4cENvbnN0cnVjdG9yOjpEb2xsYXI4ICAg
ICAgICBEb250RGVsZXRlfFJlYWRPbmx5Ci0gICAgJDkgICAgICAgICAgICAgIFJlZ0V4cENvbnN0
cnVjdG9yOjpEb2xsYXI5ICAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5CisgICAgaW5wdXQgICAg
ICAgICAgIHJlZ0V4cENvbnN0cnVjdG9ySW5wdXQgICAgICAgICAgTm9uZQorICAgICRfICAgICAg
ICAgICAgICByZWdFeHBDb25zdHJ1Y3RvcklucHV0ICAgICAgICAgIERvbnRFbnVtCisgICAgbXVs
dGlsaW5lICAgICAgIHJlZ0V4cENvbnN0cnVjdG9yTXVsdGlsaW5lICAgICAgTm9uZQorICAgICQq
ICAgICAgICAgICAgICByZWdFeHBDb25zdHJ1Y3Rvck11bHRpbGluZSAgICAgIERvbnRFbnVtCisg
ICAgbGFzdE1hdGNoICAgICAgIHJlZ0V4cENvbnN0cnVjdG9yTGFzdE1hdGNoICAgICAgRG9udERl
bGV0ZXxSZWFkT25seQorICAgICQmICAgICAgICAgICAgICByZWdFeHBDb25zdHJ1Y3Rvckxhc3RN
YXRjaCAgICAgIERvbnREZWxldGV8UmVhZE9ubHl8RG9udEVudW0KKyAgICBsYXN0UGFyZW4gICAg
ICAgcmVnRXhwQ29uc3RydWN0b3JMYXN0UGFyZW4gICAgICBEb250RGVsZXRlfFJlYWRPbmx5Cisg
ICAgJCsgICAgICAgICAgICAgIHJlZ0V4cENvbnN0cnVjdG9yTGFzdFBhcmVuICAgICAgRG9udERl
bGV0ZXxSZWFkT25seXxEb250RW51bQorICAgIGxlZnRDb250ZXh0ICAgICByZWdFeHBDb25zdHJ1
Y3RvckxlZnRDb250ZXh0ICAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgICAkYCAgICAgICAgICAg
ICAgcmVnRXhwQ29uc3RydWN0b3JMZWZ0Q29udGV4dCAgICBEb250RGVsZXRlfFJlYWRPbmx5fERv
bnRFbnVtCisgICAgcmlnaHRDb250ZXh0ICAgIHJlZ0V4cENvbnN0cnVjdG9yUmlnaHRDb250ZXh0
ICAgRG9udERlbGV0ZXxSZWFkT25seQorICAgICQnICAgICAgICAgICAgICByZWdFeHBDb25zdHJ1
Y3RvclJpZ2h0Q29udGV4dCAgIERvbnREZWxldGV8UmVhZE9ubHl8RG9udEVudW0KKyAgICAkMSAg
ICAgICAgICAgICAgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXIxICAgICAgICBEb250RGVsZXRlfFJl
YWRPbmx5CisgICAgJDIgICAgICAgICAgICAgIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyMiAgICAg
ICAgRG9udERlbGV0ZXxSZWFkT25seQorICAgICQzICAgICAgICAgICAgICByZWdFeHBDb25zdHJ1
Y3RvckRvbGxhcjMgICAgICAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgICAkNCAgICAgICAgICAg
ICAgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXI0ICAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5Cisg
ICAgJDUgICAgICAgICAgICAgIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyNSAgICAgICAgRG9udERl
bGV0ZXxSZWFkT25seQorICAgICQ2ICAgICAgICAgICAgICByZWdFeHBDb25zdHJ1Y3RvckRvbGxh
cjYgICAgICAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgICAkNyAgICAgICAgICAgICAgcmVnRXhw
Q29uc3RydWN0b3JEb2xsYXI3ICAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5CisgICAgJDggICAg
ICAgICAgICAgIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyOCAgICAgICAgRG9udERlbGV0ZXxSZWFk
T25seQorICAgICQ5ICAgICAgICAgICAgICByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjkgICAgICAg
IERvbnREZWxldGV8UmVhZE9ubHkKIEBlbmQKICovCiAKQEAgLTIwMiw0NCArMjI2LDc5IEBAIGJv
b2wgUmVnRXhwQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2wKICAgICByZXR1cm4gZ2V0U3Rh
dGljVmFsdWVTbG90PFJlZ0V4cENvbnN0cnVjdG9yLCBJbnRlcm5hbEZ1bmN0aW9uPihleGVjLCBF
eGVjU3RhdGU6OnJlZ0V4cENvbnN0cnVjdG9yVGFibGUoZXhlYyksIHRoaXMsIHByb3BlcnR5TmFt
ZSwgc2xvdCk7CiB9CiAKLUpTVmFsdWUqIFJlZ0V4cENvbnN0cnVjdG9yOjpnZXRWYWx1ZVByb3Bl
cnR5KEV4ZWNTdGF0ZSogZXhlYywgaW50IHRva2VuKSBjb25zdAorSlNWYWx1ZSogcmVnRXhwQ29u
c3RydWN0b3JEb2xsYXIxKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0
IFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAgICBzd2l0Y2ggKHRva2VuKSB7Ci0gICAgICAgIGNh
c2UgRG9sbGFyMToKLSAgICAgICAgICAgIHJldHVybiBnZXRCYWNrcmVmKGV4ZWMsIDEpOwotICAg
ICAgICBjYXNlIERvbGxhcjI6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0QmFja3JlZihleGVjLCAy
KTsKLSAgICAgICAgY2FzZSBEb2xsYXIzOgotICAgICAgICAgICAgcmV0dXJuIGdldEJhY2tyZWYo
ZXhlYywgMyk7Ci0gICAgICAgIGNhc2UgRG9sbGFyNDoKLSAgICAgICAgICAgIHJldHVybiBnZXRC
YWNrcmVmKGV4ZWMsIDQpOwotICAgICAgICBjYXNlIERvbGxhcjU6Ci0gICAgICAgICAgICByZXR1
cm4gZ2V0QmFja3JlZihleGVjLCA1KTsKLSAgICAgICAgY2FzZSBEb2xsYXI2OgotICAgICAgICAg
ICAgcmV0dXJuIGdldEJhY2tyZWYoZXhlYywgNik7Ci0gICAgICAgIGNhc2UgRG9sbGFyNzoKLSAg
ICAgICAgICAgIHJldHVybiBnZXRCYWNrcmVmKGV4ZWMsIDcpOwotICAgICAgICBjYXNlIERvbGxh
cjg6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0QmFja3JlZihleGVjLCA4KTsKLSAgICAgICAgY2Fz
ZSBEb2xsYXI5OgotICAgICAgICAgICAgcmV0dXJuIGdldEJhY2tyZWYoZXhlYywgOSk7Ci0gICAg
ICAgIGNhc2UgSW5wdXQ6Ci0gICAgICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgZC0+aW5w
dXQpOwotICAgICAgICBjYXNlIE11bHRpbGluZToKLSAgICAgICAgICAgIHJldHVybiBqc0Jvb2xl
YW4oZC0+bXVsdGlsaW5lKTsKLSAgICAgICAgY2FzZSBMYXN0TWF0Y2g6Ci0gICAgICAgICAgICBy
ZXR1cm4gZ2V0QmFja3JlZihleGVjLCAwKTsKLSAgICAgICAgY2FzZSBMYXN0UGFyZW46Ci0gICAg
ICAgICAgICByZXR1cm4gZ2V0TGFzdFBhcmVuKGV4ZWMpOwotICAgICAgICBjYXNlIExlZnRDb250
ZXh0OgotICAgICAgICAgICAgcmV0dXJuIGdldExlZnRDb250ZXh0KGV4ZWMpOwotICAgICAgICBj
YXNlIFJpZ2h0Q29udGV4dDoKLSAgICAgICAgICAgIHJldHVybiBnZXRSaWdodENvbnRleHQoZXhl
Yyk7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICB9CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlZ0V4cENvbnN0cnVjdG9yKj4oc2xvdC5z
bG90QmFzZSgpKS0+Z2V0QmFja3JlZihleGVjLCAxKTsKK30KIAotICAgIHJldHVybiBqc0VtcHR5
U3RyaW5nKGV4ZWMpOworSlNWYWx1ZSogcmVnRXhwQ29uc3RydWN0b3JEb2xsYXIyKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCkKK3sK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPihzbG90LnNsb3RCYXNl
KCkpLT5nZXRCYWNrcmVmKGV4ZWMsIDIpOworfQorCitKU1ZhbHVlKiByZWdFeHBDb25zdHJ1Y3Rv
ckRvbGxhcjMoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVy
dHlTbG90JiBzbG90KQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZWdFeHBDb25zdHJ1Y3Rv
cio+KHNsb3Quc2xvdEJhc2UoKSktPmdldEJhY2tyZWYoZXhlYywgMyk7Cit9CisKK0pTVmFsdWUq
IHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyNChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PFJlZ0V4cENvbnN0cnVjdG9yKj4oc2xvdC5zbG90QmFzZSgpKS0+Z2V0QmFja3JlZihleGVjLCA0
KTsKK30KKworSlNWYWx1ZSogcmVnRXhwQ29uc3RydWN0b3JEb2xsYXI1KEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPihzbG90LnNsb3RCYXNlKCkpLT5n
ZXRCYWNrcmVmKGV4ZWMsIDUpOworfQorCitKU1ZhbHVlKiByZWdFeHBDb25zdHJ1Y3RvckRvbGxh
cjYoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90
JiBzbG90KQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KHNs
b3Quc2xvdEJhc2UoKSktPmdldEJhY2tyZWYoZXhlYywgNik7Cit9CisKK0pTVmFsdWUqIHJlZ0V4
cENvbnN0cnVjdG9yRG9sbGFyNyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImLCBj
b25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlZ0V4
cENvbnN0cnVjdG9yKj4oc2xvdC5zbG90QmFzZSgpKS0+Z2V0QmFja3JlZihleGVjLCA3KTsKK30K
KworSlNWYWx1ZSogcmVnRXhwQ29uc3RydWN0b3JEb2xsYXI4KEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPihzbG90LnNsb3RCYXNlKCkpLT5nZXRCYWNr
cmVmKGV4ZWMsIDgpOworfQorCitKU1ZhbHVlKiByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjkoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90
KQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KHNsb3Quc2xv
dEJhc2UoKSktPmdldEJhY2tyZWYoZXhlYywgOSk7Cit9CisKK0pTVmFsdWUqIHJlZ0V4cENvbnN0
cnVjdG9ySW5wdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJv
cGVydHlTbG90JiBzbG90KQoreworICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBzdGF0aWNfY2Fz
dDxSZWdFeHBDb25zdHJ1Y3Rvcio+KHNsb3Quc2xvdEJhc2UoKSktPmlucHV0KCkpOworfQorCitK
U1ZhbHVlKiByZWdFeHBDb25zdHJ1Y3Rvck11bHRpbGluZShFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIHJldHVybiBqc0Jvb2xl
YW4oc3RhdGljX2Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPihzbG90LnNsb3RCYXNlKCkpLT5tdWx0
aWxpbmUoKSk7Cit9CisKK0pTVmFsdWUqIHJlZ0V4cENvbnN0cnVjdG9yTGFzdE1hdGNoKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCkK
K3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPihzbG90LnNsb3RC
YXNlKCkpLT5nZXRCYWNrcmVmKGV4ZWMsIDApOworfQorCitKU1ZhbHVlKiByZWdFeHBDb25zdHJ1
Y3Rvckxhc3RQYXJlbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQ
cm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlZ0V4cENvbnN0
cnVjdG9yKj4oc2xvdC5zbG90QmFzZSgpKS0+Z2V0TGFzdFBhcmVuKGV4ZWMpOworfQorCitKU1Zh
bHVlKiByZWdFeHBDb25zdHJ1Y3RvckxlZnRDb250ZXh0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPihzbG90LnNsb3RCYXNlKCkpLT5nZXRMZWZ0Q29u
dGV4dChleGVjKTsKK30KKworSlNWYWx1ZSogcmVnRXhwQ29uc3RydWN0b3JSaWdodENvbnRleHQo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90JiBz
bG90KQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KHNsb3Qu
c2xvdEJhc2UoKSktPmdldFJpZ2h0Q29udGV4dChleGVjKTsKIH0KIAogdm9pZCBSZWdFeHBDb25z
dHJ1Y3Rvcjo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlKiB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQpAQCAtMjQ3LDE4ICsz
MDYsMTQgQEAgdm9pZCBSZWdFeHBDb25zdHJ1Y3Rvcjo6cHV0KEV4ZWNTdGF0ZSogZQogICAgIGxv
b2t1cFB1dDxSZWdFeHBDb25zdHJ1Y3RvciwgSW50ZXJuYWxGdW5jdGlvbj4oZXhlYywgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgRXhlY1N0YXRlOjpyZWdFeHBDb25zdHJ1Y3RvclRhYmxlKGV4ZWMpLCB0
aGlzLCBzbG90KTsKIH0KIAotdm9pZCBSZWdFeHBDb25zdHJ1Y3Rvcjo6cHV0VmFsdWVQcm9wZXJ0
eShFeGVjU3RhdGUqIGV4ZWMsIGludCB0b2tlbiwgSlNWYWx1ZSogdmFsdWUpCit2b2lkIHNldFJl
Z0V4cENvbnN0cnVjdG9ySW5wdXQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZU9iamVj
dCwgSlNWYWx1ZSogdmFsdWUpCiB7Ci0gICAgc3dpdGNoICh0b2tlbikgewotICAgICAgICBjYXNl
IElucHV0OgotICAgICAgICAgICAgZC0+aW5wdXQgPSB2YWx1ZS0+dG9TdHJpbmcoZXhlYyk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNdWx0aWxpbmU6Ci0gICAgICAgICAgICBk
LT5tdWx0aWxpbmUgPSB2YWx1ZS0+dG9Cb29sZWFuKGV4ZWMpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICB9CisgICAgc3RhdGljX2Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPihiYXNlT2JqZWN0KS0+c2V0
SW5wdXQodmFsdWUtPnRvU3RyaW5nKGV4ZWMpKTsKK30KKwordm9pZCBzZXRSZWdFeHBDb25zdHJ1
Y3Rvck11bHRpbGluZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBKU1Zh
bHVlKiB2YWx1ZSkKK3sKKyAgICBzdGF0aWNfY2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KGJhc2VP
YmplY3QpLT5zZXRNdWx0aWxpbmUodmFsdWUtPnRvQm9vbGVhbihleGVjKSk7CiB9CiAgIAogLy8g
RUNNQSAxNS4xMC40CkBAIC0zMDUsNiArMzYwLDExIEBAIENhbGxUeXBlIFJlZ0V4cENvbnN0cnVj
dG9yOjpnZXRDYWxsRGF0YSgKICAgICByZXR1cm4gQ2FsbFR5cGVIb3N0OwogfQogCit2b2lkIFJl
Z0V4cENvbnN0cnVjdG9yOjpzZXRJbnB1dChjb25zdCBVU3RyaW5nJiBpbnB1dCkKK3sKKyAgICBk
LT5pbnB1dCA9IGlucHV0OworfQorCiBjb25zdCBVU3RyaW5nJiBSZWdFeHBDb25zdHJ1Y3Rvcjo6
aW5wdXQoKSBjb25zdAogewogICAgIC8vIENhbiBkZXRlY3QgYSBkaXN0aW5jdCBpbml0aWFsIHN0
YXRlIHRoYXQgaXMgaW52aXNpYmxlIHRvIEphdmFTY3JpcHQsIGJ5IGNoZWNraW5nIGZvciBudWxs
CkBAIC0zMTIsNCArMzcyLDE0IEBAIGNvbnN0IFVTdHJpbmcmIFJlZ0V4cENvbnN0cnVjdG9yOjpp
bnB1dCgKICAgICByZXR1cm4gZC0+aW5wdXQ7CiB9CiAKK3ZvaWQgUmVnRXhwQ29uc3RydWN0b3I6
OnNldE11bHRpbGluZShib29sIG11bHRpbGluZSkKK3sKKyAgICBkLT5tdWx0aWxpbmUgPSBtdWx0
aWxpbmU7Cit9CisKK2Jvb2wgUmVnRXhwQ29uc3RydWN0b3I6Om11bHRpbGluZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGQtPm11bHRpbGluZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4
OiBKYXZhU2NyaXB0Q29yZS9ranMvUmVnRXhwQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS9ranMvUmVnRXhwQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMzY4NzMpCisr
KyBKYXZhU2NyaXB0Q29yZS9ranMvUmVnRXhwQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpA
QCAtMzIsMzYgKzMyLDI2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUmVnRXhwQ29u
c3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiAgICAgcHVibGljOgotICAgICAg
ICBlbnVtIHsKLSAgICAgICAgICAgIERvbGxhcjEsCi0gICAgICAgICAgICBEb2xsYXIyLAotICAg
ICAgICAgICAgRG9sbGFyMywKLSAgICAgICAgICAgIERvbGxhcjQsCi0gICAgICAgICAgICBEb2xs
YXI1LAotICAgICAgICAgICAgRG9sbGFyNiwKLSAgICAgICAgICAgIERvbGxhcjcsCi0gICAgICAg
ICAgICBEb2xsYXI4LAotICAgICAgICAgICAgRG9sbGFyOSwKLSAgICAgICAgICAgIElucHV0LAot
ICAgICAgICAgICAgTXVsdGlsaW5lLAotICAgICAgICAgICAgTGFzdE1hdGNoLAotICAgICAgICAg
ICAgTGFzdFBhcmVuLAotICAgICAgICAgICAgTGVmdENvbnRleHQsCi0gICAgICAgICAgICBSaWdo
dENvbnRleHQKLSAgICAgICAgfTsKLQogICAgICAgICBSZWdFeHBDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUqLCBQYXNzUmVmUHRyPFN0cnVjdHVyZUlEPiwgUmVnRXhwUHJvdG90eXBlKik7CiAKICAgICAg
ICAgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUqLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgdm9pZCBwdXRWYWx1
ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGludCB0b2tlbiwgSlNWYWx1ZSopOwogICAgICAgICB2aXJ0
dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIEpTVmFsdWUqIGdldFZhbHVl
UHJvcGVydHkoRXhlY1N0YXRlKiwgaW50IHRva2VuKSBjb25zdDsKIAogICAgICAgICBzdGF0aWMg
Y29uc3QgQ2xhc3NJbmZvIGluZm87CiAKICAgICAgICAgdm9pZCBwZXJmb3JtTWF0Y2goUmVnRXhw
KiwgY29uc3QgVVN0cmluZyYsIGludCBzdGFydE9mZnNldCwgaW50JiBwb3NpdGlvbiwgaW50JiBs
ZW5ndGgsIGludCoqIG92ZWN0b3IgPSAwKTsKICAgICAgICAgSlNPYmplY3QqIGFycmF5T2ZNYXRj
aGVzKEV4ZWNTdGF0ZSopIGNvbnN0OwotICAgICAgICBjb25zdCBVU3RyaW5nJiBpbnB1dCgpIGNv
bnN0OworCisgICAgICAgICB2b2lkIHNldElucHV0KGNvbnN0IFVTdHJpbmcmKTsKKyAgICAgICAg
IGNvbnN0IFVTdHJpbmcmIGlucHV0KCkgY29uc3Q7CisKKyAgICAgICAgIHZvaWQgc2V0TXVsdGls
aW5lKGJvb2wpOworICAgICAgICAgYm9vbCBtdWx0aWxpbmUoKSBjb25zdDsKKworICAgICAgICAg
SlNWYWx1ZSogZ2V0QmFja3JlZihFeGVjU3RhdGUqLCB1bnNpZ25lZCkgY29uc3Q7CisgICAgICAg
ICBKU1ZhbHVlKiBnZXRMYXN0UGFyZW4oRXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAgICBKU1Zh
bHVlKiBnZXRMZWZ0Q29udGV4dChFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAgICAgIEpTVmFsdWUq
IGdldFJpZ2h0Q29udGV4dChFeGVjU3RhdGUqKSBjb25zdDsKIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIHZpcnR1YWwgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKENvbnN0cnVjdERhdGEm
KTsKQEAgLTY5LDExICs1OSw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZpcnR1YWwg
Y29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmaW5mbzsgfQogCi0g
ICAgICAgIEpTVmFsdWUqIGdldEJhY2tyZWYoRXhlY1N0YXRlKiwgdW5zaWduZWQpIGNvbnN0Owot
ICAgICAgICBKU1ZhbHVlKiBnZXRMYXN0UGFyZW4oRXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAg
IEpTVmFsdWUqIGdldExlZnRDb250ZXh0KEV4ZWNTdGF0ZSopIGNvbnN0OwotICAgICAgICBKU1Zh
bHVlKiBnZXRSaWdodENvbnRleHQoRXhlY1N0YXRlKikgY29uc3Q7Ci0KICAgICAgICAgT3duUHRy
PFJlZ0V4cENvbnN0cnVjdG9yUHJpdmF0ZT4gZDsKICAgICB9OwogCkluZGV4OiBKYXZhU2NyaXB0
Q29yZS9ranMvUmVnRXhwT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9r
anMvUmVnRXhwT2JqZWN0LmNwcAkocmV2aXNpb24gMzY4NzMpCisrKyBKYXZhU2NyaXB0Q29yZS9r
anMvUmVnRXhwT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAsNyArMjAsNiBAQAogCiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCi0jaW5jbHVkZSAi
UmVnRXhwT2JqZWN0Lmx1dC5oIgogCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpT
R2xvYmFsT2JqZWN0LmgiCkBAIC0zMCwxNyArMjksMzAgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAK
K3N0YXRpYyBKU1ZhbHVlKiByZWdFeHBPYmplY3RHbG9iYWwoRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOworc3RhdGljIEpTVmFsdWUqIHJlZ0V4cE9i
amVjdElnbm9yZUNhc2UoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3Bl
cnR5U2xvdCYpOworc3RhdGljIEpTVmFsdWUqIHJlZ0V4cE9iamVjdE11bHRpbGluZShFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jik7CitzdGF0aWMgSlNW
YWx1ZSogcmVnRXhwT2JqZWN0U291cmNlKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBj
b25zdCBQcm9wZXJ0eVNsb3QmKTsKK3N0YXRpYyBKU1ZhbHVlKiByZWdFeHBPYmplY3RMYXN0SW5k
ZXgoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOwor
c3RhdGljIHZvaWQgc2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4KEV4ZWNTdGF0ZSosIEpTT2JqZWN0
KiwgSlNWYWx1ZSopOworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2luY2x1ZGUgIlJlZ0V4cE9i
amVjdC5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NF
TEwoUmVnRXhwT2JqZWN0KTsKIAogY29uc3QgQ2xhc3NJbmZvIFJlZ0V4cE9iamVjdDo6aW5mbyA9
IHsgIlJlZ0V4cCIsIDAsIDAsIEV4ZWNTdGF0ZTo6cmVnRXhwVGFibGUgfTsKIAogLyogU291cmNl
IGZvciBSZWdFeHBPYmplY3QubHV0LmgKIEBiZWdpbiByZWdFeHBUYWJsZQotICAgIGdsb2JhbCAg
ICAgICAgUmVnRXhwT2JqZWN0OjpHbG9iYWwgICAgICAgRG9udERlbGV0ZXxSZWFkT25seXxEb250
RW51bQotICAgIGlnbm9yZUNhc2UgICAgUmVnRXhwT2JqZWN0OjpJZ25vcmVDYXNlICAgRG9udERl
bGV0ZXxSZWFkT25seXxEb250RW51bQotICAgIG11bHRpbGluZSAgICAgUmVnRXhwT2JqZWN0OjpN
dWx0aWxpbmUgICAgRG9udERlbGV0ZXxSZWFkT25seXxEb250RW51bQotICAgIHNvdXJjZSAgICAg
ICAgUmVnRXhwT2JqZWN0OjpTb3VyY2UgICAgICAgRG9udERlbGV0ZXxSZWFkT25seXxEb250RW51
bQotICAgIGxhc3RJbmRleCAgICAgUmVnRXhwT2JqZWN0OjpMYXN0SW5kZXggICAgRG9udERlbGV0
ZXxEb250RW51bQorICAgIGdsb2JhbCAgICAgICAgcmVnRXhwT2JqZWN0R2xvYmFsICAgICAgIERv
bnREZWxldGV8UmVhZE9ubHl8RG9udEVudW0KKyAgICBpZ25vcmVDYXNlICAgIHJlZ0V4cE9iamVj
dElnbm9yZUNhc2UgICBEb250RGVsZXRlfFJlYWRPbmx5fERvbnRFbnVtCisgICAgbXVsdGlsaW5l
ICAgICByZWdFeHBPYmplY3RNdWx0aWxpbmUgICAgRG9udERlbGV0ZXxSZWFkT25seXxEb250RW51
bQorICAgIHNvdXJjZSAgICAgICAgcmVnRXhwT2JqZWN0U291cmNlICAgICAgIERvbnREZWxldGV8
UmVhZE9ubHl8RG9udEVudW0KKyAgICBsYXN0SW5kZXggICAgIHJlZ0V4cE9iamVjdExhc3RJbmRl
eCAgICBEb250RGVsZXRlfERvbnRFbnVtCiBAZW5kCiAqLwogCkBAIC01OSwyMyArNzEsMjkgQEAg
Ym9vbCBSZWdFeHBPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChFeAogICAgIHJldHVybiBnZXRT
dGF0aWNWYWx1ZVNsb3Q8UmVnRXhwT2JqZWN0LCBKU09iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpy
ZWdFeHBUYWJsZShleGVjKSwgdGhpcywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotSlNWYWx1
ZSogUmVnRXhwT2JqZWN0OjpnZXRWYWx1ZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgaW50IHRv
a2VuKSBjb25zdAorSlNWYWx1ZSogcmVnRXhwT2JqZWN0R2xvYmFsKEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgc3dpdGNoICh0
b2tlbikgewotICAgICAgICBjYXNlIEdsb2JhbDoKLSAgICAgICAgICAgIHJldHVybiBqc0Jvb2xl
YW4oZC0+cmVnRXhwLT5nbG9iYWwoKSk7Ci0gICAgICAgIGNhc2UgSWdub3JlQ2FzZToKLSAgICAg
ICAgICAgIHJldHVybiBqc0Jvb2xlYW4oZC0+cmVnRXhwLT5pZ25vcmVDYXNlKCkpOwotICAgICAg
ICBjYXNlIE11bHRpbGluZToKLSAgICAgICAgICAgIHJldHVybiBqc0Jvb2xlYW4oZC0+cmVnRXhw
LT5tdWx0aWxpbmUoKSk7Ci0gICAgICAgIGNhc2UgU291cmNlOgotICAgICAgICAgICAgcmV0dXJu
IGpzU3RyaW5nKGV4ZWMsIGQtPnJlZ0V4cC0+cGF0dGVybigpKTsKLSAgICAgICAgY2FzZSBMYXN0
SW5kZXg6Ci0gICAgICAgICAgICByZXR1cm4ganNOdW1iZXIoZXhlYywgZC0+bGFzdEluZGV4KTsK
LSAgICB9Ci0gICAgCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIDA7Cisg
ICAgcmV0dXJuIGpzQm9vbGVhbihzdGF0aWNfY2FzdDxSZWdFeHBPYmplY3QqPihzbG90LnNsb3RC
YXNlKCkpLT5yZWdFeHAoKS0+Z2xvYmFsKCkpOworfQorCitKU1ZhbHVlKiByZWdFeHBPYmplY3RJ
Z25vcmVDYXNlKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNs
b3QmIHNsb3QpCit7CisgICAgcmV0dXJuIGpzQm9vbGVhbihzdGF0aWNfY2FzdDxSZWdFeHBPYmpl
Y3QqPihzbG90LnNsb3RCYXNlKCkpLT5yZWdFeHAoKS0+aWdub3JlQ2FzZSgpKTsKK30KKyAKK0pT
VmFsdWUqIHJlZ0V4cE9iamVjdE11bHRpbGluZShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVy
JiwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90KQoreyAgICAgICAgICAgIAorICAgIHJldHVybiBq
c0Jvb2xlYW4oc3RhdGljX2Nhc3Q8UmVnRXhwT2JqZWN0Kj4oc2xvdC5zbG90QmFzZSgpKS0+cmVn
RXhwKCktPm11bHRpbGluZSgpKTsKK30KKworSlNWYWx1ZSogcmVnRXhwT2JqZWN0U291cmNlKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xv
dCkKK3sKKyAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgc3RhdGljX2Nhc3Q8UmVnRXhwT2JqZWN0
Kj4oc2xvdC5zbG90QmFzZSgpKS0+cmVnRXhwKCktPnBhdHRlcm4oKSk7Cit9CisKK0pTVmFsdWUq
IHJlZ0V4cE9iamVjdExhc3RJbmRleChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMs
IHN0YXRpY19jYXN0PFJlZ0V4cE9iamVjdCo+KHNsb3Quc2xvdEJhc2UoKSktPmxhc3RJbmRleCgp
KTsKIH0KIAogdm9pZCBSZWdFeHBPYmplY3Q6OnB1dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSogdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYg
c2xvdCkKQEAgLTgzLDExICsxMDEsOSBAQCB2b2lkIFJlZ0V4cE9iamVjdDo6cHV0KEV4ZWNTdGF0
ZSogZXhlYywgCiAgICAgbG9va3VwUHV0PFJlZ0V4cE9iamVjdCwgSlNPYmplY3Q+KGV4ZWMsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIEV4ZWNTdGF0ZTo6cmVnRXhwVGFibGUoZXhlYyksIHRoaXMsIHNs
b3QpOwogfQogCi12b2lkIFJlZ0V4cE9iamVjdDo6cHV0VmFsdWVQcm9wZXJ0eShFeGVjU3RhdGUq
IGV4ZWMsIGludCB0b2tlbiwgSlNWYWx1ZSogdmFsdWUpCit2b2lkIHNldFJlZ0V4cE9iamVjdExh
c3RJbmRleChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBKU1ZhbHVlKiB2
YWx1ZSkKIHsKLSAgICBVTlVTRURfUEFSQU0odG9rZW4pOwotICAgIEFTU0VSVCh0b2tlbiA9PSBM
YXN0SW5kZXgpOwotICAgIGQtPmxhc3RJbmRleCA9IHZhbHVlLT50b0ludGVnZXIoZXhlYyk7Cisg
ICAgc3RhdGljX2Nhc3Q8UmVnRXhwT2JqZWN0Kj4oYmFzZU9iamVjdCktPnNldExhc3RJbmRleCh2
YWx1ZS0+dG9JbnRlZ2VyKGV4ZWMpKTsKIH0KIAogYm9vbCBSZWdFeHBPYmplY3Q6Om1hdGNoKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L2tqcy9SZWdFeHBPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvUmVn
RXhwT2JqZWN0LmgJKHJldmlzaW9uIDM2ODczKQorKysgSmF2YVNjcmlwdENvcmUva2pzL1JlZ0V4
cE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw0MyArMjgsNDAgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBjbGFzcyBSZWdFeHBPYmplY3QgOiBwdWJsaWMgSlNPYmplY3QgewogICAgIHB1
YmxpYzoKLSAgICAgICAgZW51bSB7IEdsb2JhbCwgSWdub3JlQ2FzZSwgTXVsdGlsaW5lLCBTb3Vy
Y2UsIExhc3RJbmRleCB9OwotCiAgICAgICAgIFJlZ0V4cE9iamVjdChQYXNzUmVmUHRyPFN0cnVj
dHVyZUlEPiwgUGFzc1JlZlB0cjxSZWdFeHA+KTsKICAgICAgICAgdmlydHVhbCB+UmVnRXhwT2Jq
ZWN0KCk7CiAKICAgICAgICAgdm9pZCBzZXRSZWdFeHAoUGFzc1JlZlB0cjxSZWdFeHA+IHIpIHsg
ZC0+cmVnRXhwID0gcjsgfQogICAgICAgICBSZWdFeHAqIHJlZ0V4cCgpIGNvbnN0IHsgcmV0dXJu
IGQtPnJlZ0V4cC5nZXQoKTsgfQogCisgICAgICAgIHZvaWQgc2V0TGFzdEluZGV4KGRvdWJsZSBs
YXN0SW5kZXgpIHsgZC0+bGFzdEluZGV4ID0gbGFzdEluZGV4OyB9CisgICAgICAgIGRvdWJsZSBs
YXN0SW5kZXgoKSBjb25zdCB7IHJldHVybiBkLT5sYXN0SW5kZXg7IH0KKwogICAgICAgICBKU1Zh
bHVlKiB0ZXN0KEV4ZWNTdGF0ZSosIGNvbnN0IEFyZ0xpc3QmKTsKICAgICAgICAgSlNWYWx1ZSog
ZXhlYyhFeGVjU3RhdGUqLCBjb25zdCBBcmdMaXN0Jik7CiAKLSAgICAgICAgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgSlNWYWx1ZSogZ2V0VmFsdWVQcm9wZXJ0eShFeGVjU3Rh
dGUqLCBpbnQgdG9rZW4pIGNvbnN0OwotICAgICAgICB2b2lkIHB1dChFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUqLCBQdXRQcm9wZXJ0eVNsb3QmKTsK
LSAgICAgICAgdm9pZCBwdXRWYWx1ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGludCB0b2tlbiwgSlNW
YWx1ZSopOworICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlKiwgUHV0UHJvcGVydHlTbG90Jik7CiAKICAgICAgICAgdmlydHVhbCBj
b25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZpbmZvOyB9CiAgICAg
ICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gaW5mbzsKIAotICAgICAgICB2b2lkIHNldExhc3RJ
bmRleChkb3VibGUgbGFzdEluZGV4KSB7IGQtPmxhc3RJbmRleCA9IGxhc3RJbmRleDsgfQotCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBtYXRjaChFeGVjU3RhdGUqLCBjb25zdCBBcmdMaXN0
Jik7CiAKICAgICAgICAgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YShDYWxsRGF0YSYpOwot
ICAgICAgICAKKwogICAgICAgICBzdHJ1Y3QgUmVnRXhwT2JqZWN0RGF0YSB7Ci0gICAgICAgICAg
ICBSZWdFeHBPYmplY3REYXRhKFBhc3NSZWZQdHI8UmVnRXhwPiByZWdFeHBfLCBkb3VibGUgbGFz
dEluZGV4XykKLSAgICAgICAgICAgICAgICA6IHJlZ0V4cChyZWdFeHBfKQotICAgICAgICAgICAg
ICAgICwgbGFzdEluZGV4KGxhc3RJbmRleF8pCisgICAgICAgICAgICBSZWdFeHBPYmplY3REYXRh
KFBhc3NSZWZQdHI8UmVnRXhwPiByZWdFeHAsIGRvdWJsZSBsYXN0SW5kZXgpCisgICAgICAgICAg
ICAgICAgOiByZWdFeHAocmVnRXhwKQorICAgICAgICAgICAgICAgICwgbGFzdEluZGV4KGxhc3RJ
bmRleCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgUmVmUHRy
PFJlZ0V4cD4gcmVnRXhwOwogICAgICAgICAgICAgZG91YmxlIGxhc3RJbmRleDsKICAgICAgICAg
fTsKLSAgICAgICAgCisKICAgICAgICAgT3duUHRyPFJlZ0V4cE9iamVjdERhdGE+IGQ7CiAgICAg
fTsKIApJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL1N0cnVjdHVyZUlELmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvU3RydWN0dXJlSUQuY3BwCShyZXZpc2lvbiAzNjg3MykK
KysrIEphdmFTY3JpcHRDb3JlL2tqcy9TdHJ1Y3R1cmVJRC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTcyLDggKzcyLDggQEAgdm9pZCBTdHJ1Y3R1cmVJRDo6Z2V0RW51bWVyYWJsZVByb3BlcnR5Tgog
ICAgICAgICBpbnQgaGFzaFNpemVNYXNrID0gdGFibGUtPmhhc2hTaXplTWFzazsKICAgICAgICAg
Y29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IHRhYmxlLT50YWJsZTsKICAgICAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPD0gaGFzaFNpemVNYXNrOyArK2ksICsrZW50cnkpIHsKLSAgICAgICAgICAgIGlm
IChlbnRyeS0+a2V5ICYmICEoZW50cnktPmF0dHJpYnV0ZXMgJiBEb250RW51bSkpCi0gICAgICAg
ICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZW50cnktPmtleSk7CisgICAgICAgICAgICBpZiAo
ZW50cnktPmtleSgpICYmICEoZW50cnktPmF0dHJpYnV0ZXMoKSAmIERvbnRFbnVtKSkKKyAgICAg
ICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChlbnRyeS0+a2V5KCkpOwogICAgICAgICB9CiAg
ICAgfQogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvY3JlYXRlX2hhc2hfdGFibGUKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL2NyZWF0ZV9oYXNoX3RhYmxlCShyZXZpc2lvbiAz
Njg3MykKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9jcmVhdGVfaGFzaF90YWJsZQkod29ya2luZyBj
b3B5KQpAQCAtNDAsOSArNDAsOCBAQCBwcmludCBTVERFUlIgIkNyZWF0aW5nIGhhc2h0YWJsZSBm
b3IgJGZpCiBvcGVuKElOLCAkZmlsZSkgb3IgZGllICJObyBzdWNoIGZpbGUgJGZpbGUiOwogCiBt
eSBAa2V5cyA9ICgpOwotbXkgQHZhbHVlcyA9ICgpOwogbXkgQGF0dHJzID0gKCk7Ci1teSBAcGFy
YW1zID0gKCk7CitteSBAdmFsdWVzID0gKCk7CiBteSBAaGFzaGVzID0gKCk7CiAKIG15ICRpbnNp
ZGUgPSAwOwpAQCAtNTEsNiArNTAsNyBAQCBteSAkc2l6ZTsKIG15ICRiYW5uZXIgPSAwOwogc3Vi
IGNhbGNTaXplKCk7CiBzdWIgb3V0cHV0KCk7CitzdWIganNjX3VjZmlyc3QoJCk7CiBzdWIgaGFz
aFZhbHVlKCQpOwogCiB3aGlsZSAoPElOPikgewpAQCAtNjksOSArNjksOCBAQCB3aGlsZSAoPElO
PikgewogICAgICAgICBvdXRwdXQoKTsKIAogICAgICAgICBAa2V5cyA9ICgpOwotICAgICAgICBA
dmFsdWVzID0gKCk7CiAgICAgICAgIEBhdHRycyA9ICgpOwotICAgICAgICBAcGFyYW1zID0gKCk7
CisgICAgICAgIEB2YWx1ZXMgPSAoKTsKICAgICAgICAgQGhhc2hlcyA9ICgpOwogCiAgICAgICAg
ICRpbnNpZGUgPSAwOwpAQCAtODAsMTIgKzc5LDIxIEBAIHdoaWxlICg8SU4+KSB7CiAgICAgICAg
IG15ICR2YWwgPSAkMjsKICAgICAgICAgbXkgJGF0dCA9ICQzOwogICAgICAgICBteSAkcGFyYW0g
PSAkNDsKKwogICAgICAgICBwdXNoKEBrZXlzLCAka2V5KTsKLSAgICAgICAgcHVzaChAdmFsdWVz
LCAkdmFsKTsKLSAgICAgICAgcHVzaChAaGFzaGVzLCBoYXNoVmFsdWUoJGtleSkpOwotICAgICAg
ICBwcmludGYgU1RERVJSICJXQVJOSU5HOiBOdW1iZXIgb2YgYXJndW1lbnRzIG1pc3NpbmcgZm9y
ICRrZXkvJHZhbFxuIiBpZiAoJGF0dCA9fiBtL0Z1bmN0aW9uLyAmJiBsZW5ndGgoJHBhcmFtKSA9
PSAwKTsKICAgICAgICAgcHVzaChAYXR0cnMsIGxlbmd0aCgkYXR0KSA+IDAgPyAkYXR0IDogIjAi
KTsKLSAgICAgICAgcHVzaChAcGFyYW1zLCBsZW5ndGgoJHBhcmFtKSA+IDAgPyAkcGFyYW0gOiAi
MCIpOworCisgICAgICAgIGlmICgkYXR0ID1+IG0vRnVuY3Rpb24vKSB7CisgICAgICAgICAgICBw
dXNoKEB2YWx1ZXMsIHsgInR5cGUiID0+ICJGdW5jdGlvbiIsICJmdW5jdGlvbiIgPT4gJHZhbCwg
InBhcmFtcyIgPT4gKGxlbmd0aCgkcGFyYW0pID8gJHBhcmFtIDogIiIpIH0pOworICAgICAgICAg
ICAgI3ByaW50ZiBTVERFUlIgIldBUk5JTkc6IE51bWJlciBvZiBhcmd1bWVudHMgbWlzc2luZyBm
b3IgJGtleS8kdmFsXG4iIGlmIChsZW5ndGgoJHBhcmFtKSA9PSAwKTsKKyAgICAgICAgfSBlbHNp
ZiAobGVuZ3RoKCRhdHQpKSB7CisgICAgICAgICAgICBteSAkZ2V0ID0gJHZhbDsKKyAgICAgICAg
ICAgIG15ICRwdXQgPSAhKCRhdHQgPX4gbS9SZWFkT25seS8pID8gInNldCIgLiBqc2NfdWNmaXJz
dCgkdmFsKSA6ICIwIjsKKyAgICAgICAgICAgIHB1c2goQHZhbHVlcywgeyAidHlwZSIgPT4gIlBy
b3BlcnR5IiwgImdldCIgPT4gJGdldCwgInB1dCIgPT4gJHB1dCB9KTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIHB1c2goQHZhbHVlcywgeyAidHlwZSIgPT4gIkxleGVyIiwgInZhbHVl
IiA9PiAkdmFsIH0pOyAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAgcHVzaChAaGFzaGVzLCBo
YXNoVmFsdWUoJGtleSkpOwogICAgIH0gZWxzaWYgKCRpbnNpZGUpIHsKICAgICAgICAgZGllICJp
bnZhbGlkIGRhdGEgeyIgLiAkXyAuICJ9IjsKICAgICB9CkBAIC05Myw2ICsxMDEsMTkgQEAgd2hp
bGUgKDxJTj4pIHsKIAogZGllICJtaXNzaW5nIGNsb3NpbmcgXEBlbmQiIGlmICgkaW5zaWRlKTsK
IAorc3ViIGpzY191Y2ZpcnN0KCQpCit7CisgICAgbXkgKCR2YWx1ZSkgPSBAXzsKKworICAgIGlm
ICgkdmFsdWUgPX4gL2pzLykgeworICAgICAgICAkdmFsdWUgPX4gcy9qcy9KUy87CisgICAgICAg
IHJldHVybiAkdmFsdWU7CisgICAgfQorCisgICAgcmV0dXJuIHVjZmlyc3QoJHZhbHVlKTsKK30K
KworCiBzdWIgY2VpbGluZ1RvUG93ZXJPZjIKIHsKICAgICBteSAoJHNpemUpID0gQF87CkBAIC0x
ODgsOCArMjA5LDggQEAgc3ViIG91dHB1dCgpIHsKIAogICAgIHByaW50ICJcbiNpbmNsdWRlIFwi
bG9va3VwLmhcIlxuIiBpZiAoJGluY2x1ZGVsb29rdXApOwogICAgIGlmICgkdXNlTmFtZVNwYWNl
KSB7Ci0gICAgICAgIHByaW50ICJcbm5hbWVzcGFjZSAke3VzZU5hbWVTcGFjZX1cbntcbiI7Ci0g
ICAgICAgIHByaW50ICJcbnVzaW5nIG5hbWVzcGFjZSBKU0M7IjsKKyAgICAgICAgcHJpbnQgIlxu
bmFtZXNwYWNlICR7dXNlTmFtZVNwYWNlfSB7XG4iOworICAgICAgICBwcmludCAiXG51c2luZyBu
YW1lc3BhY2UgSlNDO1xuIjsKICAgICB9IGVsc2UgewogICAgICAgICBwcmludCAiXG5uYW1lc3Bh
Y2UgSlNDIHtcbiI7CiAgICAgfQpAQCAtMTk3LDcgKzIxOCwyMCBAQCBzdWIgb3V0cHV0KCkgewog
ICAgIHByaW50ICJcbnN0YXRpYyBjb25zdCBzdHJ1Y3QgSGFzaFRhYmxlVmFsdWUgJHtuYW1lRW50
cmllc31bJGNvdW50XSA9IHtcbiI7CiAgICAgbXkgJGkgPSAwOwogICAgIGZvcmVhY2ggbXkgJGtl
eSAoQGtleXMpIHsKLSAgICAgICAgcHJpbnQgIiAgIHsgXCIka2V5XCIsIChpbnRwdHJfdCkkdmFs
dWVzWyRpXSwgJGF0dHJzWyRpXSwgJHBhcmFtc1skaV0gfSxcbiI7CisgICAgICAgIG15ICRmaXJz
dFZhbHVlID0gIiI7CisgICAgICAgIG15ICRzZWNvbmRWYWx1ZSA9ICIiOworCisgICAgICAgIGlm
ICgkdmFsdWVzWyRpXXsidHlwZSJ9IGVxICJGdW5jdGlvbiIpIHsKKyAgICAgICAgICAgICRmaXJz
dFZhbHVlID0gJHZhbHVlc1skaV17ImZ1bmN0aW9uIn07CisgICAgICAgICAgICAkc2Vjb25kVmFs
dWUgPSAkdmFsdWVzWyRpXXsicGFyYW1zIn07CisgICAgICAgIH0gZWxzaWYgKCR2YWx1ZXNbJGld
eyJ0eXBlIn0gZXEgIlByb3BlcnR5IikgeworICAgICAgICAgICAgJGZpcnN0VmFsdWUgPSAkdmFs
dWVzWyRpXXsiZ2V0In07CisgICAgICAgICAgICAkc2Vjb25kVmFsdWUgPSAkdmFsdWVzWyRpXXsi
cHV0In07CisgICAgICAgIH0gZWxzaWYgKCR2YWx1ZXNbJGldeyJ0eXBlIn0gZXEgIkxleGVyIikg
eworICAgICAgICAgICAgJGZpcnN0VmFsdWUgPSAkdmFsdWVzWyRpXXsidmFsdWUifTsKKyAgICAg
ICAgICAgICRzZWNvbmRWYWx1ZSA9ICIwIjsKKyAgICAgICAgfQorICAgICAgICBwcmludCAiICAg
eyBcIiRrZXlcIiwgJGF0dHJzWyRpXSwgKGludHB0cl90KSRmaXJzdFZhbHVlLCAoaW50cHRyX3Qp
JHNlY29uZFZhbHVlIH0sXG4iOwogICAgICAgICAkaSsrOwogICAgIH0KICAgICBwcmludCAiICAg
eyAwLCAwLCAwLCAwIH1cbiI7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvbGV4ZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9sZXhlci5jcHAJKHJldmlzaW9uIDM2ODcz
KQorKysgSmF2YVNjcmlwdENvcmUva2pzL2xleGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTU5
LDcgKzU1OSw3IEBAIGludCBMZXhlcjo6bGV4KHZvaWQqIHAxLCB2b2lkKiBwMikKICAgICAgICAg
ICAgICAgICB0b2tlbiA9IElERU5UOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgdG9rZW4gPSBlbnRyeS0+aW50ZWdlclZhbHVlOworICAgICAgICAg
ICAgdG9rZW4gPSBlbnRyeS0+bGV4ZXJWYWx1ZSgpOwogICAgICAgICAgICAgLy8gSGFjayBmb3Ig
ImYgPSBmdW5jdGlvbiBzb21lbmFtZSgpIHsgLi4uIH0iOyB0b28gaGFyZCB0byBnZXQgaW50byB0
aGUgZ3JhbW1hci4KICAgICAgICAgICAgIG1fZWF0TmV4dElkZW50aWZpZXIgPSB0b2tlbiA9PSBG
VU5DVElPTiAmJiBtX2xhc3RUb2tlbiA9PSAnPSc7CiAgICAgICAgICAgICBpZiAodG9rZW4gPT0g
Q09OVElOVUUgfHwgdG9rZW4gPT0gQlJFQUsgfHwgdG9rZW4gPT0gUkVUVVJOIHx8IHRva2VuID09
IFRIUk9XKQpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL2xvb2t1cC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUva2pzL2xvb2t1cC5jcHAJKHJldmlzaW9uIDM2ODc3KQorKysgSmF2
YVNjcmlwdENvcmUva2pzL2xvb2t1cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDE1ICsyOSwx
MiBAQCB2b2lkIEhhc2hUYWJsZTo6Y3JlYXRlVGFibGUoSlNHbG9iYWxEYXRhCiAgICAgQVNTRVJU
KCF0YWJsZSk7CiAgICAgSGFzaEVudHJ5KiBlbnRyaWVzID0gbmV3IEhhc2hFbnRyeVtoYXNoU2l6
ZU1hc2sgKyAxXTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8PSBoYXNoU2l6ZU1hc2s7ICsraSkK
LSAgICAgICAgZW50cmllc1tpXS5rZXkgPSAwOworICAgICAgICBlbnRyaWVzW2ldLnNldEtleSgw
KTsKICAgICBmb3IgKGludCBpID0gMDsgdmFsdWVzW2ldLmtleTsgKytpKSB7CiAgICAgICAgIFVT
dHJpbmc6OlJlcCogaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmFkZChnbG9iYWxEYXRhLCB2YWx1
ZXNbaV0ua2V5KS5yZWxlYXNlUmVmKCk7CiAgICAgICAgIGludCBoYXNoSW5kZXggPSBpZGVudGlm
aWVyLT5jb21wdXRlZEhhc2goKSAmIGhhc2hTaXplTWFzazsKLSAgICAgICAgQVNTRVJUKCFlbnRy
aWVzW2hhc2hJbmRleF0ua2V5KTsKLSAgICAgICAgZW50cmllc1toYXNoSW5kZXhdLmtleSA9IGlk
ZW50aWZpZXI7Ci0gICAgICAgIGVudHJpZXNbaGFzaEluZGV4XS5pbnRlZ2VyVmFsdWUgPSB2YWx1
ZXNbaV0udmFsdWU7Ci0gICAgICAgIGVudHJpZXNbaGFzaEluZGV4XS5hdHRyaWJ1dGVzID0gdmFs
dWVzW2ldLmF0dHJpYnV0ZXM7Ci0gICAgICAgIGVudHJpZXNbaGFzaEluZGV4XS5sZW5ndGggPSB2
YWx1ZXNbaV0ubGVuZ3RoOworICAgICAgICBBU1NFUlQoIWVudHJpZXNbaGFzaEluZGV4XS5rZXko
KSk7CisgICAgICAgIGVudHJpZXNbaGFzaEluZGV4XS5pbml0aWFsaXplKGlkZW50aWZpZXIsIHZh
bHVlc1tpXS5hdHRyaWJ1dGVzLCB2YWx1ZXNbaV0udmFsdWUxLCB2YWx1ZXNbaV0udmFsdWUyKTsK
ICAgICB9CiAgICAgdGFibGUgPSBlbnRyaWVzOwogfQpAQCAtNDYsMjUgKzQzLDI1IEBAIHZvaWQg
SGFzaFRhYmxlOjpkZWxldGVUYWJsZSgpIGNvbnN0CiB7CiAgICAgaWYgKHRhYmxlKSB7CiAgICAg
ICAgIGZvciAoaW50IGkgPSAwOyBpICE9IGhhc2hTaXplTWFzayArIDE7ICsraSkgewotICAgICAg
ICAgICAgaWYgKFVTdHJpbmc6OlJlcCoga2V5ID0gdGFibGVbaV0ua2V5KQorICAgICAgICAgICAg
aWYgKFVTdHJpbmc6OlJlcCoga2V5ID0gdGFibGVbaV0ua2V5KCkpCiAgICAgICAgICAgICAgICAg
a2V5LT5kZXJlZigpOwogICAgICAgICB9Ci0gICAgICAgIGRlbGV0ZVtdIHRhYmxlOworICAgICAg
ICBkZWxldGUgW10gdGFibGU7CiAgICAgICAgIHRhYmxlID0gMDsKICAgICB9CiB9CiAKIHZvaWQg
c2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoRW50cnkq
IGVudHJ5LCBKU09iamVjdCogdGhpc09iaiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgQVNTRVJUKGVudHJ5LT5hdHRyaWJ1dGVzICYg
RnVuY3Rpb24pOworICAgIEFTU0VSVChlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pOwog
ICAgIEpTVmFsdWUqKiBsb2NhdGlvbiA9IHRoaXNPYmotPmdldERpcmVjdExvY2F0aW9uKHByb3Bl
cnR5TmFtZSk7Ci0gCisKICAgICBpZiAoIWxvY2F0aW9uKSB7Ci0gICAgICAgIFByb3RvdHlwZUZ1
bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoZXhlYykgUHJvdG90eXBlRnVuY3Rpb24oZXhlYywgZW50
cnktPmxlbmd0aCwgcHJvcGVydHlOYW1lLCBlbnRyeS0+ZnVuY3Rpb25WYWx1ZSk7Ci0gICAgICAg
IHRoaXNPYmotPnB1dERpcmVjdChwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBlbnRyeS0+YXR0cmli
dXRlcyk7CisgICAgICAgIFByb3RvdHlwZUZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoZXhlYykg
UHJvdG90eXBlRnVuY3Rpb24oZXhlYywgZW50cnktPmZ1bmN0aW9uTGVuZ3RoKCksIHByb3BlcnR5
TmFtZSwgZW50cnktPmZ1bmN0aW9uKCkpOworICAgICAgICB0aGlzT2JqLT5wdXREaXJlY3QocHJv
cGVydHlOYW1lLCBmdW5jdGlvbiwgZW50cnktPmF0dHJpYnV0ZXMoKSk7CiAgICAgICAgIGxvY2F0
aW9uID0gdGhpc09iai0+Z2V0RGlyZWN0TG9jYXRpb24ocHJvcGVydHlOYW1lKTsKICAgICB9Ci0g
ICAgCisKICAgICBzbG90LnNldFZhbHVlU2xvdCh0aGlzT2JqLCBsb2NhdGlvbiwgdGhpc09iai0+
b2Zmc2V0Rm9yTG9jYXRpb24obG9jYXRpb24pKTsKIH0KIApJbmRleDogSmF2YVNjcmlwdENvcmUv
a2pzL2xvb2t1cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9sb29rdXAuaAko
cmV2aXNpb24gMzY4NzcpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvbG9va3VwLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIlBy
b3BlcnR5U2xvdC5oIgogI2luY2x1ZGUgImlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxzdGRpby5o
PgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CkBAIC0zMiwyMiArMzMsNjMgQEAKIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgLy8gSGFzaCB0YWJsZSBnZW5lcmF0ZWQgYnkgdGhlIGNyZWF0ZV9o
YXNoX3RhYmxlIHNjcmlwdC4KLQogICAgIHN0cnVjdCBIYXNoVGFibGVWYWx1ZSB7CiAgICAgICAg
IGNvbnN0IGNoYXIqIGtleTsgLy8gcHJvcGVydHkgbmFtZQotICAgICAgICBpbnRwdHJfdCB2YWx1
ZTsgLy8gaW50ZWdlciBvciBmdW5jdGlvbgogICAgICAgICB1bnNpZ25lZCBjaGFyIGF0dHJpYnV0
ZXM7IC8vIEpTT2JqZWN0IGF0dHJpYnV0ZXMKLSAgICAgICAgdW5zaWduZWQgY2hhciBsZW5ndGg7
IC8vIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIGZ1bmN0aW9uCisgICAgICAgIGludHB0cl90IHZh
bHVlMTsKKyAgICAgICAgaW50cHRyX3QgdmFsdWUyOwogICAgIH07CiAKLSAgICBzdHJ1Y3QgSGFz
aEVudHJ5IHsKLSAgICAgICAgVVN0cmluZzo6UmVwKiBrZXk7CisgICAgLy8gRklYTUU6IG90aGVy
IHRoYW4gc2hhcmluZyBjb2RlLCB0aGVyZSBpcyBubyByZWFzb24gdGhpcyBnZXQgZnVuY3Rpb24g
Y2FuJ3QgYmUgc2ltcGxlci4KKyAgICAvLyBpZS4gdHlwZWRlZiBKU1ZhbHVlKiAoKkdldEZ1bmN0
aW9uKShFeGVjU3RhdGUqLCBKU09iamVjdCogYmFzZU9iamVjdCkKKyAgICB0eXBlZGVmIFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jIEdldEZ1bmN0aW9uOworICAgIHR5cGVkZWYgdm9pZCAoKlB1
dEZ1bmN0aW9uKShFeGVjU3RhdGUqLCBKU09iamVjdCogYmFzZU9iamVjdCwgSlNWYWx1ZSogdmFs
dWUpOworCisgICAgY2xhc3MgSGFzaEVudHJ5IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZvaWQg
aW5pdGlhbGl6ZShVU3RyaW5nOjpSZXAqIGtleSwgdW5zaWduZWQgY2hhciBhdHRyaWJ1dGVzLCBp
bnRwdHJfdCB2MSwgaW50cHRyX3QgdjIpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fa2V5ID0g
a2V5OworICAgICAgICAgICAgbV9hdHRyaWJ1dGVzID0gYXR0cmlidXRlczsKKyAgICAgICAgICAg
IG1fdS5zdG9yZS52YWx1ZTEgPSB2MTsKKyAgICAgICAgICAgIG1fdS5zdG9yZS52YWx1ZTIgPSB2
MjsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgc2V0S2V5KFVTdHJpbmc6OlJlcCoga2V5KSB7
IG1fa2V5ID0ga2V5OyB9CisgICAgICAgIFVTdHJpbmc6OlJlcCoga2V5KCkgY29uc3QgeyByZXR1
cm4gbV9rZXk7IH0KKworICAgICAgICB1bnNpZ25lZCBjaGFyIGF0dHJpYnV0ZXMoKSBjb25zdCB7
IHJldHVybiBtX2F0dHJpYnV0ZXM7IH0KKworICAgICAgICBOYXRpdmVGdW5jdGlvbiBmdW5jdGlv
bigpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9uKTsgcmV0dXJuIG1fdS5m
dW5jdGlvbi5mdW5jdGlvblZhbHVlOyB9CisgICAgICAgIHVuc2lnbmVkIGNoYXIgZnVuY3Rpb25M
ZW5ndGgoKSBjb25zdCB7IEFTU0VSVChtX2F0dHJpYnV0ZXMgJiBGdW5jdGlvbik7IHJldHVybiBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihtX3UuZnVuY3Rpb24ubGVuZ3RoKTsgfQorCisgICAg
ICAgIEdldEZ1bmN0aW9uIHByb3BlcnR5R2V0dGVyKCkgY29uc3QgeyBBU1NFUlQoIShtX2F0dHJp
YnV0ZXMgJiBGdW5jdGlvbikpOyByZXR1cm4gbV91LnByb3BlcnR5LmdldDsgfQorICAgICAgICBQ
dXRGdW5jdGlvbiBwcm9wZXJ0eVB1dHRlcigpIGNvbnN0IHsgQVNTRVJUKCEobV9hdHRyaWJ1dGVz
ICYgRnVuY3Rpb24pKTsgcmV0dXJuIG1fdS5wcm9wZXJ0eS5wdXQ7IH0KKworICAgICAgICBpbnRw
dHJfdCBsZXhlclZhbHVlKCkgY29uc3QgeyBBU1NFUlQoIW1fYXR0cmlidXRlcyk7IHJldHVybiBt
X3UubGV4ZXIudmFsdWU7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIFVTdHJpbmc6OlJlcCog
bV9rZXk7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgbV9hdHRyaWJ1dGVzOyAvLyBKU09iamVjdCBh
dHRyaWJ1dGVzCisKICAgICAgICAgdW5pb24gewotICAgICAgICAgICAgaW50cHRyX3QgaW50ZWdl
clZhbHVlOwotICAgICAgICAgICAgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb25WYWx1ZTsKLSAgICAg
ICAgfTsKLSAgICAgICAgdW5zaWduZWQgY2hhciBhdHRyaWJ1dGVzOyAvLyBKU09iamVjdCBhdHRy
aWJ1dGVzCi0gICAgICAgIHVuc2lnbmVkIGNoYXIgbGVuZ3RoOyAvLyBudW1iZXIgb2YgYXJndW1l
bnRzIGZvciBmdW5jdGlvbgorICAgICAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgICAgICBp
bnRwdHJfdCB2YWx1ZTE7CisgICAgICAgICAgICAgICAgaW50cHRyX3QgdmFsdWUyOworICAgICAg
ICAgICAgfSBzdG9yZTsKKyAgICAgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICAgICAgTmF0
aXZlRnVuY3Rpb24gZnVuY3Rpb25WYWx1ZTsKKyAgICAgICAgICAgICAgICBpbnRwdHJfdCBsZW5n
dGg7IC8vIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIGZ1bmN0aW9uCisgICAgICAgICAgICB9IGZ1
bmN0aW9uOworICAgICAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgICAgICBHZXRGdW5jdGlv
biBnZXQ7CisgICAgICAgICAgICAgICAgUHV0RnVuY3Rpb24gcHV0OworICAgICAgICAgICAgfSBw
cm9wZXJ0eTsKKyAgICAgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICAgICAgaW50cHRyX3Qg
dmFsdWU7CisgICAgICAgICAgICAgICAgaW50cHRyX3QgdW51c2VkOworICAgICAgICAgICAgfSBs
ZXhlcjsKKyAgICAgICAgfSBtX3U7CiAgICAgfTsKIAogICAgIHN0cnVjdCBIYXNoVGFibGUgewpA
QCAtODcsNyArMTI5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAg
IEFTU0VSVCh0YWJsZSk7CiAgICAgICAgICAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0gJnRh
YmxlW2lkZW50aWZpZXIudXN0cmluZygpLnJlcCgpLT5jb21wdXRlZEhhc2goKSAmIGhhc2hTaXpl
TWFza107Ci0gICAgICAgICAgICBpZiAoZW50cnktPmtleSAhPSBpZGVudGlmaWVyLnVzdHJpbmco
KS5yZXAoKSkKKyAgICAgICAgICAgIGlmIChlbnRyeS0+a2V5KCkgIT0gaWRlbnRpZmllci51c3Ry
aW5nKCkucmVwKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICByZXR1
cm4gZW50cnk7CiAgICAgICAgIH0KQEAgLTk5LDM2ICsxNDEsMTAgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgdm9pZCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUqLCBjb25zdCBIYXNo
RW50cnkqLCBKU09iamVjdCogdGhpc09iamVjdCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKIAogICAgIC8qKgotICAgICAqIEBpbnRlcm5hbAotICAgICAq
IEhlbHBlciBmb3IgZ2V0U3RhdGljVmFsdWVTbG90IGFuZCBnZXRTdGF0aWNQcm9wZXJ0eVNsb3QK
LSAgICAgKi8KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVGhpc0ltcD4KLSAgICBKU1ZhbHVlKiBzdGF0
aWNWYWx1ZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQ
cm9wZXJ0eVNsb3QmIHNsb3QpCi0gICAgewotICAgICAgICBUaGlzSW1wKiB0aGlzT2JqID0gc3Rh
dGljX2Nhc3Q8VGhpc0ltcCo+KHNsb3Quc2xvdEJhc2UoKSk7Ci0gICAgICAgIGNvbnN0IEhhc2hF
bnRyeSogZW50cnkgPSBzbG90LnN0YXRpY0VudHJ5KCk7Ci0gICAgICAgIHJldHVybiB0aGlzT2Jq
LT5nZXRWYWx1ZVByb3BlcnR5KGV4ZWMsIGVudHJ5LT5pbnRlZ2VyVmFsdWUpOwotICAgIH0KLQot
ICAgIC8qKgotICAgICAqIEhlbHBlciBtZXRob2QgZm9yIHByb3BlcnR5IGxvb2t1cHMKLSAgICAg
KgogICAgICAqIFRoaXMgbWV0aG9kIGRvZXMgaXQgYWxsIChsb29raW5nIGluIHRoZSBoYXNodGFi
bGUsIGNoZWNraW5nIGZvciBmdW5jdGlvbgogICAgICAqIG92ZXJyaWRlcywgY3JlYXRpbmcgdGhl
IGZ1bmN0aW9uIG9yIHJldHJpZXZpbmcgZnJvbSBjYWNoZSwgY2FsbGluZwogICAgICAqIGdldFZh
bHVlUHJvcGVydHkgaW4gY2FzZSBvZiBhIG5vbi1mdW5jdGlvbiBwcm9wZXJ0eSwgZm9yd2FyZGlu
ZyB0byBwYXJlbnQgaWYKICAgICAgKiB1bmtub3duIHByb3BlcnR5KS4KLSAgICAgKgotICAgICAq
IFRlbXBsYXRlIGFyZ3VtZW50czoKLSAgICAgKiBAcGFyYW0gRnVuY0ltcCB0aGUgY2xhc3Mgd2hp
Y2ggaW1wbGVtZW50cyB0aGlzIG9iamVjdCdzIGZ1bmN0aW9ucwotICAgICAqIEBwYXJhbSBUaGlz
SW1wIHRoZSBjbGFzcyBvZiAidGhpcyIuIEl0IG11c3QgaW1wbGVtZW50IHRoZSBnZXRWYWx1ZVBy
b3BlcnR5KGV4ZWMsdG9rZW4pIG1ldGhvZCwKLSAgICAgKiBmb3Igbm9uLWZ1bmN0aW9uIHByb3Bl
cnRpZXMuCi0gICAgICogQHBhcmFtIFBhcmVudEltcCB0aGUgY2xhc3Mgb2YgdGhlIHBhcmVudCwg
dG8gcHJvcGFnYXRlIHRoZSBsb29rdXAuCi0gICAgICoKLSAgICAgKiBNZXRob2QgYXJndW1lbnRz
OgotICAgICAqIEBwYXJhbSBleGVjIGV4ZWN1dGlvbiBzdGF0ZSwgYXMgdXN1YWwKLSAgICAgKiBA
cGFyYW0gcHJvcGVydHlOYW1lIHRoZSBwcm9wZXJ0eSB3ZSdyZSBsb29raW5nIGZvcgotICAgICAq
IEBwYXJhbSB0YWJsZSB0aGUgc3RhdGljIGhhc2h0YWJsZSBmb3IgdGhpcyBjbGFzcwotICAgICAq
IEBwYXJhbSB0aGlzT2JqICJ0aGlzIgogICAgICAqLwogICAgIHRlbXBsYXRlIDxjbGFzcyBUaGlz
SW1wLCBjbGFzcyBQYXJlbnRJbXA+CiAgICAgaW5saW5lIGJvb2wgZ2V0U3RhdGljUHJvcGVydHlT
bG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaFRhYmxlKiB0YWJsZSwgVGhpc0ltcCogdGhp
c09iaiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
CkBAIC0xMzgsMTAgKzE1NCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaWYgKCFlbnRy
eSkgLy8gbm90IGZvdW5kLCBmb3J3YXJkIHRvIHBhcmVudAogICAgICAgICAgICAgcmV0dXJuIHRo
aXNPYmotPlBhcmVudEltcDo6Z2V0T3duUHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwg
c2xvdCk7CiAKLSAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzICYgRnVuY3Rpb24pCisgICAg
ICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pCiAgICAgICAgICAgICBzZXRV
cFN0YXRpY0Z1bmN0aW9uU2xvdChleGVjLCBlbnRyeSwgdGhpc09iaiwgcHJvcGVydHlOYW1lLCBz
bG90KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc2xvdC5zZXRTdGF0aWNFbnRyeSh0aGlz
T2JqLCBlbnRyeSwgc3RhdGljVmFsdWVHZXR0ZXI8VGhpc0ltcD4pOworICAgICAgICAgICAgc2xv
dC5zZXRDdXN0b20odGhpc09iaiwgZW50cnktPnByb3BlcnR5R2V0dGVyKCkpOwogCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KQEAgLTE3Nyw5ICsxOTMsOSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgaWYgKCFlbnRyeSkgLy8gbm90IGZvdW5kLCBmb3J3YXJkIHRvIHBhcmVudAogICAg
ICAgICAgICAgcmV0dXJuIHRoaXNPYmotPlBhcmVudEltcDo6Z2V0T3duUHJvcGVydHlTbG90KGV4
ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKLSAgICAgICAgQVNTRVJUKCEoZW50cnktPmF0dHJp
YnV0ZXMgJiBGdW5jdGlvbikpOworICAgICAgICBBU1NFUlQoIShlbnRyeS0+YXR0cmlidXRlcygp
ICYgRnVuY3Rpb24pKTsKIAotICAgICAgICBzbG90LnNldFN0YXRpY0VudHJ5KHRoaXNPYmosIGVu
dHJ5LCBzdGF0aWNWYWx1ZUdldHRlcjxUaGlzSW1wPik7CisgICAgICAgIHNsb3Quc2V0Q3VzdG9t
KHRoaXNPYmosIGVudHJ5LT5wcm9wZXJ0eUdldHRlcigpKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogCkBAIC0xOTYsMTAgKzIxMiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
aWYgKCFlbnRyeSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBpZiAoZW50
cnktPmF0dHJpYnV0ZXMgJiBGdW5jdGlvbikgLy8gZnVuY3Rpb246IHB1dCBhcyBvdmVycmlkZSBw
cm9wZXJ0eQorICAgICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEZ1bmN0aW9uKSAvLyBm
dW5jdGlvbjogcHV0IGFzIG92ZXJyaWRlIHByb3BlcnR5CiAgICAgICAgICAgICB0aGlzT2JqLT5w
dXREaXJlY3QocHJvcGVydHlOYW1lLCB2YWx1ZSk7Ci0gICAgICAgIGVsc2UgaWYgKCEoZW50cnkt
PmF0dHJpYnV0ZXMgJiBSZWFkT25seSkpCi0gICAgICAgICAgICB0aGlzT2JqLT5wdXRWYWx1ZVBy
b3BlcnR5KGV4ZWMsIGVudHJ5LT5pbnRlZ2VyVmFsdWUsIHZhbHVlKTsKKyAgICAgICAgZWxzZSBp
ZiAoIShlbnRyeS0+YXR0cmlidXRlcygpICYgUmVhZE9ubHkpKQorICAgICAgICAgICAgZW50cnkt
PnByb3BlcnR5UHV0dGVyKCkoZXhlYywgdGhpc09iaiwgdmFsdWUpOwogCiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAzNjk2OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTI4IEBACisyMDA4LTA5LTI2ICBTYW0gV2VpbmlnICA8
c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUGF0Y2ggZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTE1MgorICAgICAgICBTcGVlZHVwIHN0YXRpYyBwcm9wZXJ0eSBnZXQvcHV0CisKKyAgICAg
ICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpqc0RPTVdpbmRvd0Jhc2VDcnlwdG8pOgorICAgICAgICAoV2ViQ29yZTo6anNET01XaW5k
b3dCYXNlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6anNET01XaW5kb3dCYXNlSW1hZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6anNET01XaW5kb3dCYXNlT3B0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzRE9NV2luZG93QmFzZVhNTEh0dHBSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ompz
RE9NV2luZG93QmFzZUF1ZGlvKToKKyAgICAgICAgKFdlYkNvcmU6OmpzRE9NV2luZG93QmFzZVhT
TFRQcm9jZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6anNET01XaW5kb3dCYXNlT25hYm9ydCk6
CisgICAgICAgIChXZWJDb3JlOjpqc0RPTVdpbmRvd0Jhc2VPbmJsdXIpOgorICAgICAgICAoV2Vi
Q29yZTo6anNET01XaW5kb3dCYXNlT25jaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6anNET01X
aW5kb3dCYXNlT25jbGljayk6CisgICAgICAgIChXZWJDb3JlOjpqc0RPTVdpbmRvd0Jhc2VPbmRi
bGNsaWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmpzRE9NV2luZG93QmFzZU9uZXJyb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6anNET01XaW5kb3dCYXNlT25mb2N1cyk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc0RPTVdpbmRvd0Jhc2VPbmtleWRvd24pOgorICAgICAgICAoV2ViQ29yZTo6anNET01XaW5k
b3dCYXNlT25rZXlwcmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpqc0RPTVdpbmRvd0Jhc2VPbmtl
eXVwKToKKyAgICAgICAgKFdlYkNvcmU6OmpzRE9NV2luZG93QmFzZU9ubG9hZCk6CisgICAgICAg
IChXZWJDb3JlOjpqc0RPTVdpbmRvd0Jhc2VPbm1vdXNlZG93bik6CisgICAgICAgIChXZWJDb3Jl
Ojpqc0RPTVdpbmRvd0Jhc2VPbm1vdXNlbW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc0RPTVdp
bmRvd0Jhc2VPbm1vdXNlb3V0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzRE9NV2luZG93QmFzZU9u
bW91c2VvdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzRE9NV2luZG93QmFzZU9ubW91c2V1cCk6
CisgICAgICAgIChXZWJDb3JlOjpqc0RPTVdpbmRvd0Jhc2VPbk1vdXNlV2hlZWwpOgorICAgICAg
ICAoV2ViQ29yZTo6anNET01XaW5kb3dCYXNlT25yZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpq
c0RPTVdpbmRvd0Jhc2VPbnJlc2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc0RPTVdpbmRvd0Jh
c2VPbnNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpqc0RPTVdpbmRvd0Jhc2VPbnNlYXJjaCk6
CisgICAgICAgIChXZWJDb3JlOjpqc0RPTVdpbmRvd0Jhc2VPbnNlbGVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpqc0RPTVdpbmRvd0Jhc2VPbnN1Ym1pdCk6CisgICAgICAgIChXZWJDb3JlOjpqc0RP
TVdpbmRvd0Jhc2VPbmJlZm9yZXVubG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpqc0RPTVdpbmRv
d0Jhc2VPbnVubG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpqc0RPTVdpbmRvd0Jhc2VPbldlYktp
dEFuaW1hdGlvblN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzRE9NV2luZG93QmFzZU9uV2Vi
S2l0QW5pbWF0aW9uSXRlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzRE9NV2luZG93QmFz
ZU9uV2ViS2l0QW5pbWF0aW9uRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzRE9NV2luZG93QmFz
ZU9uV2ViS2l0VHJhbnNpdGlvbkVuZCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jh
c2U6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jh
c2U6OnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU0RPTVdpbmRvd0Jhc2VFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU0RPTVdpbmRvd0Jhc2VPbmFib3J0KToKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTRE9NV2luZG93QmFzZU9uYmx1cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRK
U0RPTVdpbmRvd0Jhc2VPbmNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU0RPTVdpbmRv
d0Jhc2VPbmNsaWNrKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTRE9NV2luZG93QmFzZU9uZGJs
Y2xpY2spOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNET01XaW5kb3dCYXNlT25lcnJvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU0RPTVdpbmRvd0Jhc2VPbmZvY3VzKToKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTRE9NV2luZG93QmFzZU9ua2V5ZG93bik6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU0RPTVdpbmRvd0Jhc2VPbmtleXByZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTRE9N
V2luZG93QmFzZU9ua2V5dXApOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNET01XaW5kb3dCYXNl
T25sb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTRE9NV2luZG93QmFzZU9ubW91c2Vkb3du
KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTRE9NV2luZG93QmFzZU9ubW91c2Vtb3ZlKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldEpTRE9NV2luZG93QmFzZU9ubW91c2VvdXQpOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNET01XaW5kb3dCYXNlT25tb3VzZW92ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0SlNET01XaW5kb3dCYXNlT25tb3VzZXVwKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpT
RE9NV2luZG93QmFzZU9uTW91c2VXaGVlbCk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU0RPTVdp
bmRvd0Jhc2VPbnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTRE9NV2luZG93QmFzZU9u
cmVzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTRE9NV2luZG93QmFzZU9uc2Nyb2xsKToK
KyAgICAgICAgKFdlYkNvcmU6OnNldEpTRE9NV2luZG93QmFzZU9uc2VhcmNoKToKKyAgICAgICAg
KFdlYkNvcmU6OnNldEpTRE9NV2luZG93QmFzZU9uc2VsZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTRE9NV2luZG93QmFzZU9uc3VibWl0KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTRE9N
V2luZG93QmFzZU9uYmVmb3JldW5sb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTRE9NV2lu
ZG93QmFzZU9udW5sb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTRE9NV2luZG93QmFzZU9u
V2ViS2l0QW5pbWF0aW9uU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNET01XaW5kb3dC
YXNlT25XZWJLaXRBbmltYXRpb25JdGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNE
T01XaW5kb3dCYXNlT25XZWJLaXRBbmltYXRpb25FbmQpOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SlNET01XaW5kb3dCYXNlT25XZWJLaXRUcmFuc2l0aW9uRW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTRE9NV2luZG93QmFzZUF1ZGlvKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTRE9NV2lu
ZG93QmFzZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTRE9NV2luZG93QmFzZU9wdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU0RPTVdpbmRvd0Jhc2VYTUxIdHRwUmVxdWVzdCk6
CisgICAgICAgIChXZWJDb3JlOjpzZXRKU0RPTVdpbmRvd0Jhc2VYU0xUUHJvY2Vzc29yKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaDoKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub25DYWNoaW5n
U3RhdGljQ2xvc2VGdW5jdGlvbkdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpub25DYWNoaW5n
U3RhdGljQmx1ckZ1bmN0aW9uR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6Om5vbkNhY2hpbmdT
dGF0aWNGb2N1c0Z1bmN0aW9uR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6Om5vbkNhY2hpbmdT
dGF0aWNQb3N0TWVzc2FnZUZ1bmN0aW9uR2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0N1c3RvbS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmN1c3Rv
bUdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudFRhcmdl
dEJhc2UuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRCYXNlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0V2ZW50VGFyZ2V0QmFzZVByb3RvdHlwZTo6Z2V0T3duUHJvcGVy
dHlTbG90KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRUYXJnZXRCYXNlUHJvdG90eXBlOjpj
bGFzc0luZm8pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXROb2RlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50VGFyZ2V0Tm9k
ZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRUYXJnZXRO
b2RlOjpwdXQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXROb2RlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0V2ZW50VGFyZ2V0Tm9kZTo6Y2xhc3NJbmZvKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTRXZlbnRUYXJnZXROb2RlOjpwcm90b3R5cGVDbGFzc05hbWUpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRUYXJnZXRTVkdFbGVt
ZW50SW5zdGFuY2U6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpKU0V2
ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNlOjpwdXQpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
RXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2U6OmNsYXNzSW5mbyk6CisgICAgICAgIChXZWJD
b3JlOjpKU0V2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNlOjpwcm90b3R5cGVDbGFzc05hbWUp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0hUTUxJbnB1dEVsZW1lbnQ6OmN1c3RvbUdldE93blByb3BlcnR5
U2xvdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Om5vbkNhY2hpbmdTdGF0aWNCYWNrRnVuY3Rpb25HZXR0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6bm9uQ2FjaGluZ1N0YXRpY0ZvcndhcmRGdW5jdGlvbkdldHRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpub25DYWNoaW5nU3RhdGljR29GdW5jdGlvbkdldHRlcik6CisgICAgICAg
IChXZWJDb3JlOjpKU0hpc3Rvcnk6OmN1c3RvbUdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpu
b25DYWNoaW5nU3RhdGljUmVwbGFjZUZ1bmN0aW9uR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6
Om5vbkNhY2hpbmdTdGF0aWNSZWxvYWRGdW5jdGlvbkdldHRlcik6CisgICAgICAgIChXZWJDb3Jl
Ojpub25DYWNoaW5nU3RhdGljQXNzaWduRnVuY3Rpb25HZXR0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNMb2NhdGlvbjo6Y3VzdG9tR2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKFdlYkNv
cmU6OkpTTG9jYXRpb246OmN1c3RvbVB1dCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG06CisKIDIwMDgtMDktMjYgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBw
bGUuY29tPgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTE0OQpJbmRleDogV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMzY4NzMpCisrKyBXZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTM2OCw2ICszNjgsOCBAQCBh
bGwgOiBcCiAgICAgXAogICAgIEpTRE9NV2luZG93QmFzZS5sdXQuaCBcCiAgICAgSlNFdmVudFRh
cmdldEJhc2UubHV0LmggXAorICAgIEpTRXZlbnRUYXJnZXROb2RlLmx1dC5oIFwKKyAgICBKU0V2
ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNlLmx1dC5oIFwKICAgICBKU1JHQkNvbG9yLmx1dC5o
IFwKICAgICBcCiAgICAgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmggXApAQCAtNTAzLDkgKzUwNSw5
IEBAIFVzZXJBZ2VudFN0eWxlU2hlZXRzLmggOiBjc3MvbWFrZS1jc3MtZmkKICMgbG9va3VwIHRh
YmxlcyBmb3Igb2xkLXN0eWxlIEphdmFTY3JpcHQgYmluZGluZ3MKIAogJS5sdXQuaDogJS5jcHAg
JChDUkVBVEVfSEFTSF9UQUJMRSkKLQkkKENSRUFURV9IQVNIX1RBQkxFKSAkPCA+ICRACisJJChD
UkVBVEVfSEFTSF9UQUJMRSkgJDwgLW4gV2ViQ29yZSA+ICRACiAlVGFibGUuY3BwOiAlLmNwcCAk
KENSRUFURV9IQVNIX1RBQkxFKQotCSQoQ1JFQVRFX0hBU0hfVEFCTEUpICQ8ID4gJEAKKwkkKENS
RUFURV9IQVNIX1RBQkxFKSAkPCAtbiBXZWJDb3JlID4gJEAKIAogIyAtLS0tLS0tLQogCkluZGV4
OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMzY4
NzMpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtMzcwOSw2ICszNzA5LDggQEAKIAkJQkMzQTQ0REUwRTI2RDIwMjAwQzE0REZB
IC8qIE5TUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDM0E0NERDMEUyNkQyMDIwMEMxNERGQSAvKiBOU1Jlc29sdmVyLmggKi87IH07CiAJ
CUJDM0E0NEUyMEUyNkQyMUIwMEMxNERGQSAvKiBKU05TUmVzb2x2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMzQTQ0RTAwRTI2RDIxQjAwQzE0
REZBIC8qIEpTTlNSZXNvbHZlci5jcHAgKi87IH07CiAJCUJDM0E0NEUzMEUyNkQyMUIwMEMxNERG
QSAvKiBKU05TUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDM0E0NEUxMEUyNkQyMUIwMEMxNERGQSAvKiBKU05TUmVzb2x2ZXIuaCAqLzsg
fTsKKwkJQkMzQkEwNEUwRThDNDZEQTAwRkM1RDIwIC8qIEpTRXZlbnRUYXJnZXROb2RlLmx1dC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMzQkEwNEMw
RThDNDZEQTAwRkM1RDIwIC8qIEpTRXZlbnRUYXJnZXROb2RlLmx1dC5oICovOyB9OworCQlCQzNC
QTA0RjBFOEM0NkRBMDBGQzVEMjAgLyogSlNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZS5s
dXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDM0JB
MDREMEU4QzQ2REEwMEZDNUQyMCAvKiBKU0V2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNlLmx1
dC5oICovOyB9OwogCQlCQzNDMzlCNjBDMEQzRDhEMDA1RjREN0EgLyogSlNNZWRpYUxpc3QuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMzQzM5QjQw
QzBEM0Q4RDAwNUY0RDdBIC8qIEpTTWVkaWFMaXN0LmNwcCAqLzsgfTsKIAkJQkMzQzM5QjcwQzBE
M0Q4RDAwNUY0RDdBIC8qIEpTTWVkaWFMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzNDMzlCNTBDMEQzRDhEMDA1RjREN0EgLyogSlNNZWRpYUxp
c3QuaCAqLzsgfTsKIAkJQkM0MzY4RTgwQzIyNkUzMjAwNUVGQjVGIC8qIFJlY3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNDM2OEU3MEMyMjZFMzIw
MDVFRkI1RiAvKiBSZWN0LmggKi87IH07CkBAIC00MDc0LDYgKzQwNzYsNyBAQAogCQlCQ0VGRTFF
NTBEQ0E1RjMzMDA3MzkyMTkgLyogSlNYU0xUUHJvY2Vzc29yQ3VzdG9tLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUZFMUU0MERDQTVGMzMwMDcz
OTIxOSAvKiBKU1hTTFRQcm9jZXNzb3JDdXN0b20uY3BwICovOyB9OwogCQlCQ0VGRTFFQTBEQ0E1
RjY0MDA3MzkyMTkgLyogSlNYU0xUUHJvY2Vzc29yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUZFMUU4MERDQTVGNjQwMDczOTIxOSAvKiBKU1hT
TFRQcm9jZXNzb3IuY3BwICovOyB9OwogCQlCQ0VGRTFFQjBEQ0E1RjY0MDA3MzkyMTkgLyogSlNY
U0xUUHJvY2Vzc29yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0VGRTFFOTBEQ0E1RjY0MDA3MzkyMTkgLyogSlNYU0xUUHJvY2Vzc29yLmggKi87IH07
CisJCUJDRjkzN0U3MEU4QjJFOTUwMDVDN0FCNyAvKiBKU0RPTVdpbmRvd0Jhc2UubHV0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Y5MzdFNjBFOEIy
RTk1MDA1QzdBQjcgLyogSlNET01XaW5kb3dCYXNlLmx1dC5oICovOyB9OwogCQlCQ0ZCMkU1RTA5
NzlFNDY0MDBCQTcwM0QgLyogQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRkIyRTVEMDk3OUU0NjQwMEJBNzAzRCAv
KiBDYWNoZWRSZXNvdXJjZUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUJDRkIyRjc2MDk3QTJFMUEwMEJBNzAzRCAvKiBBcmVuYS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0ZCMkY3NDA5
N0EyRTFBMDBCQTcwM0QgLyogQXJlbmEuY3BwICovOyB9OwogCQlCQ0ZCMkY3NzA5N0EyRTFBMDBC
QTcwM0QgLyogQXJlbmEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDRkIyRjc1MDk3QTJFMUEwMEJBNzAzRCAvKiBBcmVuYS5oICovOyB9OwpAQCAtODIy
OSw2ICs4MjMyLDggQEAKIAkJQkMzQTQ0REQwRTI2RDIwMjAwQzE0REZBIC8qIE5TUmVzb2x2ZXIu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE5TUmVzb2x2ZXIuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCQzNBNDRFMDBFMjZEMjFCMDBDMTRERkEgLyogSlNOU1Jlc29sdmVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTlNSZXNvbHZlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDM0E0NEUxMEUyNkQyMUIwMEMxNERG
QSAvKiBKU05TUmVzb2x2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNO
U1Jlc29sdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDM0JBMDRDMEU4QzQ2
REEwMEZDNUQyMCAvKiBKU0V2ZW50VGFyZ2V0Tm9kZS5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNFdmVudFRhcmdldE5vZGUubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUJDM0JBMDREMEU4QzQ2REEwMEZDNUQyMCAvKiBKU0V2ZW50VGFyZ2V0U1ZH
RWxlbWVudEluc3RhbmNlLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0V2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNlLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCQzNDMzlCNDBDMEQzRDhEMDA1RjREN0EgLyogSlNNZWRpYUxpc3QuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFMaXN0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMzQzM5QjUwQzBEM0Q4RDAwNUY0RDdBIC8qIEpT
TWVkaWFMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01lZGlhTGlz
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzQzNjhFNzBDMjI2RTMyMDA1RUZC
NUYgLyogUmVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVjdC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODYwOSw2ICs4NjE0LDcgQEAKIAkJQkNFRkUx
RTQwRENBNUYzMzAwNzM5MjE5IC8qIEpTWFNMVFByb2Nlc3NvckN1c3RvbS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1hTTFRQcm9jZXNzb3JDdXN0b20uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0VGRTFFODBEQ0E1RjY0MDA3MzkyMTkgLyog
SlNYU0xUUHJvY2Vzc29yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTWFNMVFByb2Nlc3Nvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRUZF
MUU5MERDQTVGNjQwMDczOTIxOSAvKiBKU1hTTFRQcm9jZXNzb3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNYU0xUUHJvY2Vzc29yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUJDRjkzN0U2MEU4QjJFOTUwMDVDN0FCNyAvKiBKU0RPTVdpbmRvd0Jhc2UubHV0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NV2luZG93QmFzZS5sdXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNGQjJFNUQwOTc5RTQ2NDAwQkE3MDNE
IC8qIENhY2hlZFJlc291cmNlQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDYWNoZWRSZXNvdXJjZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCQ0ZCMkY3NDA5N0EyRTFBMDBCQTcwM0QgLyogQXJlbmEuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFyZW5hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQkNGQjJGNzUwOTdBMkUxQTAwQkE3MDNEIC8qIEFyZW5hLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBcmVuYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTE3MTMsNiArMTE3MTksOCBAQAogCQkJCUJDNjBEOUJEMEQyQTI2OUEwMEI5OTE4RiAvKiBK
U0V2ZW50RXhjZXB0aW9uLmNwcCAqLywKIAkJCQlCQzYwRDlCRTBEMkEyNjlBMDBCOTkxOEYgLyog
SlNFdmVudEV4Y2VwdGlvbi5oICovLAogCQkJCUIyOEJDMzE5MEQxMzVFNTQwMENEQkEyNyAvKiBK
U0V2ZW50VGFyZ2V0QmFzZS5sdXQuaCAqLywKKwkJCQlCQzNCQTA0QzBFOEM0NkRBMDBGQzVEMjAg
LyogSlNFdmVudFRhcmdldE5vZGUubHV0LmggKi8sCisJCQkJQkMzQkEwNEQwRThDNDZEQTAwRkM1
RDIwIC8qIEpTRXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2UubHV0LmggKi8sCiAJCQkJQTg2
NjI5Q0UwOURBMkI0NzAwOTYzM0E1IC8qIEpTS2V5Ym9hcmRFdmVudC5jcHAgKi8sCiAJCQkJQTg2
NjI5Q0QwOURBMkI0NzAwOTYzM0E1IC8qIEpTS2V5Ym9hcmRFdmVudC5oICovLAogCQkJCTc1Nzkz
RUM2MEQwQ0U3MkQwMDdGQzBBQyAvKiBKU01lc3NhZ2VFdmVudC5jcHAgKi8sCkBAIC0xMjkxMyw2
ICsxMjkyMSw3IEBACiAJCQkJQkM1QTg2QjQwQzMzNjdFODAwRUVBNjQ5IC8qIEpTRE9NU2VsZWN0
aW9uLmggKi8sCiAJCQkJMTQwM0JBMEIwOUVCMThDNzAwNzk3QzdGIC8qIEpTRE9NV2luZG93LmNw
cCAqLywKIAkJCQkxNDAzQkEwRTA5RUIxOEY4MDA3OTdDN0YgLyogSlNET01XaW5kb3cuaCAqLywK
KwkJCQlCQ0Y5MzdFNjBFOEIyRTk1MDA1QzdBQjcgLyogSlNET01XaW5kb3dCYXNlLmx1dC5oICov
LAogCQkJCUJDOTREMTRDMEMyNzVDNjgwMDZCQzYxNyAvKiBKU0hpc3RvcnkuY3BwICovLAogCQkJ
CUJDOTREMTREMEMyNzVDNjgwMDZCQzYxNyAvKiBKU0hpc3RvcnkuaCAqLywKIAkJCQlCQ0UxQzQz
OTBEOTgzMEQzMDAzQjAyRjIgLyogSlNMb2NhdGlvbi5jcHAgKi8sCkBAIC0xNTg2Nyw2ICsxNTg3
Niw5IEBACiAJCQkJQThDQjQxM0UwRTg2MzNGRDAwMzJDNEYwIC8qIERhc2hBcnJheS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDhBNDhBN0EwRTg2Q0Y4QzAwRTIyNUREIC8qIEV2ZW50VGFyZ2V0U1ZH
RWxlbWVudEluc3RhbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzBCM0JFMjBFODg0OTIxMDA5
NzcwQzUgLyogSlNDYW52YXNQaXhlbEFycmF5Q3VzdG9tLmggaW4gSGVhZGVycyAqLywKKwkJCQlC
Q0Y5MzdFNzBFOEIyRTk1MDA1QzdBQjcgLyogSlNET01XaW5kb3dCYXNlLmx1dC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQkMzQkEwNEUwRThDNDZEQTAwRkM1RDIwIC8qIEpTRXZlbnRUYXJnZXROb2Rl
Lmx1dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMzQkEwNEYwRThDNDZEQTAwRkM1RDIwIC8qIEpT
RXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2UubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6
IFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAJKHJldmlzaW9uIDM2ODczKQorKysgV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDcs
MTIgKzM0Nyw2IEBAIHZvaWQgcHJpbnRFcnJvck1lc3NhZ2VGb3JGcmFtZShGcmFtZSogZnIKICAg
ICAgICAgd2luZG93LT5wcmludEVycm9yTWVzc2FnZShtZXNzYWdlKTsKIH0KIAotSlNWYWx1ZSog
bm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpCi17Ci0gICAg
Y29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IHNsb3Quc3RhdGljRW50cnkoKTsKLSAgICByZXR1cm4g
bmV3IChleGVjKSBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBlbnRyeS0+bGVuZ3RoLCBwcm9wZXJ0
eU5hbWUsIGVudHJ5LT5mdW5jdGlvblZhbHVlKTsKLX0KLQogSlNWYWx1ZSogb2JqZWN0VG9TdHJp
bmdGdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgY29uc3QgUHJvcGVydHlTbG90JikKIHsKICAgICByZXR1cm4gbmV3IChleGVjKSBQ
cm90b3R5cGVGdW5jdGlvbihleGVjLCAwLCBwcm9wZXJ0eU5hbWUsIG9iamVjdFByb3RvRnVuY1Rv
U3RyaW5nKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAJKHJl
dmlzaW9uIDM2ODc3KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04NCw2ICs4NCw3OCBAQCBzdGF0aWMgSlNWYWx1ZSogd2luZG93
UHJvdG9GdW5jUmVtb3ZlRXZlCiBzdGF0aWMgSlNWYWx1ZSogd2luZG93UHJvdG9GdW5jU2hvd01v
ZGFsRGlhbG9nKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSosIGNvbnN0IEFyZ0xpc3Qm
KTsKIHN0YXRpYyBKU1ZhbHVlKiB3aW5kb3dQcm90b0Z1bmNOb3RJbXBsZW1lbnRlZChFeGVjU3Rh
dGUqLCBKU09iamVjdCosIEpTVmFsdWUqLCBjb25zdCBBcmdMaXN0Jik7CiAKK3N0YXRpYyBKU1Zh
bHVlKiBqc0RPTVdpbmRvd0Jhc2VDcnlwdG8oRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYs
IGNvbnN0IFByb3BlcnR5U2xvdCYpOworc3RhdGljIEpTVmFsdWUqIGpzRE9NV2luZG93QmFzZUV2
ZW50KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsK
K3N0YXRpYyB2b2lkIHNldEpTRE9NV2luZG93QmFzZUV2ZW50KEV4ZWNTdGF0ZSosIEpTT2JqZWN0
KiwgSlNWYWx1ZSopOworc3RhdGljIEpTVmFsdWUqIGpzRE9NV2luZG93QmFzZU9uYWJvcnQoRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOworc3RhdGlj
IHZvaWQgc2V0SlNET01XaW5kb3dCYXNlT25hYm9ydChFeGVjU3RhdGUqLCBKU09iamVjdCosIEpT
VmFsdWUqKTsKK3N0YXRpYyBKU1ZhbHVlKiBqc0RPTVdpbmRvd0Jhc2VPbmJsdXIoRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOworc3RhdGljIHZvaWQg
c2V0SlNET01XaW5kb3dCYXNlT25ibHVyKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSop
Oworc3RhdGljIEpTVmFsdWUqIGpzRE9NV2luZG93QmFzZU9uY2hhbmdlKEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKK3N0YXRpYyB2b2lkIHNldEpT
RE9NV2luZG93QmFzZU9uY2hhbmdlKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSopOwor
c3RhdGljIEpTVmFsdWUqIGpzRE9NV2luZG93QmFzZU9uY2xpY2soRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOworc3RhdGljIHZvaWQgc2V0SlNET01X
aW5kb3dCYXNlT25jbGljayhFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqKTsKK3N0YXRp
YyBKU1ZhbHVlKiBqc0RPTVdpbmRvd0Jhc2VPbmRibGNsaWNrKEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKK3N0YXRpYyB2b2lkIHNldEpTRE9NV2lu
ZG93QmFzZU9uZGJsY2xpY2soRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1ZhbHVlKik7CitzdGF0
aWMgSlNWYWx1ZSoganNET01XaW5kb3dCYXNlT25lcnJvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jik7CitzdGF0aWMgdm9pZCBzZXRKU0RPTVdpbmRv
d0Jhc2VPbmVycm9yKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSopOworc3RhdGljIEpT
VmFsdWUqIGpzRE9NV2luZG93QmFzZU9uZm9jdXMoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOworc3RhdGljIHZvaWQgc2V0SlNET01XaW5kb3dCYXNl
T25mb2N1cyhFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqKTsKK3N0YXRpYyBKU1ZhbHVl
KiBqc0RPTVdpbmRvd0Jhc2VPbmtleWRvd24oRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYs
IGNvbnN0IFByb3BlcnR5U2xvdCYpOworc3RhdGljIHZvaWQgc2V0SlNET01XaW5kb3dCYXNlT25r
ZXlkb3duKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSopOworc3RhdGljIEpTVmFsdWUq
IGpzRE9NV2luZG93QmFzZU9ua2V5cHJlc3MoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYs
IGNvbnN0IFByb3BlcnR5U2xvdCYpOworc3RhdGljIHZvaWQgc2V0SlNET01XaW5kb3dCYXNlT25r
ZXlwcmVzcyhFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqKTsKK3N0YXRpYyBKU1ZhbHVl
KiBqc0RPTVdpbmRvd0Jhc2VPbmtleXVwKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBj
b25zdCBQcm9wZXJ0eVNsb3QmKTsKK3N0YXRpYyB2b2lkIHNldEpTRE9NV2luZG93QmFzZU9ua2V5
dXAoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1ZhbHVlKik7CitzdGF0aWMgSlNWYWx1ZSoganNE
T01XaW5kb3dCYXNlT25sb2FkKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQ
cm9wZXJ0eVNsb3QmKTsKK3N0YXRpYyB2b2lkIHNldEpTRE9NV2luZG93QmFzZU9ubG9hZChFeGVj
U3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqKTsKK3N0YXRpYyBKU1ZhbHVlKiBqc0RPTVdpbmRv
d0Jhc2VPbm1vdXNlZG93bihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJv
cGVydHlTbG90Jik7CitzdGF0aWMgdm9pZCBzZXRKU0RPTVdpbmRvd0Jhc2VPbm1vdXNlZG93bihF
eGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqKTsKK3N0YXRpYyBKU1ZhbHVlKiBqc0RPTVdp
bmRvd0Jhc2VPbm1vdXNlbW92ZShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3Qg
UHJvcGVydHlTbG90Jik7CitzdGF0aWMgdm9pZCBzZXRKU0RPTVdpbmRvd0Jhc2VPbm1vdXNlbW92
ZShFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqKTsKK3N0YXRpYyBKU1ZhbHVlKiBqc0RP
TVdpbmRvd0Jhc2VPbm1vdXNlb3V0KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25z
dCBQcm9wZXJ0eVNsb3QmKTsKK3N0YXRpYyB2b2lkIHNldEpTRE9NV2luZG93QmFzZU9ubW91c2Vv
dXQoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1ZhbHVlKik7CitzdGF0aWMgSlNWYWx1ZSoganNE
T01XaW5kb3dCYXNlT25tb3VzZW92ZXIoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIGNv
bnN0IFByb3BlcnR5U2xvdCYpOworc3RhdGljIHZvaWQgc2V0SlNET01XaW5kb3dCYXNlT25tb3Vz
ZW92ZXIoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1ZhbHVlKik7CitzdGF0aWMgSlNWYWx1ZSog
anNET01XaW5kb3dCYXNlT25tb3VzZXVwKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBj
b25zdCBQcm9wZXJ0eVNsb3QmKTsKK3N0YXRpYyB2b2lkIHNldEpTRE9NV2luZG93QmFzZU9ubW91
c2V1cChFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqKTsKK3N0YXRpYyBKU1ZhbHVlKiBq
c0RPTVdpbmRvd0Jhc2VPbk1vdXNlV2hlZWwoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYs
IGNvbnN0IFByb3BlcnR5U2xvdCYpOworc3RhdGljIHZvaWQgc2V0SlNET01XaW5kb3dCYXNlT25N
b3VzZVdoZWVsKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSopOworc3RhdGljIEpTVmFs
dWUqIGpzRE9NV2luZG93QmFzZU9ucmVzZXQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYs
IGNvbnN0IFByb3BlcnR5U2xvdCYpOworc3RhdGljIHZvaWQgc2V0SlNET01XaW5kb3dCYXNlT25y
ZXNldChFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqKTsKK3N0YXRpYyBKU1ZhbHVlKiBq
c0RPTVdpbmRvd0Jhc2VPbnJlc2l6ZShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29u
c3QgUHJvcGVydHlTbG90Jik7CitzdGF0aWMgdm9pZCBzZXRKU0RPTVdpbmRvd0Jhc2VPbnJlc2l6
ZShFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqKTsKK3N0YXRpYyBKU1ZhbHVlKiBqc0RP
TVdpbmRvd0Jhc2VPbnNjcm9sbChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3Qg
UHJvcGVydHlTbG90Jik7CitzdGF0aWMgdm9pZCBzZXRKU0RPTVdpbmRvd0Jhc2VPbnNjcm9sbChF
eGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqKTsKK3N0YXRpYyBKU1ZhbHVlKiBqc0RPTVdp
bmRvd0Jhc2VPbnNlYXJjaChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJv
cGVydHlTbG90Jik7CitzdGF0aWMgdm9pZCBzZXRKU0RPTVdpbmRvd0Jhc2VPbnNlYXJjaChFeGVj
U3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqKTsKK3N0YXRpYyBKU1ZhbHVlKiBqc0RPTVdpbmRv
d0Jhc2VPbnNlbGVjdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVy
dHlTbG90Jik7CitzdGF0aWMgdm9pZCBzZXRKU0RPTVdpbmRvd0Jhc2VPbnNlbGVjdChFeGVjU3Rh
dGUqLCBKU09iamVjdCosIEpTVmFsdWUqKTsKK3N0YXRpYyBKU1ZhbHVlKiBqc0RPTVdpbmRvd0Jh
c2VPbnN1Ym1pdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlT
bG90Jik7CitzdGF0aWMgdm9pZCBzZXRKU0RPTVdpbmRvd0Jhc2VPbnN1Ym1pdChFeGVjU3RhdGUq
LCBKU09iamVjdCosIEpTVmFsdWUqKTsKK3N0YXRpYyBKU1ZhbHVlKiBqc0RPTVdpbmRvd0Jhc2VP
bnVubG9hZChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90
Jik7CitzdGF0aWMgdm9pZCBzZXRKU0RPTVdpbmRvd0Jhc2VPbnVubG9hZChFeGVjU3RhdGUqLCBK
U09iamVjdCosIEpTVmFsdWUqKTsKK3N0YXRpYyBKU1ZhbHVlKiBqc0RPTVdpbmRvd0Jhc2VPbmJl
Zm9yZXVubG9hZChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlT
bG90Jik7CitzdGF0aWMgdm9pZCBzZXRKU0RPTVdpbmRvd0Jhc2VPbmJlZm9yZXVubG9hZChFeGVj
U3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqKTsKK3N0YXRpYyBKU1ZhbHVlKiBqc0RPTVdpbmRv
d0Jhc2VPbldlYktpdEFuaW1hdGlvblN0YXJ0KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIm
LCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKK3N0YXRpYyB2b2lkIHNldEpTRE9NV2luZG93QmFzZU9u
V2ViS2l0QW5pbWF0aW9uU3RhcnQoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1ZhbHVlKik7Citz
dGF0aWMgSlNWYWx1ZSoganNET01XaW5kb3dCYXNlT25XZWJLaXRBbmltYXRpb25JdGVyYXRpb24o
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOworc3Rh
dGljIHZvaWQgc2V0SlNET01XaW5kb3dCYXNlT25XZWJLaXRBbmltYXRpb25JdGVyYXRpb24oRXhl
Y1N0YXRlKiwgSlNPYmplY3QqLCBKU1ZhbHVlKik7CitzdGF0aWMgSlNWYWx1ZSoganNET01XaW5k
b3dCYXNlT25XZWJLaXRBbmltYXRpb25FbmQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYs
IGNvbnN0IFByb3BlcnR5U2xvdCYpOworc3RhdGljIHZvaWQgc2V0SlNET01XaW5kb3dCYXNlT25X
ZWJLaXRBbmltYXRpb25FbmQoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1ZhbHVlKik7CitzdGF0
aWMgSlNWYWx1ZSoganNET01XaW5kb3dCYXNlT25XZWJLaXRUcmFuc2l0aW9uRW5kKEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKK3N0YXRpYyB2b2lk
IHNldEpTRE9NV2luZG93QmFzZU9uV2ViS2l0VHJhbnNpdGlvbkVuZChFeGVjU3RhdGUqLCBKU09i
amVjdCosIEpTVmFsdWUqKTsKK3N0YXRpYyBKU1ZhbHVlKiBqc0RPTVdpbmRvd0Jhc2VBdWRpbyhF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jik7CitzdGF0
aWMgdm9pZCBzZXRKU0RPTVdpbmRvd0Jhc2VBdWRpbyhFeGVjU3RhdGUqLCBKU09iamVjdCosIEpT
VmFsdWUqKTsKK3N0YXRpYyBKU1ZhbHVlKiBqc0RPTVdpbmRvd0Jhc2VJbWFnZShFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jik7CitzdGF0aWMgdm9pZCBz
ZXRKU0RPTVdpbmRvd0Jhc2VJbWFnZShFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqKTsK
K3N0YXRpYyBKU1ZhbHVlKiBqc0RPTVdpbmRvd0Jhc2VPcHRpb24oRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOworc3RhdGljIHZvaWQgc2V0SlNET01X
aW5kb3dCYXNlT3B0aW9uKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSopOworc3RhdGlj
IEpTVmFsdWUqIGpzRE9NV2luZG93QmFzZVhNTEh0dHBSZXF1ZXN0KEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKK3N0YXRpYyB2b2lkIHNldEpTRE9N
V2luZG93QmFzZVhNTEh0dHBSZXF1ZXN0KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSop
Oworc3RhdGljIEpTVmFsdWUqIGpzRE9NV2luZG93QmFzZVhTTFRQcm9jZXNzb3IoRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOworc3RhdGljIHZvaWQg
c2V0SlNET01XaW5kb3dCYXNlWFNMVFByb2Nlc3NvcihFeGVjU3RhdGUqLCBKU09iamVjdCosIEpT
VmFsdWUqKTsKKwogfQogCiAjaW5jbHVkZSAiSlNET01XaW5kb3dCYXNlLmx1dC5oIgpAQCAtMTM4
LDU5ICsyMTAsNTkgQEAgY29uc3QgQ2xhc3NJbmZvIEpTRE9NV2luZG93QmFzZTo6c19pbmZvIAog
LyoKIEBiZWdpbiBKU0RPTVdpbmRvd0Jhc2VUYWJsZQogIyAtLSBGdW5jdGlvbnMgLS0KLSAgYXRv
YiAgICAgICAgICAgICAgICAgIFdlYkNvcmU6OndpbmRvd1Byb3RvRnVuY0FUb0IgICAgICAgICAg
ICAgICAgIERvbnREZWxldGV8RnVuY3Rpb24gMQotICBidG9hICAgICAgICAgICAgICAgICAgV2Vi
Q29yZTo6d2luZG93UHJvdG9GdW5jQlRvQSAgICAgICAgICAgICAgICAgRG9udERlbGV0ZXxGdW5j
dGlvbiAxCi0gIG9wZW4gICAgICAgICAgICAgICAgICBXZWJDb3JlOjp3aW5kb3dQcm90b0Z1bmNP
cGVuICAgICAgICAgICAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDMKLSAgc2V0VGltZW91dCAg
ICAgICAgICAgIFdlYkNvcmU6OndpbmRvd1Byb3RvRnVuY1NldFRpbWVvdXQgICAgICAgICAgIERv
bnREZWxldGV8RnVuY3Rpb24gMgotICBjbGVhclRpbWVvdXQgICAgICAgICAgV2ViQ29yZTo6d2lu
ZG93UHJvdG9GdW5jQ2xlYXJUaW1lb3V0T3JJbnRlcnZhbCBEb250RGVsZXRlfEZ1bmN0aW9uIDEK
LSAgc2V0SW50ZXJ2YWwgICAgICAgICAgIFdlYkNvcmU6OndpbmRvd1Byb3RvRnVuY1NldEludGVy
dmFsICAgICAgICAgIERvbnREZWxldGV8RnVuY3Rpb24gMgotICBjbGVhckludGVydmFsICAgICAg
ICAgV2ViQ29yZTo6d2luZG93UHJvdG9GdW5jQ2xlYXJUaW1lb3V0T3JJbnRlcnZhbCBEb250RGVs
ZXRlfEZ1bmN0aW9uIDEKLSAgYWRkRXZlbnRMaXN0ZW5lciAgICAgIFdlYkNvcmU6OndpbmRvd1By
b3RvRnVuY0FkZEV2ZW50TGlzdGVuZXIgICAgIERvbnREZWxldGV8RnVuY3Rpb24gMwotICByZW1v
dmVFdmVudExpc3RlbmVyICAgV2ViQ29yZTo6d2luZG93UHJvdG9GdW5jUmVtb3ZlRXZlbnRMaXN0
ZW5lciAgRG9udERlbGV0ZXxGdW5jdGlvbiAzCi0gIHNob3dNb2RhbERpYWxvZyAgICAgICBXZWJD
b3JlOjp3aW5kb3dQcm90b0Z1bmNTaG93TW9kYWxEaWFsb2cgICAgICBEb250RGVsZXRlfEZ1bmN0
aW9uIDEKKyAgYXRvYiAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93UHJvdG9GdW5jQVRv
QiAgICAgICAgICAgICAgICAgICAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKKyAgYnRvYSAg
ICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93UHJvdG9GdW5jQlRvQSAgICAgICAgICAgICAg
ICAgICAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKKyAgb3BlbiAgICAgICAgICAgICAgICAg
ICAgICAgICAgd2luZG93UHJvdG9GdW5jT3BlbiAgICAgICAgICAgICAgICAgICAgICAgICBEb250
RGVsZXRlfEZ1bmN0aW9uIDMKKyAgc2V0VGltZW91dCAgICAgICAgICAgICAgICAgICAgd2luZG93
UHJvdG9GdW5jU2V0VGltZW91dCAgICAgICAgICAgICAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9u
IDIKKyAgY2xlYXJUaW1lb3V0ICAgICAgICAgICAgICAgICAgd2luZG93UHJvdG9GdW5jQ2xlYXJU
aW1lb3V0T3JJbnRlcnZhbCAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKKyAgc2V0SW50ZXJ2
YWwgICAgICAgICAgICAgICAgICAgd2luZG93UHJvdG9GdW5jU2V0SW50ZXJ2YWwgICAgICAgICAg
ICAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDIKKyAgY2xlYXJJbnRlcnZhbCAgICAgICAgICAg
ICAgICAgd2luZG93UHJvdG9GdW5jQ2xlYXJUaW1lb3V0T3JJbnRlcnZhbCAgICAgICBEb250RGVs
ZXRlfEZ1bmN0aW9uIDEKKyAgYWRkRXZlbnRMaXN0ZW5lciAgICAgICAgICAgICAgd2luZG93UHJv
dG9GdW5jQWRkRXZlbnRMaXN0ZW5lciAgICAgICAgIAlEb250RGVsZXRlfEZ1bmN0aW9uIDMKKyAg
cmVtb3ZlRXZlbnRMaXN0ZW5lciAgICAgICAgICAgd2luZG93UHJvdG9GdW5jUmVtb3ZlRXZlbnRM
aXN0ZW5lciAgICAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDMKKyAgc2hvd01vZGFsRGlhbG9n
ICAgICAgICAgICAgICAgd2luZG93UHJvdG9GdW5jU2hvd01vZGFsRGlhbG9nICAgICAgICAgICAg
ICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKICMgTm90IGltcGxlbWVudGVkCi0gIGNhcHR1cmVFdmVu
dHMgICAgICAgICBXZWJDb3JlOjp3aW5kb3dQcm90b0Z1bmNOb3RJbXBsZW1lbnRlZCAgICAgICBE
b250RGVsZXRlfEZ1bmN0aW9uIDAKLSAgcmVsZWFzZUV2ZW50cyAgICAgICAgIFdlYkNvcmU6Ondp
bmRvd1Byb3RvRnVuY05vdEltcGxlbWVudGVkICAgICAgIERvbnREZWxldGV8RnVuY3Rpb24gMAor
ICBjYXB0dXJlRXZlbnRzICAgICAgICAgICAgICAgICB3aW5kb3dQcm90b0Z1bmNOb3RJbXBsZW1l
bnRlZCAgICAgICAgICAgICAgIERvbnREZWxldGV8RnVuY3Rpb24gMAorICByZWxlYXNlRXZlbnRz
ICAgICAgICAgICAgICAgICB3aW5kb3dQcm90b0Z1bmNOb3RJbXBsZW1lbnRlZCAgICAgICAgICAg
ICAgIERvbnREZWxldGV8RnVuY3Rpb24gMAogCiAjIC0tIEF0dHJpYnV0ZXMgLS0KLSAgY3J5cHRv
ICAgICAgICAgICAgICAgIFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6Q3J5cHRvICAgICAgICAg
ICAgIERvbnREZWxldGV8UmVhZE9ubHkKLSAgZXZlbnQgICAgICAgICAgICAgICAgIFdlYkNvcmU6
OkpTRE9NV2luZG93QmFzZTo6RXZlbnRfICAgICAgICAgICAgIERvbnREZWxldGUKKyAgY3J5cHRv
ICAgICAgICAgICAgICAgICAgICAgICAganNET01XaW5kb3dCYXNlQ3J5cHRvICAgICAgICAgICAg
ICAgICAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5CisgIGV2ZW50ICAgICAgICAgICAgICAgICAg
ICAgICAgIGpzRE9NV2luZG93QmFzZUV2ZW50ICAgICAgICAgICAgICAgICAgICAgICAgRG9udERl
bGV0ZQogIyAtLSBFdmVudCBMaXN0ZW5lcnMgLS0KLSAgb25hYm9ydCAgICAgICAgICAgICAgIFdl
YkNvcmU6OkpTRE9NV2luZG93QmFzZTo6T25hYm9ydCAgICAgICAgICAgIERvbnREZWxldGUKLSAg
b25ibHVyICAgICAgICAgICAgICAgIFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6T25ibHVyICAg
ICAgICAgICAgIERvbnREZWxldGUKLSAgb25jaGFuZ2UgICAgICAgICAgICAgIFdlYkNvcmU6OkpT
RE9NV2luZG93QmFzZTo6T25jaGFuZ2UgICAgICAgICAgIERvbnREZWxldGUKLSAgb25jbGljayAg
ICAgICAgICAgICAgIFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6T25jbGljayAgICAgICAgICAg
IERvbnREZWxldGUKLSAgb25kYmxjbGljayAgICAgICAgICAgIFdlYkNvcmU6OkpTRE9NV2luZG93
QmFzZTo6T25kYmxjbGljayAgICAgICAgIERvbnREZWxldGUKLSAgb25lcnJvciAgICAgICAgICAg
ICAgIFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6T25lcnJvciAgICAgICAgICAgIERvbnREZWxl
dGUKLSAgb25mb2N1cyAgICAgICAgICAgICAgIFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6T25m
b2N1cyAgICAgICAgICAgIERvbnREZWxldGUKLSAgb25rZXlkb3duICAgICAgICAgICAgIFdlYkNv
cmU6OkpTRE9NV2luZG93QmFzZTo6T25rZXlkb3duICAgICAgICAgIERvbnREZWxldGUKLSAgb25r
ZXlwcmVzcyAgICAgICAgICAgIFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6T25rZXlwcmVzcyAg
ICAgICAgIERvbnREZWxldGUKLSAgb25rZXl1cCAgICAgICAgICAgICAgIFdlYkNvcmU6OkpTRE9N
V2luZG93QmFzZTo6T25rZXl1cCAgICAgICAgICAgIERvbnREZWxldGUKLSAgb25sb2FkICAgICAg
ICAgICAgICAgIFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6T25sb2FkICAgICAgICAgICAgIERv
bnREZWxldGUKLSAgb25tb3VzZWRvd24gICAgICAgICAgIFdlYkNvcmU6OkpTRE9NV2luZG93QmFz
ZTo6T25tb3VzZWRvd24gICAgICAgIERvbnREZWxldGUKLSAgb25tb3VzZW1vdmUgICAgICAgICAg
IFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6T25tb3VzZW1vdmUgICAgICAgIERvbnREZWxldGUK
LSAgb25tb3VzZW91dCAgICAgICAgICAgIFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6T25tb3Vz
ZW91dCAgICAgICAgIERvbnREZWxldGUKLSAgb25tb3VzZW92ZXIgICAgICAgICAgIFdlYkNvcmU6
OkpTRE9NV2luZG93QmFzZTo6T25tb3VzZW92ZXIgICAgICAgIERvbnREZWxldGUKLSAgb25tb3Vz
ZXVwICAgICAgICAgICAgIFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6T25tb3VzZXVwICAgICAg
ICAgIERvbnREZWxldGUKLSAgb25tb3VzZXdoZWVsICAgICAgICAgIFdlYkNvcmU6OkpTRE9NV2lu
ZG93QmFzZTo6T25XaW5kb3dNb3VzZVdoZWVsIERvbnREZWxldGUKLSAgb25yZXNldCAgICAgICAg
ICAgICAgIFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6T25yZXNldCAgICAgICAgICAgIERvbnRE
ZWxldGUKLSAgb25yZXNpemUgICAgICAgICAgICAgIFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6
T25yZXNpemUgICAgICAgICAgIERvbnREZWxldGUKLSAgb25zY3JvbGwgICAgICAgICAgICAgIFdl
YkNvcmU6OkpTRE9NV2luZG93QmFzZTo6T25zY3JvbGwgICAgICAgICAgIERvbnREZWxldGUKLSAg
b25zZWFyY2ggICAgICAgICAgICAgIFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6T25zZWFyY2gg
ICAgICAgICAgIERvbnREZWxldGUKLSAgb25zZWxlY3QgICAgICAgICAgICAgIFdlYkNvcmU6OkpT
RE9NV2luZG93QmFzZTo6T25zZWxlY3QgICAgICAgICAgIERvbnREZWxldGUKLSAgb25zdWJtaXQg
ICAgICAgICAgICAgIFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6T25zdWJtaXQgICAgICAgICAg
IERvbnREZWxldGUKLSAgb251bmxvYWQgICAgICAgICAgICAgIFdlYkNvcmU6OkpTRE9NV2luZG93
QmFzZTo6T251bmxvYWQgICAgICAgICAgIERvbnREZWxldGUKLSAgb25iZWZvcmV1bmxvYWQgICAg
ICAgIFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6T25iZWZvcmV1bmxvYWQgICAgIERvbnREZWxl
dGUKLSAgb253ZWJraXRhbmltYXRpb25zdGFydCAgICBXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6
Ok9uV2ViS2l0QW5pbWF0aW9uU3RhcnQgIERvbnREZWxldGUKLSAgb253ZWJraXRhbmltYXRpb25p
dGVyYXRpb24gICAgIFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6T25XZWJLaXRBbmltYXRpb25J
dGVyYXRpb24gICBEb250RGVsZXRlCi0gIG9ud2Via2l0YW5pbWF0aW9uZW5kICAgICAgV2ViQ29y
ZTo6SlNET01XaW5kb3dCYXNlOjpPbldlYktpdEFuaW1hdGlvbkVuZCAgICBEb250RGVsZXRlCi0g
IG9ud2Via2l0dHJhbnNpdGlvbmVuZCAgICAgV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpPbldl
YktpdFRyYW5zaXRpb25FbmQgICBEb250RGVsZXRlCisgIG9uYWJvcnQgICAgICAgICAgICAgICAg
ICAgICAgIGpzRE9NV2luZG93QmFzZU9uYWJvcnQgICAgICAgICAgICAgICAgICAgICAgRG9udERl
bGV0ZQorICBvbmJsdXIgICAgICAgICAgICAgICAgICAgICAgICBqc0RPTVdpbmRvd0Jhc2VPbmJs
dXIgICAgICAgICAgICAgICAgICAgICAgIERvbnREZWxldGUKKyAgb25jaGFuZ2UgICAgICAgICAg
ICAgICAgICAgICAganNET01XaW5kb3dCYXNlT25jaGFuZ2UgICAgICAgICAgICAgICAgICAgICBE
b250RGVsZXRlCisgIG9uY2xpY2sgICAgICAgICAgICAgICAgICAgICAgIGpzRE9NV2luZG93QmFz
ZU9uY2xpY2sgICAgICAgICAgICAgICAgICAgICAgRG9udERlbGV0ZQorICBvbmRibGNsaWNrICAg
ICAgICAgICAgICAgICAgICBqc0RPTVdpbmRvd0Jhc2VPbmRibGNsaWNrICAgICAgICAgICAgICAg
ICAgIERvbnREZWxldGUKKyAgb25lcnJvciAgICAgICAgICAgICAgICAgICAgICAganNET01XaW5k
b3dCYXNlT25lcnJvciAgICAgICAgICAgICAgICAgICAgICBEb250RGVsZXRlCisgIG9uZm9jdXMg
ICAgICAgICAgICAgICAgICAgICAgIGpzRE9NV2luZG93QmFzZU9uZm9jdXMgICAgICAgICAgICAg
ICAgICAgICAgRG9udERlbGV0ZQorICBvbmtleWRvd24gICAgICAgICAgICAgICAgICAgICBqc0RP
TVdpbmRvd0Jhc2VPbmtleWRvd24gICAgICAgICAgICAgICAgICAgIERvbnREZWxldGUKKyAgb25r
ZXlwcmVzcyAgICAgICAgICAgICAgICAgICAganNET01XaW5kb3dCYXNlT25rZXlwcmVzcyAgICAg
ICAgICAgICAgICAgICBEb250RGVsZXRlCisgIG9ua2V5dXAgICAgICAgICAgICAgICAgICAgICAg
IGpzRE9NV2luZG93QmFzZU9ua2V5dXAgICAgICAgICAgICAgICAgICAgICAgRG9udERlbGV0ZQor
ICBvbmxvYWQgICAgICAgICAgICAgICAgICAgICAgICBqc0RPTVdpbmRvd0Jhc2VPbmxvYWQgICAg
ICAgICAgICAgICAgICAgICAgIERvbnREZWxldGUKKyAgb25tb3VzZWRvd24gICAgICAgICAgICAg
ICAgICAganNET01XaW5kb3dCYXNlT25tb3VzZWRvd24gICAgICAgICAgICAgICAgICBEb250RGVs
ZXRlCisgIG9ubW91c2Vtb3ZlICAgICAgICAgICAgICAgICAgIGpzRE9NV2luZG93QmFzZU9ubW91
c2Vtb3ZlICAgICAgICAgICAgICAgICAgRG9udERlbGV0ZQorICBvbm1vdXNlb3V0ICAgICAgICAg
ICAgICAgICAgICBqc0RPTVdpbmRvd0Jhc2VPbm1vdXNlb3V0ICAgICAgICAgICAgICAgICAgIERv
bnREZWxldGUKKyAgb25tb3VzZW92ZXIgICAgICAgICAgICAgICAgICAganNET01XaW5kb3dCYXNl
T25tb3VzZW92ZXIgICAgICAgICAgICAgICAgICBEb250RGVsZXRlCisgIG9ubW91c2V1cCAgICAg
ICAgICAgICAgICAgICAgIGpzRE9NV2luZG93QmFzZU9ubW91c2V1cCAgICAgICAgICAgICAgICAg
ICAgRG9udERlbGV0ZQorICBvbm1vdXNld2hlZWwgICAgICAgICAgICAgICAgICBqc0RPTVdpbmRv
d0Jhc2VPbk1vdXNlV2hlZWwgICAgICAgICAgICAgICAgIERvbnREZWxldGUKKyAgb25yZXNldCAg
ICAgICAgICAgICAgICAgICAgICAganNET01XaW5kb3dCYXNlT25yZXNldCAgICAgICAgICAgICAg
ICAgICAgICBEb250RGVsZXRlCisgIG9ucmVzaXplICAgICAgICAgICAgICAgICAgICAgIGpzRE9N
V2luZG93QmFzZU9ucmVzaXplICAgICAgICAgICAgICAgICAgICAgRG9udERlbGV0ZQorICBvbnNj
cm9sbCAgICAgICAgICAgICAgICAgICAgICBqc0RPTVdpbmRvd0Jhc2VPbnNjcm9sbCAgICAgICAg
ICAgICAgICAgICAgIERvbnREZWxldGUKKyAgb25zZWFyY2ggICAgICAgICAgICAgICAgICAgICAg
anNET01XaW5kb3dCYXNlT25zZWFyY2ggICAgICAgICAgICAgICAgICAgICBEb250RGVsZXRlCisg
IG9uc2VsZWN0ICAgICAgICAgICAgICAgICAgICAgIGpzRE9NV2luZG93QmFzZU9uc2VsZWN0ICAg
ICAgICAgICAgICAgICAgICAgRG9udERlbGV0ZQorICBvbnN1Ym1pdCAgICAgICAgICAgICAgICAg
ICAgICBqc0RPTVdpbmRvd0Jhc2VPbnN1Ym1pdCAgICAgICAgICAgICAgICAgICAgIERvbnREZWxl
dGUKKyAgb251bmxvYWQgICAgICAgICAgICAgICAgICAgICAganNET01XaW5kb3dCYXNlT251bmxv
YWQgICAgICAgICAgICAgICAgICAgICBEb250RGVsZXRlCisgIG9uYmVmb3JldW5sb2FkICAgICAg
ICAgICAgICAgIGpzRE9NV2luZG93QmFzZU9uYmVmb3JldW5sb2FkICAgICAgICAgICAgICAgRG9u
dERlbGV0ZQorICBvbndlYmtpdGFuaW1hdGlvbnN0YXJ0ICAgICAgICBqc0RPTVdpbmRvd0Jhc2VP
bldlYktpdEFuaW1hdGlvblN0YXJ0ICAgICAgIERvbnREZWxldGUKKyAgb253ZWJraXRhbmltYXRp
b25pdGVyYXRpb24gICAganNET01XaW5kb3dCYXNlT25XZWJLaXRBbmltYXRpb25JdGVyYXRpb24g
ICBEb250RGVsZXRlCisgIG9ud2Via2l0YW5pbWF0aW9uZW5kICAgICAgICAgIGpzRE9NV2luZG93
QmFzZU9uV2ViS2l0QW5pbWF0aW9uRW5kICAgICAgICAgRG9udERlbGV0ZQorICBvbndlYmtpdHRy
YW5zaXRpb25lbmQgICAgICAgICBqc0RPTVdpbmRvd0Jhc2VPbldlYktpdFRyYW5zaXRpb25FbmQg
ICAgICAgIERvbnREZWxldGUKICMgLS0gQ29uc3RydWN0b3JzIC0tCi0gIEF1ZGlvICAgICAgICAg
ICAgICAgICBXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OkF1ZGlvICAgICAgICAgICAgICBEb250
RGVsZXRlCi0gIEltYWdlICAgICAgICAgICAgICAgICBXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6
OkltYWdlICAgICAgICAgICAgICBEb250RGVsZXRlCi0gIE9wdGlvbiAgICAgICAgICAgICAgICBX
ZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6Ok9wdGlvbiAgICAgICAgICAgICBEb250RGVsZXRlCi0g
IFhNTEh0dHBSZXF1ZXN0ICAgICAgICBXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OlhNTEh0dHBS
ZXF1ZXN0ICAgICBEb250RGVsZXRlCi0gIFhTTFRQcm9jZXNzb3IgICAgICAgICBXZWJDb3JlOjpK
U0RPTVdpbmRvd0Jhc2U6OlhTTFRQcm9jZXNzb3IgICAgICBEb250RGVsZXRlCisgIEF1ZGlvICAg
ICAgICAgICAgICAgICAgICAgICAgIGpzRE9NV2luZG93QmFzZUF1ZGlvICAgICAgICAgICAgICAg
ICAgICAgICAgRG9udERlbGV0ZQorICBJbWFnZSAgICAgICAgICAgICAgICAgICAgICAgICBqc0RP
TVdpbmRvd0Jhc2VJbWFnZSAgICAgICAgICAgICAgICAgICAgICAgIERvbnREZWxldGUKKyAgT3B0
aW9uICAgICAgICAgICAgICAgICAgICAgICAganNET01XaW5kb3dCYXNlT3B0aW9uICAgICAgICAg
ICAgICAgICAgICAgICBEb250RGVsZXRlCisgIFhNTEh0dHBSZXF1ZXN0ICAgICAgICAgICAgICAg
IGpzRE9NV2luZG93QmFzZVhNTEh0dHBSZXF1ZXN0ICAgICAgICAgICAgICAgRG9udERlbGV0ZQor
ICBYU0xUUHJvY2Vzc29yICAgICAgICAgICAgICAgICBqc0RPTVdpbmRvd0Jhc2VYU0xUUHJvY2Vz
c29yICAgICAgICAgICAgICAgIERvbnREZWxldGUKIEBlbmQKICovCiAKQEAgLTQzMSwxMTggKzUw
MywyNjggQEAgc3RhdGljIEpTVmFsdWUqIHNob3dNb2RhbERpYWxvZyhFeGVjU3RhdAogICAgIHJl
dHVybiByZXR1cm5WYWx1ZSA/IHJldHVyblZhbHVlIDoganNVbmRlZmluZWQoKTsKIH0KIAotSlNW
YWx1ZSAqSlNET01XaW5kb3dCYXNlOjpnZXRWYWx1ZVByb3BlcnR5KEV4ZWNTdGF0ZSAqZXhlYywg
aW50IHRva2VuKSBjb25zdAorSlNWYWx1ZSoganNET01XaW5kb3dCYXNlQ3J5cHRvKEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKQogewotICAgIEFTU0VS
VChpbXBsKCktPmZyYW1lKCkpOworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOyAvLyBGSVhNRTog
aW1wbGVtZW50IHRoaXMKK30KIAotICAgIHN3aXRjaCAodG9rZW4pIHsKLSAgICBjYXNlIENyeXB0
bzoKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7IC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhp
cwotICAgIGNhc2UgRXZlbnRfOgotICAgICAgICBpZiAoIWFsbG93c0FjY2Vzc0Zyb20oZXhlYykp
Ci0gICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICAgICAgaWYgKCFkKCktPmV2
dCkKLSAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgICAgICByZXR1cm4gdG9K
UyhleGVjLCBkKCktPmV2dCk7Ci0gICAgY2FzZSBJbWFnZToKLSAgICAgICAgaWYgKCFhbGxvd3NB
Y2Nlc3NGcm9tKGV4ZWMpKQotICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAg
ICAgIC8vIEZJWE1FOiB0aGlzIHByb3BlcnR5IChhbmQgdGhlIGZldyBiZWxvdykgcHJvYmFibHkg
c2hvdWxkbid0IGNyZWF0ZSBhIG5ldyBvYmplY3QgZXZlcnkKLSAgICAgICAgLy8gdGltZQotICAg
ICAgICByZXR1cm4gbmV3IChleGVjKSBKU0ltYWdlQ29uc3RydWN0b3IoZXhlYywgaW1wbCgpLT5m
cmFtZSgpLT5kb2N1bWVudCgpKTsKLSAgICBjYXNlIE9wdGlvbjoKLSAgICAgICAgaWYgKCFhbGxv
d3NBY2Nlc3NGcm9tKGV4ZWMpKQotICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0g
ICAgICAgIHJldHVybiBuZXcgKGV4ZWMpIEpTSFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3Rvcihl
eGVjLCBpbXBsKCktPmZyYW1lKCktPmRvY3VtZW50KCkpOwotICAgIGNhc2UgWE1MSHR0cFJlcXVl
c3Q6Ci0gICAgICAgIGlmICghYWxsb3dzQWNjZXNzRnJvbShleGVjKSkKLSAgICAgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwotICAgICAgICByZXR1cm4gbmV3IChleGVjKSBKU1hNTEh0dHBS
ZXF1ZXN0Q29uc3RydWN0b3IoZXhlYywgaW1wbCgpLT5mcmFtZSgpLT5kb2N1bWVudCgpKTsKLSAg
ICBjYXNlIEF1ZGlvOgorSlNWYWx1ZSoganNET01XaW5kb3dCYXNlRXZlbnQoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90KQoreworICAg
IGlmICghc3RhdGljX2Nhc3Q8SlNET01XaW5kb3dCYXNlKj4oc2xvdC5zbG90QmFzZSgpKS0+YWxs
b3dzQWNjZXNzRnJvbShleGVjKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAg
aWYgKCFzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd0Jhc2UqPihzbG90LnNsb3RCYXNlKCkpLT5jdXJy
ZW50RXZlbnQoKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIHRv
SlMoZXhlYywgc3RhdGljX2Nhc3Q8SlNET01XaW5kb3dCYXNlKj4oc2xvdC5zbG90QmFzZSgpKS0+
Y3VycmVudEV2ZW50KCkpOworfQorCisvLyBGSVhNRTogdGhpcyBwcm9wZXJ0eSAoYW5kIHRoZSBm
ZXcgYmVsb3cpIHByb2JhYmx5IHNob3VsZG4ndCBjcmVhdGUgYSBuZXcgb2JqZWN0IGV2ZXJ5Cisv
LyB0aW1lCitKU1ZhbHVlKiBqc0RPTVdpbmRvd0Jhc2VJbWFnZShFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgaWYgKCFz
dGF0aWNfY2FzdDxKU0RPTVdpbmRvd0Jhc2UqPihzbG90LnNsb3RCYXNlKCkpLT5hbGxvd3NBY2Nl
c3NGcm9tKGV4ZWMpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICByZXR1cm4g
bmV3IChleGVjKSBKU0ltYWdlQ29uc3RydWN0b3IoZXhlYywgc3RhdGljX2Nhc3Q8SlNET01XaW5k
b3dCYXNlKj4oc2xvdC5zbG90QmFzZSgpKS0+aW1wbCgpLT5mcmFtZSgpLT5kb2N1bWVudCgpKTsK
K30KKworSlNWYWx1ZSoganNET01XaW5kb3dCYXNlT3B0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBpZiAoIXN0
YXRpY19jYXN0PEpTRE9NV2luZG93QmFzZSo+KHNsb3Quc2xvdEJhc2UoKSktPmFsbG93c0FjY2Vz
c0Zyb20oZXhlYykpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIHJldHVybiBu
ZXcgKGV4ZWMpIEpTSFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3RvcihleGVjLCBzdGF0aWNfY2Fz
dDxKU0RPTVdpbmRvd0Jhc2UqPihzbG90LnNsb3RCYXNlKCkpLT5pbXBsKCktPmZyYW1lKCktPmRv
Y3VtZW50KCkpOworfQorCitKU1ZhbHVlKiBqc0RPTVdpbmRvd0Jhc2VYTUxIdHRwUmVxdWVzdChF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNs
b3QpCit7CisgICAgaWYgKCFzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd0Jhc2UqPihzbG90LnNsb3RC
YXNlKCkpLT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKQorICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKKyAgICByZXR1cm4gbmV3IChleGVjKSBKU1hNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3Io
ZXhlYywgc3RhdGljX2Nhc3Q8SlNET01XaW5kb3dCYXNlKj4oc2xvdC5zbG90QmFzZSgpKS0+aW1w
bCgpLT5mcmFtZSgpLT5kb2N1bWVudCgpKTsKK30KKworSlNWYWx1ZSoganNET01XaW5kb3dCYXNl
QXVkaW8oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlT
bG90JiBzbG90KQorewogI2lmIEVOQUJMRShWSURFTykKLSAgICAgICAgaWYgKCFhbGxvd3NBY2Nl
c3NGcm9tKGV4ZWMpKQotICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgICAg
IGlmICghTWVkaWFQbGF5ZXI6OmlzQXZhaWxhYmxlKCkpCi0gICAgICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKLSAgICAgICAgcmV0dXJuIG5ldyAoZXhlYykgSlNBdWRpb0NvbnN0cnVjdG9y
KGV4ZWMsIGltcGwoKS0+ZnJhbWUoKS0+ZG9jdW1lbnQoKSk7Ci0jZWxzZQorICAgIGlmICghc3Rh
dGljX2Nhc3Q8SlNET01XaW5kb3dCYXNlKj4oc2xvdC5zbG90QmFzZSgpKS0+YWxsb3dzQWNjZXNz
RnJvbShleGVjKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgaWYgKCFNZWRp
YVBsYXllcjo6aXNBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cisg
ICAgcmV0dXJuIG5ldyAoZXhlYykgSlNBdWRpb0NvbnN0cnVjdG9yKGV4ZWMsIHN0YXRpY19jYXN0
PEpTRE9NV2luZG93QmFzZSo+KHNsb3Quc2xvdEJhc2UoKSktPmltcGwoKS0+ZnJhbWUoKS0+ZG9j
dW1lbnQoKSk7CisjZWxzZQorICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogI2VuZGlmCi0gICAg
Y2FzZSBYU0xUUHJvY2Vzc29yOgorfQorCitKU1ZhbHVlKiBqc0RPTVdpbmRvd0Jhc2VYU0xUUHJv
Y2Vzc29yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5
U2xvdCYgc2xvdCkKK3sKICNpZiBFTkFCTEUoWFNMVCkKLSAgICAgICAgaWYgKCFhbGxvd3NBY2Nl
c3NGcm9tKGV4ZWMpKQotICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgICAg
IHJldHVybiBuZXcgKGV4ZWMpIEpTWFNMVFByb2Nlc3NvckNvbnN0cnVjdG9yKGV4ZWMpOwotI2Vs
c2UKKyAgICBpZiAoIXN0YXRpY19jYXN0PEpTRE9NV2luZG93QmFzZSo+KHNsb3Quc2xvdEJhc2Uo
KSktPmFsbG93c0FjY2Vzc0Zyb20oZXhlYykpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OworICAgIHJldHVybiBuZXcgKGV4ZWMpIEpTWFNMVFByb2Nlc3NvckNvbnN0cnVjdG9yKGV4ZWMp
OworI2Vsc2UKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICNlbmRpZgotICAgIH0KK30KIAot
ICAgIGlmICghYWxsb3dzQWNjZXNzRnJvbShleGVjKSkKK0pTVmFsdWUqIGpzRE9NV2luZG93QmFz
ZU9uYWJvcnQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVy
dHlTbG90JiBzbG90KQoreworICAgIGlmICghc3RhdGljX2Nhc3Q8SlNET01XaW5kb3dCYXNlKj4o
c2xvdC5zbG90QmFzZSgpKS0+YWxsb3dzQWNjZXNzRnJvbShleGVjKSkKICAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTRE9NV2luZG93QmFzZSo+
KHNsb3Quc2xvdEJhc2UoKSktPmdldExpc3RlbmVyKGV4ZWMsIGFib3J0RXZlbnQpOworfQogCi0g
ICAgc3dpdGNoICh0b2tlbikgewotICAgIGNhc2UgT25hYm9ydDoKLSAgICAgICAgcmV0dXJuIGdl
dExpc3RlbmVyKGV4ZWMsIGFib3J0RXZlbnQpOwotICAgIGNhc2UgT25ibHVyOgotICAgICAgICBy
ZXR1cm4gZ2V0TGlzdGVuZXIoZXhlYywgYmx1ckV2ZW50KTsKLSAgICBjYXNlIE9uY2hhbmdlOgot
ICAgICAgICByZXR1cm4gZ2V0TGlzdGVuZXIoZXhlYywgY2hhbmdlRXZlbnQpOwotICAgIGNhc2Ug
T25jbGljazoKLSAgICAgICAgcmV0dXJuIGdldExpc3RlbmVyKGV4ZWMsIGNsaWNrRXZlbnQpOwot
ICAgIGNhc2UgT25kYmxjbGljazoKLSAgICAgICAgcmV0dXJuIGdldExpc3RlbmVyKGV4ZWMsIGRi
bGNsaWNrRXZlbnQpOwotICAgIGNhc2UgT25lcnJvcjoKLSAgICAgICAgcmV0dXJuIGdldExpc3Rl
bmVyKGV4ZWMsIGVycm9yRXZlbnQpOwotICAgIGNhc2UgT25mb2N1czoKLSAgICAgICAgcmV0dXJu
IGdldExpc3RlbmVyKGV4ZWMsIGZvY3VzRXZlbnQpOwotICAgIGNhc2UgT25rZXlkb3duOgotICAg
ICAgICByZXR1cm4gZ2V0TGlzdGVuZXIoZXhlYywga2V5ZG93bkV2ZW50KTsKLSAgICBjYXNlIE9u
a2V5cHJlc3M6Ci0gICAgICAgIHJldHVybiBnZXRMaXN0ZW5lcihleGVjLCBrZXlwcmVzc0V2ZW50
KTsKLSAgICBjYXNlIE9ua2V5dXA6Ci0gICAgICAgIHJldHVybiBnZXRMaXN0ZW5lcihleGVjLCBr
ZXl1cEV2ZW50KTsKLSAgICBjYXNlIE9ubG9hZDoKLSAgICAgICAgcmV0dXJuIGdldExpc3RlbmVy
KGV4ZWMsIGxvYWRFdmVudCk7Ci0gICAgY2FzZSBPbm1vdXNlZG93bjoKLSAgICAgICAgcmV0dXJu
IGdldExpc3RlbmVyKGV4ZWMsIG1vdXNlZG93bkV2ZW50KTsKLSAgICBjYXNlIE9ubW91c2Vtb3Zl
OgotICAgICAgICByZXR1cm4gZ2V0TGlzdGVuZXIoZXhlYywgbW91c2Vtb3ZlRXZlbnQpOwotICAg
IGNhc2UgT25tb3VzZW91dDoKLSAgICAgICAgcmV0dXJuIGdldExpc3RlbmVyKGV4ZWMsIG1vdXNl
b3V0RXZlbnQpOwotICAgIGNhc2UgT25tb3VzZW92ZXI6Ci0gICAgICAgIHJldHVybiBnZXRMaXN0
ZW5lcihleGVjLCBtb3VzZW92ZXJFdmVudCk7Ci0gICAgY2FzZSBPbm1vdXNldXA6Ci0gICAgICAg
IHJldHVybiBnZXRMaXN0ZW5lcihleGVjLCBtb3VzZXVwRXZlbnQpOwotICAgIGNhc2UgT25XaW5k
b3dNb3VzZVdoZWVsOgotICAgICAgICByZXR1cm4gZ2V0TGlzdGVuZXIoZXhlYywgbW91c2V3aGVl
bEV2ZW50KTsKLSAgICBjYXNlIE9ucmVzZXQ6Ci0gICAgICAgIHJldHVybiBnZXRMaXN0ZW5lcihl
eGVjLCByZXNldEV2ZW50KTsKLSAgICBjYXNlIE9ucmVzaXplOgotICAgICAgICByZXR1cm4gZ2V0
TGlzdGVuZXIoZXhlYyxyZXNpemVFdmVudCk7Ci0gICAgY2FzZSBPbnNjcm9sbDoKLSAgICAgICAg
cmV0dXJuIGdldExpc3RlbmVyKGV4ZWMsc2Nyb2xsRXZlbnQpOwotICAgIGNhc2UgT25zZWFyY2g6
Ci0gICAgICAgIHJldHVybiBnZXRMaXN0ZW5lcihleGVjLHNlYXJjaEV2ZW50KTsKLSAgICBjYXNl
IE9uc2VsZWN0OgotICAgICAgICByZXR1cm4gZ2V0TGlzdGVuZXIoZXhlYyxzZWxlY3RFdmVudCk7
Ci0gICAgY2FzZSBPbnN1Ym1pdDoKLSAgICAgICAgcmV0dXJuIGdldExpc3RlbmVyKGV4ZWMsc3Vi
bWl0RXZlbnQpOwotICAgIGNhc2UgT25iZWZvcmV1bmxvYWQ6Ci0gICAgICAgIHJldHVybiBnZXRM
aXN0ZW5lcihleGVjLCBiZWZvcmV1bmxvYWRFdmVudCk7Ci0gICAgY2FzZSBPbnVubG9hZDoKLSAg
ICAgICAgcmV0dXJuIGdldExpc3RlbmVyKGV4ZWMsIHVubG9hZEV2ZW50KTsKLSAgICBjYXNlIE9u
V2ViS2l0QW5pbWF0aW9uU3RhcnQ6Ci0gICAgICAgIHJldHVybiBnZXRMaXN0ZW5lcihleGVjLCB3
ZWJraXRBbmltYXRpb25TdGFydEV2ZW50KTsKLSAgICBjYXNlIE9uV2ViS2l0QW5pbWF0aW9uSXRl
cmF0aW9uOgotICAgICAgICByZXR1cm4gZ2V0TGlzdGVuZXIoZXhlYywgd2Via2l0QW5pbWF0aW9u
SXRlcmF0aW9uRXZlbnQpOwotICAgIGNhc2UgT25XZWJLaXRBbmltYXRpb25FbmQ6Ci0gICAgICAg
IHJldHVybiBnZXRMaXN0ZW5lcihleGVjLCB3ZWJraXRBbmltYXRpb25FbmRFdmVudCk7Ci0gICAg
Y2FzZSBPbldlYktpdFRyYW5zaXRpb25FbmQ6Ci0gICAgICAgIHJldHVybiBnZXRMaXN0ZW5lcihl
eGVjLCB3ZWJraXRUcmFuc2l0aW9uRW5kRXZlbnQpOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK0pTVmFsdWUqIGpzRE9NV2luZG93
QmFzZU9uYmx1cihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgaWYgKCFzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd0Jhc2Uq
PihzbG90LnNsb3RCYXNlKCkpLT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKQorICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNET01XaW5kb3dCYXNl
Kj4oc2xvdC5zbG90QmFzZSgpKS0+Z2V0TGlzdGVuZXIoZXhlYywgYmx1ckV2ZW50KTsKK30KKwor
SlNWYWx1ZSoganNET01XaW5kb3dCYXNlT25jaGFuZ2UoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIGlmICghc3RhdGlj
X2Nhc3Q8SlNET01XaW5kb3dCYXNlKj4oc2xvdC5zbG90QmFzZSgpKS0+YWxsb3dzQWNjZXNzRnJv
bShleGVjKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEpTRE9NV2luZG93QmFzZSo+KHNsb3Quc2xvdEJhc2UoKSktPmdldExpc3RlbmVyKGV4
ZWMsIGNoYW5nZUV2ZW50KTsKK30KKworSlNWYWx1ZSoganNET01XaW5kb3dCYXNlT25jbGljayhF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNs
b3QpCit7CisgICAgaWYgKCFzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd0Jhc2UqPihzbG90LnNsb3RC
YXNlKCkpLT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKQorICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNET01XaW5kb3dCYXNlKj4oc2xvdC5zbG90
QmFzZSgpKS0+Z2V0TGlzdGVuZXIoZXhlYywgY2xpY2tFdmVudCk7Cit9CisKK0pTVmFsdWUqIGpz
RE9NV2luZG93QmFzZU9uZGJsY2xpY2soRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIGlmICghc3RhdGljX2Nhc3Q8SlNE
T01XaW5kb3dCYXNlKj4oc2xvdC5zbG90QmFzZSgpKS0+YWxsb3dzQWNjZXNzRnJvbShleGVjKSkK
KyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpT
RE9NV2luZG93QmFzZSo+KHNsb3Quc2xvdEJhc2UoKSktPmdldExpc3RlbmVyKGV4ZWMsIGRibGNs
aWNrRXZlbnQpOworfQorCitKU1ZhbHVlKiBqc0RPTVdpbmRvd0Jhc2VPbmVycm9yKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCkKK3sK
KyAgICBpZiAoIXN0YXRpY19jYXN0PEpTRE9NV2luZG93QmFzZSo+KHNsb3Quc2xvdEJhc2UoKSkt
PmFsbG93c0FjY2Vzc0Zyb20oZXhlYykpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd0Jhc2UqPihzbG90LnNsb3RCYXNlKCkp
LT5nZXRMaXN0ZW5lcihleGVjLCBlcnJvckV2ZW50KTsKK30KKworSlNWYWx1ZSoganNET01XaW5k
b3dCYXNlT25mb2N1cyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQ
cm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgaWYgKCFzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd0Jh
c2UqPihzbG90LnNsb3RCYXNlKCkpLT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKQorICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNET01XaW5kb3dC
YXNlKj4oc2xvdC5zbG90QmFzZSgpKS0+Z2V0TGlzdGVuZXIoZXhlYywgZm9jdXNFdmVudCk7Cit9
CisKK0pTVmFsdWUqIGpzRE9NV2luZG93QmFzZU9ua2V5ZG93bihFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgaWYgKCFz
dGF0aWNfY2FzdDxKU0RPTVdpbmRvd0Jhc2UqPihzbG90LnNsb3RCYXNlKCkpLT5hbGxvd3NBY2Nl
c3NGcm9tKGV4ZWMpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8SlNET01XaW5kb3dCYXNlKj4oc2xvdC5zbG90QmFzZSgpKS0+Z2V0TGlzdGVu
ZXIoZXhlYywga2V5ZG93bkV2ZW50KTsKK30KKworSlNWYWx1ZSoganNET01XaW5kb3dCYXNlT25r
ZXlwcmVzcyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0
eVNsb3QmIHNsb3QpCit7CisgICAgaWYgKCFzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd0Jhc2UqPihz
bG90LnNsb3RCYXNlKCkpLT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKQorICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNET01XaW5kb3dCYXNlKj4o
c2xvdC5zbG90QmFzZSgpKS0+Z2V0TGlzdGVuZXIoZXhlYywga2V5cHJlc3NFdmVudCk7Cit9CisK
K0pTVmFsdWUqIGpzRE9NV2luZG93QmFzZU9ua2V5dXAoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIGlmICghc3RhdGlj
X2Nhc3Q8SlNET01XaW5kb3dCYXNlKj4oc2xvdC5zbG90QmFzZSgpKS0+YWxsb3dzQWNjZXNzRnJv
bShleGVjKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEpTRE9NV2luZG93QmFzZSo+KHNsb3Quc2xvdEJhc2UoKSktPmdldExpc3RlbmVyKGV4
ZWMsIGtleXVwRXZlbnQpOworfQorCitKU1ZhbHVlKiBqc0RPTVdpbmRvd0Jhc2VPbmxvYWQoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90
KQoreworICAgIGlmICghc3RhdGljX2Nhc3Q8SlNET01XaW5kb3dCYXNlKj4oc2xvdC5zbG90QmFz
ZSgpKS0+YWxsb3dzQWNjZXNzRnJvbShleGVjKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTRE9NV2luZG93QmFzZSo+KHNsb3Quc2xvdEJh
c2UoKSktPmdldExpc3RlbmVyKGV4ZWMsIGxvYWRFdmVudCk7Cit9CisKK0pTVmFsdWUqIGpzRE9N
V2luZG93QmFzZU9ubW91c2Vkb3duKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYs
IGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBpZiAoIXN0YXRpY19jYXN0PEpTRE9N
V2luZG93QmFzZSo+KHNsb3Quc2xvdEJhc2UoKSktPmFsbG93c0FjY2Vzc0Zyb20oZXhlYykpCisg
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU0RP
TVdpbmRvd0Jhc2UqPihzbG90LnNsb3RCYXNlKCkpLT5nZXRMaXN0ZW5lcihleGVjLCBtb3VzZWRv
d25FdmVudCk7Cit9CisKK0pTVmFsdWUqIGpzRE9NV2luZG93QmFzZU9ubW91c2Vtb3ZlKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCkK
K3sKKyAgICBpZiAoIXN0YXRpY19jYXN0PEpTRE9NV2luZG93QmFzZSo+KHNsb3Quc2xvdEJhc2Uo
KSktPmFsbG93c0FjY2Vzc0Zyb20oZXhlYykpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd0Jhc2UqPihzbG90LnNsb3RCYXNl
KCkpLT5nZXRMaXN0ZW5lcihleGVjLCBtb3VzZW1vdmVFdmVudCk7Cit9CisKK0pTVmFsdWUqIGpz
RE9NV2luZG93QmFzZU9ubW91c2VvdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIGlmICghc3RhdGljX2Nhc3Q8SlNE
T01XaW5kb3dCYXNlKj4oc2xvdC5zbG90QmFzZSgpKS0+YWxsb3dzQWNjZXNzRnJvbShleGVjKSkK
KyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpT
RE9NV2luZG93QmFzZSo+KHNsb3Quc2xvdEJhc2UoKSktPmdldExpc3RlbmVyKGV4ZWMsIG1vdXNl
b3V0RXZlbnQpOworfQorCitKU1ZhbHVlKiBqc0RPTVdpbmRvd0Jhc2VPbm1vdXNlb3ZlcihFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
Cit7CisgICAgaWYgKCFzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd0Jhc2UqPihzbG90LnNsb3RCYXNl
KCkpLT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNET01XaW5kb3dCYXNlKj4oc2xvdC5zbG90QmFz
ZSgpKS0+Z2V0TGlzdGVuZXIoZXhlYywgbW91c2VvdmVyRXZlbnQpOworfQorCitKU1ZhbHVlKiBq
c0RPTVdpbmRvd0Jhc2VPbm1vdXNldXAoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIGlmICghc3RhdGljX2Nhc3Q8SlNE
T01XaW5kb3dCYXNlKj4oc2xvdC5zbG90QmFzZSgpKS0+YWxsb3dzQWNjZXNzRnJvbShleGVjKSkK
KyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpT
RE9NV2luZG93QmFzZSo+KHNsb3Quc2xvdEJhc2UoKSktPmdldExpc3RlbmVyKGV4ZWMsIG1vdXNl
dXBFdmVudCk7Cit9CisKK0pTVmFsdWUqIGpzRE9NV2luZG93QmFzZU9uTW91c2VXaGVlbChFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
Cit7CisgICAgaWYgKCFzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd0Jhc2UqPihzbG90LnNsb3RCYXNl
KCkpLT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNET01XaW5kb3dCYXNlKj4oc2xvdC5zbG90QmFz
ZSgpKS0+Z2V0TGlzdGVuZXIoZXhlYywgbW91c2V3aGVlbEV2ZW50KTsKK30KKworSlNWYWx1ZSog
anNET01XaW5kb3dCYXNlT25yZXNldChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgaWYgKCFzdGF0aWNfY2FzdDxKU0RP
TVdpbmRvd0Jhc2UqPihzbG90LnNsb3RCYXNlKCkpLT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKQor
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNE
T01XaW5kb3dCYXNlKj4oc2xvdC5zbG90QmFzZSgpKS0+Z2V0TGlzdGVuZXIoZXhlYywgcmVzZXRF
dmVudCk7Cit9CisKK0pTVmFsdWUqIGpzRE9NV2luZG93QmFzZU9ucmVzaXplKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAg
ICBpZiAoIXN0YXRpY19jYXN0PEpTRE9NV2luZG93QmFzZSo+KHNsb3Quc2xvdEJhc2UoKSktPmFs
bG93c0FjY2Vzc0Zyb20oZXhlYykpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd0Jhc2UqPihzbG90LnNsb3RCYXNlKCkpLT5n
ZXRMaXN0ZW5lcihleGVjLCByZXNpemVFdmVudCk7Cit9CisKK0pTVmFsdWUqIGpzRE9NV2luZG93
QmFzZU9uc2Nyb2xsKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFBy
b3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBpZiAoIXN0YXRpY19jYXN0PEpTRE9NV2luZG93QmFz
ZSo+KHNsb3Quc2xvdEJhc2UoKSktPmFsbG93c0FjY2Vzc0Zyb20oZXhlYykpCisgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd0Jh
c2UqPihzbG90LnNsb3RCYXNlKCkpLT5nZXRMaXN0ZW5lcihleGVjLCBzY3JvbGxFdmVudCk7Cit9
CisKK0pTVmFsdWUqIGpzRE9NV2luZG93QmFzZU9uc2VhcmNoKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBpZiAoIXN0
YXRpY19jYXN0PEpTRE9NV2luZG93QmFzZSo+KHNsb3Quc2xvdEJhc2UoKSktPmFsbG93c0FjY2Vz
c0Zyb20oZXhlYykpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxKU0RPTVdpbmRvd0Jhc2UqPihzbG90LnNsb3RCYXNlKCkpLT5nZXRMaXN0ZW5l
cihleGVjLCBzZWFyY2hFdmVudCk7Cit9CisKK0pTVmFsdWUqIGpzRE9NV2luZG93QmFzZU9uc2Vs
ZWN0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xv
dCYgc2xvdCkKK3sKKyAgICBpZiAoIXN0YXRpY19jYXN0PEpTRE9NV2luZG93QmFzZSo+KHNsb3Qu
c2xvdEJhc2UoKSktPmFsbG93c0FjY2Vzc0Zyb20oZXhlYykpCisgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd0Jhc2UqPihzbG90
LnNsb3RCYXNlKCkpLT5nZXRMaXN0ZW5lcihleGVjLCBzZWxlY3RFdmVudCk7Cit9CisKK0pTVmFs
dWUqIGpzRE9NV2luZG93QmFzZU9uc3VibWl0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRp
ZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBpZiAoIXN0YXRpY19jYXN0
PEpTRE9NV2luZG93QmFzZSo+KHNsb3Quc2xvdEJhc2UoKSktPmFsbG93c0FjY2Vzc0Zyb20oZXhl
YykpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxKU0RPTVdpbmRvd0Jhc2UqPihzbG90LnNsb3RCYXNlKCkpLT5nZXRMaXN0ZW5lcihleGVjLCBz
dWJtaXRFdmVudCk7Cit9CisKK0pTVmFsdWUqIGpzRE9NV2luZG93QmFzZU9uYmVmb3JldW5sb2Fk
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYg
c2xvdCkKK3sKKyAgICBpZiAoIXN0YXRpY19jYXN0PEpTRE9NV2luZG93QmFzZSo+KHNsb3Quc2xv
dEJhc2UoKSktPmFsbG93c0FjY2Vzc0Zyb20oZXhlYykpCisgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd0Jhc2UqPihzbG90LnNs
b3RCYXNlKCkpLT5nZXRMaXN0ZW5lcihleGVjLCBiZWZvcmV1bmxvYWRFdmVudCk7Cit9CisKK0pT
VmFsdWUqIGpzRE9NV2luZG93QmFzZU9udW5sb2FkKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBpZiAoIXN0YXRpY19j
YXN0PEpTRE9NV2luZG93QmFzZSo+KHNsb3Quc2xvdEJhc2UoKSktPmFsbG93c0FjY2Vzc0Zyb20o
ZXhlYykpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxKU0RPTVdpbmRvd0Jhc2UqPihzbG90LnNsb3RCYXNlKCkpLT5nZXRMaXN0ZW5lcihleGVj
LCB1bmxvYWRFdmVudCk7Cit9CisKK0pTVmFsdWUqIGpzRE9NV2luZG93QmFzZU9uV2ViS2l0QW5p
bWF0aW9uU3RhcnQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJv
cGVydHlTbG90JiBzbG90KQoreworICAgIGlmICghc3RhdGljX2Nhc3Q8SlNET01XaW5kb3dCYXNl
Kj4oc2xvdC5zbG90QmFzZSgpKS0+YWxsb3dzQWNjZXNzRnJvbShleGVjKSkKKyAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTRE9NV2luZG93QmFz
ZSo+KHNsb3Quc2xvdEJhc2UoKSktPmdldExpc3RlbmVyKGV4ZWMsIHdlYmtpdEFuaW1hdGlvblN0
YXJ0RXZlbnQpOworfQorCitKU1ZhbHVlKiBqc0RPTVdpbmRvd0Jhc2VPbldlYktpdEFuaW1hdGlv
bkl0ZXJhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgaWYgKCFzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd0Jhc2Uq
PihzbG90LnNsb3RCYXNlKCkpLT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKQorICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNET01XaW5kb3dCYXNl
Kj4oc2xvdC5zbG90QmFzZSgpKS0+Z2V0TGlzdGVuZXIoZXhlYywgd2Via2l0QW5pbWF0aW9uSXRl
cmF0aW9uRXZlbnQpOworfQorCitKU1ZhbHVlKiBqc0RPTVdpbmRvd0Jhc2VPbldlYktpdEFuaW1h
dGlvbkVuZChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0
eVNsb3QmIHNsb3QpCit7CisgICAgaWYgKCFzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd0Jhc2UqPihz
bG90LnNsb3RCYXNlKCkpLT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKQorICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNET01XaW5kb3dCYXNlKj4o
c2xvdC5zbG90QmFzZSgpKS0+Z2V0TGlzdGVuZXIoZXhlYywgd2Via2l0QW5pbWF0aW9uRW5kRXZl
bnQpOworfQorCitKU1ZhbHVlKiBqc0RPTVdpbmRvd0Jhc2VPbldlYktpdFRyYW5zaXRpb25FbmQo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90JiBz
bG90KQoreworICAgIGlmICghc3RhdGljX2Nhc3Q8SlNET01XaW5kb3dCYXNlKj4oc2xvdC5zbG90
QmFzZSgpKS0+YWxsb3dzQWNjZXNzRnJvbShleGVjKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTRE9NV2luZG93QmFzZSo+KHNsb3Quc2xv
dEJhc2UoKSktPmdldExpc3RlbmVyKGV4ZWMsIHdlYmtpdFRyYW5zaXRpb25FbmRFdmVudCk7CiB9
CiAKIEpTVmFsdWUqIEpTRE9NV2luZG93QmFzZTo6Y2hpbGRGcmFtZUdldHRlcihFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlTbG90
JiBzbG90KQpAQCAtNTgzLDggKzgwNSw4IEBAIGJvb2wgSlNET01XaW5kb3dCYXNlOjpnZXRPd25Q
cm9wZXJ0eVNsb3QKIAogICAgIGNvbnN0IEhhc2hFbnRyeSogZW50cnkgPSBKU0RPTVdpbmRvd0Jh
c2VUYWJsZS5lbnRyeShleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgIGlmIChlbnRyeSkgewotICAg
ICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMgJiBGdW5jdGlvbikgewotICAgICAgICAgICAgaWYg
KGVudHJ5LT5mdW5jdGlvblZhbHVlID09IHdpbmRvd1Byb3RvRnVuY1Nob3dNb2RhbERpYWxvZykg
eworICAgICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEZ1bmN0aW9uKSB7CisgICAgICAg
ICAgICBpZiAoZW50cnktPmZ1bmN0aW9uKCkgPT0gd2luZG93UHJvdG9GdW5jU2hvd01vZGFsRGlh
bG9nKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFjYW5TaG93TW9kYWxEaWFsb2coaW1wbCgpLT5m
cmFtZSgpKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
fQpAQCAtNTkzLDcgKzgxNSw3IEBAIGJvb2wgSlNET01XaW5kb3dCYXNlOjpnZXRPd25Qcm9wZXJ0
eVNsb3QKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBzbG90LnNldFVuZGVmaW5l
ZCgpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHNsb3Quc2V0U3RhdGljRW50cnkodGhp
cywgZW50cnksIHN0YXRpY1ZhbHVlR2V0dGVyPEpTRE9NV2luZG93QmFzZT4pOworICAgICAgICAg
ICAgc2xvdC5zZXRDdXN0b20odGhpcywgZW50cnktPnByb3BlcnR5R2V0dGVyKCkpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTY0MSwxNDAgKzg2MywyMTggQEAgdm9pZCBKU0RP
TVdpbmRvd0Jhc2U6OnB1dChFeGVjU3RhdGUqIGV4ZQogewogICAgIGNvbnN0IEhhc2hFbnRyeSog
ZW50cnkgPSBKU0RPTVdpbmRvd0Jhc2VUYWJsZS5lbnRyeShleGVjLCBwcm9wZXJ0eU5hbWUpOwog
ICAgIGlmIChlbnRyeSkgewotICAgICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMgJiBGdW5jdGlv
bikgeworICAgICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEZ1bmN0aW9uKSB7CiAgICAg
ICAgICAgICBpZiAoYWxsb3dzQWNjZXNzRnJvbShleGVjKSkKICAgICAgICAgICAgICAgICBCYXNl
OjpwdXQoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzICYgUmVhZE9ubHkp
Ci0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgc3dpdGNoIChlbnRyeS0+aW50ZWdlclZh
bHVlKSB7Ci0gICAgICAgIGNhc2UgT25hYm9ydDoKLSAgICAgICAgICAgIGlmIChhbGxvd3NBY2Nl
c3NGcm9tKGV4ZWMpKQotICAgICAgICAgICAgICAgIHNldExpc3RlbmVyKGV4ZWMsIGFib3J0RXZl
bnQsIHZhbHVlKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBPbmJsdXI6Ci0g
ICAgICAgICAgICBpZiAoYWxsb3dzQWNjZXNzRnJvbShleGVjKSkKLSAgICAgICAgICAgICAgICBz
ZXRMaXN0ZW5lcihleGVjLCBibHVyRXZlbnQsIHZhbHVlKTsKKyAgICAgICAgaWYgKGVudHJ5LT5h
dHRyaWJ1dGVzKCkgJiBSZWFkT25seSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2Fz
ZSBPbmNoYW5nZToKLSAgICAgICAgICAgIGlmIChhbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKQotICAg
ICAgICAgICAgICAgIHNldExpc3RlbmVyKGV4ZWMsIGNoYW5nZUV2ZW50LCB2YWx1ZSk7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgT25jbGljazoKLSAgICAgICAgICAgIGlmIChh
bGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKQotICAgICAgICAgICAgICAgIHNldExpc3RlbmVyKGV4ZWMs
IGNsaWNrRXZlbnQsIHZhbHVlKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBP
bmRibGNsaWNrOgotICAgICAgICAgICAgaWYgKGFsbG93c0FjY2Vzc0Zyb20oZXhlYykpCi0gICAg
ICAgICAgICAgICAgc2V0TGlzdGVuZXIoZXhlYywgZGJsY2xpY2tFdmVudCwgdmFsdWUpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICBjYXNlIE9uZXJyb3I6Ci0gICAgICAgICAgICBpZiAo
YWxsb3dzQWNjZXNzRnJvbShleGVjKSkKLSAgICAgICAgICAgICAgICBzZXRMaXN0ZW5lcihleGVj
LCBlcnJvckV2ZW50LCB2YWx1ZSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNhc2Ug
T25mb2N1czoKLSAgICAgICAgICAgIGlmIChhbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKQotICAgICAg
ICAgICAgICAgIHNldExpc3RlbmVyKGV4ZWMsIGZvY3VzRXZlbnQsIHZhbHVlKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBPbmtleWRvd246Ci0gICAgICAgICAgICBpZiAoYWxs
b3dzQWNjZXNzRnJvbShleGVjKSkKLSAgICAgICAgICAgICAgICBzZXRMaXN0ZW5lcihleGVjLCBr
ZXlkb3duRXZlbnQsIHZhbHVlKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBP
bmtleXByZXNzOgotICAgICAgICAgICAgaWYgKGFsbG93c0FjY2Vzc0Zyb20oZXhlYykpCi0gICAg
ICAgICAgICAgICAgc2V0TGlzdGVuZXIoZXhlYywga2V5cHJlc3NFdmVudCwgdmFsdWUpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICBjYXNlIE9ua2V5dXA6Ci0gICAgICAgICAgICBpZiAo
YWxsb3dzQWNjZXNzRnJvbShleGVjKSkKLSAgICAgICAgICAgICAgICBzZXRMaXN0ZW5lcihleGVj
LCBrZXl1cEV2ZW50LCB2YWx1ZSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNhc2Ug
T25sb2FkOgotICAgICAgICAgICAgaWYgKGFsbG93c0FjY2Vzc0Zyb20oZXhlYykpCi0gICAgICAg
ICAgICAgICAgc2V0TGlzdGVuZXIoZXhlYywgbG9hZEV2ZW50LCB2YWx1ZSk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIGNhc2UgT25tb3VzZWRvd246Ci0gICAgICAgICAgICBpZiAoYWxs
b3dzQWNjZXNzRnJvbShleGVjKSkKLSAgICAgICAgICAgICAgICBzZXRMaXN0ZW5lcihleGVjLCBt
b3VzZWRvd25FdmVudCwgdmFsdWUpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjYXNl
IE9ubW91c2Vtb3ZlOgotICAgICAgICAgICAgaWYgKGFsbG93c0FjY2Vzc0Zyb20oZXhlYykpCi0g
ICAgICAgICAgICAgICAgc2V0TGlzdGVuZXIoZXhlYywgbW91c2Vtb3ZlRXZlbnQsIHZhbHVlKTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBPbm1vdXNlb3V0OgotICAgICAgICAg
ICAgaWYgKGFsbG93c0FjY2Vzc0Zyb20oZXhlYykpCi0gICAgICAgICAgICAgICAgc2V0TGlzdGVu
ZXIoZXhlYywgbW91c2VvdXRFdmVudCwgdmFsdWUpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICBjYXNlIE9ubW91c2VvdmVyOgotICAgICAgICAgICAgaWYgKGFsbG93c0FjY2Vzc0Zyb20o
ZXhlYykpCi0gICAgICAgICAgICAgICAgc2V0TGlzdGVuZXIoZXhlYywgbW91c2VvdmVyRXZlbnQs
IHZhbHVlKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBPbm1vdXNldXA6Ci0g
ICAgICAgICAgICBpZiAoYWxsb3dzQWNjZXNzRnJvbShleGVjKSkKLSAgICAgICAgICAgICAgICBz
ZXRMaXN0ZW5lcihleGVjLCBtb3VzZXVwRXZlbnQsIHZhbHVlKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgY2FzZSBPbldpbmRvd01vdXNlV2hlZWw6Ci0gICAgICAgICAgICBpZiAoYWxs
b3dzQWNjZXNzRnJvbShleGVjKSkKLSAgICAgICAgICAgICAgICBzZXRMaXN0ZW5lcihleGVjLCBt
b3VzZXdoZWVsRXZlbnQsIHZhbHVlKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2Fz
ZSBPbnJlc2V0OgotICAgICAgICAgICAgaWYgKGFsbG93c0FjY2Vzc0Zyb20oZXhlYykpCi0gICAg
ICAgICAgICAgICAgc2V0TGlzdGVuZXIoZXhlYywgcmVzZXRFdmVudCwgdmFsdWUpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBjYXNlIE9ucmVzaXplOgotICAgICAgICAgICAgaWYgKGFs
bG93c0FjY2Vzc0Zyb20oZXhlYykpCi0gICAgICAgICAgICAgICAgc2V0TGlzdGVuZXIoZXhlYywg
cmVzaXplRXZlbnQsIHZhbHVlKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBP
bnNjcm9sbDoKLSAgICAgICAgICAgIGlmIChhbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKQotICAgICAg
ICAgICAgICAgIHNldExpc3RlbmVyKGV4ZWMsIHNjcm9sbEV2ZW50LCB2YWx1ZSk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgT25zZWFyY2g6Ci0gICAgICAgICAgICBpZiAoYWxs
b3dzQWNjZXNzRnJvbShleGVjKSkKLSAgICAgICAgICAgICAgICBzZXRMaXN0ZW5lcihleGVjLCBz
ZWFyY2hFdmVudCwgdmFsdWUpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjYXNlIE9u
c2VsZWN0OgotICAgICAgICAgICAgaWYgKGFsbG93c0FjY2Vzc0Zyb20oZXhlYykpCi0gICAgICAg
ICAgICAgICAgc2V0TGlzdGVuZXIoZXhlYywgc2VsZWN0RXZlbnQsIHZhbHVlKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBPbnN1Ym1pdDoKLSAgICAgICAgICAgIGlmIChhbGxv
d3NBY2Nlc3NGcm9tKGV4ZWMpKQotICAgICAgICAgICAgICAgIHNldExpc3RlbmVyKGV4ZWMsIHN1
Ym1pdEV2ZW50LCB2YWx1ZSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgT25i
ZWZvcmV1bmxvYWQ6Ci0gICAgICAgICAgICBpZiAoYWxsb3dzQWNjZXNzRnJvbShleGVjKSkKLSAg
ICAgICAgICAgICAgICBzZXRMaXN0ZW5lcihleGVjLCBiZWZvcmV1bmxvYWRFdmVudCwgdmFsdWUp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjYXNlIE9udW5sb2FkOgotICAgICAgICAg
ICAgaWYgKGFsbG93c0FjY2Vzc0Zyb20oZXhlYykpCi0gICAgICAgICAgICAgICAgc2V0TGlzdGVu
ZXIoZXhlYywgdW5sb2FkRXZlbnQsIHZhbHVlKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgY2FzZSBPbldlYktpdEFuaW1hdGlvblN0YXJ0OgotICAgICAgICAgICAgaWYgKGFsbG93c0Fj
Y2Vzc0Zyb20oZXhlYykpCi0gICAgICAgICAgICAgICAgc2V0TGlzdGVuZXIoZXhlYywgd2Via2l0
QW5pbWF0aW9uU3RhcnRFdmVudCwgdmFsdWUpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBjYXNlIE9uV2ViS2l0QW5pbWF0aW9uSXRlcmF0aW9uOgotICAgICAgICAgICAgaWYgKGFsbG93
c0FjY2Vzc0Zyb20oZXhlYykpCi0gICAgICAgICAgICAgICAgc2V0TGlzdGVuZXIoZXhlYywgd2Vi
a2l0QW5pbWF0aW9uSXRlcmF0aW9uRXZlbnQsIHZhbHVlKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgY2FzZSBPbldlYktpdEFuaW1hdGlvbkVuZDoKLSAgICAgICAgICAgIGlmIChhbGxv
d3NBY2Nlc3NGcm9tKGV4ZWMpKQotICAgICAgICAgICAgICAgIHNldExpc3RlbmVyKGV4ZWMsIHdl
YmtpdEFuaW1hdGlvbkVuZEV2ZW50LCB2YWx1ZSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIGNhc2UgT25XZWJLaXRUcmFuc2l0aW9uRW5kOgotICAgICAgICAgICAgaWYgKGFsbG93c0Fj
Y2Vzc0Zyb20oZXhlYykpCi0gICAgICAgICAgICAgICAgc2V0TGlzdGVuZXIoZXhlYywgd2Via2l0
VHJhbnNpdGlvbkVuZEV2ZW50LCB2YWx1ZSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQorICAgICAgICBlbnRyeS0+
cHJvcGVydHlQdXR0ZXIoKShleGVjLCB0aGlzLCB2YWx1ZSk7CiAgICAgfQogCiAgICAgaWYgKGFs
bG93c0FjY2Vzc0Zyb20oZXhlYykpCiAgICAgICAgIEJhc2U6OnB1dChleGVjLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCBzbG90KTsKIH0KIAordm9pZCBzZXRKU0RPTVdpbmRvd0Jhc2VFdmVudChFeGVj
U3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqKQoreworfQorCit2b2lkIHNldEpTRE9NV2luZG93
QmFzZU9uYWJvcnQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZU9iamVjdCwgSlNWYWx1
ZSogdmFsdWUpCit7CisgICAgaWYgKHN0YXRpY19jYXN0PEpTRE9NV2luZG93QmFzZSo+KGJhc2VP
YmplY3QpLT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKQorICAgICAgICBzdGF0aWNfY2FzdDxKU0RP
TVdpbmRvd0Jhc2UqPihiYXNlT2JqZWN0KS0+c2V0TGlzdGVuZXIoZXhlYywgYWJvcnRFdmVudCwg
dmFsdWUpOworfQorCit2b2lkIHNldEpTRE9NV2luZG93QmFzZU9uYmx1cihFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBKU1ZhbHVlKiB2YWx1ZSkKK3sKKyAgICBpZiAoc3Rh
dGljX2Nhc3Q8SlNET01XaW5kb3dCYXNlKj4oYmFzZU9iamVjdCktPmFsbG93c0FjY2Vzc0Zyb20o
ZXhlYykpCisgICAgICAgIHN0YXRpY19jYXN0PEpTRE9NV2luZG93QmFzZSo+KGJhc2VPYmplY3Qp
LT5zZXRMaXN0ZW5lcihleGVjLCBibHVyRXZlbnQsIHZhbHVlKTsKK30KKwordm9pZCBzZXRKU0RP
TVdpbmRvd0Jhc2VPbmNoYW5nZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlT2JqZWN0
LCBKU1ZhbHVlKiB2YWx1ZSkKK3sKKyAgICBpZiAoc3RhdGljX2Nhc3Q8SlNET01XaW5kb3dCYXNl
Kj4oYmFzZU9iamVjdCktPmFsbG93c0FjY2Vzc0Zyb20oZXhlYykpCisgICAgICAgIHN0YXRpY19j
YXN0PEpTRE9NV2luZG93QmFzZSo+KGJhc2VPYmplY3QpLT5zZXRMaXN0ZW5lcihleGVjLCBjaGFu
Z2VFdmVudCwgdmFsdWUpOworfQorCit2b2lkIHNldEpTRE9NV2luZG93QmFzZU9uY2xpY2soRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZU9iamVjdCwgSlNWYWx1ZSogdmFsdWUpCit7Cisg
ICAgaWYgKHN0YXRpY19jYXN0PEpTRE9NV2luZG93QmFzZSo+KGJhc2VPYmplY3QpLT5hbGxvd3NB
Y2Nlc3NGcm9tKGV4ZWMpKQorICAgICAgICBzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd0Jhc2UqPihi
YXNlT2JqZWN0KS0+c2V0TGlzdGVuZXIoZXhlYywgY2xpY2tFdmVudCwgdmFsdWUpOworfQorCit2
b2lkIHNldEpTRE9NV2luZG93QmFzZU9uZGJsY2xpY2soRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogYmFzZU9iamVjdCwgSlNWYWx1ZSogdmFsdWUpCit7CisgICAgaWYgKHN0YXRpY19jYXN0PEpT
RE9NV2luZG93QmFzZSo+KGJhc2VPYmplY3QpLT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKQorICAg
ICAgICBzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd0Jhc2UqPihiYXNlT2JqZWN0KS0+c2V0TGlzdGVu
ZXIoZXhlYywgZGJsY2xpY2tFdmVudCwgdmFsdWUpOworfQorCit2b2lkIHNldEpTRE9NV2luZG93
QmFzZU9uZXJyb3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZU9iamVjdCwgSlNWYWx1
ZSogdmFsdWUpCit7CisgICAgaWYgKHN0YXRpY19jYXN0PEpTRE9NV2luZG93QmFzZSo+KGJhc2VP
YmplY3QpLT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKQorICAgICAgICBzdGF0aWNfY2FzdDxKU0RP
TVdpbmRvd0Jhc2UqPihiYXNlT2JqZWN0KS0+c2V0TGlzdGVuZXIoZXhlYywgZXJyb3JFdmVudCwg
dmFsdWUpOworfQorCit2b2lkIHNldEpTRE9NV2luZG93QmFzZU9uZm9jdXMoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogYmFzZU9iamVjdCwgSlNWYWx1ZSogdmFsdWUpCit7CisgICAgaWYgKHN0
YXRpY19jYXN0PEpTRE9NV2luZG93QmFzZSo+KGJhc2VPYmplY3QpLT5hbGxvd3NBY2Nlc3NGcm9t
KGV4ZWMpKQorICAgICAgICBzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd0Jhc2UqPihiYXNlT2JqZWN0
KS0+c2V0TGlzdGVuZXIoZXhlYywgZm9jdXNFdmVudCwgdmFsdWUpOworfQorCit2b2lkIHNldEpT
RE9NV2luZG93QmFzZU9ua2V5ZG93bihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlT2Jq
ZWN0LCBKU1ZhbHVlKiB2YWx1ZSkKK3sKKyAgICBpZiAoc3RhdGljX2Nhc3Q8SlNET01XaW5kb3dC
YXNlKj4oYmFzZU9iamVjdCktPmFsbG93c0FjY2Vzc0Zyb20oZXhlYykpCisgICAgICAgIHN0YXRp
Y19jYXN0PEpTRE9NV2luZG93QmFzZSo+KGJhc2VPYmplY3QpLT5zZXRMaXN0ZW5lcihleGVjLCBr
ZXlkb3duRXZlbnQsIHZhbHVlKTsKK30KKwordm9pZCBzZXRKU0RPTVdpbmRvd0Jhc2VPbmtleXBy
ZXNzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VPYmplY3QsIEpTVmFsdWUqIHZhbHVl
KQoreworICAgIGlmIChzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd0Jhc2UqPihiYXNlT2JqZWN0KS0+
YWxsb3dzQWNjZXNzRnJvbShleGVjKSkKKyAgICAgICAgc3RhdGljX2Nhc3Q8SlNET01XaW5kb3dC
YXNlKj4oYmFzZU9iamVjdCktPnNldExpc3RlbmVyKGV4ZWMsIGtleXByZXNzRXZlbnQsIHZhbHVl
KTsKK30KKwordm9pZCBzZXRKU0RPTVdpbmRvd0Jhc2VPbmtleXVwKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIGJhc2VPYmplY3QsIEpTVmFsdWUqIHZhbHVlKQoreworICAgIGlmIChzdGF0aWNf
Y2FzdDxKU0RPTVdpbmRvd0Jhc2UqPihiYXNlT2JqZWN0KS0+YWxsb3dzQWNjZXNzRnJvbShleGVj
KSkKKyAgICAgICAgc3RhdGljX2Nhc3Q8SlNET01XaW5kb3dCYXNlKj4oYmFzZU9iamVjdCktPnNl
dExpc3RlbmVyKGV4ZWMsIGtleXVwRXZlbnQsIHZhbHVlKTsKK30KKwordm9pZCBzZXRKU0RPTVdp
bmRvd0Jhc2VPbmxvYWQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZU9iamVjdCwgSlNW
YWx1ZSogdmFsdWUpCit7CisgICAgaWYgKHN0YXRpY19jYXN0PEpTRE9NV2luZG93QmFzZSo+KGJh
c2VPYmplY3QpLT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKQorICAgICAgICBzdGF0aWNfY2FzdDxK
U0RPTVdpbmRvd0Jhc2UqPihiYXNlT2JqZWN0KS0+c2V0TGlzdGVuZXIoZXhlYywgbG9hZEV2ZW50
LCB2YWx1ZSk7Cit9CisKK3ZvaWQgc2V0SlNET01XaW5kb3dCYXNlT25tb3VzZWRvd24oRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogYmFzZU9iamVjdCwgSlNWYWx1ZSogdmFsdWUpCit7CisgICAg
aWYgKHN0YXRpY19jYXN0PEpTRE9NV2luZG93QmFzZSo+KGJhc2VPYmplY3QpLT5hbGxvd3NBY2Nl
c3NGcm9tKGV4ZWMpKQorICAgICAgICBzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd0Jhc2UqPihiYXNl
T2JqZWN0KS0+c2V0TGlzdGVuZXIoZXhlYywgbW91c2Vkb3duRXZlbnQsIHZhbHVlKTsKK30KKwor
dm9pZCBzZXRKU0RPTVdpbmRvd0Jhc2VPbm1vdXNlbW92ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiBiYXNlT2JqZWN0LCBKU1ZhbHVlKiB2YWx1ZSkKK3sKKyAgICBpZiAoc3RhdGljX2Nhc3Q8
SlNET01XaW5kb3dCYXNlKj4oYmFzZU9iamVjdCktPmFsbG93c0FjY2Vzc0Zyb20oZXhlYykpCisg
ICAgICAgIHN0YXRpY19jYXN0PEpTRE9NV2luZG93QmFzZSo+KGJhc2VPYmplY3QpLT5zZXRMaXN0
ZW5lcihleGVjLCBtb3VzZW1vdmVFdmVudCwgdmFsdWUpOworfQorCit2b2lkIHNldEpTRE9NV2lu
ZG93QmFzZU9ubW91c2VvdXQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZU9iamVjdCwg
SlNWYWx1ZSogdmFsdWUpCit7CisgICAgaWYgKHN0YXRpY19jYXN0PEpTRE9NV2luZG93QmFzZSo+
KGJhc2VPYmplY3QpLT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKQorICAgICAgICBzdGF0aWNfY2Fz
dDxKU0RPTVdpbmRvd0Jhc2UqPihiYXNlT2JqZWN0KS0+c2V0TGlzdGVuZXIoZXhlYywgbW91c2Vv
dXRFdmVudCwgdmFsdWUpOworfQorCit2b2lkIHNldEpTRE9NV2luZG93QmFzZU9ubW91c2VvdmVy
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VPYmplY3QsIEpTVmFsdWUqIHZhbHVlKQor
eworICAgIGlmIChzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd0Jhc2UqPihiYXNlT2JqZWN0KS0+YWxs
b3dzQWNjZXNzRnJvbShleGVjKSkKKyAgICAgICAgc3RhdGljX2Nhc3Q8SlNET01XaW5kb3dCYXNl
Kj4oYmFzZU9iamVjdCktPnNldExpc3RlbmVyKGV4ZWMsIG1vdXNlb3ZlckV2ZW50LCB2YWx1ZSk7
Cit9CisKK3ZvaWQgc2V0SlNET01XaW5kb3dCYXNlT25tb3VzZXVwKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIGJhc2VPYmplY3QsIEpTVmFsdWUqIHZhbHVlKQoreworICAgIGlmIChzdGF0aWNf
Y2FzdDxKU0RPTVdpbmRvd0Jhc2UqPihiYXNlT2JqZWN0KS0+YWxsb3dzQWNjZXNzRnJvbShleGVj
KSkKKyAgICAgICAgc3RhdGljX2Nhc3Q8SlNET01XaW5kb3dCYXNlKj4oYmFzZU9iamVjdCktPnNl
dExpc3RlbmVyKGV4ZWMsIG1vdXNldXBFdmVudCwgdmFsdWUpOworfQorCit2b2lkIHNldEpTRE9N
V2luZG93QmFzZU9uTW91c2VXaGVlbChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlT2Jq
ZWN0LCBKU1ZhbHVlKiB2YWx1ZSkKK3sKKyAgICBpZiAoc3RhdGljX2Nhc3Q8SlNET01XaW5kb3dC
YXNlKj4oYmFzZU9iamVjdCktPmFsbG93c0FjY2Vzc0Zyb20oZXhlYykpCisgICAgICAgIHN0YXRp
Y19jYXN0PEpTRE9NV2luZG93QmFzZSo+KGJhc2VPYmplY3QpLT5zZXRMaXN0ZW5lcihleGVjLCBt
b3VzZXdoZWVsRXZlbnQsIHZhbHVlKTsKK30KKwordm9pZCBzZXRKU0RPTVdpbmRvd0Jhc2VPbnJl
c2V0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VPYmplY3QsIEpTVmFsdWUqIHZhbHVl
KQoreworICAgIGlmIChzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd0Jhc2UqPihiYXNlT2JqZWN0KS0+
YWxsb3dzQWNjZXNzRnJvbShleGVjKSkKKyAgICAgICAgc3RhdGljX2Nhc3Q8SlNET01XaW5kb3dC
YXNlKj4oYmFzZU9iamVjdCktPnNldExpc3RlbmVyKGV4ZWMsIHJlc2V0RXZlbnQsIHZhbHVlKTsK
K30KKwordm9pZCBzZXRKU0RPTVdpbmRvd0Jhc2VPbnJlc2l6ZShFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiBiYXNlT2JqZWN0LCBKU1ZhbHVlKiB2YWx1ZSkKK3sKKyAgICBpZiAoc3RhdGljX2Nh
c3Q8SlNET01XaW5kb3dCYXNlKj4oYmFzZU9iamVjdCktPmFsbG93c0FjY2Vzc0Zyb20oZXhlYykp
CisgICAgICAgIHN0YXRpY19jYXN0PEpTRE9NV2luZG93QmFzZSo+KGJhc2VPYmplY3QpLT5zZXRM
aXN0ZW5lcihleGVjLCByZXNpemVFdmVudCwgdmFsdWUpOworfQorCit2b2lkIHNldEpTRE9NV2lu
ZG93QmFzZU9uc2Nyb2xsKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VPYmplY3QsIEpT
VmFsdWUqIHZhbHVlKQoreworICAgIGlmIChzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd0Jhc2UqPihi
YXNlT2JqZWN0KS0+YWxsb3dzQWNjZXNzRnJvbShleGVjKSkKKyAgICAgICAgc3RhdGljX2Nhc3Q8
SlNET01XaW5kb3dCYXNlKj4oYmFzZU9iamVjdCktPnNldExpc3RlbmVyKGV4ZWMsIHNjcm9sbEV2
ZW50LCB2YWx1ZSk7Cit9CisKK3ZvaWQgc2V0SlNET01XaW5kb3dCYXNlT25zZWFyY2goRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogYmFzZU9iamVjdCwgSlNWYWx1ZSogdmFsdWUpCit7CisgICAg
aWYgKHN0YXRpY19jYXN0PEpTRE9NV2luZG93QmFzZSo+KGJhc2VPYmplY3QpLT5hbGxvd3NBY2Nl
c3NGcm9tKGV4ZWMpKQorICAgICAgICBzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd0Jhc2UqPihiYXNl
T2JqZWN0KS0+c2V0TGlzdGVuZXIoZXhlYywgc2VhcmNoRXZlbnQsIHZhbHVlKTsKK30KKwordm9p
ZCBzZXRKU0RPTVdpbmRvd0Jhc2VPbnNlbGVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBi
YXNlT2JqZWN0LCBKU1ZhbHVlKiB2YWx1ZSkKK3sKKyAgICBpZiAoc3RhdGljX2Nhc3Q8SlNET01X
aW5kb3dCYXNlKj4oYmFzZU9iamVjdCktPmFsbG93c0FjY2Vzc0Zyb20oZXhlYykpCisgICAgICAg
IHN0YXRpY19jYXN0PEpTRE9NV2luZG93QmFzZSo+KGJhc2VPYmplY3QpLT5zZXRMaXN0ZW5lcihl
eGVjLCBzZWxlY3RFdmVudCwgdmFsdWUpOworfQorCit2b2lkIHNldEpTRE9NV2luZG93QmFzZU9u
c3VibWl0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VPYmplY3QsIEpTVmFsdWUqIHZh
bHVlKQoreworICAgIGlmIChzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd0Jhc2UqPihiYXNlT2JqZWN0
KS0+YWxsb3dzQWNjZXNzRnJvbShleGVjKSkKKyAgICAgICAgc3RhdGljX2Nhc3Q8SlNET01XaW5k
b3dCYXNlKj4oYmFzZU9iamVjdCktPnNldExpc3RlbmVyKGV4ZWMsIHN1Ym1pdEV2ZW50LCB2YWx1
ZSk7Cit9CisKK3ZvaWQgc2V0SlNET01XaW5kb3dCYXNlT25iZWZvcmV1bmxvYWQoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogYmFzZU9iamVjdCwgSlNWYWx1ZSogdmFsdWUpCit7CisgICAgaWYg
KHN0YXRpY19jYXN0PEpTRE9NV2luZG93QmFzZSo+KGJhc2VPYmplY3QpLT5hbGxvd3NBY2Nlc3NG
cm9tKGV4ZWMpKQorICAgICAgICBzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd0Jhc2UqPihiYXNlT2Jq
ZWN0KS0+c2V0TGlzdGVuZXIoZXhlYywgYmVmb3JldW5sb2FkRXZlbnQsIHZhbHVlKTsKK30KKwor
dm9pZCBzZXRKU0RPTVdpbmRvd0Jhc2VPbnVubG9hZChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiBiYXNlT2JqZWN0LCBKU1ZhbHVlKiB2YWx1ZSkKK3sKKyAgICBpZiAoc3RhdGljX2Nhc3Q8SlNE
T01XaW5kb3dCYXNlKj4oYmFzZU9iamVjdCktPmFsbG93c0FjY2Vzc0Zyb20oZXhlYykpCisgICAg
ICAgIHN0YXRpY19jYXN0PEpTRE9NV2luZG93QmFzZSo+KGJhc2VPYmplY3QpLT5zZXRMaXN0ZW5l
cihleGVjLCB1bmxvYWRFdmVudCwgdmFsdWUpOworfQorCit2b2lkIHNldEpTRE9NV2luZG93QmFz
ZU9uV2ViS2l0QW5pbWF0aW9uU3RhcnQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZU9i
amVjdCwgSlNWYWx1ZSogdmFsdWUpCit7CisgICAgaWYgKHN0YXRpY19jYXN0PEpTRE9NV2luZG93
QmFzZSo+KGJhc2VPYmplY3QpLT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKQorICAgICAgICBzdGF0
aWNfY2FzdDxKU0RPTVdpbmRvd0Jhc2UqPihiYXNlT2JqZWN0KS0+c2V0TGlzdGVuZXIoZXhlYywg
d2Via2l0QW5pbWF0aW9uU3RhcnRFdmVudCwgdmFsdWUpOworfQorCit2b2lkIHNldEpTRE9NV2lu
ZG93QmFzZU9uV2ViS2l0QW5pbWF0aW9uSXRlcmF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIGJhc2VPYmplY3QsIEpTVmFsdWUqIHZhbHVlKQoreworICAgIGlmIChzdGF0aWNfY2FzdDxK
U0RPTVdpbmRvd0Jhc2UqPihiYXNlT2JqZWN0KS0+YWxsb3dzQWNjZXNzRnJvbShleGVjKSkKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8SlNET01XaW5kb3dCYXNlKj4oYmFzZU9iamVjdCktPnNldExpc3Rl
bmVyKGV4ZWMsIHdlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkV2ZW50LCB2YWx1ZSk7Cit9CisKK3Zv
aWQgc2V0SlNET01XaW5kb3dCYXNlT25XZWJLaXRBbmltYXRpb25FbmQoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogYmFzZU9iamVjdCwgSlNWYWx1ZSogdmFsdWUpCit7CisgICAgaWYgKHN0YXRp
Y19jYXN0PEpTRE9NV2luZG93QmFzZSo+KGJhc2VPYmplY3QpLT5hbGxvd3NBY2Nlc3NGcm9tKGV4
ZWMpKQorICAgICAgICBzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd0Jhc2UqPihiYXNlT2JqZWN0KS0+
c2V0TGlzdGVuZXIoZXhlYywgd2Via2l0QW5pbWF0aW9uRW5kRXZlbnQsIHZhbHVlKTsKK30KKwor
dm9pZCBzZXRKU0RPTVdpbmRvd0Jhc2VPbldlYktpdFRyYW5zaXRpb25FbmQoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogYmFzZU9iamVjdCwgSlNWYWx1ZSogdmFsdWUpCit7CisgICAgaWYgKHN0
YXRpY19jYXN0PEpTRE9NV2luZG93QmFzZSo+KGJhc2VPYmplY3QpLT5hbGxvd3NBY2Nlc3NGcm9t
KGV4ZWMpKQorICAgICAgICBzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd0Jhc2UqPihiYXNlT2JqZWN0
KS0+c2V0TGlzdGVuZXIoZXhlYywgd2Via2l0VHJhbnNpdGlvbkVuZEV2ZW50LCB2YWx1ZSk7Cit9
CisKK3ZvaWQgc2V0SlNET01XaW5kb3dCYXNlQXVkaW8oRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBK
U1ZhbHVlKikKK3sKK30KKwordm9pZCBzZXRKU0RPTVdpbmRvd0Jhc2VJbWFnZShFeGVjU3RhdGUq
LCBKU09iamVjdCosIEpTVmFsdWUqKQoreworfQorCit2b2lkIHNldEpTRE9NV2luZG93QmFzZU9w
dGlvbihFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqKQoreworfQorCit2b2lkIHNldEpT
RE9NV2luZG93QmFzZVhNTEh0dHBSZXF1ZXN0KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1
ZSopCit7Cit9CisKK3ZvaWQgc2V0SlNET01XaW5kb3dCYXNlWFNMVFByb2Nlc3NvcihFeGVjU3Rh
dGUqLCBKU09iamVjdCosIEpTVmFsdWUqKQoreworfQorCiBTdHJpbmcgSlNET01XaW5kb3dCYXNl
Ojpjcm9zc0RvbWFpbkFjY2Vzc0Vycm9yTWVzc2FnZShjb25zdCBKU0dsb2JhbE9iamVjdCogb3Ro
ZXIpIGNvbnN0CiB7CiAgICAgS1VSTCBvcmlnaW5VUkwgPSBhc0pTRE9NV2luZG93KG90aGVyKS0+
aW1wbCgpLT51cmwoKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAko
cmV2aXNpb24gMzY4NzMpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgdm9pZCBkaXNjb25uZWN0RnJhbWUoKTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwg
SlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgSlNDOjpKU1ZhbHVlKiBnZXRWYWx1ZVByb3Bl
cnR5KEpTQzo6RXhlY1N0YXRlKiwgaW50IHRva2VuKSBjb25zdDsKICAgICAgICAgdmlydHVhbCB2
b2lkIHB1dChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU0M6OkpTVmFsdWUqLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOwogCiAgICAgICAgIGlu
dCBpbnN0YWxsVGltZW91dChjb25zdCBKU0M6OlVTdHJpbmcmIGhhbmRsZXIsIGludCB0LCBib29s
IHNpbmdsZVNob3QpOwpAQCAtMTMxLDI1ICsxMzAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIEpTRE9NU3RydWN0dXJlTWFwJiBzdHJ1Y3R1cmVzKCkgeyByZXR1cm4gZCgpLT5zdHJ1
Y3R1cmVzOyB9CiAgICAgICAgIEpTRE9NQ29uc3RydWN0b3JNYXAmIGNvbnN0cnVjdG9ycygpIHsg
cmV0dXJuIGQoKS0+Y29uc3RydWN0b3JzOyB9CiAKLSAgICAgICAgZW51bSB7Ci0gICAgICAgICAg
ICAvLyBBdHRyaWJ1dGVzCi0gICAgICAgICAgICBDcnlwdG8sIEV2ZW50XywKLQotICAgICAgICAg
ICAgLy8gRXZlbnQgTGlzdGVuZXJzCi0gICAgICAgICAgICBPbmFib3J0LCBPbmJsdXIsIE9uY2hh
bmdlLCBPbmNsaWNrLAotICAgICAgICAgICAgT25kYmxjbGljaywgT25lcnJvciwgT25mb2N1cywg
T25rZXlkb3duLAotICAgICAgICAgICAgT25rZXlwcmVzcywgT25rZXl1cCwgT25sb2FkLCBPbm1v
dXNlZG93biwKLSAgICAgICAgICAgIE9ubW91c2Vtb3ZlLCBPbm1vdXNlb3V0LCBPbm1vdXNlb3Zl
ciwgT25tb3VzZXVwLAotICAgICAgICAgICAgT25XaW5kb3dNb3VzZVdoZWVsLCBPbnJlc2V0LCBP
bnJlc2l6ZSwgT25zY3JvbGwsCi0gICAgICAgICAgICBPbnNlYXJjaCwgT25zZWxlY3QsIE9uc3Vi
bWl0LCBPbnVubG9hZCwKLSAgICAgICAgICAgIE9uYmVmb3JldW5sb2FkLAotICAgICAgICAgICAg
T25XZWJLaXRBbmltYXRpb25TdGFydCwgT25XZWJLaXRBbmltYXRpb25JdGVyYXRpb24sIE9uV2Vi
S2l0QW5pbWF0aW9uRW5kLAotICAgICAgICAgICAgT25XZWJLaXRUcmFuc2l0aW9uRW5kLAotCi0g
ICAgICAgICAgICAvLyBDb25zdHJ1Y3RvcnMKLSAgICAgICAgICAgIEF1ZGlvLCBJbWFnZSwgT3B0
aW9uLCBYTUxIdHRwUmVxdWVzdCwgWFNMVFByb2Nlc3NvcgotICAgICAgICB9OwotCisgICAgICAg
IEpTQzo6SlNWYWx1ZSogZ2V0TGlzdGVuZXIoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0TGlzdGVuZXIoSlNDOjpF
eGVjU3RhdGUqLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgSlNDOjpKU1ZhbHVlKiBm
dW5jdGlvbik7CiAgICAgcHJpdmF0ZToKICAgICAgICAgc3RydWN0IEpTRE9NV2luZG93QmFzZURh
dGEgOiBwdWJsaWMgSlNHbG9iYWxPYmplY3REYXRhIHsKICAgICAgICAgICAgIEpTRE9NV2luZG93
QmFzZURhdGEoUGFzc1JlZlB0cjxET01XaW5kb3c+LCBKU0RPTVdpbmRvd0Jhc2UqLCBKU0RPTVdp
bmRvd1NoZWxsKik7CkBAIC0xNzAsOSArMTUyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICAgICAgSlNET01TdHJ1Y3R1cmVNYXAgc3RydWN0dXJlczsKICAgICAgICAgICAgIEpTRE9N
Q29uc3RydWN0b3JNYXAgY29uc3RydWN0b3JzOwogICAgICAgICB9OwotICAgICAgICAKLSAgICAg
ICAgSlNDOjpKU1ZhbHVlKiBnZXRMaXN0ZW5lcihKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlKSBjb25zdDsKLSAgICAgICAgdm9pZCBzZXRMaXN0ZW5lcihKU0M6
OkV4ZWNTdGF0ZSosIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBKU0M6OkpTVmFsdWUq
IGZ1bmN0aW9uKTsKIAogICAgICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlKiBjaGlsZEZyYW1lR2V0
dGVyKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgY29uc3QgSlNDOjpQ
cm9wZXJ0eVNsb3QmKTsKICAgICAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSogaW5kZXhHZXR0ZXIo
SlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBjb25zdCBKU0M6OlByb3Bl
cnR5U2xvdCYpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5j
cHAJKHJldmlzaW9uIDM2ODczKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1
c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDkgKzI4LDEwIEBACiAjaW5jbHVkZSAiRnJh
bWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZVRyZWUuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRv
d1NoZWxsLmgiCi0jaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9s
bGVyLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlIDxranMvSlNPYmplY3QuaD4K
KyNpbmNsdWRlIDxranMvUHJvdG90eXBlRnVuY3Rpb24uaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpT
QzsKIApAQCAtMTk1LDQgKzE5NiwyNCBAQCBET01XaW5kb3cqIHRvRE9NV2luZG93KEpTVmFsdWUq
IHZhbCkKICAgICByZXR1cm4gMDsKIH0KIAorSlNWYWx1ZSogbm9uQ2FjaGluZ1N0YXRpY0Nsb3Nl
RnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICByZXR1cm4gbmV3IChleGVj
KSBQcm90b3R5cGVGdW5jdGlvbihleGVjLCAwLCBwcm9wZXJ0eU5hbWUsIGpzRE9NV2luZG93UHJv
dG90eXBlRnVuY3Rpb25DbG9zZSk7Cit9CisKK0pTVmFsdWUqIG5vbkNhY2hpbmdTdGF0aWNCbHVy
RnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICByZXR1cm4gbmV3IChleGVj
KSBQcm90b3R5cGVGdW5jdGlvbihleGVjLCAwLCBwcm9wZXJ0eU5hbWUsIGpzRE9NV2luZG93UHJv
dG90eXBlRnVuY3Rpb25CbHVyKTsKK30KKworSlNWYWx1ZSogbm9uQ2FjaGluZ1N0YXRpY0ZvY3Vz
RnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICByZXR1cm4gbmV3IChleGVj
KSBQcm90b3R5cGVGdW5jdGlvbihleGVjLCAwLCBwcm9wZXJ0eU5hbWUsIGpzRE9NV2luZG93UHJv
dG90eXBlRnVuY3Rpb25Gb2N1cyk7Cit9CisKK0pTVmFsdWUqIG5vbkNhY2hpbmdTdGF0aWNQb3N0
TWVzc2FnZUZ1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgcmV0dXJuIG5l
dyAoZXhlYykgUHJvdG90eXBlRnVuY3Rpb24oZXhlYywgMiwgcHJvcGVydHlOYW1lLCBqc0RPTVdp
bmRvd1Byb3RvdHlwZUZ1bmN0aW9uUG9zdE1lc3NhZ2UpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5oCShyZXZp
c2lvbiAzNjg3MykKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uaAko
d29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsMTEgQEAgaW5saW5lIGNvbnN0IEpTRE9NV2luZG93
KiBhc0pTRE9NV2luZG93KAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU0RPTVdpbmRv
dyo+KGdsb2JhbE9iamVjdCk7CiB9CiAKK0pTQzo6SlNWYWx1ZSogbm9uQ2FjaGluZ1N0YXRpY0Ns
b3NlRnVuY3Rpb25HZXR0ZXIoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXIm
LCBjb25zdCBKU0M6OlByb3BlcnR5U2xvdCYpOworSlNDOjpKU1ZhbHVlKiBub25DYWNoaW5nU3Rh
dGljQmx1ckZ1bmN0aW9uR2V0dGVyKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlm
aWVyJiwgY29uc3QgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKK0pTQzo6SlNWYWx1ZSogbm9uQ2FjaGlu
Z1N0YXRpY0ZvY3VzRnVuY3Rpb25HZXR0ZXIoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6Oklk
ZW50aWZpZXImLCBjb25zdCBKU0M6OlByb3BlcnR5U2xvdCYpOworSlNDOjpKU1ZhbHVlKiBub25D
YWNoaW5nU3RhdGljUG9zdE1lc3NhZ2VGdW5jdGlvbkdldHRlcihKU0M6OkV4ZWNTdGF0ZSosIGNv
bnN0IEpTQzo6SWRlbnRpZmllciYsIGNvbnN0IEpTQzo6UHJvcGVydHlTbG90Jik7CisKIEFMV0FZ
U19JTkxJTkUgYm9vbCBKU0RPTVdpbmRvdzo6Y3VzdG9tR2V0T3duUHJvcGVydHlTbG90KEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlND
OjpQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgLy8gV2hlbiBhY2Nlc3NpbmcgYSBXaW5kb3cg
Y3Jvc3MtZG9tYWluLCBmdW5jdGlvbnMgYXJlIGFsd2F5cyB0aGUgbmF0aXZlIGJ1aWx0LWluIG9u
ZXMsIGFuZCB0aGV5CkBAIC00OCwxMyArNTMsMTMgQEAgQUxXQVlTX0lOTElORSBib29sIEpTRE9N
V2luZG93OjpjdXN0b21HZQogICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGNvZGUgaXMgc2FmZSBm
b3IgY3Jvc3MtZG9tYWluIGFuZCBzYW1lIGRvbWFpbiB1c2UuCiAgICAgICAgIC8vIEl0IGlnbm9y
ZXMgYW55IGN1c3RvbSBwcm9wZXJ0aWVzIHRoYXQgbWlnaHQgYmUgc2V0IG9uIHRoZSBET01XaW5k
b3cgKGluY2x1ZGluZyBhIGN1c3RvbSBwcm90b3R5cGUpLgogICAgICAgICBlbnRyeSA9IHNfaW5m
by5wcm9wSGFzaFRhYmxlKGV4ZWMpLT5lbnRyeShleGVjLCBwcm9wZXJ0eU5hbWUpOwotICAgICAg
ICBpZiAoZW50cnkgJiYgIShlbnRyeS0+YXR0cmlidXRlcyAmIEpTQzo6RnVuY3Rpb24pICYmIGVu
dHJ5LT5pbnRlZ2VyVmFsdWUgPT0gQ2xvc2VkQXR0ck51bSkgewotICAgICAgICAgICAgc2xvdC5z
ZXRTdGF0aWNFbnRyeSh0aGlzLCBlbnRyeSwgSlNDOjpzdGF0aWNWYWx1ZUdldHRlcjxKU0RPTVdp
bmRvdz4pOworICAgICAgICBpZiAoZW50cnkgJiYgIShlbnRyeS0+YXR0cmlidXRlcygpICYgSlND
OjpGdW5jdGlvbikgJiYgZW50cnktPnByb3BlcnR5R2V0dGVyKCkgPT0ganNET01XaW5kb3dDbG9z
ZWQpIHsKKyAgICAgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXMsIGVudHJ5LT5wcm9wZXJ0eUdl
dHRlcigpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIGVu
dHJ5ID0gSlNET01XaW5kb3dQcm90b3R5cGU6OnNfaW5mby5wcm9wSGFzaFRhYmxlKGV4ZWMpLT5l
bnRyeShleGVjLCBwcm9wZXJ0eU5hbWUpOwotICAgICAgICBpZiAoZW50cnkgJiYgKGVudHJ5LT5h
dHRyaWJ1dGVzICYgSlNDOjpGdW5jdGlvbikgJiYgZW50cnktPmZ1bmN0aW9uVmFsdWUgPT0ganNE
T01XaW5kb3dQcm90b3R5cGVGdW5jdGlvbkNsb3NlKSB7Ci0gICAgICAgICAgICBzbG90LnNldFN0
YXRpY0VudHJ5KHRoaXMsIGVudHJ5LCBub25DYWNoaW5nU3RhdGljRnVuY3Rpb25HZXR0ZXIpOwor
ICAgICAgICBpZiAoZW50cnkgJiYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBKU0M6OkZ1bmN0aW9u
KSAmJiBlbnRyeS0+ZnVuY3Rpb24oKSA9PSBqc0RPTVdpbmRvd1Byb3RvdHlwZUZ1bmN0aW9uQ2xv
c2UpIHsKKyAgICAgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXMsIG5vbkNhY2hpbmdTdGF0aWND
bG9zZUZ1bmN0aW9uR2V0dGVyKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
CiAKQEAgLTgyLDE0ICs4NywyNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNET01XaW5kb3c6OmN1
c3RvbUdlCiAgICAgLy8gd2hhdCBwcm90b3R5cGUgaXMgYWN0dWFsbHkgc2V0IG9uIHRoaXMgb2Jq
ZWN0LgogICAgIGVudHJ5ID0gSlNET01XaW5kb3dQcm90b3R5cGU6OnNfaW5mby5wcm9wSGFzaFRh
YmxlKGV4ZWMpLT5lbnRyeShleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgIGlmIChlbnRyeSkgewot
ICAgICAgICBpZiAoKGVudHJ5LT5hdHRyaWJ1dGVzICYgSlNDOjpGdW5jdGlvbikKLSAgICAgICAg
ICAgICAgICAmJiAoZW50cnktPmZ1bmN0aW9uVmFsdWUgPT0ganNET01XaW5kb3dQcm90b3R5cGVG
dW5jdGlvbkJsdXIKLSAgICAgICAgICAgICAgICAgICAgfHwgZW50cnktPmZ1bmN0aW9uVmFsdWUg
PT0ganNET01XaW5kb3dQcm90b3R5cGVGdW5jdGlvbkNsb3NlCi0gICAgICAgICAgICAgICAgICAg
IHx8IGVudHJ5LT5mdW5jdGlvblZhbHVlID09IGpzRE9NV2luZG93UHJvdG90eXBlRnVuY3Rpb25G
b2N1cwotICAgICAgICAgICAgICAgICAgICB8fCBlbnRyeS0+ZnVuY3Rpb25WYWx1ZSA9PSBqc0RP
TVdpbmRvd1Byb3RvdHlwZUZ1bmN0aW9uUG9zdE1lc3NhZ2UpKSB7Ci0gICAgICAgICAgICBpZiAo
IWFsbG93c0FjY2VzcykgewotICAgICAgICAgICAgICAgIHNsb3Quc2V0U3RhdGljRW50cnkodGhp
cywgZW50cnksIG5vbkNhY2hpbmdTdGF0aWNGdW5jdGlvbkdldHRlcik7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgSlNDOjpG
dW5jdGlvbikgeworICAgICAgICAgICAgaWYgKGVudHJ5LT5mdW5jdGlvbigpID09IGpzRE9NV2lu
ZG93UHJvdG90eXBlRnVuY3Rpb25CbHVyKSB7CisgICAgICAgICAgICAgICAgaWYgKCFhbGxvd3NB
Y2Nlc3MpIHsKKyAgICAgICAgICAgICAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpcywgbm9uQ2Fj
aGluZ1N0YXRpY0JsdXJGdW5jdGlvbkdldHRlcik7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZW50cnkt
PmZ1bmN0aW9uKCkgPT0ganNET01XaW5kb3dQcm90b3R5cGVGdW5jdGlvbkNsb3NlKSB7CisgICAg
ICAgICAgICAgICAgaWYgKCFhbGxvd3NBY2Nlc3MpIHsKKyAgICAgICAgICAgICAgICAgICAgc2xv
dC5zZXRDdXN0b20odGhpcywgbm9uQ2FjaGluZ1N0YXRpY0Nsb3NlRnVuY3Rpb25HZXR0ZXIpOwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9IGVsc2UgaWYgKGVudHJ5LT5mdW5jdGlvbigpID09IGpzRE9NV2luZG93UHJvdG90
eXBlRnVuY3Rpb25Gb2N1cykgeworICAgICAgICAgICAgICAgIGlmICghYWxsb3dzQWNjZXNzKSB7
CisgICAgICAgICAgICAgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXMsIG5vbkNhY2hpbmdTdGF0
aWNGb2N1c0Z1bmN0aW9uR2V0dGVyKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChlbnRyeS0+ZnVuY3Rp
b24oKSA9PSBqc0RPTVdpbmRvd1Byb3RvdHlwZUZ1bmN0aW9uUG9zdE1lc3NhZ2UpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoIWFsbG93c0FjY2VzcykgeworICAgICAgICAgICAgICAgICAgICBzbG90
LnNldEN1c3RvbSh0aGlzLCBub25DYWNoaW5nU3RhdGljUG9zdE1lc3NhZ2VGdW5jdGlvbkdldHRl
cik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0gZWxzZSB7CkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRCYXNlLmNwcAkocmV2aXNpb24gMzY4NzMpCisrKyBXZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTMsNTYgKzUzLDExIEBAIHN0YXRpYyBKU1ZhbHVlKiBqc0V2ZW50VGFyZ2V0RGlzcGF0Y2hFdmUK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vKiBTb3VyY2UgZm9yIEpTRXZlbnRUYXJnZXRQcm9w
ZXJ0aWVzVGFibGUKLUBiZWdpbiBKU0V2ZW50VGFyZ2V0UHJvcGVydGllc1RhYmxlCi1vbmFib3J0
ICAgICAgIFdlYkNvcmU6OkpTRXZlbnRUYXJnZXRQcm9wZXJ0aWVzOjpPbkFib3J0ICAgICAgICAg
ICAgICAgIERvbnREZWxldGUKLW9uYmx1ciAgICAgICAgV2ViQ29yZTo6SlNFdmVudFRhcmdldFBy
b3BlcnRpZXM6Ok9uQmx1ciAgICAgICAgICAgICAgICAgRG9udERlbGV0ZQotb25jaGFuZ2UgICAg
ICBXZWJDb3JlOjpKU0V2ZW50VGFyZ2V0UHJvcGVydGllczo6T25DaGFuZ2UgICAgICAgICAgICAg
ICBEb250RGVsZXRlCi1vbmNsaWNrICAgICAgIFdlYkNvcmU6OkpTRXZlbnRUYXJnZXRQcm9wZXJ0
aWVzOjpPbkNsaWNrICAgICAgICAgICAgICAgIERvbnREZWxldGUKLW9uY29udGV4dG1lbnUgV2Vi
Q29yZTo6SlNFdmVudFRhcmdldFByb3BlcnRpZXM6Ok9uQ29udGV4dE1lbnUgICAgICAgICAgRG9u
dERlbGV0ZQotb25kYmxjbGljayAgICBXZWJDb3JlOjpKU0V2ZW50VGFyZ2V0UHJvcGVydGllczo6
T25EYmxDbGljayAgICAgICAgICAgICBEb250RGVsZXRlCi1vbmJlZm9yZWN1dCAgIFdlYkNvcmU6
OkpTRXZlbnRUYXJnZXRQcm9wZXJ0aWVzOjpPbkJlZm9yZUN1dCAgICAgICAgICAgIERvbnREZWxl
dGUKLW9uY3V0ICAgICAgICAgV2ViQ29yZTo6SlNFdmVudFRhcmdldFByb3BlcnRpZXM6Ok9uQ3V0
ICAgICAgICAgICAgICAgICAgRG9udERlbGV0ZQotb25iZWZvcmVjb3B5ICBXZWJDb3JlOjpKU0V2
ZW50VGFyZ2V0UHJvcGVydGllczo6T25CZWZvcmVDb3B5ICAgICAgICAgICBEb250RGVsZXRlCi1v
bmNvcHkgICAgICAgIFdlYkNvcmU6OkpTRXZlbnRUYXJnZXRQcm9wZXJ0aWVzOjpPbkNvcHkgICAg
ICAgICAgICAgICAgIERvbnREZWxldGUKLW9uYmVmb3JlcGFzdGUgV2ViQ29yZTo6SlNFdmVudFRh
cmdldFByb3BlcnRpZXM6Ok9uQmVmb3JlUGFzdGUgICAgICAgICAgRG9udERlbGV0ZQotb25wYXN0
ZSAgICAgICBXZWJDb3JlOjpKU0V2ZW50VGFyZ2V0UHJvcGVydGllczo6T25QYXN0ZSAgICAgICAg
ICAgICAgICBEb250RGVsZXRlCi1vbmRyYWcgICAgICAgIFdlYkNvcmU6OkpTRXZlbnRUYXJnZXRQ
cm9wZXJ0aWVzOjpPbkRyYWcgICAgICAgICAgICAgICAgIERvbnREZWxldGUKLW9uZHJhZ2VuZCAg
ICAgV2ViQ29yZTo6SlNFdmVudFRhcmdldFByb3BlcnRpZXM6Ok9uRHJhZ0VuZCAgICAgICAgICAg
ICAgRG9udERlbGV0ZQotb25kcmFnZW50ZXIgICBXZWJDb3JlOjpKU0V2ZW50VGFyZ2V0UHJvcGVy
dGllczo6T25EcmFnRW50ZXIgICAgICAgICAgICBEb250RGVsZXRlCi1vbmRyYWdsZWF2ZSAgIFdl
YkNvcmU6OkpTRXZlbnRUYXJnZXRQcm9wZXJ0aWVzOjpPbkRyYWdMZWF2ZSAgICAgICAgICAgIERv
bnREZWxldGUKLW9uZHJhZ292ZXIgICAgV2ViQ29yZTo6SlNFdmVudFRhcmdldFByb3BlcnRpZXM6
Ok9uRHJhZ092ZXIgICAgICAgICAgICAgRG9udERlbGV0ZQotb25kcmFnc3RhcnQgICBXZWJDb3Jl
OjpKU0V2ZW50VGFyZ2V0UHJvcGVydGllczo6T25EcmFnU3RhcnQgICAgICAgICAgICBEb250RGVs
ZXRlCi1vbmRyb3AgICAgICAgIFdlYkNvcmU6OkpTRXZlbnRUYXJnZXRQcm9wZXJ0aWVzOjpPbkRy
b3AgICAgICAgICAgICAgICAgIERvbnREZWxldGUKLW9uZXJyb3IgICAgICAgV2ViQ29yZTo6SlNF
dmVudFRhcmdldFByb3BlcnRpZXM6Ok9uRXJyb3IgICAgICAgICAgICAgICAgRG9udERlbGV0ZQot
b25mb2N1cyAgICAgICBXZWJDb3JlOjpKU0V2ZW50VGFyZ2V0UHJvcGVydGllczo6T25Gb2N1cyAg
ICAgICAgICAgICAgICBEb250RGVsZXRlCi1vbmlucHV0ICAgICAgIFdlYkNvcmU6OkpTRXZlbnRU
YXJnZXRQcm9wZXJ0aWVzOjpPbklucHV0ICAgICAgICAgICAgICAgIERvbnREZWxldGUKLW9ua2V5
ZG93biAgICAgV2ViQ29yZTo6SlNFdmVudFRhcmdldFByb3BlcnRpZXM6Ok9uS2V5RG93biAgICAg
ICAgICAgICAgRG9udERlbGV0ZQotb25rZXlwcmVzcyAgICBXZWJDb3JlOjpKU0V2ZW50VGFyZ2V0
UHJvcGVydGllczo6T25LZXlQcmVzcyAgICAgICAgICAgICBEb250RGVsZXRlCi1vbmtleXVwICAg
ICAgIFdlYkNvcmU6OkpTRXZlbnRUYXJnZXRQcm9wZXJ0aWVzOjpPbktleVVwICAgICAgICAgICAg
ICAgIERvbnREZWxldGUKLW9ubG9hZCAgICAgICAgV2ViQ29yZTo6SlNFdmVudFRhcmdldFByb3Bl
cnRpZXM6Ok9uTG9hZCAgICAgICAgICAgICAgICAgRG9udERlbGV0ZQotb25tb3VzZWRvd24gICBX
ZWJDb3JlOjpKU0V2ZW50VGFyZ2V0UHJvcGVydGllczo6T25Nb3VzZURvd24gICAgICAgICAgICBE
b250RGVsZXRlCi1vbm1vdXNlbW92ZSAgIFdlYkNvcmU6OkpTRXZlbnRUYXJnZXRQcm9wZXJ0aWVz
OjpPbk1vdXNlTW92ZSAgICAgICAgICAgIERvbnREZWxldGUKLW9ubW91c2VvdXQgICAgV2ViQ29y
ZTo6SlNFdmVudFRhcmdldFByb3BlcnRpZXM6Ok9uTW91c2VPdXQgICAgICAgICAgICAgRG9udERl
bGV0ZQotb25tb3VzZW92ZXIgICBXZWJDb3JlOjpKU0V2ZW50VGFyZ2V0UHJvcGVydGllczo6T25N
b3VzZU92ZXIgICAgICAgICAgICBEb250RGVsZXRlCi1vbm1vdXNldXAgICAgIFdlYkNvcmU6OkpT
RXZlbnRUYXJnZXRQcm9wZXJ0aWVzOjpPbk1vdXNlVXAgICAgICAgICAgICAgIERvbnREZWxldGUK
LW9ubW91c2V3aGVlbCAgV2ViQ29yZTo6SlNFdmVudFRhcmdldFByb3BlcnRpZXM6Ok9uTW91c2VX
aGVlbCAgICAgICAgICAgRG9udERlbGV0ZQotb25yZXNldCAgICAgICBXZWJDb3JlOjpKU0V2ZW50
VGFyZ2V0UHJvcGVydGllczo6T25SZXNldCAgICAgICAgICAgICAgICBEb250RGVsZXRlCi1vbnJl
c2l6ZSAgICAgIFdlYkNvcmU6OkpTRXZlbnRUYXJnZXRQcm9wZXJ0aWVzOjpPblJlc2l6ZSAgICAg
ICAgICAgICAgIERvbnREZWxldGUKLW9uc2Nyb2xsICAgICAgV2ViQ29yZTo6SlNFdmVudFRhcmdl
dFByb3BlcnRpZXM6Ok9uU2Nyb2xsICAgICAgICAgICAgICAgRG9udERlbGV0ZQotb25zZWFyY2gg
ICAgICBXZWJDb3JlOjpKU0V2ZW50VGFyZ2V0UHJvcGVydGllczo6T25TZWFyY2ggICAgICAgICAg
ICAgICBEb250RGVsZXRlCi1vbnNlbGVjdCAgICAgIFdlYkNvcmU6OkpTRXZlbnRUYXJnZXRQcm9w
ZXJ0aWVzOjpPblNlbGVjdCAgICAgICAgICAgICAgIERvbnREZWxldGUKLW9uc2VsZWN0c3RhcnQg
V2ViQ29yZTo6SlNFdmVudFRhcmdldFByb3BlcnRpZXM6Ok9uU2VsZWN0U3RhcnQgICAgICAgICAg
RG9udERlbGV0ZQotb25zdWJtaXQgICAgICBXZWJDb3JlOjpKU0V2ZW50VGFyZ2V0UHJvcGVydGll
czo6T25TdWJtaXQgICAgICAgICAgICAgICBEb250RGVsZXRlCi1vbnVubG9hZCAgICAgIFdlYkNv
cmU6OkpTRXZlbnRUYXJnZXRQcm9wZXJ0aWVzOjpPblVubG9hZCAgICAgICAgICAgICAgIERvbnRE
ZWxldGUKLUBlbmQKLSovCi0KIC8qCiBAYmVnaW4gSlNFdmVudFRhcmdldFByb3RvdHlwZVRhYmxl
Ci1hZGRFdmVudExpc3RlbmVyICAgICAgICBXZWJDb3JlOjpqc0V2ZW50VGFyZ2V0QWRkRXZlbnRM
aXN0ZW5lciAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDMKLXJlbW92ZUV2ZW50TGlzdGVuZXIgICAg
IFdlYkNvcmU6OmpzRXZlbnRUYXJnZXRSZW1vdmVFdmVudExpc3RlbmVyIERvbnREZWxldGV8RnVu
Y3Rpb24gMwotZGlzcGF0Y2hFdmVudCAgICAgICAgICAgV2ViQ29yZTo6anNFdmVudFRhcmdldERp
c3BhdGNoRXZlbnQgICAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCithZGRFdmVudExpc3RlbmVy
ICAgIGpzRXZlbnRUYXJnZXRBZGRFdmVudExpc3RlbmVyICAgICAgIERvbnREZWxldGV8RnVuY3Rp
b24gMworcmVtb3ZlRXZlbnRMaXN0ZW5lciBqc0V2ZW50VGFyZ2V0UmVtb3ZlRXZlbnRMaXN0ZW5l
ciAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDMKK2Rpc3BhdGNoRXZlbnQgICAgICAganNFdmVudFRh
cmdldERpc3BhdGNoRXZlbnQgICAgICAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCiBAZW5kCiAq
LwogCkBAIC0xODAsOTQgKzEzNSw2IEBAIEpTVmFsdWUqIGpzRXZlbnRUYXJnZXREaXNwYXRjaEV2
ZW50KEV4ZWMKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50TmFtZUZvclByb3BlcnR5VG9rZW4oaW50IHRva2VuKQoteyAgICAKLSAgICBzd2l0Y2ggKHRv
a2VuKSB7Ci0gICAgY2FzZSBKU0V2ZW50VGFyZ2V0UHJvcGVydGllczo6T25BYm9ydDoKLSAgICAg
ICAgcmV0dXJuIGFib3J0RXZlbnQ7Ci0gICAgY2FzZSBKU0V2ZW50VGFyZ2V0UHJvcGVydGllczo6
T25CbHVyOgotICAgICAgICByZXR1cm4gYmx1ckV2ZW50OwotICAgIGNhc2UgSlNFdmVudFRhcmdl
dFByb3BlcnRpZXM6Ok9uQ2hhbmdlOgotICAgICAgICByZXR1cm4gY2hhbmdlRXZlbnQ7Ci0gICAg
Y2FzZSBKU0V2ZW50VGFyZ2V0UHJvcGVydGllczo6T25DbGljazoKLSAgICAgICAgcmV0dXJuIGNs
aWNrRXZlbnQ7Ci0gICAgY2FzZSBKU0V2ZW50VGFyZ2V0UHJvcGVydGllczo6T25Db250ZXh0TWVu
dToKLSAgICAgICAgcmV0dXJuIGNvbnRleHRtZW51RXZlbnQ7Ci0gICAgY2FzZSBKU0V2ZW50VGFy
Z2V0UHJvcGVydGllczo6T25EYmxDbGljazoKLSAgICAgICAgcmV0dXJuIGRibGNsaWNrRXZlbnQ7
Ci0gICAgY2FzZSBKU0V2ZW50VGFyZ2V0UHJvcGVydGllczo6T25FcnJvcjoKLSAgICAgICAgcmV0
dXJuIGVycm9yRXZlbnQ7Ci0gICAgY2FzZSBKU0V2ZW50VGFyZ2V0UHJvcGVydGllczo6T25Gb2N1
czoKLSAgICAgICAgcmV0dXJuIGZvY3VzRXZlbnQ7Ci0gICAgY2FzZSBKU0V2ZW50VGFyZ2V0UHJv
cGVydGllczo6T25JbnB1dDoKLSAgICAgICAgcmV0dXJuIGlucHV0RXZlbnQ7Ci0gICAgY2FzZSBK
U0V2ZW50VGFyZ2V0UHJvcGVydGllczo6T25LZXlEb3duOgotICAgICAgICByZXR1cm4ga2V5ZG93
bkV2ZW50OwotICAgIGNhc2UgSlNFdmVudFRhcmdldFByb3BlcnRpZXM6Ok9uS2V5UHJlc3M6Ci0g
ICAgICAgIHJldHVybiBrZXlwcmVzc0V2ZW50OwotICAgIGNhc2UgSlNFdmVudFRhcmdldFByb3Bl
cnRpZXM6Ok9uS2V5VXA6Ci0gICAgICAgIHJldHVybiBrZXl1cEV2ZW50OwotICAgIGNhc2UgSlNF
dmVudFRhcmdldFByb3BlcnRpZXM6Ok9uTG9hZDoKLSAgICAgICAgcmV0dXJuIGxvYWRFdmVudDsK
LSAgICBjYXNlIEpTRXZlbnRUYXJnZXRQcm9wZXJ0aWVzOjpPbk1vdXNlRG93bjoKLSAgICAgICAg
cmV0dXJuIG1vdXNlZG93bkV2ZW50OwotICAgIGNhc2UgSlNFdmVudFRhcmdldFByb3BlcnRpZXM6
Ok9uTW91c2VNb3ZlOgotICAgICAgICByZXR1cm4gbW91c2Vtb3ZlRXZlbnQ7Ci0gICAgY2FzZSBK
U0V2ZW50VGFyZ2V0UHJvcGVydGllczo6T25Nb3VzZU91dDoKLSAgICAgICAgcmV0dXJuIG1vdXNl
b3V0RXZlbnQ7Ci0gICAgY2FzZSBKU0V2ZW50VGFyZ2V0UHJvcGVydGllczo6T25Nb3VzZU92ZXI6
Ci0gICAgICAgIHJldHVybiBtb3VzZW92ZXJFdmVudDsKLSAgICBjYXNlIEpTRXZlbnRUYXJnZXRQ
cm9wZXJ0aWVzOjpPbk1vdXNlVXA6Ci0gICAgICAgIHJldHVybiBtb3VzZXVwRXZlbnQ7ICAgICAg
Ci0gICAgY2FzZSBKU0V2ZW50VGFyZ2V0UHJvcGVydGllczo6T25Nb3VzZVdoZWVsOgotICAgICAg
ICByZXR1cm4gbW91c2V3aGVlbEV2ZW50OyAgICAgIAotICAgIGNhc2UgSlNFdmVudFRhcmdldFBy
b3BlcnRpZXM6Ok9uQmVmb3JlQ3V0OgotICAgICAgICByZXR1cm4gYmVmb3JlY3V0RXZlbnQ7Ci0g
ICAgY2FzZSBKU0V2ZW50VGFyZ2V0UHJvcGVydGllczo6T25DdXQ6Ci0gICAgICAgIHJldHVybiBj
dXRFdmVudDsKLSAgICBjYXNlIEpTRXZlbnRUYXJnZXRQcm9wZXJ0aWVzOjpPbkJlZm9yZUNvcHk6
Ci0gICAgICAgIHJldHVybiBiZWZvcmVjb3B5RXZlbnQ7Ci0gICAgY2FzZSBKU0V2ZW50VGFyZ2V0
UHJvcGVydGllczo6T25Db3B5OgotICAgICAgICByZXR1cm4gY29weUV2ZW50OwotICAgIGNhc2Ug
SlNFdmVudFRhcmdldFByb3BlcnRpZXM6Ok9uQmVmb3JlUGFzdGU6Ci0gICAgICAgIHJldHVybiBi
ZWZvcmVwYXN0ZUV2ZW50OwotICAgIGNhc2UgSlNFdmVudFRhcmdldFByb3BlcnRpZXM6Ok9uUGFz
dGU6Ci0gICAgICAgIHJldHVybiBwYXN0ZUV2ZW50OwotICAgIGNhc2UgSlNFdmVudFRhcmdldFBy
b3BlcnRpZXM6Ok9uRHJhZ0VudGVyOgotICAgICAgICByZXR1cm4gZHJhZ2VudGVyRXZlbnQ7Ci0g
ICAgY2FzZSBKU0V2ZW50VGFyZ2V0UHJvcGVydGllczo6T25EcmFnT3ZlcjoKLSAgICAgICAgcmV0
dXJuIGRyYWdvdmVyRXZlbnQ7Ci0gICAgY2FzZSBKU0V2ZW50VGFyZ2V0UHJvcGVydGllczo6T25E
cmFnTGVhdmU6Ci0gICAgICAgIHJldHVybiBkcmFnbGVhdmVFdmVudDsKLSAgICBjYXNlIEpTRXZl
bnRUYXJnZXRQcm9wZXJ0aWVzOjpPbkRyb3A6Ci0gICAgICAgIHJldHVybiBkcm9wRXZlbnQ7Ci0g
ICAgY2FzZSBKU0V2ZW50VGFyZ2V0UHJvcGVydGllczo6T25EcmFnU3RhcnQ6Ci0gICAgICAgIHJl
dHVybiBkcmFnc3RhcnRFdmVudDsKLSAgICBjYXNlIEpTRXZlbnRUYXJnZXRQcm9wZXJ0aWVzOjpP
bkRyYWc6Ci0gICAgICAgIHJldHVybiBkcmFnRXZlbnQ7Ci0gICAgY2FzZSBKU0V2ZW50VGFyZ2V0
UHJvcGVydGllczo6T25EcmFnRW5kOgotICAgICAgICByZXR1cm4gZHJhZ2VuZEV2ZW50OwotICAg
IGNhc2UgSlNFdmVudFRhcmdldFByb3BlcnRpZXM6Ok9uUmVzZXQ6Ci0gICAgICAgIHJldHVybiBy
ZXNldEV2ZW50OwotICAgIGNhc2UgSlNFdmVudFRhcmdldFByb3BlcnRpZXM6Ok9uUmVzaXplOgot
ICAgICAgICByZXR1cm4gcmVzaXplRXZlbnQ7Ci0gICAgY2FzZSBKU0V2ZW50VGFyZ2V0UHJvcGVy
dGllczo6T25TY3JvbGw6Ci0gICAgICAgIHJldHVybiBzY3JvbGxFdmVudDsKLSAgICBjYXNlIEpT
RXZlbnRUYXJnZXRQcm9wZXJ0aWVzOjpPblNlYXJjaDoKLSAgICAgICAgcmV0dXJuIHNlYXJjaEV2
ZW50OwotICAgIGNhc2UgSlNFdmVudFRhcmdldFByb3BlcnRpZXM6Ok9uU2VsZWN0OgotICAgICAg
ICByZXR1cm4gc2VsZWN0RXZlbnQ7Ci0gICAgY2FzZSBKU0V2ZW50VGFyZ2V0UHJvcGVydGllczo6
T25TZWxlY3RTdGFydDoKLSAgICAgICAgcmV0dXJuIHNlbGVjdHN0YXJ0RXZlbnQ7Ci0gICAgY2Fz
ZSBKU0V2ZW50VGFyZ2V0UHJvcGVydGllczo6T25TdWJtaXQ6Ci0gICAgICAgIHJldHVybiBzdWJt
aXRFdmVudDsKLSAgICBjYXNlIEpTRXZlbnRUYXJnZXRQcm9wZXJ0aWVzOjpPblVubG9hZDoKLSAg
ICAgICAgcmV0dXJuIHVubG9hZEV2ZW50OwotICAgIH0KLQotICAgIHJldHVybiBudWxsQXRvbTsK
LX0KLQogSlNWYWx1ZSogdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEV2ZW50VGFyZ2V0KiB0YXJnZXQp
CiB7CiAgICAgaWYgKCF0YXJnZXQpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRU
YXJnZXRCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFy
Z2V0QmFzZS5oCShyZXZpc2lvbiAzNjg3MykKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVu
dFRhcmdldEJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNjcgKzMxLDcwIEBACiAjaW5jbHVk
ZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkpTRXZlbnQuaCIKIAotLy8gRklYTUU6IFRoZSBu
YW1lIGNsYXNoIGJldHdlZW4gdGhpcyBhbmQgV2ViQ29yZTo6SlNFdmVudFRhcmdldFByb3RvdHlw
ZVRhYmxlIGlzIG9ubHkKLS8vIE9LIGJlY2F1c2UgdGhpcyBpcyBpbiB0aGUgSlNDIG5hbWVzcGFj
ZTsgYW5kIHRoaXMgc2hvdWxkbid0IGJlIGluIHRoYXQgbmFtZXNwYWNlIQotbmFtZXNwYWNlIEpT
QyB7Ci0gICAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBIYXNoVGFibGUgSlNFdmVudFRhcmdldFByb3Bl
cnRpZXNUYWJsZTsKLSAgICBleHRlcm4gY29uc3Qgc3RydWN0IEhhc2hUYWJsZSBKU0V2ZW50VGFy
Z2V0UHJvdG90eXBlVGFibGU7Ci19CisjZGVmaW5lIEpTX0VWRU5UX0xJU1RFTkVSX0ZPUl9FQUNI
X0xJU1RFTkVSKHNwZWNpZmljRXZlbnRUYXJnZXQsIG1hY3JvKSBcCisgICAgbWFjcm8oc3BlY2lm
aWNFdmVudFRhcmdldCwgT25BYm9ydCwgYWJvcnRFdmVudCkgXAorICAgIG1hY3JvKHNwZWNpZmlj
RXZlbnRUYXJnZXQsIE9uQmx1ciwgYmx1ckV2ZW50KSBcCisgICAgbWFjcm8oc3BlY2lmaWNFdmVu
dFRhcmdldCwgT25DaGFuZ2UsIGNoYW5nZUV2ZW50KSBcCisgICAgbWFjcm8oc3BlY2lmaWNFdmVu
dFRhcmdldCwgT25DbGljaywgY2xpY2tFdmVudCkgXAorICAgIG1hY3JvKHNwZWNpZmljRXZlbnRU
YXJnZXQsIE9uQ29udGV4dE1lbnUsIGNvbnRleHRtZW51RXZlbnQpIFwKKyAgICBtYWNybyhzcGVj
aWZpY0V2ZW50VGFyZ2V0LCBPbkRibENsaWNrLCBkYmxjbGlja0V2ZW50KSBcCisgICAgbWFjcm8o
c3BlY2lmaWNFdmVudFRhcmdldCwgT25FcnJvciwgZXJyb3JFdmVudCkgXAorICAgIG1hY3JvKHNw
ZWNpZmljRXZlbnRUYXJnZXQsIE9uRm9jdXMsIGZvY3VzRXZlbnQpIFwKKyAgICBtYWNybyhzcGVj
aWZpY0V2ZW50VGFyZ2V0LCBPbklucHV0LCBpbnB1dEV2ZW50KSBcCisgICAgbWFjcm8oc3BlY2lm
aWNFdmVudFRhcmdldCwgT25LZXlEb3duLCBrZXlkb3duRXZlbnQpIFwKKyAgICBtYWNybyhzcGVj
aWZpY0V2ZW50VGFyZ2V0LCBPbktleVByZXNzLCBrZXlwcmVzc0V2ZW50KSBcCisgICAgbWFjcm8o
c3BlY2lmaWNFdmVudFRhcmdldCwgT25LZXlVcCwga2V5dXBFdmVudCkgXAorICAgIG1hY3JvKHNw
ZWNpZmljRXZlbnRUYXJnZXQsIE9uTG9hZCwgbG9hZEV2ZW50KSBcCisgICAgbWFjcm8oc3BlY2lm
aWNFdmVudFRhcmdldCwgT25Nb3VzZURvd24sIG1vdXNlZG93bkV2ZW50KSBcCisgICAgbWFjcm8o
c3BlY2lmaWNFdmVudFRhcmdldCwgT25Nb3VzZU1vdmUsIG1vdXNlbW92ZUV2ZW50KSBcCisgICAg
bWFjcm8oc3BlY2lmaWNFdmVudFRhcmdldCwgT25Nb3VzZU91dCwgbW91c2VvdXRFdmVudCkgXAor
ICAgIG1hY3JvKHNwZWNpZmljRXZlbnRUYXJnZXQsIE9uTW91c2VPdmVyLCBtb3VzZW92ZXJFdmVu
dCkgXAorICAgIG1hY3JvKHNwZWNpZmljRXZlbnRUYXJnZXQsIE9uTW91c2VVcCwgbW91c2V1cEV2
ZW50KSBcCisgICAgbWFjcm8oc3BlY2lmaWNFdmVudFRhcmdldCwgT25Nb3VzZVdoZWVsLCBtb3Vz
ZXdoZWVsRXZlbnQpIFwKKyAgICBtYWNybyhzcGVjaWZpY0V2ZW50VGFyZ2V0LCBPbkJlZm9yZUN1
dCwgYmVmb3JlY3V0RXZlbnQpIFwKKyAgICBtYWNybyhzcGVjaWZpY0V2ZW50VGFyZ2V0LCBPbkN1
dCwgY3V0RXZlbnQpIFwKKyAgICBtYWNybyhzcGVjaWZpY0V2ZW50VGFyZ2V0LCBPbkJlZm9yZUNv
cHksIGJlZm9yZWNvcHlFdmVudCkgXAorICAgIG1hY3JvKHNwZWNpZmljRXZlbnRUYXJnZXQsIE9u
Q29weSwgY29weUV2ZW50KSBcCisgICAgbWFjcm8oc3BlY2lmaWNFdmVudFRhcmdldCwgT25CZWZv
cmVQYXN0ZSwgYmVmb3JlcGFzdGVFdmVudCkgXAorICAgIG1hY3JvKHNwZWNpZmljRXZlbnRUYXJn
ZXQsIE9uUGFzdGUsIHBhc3RlRXZlbnQpIFwKKyAgICBtYWNybyhzcGVjaWZpY0V2ZW50VGFyZ2V0
LCBPbkRyYWdFbnRlciwgZHJhZ2VudGVyRXZlbnQpIFwKKyAgICBtYWNybyhzcGVjaWZpY0V2ZW50
VGFyZ2V0LCBPbkRyYWdPdmVyLCBkcmFnb3ZlckV2ZW50KSBcCisgICAgbWFjcm8oc3BlY2lmaWNF
dmVudFRhcmdldCwgT25EcmFnTGVhdmUsIGRyYWdsZWF2ZUV2ZW50KSBcCisgICAgbWFjcm8oc3Bl
Y2lmaWNFdmVudFRhcmdldCwgT25Ecm9wLCBkcm9wRXZlbnQpIFwKKyAgICBtYWNybyhzcGVjaWZp
Y0V2ZW50VGFyZ2V0LCBPbkRyYWdTdGFydCwgZHJhZ3N0YXJ0RXZlbnQpIFwKKyAgICBtYWNybyhz
cGVjaWZpY0V2ZW50VGFyZ2V0LCBPbkRyYWcsIGRyYWdFdmVudCkgXAorICAgIG1hY3JvKHNwZWNp
ZmljRXZlbnRUYXJnZXQsIE9uRHJhZ0VuZCwgZHJhZ2VuZEV2ZW50KSBcCisgICAgbWFjcm8oc3Bl
Y2lmaWNFdmVudFRhcmdldCwgT25SZXNldCwgcmVzZXRFdmVudCkgXAorICAgIG1hY3JvKHNwZWNp
ZmljRXZlbnRUYXJnZXQsIE9uUmVzaXplLCByZXNpemVFdmVudCkgXAorICAgIG1hY3JvKHNwZWNp
ZmljRXZlbnRUYXJnZXQsIE9uU2Nyb2xsLCBzY3JvbGxFdmVudCkgXAorICAgIG1hY3JvKHNwZWNp
ZmljRXZlbnRUYXJnZXQsIE9uU2VhcmNoLCBzZWFyY2hFdmVudCkgXAorICAgIG1hY3JvKHNwZWNp
ZmljRXZlbnRUYXJnZXQsIE9uU2VsZWN0LCBzZWxlY3RFdmVudCkgXAorICAgIG1hY3JvKHNwZWNp
ZmljRXZlbnRUYXJnZXQsIE9uU2VsZWN0U3RhcnQsIHNlbGVjdHN0YXJ0RXZlbnQpIFwKKyAgICBt
YWNybyhzcGVjaWZpY0V2ZW50VGFyZ2V0LCBPblN1Ym1pdCwgc3VibWl0RXZlbnQpIFwKKyAgICBt
YWNybyhzcGVjaWZpY0V2ZW50VGFyZ2V0LCBPblVubG9hZCwgdW5sb2FkRXZlbnQpIFwKKworI2Rl
ZmluZSBFVkVOVF9MSVNURU5FUl9HRVRURVIoc3BlY2lmaWNFdmVudFRhcmdldCwgbmFtZSwgZXZl
bnQpIFwKK0pTQzo6SlNWYWx1ZSoganMjI3NwZWNpZmljRXZlbnRUYXJnZXQjI25hbWUoSlNDOjpF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIGNvbnN0IEpTQzo6UHJvcGVy
dHlTbG90JiBzbG90KSBcCit7IFwKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlMjI3NwZWNpZmlj
RXZlbnRUYXJnZXQqPihzbG90LnNsb3RCYXNlKCkpLT5nZXRMaXN0ZW5lcihldmVudCk7IFwKK30g
XAorCisjZGVmaW5lIEVWRU5UX0xJU1RFTkVSX1NFVFRFUihzcGVjaWZpY0V2ZW50VGFyZ2V0LCBu
YW1lLCBldmVudCkgXAordm9pZCBzZXRKUyMjc3BlY2lmaWNFdmVudFRhcmdldCMjbmFtZShKU0M6
OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU09iamVjdCogYmFzZU9iamVjdCwgSlNDOjpKU1ZhbHVl
KiB2YWx1ZSkgXAoreyBcCisgICAgc3RhdGljX2Nhc3Q8SlMjI3NwZWNpZmljRXZlbnRUYXJnZXQq
PihiYXNlT2JqZWN0KS0+c2V0TGlzdGVuZXIoZXhlYywgZXZlbnQsIHZhbHVlKTsgXAorfSBcCisK
KyNkZWZpbmUgREVDTEFSRV9KU19FVkVOVF9MSVNURU5FUlMoc3BlY2lmaWNFdmVudFRhcmdldCkg
XAorICAgIEpTX0VWRU5UX0xJU1RFTkVSX0ZPUl9FQUNIX0xJU1RFTkVSKHNwZWNpZmljRXZlbnRU
YXJnZXQsIEVWRU5UX0xJU1RFTkVSX0dFVFRFUikgXAorICAgIEpTX0VWRU5UX0xJU1RFTkVSX0ZP
Ul9FQUNIX0xJU1RFTkVSKHNwZWNpZmljRXZlbnRUYXJnZXQsIEVWRU5UX0xJU1RFTkVSX1NFVFRF
UikgXAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICB1c2luZyBuYW1lc3BhY2UgRXZlbnRO
YW1lczsKLQogICAgIGNsYXNzIEF0b21pY1N0cmluZzsKICAgICBjbGFzcyBFdmVudFRhcmdldDsK
IAotICAgIC8vIEV2ZW50IHRhcmdldCBwcm9wZXJ0aWVzIChzaGFyZWQgYWNyb3NzIGFsbCBKU0V2
ZW50VGFyZ2V0KiBjbGFzc2VzKQotICAgIHN0cnVjdCBKU0V2ZW50VGFyZ2V0UHJvcGVydGllcyB7
Ci0gICAgICAgIGVudW0gewotICAgICAgICAgICAgQWRkRXZlbnRMaXN0ZW5lciwgUmVtb3ZlRXZl
bnRMaXN0ZW5lciwgRGlzcGF0Y2hFdmVudCwKLSAgICAgICAgICAgIE9uQWJvcnQsIE9uQmx1ciwg
T25DaGFuZ2UsIE9uQ2xpY2ssIE9uQ29udGV4dE1lbnUsIE9uRGJsQ2xpY2ssIE9uRXJyb3IsCi0g
ICAgICAgICAgICBPbkRyYWdFbnRlciwgT25EcmFnT3ZlciwgT25EcmFnTGVhdmUsIE9uRHJvcCwg
T25EcmFnU3RhcnQsIE9uRHJhZywgT25EcmFnRW5kLAotICAgICAgICAgICAgT25CZWZvcmVDdXQs
IE9uQ3V0LCBPbkJlZm9yZUNvcHksIE9uQ29weSwgT25CZWZvcmVQYXN0ZSwgT25QYXN0ZSwgT25T
ZWxlY3RTdGFydCwKLSAgICAgICAgICAgIE9uRm9jdXMsIE9uSW5wdXQsIE9uS2V5RG93biwgT25L
ZXlQcmVzcywgT25LZXlVcCwgT25Mb2FkLCBPbk1vdXNlRG93biwKLSAgICAgICAgICAgIE9uTW91
c2VNb3ZlLCBPbk1vdXNlT3V0LCBPbk1vdXNlT3ZlciwgT25Nb3VzZVVwLCBPbk1vdXNlV2hlZWws
IE9uUmVzZXQsCi0gICAgICAgICAgICBPblJlc2l6ZSwgT25TY3JvbGwsIE9uU2VhcmNoLCBPblNl
bGVjdCwgT25TdWJtaXQsIE9uVW5sb2FkCi0gICAgICAgIH07Ci0gICAgfTsKLQotICAgIC8vIEhl
bHBlciBmdW5jdGlvbiBmb3IgZ2V0VmFsdWVQcm9wZXJ0eS9wdXRWYWx1ZVByb3BlcnR5Ci0gICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWVGb3JQcm9wZXJ0eVRva2VuKGludCB0b2tlbik7
Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBKU1NwZWNpZmljRXZlbnRUYXJnZXQ+Ci0gICAgY2xhc3Mg
SlNFdmVudFRhcmdldEJhc2UgewotICAgIHB1YmxpYzoKLSAgICAgICAgSlNDOjpKU1ZhbHVlKiBn
ZXRWYWx1ZVByb3BlcnR5KGNvbnN0IEpTU3BlY2lmaWNFdmVudFRhcmdldCogb3duZXIsIEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBpbnQgdG9rZW4pIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lID0gZXZlbnROYW1lRm9yUHJvcGVydHlUb2tl
bih0b2tlbik7Ci0gICAgICAgICAgICBpZiAoIWV2ZW50TmFtZS5pc0VtcHR5KCkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIG93bmVyLT5nZXRMaXN0ZW5lcihldmVudE5hbWUpOwotCi0gICAgICAg
ICAgICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9p
ZCBwdXRWYWx1ZVByb3BlcnR5KGNvbnN0IEpTU3BlY2lmaWNFdmVudFRhcmdldCogb3duZXIsIEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBpbnQgdG9rZW4sIEpTQzo6SlNWYWx1ZSogdmFsdWUpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lID0gZXZlbnRO
YW1lRm9yUHJvcGVydHlUb2tlbih0b2tlbik7Ci0gICAgICAgICAgICBpZiAoIWV2ZW50TmFtZS5p
c0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgb3duZXItPnNldExpc3RlbmVyKGV4ZWMsIGV2ZW50
TmFtZSwgdmFsdWUpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgSlNQYXJl
bnQ+Ci0gICAgICAgIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTU3BlY2lmaWNFdmVudFRhcmdl
dCogb3duZXIsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmIHNsb3QpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBKU0M6OmdldFN0YXRpY1ZhbHVlU2xvdDxKU1NwZWNpZmljRXZlbnRUYXJnZXQs
IEpTUGFyZW50PihleGVjLCAmSlNDOjpKU0V2ZW50VGFyZ2V0UHJvcGVydGllc1RhYmxlLCBvd25l
ciwgcHJvcGVydHlOYW1lLCBzbG90KTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlPGNs
YXNzIEpTUGFyZW50PgotICAgICAgICB2b2lkIHB1dChKU1NwZWNpZmljRXZlbnRUYXJnZXQqIG93
bmVyLCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIEpTQzo6SlNWYWx1ZSogdmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90JiBzbG90KQot
ICAgICAgICB7Ci0gICAgICAgICAgICBKU0M6Omxvb2t1cFB1dDxKU1NwZWNpZmljRXZlbnRUYXJn
ZXQsIEpTUGFyZW50PihleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAmSlNDOjpKU0V2ZW50VGFy
Z2V0UHJvcGVydGllc1RhYmxlLCBvd25lciwgc2xvdCk7Ci0gICAgICAgIH0KLSAgICB9OworICAg
IGV4dGVybiBjb25zdCBzdHJ1Y3QgSlNDOjpIYXNoVGFibGUgSlNFdmVudFRhcmdldFByb3RvdHlw
ZVRhYmxlOwogCiAgICAgLy8gVGhlIGlkZWEgaGVyZSBpcyB0aGF0IGNsYXNzZXMgbGlrZSBKU0V2
ZW50VGFyZ2V0Tm9kZSBhbmQgSlNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZQogICAgIC8v
IGNhbiBzaGFyZSBhIHByb3RvdHlwZSB3aXRoIHRoZSBvbmx5IGRpZmZlcmVuY2UgYmVpbmcgdGhl
IG5hbWUuCkBAIC0xMTAsMTIgKzExMywxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAg
ICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90JiBz
bG90KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gSlNDOjpnZXRTdGF0aWNGdW5jdGlv
blNsb3Q8SlNDOjpKU09iamVjdD4oZXhlYywgJkpTQzo6SlNFdmVudFRhcmdldFByb3RvdHlwZVRh
YmxlLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICAgICAgcmV0dXJuIEpTQzo6
Z2V0U3RhdGljRnVuY3Rpb25TbG90PEpTQzo6SlNPYmplY3Q+KGV4ZWMsICZKU0V2ZW50VGFyZ2V0
UHJvdG90eXBlVGFibGUsIHRoaXMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAgIH0KIAog
ICAgICAgICB2aXJ0dWFsIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdAog
ICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19jbGFz
c0luZm8gPSB7IEpTU3BlY2lmaWNFdmVudFRhcmdldDo6cHJvdG90eXBlQ2xhc3NOYW1lKCksIDAs
ICZKU0M6OkpTRXZlbnRUYXJnZXRQcm90b3R5cGVUYWJsZSwgMCB9OworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfY2xhc3NJbmZvID0geyBKU1NwZWNpZmljRXZlbnRU
YXJnZXQ6OnByb3RvdHlwZUNsYXNzTmFtZSgpLCAwLCAmSlNFdmVudFRhcmdldFByb3RvdHlwZVRh
YmxlLCAwIH07CiAgICAgICAgICAgICByZXR1cm4gJnNfY2xhc3NJbmZvOwogICAgICAgICB9CiAg
ICAgfTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldE5vZGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldE5vZGUuY3BwCShy
ZXZpc2lvbiAzNjg3MykKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldE5vZGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwyMiArMjgsMTY5IEBACiAjaW5jbHVkZSAiSlNFdmVu
dFRhcmdldE5vZGUuaCIKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRXZlbnRO
YW1lcy5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiSlNFdmVudExpc3Rl
bmVyLmgiCiAKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
dXNpbmcgbmFtZXNwYWNlIEpTQzsKK3VzaW5nIG5hbWVzcGFjZSBFdmVudE5hbWVzOwogCiBBU1NF
UlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTRXZlbnRUYXJnZXROb2RlKQogCi1jb25zdCBDbGFzc0lu
Zm8gSlNFdmVudFRhcmdldE5vZGU6OnNfaW5mbyA9IHsgIkV2ZW50VGFyZ2V0Tm9kZSIsICZKU05v
ZGU6OnNfaW5mbywgMCwgMCB9Oworc3RhdGljIEpTVmFsdWUqIGpzRXZlbnRUYXJnZXROb2RlT25B
Ym9ydChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jik7
CitzdGF0aWMgdm9pZCBzZXRKU0V2ZW50VGFyZ2V0Tm9kZU9uQWJvcnQoRXhlY1N0YXRlKiwgSlNP
YmplY3QqLCBKU1ZhbHVlKik7CitzdGF0aWMgSlNWYWx1ZSoganNFdmVudFRhcmdldE5vZGVPbkJs
dXIoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOwor
c3RhdGljIHZvaWQgc2V0SlNFdmVudFRhcmdldE5vZGVPbkJsdXIoRXhlY1N0YXRlKiwgSlNPYmpl
Y3QqLCBKU1ZhbHVlKik7CitzdGF0aWMgSlNWYWx1ZSoganNFdmVudFRhcmdldE5vZGVPbkNoYW5n
ZShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jik7Citz
dGF0aWMgdm9pZCBzZXRKU0V2ZW50VGFyZ2V0Tm9kZU9uQ2hhbmdlKEV4ZWNTdGF0ZSosIEpTT2Jq
ZWN0KiwgSlNWYWx1ZSopOworc3RhdGljIEpTVmFsdWUqIGpzRXZlbnRUYXJnZXROb2RlT25DbGlj
ayhFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jik7Citz
dGF0aWMgdm9pZCBzZXRKU0V2ZW50VGFyZ2V0Tm9kZU9uQ2xpY2soRXhlY1N0YXRlKiwgSlNPYmpl
Y3QqLCBKU1ZhbHVlKik7CitzdGF0aWMgSlNWYWx1ZSoganNFdmVudFRhcmdldE5vZGVPbkNvbnRl
eHRNZW51KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3Qm
KTsKK3N0YXRpYyB2b2lkIHNldEpTRXZlbnRUYXJnZXROb2RlT25Db250ZXh0TWVudShFeGVjU3Rh
dGUqLCBKU09iamVjdCosIEpTVmFsdWUqKTsKK3N0YXRpYyBKU1ZhbHVlKiBqc0V2ZW50VGFyZ2V0
Tm9kZU9uRGJsQ2xpY2soRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3Bl
cnR5U2xvdCYpOworc3RhdGljIHZvaWQgc2V0SlNFdmVudFRhcmdldE5vZGVPbkRibENsaWNrKEV4
ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSopOworc3RhdGljIEpTVmFsdWUqIGpzRXZlbnRU
YXJnZXROb2RlT25CZWZvcmVDdXQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0
IFByb3BlcnR5U2xvdCYpOworc3RhdGljIHZvaWQgc2V0SlNFdmVudFRhcmdldE5vZGVPbkJlZm9y
ZUN1dChFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqKTsKK3N0YXRpYyBKU1ZhbHVlKiBq
c0V2ZW50VGFyZ2V0Tm9kZU9uQ3V0KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25z
dCBQcm9wZXJ0eVNsb3QmKTsKK3N0YXRpYyB2b2lkIHNldEpTRXZlbnRUYXJnZXROb2RlT25DdXQo
RXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1ZhbHVlKik7CitzdGF0aWMgSlNWYWx1ZSoganNFdmVu
dFRhcmdldE5vZGVPbkJlZm9yZUNvcHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIGNv
bnN0IFByb3BlcnR5U2xvdCYpOworc3RhdGljIHZvaWQgc2V0SlNFdmVudFRhcmdldE5vZGVPbkJl
Zm9yZUNvcHkoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1ZhbHVlKik7CitzdGF0aWMgSlNWYWx1
ZSoganNFdmVudFRhcmdldE5vZGVPbkNvcHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYs
IGNvbnN0IFByb3BlcnR5U2xvdCYpOworc3RhdGljIHZvaWQgc2V0SlNFdmVudFRhcmdldE5vZGVP
bkNvcHkoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1ZhbHVlKik7CitzdGF0aWMgSlNWYWx1ZSog
anNFdmVudFRhcmdldE5vZGVPbkJlZm9yZVBhc3RlKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKK3N0YXRpYyB2b2lkIHNldEpTRXZlbnRUYXJnZXRO
b2RlT25CZWZvcmVQYXN0ZShFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqKTsKK3N0YXRp
YyBKU1ZhbHVlKiBqc0V2ZW50VGFyZ2V0Tm9kZU9uUGFzdGUoRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOworc3RhdGljIHZvaWQgc2V0SlNFdmVudFRh
cmdldE5vZGVPblBhc3RlKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSopOworc3RhdGlj
IEpTVmFsdWUqIGpzRXZlbnRUYXJnZXROb2RlT25EcmFnKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKK3N0YXRpYyB2b2lkIHNldEpTRXZlbnRUYXJn
ZXROb2RlT25EcmFnKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSopOworc3RhdGljIEpT
VmFsdWUqIGpzRXZlbnRUYXJnZXROb2RlT25EcmFnRW5kKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKK3N0YXRpYyB2b2lkIHNldEpTRXZlbnRUYXJn
ZXROb2RlT25EcmFnRW5kKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSopOworc3RhdGlj
IEpTVmFsdWUqIGpzRXZlbnRUYXJnZXROb2RlT25EcmFnRW50ZXIoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOworc3RhdGljIHZvaWQgc2V0SlNFdmVu
dFRhcmdldE5vZGVPbkRyYWdFbnRlcihFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqKTsK
K3N0YXRpYyBKU1ZhbHVlKiBqc0V2ZW50VGFyZ2V0Tm9kZU9uRHJhZ0xlYXZlKEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKK3N0YXRpYyB2b2lkIHNl
dEpTRXZlbnRUYXJnZXROb2RlT25EcmFnTGVhdmUoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1Zh
bHVlKik7CitzdGF0aWMgSlNWYWx1ZSoganNFdmVudFRhcmdldE5vZGVPbkRyYWdPdmVyKEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKK3N0YXRpYyB2
b2lkIHNldEpTRXZlbnRUYXJnZXROb2RlT25EcmFnT3ZlcihFeGVjU3RhdGUqLCBKU09iamVjdCos
IEpTVmFsdWUqKTsKK3N0YXRpYyBKU1ZhbHVlKiBqc0V2ZW50VGFyZ2V0Tm9kZU9uRHJhZ1N0YXJ0
KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKK3N0
YXRpYyB2b2lkIHNldEpTRXZlbnRUYXJnZXROb2RlT25EcmFnU3RhcnQoRXhlY1N0YXRlKiwgSlNP
YmplY3QqLCBKU1ZhbHVlKik7CitzdGF0aWMgSlNWYWx1ZSoganNFdmVudFRhcmdldE5vZGVPbkRy
b3AoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOwor
c3RhdGljIHZvaWQgc2V0SlNFdmVudFRhcmdldE5vZGVPbkRyb3AoRXhlY1N0YXRlKiwgSlNPYmpl
Y3QqLCBKU1ZhbHVlKik7CitzdGF0aWMgSlNWYWx1ZSoganNFdmVudFRhcmdldE5vZGVPbkVycm9y
KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKK3N0
YXRpYyB2b2lkIHNldEpTRXZlbnRUYXJnZXROb2RlT25FcnJvcihFeGVjU3RhdGUqLCBKU09iamVj
dCosIEpTVmFsdWUqKTsKK3N0YXRpYyBKU1ZhbHVlKiBqc0V2ZW50VGFyZ2V0Tm9kZU9uRm9jdXMo
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOworc3Rh
dGljIHZvaWQgc2V0SlNFdmVudFRhcmdldE5vZGVPbkZvY3VzKEV4ZWNTdGF0ZSosIEpTT2JqZWN0
KiwgSlNWYWx1ZSopOworc3RhdGljIEpTVmFsdWUqIGpzRXZlbnRUYXJnZXROb2RlT25JbnB1dChF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jik7CitzdGF0
aWMgdm9pZCBzZXRKU0V2ZW50VGFyZ2V0Tm9kZU9uSW5wdXQoRXhlY1N0YXRlKiwgSlNPYmplY3Qq
LCBKU1ZhbHVlKik7CitzdGF0aWMgSlNWYWx1ZSoganNFdmVudFRhcmdldE5vZGVPbktleURvd24o
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOworc3Rh
dGljIHZvaWQgc2V0SlNFdmVudFRhcmdldE5vZGVPbktleURvd24oRXhlY1N0YXRlKiwgSlNPYmpl
Y3QqLCBKU1ZhbHVlKik7CitzdGF0aWMgSlNWYWx1ZSoganNFdmVudFRhcmdldE5vZGVPbktleVBy
ZXNzKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsK
K3N0YXRpYyB2b2lkIHNldEpTRXZlbnRUYXJnZXROb2RlT25LZXlQcmVzcyhFeGVjU3RhdGUqLCBK
U09iamVjdCosIEpTVmFsdWUqKTsKK3N0YXRpYyBKU1ZhbHVlKiBqc0V2ZW50VGFyZ2V0Tm9kZU9u
S2V5VXAoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYp
Oworc3RhdGljIHZvaWQgc2V0SlNFdmVudFRhcmdldE5vZGVPbktleVVwKEV4ZWNTdGF0ZSosIEpT
T2JqZWN0KiwgSlNWYWx1ZSopOworc3RhdGljIEpTVmFsdWUqIGpzRXZlbnRUYXJnZXROb2RlT25M
b2FkKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsK
K3N0YXRpYyB2b2lkIHNldEpTRXZlbnRUYXJnZXROb2RlT25Mb2FkKEV4ZWNTdGF0ZSosIEpTT2Jq
ZWN0KiwgSlNWYWx1ZSopOworc3RhdGljIEpTVmFsdWUqIGpzRXZlbnRUYXJnZXROb2RlT25Nb3Vz
ZURvd24oRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYp
Oworc3RhdGljIHZvaWQgc2V0SlNFdmVudFRhcmdldE5vZGVPbk1vdXNlRG93bihFeGVjU3RhdGUq
LCBKU09iamVjdCosIEpTVmFsdWUqKTsKK3N0YXRpYyBKU1ZhbHVlKiBqc0V2ZW50VGFyZ2V0Tm9k
ZU9uTW91c2VNb3ZlKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0
eVNsb3QmKTsKK3N0YXRpYyB2b2lkIHNldEpTRXZlbnRUYXJnZXROb2RlT25Nb3VzZU1vdmUoRXhl
Y1N0YXRlKiwgSlNPYmplY3QqLCBKU1ZhbHVlKik7CitzdGF0aWMgSlNWYWx1ZSoganNFdmVudFRh
cmdldE5vZGVPbk1vdXNlT3V0KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQ
cm9wZXJ0eVNsb3QmKTsKK3N0YXRpYyB2b2lkIHNldEpTRXZlbnRUYXJnZXROb2RlT25Nb3VzZU91
dChFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqKTsKK3N0YXRpYyBKU1ZhbHVlKiBqc0V2
ZW50VGFyZ2V0Tm9kZU9uTW91c2VPdmVyKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBj
b25zdCBQcm9wZXJ0eVNsb3QmKTsKK3N0YXRpYyB2b2lkIHNldEpTRXZlbnRUYXJnZXROb2RlT25N
b3VzZU92ZXIoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1ZhbHVlKik7CitzdGF0aWMgSlNWYWx1
ZSoganNFdmVudFRhcmdldE5vZGVPbk1vdXNlVXAoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOworc3RhdGljIHZvaWQgc2V0SlNFdmVudFRhcmdldE5v
ZGVPbk1vdXNlVXAoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1ZhbHVlKik7CitzdGF0aWMgSlNW
YWx1ZSoganNFdmVudFRhcmdldE5vZGVPbk1vdXNlV2hlZWwoRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOworc3RhdGljIHZvaWQgc2V0SlNFdmVudFRh
cmdldE5vZGVPbk1vdXNlV2hlZWwoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1ZhbHVlKik7Citz
dGF0aWMgSlNWYWx1ZSoganNFdmVudFRhcmdldE5vZGVPblJlc2V0KEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKK3N0YXRpYyB2b2lkIHNldEpTRXZl
bnRUYXJnZXROb2RlT25SZXNldChFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqKTsKK3N0
YXRpYyBKU1ZhbHVlKiBqc0V2ZW50VGFyZ2V0Tm9kZU9uUmVzaXplKEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKK3N0YXRpYyB2b2lkIHNldEpTRXZl
bnRUYXJnZXROb2RlT25SZXNpemUoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1ZhbHVlKik7Citz
dGF0aWMgSlNWYWx1ZSoganNFdmVudFRhcmdldE5vZGVPblNjcm9sbChFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jik7CitzdGF0aWMgdm9pZCBzZXRKU0V2
ZW50VGFyZ2V0Tm9kZU9uU2Nyb2xsKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSopOwor
c3RhdGljIEpTVmFsdWUqIGpzRXZlbnRUYXJnZXROb2RlT25TZWFyY2goRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOworc3RhdGljIHZvaWQgc2V0SlNF
dmVudFRhcmdldE5vZGVPblNlYXJjaChFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqKTsK
K3N0YXRpYyBKU1ZhbHVlKiBqc0V2ZW50VGFyZ2V0Tm9kZU9uU2VsZWN0KEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKK3N0YXRpYyB2b2lkIHNldEpT
RXZlbnRUYXJnZXROb2RlT25TZWxlY3QoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1ZhbHVlKik7
CitzdGF0aWMgSlNWYWx1ZSoganNFdmVudFRhcmdldE5vZGVPblNlbGVjdFN0YXJ0KEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKK3N0YXRpYyB2b2lk
IHNldEpTRXZlbnRUYXJnZXROb2RlT25TZWxlY3RTdGFydChFeGVjU3RhdGUqLCBKU09iamVjdCos
IEpTVmFsdWUqKTsKK3N0YXRpYyBKU1ZhbHVlKiBqc0V2ZW50VGFyZ2V0Tm9kZU9uU3VibWl0KEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKK3N0YXRp
YyB2b2lkIHNldEpTRXZlbnRUYXJnZXROb2RlT25TdWJtaXQoRXhlY1N0YXRlKiwgSlNPYmplY3Qq
LCBKU1ZhbHVlKik7CitzdGF0aWMgSlNWYWx1ZSoganNFdmVudFRhcmdldE5vZGVPblVubG9hZChF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jik7CitzdGF0
aWMgdm9pZCBzZXRKU0V2ZW50VGFyZ2V0Tm9kZU9uVW5sb2FkKEV4ZWNTdGF0ZSosIEpTT2JqZWN0
KiwgSlNWYWx1ZSopOworCisvKiBTb3VyY2UgZm9yIEpTRXZlbnRUYXJnZXROb2RlVGFibGUKK0Bi
ZWdpbiBKU0V2ZW50VGFyZ2V0Tm9kZVRhYmxlCitvbmFib3J0ICAgICAgIGpzRXZlbnRUYXJnZXRO
b2RlT25BYm9ydCAgICAgICAgRG9udERlbGV0ZXxEb250RW51bQorb25ibHVyICAgICAgICBqc0V2
ZW50VGFyZ2V0Tm9kZU9uQmx1ciAgICAgICAgIERvbnREZWxldGV8RG9udEVudW0KK29uY2hhbmdl
ICAgICAganNFdmVudFRhcmdldE5vZGVPbkNoYW5nZSAgICAgICBEb250RGVsZXRlfERvbnRFbnVt
CitvbmNsaWNrICAgICAgIGpzRXZlbnRUYXJnZXROb2RlT25DbGljayAgICAgICAgRG9udERlbGV0
ZXxEb250RW51bQorb25jb250ZXh0bWVudSBqc0V2ZW50VGFyZ2V0Tm9kZU9uQ29udGV4dE1lbnUg
IERvbnREZWxldGV8RG9udEVudW0KK29uZGJsY2xpY2sgICAganNFdmVudFRhcmdldE5vZGVPbkRi
bENsaWNrICAgICBEb250RGVsZXRlfERvbnRFbnVtCitvbmJlZm9yZWN1dCAgIGpzRXZlbnRUYXJn
ZXROb2RlT25CZWZvcmVDdXQgICAgRG9udERlbGV0ZXxEb250RW51bQorb25jdXQgICAgICAgICBq
c0V2ZW50VGFyZ2V0Tm9kZU9uQ3V0ICAgICAgICAgIERvbnREZWxldGV8RG9udEVudW0KK29uYmVm
b3JlY29weSAganNFdmVudFRhcmdldE5vZGVPbkJlZm9yZUNvcHkgICBEb250RGVsZXRlfERvbnRF
bnVtCitvbmNvcHkgICAgICAgIGpzRXZlbnRUYXJnZXROb2RlT25Db3B5ICAgICAgICAgRG9udERl
bGV0ZXxEb250RW51bQorb25iZWZvcmVwYXN0ZSBqc0V2ZW50VGFyZ2V0Tm9kZU9uQmVmb3JlUGFz
dGUgIERvbnREZWxldGV8RG9udEVudW0KK29ucGFzdGUgICAgICAganNFdmVudFRhcmdldE5vZGVP
blBhc3RlICAgICAgICBEb250RGVsZXRlfERvbnRFbnVtCitvbmRyYWcgICAgICAgIGpzRXZlbnRU
YXJnZXROb2RlT25EcmFnICAgICAgICAgRG9udERlbGV0ZXxEb250RW51bQorb25kcmFnZW5kICAg
ICBqc0V2ZW50VGFyZ2V0Tm9kZU9uRHJhZ0VuZCAgICAgIERvbnREZWxldGV8RG9udEVudW0KK29u
ZHJhZ2VudGVyICAganNFdmVudFRhcmdldE5vZGVPbkRyYWdFbnRlciAgICBEb250RGVsZXRlfERv
bnRFbnVtCitvbmRyYWdsZWF2ZSAgIGpzRXZlbnRUYXJnZXROb2RlT25EcmFnTGVhdmUgICAgRG9u
dERlbGV0ZXxEb250RW51bQorb25kcmFnb3ZlciAgICBqc0V2ZW50VGFyZ2V0Tm9kZU9uRHJhZ092
ZXIgICAgIERvbnREZWxldGV8RG9udEVudW0KK29uZHJhZ3N0YXJ0ICAganNFdmVudFRhcmdldE5v
ZGVPbkRyYWdTdGFydCAgICBEb250RGVsZXRlfERvbnRFbnVtCitvbmRyb3AgICAgICAgIGpzRXZl
bnRUYXJnZXROb2RlT25Ecm9wICAgICAgICAgRG9udERlbGV0ZXxEb250RW51bQorb25lcnJvciAg
ICAgICBqc0V2ZW50VGFyZ2V0Tm9kZU9uRXJyb3IgICAgICAgIERvbnREZWxldGV8RG9udEVudW0K
K29uZm9jdXMgICAgICAganNFdmVudFRhcmdldE5vZGVPbkZvY3VzICAgICAgICBEb250RGVsZXRl
fERvbnRFbnVtCitvbmlucHV0ICAgICAgIGpzRXZlbnRUYXJnZXROb2RlT25JbnB1dCAgICAgICAg
RG9udERlbGV0ZXxEb250RW51bQorb25rZXlkb3duICAgICBqc0V2ZW50VGFyZ2V0Tm9kZU9uS2V5
RG93biAgICAgIERvbnREZWxldGV8RG9udEVudW0KK29ua2V5cHJlc3MgICAganNFdmVudFRhcmdl
dE5vZGVPbktleVByZXNzICAgICBEb250RGVsZXRlfERvbnRFbnVtCitvbmtleXVwICAgICAgIGpz
RXZlbnRUYXJnZXROb2RlT25LZXlVcCAgICAgICAgRG9udERlbGV0ZXxEb250RW51bQorb25sb2Fk
ICAgICAgICBqc0V2ZW50VGFyZ2V0Tm9kZU9uTG9hZCAgICAgICAgIERvbnREZWxldGV8RG9udEVu
dW0KK29ubW91c2Vkb3duICAganNFdmVudFRhcmdldE5vZGVPbk1vdXNlRG93biAgICBEb250RGVs
ZXRlfERvbnRFbnVtCitvbm1vdXNlbW92ZSAgIGpzRXZlbnRUYXJnZXROb2RlT25Nb3VzZU1vdmUg
ICAgRG9udERlbGV0ZXxEb250RW51bQorb25tb3VzZW91dCAgICBqc0V2ZW50VGFyZ2V0Tm9kZU9u
TW91c2VPdXQgICAgIERvbnREZWxldGV8RG9udEVudW0KK29ubW91c2VvdmVyICAganNFdmVudFRh
cmdldE5vZGVPbk1vdXNlT3ZlciAgICBEb250RGVsZXRlfERvbnRFbnVtCitvbm1vdXNldXAgICAg
IGpzRXZlbnRUYXJnZXROb2RlT25Nb3VzZVVwICAgICAgRG9udERlbGV0ZXxEb250RW51bQorb25t
b3VzZXdoZWVsICBqc0V2ZW50VGFyZ2V0Tm9kZU9uTW91c2VXaGVlbCAgIERvbnREZWxldGV8RG9u
dEVudW0KK29ucmVzZXQgICAgICAganNFdmVudFRhcmdldE5vZGVPblJlc2V0ICAgICAgICBEb250
RGVsZXRlfERvbnRFbnVtCitvbnJlc2l6ZSAgICAgIGpzRXZlbnRUYXJnZXROb2RlT25SZXNpemUg
ICAgICAgRG9udERlbGV0ZXxEb250RW51bQorb25zY3JvbGwgICAgICBqc0V2ZW50VGFyZ2V0Tm9k
ZU9uU2Nyb2xsICAgICAgIERvbnREZWxldGV8RG9udEVudW0KK29uc2VhcmNoICAgICAganNFdmVu
dFRhcmdldE5vZGVPblNlYXJjaCAgICAgICBEb250RGVsZXRlfERvbnRFbnVtCitvbnNlbGVjdCAg
ICAgIGpzRXZlbnRUYXJnZXROb2RlT25TZWxlY3QgICAgICAgRG9udERlbGV0ZXxEb250RW51bQor
b25zZWxlY3RzdGFydCBqc0V2ZW50VGFyZ2V0Tm9kZU9uU2VsZWN0U3RhcnQgIERvbnREZWxldGV8
RG9udEVudW0KK29uc3VibWl0ICAgICAganNFdmVudFRhcmdldE5vZGVPblN1Ym1pdCAgICAgICBE
b250RGVsZXRlfERvbnRFbnVtCitvbnVubG9hZCAgICAgIGpzRXZlbnRUYXJnZXROb2RlT25Vbmxv
YWQgICAgICAgRG9udERlbGV0ZXxEb250RW51bQorQGVuZAorKi8KKworREVDTEFSRV9KU19FVkVO
VF9MSVNURU5FUlMoRXZlbnRUYXJnZXROb2RlKQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNpbmNsdWRlICJKU0V2ZW50VGFyZ2V0Tm9kZS5sdXQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjb25zdCBDbGFzc0luZm8gSlNFdmVudFRhcmdldE5vZGU6OnNfaW5mbyA9IHsgIkV2ZW50
VGFyZ2V0Tm9kZSIsICZKU05vZGU6OnNfaW5mbywgJkpTRXZlbnRUYXJnZXROb2RlVGFibGUsIDAg
fTsKIAogSlNFdmVudFRhcmdldE5vZGU6OkpTRXZlbnRUYXJnZXROb2RlKFBhc3NSZWZQdHI8U3Ry
dWN0dXJlSUQ+IHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxFdmVudFRhcmdldE5vZGU+IG5vZGUpCiAg
ICAgOiBKU05vZGUoc3RydWN0dXJlLCBub2RlKQogewogfQogCitib29sIEpTRXZlbnRUYXJnZXRO
b2RlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICByZXR1cm4gZ2V0U3Rh
dGljVmFsdWVTbG90PEpTRXZlbnRUYXJnZXROb2RlLCBKU05vZGU+KGV4ZWMsICZKU0V2ZW50VGFy
Z2V0Tm9kZVRhYmxlLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCit2b2lkIEpTRXZl
bnRUYXJnZXROb2RlOjpwdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUqIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAg
bG9va3VwUHV0PEpTRXZlbnRUYXJnZXROb2RlLCBKU05vZGU+KGV4ZWMsIHByb3BlcnR5TmFtZSwg
dmFsdWUsICZKU0V2ZW50VGFyZ2V0Tm9kZVRhYmxlLCB0aGlzLCBzbG90KTsKK30KKwogSlNPYmpl
Y3QqIEpTRXZlbnRUYXJnZXROb2RlOjpjcmVhdGVQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjKQog
ewogICAgIHJldHVybiBuZXcgKGV4ZWMpIEpTRXZlbnRUYXJnZXROb2RlUHJvdG90eXBlKEpTRXZl
bnRUYXJnZXROb2RlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmVJRChKU05vZGVQcm90b3R5cGU6
OnNlbGYoZXhlYykpKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldE5v
ZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXROb2Rl
LmgJKHJldmlzaW9uIDM2ODczKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0
Tm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NywzOSArNDcsMTQgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgcHVzaEV2ZW50SGFuZGxlclNjb3BlKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpTY29wZUNoYWluJikgY29uc3Q7CiAKICAgICAgICAgdmlydHVhbCBib29s
IGdldE93blByb3BlcnR5U2xvdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmll
ciYsIEpTQzo6UHJvcGVydHlTbG90Jik7Ci0gICAgICAgIEpTQzo6SlNWYWx1ZSogZ2V0VmFsdWVQ
cm9wZXJ0eShKU0M6OkV4ZWNTdGF0ZSosIGludCB0b2tlbikgY29uc3Q7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBwdXQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6
OkpTVmFsdWUqLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOwotICAgICAgICB2b2lkIHB1dFZhbHVl
UHJvcGVydHkoSlNDOjpFeGVjU3RhdGUqLCBpbnQgdG9rZW4sIEpTQzo6SlNWYWx1ZSopOwogCi0g
ICAgICAgIHZpcnR1YWwgY29uc3QgSlNDOjpDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0ID0g
MDsKKyAgICAgICAgdmlydHVhbCBjb25zdCBKU0M6OkNsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29u
c3QgeyByZXR1cm4gJnNfaW5mbzsgfQogICAgICAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0lu
Zm8gc19pbmZvOwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBwcm90b3R5cGVDbGFzc05h
bWUoKSB7IHJldHVybiAiRXZlbnRUYXJnZXROb2RlUHJvdG90eXBlIjsgfQotCi0gICAgcHJpdmF0
ZToKLSAgICAgICAgSlNFdmVudFRhcmdldEJhc2U8SlNFdmVudFRhcmdldE5vZGU+IG1fYmFzZTsK
ICAgICB9OwogCi0gICAgQUxXQVlTX0lOTElORSBib29sIEpTRXZlbnRUYXJnZXROb2RlOjpnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTQzo6SWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYgc2xvdCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBtX2Jhc2UuZ2V0T3duUHJvcGVydHlTbG90PEpTTm9kZT4odGhpcywgZXhlYywgcHJv
cGVydHlOYW1lLCBzbG90KTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIEpTQzo6SlNWYWx1
ZSogSlNFdmVudFRhcmdldE5vZGU6OmdldFZhbHVlUHJvcGVydHkoSlNDOjpFeGVjU3RhdGUqIGV4
ZWMsIGludCB0b2tlbikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Jhc2UuZ2V0VmFs
dWVQcm9wZXJ0eSh0aGlzLCBleGVjLCB0b2tlbik7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElO
RSB2b2lkIEpTRXZlbnRUYXJnZXROb2RlOjpwdXQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUqIHZhbHVlLCBKU0M6
OlB1dFByb3BlcnR5U2xvdCYgc2xvdCkKLSAgICB7Ci0gICAgICAgIG1fYmFzZS5wdXQ8SlNOb2Rl
Pih0aGlzLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKLSAgICB9Ci0KLSAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgSlNFdmVudFRhcmdldE5vZGU6OnB1dFZhbHVlUHJvcGVydHkoSlND
OjpFeGVjU3RhdGUqIGV4ZWMsIGludCB0b2tlbiwgSlNDOjpKU1ZhbHVlKiB2YWx1ZSkKLSAgICB7
Ci0gICAgICAgIG1fYmFzZS5wdXRWYWx1ZVByb3BlcnR5KHRoaXMsIGV4ZWMsIHRva2VuLCB2YWx1
ZSk7Ci0gICAgfQotCiAgICAgdHlwZWRlZiBKU0V2ZW50VGFyZ2V0QmFzZVByb3RvdHlwZTxKU0V2
ZW50VGFyZ2V0Tm9kZT4gSlNFdmVudFRhcmdldE5vZGVQcm90b3R5cGU7CiAgICAgRXZlbnRUYXJn
ZXROb2RlKiB0b0V2ZW50VGFyZ2V0Tm9kZShKU0M6OkpTVmFsdWUqKTsKIApJbmRleDogV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFu
Y2UuY3BwCShyZXZpc2lvbiAzNjg3MykKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRh
cmdldFNWR0VsZW1lbnRJbnN0YW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDIyICsyOSwx
NjkgQEAKICNpbmNsdWRlICJKU0V2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNlLmgiCiAKICNp
bmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJK
U0RPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5oIgogCit1c2luZyBuYW1l
c3BhY2UgSlNDOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXVzaW5nIG5hbWVzcGFjZSBKU0M7
Cit1c2luZyBuYW1lc3BhY2UgRXZlbnROYW1lczsKIAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VM
TChKU0V2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNlKQogCi1jb25zdCBDbGFzc0luZm8gSlNF
dmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZTo6c19pbmZvID0geyAiRXZlbnRUYXJnZXRTVkdF
bGVtZW50SW5zdGFuY2UiLCAmSlNTVkdFbGVtZW50SW5zdGFuY2U6OnNfaW5mbywgMCwgMCB9Owor
c3RhdGljIEpTVmFsdWUqIGpzRXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2VPbkFib3J0KEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKK3N0YXRp
YyB2b2lkIHNldEpTRXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2VPbkFib3J0KEV4ZWNTdGF0
ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSopOworc3RhdGljIEpTVmFsdWUqIGpzRXZlbnRUYXJnZXRT
VkdFbGVtZW50SW5zdGFuY2VPbkJsdXIoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIGNv
bnN0IFByb3BlcnR5U2xvdCYpOworc3RhdGljIHZvaWQgc2V0SlNFdmVudFRhcmdldFNWR0VsZW1l
bnRJbnN0YW5jZU9uQmx1cihFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqKTsKK3N0YXRp
YyBKU1ZhbHVlKiBqc0V2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNlT25DaGFuZ2UoRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOworc3RhdGljIHZv
aWQgc2V0SlNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZU9uQ2hhbmdlKEV4ZWNTdGF0ZSos
IEpTT2JqZWN0KiwgSlNWYWx1ZSopOworc3RhdGljIEpTVmFsdWUqIGpzRXZlbnRUYXJnZXRTVkdF
bGVtZW50SW5zdGFuY2VPbkNsaWNrKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25z
dCBQcm9wZXJ0eVNsb3QmKTsKK3N0YXRpYyB2b2lkIHNldEpTRXZlbnRUYXJnZXRTVkdFbGVtZW50
SW5zdGFuY2VPbkNsaWNrKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSopOworc3RhdGlj
IEpTVmFsdWUqIGpzRXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2VPbkNvbnRleHRNZW51KEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKK3N0YXRp
YyB2b2lkIHNldEpTRXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2VPbkNvbnRleHRNZW51KEV4
ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSopOworc3RhdGljIEpTVmFsdWUqIGpzRXZlbnRU
YXJnZXRTVkdFbGVtZW50SW5zdGFuY2VPbkRibENsaWNrKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKK3N0YXRpYyB2b2lkIHNldEpTRXZlbnRUYXJn
ZXRTVkdFbGVtZW50SW5zdGFuY2VPbkRibENsaWNrKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNW
YWx1ZSopOworc3RhdGljIEpTVmFsdWUqIGpzRXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2VP
bkJlZm9yZUN1dChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlT
bG90Jik7CitzdGF0aWMgdm9pZCBzZXRKU0V2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNlT25C
ZWZvcmVDdXQoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1ZhbHVlKik7CitzdGF0aWMgSlNWYWx1
ZSoganNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZU9uQ3V0KEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKK3N0YXRpYyB2b2lkIHNldEpTRXZl
bnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2VPbkN1dChFeGVjU3RhdGUqLCBKU09iamVjdCosIEpT
VmFsdWUqKTsKK3N0YXRpYyBKU1ZhbHVlKiBqc0V2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNl
T25CZWZvcmVDb3B5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0
eVNsb3QmKTsKK3N0YXRpYyB2b2lkIHNldEpTRXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2VP
bkJlZm9yZUNvcHkoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1ZhbHVlKik7CitzdGF0aWMgSlNW
YWx1ZSoganNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZU9uQ29weShFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jik7CitzdGF0aWMgdm9pZCBzZXRK
U0V2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNlT25Db3B5KEV4ZWNTdGF0ZSosIEpTT2JqZWN0
KiwgSlNWYWx1ZSopOworc3RhdGljIEpTVmFsdWUqIGpzRXZlbnRUYXJnZXRTVkdFbGVtZW50SW5z
dGFuY2VPbkJlZm9yZVBhc3RlKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQ
cm9wZXJ0eVNsb3QmKTsKK3N0YXRpYyB2b2lkIHNldEpTRXZlbnRUYXJnZXRTVkdFbGVtZW50SW5z
dGFuY2VPbkJlZm9yZVBhc3RlKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSopOworc3Rh
dGljIEpTVmFsdWUqIGpzRXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2VPblBhc3RlKEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKK3N0YXRpYyB2
b2lkIHNldEpTRXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2VPblBhc3RlKEV4ZWNTdGF0ZSos
IEpTT2JqZWN0KiwgSlNWYWx1ZSopOworc3RhdGljIEpTVmFsdWUqIGpzRXZlbnRUYXJnZXRTVkdF
bGVtZW50SW5zdGFuY2VPbkRyYWcoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0
IFByb3BlcnR5U2xvdCYpOworc3RhdGljIHZvaWQgc2V0SlNFdmVudFRhcmdldFNWR0VsZW1lbnRJ
bnN0YW5jZU9uRHJhZyhFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqKTsKK3N0YXRpYyBK
U1ZhbHVlKiBqc0V2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNlT25EcmFnRW5kKEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKK3N0YXRpYyB2b2lk
IHNldEpTRXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2VPbkRyYWdFbmQoRXhlY1N0YXRlKiwg
SlNPYmplY3QqLCBKU1ZhbHVlKik7CitzdGF0aWMgSlNWYWx1ZSoganNFdmVudFRhcmdldFNWR0Vs
ZW1lbnRJbnN0YW5jZU9uRHJhZ0VudGVyKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBj
b25zdCBQcm9wZXJ0eVNsb3QmKTsKK3N0YXRpYyB2b2lkIHNldEpTRXZlbnRUYXJnZXRTVkdFbGVt
ZW50SW5zdGFuY2VPbkRyYWdFbnRlcihFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqKTsK
K3N0YXRpYyBKU1ZhbHVlKiBqc0V2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNlT25EcmFnTGVh
dmUoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOwor
c3RhdGljIHZvaWQgc2V0SlNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZU9uRHJhZ0xlYXZl
KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSopOworc3RhdGljIEpTVmFsdWUqIGpzRXZl
bnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2VPbkRyYWdPdmVyKEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKK3N0YXRpYyB2b2lkIHNldEpTRXZlbnRU
YXJnZXRTVkdFbGVtZW50SW5zdGFuY2VPbkRyYWdPdmVyKEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kiwg
SlNWYWx1ZSopOworc3RhdGljIEpTVmFsdWUqIGpzRXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFu
Y2VPbkRyYWdTdGFydChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVy
dHlTbG90Jik7CitzdGF0aWMgdm9pZCBzZXRKU0V2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNl
T25EcmFnU3RhcnQoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1ZhbHVlKik7CitzdGF0aWMgSlNW
YWx1ZSoganNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZU9uRHJvcChFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jik7CitzdGF0aWMgdm9pZCBzZXRK
U0V2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNlT25Ecm9wKEV4ZWNTdGF0ZSosIEpTT2JqZWN0
KiwgSlNWYWx1ZSopOworc3RhdGljIEpTVmFsdWUqIGpzRXZlbnRUYXJnZXRTVkdFbGVtZW50SW5z
dGFuY2VPbkVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0
eVNsb3QmKTsKK3N0YXRpYyB2b2lkIHNldEpTRXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2VP
bkVycm9yKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSopOworc3RhdGljIEpTVmFsdWUq
IGpzRXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2VPbkZvY3VzKEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKK3N0YXRpYyB2b2lkIHNldEpTRXZl
bnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2VPbkZvY3VzKEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kiwg
SlNWYWx1ZSopOworc3RhdGljIEpTVmFsdWUqIGpzRXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFu
Y2VPbklucHV0KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNs
b3QmKTsKK3N0YXRpYyB2b2lkIHNldEpTRXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2VPbklu
cHV0KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSopOworc3RhdGljIEpTVmFsdWUqIGpz
RXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2VPbktleURvd24oRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOworc3RhdGljIHZvaWQgc2V0SlNFdmVu
dFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZU9uS2V5RG93bihFeGVjU3RhdGUqLCBKU09iamVjdCos
IEpTVmFsdWUqKTsKK3N0YXRpYyBKU1ZhbHVlKiBqc0V2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3Rh
bmNlT25LZXlQcmVzcyhFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVy
dHlTbG90Jik7CitzdGF0aWMgdm9pZCBzZXRKU0V2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNl
T25LZXlQcmVzcyhFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqKTsKK3N0YXRpYyBKU1Zh
bHVlKiBqc0V2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNlT25LZXlVcChFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jik7CitzdGF0aWMgdm9pZCBzZXRK
U0V2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNlT25LZXlVcChFeGVjU3RhdGUqLCBKU09iamVj
dCosIEpTVmFsdWUqKTsKK3N0YXRpYyBKU1ZhbHVlKiBqc0V2ZW50VGFyZ2V0U1ZHRWxlbWVudElu
c3RhbmNlT25Mb2FkKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0
eVNsb3QmKTsKK3N0YXRpYyB2b2lkIHNldEpTRXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2VP
bkxvYWQoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1ZhbHVlKik7CitzdGF0aWMgSlNWYWx1ZSog
anNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZU9uTW91c2VEb3duKEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKK3N0YXRpYyB2b2lkIHNldEpT
RXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2VPbk1vdXNlRG93bihFeGVjU3RhdGUqLCBKU09i
amVjdCosIEpTVmFsdWUqKTsKK3N0YXRpYyBKU1ZhbHVlKiBqc0V2ZW50VGFyZ2V0U1ZHRWxlbWVu
dEluc3RhbmNlT25Nb3VzZU1vdmUoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0
IFByb3BlcnR5U2xvdCYpOworc3RhdGljIHZvaWQgc2V0SlNFdmVudFRhcmdldFNWR0VsZW1lbnRJ
bnN0YW5jZU9uTW91c2VNb3ZlKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSopOworc3Rh
dGljIEpTVmFsdWUqIGpzRXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2VPbk1vdXNlT3V0KEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKK3N0YXRp
YyB2b2lkIHNldEpTRXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2VPbk1vdXNlT3V0KEV4ZWNT
dGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSopOworc3RhdGljIEpTVmFsdWUqIGpzRXZlbnRUYXJn
ZXRTVkdFbGVtZW50SW5zdGFuY2VPbk1vdXNlT3ZlcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jik7CitzdGF0aWMgdm9pZCBzZXRKU0V2ZW50VGFyZ2V0
U1ZHRWxlbWVudEluc3RhbmNlT25Nb3VzZU92ZXIoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1Zh
bHVlKik7CitzdGF0aWMgSlNWYWx1ZSoganNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZU9u
TW91c2VVcChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90
Jik7CitzdGF0aWMgdm9pZCBzZXRKU0V2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNlT25Nb3Vz
ZVVwKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSopOworc3RhdGljIEpTVmFsdWUqIGpz
RXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2VPbk1vdXNlV2hlZWwoRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOworc3RhdGljIHZvaWQgc2V0SlNF
dmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZU9uTW91c2VXaGVlbChFeGVjU3RhdGUqLCBKU09i
amVjdCosIEpTVmFsdWUqKTsKK3N0YXRpYyBKU1ZhbHVlKiBqc0V2ZW50VGFyZ2V0U1ZHRWxlbWVu
dEluc3RhbmNlT25SZXNldChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJv
cGVydHlTbG90Jik7CitzdGF0aWMgdm9pZCBzZXRKU0V2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3Rh
bmNlT25SZXNldChFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqKTsKK3N0YXRpYyBKU1Zh
bHVlKiBqc0V2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNlT25SZXNpemUoRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOworc3RhdGljIHZvaWQgc2V0
SlNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZU9uUmVzaXplKEV4ZWNTdGF0ZSosIEpTT2Jq
ZWN0KiwgSlNWYWx1ZSopOworc3RhdGljIEpTVmFsdWUqIGpzRXZlbnRUYXJnZXRTVkdFbGVtZW50
SW5zdGFuY2VPblNjcm9sbChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJv
cGVydHlTbG90Jik7CitzdGF0aWMgdm9pZCBzZXRKU0V2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3Rh
bmNlT25TY3JvbGwoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1ZhbHVlKik7CitzdGF0aWMgSlNW
YWx1ZSoganNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZU9uU2VhcmNoKEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKK3N0YXRpYyB2b2lkIHNl
dEpTRXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2VPblNlYXJjaChFeGVjU3RhdGUqLCBKU09i
amVjdCosIEpTVmFsdWUqKTsKK3N0YXRpYyBKU1ZhbHVlKiBqc0V2ZW50VGFyZ2V0U1ZHRWxlbWVu
dEluc3RhbmNlT25TZWxlY3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFBy
b3BlcnR5U2xvdCYpOworc3RhdGljIHZvaWQgc2V0SlNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0
YW5jZU9uU2VsZWN0KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSopOworc3RhdGljIEpT
VmFsdWUqIGpzRXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2VPblNlbGVjdFN0YXJ0KEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKK3N0YXRpYyB2
b2lkIHNldEpTRXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2VPblNlbGVjdFN0YXJ0KEV4ZWNT
dGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSopOworc3RhdGljIEpTVmFsdWUqIGpzRXZlbnRUYXJn
ZXRTVkdFbGVtZW50SW5zdGFuY2VPblN1Ym1pdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVy
JiwgY29uc3QgUHJvcGVydHlTbG90Jik7CitzdGF0aWMgdm9pZCBzZXRKU0V2ZW50VGFyZ2V0U1ZH
RWxlbWVudEluc3RhbmNlT25TdWJtaXQoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1ZhbHVlKik7
CitzdGF0aWMgSlNWYWx1ZSoganNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZU9uVW5sb2Fk
KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKK3N0
YXRpYyB2b2lkIHNldEpTRXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2VPblVubG9hZChFeGVj
U3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqKTsKKworLyogU291cmNlIGZvciBKU0V2ZW50VGFy
Z2V0U1ZHRWxlbWVudEluc3RhbmNlVGFibGUKK0BiZWdpbiBKU0V2ZW50VGFyZ2V0U1ZHRWxlbWVu
dEluc3RhbmNlVGFibGUKK29uYWJvcnQgICAgICAganNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0
YW5jZU9uQWJvcnQgICAgICAgIERvbnREZWxldGV8RG9udEVudW0KK29uYmx1ciAgICAgICAganNF
dmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZU9uQmx1ciAgICAgICAgIERvbnREZWxldGV8RG9u
dEVudW0KK29uY2hhbmdlICAgICAganNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZU9uQ2hh
bmdlICAgICAgIERvbnREZWxldGV8RG9udEVudW0KK29uY2xpY2sgICAgICAganNFdmVudFRhcmdl
dFNWR0VsZW1lbnRJbnN0YW5jZU9uQ2xpY2sgICAgICAgIERvbnREZWxldGV8RG9udEVudW0KK29u
Y29udGV4dG1lbnUganNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZU9uQ29udGV4dE1lbnUg
IERvbnREZWxldGV8RG9udEVudW0KK29uZGJsY2xpY2sgICAganNFdmVudFRhcmdldFNWR0VsZW1l
bnRJbnN0YW5jZU9uRGJsQ2xpY2sgICAgIERvbnREZWxldGV8RG9udEVudW0KK29uYmVmb3JlY3V0
ICAganNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZU9uQmVmb3JlQ3V0ICAgIERvbnREZWxl
dGV8RG9udEVudW0KK29uY3V0ICAgICAgICAganNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5j
ZU9uQ3V0ICAgICAgICAgIERvbnREZWxldGV8RG9udEVudW0KK29uYmVmb3JlY29weSAganNFdmVu
dFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZU9uQmVmb3JlQ29weSAgIERvbnREZWxldGV8RG9udEVu
dW0KK29uY29weSAgICAgICAganNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZU9uQ29weSAg
ICAgICAgIERvbnREZWxldGV8RG9udEVudW0KK29uYmVmb3JlcGFzdGUganNFdmVudFRhcmdldFNW
R0VsZW1lbnRJbnN0YW5jZU9uQmVmb3JlUGFzdGUgIERvbnREZWxldGV8RG9udEVudW0KK29ucGFz
dGUgICAgICAganNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZU9uUGFzdGUgICAgICAgIERv
bnREZWxldGV8RG9udEVudW0KK29uZHJhZyAgICAgICAganNFdmVudFRhcmdldFNWR0VsZW1lbnRJ
bnN0YW5jZU9uRHJhZyAgICAgICAgIERvbnREZWxldGV8RG9udEVudW0KK29uZHJhZ2VuZCAgICAg
anNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZU9uRHJhZ0VuZCAgICAgIERvbnREZWxldGV8
RG9udEVudW0KK29uZHJhZ2VudGVyICAganNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZU9u
RHJhZ0VudGVyICAgIERvbnREZWxldGV8RG9udEVudW0KK29uZHJhZ2xlYXZlICAganNFdmVudFRh
cmdldFNWR0VsZW1lbnRJbnN0YW5jZU9uRHJhZ0xlYXZlICAgIERvbnREZWxldGV8RG9udEVudW0K
K29uZHJhZ292ZXIgICAganNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZU9uRHJhZ092ZXIg
ICAgIERvbnREZWxldGV8RG9udEVudW0KK29uZHJhZ3N0YXJ0ICAganNFdmVudFRhcmdldFNWR0Vs
ZW1lbnRJbnN0YW5jZU9uRHJhZ1N0YXJ0ICAgIERvbnREZWxldGV8RG9udEVudW0KK29uZHJvcCAg
ICAgICAganNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZU9uRHJvcCAgICAgICAgIERvbnRE
ZWxldGV8RG9udEVudW0KK29uZXJyb3IgICAgICAganNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0
YW5jZU9uRXJyb3IgICAgICAgIERvbnREZWxldGV8RG9udEVudW0KK29uZm9jdXMgICAgICAganNF
dmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZU9uRm9jdXMgICAgICAgIERvbnREZWxldGV8RG9u
dEVudW0KK29uaW5wdXQgICAgICAganNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZU9uSW5w
dXQgICAgICAgIERvbnREZWxldGV8RG9udEVudW0KK29ua2V5ZG93biAgICAganNFdmVudFRhcmdl
dFNWR0VsZW1lbnRJbnN0YW5jZU9uS2V5RG93biAgICAgIERvbnREZWxldGV8RG9udEVudW0KK29u
a2V5cHJlc3MgICAganNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZU9uS2V5UHJlc3MgICAg
IERvbnREZWxldGV8RG9udEVudW0KK29ua2V5dXAgICAgICAganNFdmVudFRhcmdldFNWR0VsZW1l
bnRJbnN0YW5jZU9uS2V5VXAgICAgICAgIERvbnREZWxldGV8RG9udEVudW0KK29ubG9hZCAgICAg
ICAganNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZU9uTG9hZCAgICAgICAgIERvbnREZWxl
dGV8RG9udEVudW0KK29ubW91c2Vkb3duICAganNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5j
ZU9uTW91c2VEb3duICAgIERvbnREZWxldGV8RG9udEVudW0KK29ubW91c2Vtb3ZlICAganNFdmVu
dFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZU9uTW91c2VNb3ZlICAgIERvbnREZWxldGV8RG9udEVu
dW0KK29ubW91c2VvdXQgICAganNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZU9uTW91c2VP
dXQgICAgIERvbnREZWxldGV8RG9udEVudW0KK29ubW91c2VvdmVyICAganNFdmVudFRhcmdldFNW
R0VsZW1lbnRJbnN0YW5jZU9uTW91c2VPdmVyICAgIERvbnREZWxldGV8RG9udEVudW0KK29ubW91
c2V1cCAgICAganNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZU9uTW91c2VVcCAgICAgIERv
bnREZWxldGV8RG9udEVudW0KK29ubW91c2V3aGVlbCAganNFdmVudFRhcmdldFNWR0VsZW1lbnRJ
bnN0YW5jZU9uTW91c2VXaGVlbCAgIERvbnREZWxldGV8RG9udEVudW0KK29ucmVzZXQgICAgICAg
anNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZU9uUmVzZXQgICAgICAgIERvbnREZWxldGV8
RG9udEVudW0KK29ucmVzaXplICAgICAganNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZU9u
UmVzaXplICAgICAgIERvbnREZWxldGV8RG9udEVudW0KK29uc2Nyb2xsICAgICAganNFdmVudFRh
cmdldFNWR0VsZW1lbnRJbnN0YW5jZU9uU2Nyb2xsICAgICAgIERvbnREZWxldGV8RG9udEVudW0K
K29uc2VhcmNoICAgICAganNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZU9uU2VhcmNoICAg
ICAgIERvbnREZWxldGV8RG9udEVudW0KK29uc2VsZWN0ICAgICAganNFdmVudFRhcmdldFNWR0Vs
ZW1lbnRJbnN0YW5jZU9uU2VsZWN0ICAgICAgIERvbnREZWxldGV8RG9udEVudW0KK29uc2VsZWN0
c3RhcnQganNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZU9uU2VsZWN0U3RhcnQgIERvbnRE
ZWxldGV8RG9udEVudW0KK29uc3VibWl0ICAgICAganNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0
YW5jZU9uU3VibWl0ICAgICAgIERvbnREZWxldGV8RG9udEVudW0KK29udW5sb2FkICAgICAganNF
dmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZU9uVW5sb2FkICAgICAgIERvbnREZWxldGV8RG9u
dEVudW0KK0BlbmQKKyovCisKK0RFQ0xBUkVfSlNfRVZFTlRfTElTVEVORVJTKEV2ZW50VGFyZ2V0
U1ZHRWxlbWVudEluc3RhbmNlKQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNpbmNsdWRl
ICJKU0V2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNlLmx1dC5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NvbnN0IENsYXNzSW5mbyBKU0V2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNl
OjpzX2luZm8gPSB7ICJFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZSIsICZKU1NWR0VsZW1l
bnRJbnN0YW5jZTo6c19pbmZvLCAmSlNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZVRhYmxl
LCAwIH07CiAKIEpTRXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2U6OkpTRXZlbnRUYXJnZXRT
VkdFbGVtZW50SW5zdGFuY2UoUGFzc1JlZlB0cjxTdHJ1Y3R1cmVJRD4gc3RydWN0dXJlLCBQYXNz
UmVmUHRyPEV2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNlPiBub2RlKQogICAgIDogSlNTVkdF
bGVtZW50SW5zdGFuY2Uoc3RydWN0dXJlLCBub2RlKQogewogfQogCitib29sIEpTRXZlbnRUYXJn
ZXRTVkdFbGVtZW50SW5zdGFuY2U6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorewor
ICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0
YW5jZSwgSlNTVkdFbGVtZW50SW5zdGFuY2U+KGV4ZWMsICZKU0V2ZW50VGFyZ2V0U1ZHRWxlbWVu
dEluc3RhbmNlVGFibGUsIHRoaXMsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK3ZvaWQgSlNF
dmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZTo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlKiB2YWx1ZSwgUHV0UHJvcGVydHlTbG90
JiBzbG90KQoreworICAgIGxvb2t1cFB1dDxKU0V2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNl
LCBKU1NWR0VsZW1lbnRJbnN0YW5jZT4oZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgJkpTRXZl
bnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2VUYWJsZSwgdGhpcywgc2xvdCk7Cit9CisKIEpTT2Jq
ZWN0KiBKU0V2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNlOjpjcmVhdGVQcm90b3R5cGUoRXhl
Y1N0YXRlKiBleGVjKQogewogICAgIHJldHVybiBuZXcgKGV4ZWMpIEpTRXZlbnRUYXJnZXRTVkdF
bGVtZW50SW5zdGFuY2VQcm90b3R5cGUoSlNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZVBy
b3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlSUQoSlNTVkdFbGVtZW50SW5zdGFuY2VQcm90b3R5cGU6
OnNlbGYoZXhlYykpKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldFNW
R0VsZW1lbnRJbnN0YW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNF
dmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZS5oCShyZXZpc2lvbiAzNjg3MykKKysrIFdlYkNv
cmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00NiwzNyArNDYsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBK
U0M6OkpTVmFsdWUqIGdldExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKSBj
b25zdDsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhl
Y1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAg
ICAgICAgSlNDOjpKU1ZhbHVlKiBnZXRWYWx1ZVByb3BlcnR5KEpTQzo6RXhlY1N0YXRlKiwgaW50
IHRva2VuKSBjb25zdDsKICAgICAgICAgdmlydHVhbCB2b2lkIHB1dChKU0M6OkV4ZWNTdGF0ZSos
IGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6SlNWYWx1ZSosIEpTQzo6UHV0UHJvcGVydHlT
bG90Jik7Ci0gICAgICAgIHZvaWQgcHV0VmFsdWVQcm9wZXJ0eShKU0M6OkV4ZWNTdGF0ZSosIGlu
dCB0b2tlbiwgSlNDOjpKU1ZhbHVlKik7CiAKKyAgICAgICAgdmlydHVhbCBjb25zdCBKU0M6OkNs
YXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJnNfaW5mbzsgfQogICAgICAgICBz
dGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOwotICAgICAgICBzdGF0aWMgY29uc3Qg
Y2hhciogcHJvdG90eXBlQ2xhc3NOYW1lKCkgeyByZXR1cm4gIkV2ZW50VGFyZ2V0U1ZHRWxlbWVu
dEluc3RhbmNlUHJvdG90eXBlIjsgfQogCi0gICAgcHJpdmF0ZToKLSAgICAgICAgSlNFdmVudFRh
cmdldEJhc2U8SlNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZT4gbV9iYXNlOworICAgICAg
ICBzdGF0aWMgY29uc3QgY2hhciogcHJvdG90eXBlQ2xhc3NOYW1lKCkgeyByZXR1cm4gIkV2ZW50
VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNlUHJvdG90eXBlIjsgfQogICAgIH07CiAKLSAgICBBTFdB
WVNfSU5MSU5FIGJvb2wgSlNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZTo6Z2V0T3duUHJv
cGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmIHNsb3QpCi0gICAgewotICAgICAgICByZXR1
cm4gbV9iYXNlLmdldE93blByb3BlcnR5U2xvdDxKU1NWR0VsZW1lbnRJbnN0YW5jZT4odGhpcywg
ZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIEpT
Qzo6SlNWYWx1ZSogSlNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZTo6Z2V0VmFsdWVQcm9w
ZXJ0eShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgaW50IHRva2VuKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIG1fYmFzZS5nZXRWYWx1ZVByb3BlcnR5KHRoaXMsIGV4ZWMsIHRva2VuKTsKLSAg
ICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgSlNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0
YW5jZTo6cHV0KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlKiB2YWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmIHNs
b3QpCi0gICAgewotICAgICAgICBtX2Jhc2UucHV0PEpTU1ZHRWxlbWVudEluc3RhbmNlPih0aGlz
LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKLSAgICB9Ci0KLSAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgSlNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZTo6cHV0VmFsdWVQcm9w
ZXJ0eShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgaW50IHRva2VuLCBKU0M6OkpTVmFsdWUqIHZhbHVl
KQotICAgIHsKLSAgICAgICAgbV9iYXNlLnB1dFZhbHVlUHJvcGVydHkodGhpcywgZXhlYywgdG9r
ZW4sIHZhbHVlKTsKLSAgICB9Ci0KICAgICB0eXBlZGVmIEpTRXZlbnRUYXJnZXRCYXNlUHJvdG90
eXBlPEpTRXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2U+IEpTRXZlbnRUYXJnZXRTVkdFbGVt
ZW50SW5zdGFuY2VQcm90b3R5cGU7CiAgICAgRXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2Uq
IHRvRXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2UoSlNDOjpKU1ZhbHVlKik7CiAKSW5kZXg6
IFdlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAJ
KHJldmlzaW9uIDM2ODczKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1l
bnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw4ICs0MCw4IEBAIGJvb2wgSlNIVE1M
SW5wdXRFbGVtZW50OjpjdXN0b21HZXRPd25Qcm8KIAogICAgIGNvbnN0IEhhc2hFbnRyeSogZW50
cnkgPSBKU0hUTUxJbnB1dEVsZW1lbnRQcm90b3R5cGU6OnNfaW5mby5wcm9wSGFzaFRhYmxlKGV4
ZWMpLT5lbnRyeShleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgIGlmIChlbnRyeSkgewotICAgICAg
ICBpZiAoZW50cnktPmF0dHJpYnV0ZXMgJiBGdW5jdGlvbikgewotICAgICAgICAgICAgaWYgKGVu
dHJ5LT5mdW5jdGlvblZhbHVlID09IGpzSFRNTElucHV0RWxlbWVudFByb3RvdHlwZUZ1bmN0aW9u
U2V0U2VsZWN0aW9uUmFuZ2UpIHsKKyAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBG
dW5jdGlvbikgeworICAgICAgICAgICAgaWYgKGVudHJ5LT5mdW5jdGlvbigpID09IGpzSFRNTElu
cHV0RWxlbWVudFByb3RvdHlwZUZ1bmN0aW9uU2V0U2VsZWN0aW9uUmFuZ2UpIHsKICAgICAgICAg
ICAgICAgICBzbG90LnNldFVuZGVmaW5lZCgpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICAgICAgfQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hpc3RvcnlDdXN0
b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9t
LmNwcAkocmV2aXNpb24gMzY4NzMpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSGlzdG9yeUN1
c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDExICszMSwyNyBAQAogCiAjaW5jbHVkZSAi
RnJhbWUuaCIKICNpbmNsdWRlICJIaXN0b3J5LmgiCisjaW5jbHVkZSA8a2pzL1Byb3RvdHlwZUZ1
bmN0aW9uLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorSlNWYWx1ZSogbm9uQ2FjaGluZ1N0YXRpY0JhY2tGdW5jdGlvbkdldHRlcihFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlTbG90
JiBzbG90KQoreworICAgIHJldHVybiBuZXcgKGV4ZWMpIFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMs
IDAsIHByb3BlcnR5TmFtZSwganNIaXN0b3J5UHJvdG90eXBlRnVuY3Rpb25CYWNrKTsKK30KKwor
SlNWYWx1ZSogbm9uQ2FjaGluZ1N0YXRpY0ZvcndhcmRGdW5jdGlvbkdldHRlcihFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlTbG90
JiBzbG90KQoreworICAgIHJldHVybiBuZXcgKGV4ZWMpIFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMs
IDAsIHByb3BlcnR5TmFtZSwganNIaXN0b3J5UHJvdG90eXBlRnVuY3Rpb25Gb3J3YXJkKTsKK30K
KworSlNWYWx1ZSogbm9uQ2FjaGluZ1N0YXRpY0dvRnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5U2xvdCYg
c2xvdCkKK3sKKyAgICByZXR1cm4gbmV3IChleGVjKSBQcm90b3R5cGVGdW5jdGlvbihleGVjLCAx
LCBwcm9wZXJ0eU5hbWUsIGpzSGlzdG9yeVByb3RvdHlwZUZ1bmN0aW9uR28pOworfQorCiBib29s
IEpTSGlzdG9yeTo6Y3VzdG9tR2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAg
Ly8gV2hlbiBhY2Nlc3NpbmcgSGlzdG9yeSBjcm9zcy1kb21haW4sIGZ1bmN0aW9ucyBhcmUgYWx3
YXlzIHRoZSBuYXRpdmUgYnVpbHQtaW4gb25lcy4KQEAgLTUxLDEyICs2NywxNyBAQCBib29sIEpT
SGlzdG9yeTo6Y3VzdG9tR2V0T3duUHJvcGVydHlTbG90CiAgICAgY29uc3QgSGFzaEVudHJ5KiBl
bnRyeSA9IEpTSGlzdG9yeVByb3RvdHlwZTo6c19pbmZvLnByb3BIYXNoVGFibGUoZXhlYyktPmVu
dHJ5KGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKGVudHJ5KSB7CiAgICAgICAgIC8vIEFs
bG93IGFjY2VzcyB0byBiYWNrKCksIGZvcndhcmQoKSBhbmQgZ28oKSBmcm9tIGFueSBmcmFtZS4K
LSAgICAgICAgaWYgKChlbnRyeS0+YXR0cmlidXRlcyAmIEZ1bmN0aW9uKQotICAgICAgICAgICAg
ICAgICYmIChlbnRyeS0+ZnVuY3Rpb25WYWx1ZSA9PSBqc0hpc3RvcnlQcm90b3R5cGVGdW5jdGlv
bkJhY2sKLSAgICAgICAgICAgICAgICAgICAgfHwgZW50cnktPmZ1bmN0aW9uVmFsdWUgPT0ganNI
aXN0b3J5UHJvdG90eXBlRnVuY3Rpb25Gb3J3YXJkCi0gICAgICAgICAgICAgICAgICAgIHx8IGVu
dHJ5LT5mdW5jdGlvblZhbHVlID09IGpzSGlzdG9yeVByb3RvdHlwZUZ1bmN0aW9uR28pKSB7Ci0g
ICAgICAgICAgICBzbG90LnNldFN0YXRpY0VudHJ5KHRoaXMsIGVudHJ5LCBub25DYWNoaW5nU3Rh
dGljRnVuY3Rpb25HZXR0ZXIpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlm
IChlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pIHsKKyAgICAgICAgICAgIGlmIChlbnRy
eS0+ZnVuY3Rpb24oKSA9PSBqc0hpc3RvcnlQcm90b3R5cGVGdW5jdGlvbkJhY2spIHsKKyAgICAg
ICAgICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzLCBub25DYWNoaW5nU3RhdGljQmFja0Z1bmN0
aW9uR2V0dGVyKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0g
ZWxzZSBpZiAoZW50cnktPmZ1bmN0aW9uKCkgPT0ganNIaXN0b3J5UHJvdG90eXBlRnVuY3Rpb25G
b3J3YXJkKSB7CisgICAgICAgICAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpcywgbm9uQ2FjaGlu
Z1N0YXRpY0ZvcndhcmRGdW5jdGlvbkdldHRlcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGVudHJ5LT5mdW5jdGlvbigpID09IGpzSGlzdG9y
eVByb3RvdHlwZUZ1bmN0aW9uR28pIHsKKyAgICAgICAgICAgICAgICBzbG90LnNldEN1c3RvbSh0
aGlzLCBub25DYWNoaW5nU3RhdGljR29GdW5jdGlvbkdldHRlcik7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAg
ICAgICAvLyBBbGxvdyBhY2Nlc3MgdG8gdG9TdHJpbmcoKSBjcm9zcy1kb21haW4sIGJ1dCBhbHdh
eXMgT2JqZWN0LnRvU3RyaW5nLgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9u
Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25D
dXN0b20uY3BwCShyZXZpc2lvbiAzNjg3MykKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNMb2Nh
dGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDE2ICsyNiwzMiBAQAogI2luY2x1
ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2Fk
ZXIuaCIKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd0N1
c3RvbS5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJMb2NhdGlvbi5oIgotI2luY2x1
ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNs
dWRlIDxranMvUHJvdG90eXBlRnVuY3Rpb24uaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitKU1ZhbHVlKiBub25DYWNoaW5nU3RhdGljUmVwbGFjZUZ1
bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgcmV0dXJuIG5ldyAoZXhlYykg
UHJvdG90eXBlRnVuY3Rpb24oZXhlYywgMSwgcHJvcGVydHlOYW1lLCBqc0xvY2F0aW9uUHJvdG90
eXBlRnVuY3Rpb25SZXBsYWNlKTsKK30KKworSlNWYWx1ZSogbm9uQ2FjaGluZ1N0YXRpY1JlbG9h
ZEZ1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgcmV0dXJuIG5ldyAoZXhl
YykgUHJvdG90eXBlRnVuY3Rpb24oZXhlYywgMCwgcHJvcGVydHlOYW1lLCBqc0xvY2F0aW9uUHJv
dG90eXBlRnVuY3Rpb25SZWxvYWQpOworfQorCitKU1ZhbHVlKiBub25DYWNoaW5nU3RhdGljQXNz
aWduRnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICByZXR1cm4gbmV3IChl
eGVjKSBQcm90b3R5cGVGdW5jdGlvbihleGVjLCAxLCBwcm9wZXJ0eU5hbWUsIGpzTG9jYXRpb25Q
cm90b3R5cGVGdW5jdGlvbkFzc2lnbik7Cit9CisKIGJvb2wgSlNMb2NhdGlvbjo6Y3VzdG9tR2V0
T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gaW1wbCgp
LT5mcmFtZSgpOwpAQCAtNTUsMTIgKzcxLDE3IEBAIGJvb2wgSlNMb2NhdGlvbjo6Y3VzdG9tR2V0
T3duUHJvcGVydHlTbG8KIAogICAgIC8vIENoZWNrIGZvciB0aGUgZmV3IGZ1bmN0aW9ucyB0aGF0
IHdlIGFsbG93LCBldmVuIHdoZW4gY2FsbGVkIGNyb3NzLWRvbWFpbi4KICAgICBjb25zdCBIYXNo
RW50cnkqIGVudHJ5ID0gSlNMb2NhdGlvblByb3RvdHlwZTo6c19pbmZvLnByb3BIYXNoVGFibGUo
ZXhlYyktPmVudHJ5KGV4ZWMsIHByb3BlcnR5TmFtZSk7Ci0gICAgaWYgKGVudHJ5ICYmIChlbnRy
eS0+YXR0cmlidXRlcyAmIEZ1bmN0aW9uKQotICAgICAgICAgICAgJiYgKGVudHJ5LT5mdW5jdGlv
blZhbHVlID09IGpzTG9jYXRpb25Qcm90b3R5cGVGdW5jdGlvblJlcGxhY2UKLSAgICAgICAgICAg
ICAgICB8fCBlbnRyeS0+ZnVuY3Rpb25WYWx1ZSA9PSBqc0xvY2F0aW9uUHJvdG90eXBlRnVuY3Rp
b25SZWxvYWQKLSAgICAgICAgICAgICAgICB8fCBlbnRyeS0+ZnVuY3Rpb25WYWx1ZSA9PSBqc0xv
Y2F0aW9uUHJvdG90eXBlRnVuY3Rpb25Bc3NpZ24pKSB7Ci0gICAgICAgIHNsb3Quc2V0U3RhdGlj
RW50cnkodGhpcywgZW50cnksIG5vbkNhY2hpbmdTdGF0aWNGdW5jdGlvbkdldHRlcik7Ci0gICAg
ICAgIHJldHVybiB0cnVlOworICAgIGlmIChlbnRyeSAmJiAoZW50cnktPmF0dHJpYnV0ZXMoKSAm
IEZ1bmN0aW9uKSkgeworICAgICAgICBpZiAoZW50cnktPmZ1bmN0aW9uKCkgPT0ganNMb2NhdGlv
blByb3RvdHlwZUZ1bmN0aW9uUmVwbGFjZSkgeworICAgICAgICAgICAgc2xvdC5zZXRDdXN0b20o
dGhpcywgbm9uQ2FjaGluZ1N0YXRpY1JlcGxhY2VGdW5jdGlvbkdldHRlcik7CisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfSBlbHNlIGlmIChlbnRyeS0+ZnVuY3Rpb24oKSA9PSBq
c0xvY2F0aW9uUHJvdG90eXBlRnVuY3Rpb25SZWxvYWQpIHsKKyAgICAgICAgICAgIHNsb3Quc2V0
Q3VzdG9tKHRoaXMsIG5vbkNhY2hpbmdTdGF0aWNSZXBsYWNlRnVuY3Rpb25HZXR0ZXIpOworICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0gZWxzZSBpZiAoZW50cnktPmZ1bmN0aW9u
KCkgPT0ganNMb2NhdGlvblByb3RvdHlwZUZ1bmN0aW9uQXNzaWduKSB7CisgICAgICAgICAgICBz
bG90LnNldEN1c3RvbSh0aGlzLCBub25DYWNoaW5nU3RhdGljQXNzaWduRnVuY3Rpb25HZXR0ZXIp
OworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KICAgICB9CiAKICAgICAvLyBG
SVhNRTogT3RoZXIgaW1wbGVtZW50ZXJzIG9mIHRoZSBXaW5kb3cgY3Jvc3MtZG9tYWluIHNjaGVt
ZSAoV2luZG93LCBIaXN0b3J5KSBhbGxvdyB0b1N0cmluZywKQEAgLTkwLDcgKzExMSw3IEBAIGJv
b2wgSlNMb2NhdGlvbjo6Y3VzdG9tUHV0KEV4ZWNTdGF0ZSogZXgKICAgICAvLyBDcm9zcy1kb21h
aW4gYWNjZXNzIHRvIHRoZSBsb2NhdGlvbiBpcyBhbGxvd2VkIHdoZW4gYXNzaWduaW5nIHRoZSB3
aG9sZSBsb2NhdGlvbiwKICAgICAvLyBidXQgbm90IHdoZW4gYXNzaWduaW5nIHRoZSBpbmRpdmlk
dWFsIHBpZWNlcywgc2luY2UgdGhhdCBtaWdodCBpbmFkdmVydGVudGx5CiAgICAgLy8gZGlzY2xv
c2Ugb3RoZXIgcGFydHMgb2YgdGhlIG9yaWdpbmFsIGxvY2F0aW9uLgotICAgIGlmIChlbnRyeS0+
aW50ZWdlclZhbHVlICE9IEhyZWZBdHRyTnVtICYmICFzYW1lRG9tYWluQWNjZXNzKQorICAgIGlm
IChlbnRyeS0+cHJvcGVydHlQdXR0ZXIoKSAhPSBzZXRKU0xvY2F0aW9uSHJlZiAmJiAhc2FtZURv
bWFpbkFjY2VzcykKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gZmFsc2U7Cklu
ZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlz
aW9uIDM2ODczKQorKysgV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQkod29ya2luZyBjb3B5KQpAQCAtMjgyLDcgKzI4Miw3IEBAIHN1YiBHZW5lcmF0ZUdldE93blBy
b3BlcnR5U2xvdEJvZHkKICAgICBpZiAoJHJlcXVpcmVzTWFudWFsTG9va3VwKSB7CiAgICAgICAg
IHB1c2goQGdldE93blByb3BlcnR5U2xvdEltcGwsICIgICAgY29uc3QgJHtuYW1lc3BhY2VNYXli
ZX1IYXNoRW50cnkqIGVudHJ5ID0gJHtjbGFzc05hbWV9VGFibGUuZW50cnkoZXhlYywgcHJvcGVy
dHlOYW1lKTtcbiIpOwogICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAg
IGlmIChlbnRyeSkge1xuIik7Ci0gICAgICAgIHB1c2goQGdldE93blByb3BlcnR5U2xvdEltcGws
ICIgICAgICAgIHNsb3Quc2V0U3RhdGljRW50cnkodGhpcywgZW50cnksIHN0YXRpY1ZhbHVlR2V0
dGVyPCRjbGFzc05hbWU+KTtcbiIpOworICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJ
bXBsLCAiICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzLCBlbnRyeS0+cHJvcGVydHlHZXR0ZXIo
KSk7XG4iKTsKICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlTbG90SW1wbCwgIiAgICAgICAg
cmV0dXJuIHRydWU7XG4iKTsKICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlTbG90SW1wbCwg
IiAgICB9XG4iKTsKICAgICB9CkBAIC00MzMsNyArNDMzLDYgQEAgc3ViIEdlbmVyYXRlSGVhZGVy
CiAgICAgaWYgKCRoYXNHZXR0ZXIpIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAg
ICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgY29uc3Qg
SlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7XG4iKTsK
ICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OlBy
b3BlcnR5U2xvdCYpO1xuIikgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhh
c0luZGV4R2V0dGVyIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSGFzQ3Vz
dG9tSW5kZXhHZXR0ZXIifSkgJiYgISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhh
c092ZXJyaWRpbmdOYW1lR2V0dGVyIn07Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgSlNDOjpKU1ZhbHVlKiBnZXRWYWx1ZVByb3BlcnR5KEpTQzo6RXhlY1N0YXRlKiwgaW50IHRv
a2VuKSBjb25zdDtcbiIpIGlmICRudW1BdHRyaWJ1dGVzID4gMCB8fCAkZGF0YU5vZGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJHZW5lcmF0ZUNvbnN0cnVjdG9yIn07CiAgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgYm9vbCBjdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVj
U3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5U2xvdCYpO1xuIikg
aWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tR2V0T3duUHJvcGVydHlT
bG90In07CiAgICAgfQogCkBAIC00NTMsNyArNDUyLDYgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAg
ICAgaWYgKCRoYXNTZXR0ZXIpIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2
aXJ0dWFsIHZvaWQgcHV0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSosIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7XG4iKTsK
ICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2aXJ0dWFsIHZvaWQgcHV0KEpTQzo6
RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUqKTtcbiIpIGlm
ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc0N1c3RvbUluZGV4U2V0dGVyIn07
Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdm9pZCBwdXRWYWx1ZVByb3BlcnR5
KEpTQzo6RXhlY1N0YXRlKiwgaW50LCBKU0M6OkpTVmFsdWUqKTtcbiIpIGlmICRoYXNSZWFkV3Jp
dGVQcm9wZXJ0aWVzOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIGJvb2wgY3Vz
dG9tUHV0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpKU1Zh
bHVlKiwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkN1c3RvbVB1dEZ1bmN0aW9uIn07CiAgICAgfQogCkBAIC00OTksNDEgKzQ5
NywxNSBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICBteSAkbnVtQ3VzdG9tQXR0cmlidXRlcyA9
IDA7CiAKICAgICAjIEF0dHJpYnV0ZSBhbmQgZnVuY3Rpb24gZW51bXMKLSAgICBteSAkaGFzQXR0
ckVudW0gPSAoJG51bUF0dHJpYnV0ZXMgPiAwKSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJHZW5lcmF0ZUNvbnN0cnVjdG9yIn07Ci0gICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IiAgICBlbnVtIHtcbiIpIGlmICgkaGFzQXR0ckVudW0pOwotCiAgICAgaWYgKCRudW1BdHRyaWJ1
dGVzID4gMCkgewotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICAvLyBBdHRy
aWJ1dGVzXG4gICAgICAgICIpOwotCi0gICAgICAgIG15ICRpID0gLTE7CiAgICAgICAgIGZvcmVh
Y2ggKEB7JGRhdGFOb2RlLT5hdHRyaWJ1dGVzfSkgewogICAgICAgICAgICAgbXkgJGF0dHJpYnV0
ZSA9ICRfOwotCiAgICAgICAgICAgICAkbnVtQ3VzdG9tQXR0cmlidXRlcysrIGlmICRhdHRyaWJ1
dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbSJ9OwogICAgICAgICAg
ICAgJG51bUN1c3RvbUF0dHJpYnV0ZXMrKyBpZiAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJDdXN0b21HZXR0ZXIifTsKICAgICAgICAgICAgICRudW1DdXN0b21B
dHRyaWJ1dGVzKysgaWYgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ3VzdG9tU2V0dGVyIn07Ci0KLSAgICAgICAgICAgICRpKys7Ci0gICAgICAgICAgICBpZiAo
KCgkaSAlIDQpIGVxIDApIGFuZCAoJGkgbmUgMCkpIHsKLSAgICAgICAgICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiXG4gICAgICAgICIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICBteSAkdmFsdWUgPSAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPm5hbWUpCi0gICAgICAgICAgICAgICAgLiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50
eXBlID1+IC9Db25zdHJ1Y3RvciQvID8gIkNvbnN0cnVjdG9yIiA6ICIiKQotICAgICAgICAgICAg
ICAgIC4gIkF0dHJOdW0iOwotICAgICAgICAgICAgJHZhbHVlIC49ICIsICIgaWYgKCgkaSA8ICRu
dW1BdHRyaWJ1dGVzIC0gMSkgb3IgKCgkaSBlcSAkbnVtQXR0cmlidXRlcyAtIDEpIGFuZCAoKCRu
dW1GdW5jdGlvbnMgbmUgMCkgb3IgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiR2Vu
ZXJhdGVDb25zdHJ1Y3RvciJ9KSkpOwotICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
JHZhbHVlKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJHZW5lcmF0ZUNvbnN0cnVjdG9yIn0pIHsKLSAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIlxuXG4iKSBpZiAkbnVtQXR0cmlidXRlcyA+IDA7Ci0gICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgICAgIC8vIFRoZSBDb25zdHJ1Y3RvciBBdHRyaWJ1dGVcbiIp
OwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICBDb25zdHJ1Y3RvckF0dHJO
dW0iKTsKLSAgICB9Ci0KLSAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG4gICAgfTtcbiIpIGlm
ICgkaGFzQXR0ckVudW0pOwotCiAgICAgaWYgKCRudW1DdXN0b21BdHRyaWJ1dGVzID4gMCkgewog
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG4gICAgLy8gQ3VzdG9tIGF0dHJpYnV0ZXNc
biIpOwogCkBAIC02NjMsOSArNjM1LDYgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgaWYgKCRu
dW1GdW5jdGlvbnMgPiAwIHx8ICRudW1Db25zdGFudHMgPiAwKSB7CiAgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkV4
ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6UHJvcGVydHlTbG90Jik7XG4i
KTsKICAgICB9Ci0gICAgaWYgKCRudW1Db25zdGFudHMgbmUgMCkgewotICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgIEpTQzo6SlNWYWx1ZSogZ2V0VmFsdWVQcm9wZXJ0eShKU0M6OkV4
ZWNTdGF0ZSosIGludCB0b2tlbikgY29uc3Q7XG4iKTsKLSAgICB9CiAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiAgICAke2NsYXNzTmFtZX1Qcm90b3R5cGUoUGFzc1JlZlB0cjxKU0M6OlN0cnVj
dHVyZUlEPiBzdHJ1Y3R1cmUpIDogSlNDOjpKU09iamVjdChzdHJ1Y3R1cmUpIHsgfVxuIik7CiAK
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAifTtcblxuIik7CkBAIC02NzgsNiArNjQ3LDMxIEBA
IHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICB9CiAgICAgfQogCisgICAgaWYgKCRudW1BdHRy
aWJ1dGVzID4gMCB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJHZW5lcmF0ZUNv
bnN0cnVjdG9yIn0pIHsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwiLy8gQXR0aWJ1dGVz
XG5cbiIpOworICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGRhdGFOb2RlLT5hdHRy
aWJ1dGVzfSkgeworICAgICAgICAgICAgbXkgJGdldHRlciA9ICJqcyIgLiAkaW50ZXJmYWNlTmFt
ZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFt
ZSkgLiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+IC9Db25zdHJ1Y3RvciQvID8gIkNv
bnN0cnVjdG9yIiA6ICIiKTsKKyAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJKU0M6
OkpTVmFsdWUqICR7Z2V0dGVyfShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmll
ciYsIGNvbnN0IEpTQzo6UHJvcGVydHlTbG90Jik7XG4iKTsKKyAgICAgICAgICAgIHVubGVzcyAo
JGF0dHJpYnV0ZS0+dHlwZSA9fiAvcmVhZG9ubHkvKSB7CisgICAgICAgICAgICAgICAgbXkgJHNl
dHRlciA9ICJzZXRKUyIgLiAkaW50ZXJmYWNlTmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2Zp
cnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSkgLiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT50eXBlID1+IC9Db25zdHJ1Y3RvciQvID8gIkNvbnN0cnVjdG9yIiA6ICIiKTsKKyAgICAgICAg
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAidm9pZCAke3NldHRlcn0oSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKik7XG4iKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkdlbmVyYXRlQ29uc3RydWN0b3IifSkgeworICAgICAgICAgICAgbXkgJGdldHRl
ciA9ICJqcyIgLiAkaW50ZXJmYWNlTmFtZSAuICJDb25zdHJ1Y3RvciI7CisgICAgICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiSlNDOjpKU1ZhbHVlKiAke2dldHRlcn0oSlNDOjpFeGVjU3Rh
dGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBjb25zdCBKU0M6OlByb3BlcnR5U2xvdCYpO1xu
Iik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoJG51bUNvbnN0YW50cyA+IDApIHsKKyAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwiLy8gQ29uc3RhbnRzXG5cbiIpOworICAgICAgICBm
b3JlYWNoIG15ICRjb25zdGFudCAoQHskZGF0YU5vZGUtPmNvbnN0YW50c30pIHsKKyAgICAgICAg
ICAgIG15ICRnZXR0ZXIgPSAianMiIC4gJGludGVyZmFjZU5hbWUgLiAkY29kZUdlbmVyYXRvci0+
V0tfdWNmaXJzdCgkY29uc3RhbnQtPm5hbWUpOworICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIkpTQzo6SlNWYWx1ZSogJHtnZXR0ZXJ9KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlND
OjpJZGVudGlmaWVyJiwgY29uc3QgSlNDOjpQcm9wZXJ0eVNsb3QmKTtcbiIpOworICAgICAgICB9
CisgICAgfQorCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIlxufSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZVxuXG4iKTsKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2VuZGlmIC8vICR7Y29uZGl0
aW9uYWxTdHJpbmd9XG5cbiIpIGlmICRjb25kaXRpb25hbDsKICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiI2VuZGlmXG4iKTsKQEAgLTczNiwyMCArNzMwLDE3IEBAIHN1YiBHZW5lcmF0ZUltcGxl
bWVudGF0aW9uCiAgICAgaWYgKCRudW1BdHRyaWJ1dGVzID4gMCkgewogICAgICAgICBteSAkaGFz
aE5hbWUgPSAkY2xhc3NOYW1lIC4gIlRhYmxlIjsKIAotICAgICAgICBteSBAaGFzaEtleXMgPSAo
KTsgICAgICAjIGllLiAnaW5zZXJ0QmVmb3JlJwotICAgICAgICBteSBAaGFzaFZhbHVlcyA9ICgp
OyAgICAjIGllLiAnSlNOb2RlOjpJbnNlcnRCZWZvcmUnCi0gICAgICAgIG15IEBoYXNoU3BlY2lh
bHMgPSAoKTsgICAgIyBpZS4gJ0RvbnREZWxldGV8RnVuY3Rpb24nCi0gICAgICAgIG15IEBoYXNo
UGFyYW1ldGVycyA9ICgpOyAgIyBpZS4gJzInCisgICAgICAgIG15IEBoYXNoS2V5cyA9ICgpOwor
ICAgICAgICBteSBAaGFzaFNwZWNpYWxzID0gKCk7CisgICAgICAgIG15IEBoYXNoVmFsdWUxID0g
KCk7CisgICAgICAgIG15IEBoYXNoVmFsdWUyID0gKCk7CisKKyAgICAgICAgbXkgQGVudHJpZXMg
PSAoKTsKIAogICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGRhdGFOb2RlLT5hdHRy
aWJ1dGVzfSkgewogICAgICAgICAgICAgbXkgJG5hbWUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUt
Pm5hbWU7CiAgICAgICAgICAgICBwdXNoKEBoYXNoS2V5cywgJG5hbWUpOwogCi0gICAgICAgICAg
ICBteSAkdmFsdWUgPSAkY2xhc3NOYW1lIC4gIjo6IiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2Zp
cnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSkKLSAgICAgICAgICAgICAgICAuICgkYXR0
cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8gPyAiQ29uc3RydWN0b3Ii
IDogIiIpCi0gICAgICAgICAgICAgICAgLiAiQXR0ck51bSI7Ci0gICAgICAgICAgICBwdXNoKEBo
YXNoVmFsdWVzLCAkdmFsdWUpOwotCiAgICAgICAgICAgICBteSBAc3BlY2lhbHMgPSAoKTsKICAg
ICAgICAgICAgIHB1c2goQHNwZWNpYWxzLCAiRG9udERlbGV0ZSIpIHVubGVzcyAkYXR0cmlidXRl
LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJEZWxldGFibGUifTsKICAgICAgICAg
ICAgIHB1c2goQHNwZWNpYWxzLCAiRG9udEVudW0iKSBpZiAkYXR0cmlidXRlLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJEb250RW51bSJ9OwpAQCAtNzU3LDIwICs3NDgsMjggQEAg
c3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIG15ICRzcGVjaWFsID0gKEBz
cGVjaWFscyA+IDApID8gam9pbigifCIsIEBzcGVjaWFscykgOiAiMCI7CiAgICAgICAgICAgICBw
dXNoKEBoYXNoU3BlY2lhbHMsICRzcGVjaWFsKTsKIAotICAgICAgICAgICAgbXkgJG51bVBhcmFt
ZXRlcnMgPSAiMCI7Ci0gICAgICAgICAgICBwdXNoKEBoYXNoUGFyYW1ldGVycywgJG51bVBhcmFt
ZXRlcnMpOworICAgICAgICAgICAgbXkgJGdldHRlciA9ICJqcyIgLiAkaW50ZXJmYWNlTmFtZSAu
ICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSkg
LiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+IC9Db25zdHJ1Y3RvciQvID8gIkNvbnN0
cnVjdG9yIiA6ICIiKTsKKyAgICAgICAgICAgIHB1c2goQGhhc2hWYWx1ZTEsICRnZXR0ZXIpOwor
ICAgIAorICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnR5cGUgPX4gL3JlYWRvbmx5Lykgewor
ICAgICAgICAgICAgICAgIHB1c2goQGhhc2hWYWx1ZTIsICIwIik7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIG15ICRzZXR0ZXIgPSAic2V0SlMiIC4gJGludGVyZmFjZU5h
bWUgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5h
bWUpIC4gKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSA9fiAvQ29uc3RydWN0b3IkLyA/ICJD
b25zdHJ1Y3RvciIgOiAiIik7CisgICAgICAgICAgICAgICAgcHVzaChAaGFzaFZhbHVlMiwgJHNl
dHRlcik7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoJGRhdGFOb2Rl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiR2VuZXJhdGVDb25zdHJ1Y3RvciJ9KSB7CiAgICAgICAg
ICAgICBwdXNoKEBoYXNoS2V5cywgImNvbnN0cnVjdG9yIik7Ci0gICAgICAgICAgICBwdXNoKEBo
YXNoVmFsdWVzLCAkY2xhc3NOYW1lIC4gIjo6Q29uc3RydWN0b3JBdHRyTnVtIik7Ci0gICAgICAg
ICAgICBwdXNoKEBoYXNoU3BlY2lhbHMsICJEb250RW51bSIpOwotICAgICAgICAgICAgcHVzaChA
aGFzaFBhcmFtZXRlcnMsICIwIik7CisgICAgICAgICAgICBteSAkZ2V0dGVyID0gImpzIiAuICRp
bnRlcmZhY2VOYW1lIC4gIkNvbnN0cnVjdG9yIjsKKyAgICAgICAgICAgIHB1c2goQGhhc2hWYWx1
ZTEsICRnZXR0ZXIpOworICAgICAgICAgICAgcHVzaChAaGFzaFZhbHVlMiwgIjAiKTsKKyAgICAg
ICAgICAgIHB1c2goQGhhc2hTcGVjaWFscywgIkRvbnRFbnVtfFJlYWRPbmx5Iik7ICMgRklYTUU6
IFNldHRpbmcgdGhlIGNvbnN0cnVjdG9yIHNob3VsZCBiZSBwb3NzaWJsZS4KICAgICAgICAgfQog
CiAgICAgICAgICRvYmplY3QtPkdlbmVyYXRlSGFzaFRhYmxlKCRoYXNoTmFtZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXEBoYXNoS2V5cywgXEBoYXNoVmFsdWVzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcQGhhc2hTcGVjaWFscywgXEBoYXNoUGFy
YW1ldGVycyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxAaGFzaEtleXMs
IFxAaGFzaFNwZWNpYWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcQGhh
c2hWYWx1ZTEsIFxAaGFzaFZhbHVlMik7CiAgICAgfQogCiAgICAgbXkgJG51bUNvbnN0YW50cyA9
IEB7JGRhdGFOb2RlLT5jb25zdGFudHN9OwpAQCAtNzgxLDI3ICs3ODAsMjIgQEAgc3ViIEdlbmVy
YXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgJGhhc2hOYW1lID0gJGNsYXNzTmFtZSAuICJDb25z
dHJ1Y3RvclRhYmxlIjsKIAogICAgICAgICBAaGFzaEtleXMgPSAoKTsKLSAgICAgICAgQGhhc2hW
YWx1ZXMgPSAoKTsKKyAgICAgICAgQGhhc2hWYWx1ZTEgPSAoKTsKKyAgICAgICAgQGhhc2hWYWx1
ZTIgPSAoKTsKICAgICAgICAgQGhhc2hTcGVjaWFscyA9ICgpOwotICAgICAgICBAaGFzaFBhcmFt
ZXRlcnMgPSAoKTsKIAorICAgICAgICAjIEZJWE1FOiB3ZSBzaG91bGQgbm90IG5lZWQgYSBmdW5j
dGlvbiBmb3IgZXZlcnkgY29uc3RhbnQuCiAgICAgICAgIGZvcmVhY2ggbXkgJGNvbnN0YW50IChA
eyRkYXRhTm9kZS0+Y29uc3RhbnRzfSkgewotICAgICAgICAgICAgbXkgJG5hbWUgPSAkY29uc3Rh
bnQtPm5hbWU7Ci0gICAgICAgICAgICBwdXNoKEBoYXNoS2V5cywgJG5hbWUpOwotCi0gICAgICAg
ICAgICBteSAkdmFsdWUgPSAkY29uc3RhbnQtPnZhbHVlOwotICAgICAgICAgICAgcHVzaChAaGFz
aFZhbHVlcywgJHZhbHVlKTsKLQotICAgICAgICAgICAgbXkgJHNwZWNpYWwgPSAiRG9udERlbGV0
ZXxSZWFkT25seSI7Ci0gICAgICAgICAgICBwdXNoKEBoYXNoU3BlY2lhbHMsICRzcGVjaWFsKTsK
LQotICAgICAgICAgICAgbXkgJG51bVBhcmFtZXRlcnMgPSAwOwotICAgICAgICAgICAgcHVzaChA
aGFzaFBhcmFtZXRlcnMsICRudW1QYXJhbWV0ZXJzKTsKKyAgICAgICAgICAgIHB1c2goQGhhc2hL
ZXlzLCAkY29uc3RhbnQtPm5hbWUpOworICAgICAgICAgICAgbXkgJGdldHRlciA9ICJqcyIgLiAk
aW50ZXJmYWNlTmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRjb25zdGFudC0+bmFt
ZSk7CisgICAgICAgICAgICBwdXNoKEBoYXNoVmFsdWUxLCAkZ2V0dGVyKTsKKyAgICAgICAgICAg
IHB1c2goQGhhc2hWYWx1ZTIsICIwIik7CisgICAgICAgICAgICBwdXNoKEBoYXNoU3BlY2lhbHMs
ICJEb250RGVsZXRlfFJlYWRPbmx5Iik7CiAgICAgICAgIH0KIAogICAgICAgICAkb2JqZWN0LT5H
ZW5lcmF0ZUhhc2hUYWJsZSgkaGFzaE5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFxAaGFzaEtleXMsIFxAaGFzaFZhbHVlcywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXEBoYXNoU3BlY2lhbHMsIFxAaGFzaFBhcmFtZXRlcnMpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcQGhhc2hLZXlzLCBcQGhhc2hTcGVjaWFscywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXEBoYXNoVmFsdWUxLCBcQGhhc2hWYWx1
ZTIpOwogCiAgICAgICAgIG15ICRwcm90b0NsYXNzTmFtZTsKICAgICAgICAgJHByb3RvQ2xhc3NO
YW1lID0gIiR7Y2xhc3NOYW1lfVByb3RvdHlwZSI7CkBAIC04MTMsMjIgKzgwNywxNyBAQCBzdWIg
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICRoYXNoTmFtZSA9ICRjbGFzc05hbWUgLiAiUHJv
dG90eXBlVGFibGUiOwogCiAgICAgQGhhc2hLZXlzID0gKCk7Ci0gICAgQGhhc2hWYWx1ZXMgPSAo
KTsKKyAgICBAaGFzaFZhbHVlMSA9ICgpOworICAgIEBoYXNoVmFsdWUyID0gKCk7CiAgICAgQGhh
c2hTcGVjaWFscyA9ICgpOwotICAgIEBoYXNoUGFyYW1ldGVycyA9ICgpOwogCisgICAgIyBGSVhN
RTogd2Ugc2hvdWxkIG5vdCBuZWVkIGEgZnVuY3Rpb24gZm9yIGV2ZXJ5IGNvbnN0YW50LgogICAg
IGZvcmVhY2ggbXkgJGNvbnN0YW50IChAeyRkYXRhTm9kZS0+Y29uc3RhbnRzfSkgewotICAgICAg
ICBteSAkbmFtZSA9ICRjb25zdGFudC0+bmFtZTsKLSAgICAgICAgcHVzaChAaGFzaEtleXMsICRu
YW1lKTsKLQotICAgICAgICBteSAkdmFsdWUgPSAkY29uc3RhbnQtPnZhbHVlOwotICAgICAgICBw
dXNoKEBoYXNoVmFsdWVzLCAkdmFsdWUpOwotCi0gICAgICAgIG15ICRzcGVjaWFsID0gIkRvbnRE
ZWxldGV8UmVhZE9ubHkiOwotICAgICAgICBwdXNoKEBoYXNoU3BlY2lhbHMsICRzcGVjaWFsKTsK
LQotICAgICAgICBteSAkbnVtUGFyYW1ldGVycyA9IDA7Ci0gICAgICAgIHB1c2goQGhhc2hQYXJh
bWV0ZXJzLCAkbnVtUGFyYW1ldGVycyk7CisgICAgICAgIHB1c2goQGhhc2hLZXlzLCAkY29uc3Rh
bnQtPm5hbWUpOworICAgICAgICBteSAkZ2V0dGVyID0gImpzIiAuICRpbnRlcmZhY2VOYW1lIC4g
JGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGNvbnN0YW50LT5uYW1lKTsKKyAgICAgICAgcHVz
aChAaGFzaFZhbHVlMSwgJGdldHRlcik7CisgICAgICAgIHB1c2goQGhhc2hWYWx1ZTIsICIwIik7
CisgICAgICAgIHB1c2goQGhhc2hTcGVjaWFscywgIkRvbnREZWxldGV8UmVhZE9ubHkiKTsKICAg
ICB9CiAKICAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHskZGF0YU5vZGUtPmZ1bmN0aW9uc30p
IHsKQEAgLTgzNiw3ICs4MjUsMTAgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAg
ICAgcHVzaChAaGFzaEtleXMsICRuYW1lKTsKIAogICAgICAgICBteSAkdmFsdWUgPSAkY29kZUdl
bmVyYXRvci0+V0tfbGNmaXJzdCgkY2xhc3NOYW1lKSAuICJQcm90b3R5cGVGdW5jdGlvbiIgLiAk
Y29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkbmFtZSk7Ci0gICAgICAgIHB1c2goQGhhc2hWYWx1
ZXMsICR2YWx1ZSk7CisgICAgICAgIHB1c2goQGhhc2hWYWx1ZTEsICR2YWx1ZSk7CisKKyAgICAg
ICAgbXkgJG51bVBhcmFtZXRlcnMgPSBAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc307CisgICAgICAg
IHB1c2goQGhhc2hWYWx1ZTIsICRudW1QYXJhbWV0ZXJzKTsKIAogICAgICAgICBteSBAc3BlY2lh
bHMgPSAoKTsKICAgICAgICAgcHVzaChAc3BlY2lhbHMsICJEb250RGVsZXRlIikgdW5sZXNzICRm
dW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRGVsZXRhYmxlIn07CkBA
IC04NDQsMTQgKzgzNiwxMSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBw
dXNoKEBzcGVjaWFscywgIkZ1bmN0aW9uIik7ICAgICAgICAKICAgICAgICAgbXkgJHNwZWNpYWwg
PSAoQHNwZWNpYWxzID4gMCkgPyBqb2luKCJ8IiwgQHNwZWNpYWxzKSA6ICIwIjsKICAgICAgICAg
cHVzaChAaGFzaFNwZWNpYWxzLCAkc3BlY2lhbCk7Ci0KLSAgICAgICAgbXkgJG51bVBhcmFtZXRl
cnMgPSBAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc307Ci0gICAgICAgIHB1c2goQGhhc2hQYXJhbWV0
ZXJzLCAkbnVtUGFyYW1ldGVycyk7CiAgICAgfQogCiAgICAgJG9iamVjdC0+R2VuZXJhdGVIYXNo
VGFibGUoJGhhc2hOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxAaGFzaEtl
eXMsIFxAaGFzaFZhbHVlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcQGhhc2hT
cGVjaWFscywgXEBoYXNoUGFyYW1ldGVycyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXEBoYXNoS2V5cywgXEBoYXNoU3BlY2lhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXEBoYXNoVmFsdWUxLCBcQGhhc2hWYWx1ZTIpOwogCiAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJjb25zdCBDbGFzc0luZm8gJHtjbGFzc05hbWV9UHJvdG90eXBlOjpzX2luZm8gPSB7IFwi
JHt2aXNpYmxlQ2xhc3NOYW1lfVByb3RvdHlwZVwiLCAwLCAmJHtjbGFzc05hbWV9UHJvdG90eXBl
VGFibGUsIDAgfTtcblxuIik7CiAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIG5lICJET01XaW5kb3ci
KSB7CkBAIC04NzgsMTIgKzg2Nyw2IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAg
ICAgIH0KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgIH0KLSAgICBp
ZiAoJG51bUNvbnN0YW50cyBuZSAwKSB7Ci0gICAgICAgICRpbXBsS0pTSW5jbHVkZXsiSlNOdW1i
ZXJDZWxsLmgifSA9IDE7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNWYWx1ZSogJHtj
bGFzc05hbWV9UHJvdG90eXBlOjpnZXRWYWx1ZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgaW50
IHRva2VuKSBjb25zdFxue1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIC8v
IFRoZSB0b2tlbiBpcyB0aGUgbnVtZXJpYyB2YWx1ZSBvZiBpdHMgYXNzb2NpYXRlZCBjb25zdGFu
dFxuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBqc051bWJlcihl
eGVjLCB0b2tlbik7XG59XG5cbiIpOwotICAgIH0KIAogICAgICMgLSBJbml0aWFsaXplIHN0YXRp
YyBDbGFzc0luZm8gb2JqZWN0CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICJjb25zdCBDbGFzc0lu
Zm8gJGNsYXNzTmFtZSIgLiAiOjpzX2luZm8gPSB7IFwiJHt2aXNpYmxlQ2xhc3NOYW1lfVwiLCAi
KTsKQEAgLTEwMDEsODkgKzk4NCw4NSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAg
ICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAoJG51bUF0dHJpYnV0ZXMgPiAwKSB7Ci0gICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTVmFsdWUqICR7Y2xhc3NOYW1lfTo6Z2V0VmFs
dWVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGludCB0b2tlbikgY29uc3RcbiIpOwotICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKLQotICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgc3dpdGNoICh0b2tlbikge1xuIik7Ci0KICAgICAgICAgICAgIGZvcmVh
Y2ggbXkgJGF0dHJpYnV0ZSAoQHskZGF0YU5vZGUtPmF0dHJpYnV0ZXN9KSB7Ci0gICAgICAgICAg
ICAgICAgbXkgJGdldHRlckZ1bmN0aW9uTmFtZSA9ICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0
KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSk7CisgICAgICAgICAgICAgICAgbXkgJGdldEZ1
bmN0aW9uTmFtZSA9ICJqcyIgLiAkaW50ZXJmYWNlTmFtZSAuICAkY29kZUdlbmVyYXRvci0+V0tf
dWNmaXJzdCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUpIC4gKCRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+dHlwZSA9fiAvQ29uc3RydWN0b3IkLyA/ICJDb25zdHJ1Y3RvciIgOiAiIik7CisgICAg
ICAgICAgICAgICAgbXkgJGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUgPSAkY29kZUdlbmVyYXRvci0+
V0tfbGNmaXJzdCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUpOworCisgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJKU1ZhbHVlKiAke2dldEZ1bmN0aW9uTmFtZX0oRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90KVxu
Iik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKIAogICAgICAg
ICAgICAgICAgIG15ICRpbXBsQ2xhc3NOYW1lRm9yVmFsdWVDb252ZXJzaW9uID0gIiI7CiAgICAg
ICAgICAgICAgICAgaWYgKCEkcG9kVHlwZSBhbmQgKCRjb2RlR2VuZXJhdG9yLT5Jc1NWR0FuaW1h
dGVkVHlwZSgkaW1wbENsYXNzTmFtZSkgb3IgJGF0dHJpYnV0ZS0+dHlwZSAhfiAvXnJlYWRvbmx5
LykpIHsKICAgICAgICAgICAgICAgICAgICAgJGltcGxDbGFzc05hbWVGb3JWYWx1ZUNvbnZlcnNp
b24gPSAkaW1wbENsYXNzTmFtZTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBjYXNlICIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNm
aXJzdCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUpCi0gICAgICAgICAgICAgICAgICAgIC4g
KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSA9fiAvQ29uc3RydWN0b3IkLyA/ICJDb25zdHJ1
Y3RvciIgOiAiIikKLSAgICAgICAgICAgICAgICAgICAgLiAiQXR0ck51bToge1xuIik7Ci0KICAg
ICAgICAgICAgICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tE
b21haW5TZWN1cml0eSJ9ICYmIAotICAgICAgICAgICAgICAgICAgICAhJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRG9Ob3RDaGVja0RvbWFpblNlY3VyaXR5In0g
JiYKLSAgICAgICAgICAgICAgICAgICAgISRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkRvTm90Q2hlY2tEb21haW5TZWN1cml0eU9uR2V0In0pIHsKLSAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGlmICghYWxsb3dzQWNjZXNz
RnJvbShleGVjKSlcbiIpOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpO1xuIik7CisgICAgICAgICAgICAgICAg
ICAgICAgICAhJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRG9O
b3RDaGVja0RvbWFpblNlY3VyaXR5In0gJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICEkYXR0
cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJEb05vdENoZWNrRG9tYWlu
U2VjdXJpdHlPbkdldCJ9KSB7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIGlmICghc3RhdGljX2Nhc3Q8JGNsYXNzTmFtZSo+KHNsb3Quc2xvdEJhc2UoKSktPmFs
bG93c0FjY2Vzc0Zyb20oZXhlYykpXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpO1xuIik7CiAgICAgICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbSJ9IHx8ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUdldHRlciJ9KSB7Ci0gICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gJGdldHRlckZ1bmN0aW9uTmFtZShl
eGVjKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8JGNsYXNzTmFtZSo+KHNsb3Quc2xvdEJhc2UoKSktPiRpbXBsR2V0
dGVyRnVuY3Rpb25OYW1lKGV4ZWMpO1xuIik7CiAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tOb2RlU2VjdXJp
dHkifSkgewogICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJKU0RPTUJpbmRpbmcu
aCJ9ID0gMTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAg
ICRpbXBsQ2xhc3NOYW1lKiBpbXAgPSBzdGF0aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+KGltcGwo
KSk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAg
IHJldHVybiBjaGVja05vZGVTZWN1cml0eShleGVjLCBpbXAtPiRnZXR0ZXJGdW5jdGlvbk5hbWUo
KSkgPyAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGltcGxD
bGFzc05hbWUsICRpbXBsQ2xhc3NOYW1lRm9yVmFsdWVDb252ZXJzaW9uLCAiaW1wLT4kZ2V0dGVy
RnVuY3Rpb25OYW1lKCkiKSAuICIgOiBqc1VuZGVmaW5lZCgpO1xuIik7CisgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRpbXBsQ2xhc3NOYW1lKiBpbXAgPSBzdGF0
aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+KHN0YXRpY19jYXN0PCRjbGFzc05hbWUqPihzbG90LnNs
b3RCYXNlKCkpLT5pbXBsKCkpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIHJldHVybiBjaGVja05vZGVTZWN1cml0eShleGVjLCBpbXAtPiRpbXBsR2V0
dGVyRnVuY3Rpb25OYW1lKCkpID8gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWdu
YXR1cmUsIDAsICRpbXBsQ2xhc3NOYW1lLCAkaW1wbENsYXNzTmFtZUZvclZhbHVlQ29udmVyc2lv
biwgImltcC0+JGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoKSIsICJzdGF0aWNfY2FzdDwkY2xhc3NO
YW1lKj4oc2xvdC5zbG90QmFzZSgpKSIpIC4gIiA6IGpzVW5kZWZpbmVkKCk7XG4iKTsKICAgICAg
ICAgICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJDaGVja0ZyYW1lU2VjdXJpdHkifSkgewogICAgICAgICAgICAgICAgICAgICAkaW1w
bEluY2x1ZGVzeyJEb2N1bWVudC5oIn0gPSAxOwogICAgICAgICAgICAgICAgICAgICAkaW1wbElu
Y2x1ZGVzeyJKU0RPTUJpbmRpbmcuaCJ9ID0gMTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgICAgICRpbXBsQ2xhc3NOYW1lKiBpbXAgPSBzdGF0aWNfY2FzdDwk
aW1wbENsYXNzTmFtZSo+KGltcGwoKSk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBjaGVja05vZGVTZWN1cml0eShleGVjLCBpbXAt
PmNvbnRlbnREb2N1bWVudCgpKSA/ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLCAgMCwgJGltcGxDbGFzc05hbWUsICRpbXBsQ2xhc3NOYW1lRm9yVmFsdWVDb252ZXJz
aW9uLCAiaW1wLT4kZ2V0dGVyRnVuY3Rpb25OYW1lKCkiKSAuICIgOiBqc1VuZGVmaW5lZCgpO1xu
Iik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRpbXBsQ2xh
c3NOYW1lKiBpbXAgPSBzdGF0aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+KHN0YXRpY19jYXN0PCRj
bGFzc05hbWUqPihzbG90LnNsb3RCYXNlKCkpLT5pbXBsKCkpO1xuIik7CisgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBjaGVja05vZGVTZWN1cml0eShl
eGVjLCBpbXAtPmNvbnRlbnREb2N1bWVudCgpKSA/ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLCAgMCwgJGltcGxDbGFzc05hbWUsICRpbXBsQ2xhc3NOYW1lRm9yVmFs
dWVDb252ZXJzaW9uLCAiaW1wLT4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZSgpIiwgInN0YXRpY19j
YXN0PCRjbGFzc05hbWUqPihzbG90LnNsb3RCYXNlKCkpIikgLiAiIDoganNVbmRlZmluZWQoKTtc
biIpOwogICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlw
ZSA9fiAvQ29uc3RydWN0b3IkLykgewogICAgICAgICAgICAgICAgICAgICBteSAkY29uc3RydWN0
b3JUeXBlID0gJGNvZGVHZW5lcmF0b3ItPlN0cmlwTW9kdWxlKCRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+dHlwZSk7CiAgICAgICAgICAgICAgICAgICAgICRjb25zdHJ1Y3RvclR5cGUgPX4gcy9Db25z
dHJ1Y3RvciQvLzsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIHJldHVybiBKUyIgLiAkY29uc3RydWN0b3JUeXBlIC4gIjo6Z2V0Q29uc3RydWN0b3IoZXhl
Yyk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0
dXJuIEpTIiAuICRjb25zdHJ1Y3RvclR5cGUgLiAiOjpnZXRDb25zdHJ1Y3RvcihleGVjKTtcbiIp
OwogICAgICAgICAgICAgICAgIH0gZWxzaWYgKCFAeyRhdHRyaWJ1dGUtPmdldHRlckV4Y2VwdGlv
bnN9KSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICgkcG9kVHlwZSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICRwb2RUeXBlIGltcCgqaW1w
bCgpKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgJHBvZFR5cGUgaW1wKCpzdGF0aWNfY2FzdDwkY2xhc3NOYW1lKj4oc2xvdC5zbG90QmFzZSgp
KS0+aW1wbCgpKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRwb2RUeXBlIGVx
ICJmbG9hdCIpIHsgIyBTcGVjaWFsIGNhc2UgZm9yIEpTU1ZHTnVtYmVyCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiAiIC4gTmF0
aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGltcGxDbGFzc05hbWUsICIi
LCAiaW1wIikgLiAiO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgcmV0dXJuICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLCAwLCAkaW1wbENsYXNzTmFtZSwgIiIsICJpbXAiLCAic3RhdGljX2Nhc3Q8JGNsYXNz
TmFtZSo+KHNsb3Quc2xvdEJhc2UoKSkiKSAuICI7XG4iKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHJldHVybiAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25h
dHVyZSwgMCwgJGltcGxDbGFzc05hbWUsICIiLCAiaW1wLiRnZXR0ZXJGdW5jdGlvbk5hbWUoKSIp
IC4gIjtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIHJldHVybiAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwg
MCwgJGltcGxDbGFzc05hbWUsICIiLCAiaW1wLiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKCkiLCAi
c3RhdGljX2Nhc3Q8JGNsYXNzTmFtZSo+KHNsb3Quc2xvdEJhc2UoKSkiKSAuICI7XG4iKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAkaW1wbENs
YXNzTmFtZSogaW1wID0gc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWUqPihpbXBsKCkpO1xuIik7
CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkaW1wbENs
YXNzTmFtZSogaW1wID0gc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWUqPihzdGF0aWNfY2FzdDwk
Y2xhc3NOYW1lKj4oc2xvdC5zbG90QmFzZSgpKS0+aW1wbCgpKTtcbiIpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgbXkgJHR5cGUgPSAkY29kZUdlbmVyYXRvci0+U3RyaXBNb2R1bGUoJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLT50eXBlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG15ICRqc1R5
cGUgPSBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW1wbENsYXNz
TmFtZSwgJGltcGxDbGFzc05hbWVGb3JWYWx1ZUNvbnZlcnNpb24sICJpbXAtPiRnZXR0ZXJGdW5j
dGlvbk5hbWUoKSIpOworICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGpzVHlwZSA9IE5hdGl2
ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbXBsQ2xhc3NOYW1lLCAkaW1w
bENsYXNzTmFtZUZvclZhbHVlQ29udmVyc2lvbiwgImltcC0+JGltcGxHZXR0ZXJGdW5jdGlvbk5h
bWUoKSIsICJzdGF0aWNfY2FzdDwkY2xhc3NOYW1lKj4oc2xvdC5zbG90QmFzZSgpKSIpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1NWR0FuaW1hdGVkVHlw
ZSgkdHlwZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAgICAgUmVmUHRyPCR0eXBlPiBvYmogPSAkanNUeXBlO1xuIik7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0b0pT
KGV4ZWMsIG9iai5nZXQoKSwgaW1wKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIFJlZlB0cjwkdHlwZT4gb2JqID0gJGpzVHlwZTtcbiIp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJl
dHVybiB0b0pTKGV4ZWMsIG9iai5nZXQoKSwgaW1wKTtcbiIpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAgICAgcmV0dXJuICRqc1R5cGU7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gJGpzVHlwZTtcbiIpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwO1xuIik7CiAKICAgICAg
ICAgICAgICAgICAgICAgaWYgKCRwb2RUeXBlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgJHBvZFR5cGUgaW1wKCppbXBsKCkpO1xuIik7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgSlNDOjpK
U1ZhbHVlKiByZXN1bHQgPSAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZSwgMCwgJGltcGxDbGFzc05hbWUsICIiLCAiaW1wLiRnZXR0ZXJGdW5jdGlvbk5hbWUoZWMpIikg
LiAiO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAkcG9kVHlwZSBpbXAoKnN0YXRpY19jYXN0PCRjbGFzc05hbWUqPihzbG90LnNsb3RCYXNlKCkp
LT5pbXBsKCkpO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBKU0M6OkpTVmFsdWUqIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW1wbENsYXNzTmFtZSwgIiIsICJpbXAuJGltcGxHZXR0ZXJG
dW5jdGlvbk5hbWUoZWMpIiwgInN0YXRpY19jYXN0PCRjbGFzc05hbWUqPihzbG90LnNsb3RCYXNl
KCkpIikgLiAiO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgJGltcGxDbGFzc05hbWUq
IGltcCA9IHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1lKj4oaW1wbCgpKTtcbiIpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIEpTQzo6SlNWYWx1
ZSogcmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAs
ICRpbXBsQ2xhc3NOYW1lLCAkaW1wbENsYXNzTmFtZUZvclZhbHVlQ29udmVyc2lvbiwgImltcC0+
JGdldHRlckZ1bmN0aW9uTmFtZShlYykiKSAuICI7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRpbXBsQ2xhc3NOYW1lKiBpbXAgPSBzdGF0aWNf
Y2FzdDwkaW1wbENsYXNzTmFtZSo+KHN0YXRpY19jYXN0PCRjbGFzc05hbWUqPihzbG90LnNsb3RC
YXNlKCkpLT5pbXBsKCkpO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBKU0M6OkpTVmFsdWUqIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWUo
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW1wbENsYXNzTmFtZSwgJGltcGxDbGFzc05hbWVG
b3JWYWx1ZUNvbnZlcnNpb24sICJpbXAtPiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKGVjKSIsICJz
dGF0aWNfY2FzdDwkY2xhc3NOYW1lKj4oc2xvdC5zbG90QmFzZSgpKSIpIC4gIjtcbiIpOwogICAg
ICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7XG4iKTsKLSAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiByZXN1bHQ7XG4iKTsK
KyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgc2V0RE9NRXhjZXB0
aW9uKGV4ZWMsIGVjKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICByZXR1cm4gcmVzdWx0O1xuIik7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOworCisgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiR2VuZXJhdGVDb25zdHJ1Y3Rv
ciJ9KSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgY2FzZSBDb25z
dHJ1Y3RvckF0dHJOdW06XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAgICAgcmV0dXJuIGdldENvbnN0cnVjdG9yKGV4ZWMpO1xuIik7Ci0gICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgbXkgJGNvbnN0cnVjdG9yRnVuY3Rpb25OYW1lID0gImpzIiAuICRp
bnRlcmZhY2VOYW1lIC4gIkNvbnN0cnVjdG9yIjsKIAotICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgfVxuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBy
ZXR1cm4gMDtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwor
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNWYWx1ZSogJHtjb25zdHJ1Y3Rv
ckZ1bmN0aW9uTmFtZX0oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3Qg
UHJvcGVydHlTbG90JiBzbG90KVxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJ7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8JGNsYXNzTmFtZSo+KHNsb3Quc2xvdEJhc2UoKSktPmdldENvbnN0cnVj
dG9yKGV4ZWMpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG4i
KTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgICMgQ2hlY2sgaWYgd2UgaGF2
ZSBhbnkgd3JpdGFibGUgYXR0cmlidXRlcwpAQCAtMTEyOCw2OCArMTEwNyw2MiBAQCBzdWIgR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoJGhh
c1JlYWRXcml0ZVByb3BlcnRpZXMpIHsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgInZvaWQgJHtjbGFzc05hbWV9OjpwdXRWYWx1ZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywg
aW50IHRva2VuLCBKU1ZhbHVlKiB2YWx1ZSlcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAie1xuIik7Ci0KLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBzd2l0Y2ggKHRva2VuKSB7XG4iKTsKLQogICAgICAgICAgICAgICAgIGZvcmVhY2ggbXkg
JGF0dHJpYnV0ZSAoQHskZGF0YU5vZGUtPmF0dHJpYnV0ZXN9KSB7CiAgICAgICAgICAgICAgICAg
ICAgIGlmICgkYXR0cmlidXRlLT50eXBlICF+IC9ecmVhZG9ubHkvKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBteSAkbmFtZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG15ICRzZXR0ZXJGdW5jdGlvbk5hbWUgPSAkY29kZUdlbmVyYXRv
ci0+V0tfdWNmaXJzdCgkbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBteSAkcHV0RnVu
Y3Rpb25OYW1lID0gInNldEpTIiAuICRpbnRlcmZhY2VOYW1lIC4gICRjb2RlR2VuZXJhdG9yLT5X
S191Y2ZpcnN0KCRuYW1lKSAuICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgPX4gL0NvbnN0
cnVjdG9yJC8gPyAiQ29uc3RydWN0b3IiIDogIiIpOworICAgICAgICAgICAgICAgICAgICAgICAg
bXkgJGltcGxTZXR0ZXJGdW5jdGlvbk5hbWUgPSAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgk
bmFtZSk7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGNhc2UgIiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+bmFtZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICgkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8gPyAiQ29uc3RydWN0b3IiIDogIiIpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLiAiQXR0ck51bToge1xuIik7CisgICAgICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtwdXRGdW5jdGlvbk5hbWV9KEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUqIHZhbHVlKVxuIik7
CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogCiAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ2hlY2tEb21haW5TZWN1cml0eSJ9ICYmICEkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJEb05vdENoZWNrRG9tYWluU2VjdXJpdHkifSkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93Iikgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgaWYgKCFhbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKVxuIik7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghc3RhdGljX2Nhc3Q8JGNs
YXNzTmFtZSo+KHRoaXNPYmplY3QpLT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKVxuIik7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGlmICghYWxsb3dzQWNjZXNzRnJv
bUZyYW1lKGV4ZWMsIGltcGwoKS0+ZnJhbWUoKSkpXG4iKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFhbGxvd3NBY2Nlc3NGcm9t
RnJhbWUoZXhlYywgc3RhdGljX2Nhc3Q8JGNsYXNzTmFtZSo+KHRoaXNPYmplY3QpLT5pbXBsKCkt
PmZyYW1lKCkpKVxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAgICAgcmV0dXJu
O1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgICAgIHJldHVybjtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiQ3VzdG9tIn0gfHwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiQ3VzdG9tU2V0dGVyIn0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgc2V0JHNldHRlckZ1bmN0aW9uTmFtZShleGVjLCB2
YWx1ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEZJWE1FOiBDdXN0b20g
ZnVuY3Rpb24gY2FuIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIHN0YXRpY19jYXN0PCRjbGFzc05hbWUqPih0aGlzT2JqZWN0KS0+c2V0JGltcGxT
ZXR0ZXJGdW5jdGlvbk5hbWUoZXhlYywgdmFsdWUpO1xuIik7CiAgICAgICAgICAgICAgICAgICAg
ICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9y
JC8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkY29uc3RydWN0b3JUeXBlID0g
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICRjb25zdHJ1Y3RvclR5cGUgPX4gcy9Db25zdHJ1Y3RvciQvLzsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJKUyIgLiAkY29uc3RydWN0b3JUeXBlIC4gIi5oIn0g
PSAxOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvclxuIik7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHB1dERpcmVjdChJ
ZGVudGlmaWVyKGV4ZWMsIFwiJG5hbWVcIiksIHZhbHVlKTtcbiIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0
LWluIGNvbnN0cnVjdG9yXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBzdGF0aWNfY2FzdDwkY2xhc3NOYW1lKj4odGhpc09iamVjdCktPnB1
dERpcmVjdChJZGVudGlmaWVyKGV4ZWMsIFwiJG5hbWVcIiksIHZhbHVlKTtcbiIpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiUmVwbGFjZWFibGUifSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBwdXREaXJlY3QoSWRlbnRpZmllcihleGVj
LCBcIiRuYW1lXCIpLCB2YWx1ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBzdGF0aWNfY2FzdDwkY2xhc3NOYW1lKj4odGhpc09iamVj
dCktPnB1dERpcmVjdChJZGVudGlmaWVyKGV4ZWMsIFwiJG5hbWVcIiksIHZhbHVlKTtcbiIpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoJHBvZFR5cGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgICRwb2RUeXBlIGltcCgqaW1wbCgpKTtcbiIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkcG9k
VHlwZSBpbXAoKnN0YXRpY19jYXN0PCRjbGFzc05hbWUqPih0aGlzT2JqZWN0KS0+aW1wbCgpKTtc
biIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHBvZFR5cGUgZXEgImZs
b2F0IikgeyAjIFNwZWNpYWwgY2FzZSBmb3IgSlNTVkdOdW1iZXIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBpbXAgPSAiIC4g
SlNWYWx1ZVRvTmF0aXZlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgInZhbHVlIikgLiAiO1xuIik7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBpbXAgPSAiIC4gSlNWYWx1ZVRvTmF0aXZlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgInZh
bHVlIikgLiAiO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAgICAgaW1wLnNldCRzZXR0ZXJGdW5jdGlvbk5hbWUoIiAuIEpTVmFsdWVUb05hdGl2ZSgk
YXR0cmlidXRlLT5zaWduYXR1cmUsICJ2YWx1ZSIpIC4gIik7XG4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGltcC5zZXQkaW1w
bFNldHRlckZ1bmN0aW9uTmFtZSgiIC4gSlNWYWx1ZVRvTmF0aXZlKCRhdHRyaWJ1dGUtPnNpZ25h
dHVyZSwgInZhbHVlIikgLiAiKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICBtX2ltcGwtPmNvbW1pdENoYW5nZShpbXAsIGNvbnRleHQoKSk7XG4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHN0
YXRpY19jYXN0PCRjbGFzc05hbWUqPih0aGlzT2JqZWN0KS0+aW1wbCgpLT5jb21taXRDaGFuZ2Uo
aW1wLCBzdGF0aWNfY2FzdDwkY2xhc3NOYW1lKj4odGhpc09iamVjdCktPmNvbnRleHQoKSk7XG4i
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgJGltcGxDbGFzc05h
bWUqIGltcCA9IHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1lKj4oaW1wbCgpKTtcbiIpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7XG4iKSBpZiBAeyRhdHRyaWJ1dGUtPnNldHRlckV4Y2VwdGlv
bnN9OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAgICAgaW1wLT5zZXQkc2V0dGVyRnVuY3Rpb25OYW1lKCIgLiBKU1ZhbHVlVG9OYXRpdmUo
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAidmFsdWUiKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRpbXBsQ2xhc3NOYW1lKiBpbXAgPSBz
dGF0aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+KHN0YXRpY19jYXN0PCRjbGFzc05hbWUqPih0aGlz
T2JqZWN0KS0+aW1wbCgpKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBFeGNlcHRpb25Db2RlIGVjID0gMDtcbiIpIGlmIEB7JGF0
dHJpYnV0ZS0+c2V0dGVyRXhjZXB0aW9uc307CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGltcC0+c2V0JGltcGxTZXR0ZXJGdW5jdGlvbk5h
bWUoIiAuIEpTVmFsdWVUb05hdGl2ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsICJ2YWx1ZSIpKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIsIGVj
IikgaWYgQHskYXR0cmlidXRlLT5zZXR0ZXJFeGNlcHRpb25zfTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIpO1xuIik7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBzZXRET01FeGNl
cHRpb24oZXhlYywgZWMpO1xuIikgaWYgQHskYXR0cmlidXRlLT5zZXR0ZXJFeGNlcHRpb25zfTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
c2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTtcbiIpIGlmIEB7JGF0dHJpYnV0ZS0+c2V0dGVyRXhj
ZXB0aW9uc307CiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKElzU1ZHVHlw
ZU5lZWRpbmdDb250ZXh0UGFyYW1ldGVyKCRpbXBsQ2xhc3NOYW1lKSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGlmIChj
b250ZXh0KCkpXG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICAgICAgICAgY29udGV4dCgpLT5zdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGltcGwoKS0+YXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUoKSk7XG4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChzdGF0aWNf
Y2FzdDwkY2xhc3NOYW1lKj4odGhpc09iamVjdCktPmNvbnRleHQoKSlcbiIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHN0
YXRpY19jYXN0PCRjbGFzc05hbWUqPih0aGlzT2JqZWN0KS0+Y29udGV4dCgpLT5zdmdBdHRyaWJ1
dGVDaGFuZ2VkKHN0YXRpY19jYXN0PCRjbGFzc05hbWUqPih0aGlzT2JqZWN0KS0+aW1wbCgpLT5h
c3NvY2lhdGVkQXR0cmlidXRlTmFtZSgpKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgICAgIGJyZWFrO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICB9XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIH1cbiIpOyAjIGVuZCBzd2l0Y2gKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIn1cblxuIik7ICMgZW5kIGZ1bmN0aW9uCiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9CkBAIC0xMzMyLDYgKzEzMDUsMjAgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b24KICAgICAgICAgfQogICAgIH0KIAorICAgIGlmICgkbnVtQ29uc3RhbnRzID4gMCkgeworICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIi8vIENvbnN0YW50IGdldHRlcnNcblxuIik7CisKKyAg
ICAgICAgZm9yZWFjaCBteSAkY29uc3RhbnQgKEB7JGRhdGFOb2RlLT5jb25zdGFudHN9KSB7Cisg
ICAgICAgICAgICBteSAkZ2V0dGVyID0gImpzIiAuICRpbnRlcmZhY2VOYW1lIC4gJGNvZGVHZW5l
cmF0b3ItPldLX3VjZmlyc3QoJGNvbnN0YW50LT5uYW1lKTsKKworICAgICAgICAgICAgIyBGSVhN
RTogdGhpcyBjYXN0cyB0byBpbnQgdG8gbWF0Y2ggb3VyIHByZXZpb3VzIGJlaGF2aW9yIHdoaWNo
IHR1cm5lZCAweEZGRkZGRkZGIGluIC0xIGZvciBOb2RlRmlsdGVyLlNIT1dfQUxMCisgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTVmFsdWUqICR7Z2V0dGVyfShFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKVxuIik7CisgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMsIHN0YXRpY19jYXN0PGludD4oIiAuICRj
b25zdGFudC0+dmFsdWUgLiAiKSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAifVxuXG4iKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIGlmICgkZGF0YU5vZGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJIYXNJbmRleEdldHRlciJ9KSB7CiAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiXG5KU1ZhbHVlKiAke2NsYXNzTmFtZX06OmluZGV4R2V0dGVyKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eVNsb3Qm
IHNsb3QpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKQEAgLTE0MTYs
NyArMTQwMyw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25DYWxsKCkKIAog
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICJyZXR1cm4ganNVbmRlZmluZWQo
KTtcbiIpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4iIC4g
JGluZGVudCAuICJKU0M6OkpTVmFsdWUqIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGZ1
bmN0aW9uLT5zaWduYXR1cmUsIDEsICRpbXBsQ2xhc3NOYW1lLCAiIiwgJGZ1bmN0aW9uU3RyaW5n
KSAuICI7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiIgLiAkaW5kZW50IC4g
IkpTQzo6SlNWYWx1ZSogcmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkZnVuY3Rpb24tPnNp
Z25hdHVyZSwgMSwgJGltcGxDbGFzc05hbWUsICIiLCAkZnVuY3Rpb25TdHJpbmcsICJjYXN0ZWRU
aGlzT2JqIikgLiAiO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4g
InNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7XG4iKSBpZiBAeyRmdW5jdGlvbi0+cmFpc2VzRXhj
ZXB0aW9uc307CiAKICAgICAgICAgaWYgKCRwb2RUeXBlKSB7CkBAIC0xNTEzLDYgKzE1MDAsNyBA
QCBzdWIgTmF0aXZlVG9KU1ZhbHVlCiAgICAgbXkgJGltcGxDbGFzc05hbWUgPSBzaGlmdDsKICAg
ICBteSAkaW1wbENsYXNzTmFtZUZvclZhbHVlQ29udmVyc2lvbiA9IHNoaWZ0OwogICAgIG15ICR2
YWx1ZSA9IHNoaWZ0OworICAgIG15ICR0aGlzVmFsdWUgPSBzaGlmdDsKIAogICAgIG15ICR0eXBl
ID0gJGNvZGVHZW5lcmF0b3ItPlN0cmlwTW9kdWxlKCRzaWduYXR1cmUtPnR5cGUpOwogCkBAIC0x
NTU5LDcgKzE1NDcsNyBAQCBzdWIgTmF0aXZlVG9KU1ZhbHVlCiAgICAgICAgICAgICBhbmQgJGNv
ZGVHZW5lcmF0b3ItPklzUG9kVHlwZVdpdGhXcml0ZWFibGVQcm9wZXJ0aWVzKCR0eXBlKQogICAg
ICAgICAgICAgYW5kIG5vdCBkZWZpbmVkICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJJbW11dGFibGUifSkgewogICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1BvZFR5
cGUoJGltcGxDbGFzc05hbWUpKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICJ0b0pTKGV4ZWMs
IEpTU1ZHU3RhdGljUE9EVHlwZVdyYXBwZXJXaXRoUE9EVHlwZVBhcmVudDwkbmF0aXZlVHlwZSwg
JGltcGxDbGFzc05hbWU+OjpjcmVhdGUoJHZhbHVlLCBpbXBsKCkpLmdldCgpLCBjb250ZXh0KCkp
IjsKKyAgICAgICAgICAgICAgICByZXR1cm4gInRvSlMoZXhlYywgSlNTVkdTdGF0aWNQT0RUeXBl
V3JhcHBlcldpdGhQT0RUeXBlUGFyZW50PCRuYXRpdmVUeXBlLCAkaW1wbENsYXNzTmFtZT46OmNy
ZWF0ZSgkdmFsdWUsICR0aGlzVmFsdWUtPmltcGwoKSkuZ2V0KCksICR0aGlzVmFsdWUtPmNvbnRl
eHQoKSkiOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICByZXR1cm4gInRv
SlMoZXhlYywgSlNTVkdTdGF0aWNQT0RUeXBlV3JhcHBlcldpdGhQYXJlbnQ8JG5hdGl2ZVR5cGUs
ICRpbXBsQ2xhc3NOYW1lPjo6Y3JlYXRlKGltcCwgJiR7aW1wbENsYXNzTmFtZX06OiRnZXR0ZXIs
ICYke2ltcGxDbGFzc05hbWV9Ojokc2V0dGVyKS5nZXQoKSwgaW1wKSI7CiAgICAgICAgICAgICB9
CkBAIC0xNTcxLDEyICsxNTU5LDEyIEBAIHN1YiBOYXRpdmVUb0pTVmFsdWUKIAogICAgICAgICAg
ICAgICAgICMgU3BlY2lhbCBjYXNlOiBTVkdab29tRXZlbnQgLSBpdCBkb2Vzbid0IGhhdmUgYSBj
b250ZXh0LCBidXQgaXQncyBubyBwcm9ibGVtLCBhcyB0aGVyZSBhcmUgbm8gcmVhZHdyaXRlIHBy
b3BzCiAgICAgICAgICAgICAgICAgcmV0dXJuICJ0b0pTKGV4ZWMsIEpTU1ZHU3RhdGljUE9EVHlw
ZVdyYXBwZXI8JG5hdGl2ZVR5cGU+OjpjcmVhdGUoJHZhbHVlKS5nZXQoKSwgMCkiIGlmICRpbXBs
Q2xhc3NOYW1lIGVxICJTVkdab29tRXZlbnQiOwotICAgICAgICAgICAgICAgIHJldHVybiAidG9K
UyhleGVjLCBKU1NWR1N0YXRpY1BPRFR5cGVXcmFwcGVyPCRuYXRpdmVUeXBlPjo6Y3JlYXRlKCR2
YWx1ZSkuZ2V0KCksIGNvbnRleHQoKSkiOworICAgICAgICAgICAgICAgIHJldHVybiAidG9KUyhl
eGVjLCBKU1NWR1N0YXRpY1BPRFR5cGVXcmFwcGVyPCRuYXRpdmVUeXBlPjo6Y3JlYXRlKCR2YWx1
ZSkuZ2V0KCksICR0aGlzVmFsdWUtPmNvbnRleHQoKSkiOwogICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICByZXR1cm4gInRvSlMoZXhlYywgSlNTVkdTdGF0aWNQT0RUeXBlV3Jh
cHBlcjwkbmF0aXZlVHlwZT46OmNyZWF0ZSgkdmFsdWUpLmdldCgpLCBpbXApIjsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfSBlbHNlIHsgIyBUaGVzZSBjbGFzc2VzLCBhbHdheXMgaGF2ZSBhIG1f
Y29udGV4dCBwb2ludGVyIQotICAgICAgICAgICAgcmV0dXJuICJ0b0pTKGV4ZWMsIEpTU1ZHRHlu
YW1pY1BPRFR5cGVXcmFwcGVyQ2FjaGU8JG5hdGl2ZVR5cGUsICRpbXBsQ2xhc3NOYW1lRm9yVmFs
dWVDb252ZXJzaW9uPjo6bG9va3VwT3JDcmVhdGVXcmFwcGVyKGltcCwgJiR7aW1wbENsYXNzTmFt
ZUZvclZhbHVlQ29udmVyc2lvbn06OiRnZXR0ZXIsICYke2ltcGxDbGFzc05hbWVGb3JWYWx1ZUNv
bnZlcnNpb259Ojokc2V0dGVyKS5nZXQoKSwgY29udGV4dCgpKSI7CisgICAgICAgICAgICByZXR1
cm4gInRvSlMoZXhlYywgSlNTVkdEeW5hbWljUE9EVHlwZVdyYXBwZXJDYWNoZTwkbmF0aXZlVHlw
ZSwgJGltcGxDbGFzc05hbWVGb3JWYWx1ZUNvbnZlcnNpb24+Ojpsb29rdXBPckNyZWF0ZVdyYXBw
ZXIoaW1wLCAmJHtpbXBsQ2xhc3NOYW1lRm9yVmFsdWVDb252ZXJzaW9ufTo6JGdldHRlciwgJiR7
aW1wbENsYXNzTmFtZUZvclZhbHVlQ29udmVyc2lvbn06OiRzZXR0ZXIpLmdldCgpLCAkdGhpc1Zh
bHVlLT5jb250ZXh0KCkpIjsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTYyMCwxMSArMTYwOCw3
IEBAIHN1YiBOYXRpdmVUb0pTVmFsdWUKIAogICAgIGlmIChJc1NWR1R5cGVOZWVkaW5nQ29udGV4
dFBhcmFtZXRlcigkdHlwZSkpIHsKICAgICAgICAgaWYgKElzU1ZHVHlwZU5lZWRpbmdDb250ZXh0
UGFyYW1ldGVyKCRpbXBsQ2xhc3NOYW1lKSkgewotICAgICAgICAgICAgaWYgKCRpbkZ1bmN0aW9u
Q2FsbCBlcSAxKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICJ0b0pTKGV4ZWMsIFdURjo6Z2V0
UHRyKCR2YWx1ZSksIGNhc3RlZFRoaXNPYmotPmNvbnRleHQoKSkiOwotICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gInRvSlMoZXhlYywgV1RGOjpnZXRQdHIoJHZh
bHVlKSwgY29udGV4dCgpKSI7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gInRv
SlMoZXhlYywgV1RGOjpnZXRQdHIoJHZhbHVlKSwgJHRoaXNWYWx1ZS0+Y29udGV4dCgpKSI7CiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICByZXR1cm4gInRvSlMoZXhlYywgV1RGOjpnZXRQ
dHIoJHZhbHVlKSwgaW1wKSI7CiAgICAgICAgIH0KQEAgLTE2NTYsOSArMTY0MCw5IEBAIHN1YiBH
ZW5lcmF0ZUhhc2hUYWJsZQogCiAgICAgbXkgJG5hbWUgPSBzaGlmdDsKICAgICBteSAka2V5cyA9
IHNoaWZ0OwotICAgIG15ICR2YWx1ZXMgPSBzaGlmdDsKICAgICBteSAkc3BlY2lhbHMgPSBzaGlm
dDsKLSAgICBteSAkcGFyYW1ldGVycyA9IHNoaWZ0OworICAgIG15ICR2YWx1ZTEgPSBzaGlmdDsK
KyAgICBteSAkdmFsdWUyID0gc2hpZnQ7CiAKICAgICBteSBAaGFzaGVzID0gKCk7CiAgICAgZm9y
ZWFjaCBteSAka2V5IChAeyRrZXlzfSkgewpAQCAtMTcwNSw3ICsxNjg5LDcgQEAgdGFibGVTaXpl
TG9vcDoKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZh
bHVlICRuYW1lRW50cmllc1xbJGNvdW50XF0gPVxuXHtcbiIpOwogICAgIG15ICRpID0gMDsKICAg
ICBmb3JlYWNoIG15ICRrZXkgKEB7JGtleXN9KSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIHsgXCIka2V5XCIsIChpbnRwdHJfdClAJHZhbHVlc1skaV0sIEAkc3BlY2lhbHNbJGld
LCBAJHBhcmFtZXRlcnNbJGldIH0sXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgeyBcIiRrZXlcIiwgQCRzcGVjaWFsc1skaV0sIChpbnRwdHJfdClAJHZhbHVlMVskaV0sIChp
bnRwdHJfdClAJHZhbHVlMlskaV0gfSxcbiIpOwogICAgICAgICArKyRpOwogICAgIH0KICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICB7IDAsIDAsIDAsIDAgfVxuIik7CkBAIC0xODMzLDcgKzE4
MTcsNiBAQCBwdWJsaWM6CiAgICAgICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCku
cHJvdG90eXBlLCAke3Byb3RvQ2xhc3NOYW1lfTo6c2VsZihleGVjKSwgTm9uZSk7CiAgICAgfQog
ICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwotICAgIEpTVmFsdWUqIGdldFZhbHVlUHJvcGVydHko
RXhlY1N0YXRlKiwgaW50IHRva2VuKSBjb25zdDsKICAgICB2aXJ0dWFsIGNvbnN0IENsYXNzSW5m
byogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJnNfaW5mbzsgfQogICAgIHN0YXRpYyBjb25z
dCBDbGFzc0luZm8gc19pbmZvOwogCkBAIC0xODY3LDEyICsxODUwLDYgQEAgYm9vbCAke2NsYXNz
TmFtZX1Db25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcAogICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNs
b3Q8JHtjbGFzc05hbWV9Q29uc3RydWN0b3IsIERPTU9iamVjdD4oZXhlYywgJiR7Y2xhc3NOYW1l
fUNvbnN0cnVjdG9yVGFibGUsIHRoaXMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLUpTVmFs
dWUqICR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yOjpnZXRWYWx1ZVByb3BlcnR5KEV4ZWNTdGF0ZSog
ZXhlYywgaW50IHRva2VuKSBjb25zdAotewotICAgIC8vIFRoZSB0b2tlbiBpcyB0aGUgbnVtZXJp
YyB2YWx1ZSBvZiBpdHMgYXNzb2NpYXRlZCBjb25zdGFudAotICAgIHJldHVybiBqc051bWJlcihl
eGVjLCB0b2tlbik7Ci19Ci0KIEVPRgogCiAgICAgJGltcGxLSlNJbmNsdWRleyJKU051bWJlckNl
bGwuaCJ9ID0gMTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDM2OTY4KQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMDgtMDktMjYgIFNhbSBX
ZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVcGRhdGUgdGVzdCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjExNTIKKyAgICAgICAgU3BlZWR1cCBzdGF0aWMgcHJvcGVydHkgZ2V0L3B1
dAorCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1mcmFtZS1hY2Nlc3MtcHV0
LWV4cGVjdGVkLnR4dDoKKwogMjAwOC0wOS0yNiAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hY2llaiBTdGFjaG93aWFrLgpJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1mcmFtZS1hY2Nlc3MtcHV0LWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Ny
b3NzLWZyYW1lLWFjY2Vzcy1wdXQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAzNjg3MykKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3MtZnJhbWUtYWNjZXNzLXB1dC1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTM2Niw2ICszNjYsNTYgQEAgQ09OU09MRSBNRVNT
QUdFOiBsaW5lIDE6IFVuc2FmZSBKYXZhU2NyaQogCiBDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTog
VW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBhY2Nlc3MgZnJhbWUgd2l0aCBVUkwgaHR0cDov
L2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1mcmFtZS1pZnJhbWUtZm9y
LXB1dC10ZXN0Lmh0bWwgZnJvbSBmcmFtZSB3aXRoIFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAv
c2VjdXJpdHkvY3Jvc3MtZnJhbWUtYWNjZXNzLXB1dC5odG1sLiBEb21haW5zLCBwcm90b2NvbHMg
YW5kIHBvcnRzIG11c3QgbWF0Y2guCiAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBVbnNhZmUg
SmF2YVNjcmlwdCBhdHRlbXB0IHRvIGFjY2VzcyBmcmFtZSB3aXRoIFVSTCBodHRwOi8vbG9jYWxo
b3N0OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLWZyYW1lLWlmcmFtZS1mb3ItcHV0LXRl
c3QuaHRtbCBmcm9tIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0
eS9jcm9zcy1mcmFtZS1hY2Nlc3MtcHV0Lmh0bWwuIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9y
dHMgbXVzdCBtYXRjaC4KKworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFVuc2FmZSBKYXZhU2Ny
aXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly9sb2NhbGhvc3Q6ODAw
MC9zZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3MtZnJhbWUtaWZyYW1lLWZvci1wdXQtdGVzdC5odG1s
IGZyb20gZnJhbWUgd2l0aCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L2Nyb3Nz
LWZyYW1lLWFjY2Vzcy1wdXQuaHRtbC4gRG9tYWlucywgcHJvdG9jb2xzIGFuZCBwb3J0cyBtdXN0
IG1hdGNoLgorCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogVW5zYWZlIEphdmFTY3JpcHQgYXR0
ZW1wdCB0byBhY2Nlc3MgZnJhbWUgd2l0aCBVUkwgaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3Vy
aXR5L3Jlc291cmNlcy9jcm9zcy1mcmFtZS1pZnJhbWUtZm9yLXB1dC10ZXN0Lmh0bWwgZnJvbSBm
cmFtZSB3aXRoIFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvY3Jvc3MtZnJhbWUt
YWNjZXNzLXB1dC5odG1sLiBEb21haW5zLCBwcm90b2NvbHMgYW5kIHBvcnRzIG11c3QgbWF0Y2gu
CisKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBVbnNhZmUgSmF2YVNjcmlwdCBhdHRlbXB0IHRv
IGFjY2VzcyBmcmFtZSB3aXRoIFVSTCBodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcmVz
b3VyY2VzL2Nyb3NzLWZyYW1lLWlmcmFtZS1mb3ItcHV0LXRlc3QuaHRtbCBmcm9tIGZyYW1lIHdp
dGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9jcm9zcy1mcmFtZS1hY2Nlc3Mt
cHV0Lmh0bWwuIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KKworQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDE6IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNz
IGZyYW1lIHdpdGggVVJMIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMv
Y3Jvc3MtZnJhbWUtaWZyYW1lLWZvci1wdXQtdGVzdC5odG1sIGZyb20gZnJhbWUgd2l0aCBVUkwg
aHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L2Nyb3NzLWZyYW1lLWFjY2Vzcy1wdXQuaHRt
bC4gRG9tYWlucywgcHJvdG9jb2xzIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgorCitDT05TT0xFIE1F
U1NBR0U6IGxpbmUgMTogVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBhY2Nlc3MgZnJhbWUg
d2l0aCBVUkwgaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1m
cmFtZS1pZnJhbWUtZm9yLXB1dC10ZXN0Lmh0bWwgZnJvbSBmcmFtZSB3aXRoIFVSTCBodHRwOi8v
MTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvY3Jvc3MtZnJhbWUtYWNjZXNzLXB1dC5odG1sLiBEb21h
aW5zLCBwcm90b2NvbHMgYW5kIHBvcnRzIG11c3QgbWF0Y2guCisKK0NPTlNPTEUgTUVTU0FHRTog
bGluZSAxOiBVbnNhZmUgSmF2YVNjcmlwdCBhdHRlbXB0IHRvIGFjY2VzcyBmcmFtZSB3aXRoIFVS
TCBodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLWZyYW1lLWlm
cmFtZS1mb3ItcHV0LXRlc3QuaHRtbCBmcm9tIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9zZWN1cml0eS9jcm9zcy1mcmFtZS1hY2Nlc3MtcHV0Lmh0bWwuIERvbWFpbnMsIHBy
b3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KKworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6
IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMIGh0dHA6
Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3MtZnJhbWUtaWZyYW1lLWZv
ci1wdXQtdGVzdC5odG1sIGZyb20gZnJhbWUgd2l0aCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAw
L3NlY3VyaXR5L2Nyb3NzLWZyYW1lLWFjY2Vzcy1wdXQuaHRtbC4gRG9tYWlucywgcHJvdG9jb2xz
IGFuZCBwb3J0cyBtdXN0IG1hdGNoLgorCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogVW5zYWZl
IEphdmFTY3JpcHQgYXR0ZW1wdCB0byBhY2Nlc3MgZnJhbWUgd2l0aCBVUkwgaHR0cDovL2xvY2Fs
aG9zdDo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1mcmFtZS1pZnJhbWUtZm9yLXB1dC10
ZXN0Lmh0bWwgZnJvbSBmcmFtZSB3aXRoIFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJp
dHkvY3Jvc3MtZnJhbWUtYWNjZXNzLXB1dC5odG1sLiBEb21haW5zLCBwcm90b2NvbHMgYW5kIHBv
cnRzIG11c3QgbWF0Y2guCisKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBVbnNhZmUgSmF2YVNj
cmlwdCBhdHRlbXB0IHRvIGFjY2VzcyBmcmFtZSB3aXRoIFVSTCBodHRwOi8vbG9jYWxob3N0Ojgw
MDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLWZyYW1lLWlmcmFtZS1mb3ItcHV0LXRlc3QuaHRt
bCBmcm9tIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9jcm9z
cy1mcmFtZS1hY2Nlc3MtcHV0Lmh0bWwuIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVz
dCBtYXRjaC4KKworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFVuc2FmZSBKYXZhU2NyaXB0IGF0
dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1
cml0eS9yZXNvdXJjZXMvY3Jvc3MtZnJhbWUtaWZyYW1lLWZvci1wdXQtdGVzdC5odG1sIGZyb20g
ZnJhbWUgd2l0aCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L2Nyb3NzLWZyYW1l
LWFjY2Vzcy1wdXQuaHRtbC4gRG9tYWlucywgcHJvdG9jb2xzIGFuZCBwb3J0cyBtdXN0IG1hdGNo
LgorCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0
byBhY2Nlc3MgZnJhbWUgd2l0aCBVUkwgaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Jl
c291cmNlcy9jcm9zcy1mcmFtZS1pZnJhbWUtZm9yLXB1dC10ZXN0Lmh0bWwgZnJvbSBmcmFtZSB3
aXRoIFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvY3Jvc3MtZnJhbWUtYWNjZXNz
LXB1dC5odG1sLiBEb21haW5zLCBwcm90b2NvbHMgYW5kIHBvcnRzIG11c3QgbWF0Y2guCisKK0NP
TlNPTEUgTUVTU0FHRTogbGluZSAxOiBVbnNhZmUgSmF2YVNjcmlwdCBhdHRlbXB0IHRvIGFjY2Vz
cyBmcmFtZSB3aXRoIFVSTCBodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2Vz
L2Nyb3NzLWZyYW1lLWlmcmFtZS1mb3ItcHV0LXRlc3QuaHRtbCBmcm9tIGZyYW1lIHdpdGggVVJM
IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9jcm9zcy1mcmFtZS1hY2Nlc3MtcHV0Lmh0
bWwuIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KKworQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDE6IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1l
IHdpdGggVVJMIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3Mt
ZnJhbWUtaWZyYW1lLWZvci1wdXQtdGVzdC5odG1sIGZyb20gZnJhbWUgd2l0aCBVUkwgaHR0cDov
LzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L2Nyb3NzLWZyYW1lLWFjY2Vzcy1wdXQuaHRtbC4gRG9t
YWlucywgcHJvdG9jb2xzIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgorCitDT05TT0xFIE1FU1NBR0U6
IGxpbmUgMTogVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBhY2Nlc3MgZnJhbWUgd2l0aCBV
UkwgaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1mcmFtZS1p
ZnJhbWUtZm9yLXB1dC10ZXN0Lmh0bWwgZnJvbSBmcmFtZSB3aXRoIFVSTCBodHRwOi8vMTI3LjAu
MC4xOjgwMDAvc2VjdXJpdHkvY3Jvc3MtZnJhbWUtYWNjZXNzLXB1dC5odG1sLiBEb21haW5zLCBw
cm90b2NvbHMgYW5kIHBvcnRzIG11c3QgbWF0Y2guCisKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAx
OiBVbnNhZmUgSmF2YVNjcmlwdCBhdHRlbXB0IHRvIGFjY2VzcyBmcmFtZSB3aXRoIFVSTCBodHRw
Oi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLWZyYW1lLWlmcmFtZS1m
b3ItcHV0LXRlc3QuaHRtbCBmcm9tIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9zZWN1cml0eS9jcm9zcy1mcmFtZS1hY2Nlc3MtcHV0Lmh0bWwuIERvbWFpbnMsIHByb3RvY29s
cyBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KKworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFVuc2Fm
ZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly9sb2Nh
bGhvc3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3MtZnJhbWUtaWZyYW1lLWZvci1wdXQt
dGVzdC5odG1sIGZyb20gZnJhbWUgd2l0aCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3Vy
aXR5L2Nyb3NzLWZyYW1lLWFjY2Vzcy1wdXQuaHRtbC4gRG9tYWlucywgcHJvdG9jb2xzIGFuZCBw
b3J0cyBtdXN0IG1hdGNoLgorCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogVW5zYWZlIEphdmFT
Y3JpcHQgYXR0ZW1wdCB0byBhY2Nlc3MgZnJhbWUgd2l0aCBVUkwgaHR0cDovL2xvY2FsaG9zdDo4
MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1mcmFtZS1pZnJhbWUtZm9yLXB1dC10ZXN0Lmh0
bWwgZnJvbSBmcmFtZSB3aXRoIFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvY3Jv
c3MtZnJhbWUtYWNjZXNzLXB1dC5odG1sLiBEb21haW5zLCBwcm90b2NvbHMgYW5kIHBvcnRzIG11
c3QgbWF0Y2guCisKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBVbnNhZmUgSmF2YVNjcmlwdCBh
dHRlbXB0IHRvIGFjY2VzcyBmcmFtZSB3aXRoIFVSTCBodHRwOi8vbG9jYWxob3N0OjgwMDAvc2Vj
dXJpdHkvcmVzb3VyY2VzL2Nyb3NzLWZyYW1lLWlmcmFtZS1mb3ItcHV0LXRlc3QuaHRtbCBmcm9t
IGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9jcm9zcy1mcmFt
ZS1hY2Nlc3MtcHV0Lmh0bWwuIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRj
aC4KKworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQg
dG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9y
ZXNvdXJjZXMvY3Jvc3MtZnJhbWUtaWZyYW1lLWZvci1wdXQtdGVzdC5odG1sIGZyb20gZnJhbWUg
d2l0aCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L2Nyb3NzLWZyYW1lLWFjY2Vz
cy1wdXQuaHRtbC4gRG9tYWlucywgcHJvdG9jb2xzIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgorCitD
T05TT0xFIE1FU1NBR0U6IGxpbmUgMTogVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBhY2Nl
c3MgZnJhbWUgd2l0aCBVUkwgaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Jlc291cmNl
cy9jcm9zcy1mcmFtZS1pZnJhbWUtZm9yLXB1dC10ZXN0Lmh0bWwgZnJvbSBmcmFtZSB3aXRoIFVS
TCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvY3Jvc3MtZnJhbWUtYWNjZXNzLXB1dC5o
dG1sLiBEb21haW5zLCBwcm90b2NvbHMgYW5kIHBvcnRzIG11c3QgbWF0Y2guCisKK0NPTlNPTEUg
TUVTU0FHRTogbGluZSAxOiBVbnNhZmUgSmF2YVNjcmlwdCBhdHRlbXB0IHRvIGFjY2VzcyBmcmFt
ZSB3aXRoIFVSTCBodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3Nz
LWZyYW1lLWlmcmFtZS1mb3ItcHV0LXRlc3QuaHRtbCBmcm9tIGZyYW1lIHdpdGggVVJMIGh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9jcm9zcy1mcmFtZS1hY2Nlc3MtcHV0Lmh0bWwuIERv
bWFpbnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KKworQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDE6IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGgg
VVJMIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3MtZnJhbWUt
aWZyYW1lLWZvci1wdXQtdGVzdC5odG1sIGZyb20gZnJhbWUgd2l0aCBVUkwgaHR0cDovLzEyNy4w
LjAuMTo4MDAwL3NlY3VyaXR5L2Nyb3NzLWZyYW1lLWFjY2Vzcy1wdXQuaHRtbC4gRG9tYWlucywg
cHJvdG9jb2xzIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgorCitDT05TT0xFIE1FU1NBR0U6IGxpbmUg
MTogVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBhY2Nlc3MgZnJhbWUgd2l0aCBVUkwgaHR0
cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1mcmFtZS1pZnJhbWUt
Zm9yLXB1dC10ZXN0Lmh0bWwgZnJvbSBmcmFtZSB3aXRoIFVSTCBodHRwOi8vMTI3LjAuMC4xOjgw
MDAvc2VjdXJpdHkvY3Jvc3MtZnJhbWUtYWNjZXNzLXB1dC5odG1sLiBEb21haW5zLCBwcm90b2Nv
bHMgYW5kIHBvcnRzIG11c3QgbWF0Y2guCisKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBVbnNh
ZmUgSmF2YVNjcmlwdCBhdHRlbXB0IHRvIGFjY2VzcyBmcmFtZSB3aXRoIFVSTCBodHRwOi8vbG9j
YWxob3N0OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLWZyYW1lLWlmcmFtZS1mb3ItcHV0
LXRlc3QuaHRtbCBmcm9tIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1
cml0eS9jcm9zcy1mcmFtZS1hY2Nlc3MtcHV0Lmh0bWwuIERvbWFpbnMsIHByb3RvY29scyBhbmQg
cG9ydHMgbXVzdCBtYXRjaC4KKwogQUxFUlQ6IFBBU1M6IHdpbmRvdy5BdHRyIHNob3VsZCBiZSAn
W29iamVjdCBBdHRyQ29uc3RydWN0b3JdJyBhbmQgaXMuCiBBTEVSVDogUEFTUzogd2luZG93LkNE
QVRBU2VjdGlvbiBzaG91bGQgYmUgJ1tvYmplY3QgQ0RBVEFTZWN0aW9uQ29uc3RydWN0b3JdJyBh
bmQgaXMuCiBBTEVSVDogUEFTUzogd2luZG93LkNoYXJhY3RlckRhdGEgc2hvdWxkIGJlICdbb2Jq
ZWN0IENoYXJhY3RlckRhdGFDb25zdHJ1Y3Rvcl0nIGFuZCBpcy4K
</data>
<flag name="review"
          id="10748"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>