<?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>150743</bug_id>
          
          <creation_ts>2015-10-30 17:21:21 -0700</creation_ts>
          <short_desc>IDB: Date objects don&apos;t work as keys or values</short_desc>
          <delta_ts>2022-03-01 02:45:11 -0800</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 Misc.</component>
          <version>Safari 9</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>149117</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1138061</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-10-30 17:21:21 -0700</bug_when>
    <thetext>IDB: Date objects don&apos;t work as keys

This appears to affect Legacy IDB in addition to Modern IDB.

If I can fix it at the bindings, it&apos;ll be fixed in both.
If not, I&apos;ll only fix it for Modern IDB.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138062</commentid>
    <comment_count>1</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-10-30 17:22:13 -0700</bug_when>
    <thetext>In addition to a test that deals solely with dates-as-keys, the test landed in https://trac.webkit.org/changeset/191832 can be augmented with dates.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138120</commentid>
    <comment_count>2</comment_count>
      <attachid>264465</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-10-30 22:47:13 -0700</bug_when>
    <thetext>Created attachment 264465
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138121</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-10-30 22:48:01 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; In addition to a test that deals solely with dates-as-keys, the test landed
&gt; in https://trac.webkit.org/changeset/191832 can be augmented with dates.

This patch includes a new targeted test as well as adding Dates to the r191832 test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138207</commentid>
    <comment_count>4</comment_count>
      <attachid>264465</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-10-31 14:57:12 -0700</bug_when>
    <thetext>Comment on attachment 264465
Patch v1

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

All the function arguments should be just JSValue instead of const JSValue&amp;, because a JSValue is a small scalar and better to pass by value.

&gt; Source/WebCore/Modules/indexeddb/IDBObjectStore.idl:37
&gt; +    [CallWith=ScriptExecutionContext, Custom, ImplementedAs=putRecord, RaisesException] IDBRequest put(any value, optional any key);

The ImplementedAs is awkward. I assume there&apos;s a name conflict, but I don’t understand why put has a conflict and add does not.

&gt; Source/WebCore/bindings/js/IDBBindingUtilities.cpp:310
&gt; +        Vector&lt;RefPtr&lt;IDBKey&gt;&gt; result;

result.reserveInitialCapacity(array.size());

&gt; Source/WebCore/bindings/js/IDBBindingUtilities.cpp:312
&gt; +        for (size_t i = 0; i &lt; array.size(); i++) {

Use a modern for loop here:

    for (auto&amp; string : array) {

&gt; Source/WebCore/bindings/js/IDBBindingUtilities.cpp:316
&gt; +            result.append(key);

WTF::move(key)

    result.uncheckedAppend(WTF::move(key));

&gt; Source/WebCore/bindings/js/IDBBindingUtilities.cpp:318
&gt; +        return IDBKey::createArray(result);

WTF::move(result) maybe? Not sure it’s helpful.

&gt; Source/WebCore/bindings/js/JSIDBObjectStoreCustom.cpp:59
&gt; +    size_t argsCount = state.argumentCount();
&gt; +    if (UNLIKELY(argsCount &lt; 1))
&gt; +        return JSValue::decode(throwVMError(&amp;state, createNotEnoughArgumentsError(&amp;state)));

As I understand it, we should almost never be checking argument count. Modern DOM bindings check for undefined to see if an argument is missing, and never have to check the argument count itself.

&gt; Source/WebCore/bindings/js/JSIDBObjectStoreCustom.cpp:61
&gt; +    auto value = state.argument(0);

If we retain the argumentCount check, then this should be uncheckedArgument(0). If we get rid of it, then we’ll likely be checking for undefined at some point.

&gt; Source/WebCore/bindings/js/JSIDBObjectStoreCustom.cpp:63
&gt; +    if (UNLIKELY(state.hadException()))
&gt; +        return jsUndefined();

This hadException check is not needed; extracting an argument from ExecState cannot cause an exception.

&gt; Source/WebCore/bindings/js/JSIDBObjectStoreCustom.cpp:72
&gt; +        if (overwrite)
&gt; +            result = toJS(&amp;state, castedThis-&gt;globalObject(), WTF::getPtr(impl.put(state, value, ec)));
&gt; +        else
&gt; +            result = toJS(&amp;state, castedThis-&gt;globalObject(), WTF::getPtr(impl.add(state, value, ec)));

Hand written code should not need to use WTF::getPtr. Instead we can either put in a .get() or not depending on the specific type. The automatically generated code uses getPtr to be generic, but that’s not important for hand-written code.

&gt; Source/WebCore/bindings/js/JSIDBObjectStoreCustom.cpp:77
&gt; +        if (UNLIKELY(state.hadException()))
&gt; +            return jsUndefined();
&gt; +        return result;

The hadException check is not needed; the result will be ignored if an exception is raised; it’s OK to return result.

&gt; Source/WebCore/bindings/js/JSIDBObjectStoreCustom.cpp:80
&gt; +    auto key = state.argument(1);

If we retain the argumentCount check, then this should be uncheckedArgument(1), because we’ve already determined that the argument count is not &lt; 1 and it’s not 1, so it’s at least 2. If we get rid of the argumentCount check, then we’ll likely be checking for undefined at some point.

&gt; Source/WebCore/bindings/js/JSIDBObjectStoreCustom.cpp:82
&gt; +    if (UNLIKELY(state.hadException()))
&gt; +        return jsUndefined();

This hadException check is not needed; extracting an argument from ExecState cannot cause an exception.

&gt; Source/WebCore/bindings/js/JSIDBObjectStoreCustom.cpp:94
&gt; +    if (UNLIKELY(state.hadException()))
&gt; +        return jsUndefined();
&gt; +
&gt; +    return result;

The hadException check is not needed; the result will be ignored if an exception is raised; it’s OK to return result.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138216</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-10-31 15:26:48 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 264465 [details]
&gt; Patch v1
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=264465&amp;action=review
&gt; 
&gt; All the function arguments should be just JSValue instead of const JSValue&amp;,
&gt; because a JSValue is a small scalar and better to pass by value.

I did not know that about JSValue! Great!

&gt; &gt; Source/WebCore/Modules/indexeddb/IDBObjectStore.idl:37
&gt; &gt; +    [CallWith=ScriptExecutionContext, Custom, ImplementedAs=putRecord, RaisesException] IDBRequest put(any value, optional any key);
&gt; 
&gt; The ImplementedAs is awkward. I assume there&apos;s a name conflict, but I don’t
&gt; understand why put has a conflict and add does not.

There&apos;s a name conflict with the JS object structures but only on put.

&gt; &gt; Source/WebCore/bindings/js/IDBBindingUtilities.cpp:310
&gt; &gt; +        Vector&lt;RefPtr&lt;IDBKey&gt;&gt; result;
&gt; 
&gt; result.reserveInitialCapacity(array.size());

Yup.

&gt; &gt; Source/WebCore/bindings/js/IDBBindingUtilities.cpp:312
&gt; &gt; +        for (size_t i = 0; i &lt; array.size(); i++) {
&gt; 
&gt; Use a modern for loop here:
&gt; 
&gt;     for (auto&amp; string : array) {

Yup.

&gt; &gt; Source/WebCore/bindings/js/IDBBindingUtilities.cpp:316
&gt; &gt; +            result.append(key);
&gt; 
&gt; WTF::move(key)
&gt; 
&gt;     result.uncheckedAppend(WTF::move(key));

Cool.

&gt; &gt; Source/WebCore/bindings/js/IDBBindingUtilities.cpp:318
&gt; &gt; +        return IDBKey::createArray(result);
&gt; 
&gt; WTF::move(result) maybe? Not sure it’s helpful.

Will look into it.

&gt; &gt; Source/WebCore/bindings/js/JSIDBObjectStoreCustom.cpp:59
&gt; &gt; +    size_t argsCount = state.argumentCount();
&gt; &gt; +    if (UNLIKELY(argsCount &lt; 1))
&gt; &gt; +        return JSValue::decode(throwVMError(&amp;state, createNotEnoughArgumentsError(&amp;state)));
&gt; 
&gt; As I understand it, we should almost never be checking argument count.
&gt; Modern DOM bindings check for undefined to see if an argument is missing,
&gt; and never have to check the argument count itself.

While I&apos;ll trust you on the argsCount &lt; 1 part of this, on the argsCount &lt; 2 part it still seems necessary since it&apos;s an optional argument.

&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSIDBObjectStoreCustom.cpp:61
&gt; &gt; +    auto value = state.argument(0);
&gt; 
&gt; If we retain the argumentCount check, then this should be
&gt; uncheckedArgument(0). If we get rid of it, then we’ll likely be checking for
&gt; undefined at some point.
&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSIDBObjectStoreCustom.cpp:63
&gt; &gt; +    if (UNLIKELY(state.hadException()))
&gt; &gt; +        return jsUndefined();
&gt; 
&gt; This hadException check is not needed; extracting an argument from ExecState
&gt; cannot cause an exception.

I pulled that from auto-gen code, but it appears it is only relevant WRT making Deprecated::ScriptValues in the VM.

Will remove!

&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSIDBObjectStoreCustom.cpp:72
&gt; &gt; +        if (overwrite)
&gt; &gt; +            result = toJS(&amp;state, castedThis-&gt;globalObject(), WTF::getPtr(impl.put(state, value, ec)));
&gt; &gt; +        else
&gt; &gt; +            result = toJS(&amp;state, castedThis-&gt;globalObject(), WTF::getPtr(impl.add(state, value, ec)));
&gt; 
&gt; Hand written code should not need to use WTF::getPtr. Instead we can either
&gt; put in a .get() or not depending on the specific type. The automatically
&gt; generated code uses getPtr to be generic, but that’s not important for
&gt; hand-written code.

Totally makes sense (You can probably tell by now I started with the auto-gen&apos;ed impl)

&gt; &gt; Source/WebCore/bindings/js/JSIDBObjectStoreCustom.cpp:77
&gt; &gt; +        if (UNLIKELY(state.hadException()))
&gt; &gt; +            return jsUndefined();
&gt; &gt; +        return result;
&gt; 
&gt; The hadException check is not needed; the result will be ignored if an
&gt; exception is raised; it’s OK to return result.

Yup.

&gt; &gt; Source/WebCore/bindings/js/JSIDBObjectStoreCustom.cpp:80
&gt; &gt; +    auto key = state.argument(1);
&gt; 
&gt; If we retain the argumentCount check, then this should be
&gt; uncheckedArgument(1), because we’ve already determined that the argument
&gt; count is not &lt; 1 and it’s not 1, so it’s at least 2. If we get rid of the
&gt; argumentCount check, then we’ll likely be checking for undefined at some
&gt; point.

Makes sense.

&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSIDBObjectStoreCustom.cpp:82
&gt; &gt; +    if (UNLIKELY(state.hadException()))
&gt; &gt; +        return jsUndefined();
&gt; 
&gt; This hadException check is not needed; extracting an argument from ExecState
&gt; cannot cause an exception.
&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSIDBObjectStoreCustom.cpp:94
&gt; &gt; +    if (UNLIKELY(state.hadException()))
&gt; &gt; +        return jsUndefined();
&gt; &gt; +
&gt; &gt; +    return result;
&gt; 
&gt; The hadException check is not needed; the result will be ignored if an
&gt; exception is raised; it’s OK to return result.

Got it and got it!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138264</commentid>
    <comment_count>6</comment_count>
      <attachid>264501</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-10-31 20:47:00 -0700</bug_when>
    <thetext>Created attachment 264501
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138267</commentid>
    <comment_count>7</comment_count>
      <attachid>264501</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-31 21:35:41 -0700</bug_when>
    <thetext>Comment on attachment 264501
Patch for landing.

Clearing flags on attachment: 264501

Committed r191850: &lt;http://trac.webkit.org/changeset/191850&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264465</attachid>
            <date>2015-10-30 22:47:13 -0700</date>
            <delta_ts>2022-03-01 02:45:11 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>37201</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjYjJiZmU4Li5kNTkwM2U1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTcgQEAKIDIwMTUtMTAt
MzAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCisgICAgICAgIElEQjogRGF0
ZSBvYmplY3RzIGRvbid0IHdvcmsgYXMga2V5cyBvciB2YWx1ZXMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3NDMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVy
bi9kYXRlLWJhc2ljLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL2RhdGUtYmFzaWMuaHRtbDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9p
bmRleGVkZGIvbW9kZXJuL2dldC1rZXlyYW5nZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3Rv
cmFnZS9pbmRleGVkZGIvbW9kZXJuL2dldC1rZXlyYW5nZS5odG1sOgorCisyMDE1LTEwLTMwICBC
cmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKwogICAgICAgICBNb2Rlcm4gSURCOiBJ
REJPYmplY3RTdG9yZS5hZGQoKSBzdXBwb3J0LgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzExCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9kYXRlLWJhc2ljLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9kYXRlLWJhc2ljLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjdlYjAxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2RhdGUtYmFzaWMtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTcgQEAKK0FMRVJUOiBJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBP
bGQgdmVyc2lvbiAtIDAgTmV3IHZlcnNpb24gLSAxCitBTEVSVDogSW5pdGlhbCB1cGdyYWRlIHZl
cnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGUKK0FMRVJUOiBTdWNjZXNzIGdldHRpbmcg
a2V5ICdGcmkgTm92IDA0IDE5NTUgMTc6MDA6MDAgR01ULTA3MDAgKFBEVCknIG9mIHR5cGUgb2Jq
ZWN0LCByZXN1bHQgaXMgJ0ZsdXggY2FwYWNpdG9yJyBvZiB0eXBlIHN0cmluZworQUxFUlQ6IEtl
eSBpcyBhIERhdGUgb2JqZWN0LCBidHcKK0FMRVJUOiBTdWNjZXNzIGdldHRpbmcga2V5ICdTYXQg
Tm92IDEyIDE5NTUgMTA6MDA6MDAgR01ULTA4MDAgKFBTVCknIG9mIHR5cGUgb2JqZWN0LCByZXN1
bHQgaXMgJ0Zpc2ggdW5kZXIgdGhlIHNlYScgb2YgdHlwZSBzdHJpbmcKK0FMRVJUOiBLZXkgaXMg
YSBEYXRlIG9iamVjdCwgYnR3CitBTEVSVDogU3VjY2VzcyBnZXR0aW5nIGtleSAnV2VkIE9jdCAy
MSAyMDE1IDA5OjAwOjAwIEdNVC0wNzAwIChQRFQpJyBvZiB0eXBlIG9iamVjdCwgcmVzdWx0IGlz
ICdIb3ZlcmJvYXJkcycgb2YgdHlwZSBzdHJpbmcKK0FMRVJUOiBLZXkgaXMgYSBEYXRlIG9iamVj
dCwgYnR3CitBTEVSVDogU3VjY2VzcyBnZXR0aW5nIGtleSAnYScgb2YgdHlwZSBzdHJpbmcsIHJl
c3VsdCBpcyAnRnJpIE5vdiAwNCAxOTU1IDE3OjAwOjAwIEdNVC0wNzAwIChQRFQpJyBvZiB0eXBl
IG9iamVjdAorQUxFUlQ6IFJlc3VsdCBpcyBhIERhdGUgb2JqZWN0LCBidHcKK0FMRVJUOiBTdWNj
ZXNzIGdldHRpbmcga2V5ICdiJyBvZiB0eXBlIHN0cmluZywgcmVzdWx0IGlzICdTYXQgTm92IDEy
IDE5NTUgMTA6MDA6MDAgR01ULTA4MDAgKFBTVCknIG9mIHR5cGUgb2JqZWN0CitBTEVSVDogUmVz
dWx0IGlzIGEgRGF0ZSBvYmplY3QsIGJ0dworQUxFUlQ6IFN1Y2Nlc3MgZ2V0dGluZyBrZXkgJ2Mn
IG9mIHR5cGUgc3RyaW5nLCByZXN1bHQgaXMgJ1dlZCBPY3QgMjEgMjAxNSAwOTowMDowMCBHTVQt
MDcwMCAoUERUKScgb2YgdHlwZSBvYmplY3QKK0FMRVJUOiBSZXN1bHQgaXMgYSBEYXRlIG9iamVj
dCwgYnR3CitBTEVSVDogcmVhZG9ubHkgdHJhbnNhY3Rpb24gY29tcGxldGUKK0FMRVJUOiBEb25l
CitUaGlzIHRlc3RzIHVzaW5nIERhdGUgb2JqZWN0cyBhcyBrZXlzIGFuZCB2YWx1ZXMuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZGF0ZS1iYXNpYy5o
dG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2RhdGUtYmFzaWMuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTg5MzQ4Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2RhdGUtYmFzaWMu
aHRtbApAQCAtMCwwICsxLDEwMCBAQAorVGhpcyB0ZXN0cyB1c2luZyBEYXRlIG9iamVjdHMgYXMg
a2V5cyBhbmQgdmFsdWVzLgorPHNjcmlwdD4KKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Cisg
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7Cit9CisKK2Z1bmN0aW9uIGRvbmUoKQoreworICAgIGFsZXJ0KCJEb25lIik7CisgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30K
KwordmFyIGNyZWF0ZVJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIkRhdGVCYXNpY0Rh
dGFiYXNlIiwgMSk7Cit2YXIgZGF0YWJhc2U7CisKK3ZhciBkYXRlMSA9IG5ldyBEYXRlKCIxOTU1
LTExLTA1VDAwOjAwOjAwIik7Cit2YXIgZGF0ZTIgPSBuZXcgRGF0ZSgiMTk1NS0xMS0xMlQxODow
MDowMCIpOwordmFyIGRhdGUzID0gbmV3IERhdGUoIjIwMTUtMTAtMjFUMTY6MDA6MDAiKTsKKyAg
ICAKK2NyZWF0ZVJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAg
ICBhbGVydCgiSW5pdGlhbCB1cGdyYWRlIG5lZWRlZDogT2xkIHZlcnNpb24gLSAiICsgZXZlbnQu
b2xkVmVyc2lvbiArICIgTmV3IHZlcnNpb24gLSAiICsgZXZlbnQubmV3VmVyc2lvbik7CisKKyAg
ICB2YXIgdmVyc2lvblRyYW5zYWN0aW9uID0gY3JlYXRlUmVxdWVzdC50cmFuc2FjdGlvbjsKKyAg
ICBkYXRhYmFzZSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgdmFyIG9iamVjdFN0b3JlID0g
ZGF0YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOworCisgICAgb2Jq
ZWN0U3RvcmUucHV0KCJGbHV4IGNhcGFjaXRvciIsIGRhdGUxKTsKKyAgICBvYmplY3RTdG9yZS5w
dXQoIkZpc2ggdW5kZXIgdGhlIHNlYSIsIGRhdGUyKTsKKyAgICBvYmplY3RTdG9yZS5wdXQoIkhv
dmVyYm9hcmRzIiwgZGF0ZTMpOworICAgIAorICAgIG9iamVjdFN0b3JlLnB1dChkYXRlMSwgImEi
KTsKKyAgICBvYmplY3RTdG9yZS5wdXQoZGF0ZTIsICJiIik7CisgICAgb2JqZWN0U3RvcmUucHV0
KGRhdGUzLCAiYyIpOworICAgIAorICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmFib3J0ID0gZnVu
Y3Rpb24oZXZlbnQpIHsKKyAgICAgICAgYWxlcnQoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hh
bmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnRlZCIpOworICAgICAgICBkb25lKCk7Cisg
ICAgfQorCisgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVu
dCkgeworICAgICAgICBhbGVydCgiSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNh
Y3Rpb24gY29tcGxldGUiKTsKKyAgICAgICAgY29udGludWVUZXN0MSgpOworICAgIH0KKworICAg
IHZlcnNpb25UcmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAg
YWxlcnQoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0
ZWQgZXJyb3IiICsgZXZlbnQpOworICAgICAgICBkb25lKCk7CisgICAgfQorfQorCit2YXIgb2Jq
ZWN0U3RvcmU7CisKK2Z1bmN0aW9uIHRlc3RHZXQoa2V5KSB7CisgICAgdmFyIHJlcXVlc3QgPSBv
YmplY3RTdG9yZS5nZXQoa2V5KTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkK
KyAgICB7CisgICAgICAgIGFsZXJ0KCJTdWNjZXNzIGdldHRpbmcga2V5ICciICsga2V5ICsgIicg
b2YgdHlwZSAiICsgdHlwZW9mKGtleSkgKyAiLCByZXN1bHQgaXMgJyIgKyByZXF1ZXN0LnJlc3Vs
dCArICInIG9mIHR5cGUgIiArIHR5cGVvZihyZXF1ZXN0LnJlc3VsdCkpOworICAgICAgICBpZiAo
a2V5IGluc3RhbmNlb2YgRGF0ZSkKKyAgICAgICAgICAgIGFsZXJ0KCJLZXkgaXMgYSBEYXRlIG9i
amVjdCwgYnR3Iik7CisgICAgICAgIGlmIChyZXF1ZXN0LnJlc3VsdCBpbnN0YW5jZW9mIERhdGUp
CisgICAgICAgICAgICBhbGVydCgiUmVzdWx0IGlzIGEgRGF0ZSBvYmplY3QsIGJ0dyIpOworICAg
IH0KKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbigpCisgICAgeworICAgICAgICBhbGVy
dCgiRXhwZWN0ZWQgZXJyb3IgZ2V0dGluZyBrZXkgJyIgKyBrZXkgKyAiJyIpOworICAgIH0KK30K
KworZnVuY3Rpb24gY29udGludWVUZXN0MSgpCit7CisgICAgdmFyIHRyYW5zYWN0aW9uID0gZGF0
YWJhc2UudHJhbnNhY3Rpb24oIlRlc3RPYmplY3RTdG9yZSIsICJyZWFkb25seSIpOworICAgIG9i
amVjdFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOwor
ICAgIAorICAgIHRlc3RHZXQoZGF0ZTEpOworICAgIHRlc3RHZXQoZGF0ZTIpOworICAgIHRlc3RH
ZXQoZGF0ZTMpOworICAgIHRlc3RHZXQoImEiKTsKKyAgICB0ZXN0R2V0KCJiIik7CisgICAgdGVz
dEdldCgiYyIpOworICAgIAorICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlvbihldmVu
dCkgeworICAgICAgICBhbGVydCgicmVhZG9ubHkgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9y
dCIgKyBldmVudCk7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisKKyAgICB0cmFuc2FjdGlvbi5v
bmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgYWxlcnQoInJlYWRvbmx5IHRy
YW5zYWN0aW9uIGNvbXBsZXRlIik7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisKKyAgICB0cmFu
c2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgYWxlcnQoInJlYWRv
bmx5IHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IiICsgZXZlbnQpOworICAgICAgICBkb25l
KCk7CisgICAgfQorfQorCis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vZGVybi9nZXQta2V5cmFuZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2dldC1rZXlyYW5nZS1leHBlY3RlZC50eHQKaW5k
ZXggYzExNDE4MC4uN2E0N2Y3NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL2dldC1rZXlyYW5nZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2dldC1rZXlyYW5nZS1leHBlY3RlZC50eHQKQEAgLTc3
LDExICs3NywxMSBAQCBBTEVSVDogUmVzdWx0IGlzIHVuZGVmaW5lZAogQUxFUlQ6IFN1Y2Nlc3Mg
Z2V0dGluZyBrZXlSYW5nZSBbSW5maW5pdHkgKENsb3NlZCksIGEgKENsb3NlZCldCiBBTEVSVDog
UmVzdWx0IGlzIFBvc0luZgogQUxFUlQ6IFN1Y2Nlc3MgZ2V0dGluZyBrZXlSYW5nZSBbSW5maW5p
dHkgKE9wZW4pLCBhIChDbG9zZWQpXQotQUxFUlQ6IFJlc3VsdCBpcyBBCitBTEVSVDogUmVzdWx0
IGlzIEZsdXggY2FwYWNpdG9yCiBBTEVSVDogU3VjY2VzcyBnZXR0aW5nIGtleVJhbmdlIFtJbmZp
bml0eSAoQ2xvc2VkKSwgYSAoT3BlbildCiBBTEVSVDogUmVzdWx0IGlzIFBvc0luZgogQUxFUlQ6
IFN1Y2Nlc3MgZ2V0dGluZyBrZXlSYW5nZSBbSW5maW5pdHkgKE9wZW4pLCBhIChPcGVuKV0KLUFM
RVJUOiBSZXN1bHQgaXMgQQorQUxFUlQ6IFJlc3VsdCBpcyBGbHV4IGNhcGFjaXRvcgogQUxFUlQ6
IFN1Y2Nlc3MgZ2V0dGluZyBrZXlSYW5nZSBbQVMgKENsb3NlZCksIGEgKENsb3NlZCldCiBBTEVS
VDogUmVzdWx0IGlzIEFTCiBBTEVSVDogU3VjY2VzcyBnZXR0aW5nIGtleVJhbmdlIFtBUyAoT3Bl
biksIGEgKENsb3NlZCldCkBAIC05MywxMSArOTMsMzUgQEAgQUxFUlQ6IFJlc3VsdCBpcyBBcwog
QUxFUlQ6IFN1Y2Nlc3MgZ2V0dGluZyBrZXlSYW5nZSBbSW5maW5pdHkgKENsb3NlZCksICAoQ2xv
c2VkKV0KIEFMRVJUOiBSZXN1bHQgaXMgUG9zSW5mCiBBTEVSVDogU3VjY2VzcyBnZXR0aW5nIGtl
eVJhbmdlIFtJbmZpbml0eSAoT3BlbiksICAoQ2xvc2VkKV0KLUFMRVJUOiBSZXN1bHQgaXMgQQor
QUxFUlQ6IFJlc3VsdCBpcyBGbHV4IGNhcGFjaXRvcgogQUxFUlQ6IFN1Y2Nlc3MgZ2V0dGluZyBr
ZXlSYW5nZSBbSW5maW5pdHkgKENsb3NlZCksICAoT3BlbildCiBBTEVSVDogUmVzdWx0IGlzIFBv
c0luZgogQUxFUlQ6IFN1Y2Nlc3MgZ2V0dGluZyBrZXlSYW5nZSBbSW5maW5pdHkgKE9wZW4pLCAg
KE9wZW4pXQotQUxFUlQ6IFJlc3VsdCBpcyBBCitBTEVSVDogUmVzdWx0IGlzIEZsdXggY2FwYWNp
dG9yCitBTEVSVDogU3VjY2VzcyBnZXR0aW5nIGtleVJhbmdlIFtJbmZpbml0eSAoQ2xvc2VkKSwg
YSAoQ2xvc2VkKV0KK0FMRVJUOiBSZXN1bHQgaXMgUG9zSW5mCitBTEVSVDogU3VjY2VzcyBnZXR0
aW5nIGtleVJhbmdlIFtJbmZpbml0eSAoT3BlbiksIGEgKENsb3NlZCldCitBTEVSVDogUmVzdWx0
IGlzIEZsdXggY2FwYWNpdG9yCitBTEVSVDogU3VjY2VzcyBnZXR0aW5nIGtleVJhbmdlIFtJbmZp
bml0eSAoQ2xvc2VkKSwgYSAoT3BlbildCitBTEVSVDogUmVzdWx0IGlzIFBvc0luZgorQUxFUlQ6
IFN1Y2Nlc3MgZ2V0dGluZyBrZXlSYW5nZSBbSW5maW5pdHkgKE9wZW4pLCBhIChPcGVuKV0KK0FM
RVJUOiBSZXN1bHQgaXMgRmx1eCBjYXBhY2l0b3IKK0FMRVJUOiBTdWNjZXNzIGdldHRpbmcga2V5
UmFuZ2UgW0luZmluaXR5IChDbG9zZWQpLCBhIChDbG9zZWQpXQorQUxFUlQ6IFJlc3VsdCBpcyBQ
b3NJbmYKK0FMRVJUOiBTdWNjZXNzIGdldHRpbmcga2V5UmFuZ2UgW0luZmluaXR5IChPcGVuKSwg
YSAoQ2xvc2VkKV0KK0FMRVJUOiBSZXN1bHQgaXMgRmx1eCBjYXBhY2l0b3IKK0FMRVJUOiBTdWNj
ZXNzIGdldHRpbmcga2V5UmFuZ2UgW0luZmluaXR5IChDbG9zZWQpLCBhIChPcGVuKV0KK0FMRVJU
OiBSZXN1bHQgaXMgUG9zSW5mCitBTEVSVDogU3VjY2VzcyBnZXR0aW5nIGtleVJhbmdlIFtJbmZp
bml0eSAoT3BlbiksIGEgKE9wZW4pXQorQUxFUlQ6IFJlc3VsdCBpcyBGbHV4IGNhcGFjaXRvcgor
QUxFUlQ6IFN1Y2Nlc3MgZ2V0dGluZyBrZXlSYW5nZSBbRnJpIE5vdiAwNCAxOTU1IDE3OjAwOjAw
IEdNVC0wNzAwIChQRFQpIChDbG9zZWQpLCBXZWQgT2N0IDIxIDIwMTUgMDk6MDA6MDAgR01ULTA3
MDAgKFBEVCkgKENsb3NlZCldCitBTEVSVDogUmVzdWx0IGlzIEZsdXggY2FwYWNpdG9yCitBTEVS
VDogU3VjY2VzcyBnZXR0aW5nIGtleVJhbmdlIFtGcmkgTm92IDA0IDE5NTUgMTc6MDA6MDAgR01U
LTA3MDAgKFBEVCkgKE9wZW4pLCBXZWQgT2N0IDIxIDIwMTUgMDk6MDA6MDAgR01ULTA3MDAgKFBE
VCkgKENsb3NlZCldCitBTEVSVDogUmVzdWx0IGlzIEZpc2ggdW5kZXIgdGhlIHNlYQorQUxFUlQ6
IFN1Y2Nlc3MgZ2V0dGluZyBrZXlSYW5nZSBbRnJpIE5vdiAwNCAxOTU1IDE3OjAwOjAwIEdNVC0w
NzAwIChQRFQpIChDbG9zZWQpLCBXZWQgT2N0IDIxIDIwMTUgMDk6MDA6MDAgR01ULTA3MDAgKFBE
VCkgKE9wZW4pXQorQUxFUlQ6IFJlc3VsdCBpcyBGbHV4IGNhcGFjaXRvcgorQUxFUlQ6IFN1Y2Nl
c3MgZ2V0dGluZyBrZXlSYW5nZSBbRnJpIE5vdiAwNCAxOTU1IDE3OjAwOjAwIEdNVC0wNzAwIChQ
RFQpIChPcGVuKSwgV2VkIE9jdCAyMSAyMDE1IDA5OjAwOjAwIEdNVC0wNzAwIChQRFQpIChPcGVu
KV0KK0FMRVJUOiBSZXN1bHQgaXMgRmlzaCB1bmRlciB0aGUgc2VhCiBBTEVSVDogcmVhZG9ubHkg
dHJhbnNhY3Rpb24gY29tcGxldGUKIEFMRVJUOiBEb25lCiBUaGlzIHRlc3QgZXhlcmNpc2VzIElE
Qk9iamVjdFN0b3JlLmdldCgpIHdpdGggYW4gSURCS2V5UmFuZ2UgYXMgdGhlIHBhcmFtZXRlci4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9nZXQta2V5
cmFuZ2UuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9nZXQta2V5
cmFuZ2UuaHRtbAppbmRleCBmZWY5Zjc5Li40MjYwZmE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZ2V0LWtleXJhbmdlLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2dldC1rZXlyYW5nZS5odG1sCkBAIC0xNiwx
MiArMTYsMjEgQEAgZnVuY3Rpb24gZG9uZSgpCiB2YXIgY3JlYXRlUmVxdWVzdCA9IHdpbmRvdy5p
bmRleGVkREIub3BlbigiR2V0S2V5UmFuZ2VEYXRhYmFzZSIsIDEpOwogdmFyIGRhdGFiYXNlOwog
Cit2YXIgZGF0ZTEgPSBuZXcgRGF0ZSgiMTk1NS0xMS0wNVQwMDowMDowMCIpOwordmFyIGRhdGUy
ID0gbmV3IERhdGUoIjE5NTUtMTEtMTJUMTg6MDA6MDAiKTsKK3ZhciBkYXRlMyA9IG5ldyBEYXRl
KCIyMDE1LTEwLTIxVDE2OjAwOjAwIik7CisgICAgCiBjcmVhdGVSZXF1ZXN0Lm9udXBncmFkZW5l
ZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgYWxlcnQoIkluaXRpYWwgdXBncmFkZSBuZWVk
ZWQ6IE9sZCB2ZXJzaW9uIC0gIiArIGV2ZW50Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJzaW9uIC0g
IiArIGV2ZW50Lm5ld1ZlcnNpb24pOwogCiAgICAgdmFyIHZlcnNpb25UcmFuc2FjdGlvbiA9IGNy
ZWF0ZVJlcXVlc3QudHJhbnNhY3Rpb247CiAgICAgZGF0YWJhc2UgPSBldmVudC50YXJnZXQucmVz
dWx0OwogICAgIHZhciBvYmplY3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJU
ZXN0T2JqZWN0U3RvcmUiKTsKKworICAgIG9iamVjdFN0b3JlLnB1dCgiRmx1eCBjYXBhY2l0b3Ii
LCBkYXRlMSk7CisgICAgb2JqZWN0U3RvcmUucHV0KCJGaXNoIHVuZGVyIHRoZSBzZWEiLCBkYXRl
Mik7CisgICAgb2JqZWN0U3RvcmUucHV0KCJIb3ZlcmJvYXJkcyIsIGRhdGUzKTsKKwogICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgMTAwOyArK2kpCiAgICAgICAgIG9iamVjdFN0b3JlLnB1dCgiXCIi
ICsgaSArICJcIiIsIGkpOwogCkBAIC0xMjcsNiArMTM2LDIxIEBAIGZ1bmN0aW9uIGNvbnRpbnVl
VGVzdDEoKQogICAgIHRlc3RHZXQoSURCS2V5UmFuZ2UuYm91bmQoSW5maW5pdHksIFtdLCB0cnVl
KSk7CiAgICAgdGVzdEdldChJREJLZXlSYW5nZS5ib3VuZChJbmZpbml0eSwgW10sIGZhbHNlLCB0
cnVlKSk7CiAgICAgdGVzdEdldChJREJLZXlSYW5nZS5ib3VuZChJbmZpbml0eSwgW10sIHRydWUs
IHRydWUpKTsKKworICAgIHRlc3RHZXQoSURCS2V5UmFuZ2UuYm91bmQoSW5maW5pdHksICJhIikp
OworICAgIHRlc3RHZXQoSURCS2V5UmFuZ2UuYm91bmQoSW5maW5pdHksICJhIiwgdHJ1ZSkpOwor
ICAgIHRlc3RHZXQoSURCS2V5UmFuZ2UuYm91bmQoSW5maW5pdHksICJhIiwgZmFsc2UsIHRydWUp
KTsKKyAgICB0ZXN0R2V0KElEQktleVJhbmdlLmJvdW5kKEluZmluaXR5LCAiYSIsIHRydWUsIHRy
dWUpKTsKKworICAgIHRlc3RHZXQoSURCS2V5UmFuZ2UuYm91bmQoSW5maW5pdHksICJhIikpOwor
ICAgIHRlc3RHZXQoSURCS2V5UmFuZ2UuYm91bmQoSW5maW5pdHksICJhIiwgdHJ1ZSkpOworICAg
IHRlc3RHZXQoSURCS2V5UmFuZ2UuYm91bmQoSW5maW5pdHksICJhIiwgZmFsc2UsIHRydWUpKTsK
KyAgICB0ZXN0R2V0KElEQktleVJhbmdlLmJvdW5kKEluZmluaXR5LCAiYSIsIHRydWUsIHRydWUp
KTsKKworICAgIHRlc3RHZXQoSURCS2V5UmFuZ2UuYm91bmQoZGF0ZTEsIGRhdGUzKSk7CisgICAg
dGVzdEdldChJREJLZXlSYW5nZS5ib3VuZChkYXRlMSwgZGF0ZTMsIHRydWUpKTsKKyAgICB0ZXN0
R2V0KElEQktleVJhbmdlLmJvdW5kKGRhdGUxLCBkYXRlMywgZmFsc2UsIHRydWUpKTsKKyAgICB0
ZXN0R2V0KElEQktleVJhbmdlLmJvdW5kKGRhdGUxLCBkYXRlMywgdHJ1ZSwgdHJ1ZSkpOwogICAg
IAogICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlvbihldmVudCkgewogICAgICAgICBh
bGVydCgicmVhZG9ubHkgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydCIgKyBldmVudCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggYWNmMDZlNy4uZWVkNzQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ4IEBA
CiAyMDE1LTEwLTMwICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAorICAgICAg
ICBJREI6IERhdGUgb2JqZWN0cyBkb24ndCB3b3JrIGFzIGtleXMgb3IgdmFsdWVzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzQzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogc3RvcmFnZS9p
bmRleGVkZGIvbW9kZXJuL2RhdGUtYmFzaWMuaHRtbAorCisgICAgICAgIFRoZSBjb21iaW5hdGlv
biBvZiB0aGUgYXV0b2dlbmVyYXRlZCBiaW5kaW5ncyB3aXRoIERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlIHdhcworICAgICAgICBsb3NpbmcgdGhlIGZpZGVsaXR5IG9mICJEYXRlIiBvYmplY3RzIGJl
aW5nIERhdGVzLCBhbmQgbm90IGp1c3Qgbm9ybWFsIE9iamVjdHMuCisgICAgICAgIAorICAgICAg
ICBUaGlzIHdhcyBicmVha2luZyB0aGVpciB1c2FnZSBhcyBJREJLZXlzLgorICAgICAgICAKKyAg
ICAgICAgQ3VzdG9tIGJpbmRpbmcgKyByZXdvcmtpbmcgdGhlIElEQk9iamVjdFN0b3JlIElETHMg
dG8gdXNlIEpTVmFsdWUgaW5zdGVhZCBvZiBTY3JpcHRWYWx1ZQorICAgICAgICBmaXhlcyB0aGlz
IGhhbmRpbHkuCisgICAgICAgIAorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVj
dFN0b3JlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaWRs
OgorICAgICAgICAKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCT2JqZWN0
U3RvcmVJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCT2JqZWN0U3Rv
cmU6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQk9iamVjdFN0b3JlOjpw
dXQpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJPYmplY3RTdG9yZTo6cHV0T3JB
ZGQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPYmplY3RTdG9yZUlt
cGwuaDoKKyAgICAgICAgCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvbGVnYWN5L0xlZ2Fj
eU9iamVjdFN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeU9iamVjdFN0b3JlOjph
ZGQpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5T2JqZWN0U3RvcmU6OnB1dCk6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvbGVnYWN5L0xlZ2FjeU9iamVjdFN0b3JlLmg6CisgICAgICAg
IAorICAgICAgICAqIGJpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6aW50ZXJuYWxDcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRo
KToKKyAgICAgICAgKFdlYkNvcmU6Om1heWJlQ3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5k
S2V5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpjYW5JbmplY3RJREJLZXlJbnRvU2NyaXB0VmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6c2NyaXB0VmFsdWVUb0lEQktleSk6CisgICAgICAgICog
YmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oOgorCisgICAgICAgICogYmluZGluZ3Mv
anMvSlNJREJPYmplY3RTdG9yZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwdXRPckFk
ZCk6CisgICAgICAgIChXZWJDb3JlOjpKU0lEQk9iamVjdFN0b3JlOjpwdXRSZWNvcmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNJREJPYmplY3RTdG9yZTo6YWRkKToKKworMjAxNS0xMC0zMCAgQnJh
ZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKICAgICAgICAgTW9kZXJuIElEQjogSURC
T2JqZWN0U3RvcmUuYWRkKCkgc3VwcG9ydC4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MDcxMQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaAppbmRleCBiNTdmMGM2Li5iZTgwYTNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgK
QEAgLTQxLDYgKzQxLDcgQEAgY2xhc3MgU2NyaXB0VmFsdWU7CiAKIG5hbWVzcGFjZSBKU0Mgewog
Y2xhc3MgRXhlY1N0YXRlOworY2xhc3MgSlNWYWx1ZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtNjYsOCArNjcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBSZWZQdHI8SURCVHJhbnNh
Y3Rpb24+IHRyYW5zYWN0aW9uKCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBhdXRvSW5jcmVtZW50
KCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4gYWRkKEpTQzo6
RXhlY1N0YXRlJiwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBFeGNlcHRpb25Db2RlJikgPSAw
OwotICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IHB1dChKU0M6OkV4ZWNTdGF0ZSYsIERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKKyAgICB2aXJ0dWFs
IFJlZlB0cjxJREJSZXF1ZXN0PiBhZGQoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBKU0M6OkpTVmFs
dWUmLCBFeGNlcHRpb25Db2RlJikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+
IHB1dChKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IEpTQzo6SlNWYWx1ZSYsIEV4Y2VwdGlvbkNvZGUm
KSA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0
cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBJREJLZXlS
YW5nZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8SURCUmVxdWVz
dD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpID0gMDsKQEAgLTc2LDggKzc3LDggQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4gZ2V0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRp
b25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IGdldChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgSURCS2V5UmFuZ2UqLCBFeGNlcHRpb25Db2RlJikgPSAwOwotICAg
IHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IGFkZChKU0M6OkV4ZWNTdGF0ZSYsIERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlJiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhj
ZXB0aW9uQ29kZSYpID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxJREJSZXF1ZXN0PiBwdXQoSlND
OjpFeGVjU3RhdGUmLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIGNvbnN0IERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CisgICAgdmlydHVhbCBSZWZQ
dHI8SURCUmVxdWVzdD4gYWRkKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgSlNDOjpKU1ZhbHVlJiwg
Y29uc3QgSlNDOjpKU1ZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CisgICAgdmlydHVh
bCBSZWZQdHI8SURCUmVxdWVzdD4gcHV0KEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgSlNDOjpKU1Zh
bHVlJiwgY29uc3QgSlNDOjpKU1ZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAg
dmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4gZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIElEQktleVJhbmdlKiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0dWFs
IFJlZlB0cjxJREJSZXF1ZXN0PiBkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpID0g
MDsKICAgICB2aXJ0dWFsIFJlZlB0cjxJREJSZXF1ZXN0PiBjbGVhcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmlkbAppbmRleCBhZjAyMGRmLi5kODg2ZDE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RT
dG9yZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmUuaWRsCkBAIC0zNCw4ICszNCw4IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIElEQlRy
YW5zYWN0aW9uIHRyYW5zYWN0aW9uOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGF1
dG9JbmNyZW1lbnQ7CiAKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIFJhaXNlc0V4Y2VwdGlv
bl0gSURCUmVxdWVzdCBwdXQoYW55IHZhbHVlLCBvcHRpb25hbCBhbnkga2V5KTsKLSAgICBbQ2Fs
bFdpdGg9U2NyaXB0U3RhdGUsIFJhaXNlc0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBhZGQoYW55IHZh
bHVlLCBvcHRpb25hbCBhbnkga2V5KTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwgQ3VzdG9tLCBJbXBsZW1lbnRlZEFzPXB1dFJlY29yZCwgUmFpc2VzRXhjZXB0aW9uXSBJ
REJSZXF1ZXN0IHB1dChhbnkgdmFsdWUsIG9wdGlvbmFsIGFueSBrZXkpOworICAgIFtDYWxsV2l0
aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBDdXN0b20sIFJhaXNlc0V4Y2VwdGlvbl0gSURCUmVx
dWVzdCBhZGQoYW55IHZhbHVlLCBvcHRpb25hbCBhbnkga2V5KTsKICAgICBbQ2FsbFdpdGg9U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCwgSW1wbGVtZW50ZWRBcz1kZWxldGVGdW5jdGlvbiwgUmFpc2Vz
RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGRlbGV0ZShJREJLZXlSYW5nZT8ga2V5UmFuZ2UpOwogICAg
IFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBJbXBsZW1lbnRlZEFzPWRlbGV0ZUZ1
bmN0aW9uLCBSYWlzZXNFeGNlcHRpb25dIElEQlJlcXVlc3QgZGVsZXRlKGFueSBrZXkpOwogICAg
IFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSYWlzZXNFeGNlcHRpb25dIElEQlJl
cXVlc3QgZ2V0KElEQktleVJhbmdlPyBrZXkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQk9iamVjdFN0b3JlSW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCT2JqZWN0U3RvcmVJbXBsLmNwcApp
bmRleCA2NmY5OWVhLi42MTViYzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9jbGllbnQvSURCT2JqZWN0U3RvcmVJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCT2JqZWN0U3RvcmVJbXBsLmNwcApAQCAt
ODcsMTYgKzg3LDYgQEAgYm9vbCBJREJPYmplY3RTdG9yZTo6YXV0b0luY3JlbWVudCgpIGNvbnN0
CiAgICAgcmV0dXJuIG1faW5mby5hdXRvSW5jcmVtZW50KCk7CiB9CiAKLVJlZlB0cjxXZWJDb3Jl
OjpJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6YWRkKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAg
ICByZXR1cm4gcHV0T3JBZGQoc3RhdGUsIHZhbHVlLCBudWxscHRyLCBJbmRleGVkREI6Ok9iamVj
dFN0b3JlT3ZlcndyaXRlTW9kZTo6Tm9PdmVyd3JpdGUsIGVjKTsKLX0KLQotUmVmUHRyPFdlYkNv
cmU6OklEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXQoSlNDOjpFeGVjU3RhdGUmIHN0YXRl
LCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewot
ICAgIHJldHVybiBwdXRPckFkZChzdGF0ZSwgdmFsdWUsIG51bGxwdHIsIEluZGV4ZWREQjo6T2Jq
ZWN0U3RvcmVPdmVyd3JpdGVNb2RlOjpPdmVyd3JpdGUsIGVjKTsKLX0KLQogUmVmUHRyPFdlYkNv
cmU6OklEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwpAQCAtMTgzLDE5ICsxNzMsMjkgQEAgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+
IElEQk9iamVjdFN0b3JlOjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKICAg
ICByZXR1cm4gV1RGOjptb3ZlKHJlcXVlc3QpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6SURCUmVx
dWVzdD4gSURCT2JqZWN0U3RvcmU6OmFkZChKU0M6OkV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
JiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQorUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElE
Qk9iamVjdFN0b3JlOjphZGQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBKU0M6OkpTVmFs
dWUmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICByZXR1cm4gcHV0T3JBZGQoc3Rh
dGUsIHZhbHVlLCBudWxscHRyLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZTo6
Tm9PdmVyd3JpdGUsIGVjKTsKK30KKworUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQk9i
amVjdFN0b3JlOjphZGQoSlNDOjpFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgY29uc3QgSlNDOjpKU1Zh
bHVlJiB2YWx1ZSwgY29uc3QgSlNDOjpKU1ZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ewogICAgIGF1dG8gaWRiS2V5ID0gc2NyaXB0VmFsdWVUb0lEQktleShleGVjU3RhdGUsIGtleSk7
CiAgICAgcmV0dXJuIHB1dE9yQWRkKGV4ZWNTdGF0ZSwgdmFsdWUsIGlkYktleSwgSW5kZXhlZERC
OjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGU6Ok5vT3ZlcndyaXRlLCBlYyk7CiB9CiAKLVJlZlB0
cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6cHV0KEpTQzo6RXhlY1N0YXRl
JiBleGVjU3RhdGUsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCitSZWZQdHI8V2ViQ29y
ZTo6SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OnB1dChKU0M6OkV4ZWNTdGF0ZSYgZXhlY1N0
YXRlLCBjb25zdCBKU0M6OkpTVmFsdWUmIHZhbHVlLCBjb25zdCBKU0M6OkpTVmFsdWUmIGtleSwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgYXV0byBpZGJLZXkgPSBzY3JpcHRWYWx1ZVRvSURC
S2V5KGV4ZWNTdGF0ZSwga2V5KTsKICAgICByZXR1cm4gcHV0T3JBZGQoZXhlY1N0YXRlLCB2YWx1
ZSwgaWRiS2V5LCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZTo6T3ZlcndyaXRl
LCBlYyk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6
cHV0T3JBZGQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYg
dmFsdWUsIFJlZlB0cjxJREJLZXk+IGtleSwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0
ZU1vZGUgb3ZlcndyaXRlTW9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitSZWZQdHI8V2ViQ29yZTo6
SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OnB1dChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNv
bnN0IEpTQzo6SlNWYWx1ZSYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIHJldHVy
biBwdXRPckFkZChzdGF0ZSwgdmFsdWUsIG51bGxwdHIsIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVP
dmVyd3JpdGVNb2RlOjpPdmVyd3JpdGUsIGVjKTsKK30KKworUmVmUHRyPFdlYkNvcmU6OklEQlJl
cXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXRPckFkZChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNv
bnN0IEpTQzo6SlNWYWx1ZSYgdmFsdWUsIFJlZlB0cjxJREJLZXk+IGtleSwgSW5kZXhlZERCOjpP
YmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUgb3ZlcndyaXRlTW9kZSwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpwdXRPckFkZCIpOwogCkBA
IC0yMTQsNyArMjE0LDcgQEAgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQk9iamVjdFN0
b3JlOjpwdXRPckFkZChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIERlcHIKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCi0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2Vy
aWFsaXplZFZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoJnN0YXRlLCB2YWx1
ZS5qc1ZhbHVlKCksIG51bGxwdHIsIG51bGxwdHIpOworICAgIFJlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRl
KCZzdGF0ZSwgdmFsdWUsIG51bGxwdHIsIG51bGxwdHIpOwogICAgIGlmIChzdGF0ZS5oYWRFeGNl
cHRpb24oKSkgewogICAgICAgICBlYyA9IERBVEFfQ0xPTkVfRVJSOwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2Ns
aWVudC9JREJPYmplY3RTdG9yZUltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL2NsaWVudC9JREJPYmplY3RTdG9yZUltcGwuaAppbmRleCBkYzI3Y2VmLi5lNTdjYjU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCT2Jq
ZWN0U3RvcmVJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xp
ZW50L0lEQk9iamVjdFN0b3JlSW1wbC5oCkBAIC01NCw4ICs1NCw4IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24oKSBvdmVy
cmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIGJvb2wgYXV0b0luY3JlbWVudCgpIGNvbnN0IG92ZXJy
aWRlIGZpbmFsOwogCi0gICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gYWRk
KEpTQzo6RXhlY1N0YXRlJiwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBFeGNlcHRpb25Db2Rl
Jikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVz
dD4gcHV0KEpTQzo6RXhlY1N0YXRlJiwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBFeGNlcHRp
b25Db2RlJikgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6SURC
UmVxdWVzdD4gYWRkKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgSlNDOjpKU1ZhbHVlJiwgRXhjZXB0
aW9uQ29kZSYpIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OklE
QlJlcXVlc3Q+IHB1dChKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IEpTQzo6SlNWYWx1ZSYsIEV4Y2Vw
dGlvbkNvZGUmKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpJ
REJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25D
b2RlJikgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6SURCUmVx
dWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSURCS2V5UmFuZ2UqLCBF
eGNlcHRpb25Db2RlJikgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29y
ZTo6SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3Qg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlIGZp
bmFsOwpAQCAtNjMsOCArNjMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29y
ZTo6SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3Qg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4
Y2VwdGlvbkNvZGUmKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3Jl
OjpJREJSZXF1ZXN0PiBnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZSBmaW5hbDsKICAg
ICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBnZXQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIElEQktleVJhbmdlKiwgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlIGZpbmFsOwot
ICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IGFkZChKU0M6OkV4ZWNTdGF0
ZSYsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgUmVm
UHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IHB1dChKU0M6OkV4ZWNTdGF0ZSYsIERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlJiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0
aW9uQ29kZSYpIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OklE
QlJlcXVlc3Q+IGFkZChKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IEpTQzo6SlNWYWx1ZSYsIGNvbnN0
IEpTQzo6SlNWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGUgZmluYWw7CisgICAg
dmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gcHV0KEpTQzo6RXhlY1N0YXRlJiwg
Y29uc3QgSlNDOjpKU1ZhbHVlJiwgY29uc3QgSlNDOjpKU1ZhbHVlJiBrZXksIEV4Y2VwdGlvbkNv
ZGUmKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1
ZXN0PiBkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSURCS2V5UmFuZ2Uq
LCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCBSZWZQdHI8V2Vi
Q29yZTo6SURCUmVxdWVzdD4gZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKSBvdmVy
cmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBjbGVh
cihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlIGZpbmFs
OwpAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIElEQk9iamVjdFN0b3Jl
KGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYsIElEQlRyYW5zYWN0aW9uJik7CiAKLSAgICBSZWZQ
dHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gcHV0T3JBZGQoSlNDOjpFeGVjU3RhdGUmLCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSYsIFJlZlB0cjxJREJLZXk+LCBJbmRleGVkREI6Ok9iamVjdFN0b3Jl
T3ZlcndyaXRlTW9kZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJlZlB0cjxXZWJDb3JlOjpJREJS
ZXF1ZXN0PiBwdXRPckFkZChKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IEpTQzo6SlNWYWx1ZSYsIFJl
ZlB0cjxJREJLZXk+LCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSwgRXhjZXB0
aW9uQ29kZSYpOwogCiAgICAgSURCT2JqZWN0U3RvcmVJbmZvIG1faW5mbzsKICAgICBSZWY8SURC
VHJhbnNhY3Rpb24+IG1fdHJhbnNhY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9sZWdhY3kvTGVnYWN5T2JqZWN0U3RvcmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGVnYWN5L0xlZ2FjeU9iamVjdFN0b3JlLmNwcAppbmRl
eCA5NzAwMTNiLi44NTFlMmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9sZWdhY3kvTGVnYWN5T2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL2xlZ2FjeS9MZWdhY3lPYmplY3RTdG9yZS5jcHAKQEAgLTk2LDI4
ICs5NiwzMyBAQCBSZWZQdHI8SURCUmVxdWVzdD4gTGVnYWN5T2JqZWN0U3RvcmU6OmdldChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdAogICAgIHJldHVybiBnZXQoY29udGV4
dCwga2V5UmFuZ2UuZ2V0KCksIGVjKTsKIH0KIAotUmVmUHRyPElEQlJlcXVlc3Q+IExlZ2FjeU9i
amVjdFN0b3JlOjphZGQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSYgdmFsdWUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlv
bkNvZGUmIGVjKQorUmVmUHRyPElEQlJlcXVlc3Q+IExlZ2FjeU9iamVjdFN0b3JlOjphZGQoSlND
OjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBKU0M6OkpTVmFsdWUmIHZhbHVlLCBjb25zdCBKU0M6
OkpTVmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEks
ICJMZWdhY3lPYmplY3RTdG9yZTo6YWRkIik7Ci0gICAgcmV0dXJuIHB1dChJREJEYXRhYmFzZUJh
Y2tlbmQ6OkFkZE9ubHksIExlZ2FjeUFueTo6Y3JlYXRlKHRoaXMpLCBzdGF0ZSwgdmFsdWUsIGtl
eSwgZWMpOworICAgIGF1dG8gZGVwcmVjYXRlZFZhbHVlID0gRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUoc3RhdGUudm0oKSwgdmFsdWUpOworICAgIGF1dG8gZEtleSA9IERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlKHN0YXRlLnZtKCksIGtleSk7CisgICAgcmV0dXJuIHB1dChJREJEYXRhYmFzZUJhY2tl
bmQ6OkFkZE9ubHksIExlZ2FjeUFueTo6Y3JlYXRlKHRoaXMpLCBzdGF0ZSwgZGVwcmVjYXRlZFZh
bHVlLCBkS2V5LCBlYyk7CiB9CiAKLVJlZlB0cjxJREJSZXF1ZXN0PiBMZWdhY3lPYmplY3RTdG9y
ZTo6YWRkKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZh
bHVlLCBFeGNlcHRpb25Db2RlJiBlYykKK1JlZlB0cjxJREJSZXF1ZXN0PiBMZWdhY3lPYmplY3RT
dG9yZTo6YWRkKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgSlNDOjpKU1ZhbHVlJiB2YWx1
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJMZWdhY3lPYmpl
Y3RTdG9yZTo6YWRkIik7Ci0gICAgcmV0dXJuIHB1dChJREJEYXRhYmFzZUJhY2tlbmQ6OkFkZE9u
bHksIExlZ2FjeUFueTo6Y3JlYXRlKHRoaXMpLCBzdGF0ZSwgdmFsdWUsIHN0YXRpY19jYXN0PElE
QktleSo+KG51bGxwdHIpLCBlYyk7CisgICAgYXV0byBkZXByZWNhdGVkVmFsdWUgPSBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZShzdGF0ZS52bSgpLCB2YWx1ZSk7CisgICAgcmV0dXJuIHB1dChJREJE
YXRhYmFzZUJhY2tlbmQ6OkFkZE9ubHksIExlZ2FjeUFueTo6Y3JlYXRlKHRoaXMpLCBzdGF0ZSwg
ZGVwcmVjYXRlZFZhbHVlLCBzdGF0aWNfY2FzdDxJREJLZXkqPihudWxscHRyKSwgZWMpOwogfQog
Ci1SZWZQdHI8SURCUmVxdWVzdD4gTGVnYWN5T2JqZWN0U3RvcmU6OnB1dChKU0M6OkV4ZWNTdGF0
ZSYgc3RhdGUsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCitSZWZQdHI8SURCUmVxdWVz
dD4gTGVnYWN5T2JqZWN0U3RvcmU6OnB1dChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IEpT
Qzo6SlNWYWx1ZSYgdmFsdWUsIGNvbnN0IEpTQzo6SlNWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKICAgICBMT0coU3RvcmFnZUFQSSwgIkxlZ2FjeU9iamVjdFN0b3JlOjpwdXQiKTsK
LSAgICByZXR1cm4gcHV0KElEQkRhdGFiYXNlQmFja2VuZDo6QWRkT3JVcGRhdGUsIExlZ2FjeUFu
eTo6Y3JlYXRlKHRoaXMpLCBzdGF0ZSwgdmFsdWUsIGtleSwgZWMpOworICAgIGF1dG8gZGVwcmVj
YXRlZFZhbHVlID0gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoc3RhdGUudm0oKSwgdmFsdWUpOwor
ICAgIHJldHVybiBwdXQoSURCRGF0YWJhc2VCYWNrZW5kOjpBZGRPclVwZGF0ZSwgTGVnYWN5QW55
OjpjcmVhdGUodGhpcyksIHN0YXRlLCBkZXByZWNhdGVkVmFsdWUsIERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlKHN0YXRlLnZtKCksIGtleSksIGVjKTsKIH0KIAotUmVmUHRyPElEQlJlcXVlc3Q+IExl
Z2FjeU9iamVjdFN0b3JlOjpwdXQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUmVmUHRyPElEQlJlcXVlc3Q+
IExlZ2FjeU9iamVjdFN0b3JlOjpwdXQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBKU0M6
OkpTVmFsdWUmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBMT0coU3RvcmFnZUFQ
SSwgIkxlZ2FjeU9iamVjdFN0b3JlOjpwdXQiKTsKLSAgICByZXR1cm4gcHV0KElEQkRhdGFiYXNl
QmFja2VuZDo6QWRkT3JVcGRhdGUsIExlZ2FjeUFueTo6Y3JlYXRlKHRoaXMpLCBzdGF0ZSwgdmFs
dWUsIHN0YXRpY19jYXN0PElEQktleSo+KG51bGxwdHIpLCBlYyk7CisgICAgYXV0byBkZXByZWNh
dGVkVmFsdWUgPSBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShzdGF0ZS52bSgpLCB2YWx1ZSk7Cisg
ICAgcmV0dXJuIHB1dChJREJEYXRhYmFzZUJhY2tlbmQ6OkFkZE9yVXBkYXRlLCBMZWdhY3lBbnk6
OmNyZWF0ZSh0aGlzKSwgc3RhdGUsIGRlcHJlY2F0ZWRWYWx1ZSwgc3RhdGljX2Nhc3Q8SURCS2V5
Kj4obnVsbHB0ciksIGVjKTsKIH0KIAogUmVmUHRyPElEQlJlcXVlc3Q+IExlZ2FjeU9iamVjdFN0
b3JlOjpwdXQoSURCRGF0YWJhc2VCYWNrZW5kOjpQdXRNb2RlIHB1dE1vZGUsIFJlZlB0cjxMZWdh
Y3lBbnk+IHNvdXJjZSwgSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSYgdmFsdWUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXlWYWx1ZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9sZWdhY3kvTGVnYWN5T2JqZWN0U3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL2xlZ2FjeS9MZWdhY3lPYmplY3RTdG9yZS5oCmluZGV4IDczNTM3OWMuLmUyMDcz
YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xlZ2FjeS9M
ZWdhY3lPYmplY3RTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L2xlZ2FjeS9MZWdhY3lPYmplY3RTdG9yZS5oCkBAIC02Nyw4ICs2Nyw4IEBAIHB1YmxpYzoKICAg
ICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uKCkgeyByZXR1cm4gbV90cmFuc2Fj
dGlvbjsgfQogICAgIGJvb2wgYXV0b0luY3JlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRh
dGEuYXV0b0luY3JlbWVudDsgfQogCi0gICAgUmVmUHRyPElEQlJlcXVlc3Q+IGFkZChKU0M6OkV4
ZWNTdGF0ZSYsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgRXhjZXB0aW9uQ29kZSYpOwotICAg
IFJlZlB0cjxJREJSZXF1ZXN0PiBwdXQoSlNDOjpFeGVjU3RhdGUmLCBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBSZWZQdHI8SURCUmVxdWVzdD4gYWRkKEpT
Qzo6RXhlY1N0YXRlJiwgY29uc3QgSlNDOjpKU1ZhbHVlJiwgRXhjZXB0aW9uQ29kZSYpOworICAg
IFJlZlB0cjxJREJSZXF1ZXN0PiBwdXQoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBKU0M6OkpTVmFs
dWUmLCBFeGNlcHRpb25Db2RlJik7CiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3Io
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBSZWZQdHI8SURC
UmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSURCS2V5UmFuZ2Uq
LCBFeGNlcHRpb25Db2RlJik7CiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXks
IEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTc4LDggKzc4LDggQEAgcHVibGljOgogCiAgICAgUmVmUHRy
PElEQlJlcXVlc3Q+IGdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFJlZlB0cjxJREJSZXF1
ZXN0PiBnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIElEQktleVJhbmdlKiwgRXhjZXB0aW9u
Q29kZSYpOwotICAgIFJlZlB0cjxJREJSZXF1ZXN0PiBhZGQoSlNDOjpFeGVjU3RhdGUmLCBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXks
IEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBSZWZQdHI8SURCUmVxdWVzdD4gcHV0KEpTQzo6RXhlY1N0
YXRlJiwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7CisgICAgUmVmUHRyPElEQlJlcXVlc3Q+IGFkZChK
U0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IEpTQzo6SlNWYWx1ZSYsIGNvbnN0IEpTQzo6SlNWYWx1ZSYg
a2V5LCBFeGNlcHRpb25Db2RlJik7CisgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHB1dChKU0M6OkV4
ZWNTdGF0ZSYsIGNvbnN0IEpTQzo6SlNWYWx1ZSYsIGNvbnN0IEpTQzo6SlNWYWx1ZSYga2V5LCBF
eGNlcHRpb25Db2RlJik7CiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHB1dChJREJEYXRhYmFzZUJh
Y2tlbmQ6OlB1dE1vZGUsIFJlZlB0cjxMZWdhY3lBbnk+LCBKU0M6OkV4ZWNTdGF0ZSYsIERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlJiwgUmVmUHRyPElEQktleT4sIEV4Y2VwdGlvbkNvZGUmKTsKICAg
ICBSZWZQdHI8SURCUmVxdWVzdD4gcHV0KElEQkRhdGFiYXNlQmFja2VuZDo6UHV0TW9kZSwgUmVm
UHRyPExlZ2FjeUFueT4gc291cmNlLCBKU0M6OkV4ZWNTdGF0ZSYsIERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlJiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29k
ZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5n
VXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGls
aXRpZXMuY3BwCmluZGV4IDA4YWYwNGMuLmY5OGI3ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCkBAIC0xODUsMTQgKzE4NSwx
NCBAQCBzdGF0aWMgSlNWYWx1ZSBnZXROdGhWYWx1ZU9uS2V5UGF0aChFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgcm9vdFZhbHVlLCBjb25zdCBWZQogICAgIHJldHVybiBjdXJyZW50VmFsdWU7CiB9
CiAKLXN0YXRpYyBSZWZQdHI8SURCS2V5PiBpbnRlcm5hbENyZWF0ZUlEQktleUZyb21TY3JpcHRW
YWx1ZUFuZEtleVBhdGgoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSYgdmFsdWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKK3N0YXRpYyBSZWZQdHI8SURCS2V5
PiBpbnRlcm5hbENyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBKU0M6OkpTVmFsdWUmIHZhbHVlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgp
CiB7CiAgICAgVmVjdG9yPFN0cmluZz4ga2V5UGF0aEVsZW1lbnRzOwogICAgIElEQktleVBhdGhQ
YXJzZUVycm9yIGVycm9yOwogICAgIElEQlBhcnNlS2V5UGF0aChrZXlQYXRoLCBrZXlQYXRoRWxl
bWVudHMsIGVycm9yKTsKICAgICBBU1NFUlQoZXJyb3IgPT0gSURCS2V5UGF0aFBhcnNlRXJyb3I6
Ok5vbmUpOwogCi0gICAgSlNWYWx1ZSBqc1ZhbHVlID0gdmFsdWUuanNWYWx1ZSgpOworICAgIEpT
VmFsdWUganNWYWx1ZSA9IHZhbHVlOwogICAgIGpzVmFsdWUgPSBnZXROdGhWYWx1ZU9uS2V5UGF0
aChleGVjLCBqc1ZhbHVlLCBrZXlQYXRoRWxlbWVudHMsIGtleVBhdGhFbGVtZW50cy5zaXplKCkp
OwogICAgIGlmIChqc1ZhbHVlLmlzVW5kZWZpbmVkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpAQCAtMzAyLDcgKzMwMiwyNyBAQCBSZWZQdHI8SURCS2V5PiBtYXliZUNyZWF0ZUlEQktleUZy
b21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoRXhlY1N0YXRlJiBleGVjLCBjb25zdAogICAgIHJldHVy
biBpbnRlcm5hbENyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoJmV4ZWMsIHZh
bHVlLCBrZXlQYXRoLnN0cmluZygpKTsKIH0KIAotYm9vbCBjYW5JbmplY3RJREJLZXlJbnRvU2Ny
aXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUsIGNvbnN0IERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlJiBzY3JpcHRWYWx1ZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkKK1Jl
ZlB0cjxJREJLZXk+IG1heWJlQ3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChF
eGVjU3RhdGUmIGV4ZWMsIGNvbnN0IEpTQzo6SlNWYWx1ZSYgdmFsdWUsIGNvbnN0IElEQktleVBh
dGgmIGtleVBhdGgpCit7CisgICAgQVNTRVJUKCFrZXlQYXRoLmlzTnVsbCgpKTsKKworICAgIGlm
IChrZXlQYXRoLnR5cGUoKSA9PSBJbmRleGVkREI6OktleVBhdGhUeXBlOjpBcnJheSkgeworICAg
ICAgICBWZWN0b3I8UmVmUHRyPElEQktleT4+IHJlc3VsdDsKKyAgICAgICAgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGFycmF5ID0ga2V5UGF0aC5hcnJheSgpOworICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGFycmF5LnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICBSZWZQdHI8SURCS2V5
PiBrZXkgPSBpbnRlcm5hbENyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoJmV4
ZWMsIHZhbHVlLCBhcnJheVtpXSk7CisgICAgICAgICAgICBpZiAoIWtleSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoa2V5KTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVBcnJheShyZXN1bHQpOworICAg
IH0KKworICAgIEFTU0VSVChrZXlQYXRoLnR5cGUoKSA9PSBJbmRleGVkREI6OktleVBhdGhUeXBl
OjpTdHJpbmcpOworICAgIHJldHVybiBpbnRlcm5hbENyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1
ZUFuZEtleVBhdGgoJmV4ZWMsIHZhbHVlLCBrZXlQYXRoLnN0cmluZygpKTsKK30KKworYm9vbCBj
YW5JbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3Rh
dGUsIGNvbnN0IEpTQzo6SlNWYWx1ZSYgc2NyaXB0VmFsdWUsIGNvbnN0IElEQktleVBhdGgmIGtl
eVBhdGgpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJjYW5JbmplY3RJREJLZXlJbnRvU2NyaXB0
VmFsdWUiKTsKIApAQCAtMzEzLDcgKzMzMyw3IEBAIGJvb2wgY2FuSW5qZWN0SURCS2V5SW50b1Nj
cmlwdFZhbHVlKERPTVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0YXRlLCBjb25zdCBEZXByZWNhCiAg
ICAgcmV0dXJuIGNhbkluamVjdElEQktleUludG9TY3JpcHRWYWx1ZSgqZXhlYywgc2NyaXB0VmFs
dWUsIGtleVBhdGgpOwogfQogCi1ib29sIGNhbkluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShK
U0M6OkV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYg
c2NyaXB0VmFsdWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCitib29sIGNhbkluamVjdElE
QktleUludG9TY3JpcHRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBjb25zdCBKU0M6
OkpTVmFsdWUmIHNjcmlwdFZhbHVlLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQogewogICAg
IExPRyhTdG9yYWdlQVBJLCAiY2FuSW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlIik7CiAKQEAg
LTMyNiw3ICszNDYsNyBAQCBib29sIGNhbkluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShKU0M6
OkV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBjb25zdCBEZXByZWNhdGVkOgogICAgIGlmICgha2V5UGF0
aEVsZW1lbnRzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIGNh
bkluamVjdE50aFZhbHVlT25LZXlQYXRoKCZleGVjU3RhdGUsIHNjcmlwdFZhbHVlLmpzVmFsdWUo
KSwga2V5UGF0aEVsZW1lbnRzLCBrZXlQYXRoRWxlbWVudHMuc2l6ZSgpIC0gMSk7CisgICAgcmV0
dXJuIGNhbkluamVjdE50aFZhbHVlT25LZXlQYXRoKCZleGVjU3RhdGUsIHNjcmlwdFZhbHVlLCBr
ZXlQYXRoRWxlbWVudHMsIGtleVBhdGhFbGVtZW50cy5zaXplKCkgLSAxKTsKIH0KIAogRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUgZGVzZXJpYWxpemVJREJWYWx1ZShET01SZXF1ZXN0U3RhdGUqIHJl
cXVlc3RTdGF0ZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHBycFZhbHVlKQpA
QCAtNDAyLDE1ICs0MjIsMTUgQEAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgaWRiS2V5VG9TY3Jp
cHRWYWx1ZShET01SZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwgUGFzc1IKICAgICByZXR1cm4g
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwgaWRiS2V5VG9KU1ZhbHVlKGV4ZWMs
IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSks
IGtleS5nZXQoKSkpOwogfQogCi1SZWZQdHI8SURCS2V5PiBzY3JpcHRWYWx1ZVRvSURCS2V5KERP
TVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0YXRlLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSYgc2NyaXB0VmFsdWUpCitSZWZQdHI8SURCS2V5PiBzY3JpcHRWYWx1ZVRvSURCS2V5KERPTVJl
cXVlc3RTdGF0ZSogcmVxdWVzdFN0YXRlLCBjb25zdCBKU0M6OkpTVmFsdWUmIHNjcmlwdFZhbHVl
KQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHJlcXVlc3RTdGF0ZS0+ZXhlYygpOwotICAgIHJl
dHVybiBjcmVhdGVJREJLZXlGcm9tVmFsdWUoZXhlYywgc2NyaXB0VmFsdWUuanNWYWx1ZSgpKTsK
KyAgICByZXR1cm4gY3JlYXRlSURCS2V5RnJvbVZhbHVlKGV4ZWMsIHNjcmlwdFZhbHVlKTsKIH0K
IAotUmVmUHRyPElEQktleT4gc2NyaXB0VmFsdWVUb0lEQktleShFeGVjU3RhdGUmIGV4ZWMsIGNv
bnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBzY3JpcHRWYWx1ZSkKK1JlZlB0cjxJREJLZXk+
IHNjcmlwdFZhbHVlVG9JREJLZXkoRXhlY1N0YXRlJiBleGVjLCBjb25zdCBKU0M6OkpTVmFsdWUm
IHNjcmlwdFZhbHVlKQogewotICAgIHJldHVybiBjcmVhdGVJREJLZXlGcm9tVmFsdWUoJmV4ZWMs
IHNjcmlwdFZhbHVlLmpzVmFsdWUoKSk7CisgICAgcmV0dXJuIGNyZWF0ZUlEQktleUZyb21WYWx1
ZSgmZXhlYywgc2NyaXB0VmFsdWUpOwogfQogCiB2b2lkIGdlbmVyYXRlSW5kZXhLZXlzRm9yVmFs
dWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJREJJbmRleE1ldGFkYXRhJiBpbmRleE1ldGFkYXRh
LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgb2JqZWN0VmFsdWUsIFZlY3RvcjxJREJL
ZXlEYXRhPiYgaW5kZXhLZXlzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSURCQmluZGluZ1V0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURC
QmluZGluZ1V0aWxpdGllcy5oCmluZGV4IDQyYjdiMzkuLmRkMjU3NjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmgKQEAgLTQ5LDE3ICs0
OSwxOCBAQCBib29sIGluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShET01SZXF1ZXN0U3RhdGUq
LCBQYXNzUmVmUHRyPElEQktleT4sIERlcHJlY2F0ZQogCiBSZWZQdHI8SURCS2V5PiBjcmVhdGVJ
REJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBjb25zdCBJREJLZXlQYXRoJik7CiBSZWZQdHI8SURCS2V5
PiBtYXliZUNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoSlNDOjpFeGVjU3Rh
dGUmLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIGNvbnN0IElEQktleVBhdGgmKTsK
K1JlZlB0cjxJREJLZXk+IG1heWJlQ3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0
aChKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IEpTQzo6SlNWYWx1ZSYsIGNvbnN0IElEQktleVBhdGgm
KTsKIAotYm9vbCBjYW5JbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRl
KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBjb25zdCBJREJLZXlQYXRoJik7Ci1i
b29sIGNhbkluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgY29uc3QgSURCS2V5UGF0aCYpOworYm9vbCBjYW5J
bmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiwgY29uc3QgSlNDOjpK
U1ZhbHVlJiwgY29uc3QgSURCS2V5UGF0aCYpOworYm9vbCBjYW5JbmplY3RJREJLZXlJbnRvU2Ny
aXB0VmFsdWUoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBKU0M6OkpTVmFsdWUmLCBjb25zdCBJREJL
ZXlQYXRoJik7CiAKIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWUo
RE9NUmVxdWVzdFN0YXRlKiwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKIERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWVEYXRhKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmLCBjb25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYgdmFsdWVEYXRhKTsKIERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIoRE9NUmVxdWVz
dFN0YXRlKiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBib29sIGtleUlzRGVmaW5lZCk7CiBX
RUJDT1JFX0VYUE9SVCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZUlEQlZhbHVl
QnVmZmVyKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgYm9vbCBrZXlJ
c0RlZmluZWQpOwogRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgaWRiS2V5VG9TY3JpcHRWYWx1ZShE
T01SZXF1ZXN0U3RhdGUqLCBQYXNzUmVmUHRyPElEQktleT4pOwotUmVmUHRyPElEQktleT4gc2Ny
aXB0VmFsdWVUb0lEQktleShET01SZXF1ZXN0U3RhdGUqLCBjb25zdCBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSYpOwotUmVmUHRyPElEQktleT4gc2NyaXB0VmFsdWVUb0lEQktleShKU0M6OkV4ZWNT
dGF0ZSYsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJik7CitSZWZQdHI8SURCS2V5PiBz
Y3JpcHRWYWx1ZVRvSURCS2V5KERPTVJlcXVlc3RTdGF0ZSosIGNvbnN0IEpTQzo6SlNWYWx1ZSYp
OworUmVmUHRyPElEQktleT4gc2NyaXB0VmFsdWVUb0lEQktleShKU0M6OkV4ZWNTdGF0ZSYsIGNv
bnN0IEpTQzo6SlNWYWx1ZSYpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCBnZW5lcmF0ZUluZGV4S2V5
c0ZvclZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSURCSW5kZXhNZXRhZGF0YSYsIGNvbnN0
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBvYmplY3RWYWx1ZSwgVmVjdG9yPElEQktleURhdGE+
JiBpbmRleEtleXMpOwogCiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBpZGJLZXlEYXRhVG9TY3Jp
cHRWYWx1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgSURCS2V5RGF0YSYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9t
LmNwcAppbmRleCAwMTI4OGM2Li5kYWM0OTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcApAQCAtMzYsNiArMzYsNyBA
QAogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgi
CiAjaW5jbHVkZSAiSlNJREJJbmRleC5oIgorI2luY2x1ZGUgIkpTSURCUmVxdWVzdC5oIgogI2lu
Y2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5nLmg+CiAK
QEAgLTQzLDYgKzQ0LDY2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorc3RhdGljIEpTVmFsdWUgcHV0T3JBZGQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBi
b29sIG92ZXJ3cml0ZSkKK3sKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLnRoaXNWYWx1
ZSgpOworICAgIEpTSURCT2JqZWN0U3RvcmUqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
SURCT2JqZWN0U3RvcmUqPih0aGlzVmFsdWUpOworICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dUaGlzVHlwZUVycm9yKHN0
YXRlLCAiSURCT2JqZWN0U3RvcmUiLCAicHV0IikpOworCisgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU0lEQk9iamVjdFN0b3JlOjppbmZvKCkpOworICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisKKyAgICBzaXplX3QgYXJnc0NvdW50ID0gc3Rh
dGUuYXJndW1lbnRDb3VudCgpOworICAgIGlmIChVTkxJS0VMWShhcmdzQ291bnQgPCAxKSkKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd1ZNRXJyb3IoJnN0YXRlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKSk7CisKKyAgICBhdXRvIHZhbHVlID0gc3Rh
dGUuYXJndW1lbnQoMCk7CisgICAgaWYgKFVOTElLRUxZKHN0YXRlLmhhZEV4Y2VwdGlvbigpKSkK
KyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKKworICAgIGlmIChhcmdzQ291bnQgPT0gMSkgeworICAgICAgICBKU1ZhbHVlIHJlc3VsdDsK
KyAgICAgICAgaWYgKG92ZXJ3cml0ZSkKKyAgICAgICAgICAgIHJlc3VsdCA9IHRvSlMoJnN0YXRl
LCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC5wdXQoc3RhdGUs
IHZhbHVlLCBlYykpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzdWx0ID0gdG9KUygm
c3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLmFkZChz
dGF0ZSwgdmFsdWUsIGVjKSkpOworCisgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVj
KTsKKyAgICAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmhhZEV4Y2VwdGlvbigpKSkKKyAgICAgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0K
KworICAgIGF1dG8ga2V5ID0gc3RhdGUuYXJndW1lbnQoMSk7CisgICAgaWYgKFVOTElLRUxZKHN0
YXRlLmhhZEV4Y2VwdGlvbigpKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisKKyAg
ICBKU1ZhbHVlIHJlc3VsdDsKKyAgICBpZiAob3ZlcndyaXRlKQorICAgICAgICByZXN1bHQgPSB0
b0pTKCZzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwu
cHV0KHN0YXRlLCB2YWx1ZSwga2V5LCBlYykpKTsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9
IHRvSlMoJnN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1w
bC5hZGQoc3RhdGUsIHZhbHVlLCBrZXksIGVjKSkpOworCisgICAgc2V0RE9NRXhjZXB0aW9uKCZz
dGF0ZSwgZWMpOworICAgIGlmIChVTkxJS0VMWShzdGF0ZS5oYWRFeGNlcHRpb24oKSkpCisgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworSlNW
YWx1ZSBKU0lEQk9iamVjdFN0b3JlOjpwdXRSZWNvcmQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQor
eworICAgIHJldHVybiBwdXRPckFkZChzdGF0ZSwgdHJ1ZSk7Cit9CisKK0pTVmFsdWUgSlNJREJP
YmplY3RTdG9yZTo6YWRkKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gcHV0
T3JBZGQoc3RhdGUsIGZhbHNlKTsKK30KKwogSlNWYWx1ZSBKU0lEQk9iamVjdFN0b3JlOjpjcmVh
dGVJbmRleChFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS5sZXhpY2FsR2xvYmFs
T2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Cg==
</data>
<flag name="review"
          id="289594"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264501</attachid>
            <date>2015-10-31 20:47:00 -0700</date>
            <delta_ts>2015-10-31 21:35:41 -0700</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>36805</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyYjEzM2E2Li5hZjEyNDNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTcgQEAKIDIwMTUtMTAt
MzEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCisgICAgICAgIElEQjogRGF0
ZSBvYmplY3RzIGRvbid0IHdvcmsgYXMga2V5cyBvciB2YWx1ZXMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3NDMKKworICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9k
YXRlLWJhc2ljLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVk
ZGIvbW9kZXJuL2RhdGUtYmFzaWMuaHRtbDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL2dldC1rZXlyYW5nZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL2dldC1rZXlyYW5nZS5odG1sOgorCisyMDE1LTEwLTMxICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKwogICAgICAgICBzdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vaWRiZGF0YWJhc2UtZGVsZXRlb2JqZWN0c3RvcmUtZmFpbHVyZXMuaHRtbCBpcyBm
bGFreS4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MDczNQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4v
ZGF0ZS1iYXNpYy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vZGF0ZS1iYXNpYy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMWI3ZWIwMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vZGVybi9kYXRlLWJhc2ljLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE3IEBA
CitBTEVSVDogSW5pdGlhbCB1cGdyYWRlIG5lZWRlZDogT2xkIHZlcnNpb24gLSAwIE5ldyB2ZXJz
aW9uIC0gMQorQUxFUlQ6IEluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9u
IGNvbXBsZXRlCitBTEVSVDogU3VjY2VzcyBnZXR0aW5nIGtleSAnRnJpIE5vdiAwNCAxOTU1IDE3
OjAwOjAwIEdNVC0wNzAwIChQRFQpJyBvZiB0eXBlIG9iamVjdCwgcmVzdWx0IGlzICdGbHV4IGNh
cGFjaXRvcicgb2YgdHlwZSBzdHJpbmcKK0FMRVJUOiBLZXkgaXMgYSBEYXRlIG9iamVjdCwgYnR3
CitBTEVSVDogU3VjY2VzcyBnZXR0aW5nIGtleSAnU2F0IE5vdiAxMiAxOTU1IDEwOjAwOjAwIEdN
VC0wODAwIChQU1QpJyBvZiB0eXBlIG9iamVjdCwgcmVzdWx0IGlzICdGaXNoIHVuZGVyIHRoZSBz
ZWEnIG9mIHR5cGUgc3RyaW5nCitBTEVSVDogS2V5IGlzIGEgRGF0ZSBvYmplY3QsIGJ0dworQUxF
UlQ6IFN1Y2Nlc3MgZ2V0dGluZyBrZXkgJ1dlZCBPY3QgMjEgMjAxNSAwOTowMDowMCBHTVQtMDcw
MCAoUERUKScgb2YgdHlwZSBvYmplY3QsIHJlc3VsdCBpcyAnSG92ZXJib2FyZHMnIG9mIHR5cGUg
c3RyaW5nCitBTEVSVDogS2V5IGlzIGEgRGF0ZSBvYmplY3QsIGJ0dworQUxFUlQ6IFN1Y2Nlc3Mg
Z2V0dGluZyBrZXkgJ2EnIG9mIHR5cGUgc3RyaW5nLCByZXN1bHQgaXMgJ0ZyaSBOb3YgMDQgMTk1
NSAxNzowMDowMCBHTVQtMDcwMCAoUERUKScgb2YgdHlwZSBvYmplY3QKK0FMRVJUOiBSZXN1bHQg
aXMgYSBEYXRlIG9iamVjdCwgYnR3CitBTEVSVDogU3VjY2VzcyBnZXR0aW5nIGtleSAnYicgb2Yg
dHlwZSBzdHJpbmcsIHJlc3VsdCBpcyAnU2F0IE5vdiAxMiAxOTU1IDEwOjAwOjAwIEdNVC0wODAw
IChQU1QpJyBvZiB0eXBlIG9iamVjdAorQUxFUlQ6IFJlc3VsdCBpcyBhIERhdGUgb2JqZWN0LCBi
dHcKK0FMRVJUOiBTdWNjZXNzIGdldHRpbmcga2V5ICdjJyBvZiB0eXBlIHN0cmluZywgcmVzdWx0
IGlzICdXZWQgT2N0IDIxIDIwMTUgMDk6MDA6MDAgR01ULTA3MDAgKFBEVCknIG9mIHR5cGUgb2Jq
ZWN0CitBTEVSVDogUmVzdWx0IGlzIGEgRGF0ZSBvYmplY3QsIGJ0dworQUxFUlQ6IHJlYWRvbmx5
IHRyYW5zYWN0aW9uIGNvbXBsZXRlCitBTEVSVDogRG9uZQorVGhpcyB0ZXN0cyB1c2luZyBEYXRl
IG9iamVjdHMgYXMga2V5cyBhbmQgdmFsdWVzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW9kZXJuL2RhdGUtYmFzaWMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vZGVybi9kYXRlLWJhc2ljLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uZjU4OTM0OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9kYXRlLWJhc2ljLmh0bWwKQEAgLTAsMCArMSwxMDAgQEAK
K1RoaXMgdGVzdHMgdXNpbmcgRGF0ZSBvYmplY3RzIGFzIGtleXMgYW5kIHZhbHVlcy4KKzxzY3Jp
cHQ+CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworfQorCitmdW5jdGlvbiBkb25l
KCkKK3sKKyAgICBhbGVydCgiRG9uZSIpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CisKK3ZhciBjcmVhdGVSZXF1ZXN0ID0g
d2luZG93LmluZGV4ZWREQi5vcGVuKCJEYXRlQmFzaWNEYXRhYmFzZSIsIDEpOwordmFyIGRhdGFi
YXNlOworCit2YXIgZGF0ZTEgPSBuZXcgRGF0ZSgiMTk1NS0xMS0wNVQwMDowMDowMCIpOwordmFy
IGRhdGUyID0gbmV3IERhdGUoIjE5NTUtMTEtMTJUMTg6MDA6MDAiKTsKK3ZhciBkYXRlMyA9IG5l
dyBEYXRlKCIyMDE1LTEwLTIxVDE2OjAwOjAwIik7CisgICAgCitjcmVhdGVSZXF1ZXN0Lm9udXBn
cmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgYWxlcnQoIkluaXRpYWwgdXBncmFk
ZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gIiArIGV2ZW50Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJz
aW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNpb24pOworCisgICAgdmFyIHZlcnNpb25UcmFuc2FjdGlv
biA9IGNyZWF0ZVJlcXVlc3QudHJhbnNhY3Rpb247CisgICAgZGF0YWJhc2UgPSBldmVudC50YXJn
ZXQucmVzdWx0OworICAgIHZhciBvYmplY3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0
b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKKworICAgIG9iamVjdFN0b3JlLnB1dCgiRmx1eCBjYXBh
Y2l0b3IiLCBkYXRlMSk7CisgICAgb2JqZWN0U3RvcmUucHV0KCJGaXNoIHVuZGVyIHRoZSBzZWEi
LCBkYXRlMik7CisgICAgb2JqZWN0U3RvcmUucHV0KCJIb3ZlcmJvYXJkcyIsIGRhdGUzKTsKKyAg
ICAKKyAgICBvYmplY3RTdG9yZS5wdXQoZGF0ZTEsICJhIik7CisgICAgb2JqZWN0U3RvcmUucHV0
KGRhdGUyLCAiYiIpOworICAgIG9iamVjdFN0b3JlLnB1dChkYXRlMywgImMiKTsKKyAgICAKKyAg
ICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAg
IGFsZXJ0KCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVj
dGVkIGFib3J0ZWQiKTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKworICAgIHZlcnNpb25UcmFu
c2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgYWxlcnQoIklu
aXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRlIik7CisgICAg
ICAgIGNvbnRpbnVlVGVzdDEoKTsKKyAgICB9CisKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25l
cnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGFsZXJ0KCJJbml0aWFsIHVwZ3JhZGUg
dmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKKyAg
ICAgICAgZG9uZSgpOworICAgIH0KK30KKwordmFyIG9iamVjdFN0b3JlOworCitmdW5jdGlvbiB0
ZXN0R2V0KGtleSkgeworICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0KGtleSk7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpCisgICAgeworICAgICAgICBhbGVydCgi
U3VjY2VzcyBnZXR0aW5nIGtleSAnIiArIGtleSArICInIG9mIHR5cGUgIiArIHR5cGVvZihrZXkp
ICsgIiwgcmVzdWx0IGlzICciICsgcmVxdWVzdC5yZXN1bHQgKyAiJyBvZiB0eXBlICIgKyB0eXBl
b2YocmVxdWVzdC5yZXN1bHQpKTsKKyAgICAgICAgaWYgKGtleSBpbnN0YW5jZW9mIERhdGUpCisg
ICAgICAgICAgICBhbGVydCgiS2V5IGlzIGEgRGF0ZSBvYmplY3QsIGJ0dyIpOworICAgICAgICBp
ZiAocmVxdWVzdC5yZXN1bHQgaW5zdGFuY2VvZiBEYXRlKQorICAgICAgICAgICAgYWxlcnQoIlJl
c3VsdCBpcyBhIERhdGUgb2JqZWN0LCBidHciKTsKKyAgICB9CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgYWxlcnQoIkV4cGVjdGVkIGVycm9yIGdldHRp
bmcga2V5ICciICsga2V5ICsgIiciKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNvbnRpbnVlVGVz
dDEoKQoreworICAgIHZhciB0cmFuc2FjdGlvbiA9IGRhdGFiYXNlLnRyYW5zYWN0aW9uKCJUZXN0
T2JqZWN0U3RvcmUiLCAicmVhZG9ubHkiKTsKKyAgICBvYmplY3RTdG9yZSA9IHRyYW5zYWN0aW9u
Lm9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKKyAgICAKKyAgICB0ZXN0R2V0KGRhdGUx
KTsKKyAgICB0ZXN0R2V0KGRhdGUyKTsKKyAgICB0ZXN0R2V0KGRhdGUzKTsKKyAgICB0ZXN0R2V0
KCJhIik7CisgICAgdGVzdEdldCgiYiIpOworICAgIHRlc3RHZXQoImMiKTsKKyAgICAKKyAgICB0
cmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgYWxlcnQoInJl
YWRvbmx5IHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnQiICsgZXZlbnQpOworICAgICAgICBk
b25lKCk7CisgICAgfQorCisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2
ZW50KSB7CisgICAgICAgIGFsZXJ0KCJyZWFkb25seSB0cmFuc2FjdGlvbiBjb21wbGV0ZSIpOwor
ICAgICAgICBkb25lKCk7CisgICAgfQorCisgICAgdHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0
aW9uKGV2ZW50KSB7CisgICAgICAgIGFsZXJ0KCJyZWFkb25seSB0cmFuc2FjdGlvbiB1bmV4cGVj
dGVkIGVycm9yIiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KK30KKworPC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZ2V0
LWtleXJhbmdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
ZGVybi9nZXQta2V5cmFuZ2UtZXhwZWN0ZWQudHh0CmluZGV4IGMxMTQxODAuLjdhNDdmNzYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9nZXQta2V5cmFu
Z2UtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVy
bi9nZXQta2V5cmFuZ2UtZXhwZWN0ZWQudHh0CkBAIC03NywxMSArNzcsMTEgQEAgQUxFUlQ6IFJl
c3VsdCBpcyB1bmRlZmluZWQKIEFMRVJUOiBTdWNjZXNzIGdldHRpbmcga2V5UmFuZ2UgW0luZmlu
aXR5IChDbG9zZWQpLCBhIChDbG9zZWQpXQogQUxFUlQ6IFJlc3VsdCBpcyBQb3NJbmYKIEFMRVJU
OiBTdWNjZXNzIGdldHRpbmcga2V5UmFuZ2UgW0luZmluaXR5IChPcGVuKSwgYSAoQ2xvc2VkKV0K
LUFMRVJUOiBSZXN1bHQgaXMgQQorQUxFUlQ6IFJlc3VsdCBpcyBGbHV4IGNhcGFjaXRvcgogQUxF
UlQ6IFN1Y2Nlc3MgZ2V0dGluZyBrZXlSYW5nZSBbSW5maW5pdHkgKENsb3NlZCksIGEgKE9wZW4p
XQogQUxFUlQ6IFJlc3VsdCBpcyBQb3NJbmYKIEFMRVJUOiBTdWNjZXNzIGdldHRpbmcga2V5UmFu
Z2UgW0luZmluaXR5IChPcGVuKSwgYSAoT3BlbildCi1BTEVSVDogUmVzdWx0IGlzIEEKK0FMRVJU
OiBSZXN1bHQgaXMgRmx1eCBjYXBhY2l0b3IKIEFMRVJUOiBTdWNjZXNzIGdldHRpbmcga2V5UmFu
Z2UgW0FTIChDbG9zZWQpLCBhIChDbG9zZWQpXQogQUxFUlQ6IFJlc3VsdCBpcyBBUwogQUxFUlQ6
IFN1Y2Nlc3MgZ2V0dGluZyBrZXlSYW5nZSBbQVMgKE9wZW4pLCBhIChDbG9zZWQpXQpAQCAtOTMs
MTEgKzkzLDM1IEBAIEFMRVJUOiBSZXN1bHQgaXMgQXMKIEFMRVJUOiBTdWNjZXNzIGdldHRpbmcg
a2V5UmFuZ2UgW0luZmluaXR5IChDbG9zZWQpLCAgKENsb3NlZCldCiBBTEVSVDogUmVzdWx0IGlz
IFBvc0luZgogQUxFUlQ6IFN1Y2Nlc3MgZ2V0dGluZyBrZXlSYW5nZSBbSW5maW5pdHkgKE9wZW4p
LCAgKENsb3NlZCldCi1BTEVSVDogUmVzdWx0IGlzIEEKK0FMRVJUOiBSZXN1bHQgaXMgRmx1eCBj
YXBhY2l0b3IKIEFMRVJUOiBTdWNjZXNzIGdldHRpbmcga2V5UmFuZ2UgW0luZmluaXR5IChDbG9z
ZWQpLCAgKE9wZW4pXQogQUxFUlQ6IFJlc3VsdCBpcyBQb3NJbmYKIEFMRVJUOiBTdWNjZXNzIGdl
dHRpbmcga2V5UmFuZ2UgW0luZmluaXR5IChPcGVuKSwgIChPcGVuKV0KLUFMRVJUOiBSZXN1bHQg
aXMgQQorQUxFUlQ6IFJlc3VsdCBpcyBGbHV4IGNhcGFjaXRvcgorQUxFUlQ6IFN1Y2Nlc3MgZ2V0
dGluZyBrZXlSYW5nZSBbSW5maW5pdHkgKENsb3NlZCksIGEgKENsb3NlZCldCitBTEVSVDogUmVz
dWx0IGlzIFBvc0luZgorQUxFUlQ6IFN1Y2Nlc3MgZ2V0dGluZyBrZXlSYW5nZSBbSW5maW5pdHkg
KE9wZW4pLCBhIChDbG9zZWQpXQorQUxFUlQ6IFJlc3VsdCBpcyBGbHV4IGNhcGFjaXRvcgorQUxF
UlQ6IFN1Y2Nlc3MgZ2V0dGluZyBrZXlSYW5nZSBbSW5maW5pdHkgKENsb3NlZCksIGEgKE9wZW4p
XQorQUxFUlQ6IFJlc3VsdCBpcyBQb3NJbmYKK0FMRVJUOiBTdWNjZXNzIGdldHRpbmcga2V5UmFu
Z2UgW0luZmluaXR5IChPcGVuKSwgYSAoT3BlbildCitBTEVSVDogUmVzdWx0IGlzIEZsdXggY2Fw
YWNpdG9yCitBTEVSVDogU3VjY2VzcyBnZXR0aW5nIGtleVJhbmdlIFtJbmZpbml0eSAoQ2xvc2Vk
KSwgYSAoQ2xvc2VkKV0KK0FMRVJUOiBSZXN1bHQgaXMgUG9zSW5mCitBTEVSVDogU3VjY2VzcyBn
ZXR0aW5nIGtleVJhbmdlIFtJbmZpbml0eSAoT3BlbiksIGEgKENsb3NlZCldCitBTEVSVDogUmVz
dWx0IGlzIEZsdXggY2FwYWNpdG9yCitBTEVSVDogU3VjY2VzcyBnZXR0aW5nIGtleVJhbmdlIFtJ
bmZpbml0eSAoQ2xvc2VkKSwgYSAoT3BlbildCitBTEVSVDogUmVzdWx0IGlzIFBvc0luZgorQUxF
UlQ6IFN1Y2Nlc3MgZ2V0dGluZyBrZXlSYW5nZSBbSW5maW5pdHkgKE9wZW4pLCBhIChPcGVuKV0K
K0FMRVJUOiBSZXN1bHQgaXMgRmx1eCBjYXBhY2l0b3IKK0FMRVJUOiBTdWNjZXNzIGdldHRpbmcg
a2V5UmFuZ2UgW0ZyaSBOb3YgMDQgMTk1NSAxNzowMDowMCBHTVQtMDcwMCAoUERUKSAoQ2xvc2Vk
KSwgV2VkIE9jdCAyMSAyMDE1IDA5OjAwOjAwIEdNVC0wNzAwIChQRFQpIChDbG9zZWQpXQorQUxF
UlQ6IFJlc3VsdCBpcyBGbHV4IGNhcGFjaXRvcgorQUxFUlQ6IFN1Y2Nlc3MgZ2V0dGluZyBrZXlS
YW5nZSBbRnJpIE5vdiAwNCAxOTU1IDE3OjAwOjAwIEdNVC0wNzAwIChQRFQpIChPcGVuKSwgV2Vk
IE9jdCAyMSAyMDE1IDA5OjAwOjAwIEdNVC0wNzAwIChQRFQpIChDbG9zZWQpXQorQUxFUlQ6IFJl
c3VsdCBpcyBGaXNoIHVuZGVyIHRoZSBzZWEKK0FMRVJUOiBTdWNjZXNzIGdldHRpbmcga2V5UmFu
Z2UgW0ZyaSBOb3YgMDQgMTk1NSAxNzowMDowMCBHTVQtMDcwMCAoUERUKSAoQ2xvc2VkKSwgV2Vk
IE9jdCAyMSAyMDE1IDA5OjAwOjAwIEdNVC0wNzAwIChQRFQpIChPcGVuKV0KK0FMRVJUOiBSZXN1
bHQgaXMgRmx1eCBjYXBhY2l0b3IKK0FMRVJUOiBTdWNjZXNzIGdldHRpbmcga2V5UmFuZ2UgW0Zy
aSBOb3YgMDQgMTk1NSAxNzowMDowMCBHTVQtMDcwMCAoUERUKSAoT3BlbiksIFdlZCBPY3QgMjEg
MjAxNSAwOTowMDowMCBHTVQtMDcwMCAoUERUKSAoT3BlbildCitBTEVSVDogUmVzdWx0IGlzIEZp
c2ggdW5kZXIgdGhlIHNlYQogQUxFUlQ6IHJlYWRvbmx5IHRyYW5zYWN0aW9uIGNvbXBsZXRlCiBB
TEVSVDogRG9uZQogVGhpcyB0ZXN0IGV4ZXJjaXNlcyBJREJPYmplY3RTdG9yZS5nZXQoKSB3aXRo
IGFuIElEQktleVJhbmdlIGFzIHRoZSBwYXJhbWV0ZXIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZ2V0LWtleXJhbmdlLmh0bWwgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZ2V0LWtleXJhbmdlLmh0bWwKaW5kZXggZmVmOWY3
OS4uNDI2MGZhOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9k
ZXJuL2dldC1rZXlyYW5nZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vZGVybi9nZXQta2V5cmFuZ2UuaHRtbApAQCAtMTYsMTIgKzE2LDIxIEBAIGZ1bmN0aW9uIGRv
bmUoKQogdmFyIGNyZWF0ZVJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIkdldEtleVJh
bmdlRGF0YWJhc2UiLCAxKTsKIHZhciBkYXRhYmFzZTsKIAordmFyIGRhdGUxID0gbmV3IERhdGUo
IjE5NTUtMTEtMDVUMDA6MDA6MDAiKTsKK3ZhciBkYXRlMiA9IG5ldyBEYXRlKCIxOTU1LTExLTEy
VDE4OjAwOjAwIik7Cit2YXIgZGF0ZTMgPSBuZXcgRGF0ZSgiMjAxNS0xMC0yMVQxNjowMDowMCIp
OworICAgIAogY3JlYXRlUmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkg
ewogICAgIGFsZXJ0KCJJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtICIgKyBl
dmVudC5vbGRWZXJzaW9uICsgIiBOZXcgdmVyc2lvbiAtICIgKyBldmVudC5uZXdWZXJzaW9uKTsK
IAogICAgIHZhciB2ZXJzaW9uVHJhbnNhY3Rpb24gPSBjcmVhdGVSZXF1ZXN0LnRyYW5zYWN0aW9u
OwogICAgIGRhdGFiYXNlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKICAgICB2YXIgb2JqZWN0U3Rv
cmUgPSBkYXRhYmFzZS5jcmVhdGVPYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7CisKKyAg
ICBvYmplY3RTdG9yZS5wdXQoIkZsdXggY2FwYWNpdG9yIiwgZGF0ZTEpOworICAgIG9iamVjdFN0
b3JlLnB1dCgiRmlzaCB1bmRlciB0aGUgc2VhIiwgZGF0ZTIpOworICAgIG9iamVjdFN0b3JlLnB1
dCgiSG92ZXJib2FyZHMiLCBkYXRlMyk7CisKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsg
KytpKQogICAgICAgICBvYmplY3RTdG9yZS5wdXQoIlwiIiArIGkgKyAiXCIiLCBpKTsKIApAQCAt
MTI3LDYgKzEzNiwyMSBAQCBmdW5jdGlvbiBjb250aW51ZVRlc3QxKCkKICAgICB0ZXN0R2V0KElE
QktleVJhbmdlLmJvdW5kKEluZmluaXR5LCBbXSwgdHJ1ZSkpOwogICAgIHRlc3RHZXQoSURCS2V5
UmFuZ2UuYm91bmQoSW5maW5pdHksIFtdLCBmYWxzZSwgdHJ1ZSkpOwogICAgIHRlc3RHZXQoSURC
S2V5UmFuZ2UuYm91bmQoSW5maW5pdHksIFtdLCB0cnVlLCB0cnVlKSk7CisKKyAgICB0ZXN0R2V0
KElEQktleVJhbmdlLmJvdW5kKEluZmluaXR5LCAiYSIpKTsKKyAgICB0ZXN0R2V0KElEQktleVJh
bmdlLmJvdW5kKEluZmluaXR5LCAiYSIsIHRydWUpKTsKKyAgICB0ZXN0R2V0KElEQktleVJhbmdl
LmJvdW5kKEluZmluaXR5LCAiYSIsIGZhbHNlLCB0cnVlKSk7CisgICAgdGVzdEdldChJREJLZXlS
YW5nZS5ib3VuZChJbmZpbml0eSwgImEiLCB0cnVlLCB0cnVlKSk7CisKKyAgICB0ZXN0R2V0KElE
QktleVJhbmdlLmJvdW5kKEluZmluaXR5LCAiYSIpKTsKKyAgICB0ZXN0R2V0KElEQktleVJhbmdl
LmJvdW5kKEluZmluaXR5LCAiYSIsIHRydWUpKTsKKyAgICB0ZXN0R2V0KElEQktleVJhbmdlLmJv
dW5kKEluZmluaXR5LCAiYSIsIGZhbHNlLCB0cnVlKSk7CisgICAgdGVzdEdldChJREJLZXlSYW5n
ZS5ib3VuZChJbmZpbml0eSwgImEiLCB0cnVlLCB0cnVlKSk7CisKKyAgICB0ZXN0R2V0KElEQktl
eVJhbmdlLmJvdW5kKGRhdGUxLCBkYXRlMykpOworICAgIHRlc3RHZXQoSURCS2V5UmFuZ2UuYm91
bmQoZGF0ZTEsIGRhdGUzLCB0cnVlKSk7CisgICAgdGVzdEdldChJREJLZXlSYW5nZS5ib3VuZChk
YXRlMSwgZGF0ZTMsIGZhbHNlLCB0cnVlKSk7CisgICAgdGVzdEdldChJREJLZXlSYW5nZS5ib3Vu
ZChkYXRlMSwgZGF0ZTMsIHRydWUsIHRydWUpKTsKICAgICAKICAgICB0cmFuc2FjdGlvbi5vbmFi
b3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAgYWxlcnQoInJlYWRvbmx5IHRyYW5zYWN0
aW9uIHVuZXhwZWN0ZWQgYWJvcnQiICsgZXZlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDI2YmEzZWUuLjYx
NmNmN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw0OCBAQAogMjAxNS0xMC0zMSAgQnJhZHkgRWlk
c29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKKyAgICAgICAgSURCOiBEYXRlIG9iamVjdHMgZG9u
J3Qgd29yayBhcyBrZXlzIG9yIHZhbHVlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MDc0MworCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgorCisgICAgICAgIFRlc3Q6IHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9kYXRlLWJhc2lj
Lmh0bWwKKworICAgICAgICBUaGUgY29tYmluYXRpb24gb2YgdGhlIGF1dG9nZW5lcmF0ZWQgYmlu
ZGluZ3Mgd2l0aCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB3YXMKKyAgICAgICAgbG9zaW5nIHRo
ZSBmaWRlbGl0eSBvZiAiRGF0ZSIgb2JqZWN0cyBiZWluZyBEYXRlcywgYW5kIG5vdCBqdXN0IG5v
cm1hbCBPYmplY3RzLgorICAgICAgICAKKyAgICAgICAgVGhpcyB3YXMgYnJlYWtpbmcgdGhlaXIg
dXNhZ2UgYXMgSURCS2V5cy4KKyAgICAgICAgCisgICAgICAgIEN1c3RvbSBiaW5kaW5nICsgcmV3
b3JraW5nIHRoZSBJREJPYmplY3RTdG9yZSBJRExzIHRvIHVzZSBKU1ZhbHVlIGluc3RlYWQgb2Yg
U2NyaXB0VmFsdWUKKyAgICAgICAgZml4ZXMgdGhpcyBoYW5kaWx5LgorICAgICAgICAKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmlkbDoKKyAgICAgICAgCisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQk9iamVjdFN0b3JlSW1wbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJREJDbGllbnQ6OklEQk9iamVjdFN0b3JlOjphZGQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ2xpZW50OjpJREJPYmplY3RTdG9yZTo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkNsaWVudDo6SURCT2JqZWN0U3RvcmU6OnB1dE9yQWRkKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvSURCT2JqZWN0U3RvcmVJbXBsLmg6CisgICAgICAgIAorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL2xlZ2FjeS9MZWdhY3lPYmplY3RTdG9yZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lPYmplY3RTdG9yZTo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6Okxl
Z2FjeU9iamVjdFN0b3JlOjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2xlZ2Fj
eS9MZWdhY3lPYmplY3RTdG9yZS5oOgorICAgICAgICAKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9J
REJCaW5kaW5nVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmludGVybmFsQ3JlYXRl
SURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjptYXli
ZUNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6Y2FuSW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OnNj
cmlwdFZhbHVlVG9JREJLZXkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGls
aXRpZXMuaDoKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6cHV0T3JBZGQpOgorICAgICAgICAoV2ViQ29yZTo6SlNJ
REJPYmplY3RTdG9yZTo6cHV0UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSURCT2JqZWN0
U3RvcmU6OmFkZCk6CisKKzIwMTUtMTAtMzEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCiAgICAgICAgIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJkYXRhYmFzZS1kZWxl
dGVvYmplY3RzdG9yZS1mYWlsdXJlcy5odG1sIGlzIGZsYWt5LgogICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzM1CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oCmluZGV4IGI1N2YwYzYuLjgx
MTNlZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9i
amVjdFN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmUuaApAQCAtNDEsNiArNDEsNyBAQCBjbGFzcyBTY3JpcHRWYWx1ZTsKIAogbmFtZXNw
YWNlIEpTQyB7CiBjbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBKU1ZhbHVlOwogfQogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC02Niw4ICs2Nyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFJlZlB0
cjxJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24oKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGF1
dG9JbmNyZW1lbnQoKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxJREJSZXF1ZXN0
PiBhZGQoSlNDOjpFeGVjU3RhdGUmLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIEV4Y2VwdGlv
bkNvZGUmKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4gcHV0KEpTQzo6RXhl
Y1N0YXRlJiwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBFeGNlcHRpb25Db2RlJikgPSAwOwor
ICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IGFkZChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6
SlNWYWx1ZSwgRXhjZXB0aW9uQ29kZSYpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxJREJSZXF1
ZXN0PiBwdXQoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUsIEV4Y2VwdGlvbkNvZGUmKSA9
IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxJ
REJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBJREJLZXlSYW5n
ZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4g
b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpID0gMDsKQEAgLTc2LDggKzc3LDggQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4gZ2V0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25D
b2RlJikgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IGdldChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgSURCS2V5UmFuZ2UqLCBFeGNlcHRpb25Db2RlJikgPSAwOwotICAgIHZp
cnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IGFkZChKU0M6OkV4ZWNTdGF0ZSYsIERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlJiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0
aW9uQ29kZSYpID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxJREJSZXF1ZXN0PiBwdXQoSlNDOjpF
eGVjU3RhdGUmLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIGNvbnN0IERlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8
SURCUmVxdWVzdD4gYWRkKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCBKU0M6OkpTVmFs
dWUga2V5LCBFeGNlcHRpb25Db2RlJikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVl
c3Q+IHB1dChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSwgSlNDOjpKU1ZhbHVlIGtleSwg
RXhjZXB0aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxJREJSZXF1ZXN0PiBkZWxl
dGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSURCS2V5UmFuZ2UqLCBFeGNlcHRp
b25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IGRlbGV0ZUZ1bmN0
aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSYga2V5LCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVl
c3Q+IGNsZWFyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJikgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3Rv
cmUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUu
aWRsCmluZGV4IGFmMDIwZGYuLjEzY2NjMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5pZGwKQEAgLTM0LDggKzM0LDggQEAKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgSURCVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb247CiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gYXV0b0luY3JlbWVudDsKIAotICAgIFtDYWxsV2l0aD1T
Y3JpcHRTdGF0ZSwgUmFpc2VzRXhjZXB0aW9uXSBJREJSZXF1ZXN0IHB1dChhbnkgdmFsdWUsIG9w
dGlvbmFsIGFueSBrZXkpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgUmFpc2VzRXhjZXB0
aW9uXSBJREJSZXF1ZXN0IGFkZChhbnkgdmFsdWUsIG9wdGlvbmFsIGFueSBrZXkpOworICAgIFtD
YWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBDdXN0b20sIEltcGxlbWVudGVkQXM9cHV0
RnVuY3Rpb24sIFJhaXNlc0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBwdXQoYW55IHZhbHVlLCBvcHRp
b25hbCBhbnkga2V5KTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgQ3Vz
dG9tLCBSYWlzZXNFeGNlcHRpb25dIElEQlJlcXVlc3QgYWRkKGFueSB2YWx1ZSwgb3B0aW9uYWwg
YW55IGtleSk7CiAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEltcGxlbWVu
dGVkQXM9ZGVsZXRlRnVuY3Rpb24sIFJhaXNlc0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBkZWxldGUo
SURCS2V5UmFuZ2U/IGtleVJhbmdlKTsKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwgSW1wbGVtZW50ZWRBcz1kZWxldGVGdW5jdGlvbiwgUmFpc2VzRXhjZXB0aW9uXSBJREJS
ZXF1ZXN0IGRlbGV0ZShhbnkga2V5KTsKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwgUmFpc2VzRXhjZXB0aW9uXSBJREJSZXF1ZXN0IGdldChJREJLZXlSYW5nZT8ga2V5KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJP
YmplY3RTdG9yZUltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xp
ZW50L0lEQk9iamVjdFN0b3JlSW1wbC5jcHAKaW5kZXggNjZmOTllYS4uMDBlM2JhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQk9iamVjdFN0
b3JlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50
L0lEQk9iamVjdFN0b3JlSW1wbC5jcHAKQEAgLTg3LDE2ICs4Nyw2IEBAIGJvb2wgSURCT2JqZWN0
U3RvcmU6OmF1dG9JbmNyZW1lbnQoKSBjb25zdAogICAgIHJldHVybiBtX2luZm8uYXV0b0luY3Jl
bWVudCgpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6
OmFkZChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgcmV0dXJuIHB1dE9yQWRkKHN0YXRlLCB2YWx1
ZSwgbnVsbHB0ciwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGU6Ok5vT3Zlcndy
aXRlLCBlYyk7Ci19Ci0KLVJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9y
ZTo6cHV0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZh
bHVlLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICByZXR1cm4gcHV0T3JBZGQoc3RhdGUsIHZh
bHVlLCBudWxscHRyLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZTo6T3Zlcndy
aXRlLCBlYyk7Ci19Ci0KIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9y
ZTo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYpCiB7
CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTE4MywxOSArMTczLDI5IEBA
IFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Z2V0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiAgICAgcmV0dXJuIFdURjo6bW92ZShyZXF1ZXN0KTsK
IH0KIAotUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjphZGQoSlND
OjpFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlLCBj
b25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKK1Jl
ZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6YWRkKEpTQzo6RXhlY1N0
YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAg
ICByZXR1cm4gcHV0T3JBZGQoc3RhdGUsIHZhbHVlLCBudWxscHRyLCBJbmRleGVkREI6Ok9iamVj
dFN0b3JlT3ZlcndyaXRlTW9kZTo6Tm9PdmVyd3JpdGUsIGVjKTsKK30KKworUmVmUHRyPFdlYkNv
cmU6OklEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjphZGQoSlNDOjpFeGVjU3RhdGUmIGV4ZWNT
dGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBKU0M6OkpTVmFsdWUga2V5LCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKICAgICBhdXRvIGlkYktleSA9IHNjcmlwdFZhbHVlVG9JREJLZXkoZXhlY1N0YXRl
LCBrZXkpOwogICAgIHJldHVybiBwdXRPckFkZChleGVjU3RhdGUsIHZhbHVlLCBpZGJLZXksIElu
ZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlOjpOb092ZXJ3cml0ZSwgZWMpOwogfQog
Ci1SZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OnB1dChKU0M6OkV4
ZWNTdGF0ZSYgZXhlY1N0YXRlLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQorUmVmUHRy
PFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXQoSlNDOjpFeGVjU3RhdGUm
IGV4ZWNTdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBKU0M6OkpTVmFsdWUga2V5LCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKICAgICBhdXRvIGlkYktleSA9IHNjcmlwdFZhbHVlVG9JREJLZXkoZXhl
Y1N0YXRlLCBrZXkpOwogICAgIHJldHVybiBwdXRPckFkZChleGVjU3RhdGUsIHZhbHVlLCBpZGJL
ZXksIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlOjpPdmVyd3JpdGUsIGVjKTsK
IH0KIAotUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXRPckFk
ZChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSwg
UmVmUHRyPElEQktleT4ga2V5LCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSBv
dmVyd3JpdGVNb2RlLCBFeGNlcHRpb25Db2RlJiBlYykKK1JlZlB0cjxXZWJDb3JlOjpJREJSZXF1
ZXN0PiBJREJPYmplY3RTdG9yZTo6cHV0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1Zh
bHVlIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICByZXR1cm4gcHV0T3JBZGQoc3Rh
dGUsIHZhbHVlLCBudWxscHRyLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZTo6
T3ZlcndyaXRlLCBlYyk7Cit9CisKK1JlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJPYmpl
Y3RTdG9yZTo6cHV0T3JBZGQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFs
dWUsIFJlZlB0cjxJREJLZXk+IGtleSwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1v
ZGUgb3ZlcndyaXRlTW9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgTE9HKEluZGV4ZWRE
QiwgIklEQk9iamVjdFN0b3JlOjpwdXRPckFkZCIpOwogCkBAIC0yMTQsNyArMjE0LDcgQEAgUmVm
UHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXRPckFkZChKU0M6OkV4
ZWNTdGF0ZSYgc3RhdGUsIERlcHIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0g
ICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVlID0gU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoJnN0YXRlLCB2YWx1ZS5qc1ZhbHVlKCksIG51bGxwdHIs
IG51bGxwdHIpOworICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRW
YWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCZzdGF0ZSwgdmFsdWUsIG51bGxw
dHIsIG51bGxwdHIpOwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkgewogICAgICAgICBl
YyA9IERBVEFfQ0xPTkVfRVJSOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPYmplY3RTdG9yZUlt
cGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPYmplY3RT
dG9yZUltcGwuaAppbmRleCBkYzI3Y2VmLi40YmQ1MDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCT2JqZWN0U3RvcmVJbXBsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQk9iamVjdFN0b3JlSW1w
bC5oCkBAIC01NCw4ICs1NCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24oKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0
dWFsIGJvb2wgYXV0b0luY3JlbWVudCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwogCi0gICAgdmly
dHVhbCBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gYWRkKEpTQzo6RXhlY1N0YXRlJiwgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGUgZmluYWw7Ci0g
ICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gcHV0KEpTQzo6RXhlY1N0YXRl
JiwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGUgZmlu
YWw7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gYWRkKEpTQzo6RXhl
Y1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGUgZmluYWw7Cisg
ICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gcHV0KEpTQzo6RXhlY1N0YXRl
JiwgSlNDOjpKU1ZhbHVlLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmly
dHVhbCBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwg
UmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIElEQktleVJhbmdlKiwgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlIGZpbmFsOwogICAg
IHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2Vw
dGlvbkNvZGUmKSBvdmVycmlkZSBmaW5hbDsKQEAgLTYzLDggKzYzLDggQEAgcHVibGljOgogICAg
IHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIGNvbnN0
IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGUgZmluYWw7CiAgICAg
dmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gZ2V0KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2Rl
Jikgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVz
dD4gZ2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBJREJLZXlSYW5nZSosIEV4Y2VwdGlvbkNv
ZGUmKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1
ZXN0PiBhZGQoSlNDOjpFeGVjU3RhdGUmLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIGNvbnN0
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZSBm
aW5hbDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBwdXQoSlNDOjpF
eGVjU3RhdGUmLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIGNvbnN0IERlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0
dWFsIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBhZGQoSlNDOjpFeGVjU3RhdGUmLCBKU0M6
OkpTVmFsdWUsIEpTQzo6SlNWYWx1ZSBrZXksIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZSBmaW5h
bDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBwdXQoSlNDOjpFeGVj
U3RhdGUmLCBKU0M6OkpTVmFsdWUsIEpTQzo6SlNWYWx1ZSBrZXksIEV4Y2VwdGlvbkNvZGUmKSBv
dmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBk
ZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSURCS2V5UmFuZ2UqLCBFeGNl
cHRpb25Db2RlJikgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6
SURCUmVxdWVzdD4gZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZSBm
aW5hbDsKICAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBjbGVhcihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlIGZpbmFsOwpAQCAt
ODIsNyArODIsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIElEQk9iamVjdFN0b3JlKGNvbnN0
IElEQk9iamVjdFN0b3JlSW5mbyYsIElEQlRyYW5zYWN0aW9uJik7CiAKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6SURCUmVxdWVzdD4gcHV0T3JBZGQoSlNDOjpFeGVjU3RhdGUmLCBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSYsIFJlZlB0cjxJREJLZXk+LCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3Zlcndy
aXRlTW9kZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0
PiBwdXRPckFkZChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSwgUmVmUHRyPElEQktleT4s
IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlLCBFeGNlcHRpb25Db2RlJik7CiAK
ICAgICBJREJPYmplY3RTdG9yZUluZm8gbV9pbmZvOwogICAgIFJlZjxJREJUcmFuc2FjdGlvbj4g
bV90cmFuc2FjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL2xlZ2FjeS9MZWdhY3lPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9sZWdhY3kvTGVnYWN5T2JqZWN0U3RvcmUuY3BwCmluZGV4IDk3MDAxM2IuLmM4
YzY1ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xlZ2Fj
eS9MZWdhY3lPYmplY3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvbGVnYWN5L0xlZ2FjeU9iamVjdFN0b3JlLmNwcApAQCAtOTYsMjggKzk2LDMzIEBAIFJl
ZlB0cjxJREJSZXF1ZXN0PiBMZWdhY3lPYmplY3RTdG9yZTo6Z2V0KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIGNvbnN0CiAgICAgcmV0dXJuIGdldChjb250ZXh0LCBrZXlSYW5nZS5n
ZXQoKSwgZWMpOwogfQogCi1SZWZQdHI8SURCUmVxdWVzdD4gTGVnYWN5T2JqZWN0U3RvcmU6OmFk
ZChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSwg
Y29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCitS
ZWZQdHI8SURCUmVxdWVzdD4gTGVnYWN5T2JqZWN0U3RvcmU6OmFkZChKU0M6OkV4ZWNTdGF0ZSYg
c3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgSlNDOjpKU1ZhbHVlIGtleSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJMZWdhY3lPYmplY3RTdG9yZTo6YWRkIik7
Ci0gICAgcmV0dXJuIHB1dChJREJEYXRhYmFzZUJhY2tlbmQ6OkFkZE9ubHksIExlZ2FjeUFueTo6
Y3JlYXRlKHRoaXMpLCBzdGF0ZSwgdmFsdWUsIGtleSwgZWMpOworICAgIGF1dG8gZGVwcmVjYXRl
ZFZhbHVlID0gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoc3RhdGUudm0oKSwgdmFsdWUpOworICAg
IGF1dG8gZEtleSA9IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKHN0YXRlLnZtKCksIGtleSk7Cisg
ICAgcmV0dXJuIHB1dChJREJEYXRhYmFzZUJhY2tlbmQ6OkFkZE9ubHksIExlZ2FjeUFueTo6Y3Jl
YXRlKHRoaXMpLCBzdGF0ZSwgZGVwcmVjYXRlZFZhbHVlLCBkS2V5LCBlYyk7CiB9CiAKLVJlZlB0
cjxJREJSZXF1ZXN0PiBMZWdhY3lPYmplY3RTdG9yZTo6YWRkKEpTQzo6RXhlY1N0YXRlJiBzdGF0
ZSwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKK1Jl
ZlB0cjxJREJSZXF1ZXN0PiBMZWdhY3lPYmplY3RTdG9yZTo6YWRkKEpTQzo6RXhlY1N0YXRlJiBz
dGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBMT0co
U3RvcmFnZUFQSSwgIkxlZ2FjeU9iamVjdFN0b3JlOjphZGQiKTsKLSAgICByZXR1cm4gcHV0KElE
QkRhdGFiYXNlQmFja2VuZDo6QWRkT25seSwgTGVnYWN5QW55OjpjcmVhdGUodGhpcyksIHN0YXRl
LCB2YWx1ZSwgc3RhdGljX2Nhc3Q8SURCS2V5Kj4obnVsbHB0ciksIGVjKTsKKyAgICBhdXRvIGRl
cHJlY2F0ZWRWYWx1ZSA9IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKHN0YXRlLnZtKCksIHZhbHVl
KTsKKyAgICByZXR1cm4gcHV0KElEQkRhdGFiYXNlQmFja2VuZDo6QWRkT25seSwgTGVnYWN5QW55
OjpjcmVhdGUodGhpcyksIHN0YXRlLCBkZXByZWNhdGVkVmFsdWUsIHN0YXRpY19jYXN0PElEQktl
eSo+KG51bGxwdHIpLCBlYyk7CiB9CiAKLVJlZlB0cjxJREJSZXF1ZXN0PiBMZWdhY3lPYmplY3RT
dG9yZTo6cHV0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUm
IHZhbHVlLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2Rl
JiBlYykKK1JlZlB0cjxJREJSZXF1ZXN0PiBMZWdhY3lPYmplY3RTdG9yZTo6cHV0KEpTQzo6RXhl
Y1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBKU0M6OkpTVmFsdWUga2V5LCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKICAgICBMT0coU3RvcmFnZUFQSSwgIkxlZ2FjeU9iamVjdFN0b3Jl
OjpwdXQiKTsKLSAgICByZXR1cm4gcHV0KElEQkRhdGFiYXNlQmFja2VuZDo6QWRkT3JVcGRhdGUs
IExlZ2FjeUFueTo6Y3JlYXRlKHRoaXMpLCBzdGF0ZSwgdmFsdWUsIGtleSwgZWMpOworICAgIGF1
dG8gZGVwcmVjYXRlZFZhbHVlID0gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoc3RhdGUudm0oKSwg
dmFsdWUpOworICAgIHJldHVybiBwdXQoSURCRGF0YWJhc2VCYWNrZW5kOjpBZGRPclVwZGF0ZSwg
TGVnYWN5QW55OjpjcmVhdGUodGhpcyksIHN0YXRlLCBkZXByZWNhdGVkVmFsdWUsIERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlKHN0YXRlLnZtKCksIGtleSksIGVjKTsKIH0KIAotUmVmUHRyPElEQlJl
cXVlc3Q+IExlZ2FjeU9iamVjdFN0b3JlOjpwdXQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUmVmUHRyPElE
QlJlcXVlc3Q+IExlZ2FjeU9iamVjdFN0b3JlOjpwdXQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBK
U0M6OkpTVmFsdWUgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIExPRyhTdG9yYWdl
QVBJLCAiTGVnYWN5T2JqZWN0U3RvcmU6OnB1dCIpOwotICAgIHJldHVybiBwdXQoSURCRGF0YWJh
c2VCYWNrZW5kOjpBZGRPclVwZGF0ZSwgTGVnYWN5QW55OjpjcmVhdGUodGhpcyksIHN0YXRlLCB2
YWx1ZSwgc3RhdGljX2Nhc3Q8SURCS2V5Kj4obnVsbHB0ciksIGVjKTsKKyAgICBhdXRvIGRlcHJl
Y2F0ZWRWYWx1ZSA9IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKHN0YXRlLnZtKCksIHZhbHVlKTsK
KyAgICByZXR1cm4gcHV0KElEQkRhdGFiYXNlQmFja2VuZDo6QWRkT3JVcGRhdGUsIExlZ2FjeUFu
eTo6Y3JlYXRlKHRoaXMpLCBzdGF0ZSwgZGVwcmVjYXRlZFZhbHVlLCBzdGF0aWNfY2FzdDxJREJL
ZXkqPihudWxscHRyKSwgZWMpOwogfQogCiBSZWZQdHI8SURCUmVxdWVzdD4gTGVnYWN5T2JqZWN0
U3RvcmU6OnB1dChJREJEYXRhYmFzZUJhY2tlbmQ6OlB1dE1vZGUgcHV0TW9kZSwgUmVmUHRyPExl
Z2FjeUFueT4gc291cmNlLCBKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlJiB2YWx1ZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleVZhbHVlLCBF
eGNlcHRpb25Db2RlJiBlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2xlZ2FjeS9MZWdhY3lPYmplY3RTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvbGVnYWN5L0xlZ2FjeU9iamVjdFN0b3JlLmgKaW5kZXggNzM1Mzc5Yy4uMDVm
ZjBkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGVnYWN5
L0xlZ2FjeU9iamVjdFN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvbGVnYWN5L0xlZ2FjeU9iamVjdFN0b3JlLmgKQEAgLTY3LDggKzY3LDggQEAgcHVibGljOgog
ICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24oKSB7IHJldHVybiBtX3RyYW5z
YWN0aW9uOyB9CiAgICAgYm9vbCBhdXRvSW5jcmVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9tZXRh
ZGF0YS5hdXRvSW5jcmVtZW50OyB9CiAKLSAgICBSZWZQdHI8SURCUmVxdWVzdD4gYWRkKEpTQzo6
RXhlY1N0YXRlJiwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBFeGNlcHRpb25Db2RlJik7Ci0g
ICAgUmVmUHRyPElEQlJlcXVlc3Q+IHB1dChKU0M6OkV4ZWNTdGF0ZSYsIERlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJlZlB0cjxJREJSZXF1ZXN0PiBhZGQo
SlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBSZWZQ
dHI8SURCUmVxdWVzdD4gcHV0KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCBFeGNlcHRp
b25Db2RlJik7CiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBSZWZQdHI8SURCUmVxdWVzdD4gb3Bl
bkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSURCS2V5UmFuZ2UqLCBFeGNlcHRpb25D
b2RlJik7CiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNv
ZGUmKTsKQEAgLTc4LDggKzc4LDggQEAgcHVibGljOgogCiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+
IGdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiBnZXQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIElEQktleVJhbmdlKiwgRXhjZXB0aW9uQ29kZSYpOwotICAg
IFJlZlB0cjxJREJSZXF1ZXN0PiBhZGQoSlNDOjpFeGVjU3RhdGUmLCBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSYsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNv
ZGUmKTsKLSAgICBSZWZQdHI8SURCUmVxdWVzdD4gcHV0KEpTQzo6RXhlY1N0YXRlJiwgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUmLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBF
eGNlcHRpb25Db2RlJik7CisgICAgUmVmUHRyPElEQlJlcXVlc3Q+IGFkZChKU0M6OkV4ZWNTdGF0
ZSYsIEpTQzo6SlNWYWx1ZSwgSlNDOjpKU1ZhbHVlIGtleSwgRXhjZXB0aW9uQ29kZSYpOworICAg
IFJlZlB0cjxJREJSZXF1ZXN0PiBwdXQoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUsIEpT
Qzo6SlNWYWx1ZSBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBSZWZQdHI8SURCUmVxdWVzdD4g
cHV0KElEQkRhdGFiYXNlQmFja2VuZDo6UHV0TW9kZSwgUmVmUHRyPExlZ2FjeUFueT4sIEpTQzo6
RXhlY1N0YXRlJiwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBSZWZQdHI8SURCS2V5PiwgRXhj
ZXB0aW9uQ29kZSYpOwogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiBwdXQoSURCRGF0YWJhc2VCYWNr
ZW5kOjpQdXRNb2RlLCBSZWZQdHI8TGVnYWN5QW55PiBzb3VyY2UsIEpTQzo6RXhlY1N0YXRlJiwg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYg
a2V5LCBFeGNlcHRpb25Db2RlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKaW5kZXggMDhhZjA0Yy4uNzRiNjM2ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAK
QEAgLTE4NSwxNCArMTg1LDE0IEBAIHN0YXRpYyBKU1ZhbHVlIGdldE50aFZhbHVlT25LZXlQYXRo
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSByb290VmFsdWUsIGNvbnN0IFZlCiAgICAgcmV0dXJu
IGN1cnJlbnRWYWx1ZTsKIH0KIAotc3RhdGljIFJlZlB0cjxJREJLZXk+IGludGVybmFsQ3JlYXRl
SURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQorc3Rh
dGljIFJlZlB0cjxJREJLZXk+IGludGVybmFsQ3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5k
S2V5UGF0aChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTQzo6SlNWYWx1ZSYgdmFsdWUsIGNvbnN0
IFN0cmluZyYga2V5UGF0aCkKIHsKICAgICBWZWN0b3I8U3RyaW5nPiBrZXlQYXRoRWxlbWVudHM7
CiAgICAgSURCS2V5UGF0aFBhcnNlRXJyb3IgZXJyb3I7CiAgICAgSURCUGFyc2VLZXlQYXRoKGtl
eVBhdGgsIGtleVBhdGhFbGVtZW50cywgZXJyb3IpOwogICAgIEFTU0VSVChlcnJvciA9PSBJREJL
ZXlQYXRoUGFyc2VFcnJvcjo6Tm9uZSk7CiAKLSAgICBKU1ZhbHVlIGpzVmFsdWUgPSB2YWx1ZS5q
c1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBqc1ZhbHVlID0gdmFsdWU7CiAgICAganNWYWx1ZSA9IGdl
dE50aFZhbHVlT25LZXlQYXRoKGV4ZWMsIGpzVmFsdWUsIGtleVBhdGhFbGVtZW50cywga2V5UGF0
aEVsZW1lbnRzLnNpemUoKSk7CiAgICAgaWYgKGpzVmFsdWUuaXNVbmRlZmluZWQoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zMDIsNyArMzAyLDI4IEBAIFJlZlB0cjxJREJLZXk+IG1h
eWJlQ3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChFeGVjU3RhdGUmIGV4ZWMs
IGNvbnN0CiAgICAgcmV0dXJuIGludGVybmFsQ3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5k
S2V5UGF0aCgmZXhlYywgdmFsdWUsIGtleVBhdGguc3RyaW5nKCkpOwogfQogCi1ib29sIGNhbklu
amVjdElEQktleUludG9TY3JpcHRWYWx1ZShET01SZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwg
Y29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHNjcmlwdFZhbHVlLCBjb25zdCBJREJLZXlQ
YXRoJiBrZXlQYXRoKQorUmVmUHRyPElEQktleT4gbWF5YmVDcmVhdGVJREJLZXlGcm9tU2NyaXB0
VmFsdWVBbmRLZXlQYXRoKEV4ZWNTdGF0ZSYgZXhlYywgY29uc3QgSlNDOjpKU1ZhbHVlJiB2YWx1
ZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkKK3sKKyAgICBBU1NFUlQoIWtleVBhdGguaXNO
dWxsKCkpOworCisgICAgaWYgKGtleVBhdGgudHlwZSgpID09IEluZGV4ZWREQjo6S2V5UGF0aFR5
cGU6OkFycmF5KSB7CisgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhcnJheSA9IGtleVBh
dGguYXJyYXkoKTsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxJREJLZXk+PiByZXN1bHQ7CisgICAg
ICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGFycmF5LnNpemUoKSk7CisgICAgICAg
IGZvciAoYXV0byYgc3RyaW5nIDogYXJyYXkpIHsKKyAgICAgICAgICAgIFJlZlB0cjxJREJLZXk+
IGtleSA9IGludGVybmFsQ3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aCgmZXhl
YywgdmFsdWUsIHN0cmluZyk7CisgICAgICAgICAgICBpZiAoIWtleSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoV1RG
Ojptb3ZlKGtleSkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBJREJLZXk6OmNyZWF0ZUFy
cmF5KFdURjo6bW92ZShyZXN1bHQpKTsKKyAgICB9CisKKyAgICBBU1NFUlQoa2V5UGF0aC50eXBl
KCkgPT0gSW5kZXhlZERCOjpLZXlQYXRoVHlwZTo6U3RyaW5nKTsKKyAgICByZXR1cm4gaW50ZXJu
YWxDcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKCZleGVjLCB2YWx1ZSwga2V5
UGF0aC5zdHJpbmcoKSk7Cit9CisKK2Jvb2wgY2FuSW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVl
KERPTVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0YXRlLCBjb25zdCBKU0M6OkpTVmFsdWUmIHNjcmlw
dFZhbHVlLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQogewogICAgIExPRyhTdG9yYWdlQVBJ
LCAiY2FuSW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlIik7CiAKQEAgLTMxMyw3ICszMzQsNyBA
QCBib29sIGNhbkluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShET01SZXF1ZXN0U3RhdGUqIHJl
cXVlc3RTdGF0ZSwgY29uc3QgRGVwcmVjYQogICAgIHJldHVybiBjYW5JbmplY3RJREJLZXlJbnRv
U2NyaXB0VmFsdWUoKmV4ZWMsIHNjcmlwdFZhbHVlLCBrZXlQYXRoKTsKIH0KIAotYm9vbCBjYW5J
bmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoSlNDOjpFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgY29u
c3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHNjcmlwdFZhbHVlLCBjb25zdCBJREJLZXlQYXRo
JiBrZXlQYXRoKQorYm9vbCBjYW5JbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoSlNDOjpFeGVj
U3RhdGUmIGV4ZWNTdGF0ZSwgY29uc3QgSlNDOjpKU1ZhbHVlJiBzY3JpcHRWYWx1ZSwgY29uc3Qg
SURCS2V5UGF0aCYga2V5UGF0aCkKIHsKICAgICBMT0coU3RvcmFnZUFQSSwgImNhbkluamVjdElE
QktleUludG9TY3JpcHRWYWx1ZSIpOwogCkBAIC0zMjYsNyArMzQ3LDcgQEAgYm9vbCBjYW5Jbmpl
Y3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoSlNDOjpFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgY29uc3Qg
RGVwcmVjYXRlZDoKICAgICBpZiAoIWtleVBhdGhFbGVtZW50cy5zaXplKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIHJldHVybiBjYW5JbmplY3ROdGhWYWx1ZU9uS2V5UGF0aCgmZXhl
Y1N0YXRlLCBzY3JpcHRWYWx1ZS5qc1ZhbHVlKCksIGtleVBhdGhFbGVtZW50cywga2V5UGF0aEVs
ZW1lbnRzLnNpemUoKSAtIDEpOworICAgIHJldHVybiBjYW5JbmplY3ROdGhWYWx1ZU9uS2V5UGF0
aCgmZXhlY1N0YXRlLCBzY3JpcHRWYWx1ZSwga2V5UGF0aEVsZW1lbnRzLCBrZXlQYXRoRWxlbWVu
dHMuc2l6ZSgpIC0gMSk7CiB9CiAKIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGRlc2VyaWFsaXpl
SURCVmFsdWUoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUsIFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBwcnBWYWx1ZSkKQEAgLTQwMiwxNSArNDIzLDE1IEBAIERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlIGlkYktleVRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiByZXF1
ZXN0U3RhdGUsIFBhc3NSCiAgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKGV4ZWMt
PnZtKCksIGlkYktleVRvSlNWYWx1ZShleGVjLCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBrZXkuZ2V0KCkpKTsKIH0KIAotUmVmUHRyPElE
QktleT4gc2NyaXB0VmFsdWVUb0lEQktleShET01SZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwg
Y29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHNjcmlwdFZhbHVlKQorUmVmUHRyPElEQktl
eT4gc2NyaXB0VmFsdWVUb0lEQktleShET01SZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwgY29u
c3QgSlNDOjpKU1ZhbHVlJiBzY3JpcHRWYWx1ZSkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBy
ZXF1ZXN0U3RhdGUtPmV4ZWMoKTsKLSAgICByZXR1cm4gY3JlYXRlSURCS2V5RnJvbVZhbHVlKGV4
ZWMsIHNjcmlwdFZhbHVlLmpzVmFsdWUoKSk7CisgICAgcmV0dXJuIGNyZWF0ZUlEQktleUZyb21W
YWx1ZShleGVjLCBzY3JpcHRWYWx1ZSk7CiB9CiAKLVJlZlB0cjxJREJLZXk+IHNjcmlwdFZhbHVl
VG9JREJLZXkoRXhlY1N0YXRlJiBleGVjLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYg
c2NyaXB0VmFsdWUpCitSZWZQdHI8SURCS2V5PiBzY3JpcHRWYWx1ZVRvSURCS2V5KEV4ZWNTdGF0
ZSYgZXhlYywgY29uc3QgSlNDOjpKU1ZhbHVlJiBzY3JpcHRWYWx1ZSkKIHsKLSAgICByZXR1cm4g
Y3JlYXRlSURCS2V5RnJvbVZhbHVlKCZleGVjLCBzY3JpcHRWYWx1ZS5qc1ZhbHVlKCkpOworICAg
IHJldHVybiBjcmVhdGVJREJLZXlGcm9tVmFsdWUoJmV4ZWMsIHNjcmlwdFZhbHVlKTsKIH0KIAog
dm9pZCBnZW5lcmF0ZUluZGV4S2V5c0ZvclZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSURC
SW5kZXhNZXRhZGF0YSYgaW5kZXhNZXRhZGF0YSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUmIG9iamVjdFZhbHVlLCBWZWN0b3I8SURCS2V5RGF0YT4mIGluZGV4S2V5cykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaAppbmRleCA0MmI3
YjM5Li5kZDI1NzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJC
aW5kaW5nVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmlu
ZGluZ1V0aWxpdGllcy5oCkBAIC00OSwxNyArNDksMTggQEAgYm9vbCBpbmplY3RJREJLZXlJbnRv
U2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiwgUGFzc1JlZlB0cjxJREJLZXk+LCBEZXByZWNh
dGUKIAogUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0
aChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgY29uc3Qg
SURCS2V5UGF0aCYpOwogUmVmUHRyPElEQktleT4gbWF5YmVDcmVhdGVJREJLZXlGcm9tU2NyaXB0
VmFsdWVBbmRLZXlQYXRoKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUmLCBjb25zdCBJREJLZXlQYXRoJik7CitSZWZQdHI8SURCS2V5PiBtYXliZUNyZWF0ZUlE
QktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBKU0M6
OkpTVmFsdWUmLCBjb25zdCBJREJLZXlQYXRoJik7CiAKLWJvb2wgY2FuSW5qZWN0SURCS2V5SW50
b1NjcmlwdFZhbHVlKERPTVJlcXVlc3RTdGF0ZSosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlJiwgY29uc3QgSURCS2V5UGF0aCYpOwotYm9vbCBjYW5JbmplY3RJREJLZXlJbnRvU2NyaXB0
VmFsdWUoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIGNv
bnN0IElEQktleVBhdGgmKTsKK2Jvb2wgY2FuSW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKERP
TVJlcXVlc3RTdGF0ZSosIGNvbnN0IEpTQzo6SlNWYWx1ZSYsIGNvbnN0IElEQktleVBhdGgmKTsK
K2Jvb2wgY2FuSW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKEpTQzo6RXhlY1N0YXRlJiwgY29u
c3QgSlNDOjpKU1ZhbHVlJiwgY29uc3QgSURCS2V5UGF0aCYpOwogCiBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSBkZXNlcmlhbGl6ZUlEQlZhbHVlKERPTVJlcXVlc3RTdGF0ZSosIFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7CiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBkZXNlcmlh
bGl6ZUlEQlZhbHVlRGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgVGhyZWFkU2Fm
ZURhdGFCdWZmZXImIHZhbHVlRGF0YSk7CiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBkZXNlcmlh
bGl6ZUlEQlZhbHVlQnVmZmVyKERPTVJlcXVlc3RTdGF0ZSosIFBhc3NSZWZQdHI8U2hhcmVkQnVm
ZmVyPiwgYm9vbCBrZXlJc0RlZmluZWQpOwogV0VCQ09SRV9FWFBPUlQgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUgZGVzZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcihKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYsIGJvb2wga2V5SXNEZWZpbmVkKTsKIERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlIGlkYktleVRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiwgUGFzc1JlZlB0cjxJ
REJLZXk+KTsKLVJlZlB0cjxJREJLZXk+IHNjcmlwdFZhbHVlVG9JREJLZXkoRE9NUmVxdWVzdFN0
YXRlKiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmKTsKLVJlZlB0cjxJREJLZXk+IHNj
cmlwdFZhbHVlVG9JREJLZXkoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSYpOworUmVmUHRyPElEQktleT4gc2NyaXB0VmFsdWVUb0lEQktleShET01SZXF1ZXN0
U3RhdGUqLCBjb25zdCBKU0M6OkpTVmFsdWUmKTsKK1JlZlB0cjxJREJLZXk+IHNjcmlwdFZhbHVl
VG9JREJLZXkoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBKU0M6OkpTVmFsdWUmKTsKIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZ2VuZXJhdGVJbmRleEtleXNGb3JWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIGNv
bnN0IElEQkluZGV4TWV0YWRhdGEmLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgb2Jq
ZWN0VmFsdWUsIFZlY3RvcjxJREJLZXlEYXRhPiYgaW5kZXhLZXlzKTsKIAogRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUgaWRiS2V5RGF0YVRvU2NyaXB0VmFsdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIGNvbnN0IElEQktleURhdGEmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNJREJPYmplY3RTdG9yZUN1c3RvbS5jcHAKaW5kZXggMDEyODhjNi4uMjljNWVlNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9y
ZUN1c3RvbS5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5o
IgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTSURCSW5kZXguaCIKKyNp
bmNsdWRlICJKU0lEQlJlcXVlc3QuaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CiAjaW5j
bHVkZSA8cnVudGltZS9KU1N0cmluZy5oPgogCkBAIC00Myw2ICs0NCw1NSBAQCB1c2luZyBuYW1l
c3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBKU1ZhbHVlIHB1dE9y
QWRkKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgYm9vbCBvdmVyd3JpdGUpCit7CisgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBzdGF0ZS50aGlzVmFsdWUoKTsKKyAgICBKU0lEQk9iamVjdFN0b3JlKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0lEQk9iamVjdFN0b3JlKj4odGhpc1ZhbHVlKTsK
KyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZGVjb2RlKHRocm93VGhpc1R5cGVFcnJvcihzdGF0ZSwgIklEQk9iamVjdFN0b3JlIiwgInB1dCIp
KTsKKworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNJREJPYmpl
Y3RTdG9yZTo6aW5mbygpKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
CisgICAgc2l6ZV90IGFyZ3NDb3VudCA9IHN0YXRlLmFyZ3VtZW50Q291bnQoKTsKKyAgICBpZiAo
VU5MSUtFTFkoYXJnc0NvdW50IDwgMSkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUo
dGhyb3dWTUVycm9yKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRl
KSkpOworCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgYXV0byB2YWx1ZSA9IHN0YXRl
LnVuY2hlY2tlZEFyZ3VtZW50KDApOworCisgICAgaWYgKGFyZ3NDb3VudCA9PSAxKSB7CisgICAg
ICAgIEpTVmFsdWUgcmVzdWx0OworICAgICAgICBpZiAob3ZlcndyaXRlKQorICAgICAgICAgICAg
cmVzdWx0ID0gdG9KUygmc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLnB1
dChzdGF0ZSwgdmFsdWUsIGVjKS5nZXQoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJl
c3VsdCA9IHRvSlMoJnN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5hZGQo
c3RhdGUsIHZhbHVlLCBlYykuZ2V0KCkpOworCisgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3Rh
dGUsIGVjKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBhdXRvIGtleSA9
IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpOworICAgIEpTVmFsdWUgcmVzdWx0OworICAgIGlm
IChvdmVyd3JpdGUpCisgICAgICAgIHJlc3VsdCA9IHRvSlMoJnN0YXRlLCBjYXN0ZWRUaGlzLT5n
bG9iYWxPYmplY3QoKSwgaW1wbC5wdXQoc3RhdGUsIHZhbHVlLCBrZXksIGVjKS5nZXQoKSk7Cisg
ICAgZWxzZQorICAgICAgICByZXN1bHQgPSB0b0pTKCZzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCksIGltcGwuYWRkKHN0YXRlLCB2YWx1ZSwga2V5LCBlYykuZ2V0KCkpOworCisgICAg
c2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0pT
VmFsdWUgSlNJREJPYmplY3RTdG9yZTo6cHV0RnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUmIHN0YXRl
KQoreworICAgIHJldHVybiBwdXRPckFkZChzdGF0ZSwgdHJ1ZSk7Cit9CisKK0pTVmFsdWUgSlNJ
REJPYmplY3RTdG9yZTo6YWRkKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKK3sKKyAgICByZXR1cm4g
cHV0T3JBZGQoc3RhdGUsIGZhbHNlKTsKK30KKwogSlNWYWx1ZSBKU0lEQk9iamVjdFN0b3JlOjpj
cmVhdGVJbmRleChFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS5sZXhpY2FsR2xv
YmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>