<?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>175341</bug_id>
          
          <creation_ts>2017-08-08 14:08:39 -0700</creation_ts>
          <short_desc>LayoutTest accessibility/mac/select-element-selection-with-optgroups.html is a flaky failure</short_desc>
          <delta_ts>2020-08-19 08:58:47 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=215405</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=215649</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryan Haddad">ryanhaddad</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>ap</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jbedard</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>jlewis3</cc>
    
    <cc>mifenton</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1336630</commentid>
    <comment_count>0</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-08-08 14:08:39 -0700</bug_when>
    <thetext>LayoutTest accessibility/mac/select-element-selection-with-optgroups.html is a flaky failure

https://build.webkit.org/builders/Apple%20El%20Capitan%20Release%20WK2%20(Tests)/builds/3600

https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=accessibility%2Fmac%2Fselect-element-selection-with-optgroups.html

--- /Volumes/Data/slave/elcapitan-release-tests-wk2/build/layout-test-results/accessibility/mac/select-element-selection-with-optgroups-expected.txt
+++ /Volumes/Data/slave/elcapitan-release-tests-wk2/build/layout-test-results/accessibility/mac/select-element-selection-with-optgroups-actual.txt
@@ -8,7 +8,7 @@
 PASS selectElement.selectedChildrenCount became 1
 PASS selectElement.selectedChildAtIndex(0).isEqual(option1) is true
 PASS selectElement.selectedChildrenCount became 1
-PASS selectElement.selectedChildAtIndex(0).isEqual(option2) is true
+FAIL selectElement.selectedChildAtIndex(0).isEqual(option2) should be true. Was false.
 PASS selectElement.selectedChildrenCount became 1
 PASS selectElement.selectedChildAtIndex(0).isEqual(option3) is true
 PASS successfullyParsed is true</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339843</commentid>
    <comment_count>1</comment_count>
    <who name="Matt Lewis">jlewis3</who>
    <bug_when>2017-08-17 16:33:17 -0700</bug_when>
    <thetext>Marked as flaky on Mac WK2
https://trac.webkit.org/changeset/220889/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678993</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-08-09 17:30:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/66758661&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678998</commentid>
    <comment_count>3</comment_count>
      <attachid>406277</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-09 18:22:56 -0700</bug_when>
    <thetext>Created attachment 406277
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679112</commentid>
    <comment_count>4</comment_count>
      <attachid>406311</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-10 10:46:54 -0700</bug_when>
    <thetext>Created attachment 406311
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679138</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-10 12:10:38 -0700</bug_when>
    <thetext>The story being this patch is interesting. I was working on another patch and this test failed. I diagnosed and fixed it and then realized the failure had nothing to do with the changes I was making.

Turns out I had just encountered a flaky test, but in a configuration where the flakiness hadn’t been in the expectation file. Thank goodness it wasn’t because that led to me figuring it out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679152</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-10 12:34:45 -0700</bug_when>
    <thetext>I realize now that it’s possible that my fix doesn’t actually fix this flakiness, because my failure was all three, not just option2!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679290</commentid>
    <comment_count>7</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2020-08-10 19:18:45 -0700</bug_when>
    <thetext>Andres can you review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679373</commentid>
    <comment_count>8</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2020-08-11 06:16:15 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #4)
&gt; Created attachment 406311 [details]
&gt; Patch

--- a/Source/WebCore/accessibility/AXObjectCache.cpp
+++ a/Source/WebCore/accessibility/AXObjectCache.cpp
@@ -640,6 +643,24 @@ AccessibilityObject* AXObjectCache::getOrCreate(Node* node)
     if (!node-&gt;parentElement())
         return nullptr;

+    bool isOptionElement = is&lt;HTMLOptionElement&gt;(*node);
+    if (isOptionElement || is&lt;HTMLOptGroupElement&gt;(*node)) {
+        auto select = isOptionElement
+            ? downcast&lt;HTMLOptionElement&gt;(*node).ownerSelectElement()
+            : downcast&lt;HTMLOptGroupElement&gt;(*node).ownerSelectElement();
+        if (!select)
+            return nullptr;
+        RefPtr&lt;AccessibilityObject&gt; wrapper;

Within the accessibility scope, we try to reserve the name &quot;wrapper&quot; for platform accessibility wrappers like WebAccessibilityObjectWrapper. To avoid confusion, I would suggest naming this variable just object, axObject or accessibilityObject.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679374</commentid>
    <comment_count>9</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2020-08-11 06:21:17 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #4)
&gt; Created attachment 406311 [details]
&gt; Patch

For instance, the call to cacheAndInitializeWrapper down below refers to initializing the platform wrapper, not the AccessibilityObject just created.

+        cacheAndInitializeWrapper(wrapper.get(), node);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679399</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-11 08:38:22 -0700</bug_when>
    <thetext>OK. Will rename it “object”. Any other comments?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679426</commentid>
    <comment_count>11</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2020-08-11 09:27:56 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #4)
&gt; Created attachment 406311 [details]
&gt; Patch

--- a/Source/WebCore/accessibility/AccessibilityMenuListOption.h
+++ a/Source/WebCore/accessibility/AccessibilityMenuListOption.h

-    RefPtr&lt;HTMLElement&gt; m_element;
+    HTMLOptionElement* m_element;

One question that apply to this and all the other classes that wrap a DOM object. Can we use something like a WeakPtr instead of a raw pointer? Relying on detachRemoteParts to make the raw pointer null is good, but I&apos;m not sure that in all cases detachRemoteParts is called and that we are checking for null in all cases, so using the raw pointer could lead to crashes. Of course, we should find all of those possible cases if they exist, but I&apos;m just concerned that we are making this change late and we won&apos;t find all the cases immediately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679433</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-11 09:45:53 -0700</bug_when>
    <thetext>(In reply to Andres Gonzalez from comment #11)
&gt; One question that apply to this and all the other classes that wrap a DOM
&gt; object. Can we use something like a WeakPtr instead of a raw pointer?
&gt; Relying on detachRemoteParts to make the raw pointer null is good, but I&apos;m
&gt; not sure that in all cases detachRemoteParts is called and that we are
&gt; checking for null in all cases, so using the raw pointer could lead to
&gt; crashes. Of course, we should find all of those possible cases if they
&gt; exist, but I&apos;m just concerned that we are making this change late and we
&gt; won&apos;t find all the cases immediately.

I think the reason we didn’t do that yet is that Node doesn’t have a WeakPtrFactory; adding it would make Node significantly bigger and have a significant effect on overall memory use. So that’s major decision and a major project. I think.

Given the other accessibility objects already rely on detachRemoteParts, and this is joining the idiom the others use rather than breaking new ground, I don’t think that updating these classes to match the pattern is highly risky.

I have studied how it gets called and it is straightforward and I see little room for failure:

    Node::~Node calls Document::willBeDeletedFrom
    Document::willBeDeletedFrom calls AXObjectCache::remove(Node&amp;)
    AXObjectCache::remove calls AXObjectCache::remove(AXID)
    AXObjectCache::remove(AXID) calls AXCoreObject::detach
    AXCoreObject::detach calls virtual AXObject::detachRemoteParts

The only if statement here is getting the AXID from the Node and getting the AXCoreObject from the AXObjectCache. That’s the thing that is new for these two classes now, because before they weren’t stored in the cache.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679434</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-11 09:47:23 -0700</bug_when>
    <thetext>If you are worried about late changes, I would be fine waiting a couple weeks until after the branch to fix this. I suppose the symptom must be mild since it’s been like this for a long time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679440</commentid>
    <comment_count>14</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2020-08-11 10:11:58 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #13)
&gt; If you are worried about late changes, I would be fine waiting a couple
&gt; weeks until after the branch to fix this. I suppose the symptom must be mild
&gt; since it’s been like this for a long time.

Yes, my vote would be to wait for that couple weeks. On the other hand, I&apos;m glad that you took on this, since this issue does have an impact for the isolated tree on Mac. Since the isolated Tre is a mirror of the AXObjectCache tree, these two classes are not expose in isolated tree mode at all. I&apos;ll be more Etna happy to take it from here and update and land the patch in a couple of weeks. Just let me know your preference. Thank you very much.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679445</commentid>
    <comment_count>15</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2020-08-11 10:22:36 -0700</bug_when>
    <thetext>(In reply to Andres Gonzalez from comment #14)
&gt; (In reply to Darin Adler from comment #13)
&gt; &gt; If you are worried about late changes, I would be fine waiting a couple
&gt; &gt; weeks until after the branch to fix this. I suppose the symptom must be mild
&gt; &gt; since it’s been like this for a long time.
&gt; 
&gt; Yes, my vote would be to wait for that couple weeks. On the other hand, I&apos;m
&gt; glad that you took on this, since this issue does have an impact for the
&gt; isolated tree on Mac. Since the isolated Tre is a mirror of the
&gt; AXObjectCache tree, these two classes are not expose in isolated tree mode
&gt; at all. I&apos;ll be more Etna happy to take it from here and update and land the
&gt; patch in a couple of weeks. Just let me know your preference. Thank you very
&gt; much.

I think as long as iOS14 is out of the way we&apos;ll have enough time to live on and qualify this change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679492</commentid>
    <comment_count>16</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-11 12:06:36 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #12)
&gt; I think the reason we didn’t do that yet is that Node doesn’t have a
&gt; WeakPtrFactory; adding it would make Node significantly bigger and have a
&gt; significant effect on overall memory use. So that’s major decision and a
&gt; major project. I think.

Wait, I was wrong about this!

ContainerNode does have a WeakPtrFactory. So if we can refactor this so that we don’t have to allow non-container nodes like Text (and I think we can), we can start using WeakPtr instead of explicitly nulling out.

I’ll see if I can do that easily or if it makes the patch balloon in size.

I think it would *increase* the risk of the patch because it would change existing accessibility object behavior more (timing of the nulling), but it’s easier to reason about.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679498</commentid>
    <comment_count>17</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-11 12:24:49 -0700</bug_when>
    <thetext>Since AccessibilityNodeObject is used with text nodes it can’t use WeakPtr. But the new code can and so I will update it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679501</commentid>
    <comment_count>18</comment_count>
      <attachid>406403</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-11 12:34:46 -0700</bug_when>
    <thetext>Created attachment 406403
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679502</commentid>
    <comment_count>19</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-11 12:35:27 -0700</bug_when>
    <thetext>Uploaded a new patch that responds to both comments Andres made, so EWS can chew on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679503</commentid>
    <comment_count>20</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-11 12:37:47 -0700</bug_when>
    <thetext>Oops, new version needs some more &quot;get()&quot; because of the WeakPtr change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679506</commentid>
    <comment_count>21</comment_count>
      <attachid>406405</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-11 12:43:31 -0700</bug_when>
    <thetext>Created attachment 406405
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679542</commentid>
    <comment_count>22</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-11 13:58:34 -0700</bug_when>
    <thetext>Committed r265514: &lt;https://trac.webkit.org/changeset/265514&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406277</attachid>
            <date>2020-08-09 18:22:56 -0700</date>
            <delta_ts>2020-08-10 10:46:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175341-20200809182255.patch</filename>
            <type>text/plain</type>
            <size>40159</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1NDAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTg2Zjg3MDFlMTM4ODM1
MTEzZDYxZDVlNjBiODk0ZjgyNjFiOTI3OS4uNTM5MjllNTg5NTZhYmQ3YWY1YTFkODY5OGNlYTRi
MmQxMTQ2MTFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMiBAQAorMjAyMC0wOC0wOSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTGF5b3V0VGVzdCBhY2Nlc3Np
YmlsaXR5L21hYy9zZWxlY3QtZWxlbWVudC1zZWxlY3Rpb24td2l0aC1vcHRncm91cHMuaHRtbCBp
cyBhIGZsYWt5IGZhaWx1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3NTM0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEZhaWx1cmVzIHdlcmUgZHVlIHRvIG5ldyB3cmFwcGVyIG9iamVjdHMgYmVpbmcg
Y3JlYXRlZCBmb3IgSFRNTE9wdGlvbkVsZW1lbnQuCisgICAgICAgIFVubGlrZSBtb3N0IG90aGVy
IGFjY2Vzc2liaWxpdHkgb2JqZWN0cywgdGhlc2Ugd2VyZSBub3QgY2FjaGVkIGluIHRoZSBBWE9i
amVjdENhY2hlCisgICAgICAgIGFuZCBtdWx0aXBsZSB3cmFwcGVycyB3b3VsZCBiZSBjcmVhdGVk
IGZvciB0aGUgc2FtZSB1bmRlcmx5aW5nIG9wdGlvbi4gRml4ZWQgdGhpcworICAgICAgICBieSBj
aGFuZ2luZyBpdCB0byB0cmFjayB0aGUgb3B0aW9uIGVsZW1lbnQgaW4gdGhlIGNhY2hlIGluIHRo
ZSBjb252ZW50aW9uYWwgd2F5LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmdldE9yQ3JlYXRlKTog
QWRkZWQgY29kZSBmb3IgSFRNTE9wdGlvbkVsZW1lbnQgYW5kCisgICAgICAgIEhUTUxPcHRHcm91
cEVsZW1lbnQgc28gQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uIGFuZCBBY2Nlc3NpYmlsaXR5
TGlzdEJveE9wdGlvbgorICAgICAgICBjYW4gYmUgY3JlYXRlZCBpbiB0aGlzIGZ1bmN0aW9uLgor
ICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6Y3JlYXRlKTogUmVuYW1lZCB0aGUgdmVy
c2lvbiBvZiB0aGlzIHRoYXQgdGFrZXMgYW4KKyAgICAgICAgQWNjZXNzaWJpbGl0eVJvbGUgdG8g
bm90IGNsYWltIHRoYXQgaXQgZXZlciBnZXRzIHRoZSB2YWx1ZSBmcm9tIHRoZSBjYWNoZSwKKyAg
ICAgICAgYmVjYXVzZSBpdCBuZXZlciBkb2VzLiBBbHNvIHJlbW92ZWQgdGhlIGNhc2VzIGZvciBM
aXN0Qm94T3B0aW9uIGFuZCBNZW51TGlzdE9wdGlvbi4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L0FYT2JqZWN0Q2FjaGUuaDogVXBkYXRlZCBmb3IgYWJvdmUuCisKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5QVJJQUdyaWQ6OmFkZENoaWxkcmVuKTogVXNlIGNyZWF0ZS4KKworICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eUxpc3RCb3g6OmFkZENoaWxkcmVuKTogUmVtb3ZlZCBzdXBlci1vbGQg
Y29tbWVudCB0aGF0IG1lbnRpb25zCisgICAgICAgIHRoZSBsb25nLWFnby1yZW1vdmVkIFdNTC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlMaXN0Qm94OjpsaXN0Qm94T3B0aW9uQWNj
ZXNzaWJpbGl0eU9iamVjdCBjb25zdCk6IFVzZSB0aGUKKyAgICAgICAgZWxlbWVudCB0byBnZXQg
dGhlIGxpc3QgYm94IG9wdGlvbiByYXRoZXIgdGhhbiBjcmVhdGluZyBhIG5ldyBvbmUgZXZlcnkg
dGltZS4KKyAgICAgICAgTm8gbG9uZ2VyIGFueSBuZWVkIHRvIHNwZWNpYWwgY2FzZSA8aHI+IGVs
ZW1lbnRzIHNpbmNlIHRoZSBnZXRPckNyZWF0ZSBmdW5jdGlvbgorICAgICAgICB3aWxsIHJldHVy
biBuaWwgZm9yIG5vbi1vcHRpb24gZWxlbWVudHMgdGhhdCBkb24ndCBoYXZlIGEgcmVuZGVyZXIu
CisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uOjpBY2Nlc3Np
YmlsaXR5TGlzdEJveE9wdGlvbik6IFRha2UgdGhlIGVsZW1lbnQKKyAgICAgICAgaW4gdGhlIGNv
bnN0cnVjdG9yIGluc3RlYWQgb2YgdXNpbmcgYSBzZXBhcmF0ZSBmdW5jdGlvbiB0byBhc3NvY2lh
dGUgaXQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbjo6Y3Jl
YXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlv
bjo6bm9kZSBjb25zdCk6IEFkZGVkLiBGb3Igc29tZSByZWFzb24gdGhlCisgICAgICAgIEFjY2Vz
c2liaWxpdHlNZW51TGlzdE9wdGlvbiBjbGFzcyBoYWQgdGhpcyBmdW5jdGlvbiBhbmQgdGhpcyBv
bmUgZGlkIG5vdC4gVGhleQorICAgICAgICBzaG91bGQgYm90aCBoYXZlIGl0LgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246OmRldGFjaFJlbW90ZVBhcnRzKTog
QWRkZWQuIFRoaXMgbGV0cyB1cworICAgICAgICBjbGVhciB0aGUgcG9pbnRlciB0byB0aGUgZWxl
bWVudCBhdCB0aGUgY29ycmVjdCBtb21lbnQsIHJhdGhlciB0aGFuIHJlbHlpbmcgb24KKyAgICAg
ICAgd2lzaGZ1bCB0aGlua2luZyB0byBtYW5hZ2UgdGhlIHBvaW50ZXIgbGlmZXRpbWUuCisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5oOiBVcGRhdGVk
IGZvciBhYm92ZS4gTWFkZSBtb3N0CisgICAgICAgIGZ1bmN0aW9ucyBwcml2YXRlIGFuZCBmaW5h
bC4gRml4ZWQgaW5jbHVkZXMgYW5kIGZvcndhcmQgZGVjbGFyYXRpb25zLgorICAgICAgICBSZW1v
dmVkIHRoZSBzZXRIVE1MRWxlbWVudCBmdW5jdGlvbi4KKworICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlNZW51TGlzdDo6YWRkQ2hpbGRyZW4pOiBVc2UgY3JlYXRlLgorCisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uOjpBY2Nlc3NpYmlsaXR5TWVudUxpc3RP
cHRpb24pOiBUYWtlIHRoZQorICAgICAgICBlbGVtZW50IGluIHRoZSBjb25zdHJ1Y3RvciBpbnN0
ZWFkIG9mIHVzaW5nIGEgc2VwYXJhdGUgZnVuY3Rpb24gdG8gYXNzb2NpYXRlIGl0LgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uOjpjcmVhdGUpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6c2V0RWxlbWVu
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRp
b246OmFjdGlvbkVsZW1lbnQgY29uc3QpOiBVcGRhdGVkIGZvciByYXcKKyAgICAgICAgcG9pbnRl
ciBpbnN0ZWFkIG9mIFJlZlB0ci4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZW51
TGlzdE9wdGlvbjo6bm9kZSBjb25zdCk6IE1vdmVkIGhlcmUgZnJvbSB0aGUgaGVhZGVyLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uOjppc0VuYWJsZWQgY29u
c3QpOiBSZW1vdmVkIHVubmVlZGVkIGNhc3QKKyAgICAgICAgbm93IHRoYXQgbV9lbGVtZW50IGhh
cyBhIG1vcmUgc3BlY2lmaWMgdHlwZSwgYW5kIGFkZGVkIGEgbnVsbCBjaGVjay4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6aXNWaXNpYmxlIGNvbnN0KTog
UmVtb3ZlZCBkZXBlbmRlbmN5CisgICAgICAgIG9uIG1fcGFyZW50IHBvaW50ZXIsIHdoaWNoIGRv
ZXMgbm90IGV4aXN0IG5vdyB0aGF0IHdlIGRvbid0IGRlcml2ZSBmcm9tCisgICAgICAgIEFjY2Vz
c2liaWxpdHlNb2NrT2JqZWN0LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVM
aXN0T3B0aW9uOjppc1NlbGVjdGVkIGNvbnN0KTogUmVtb3ZlZCB1bm5lZWRlZCBjYXN0CisgICAg
ICAgIG5vdyB0aGF0IG1fZWxlbWVudCBoYXMgYSBtb3JlIHNwZWNpZmljIHR5cGUsIGFuZCBhZGRl
ZCBhIG51bGwgY2hlY2suCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVudUxpc3RP
cHRpb246OnNldFNlbGVjdGVkKTogRGl0dG8sIGJ1dCBubyBudWxsIGNoZWNrCisgICAgICAgIG5l
ZWRlZCBiZWNhdXNlIGNhblNldFNlbGVjdGVkQXR0cmlidXRlIHRha2VzIGNhcmUgb2YgdGhhdC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6c3RyaW5nVmFs
dWUgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZW51TGlz
dE9wdGlvbjo6ZGV0YWNoUmVtb3RlUGFydHMpOiBBZGRlZC4gVGhpcyBsZXRzIHVzCisgICAgICAg
IGNsZWFyIHRoZSBwb2ludGVyIHRvIHRoZSBlbGVtZW50IGF0IHRoZSBjb3JyZWN0IG1vbWVudCwg
cmF0aGVyIHRoYW4gcmVseWluZyBvbgorICAgICAgICBhIFJlZlB0ciB3aGljaCBjcmVhdGVzIGEg
cmVmZXJlbmNlIGN5Y2xlLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1l
bnVMaXN0T3B0aW9uLmg6IFVwZGF0ZWQgZm9yIGFib3ZlLiBNYXJrZWQKKyAgICAgICAgZnVuY3Rp
b25zIGZpbmFsIGluc3RlYWQgb2Ygb3ZlcnJpZGUuIENoYW5nZWQgbV9lbGVtZW50IGZyb20gUmVm
UHRyPEhUTUxFbGVtZW50PgorICAgICAgICB0byBIVE1MT3B0aW9uRWxlbWVudCogYW5kIGRlcml2
ZSBmcm9tIEFjY2Vzc2liaWxpdHlPYmplY3QgaW5zdGVhZCBvZgorICAgICAgICBBY2Nlc3NpYmls
aXR5TW9ja09iamVjdCwgc2luY2UgdGhlIGxhdHRlciBjbGFzcyBoYXMgbm90aGluZyB0byBvZmZl
ciB1cy4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9w
dXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6Om1l
bnVMaXN0T3B0aW9uQWNjZXNzaWJpbGl0eU9iamVjdCBjb25zdCk6CisgICAgICAgIFVzZSB0aGUg
ZWxlbWVudCB0byBnZXQgdGhlIG1lbnUgbGlzdCBvcHRpb24gcmF0aGVyIHRoYW4gY3JlYXRpbmcg
YSBuZXcgb25lCisgICAgICAgIGV2ZXJ5IHRpbWUuIE5vIGxvbmdlciBhbnkgbmVlZCB0byBjaGVj
ayB0aGF0IHRoZSB0eXBlIGlzIEhUTUxPcHRpb25FbGVtZW50CisgICAgICAgIGJlY2F1c2UgdGhh
dCdzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgY29kZSBpbiB0aGUgY2FjaGUgbm93LgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6OmFkZENoaWxkcmVuKTog
UmVtb3ZlZCB1bm5lZWRlZCBjYWxsCisgICAgICAgIHRvIHNldFBhcmVudCBzaW5jZSB0aGUgbWVu
dSBsaXN0IG9wdGlvbiBvYmplY3RzIG5vIGxvbmdlciBob2xkIHBhcmVudCBwb2ludGVycy4KKwor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6YWNjZXNzaWJsZU5hbWVGb3JOb2RlKTogQWRkZWQgYSBzcGVjaWFsIGNh
c2UgZm9yIEhUTUxPcHRpb25FbGVtZW50CisgICAgICAgIGxpa2UgdGhlIG9uZSBmb3IgSFRNTElu
cHV0RWxlbWVudC4gVGhlIGNvZGUgd29ya2VkIGZvciBmYWlybHkgd2VsbCBmb3Igb3B0aW9uCisg
ICAgICAgIGVsZW1lbnRzIGJlZm9yZSwgYWxtb3N0IGJ5IGFjY2lkZW50LCBhbmQgdGhlIHdheSBp
dCB3b3JrZWQgd2FzIHBlcnR1cmJlZCBieQorICAgICAgICB0aGUgY2hhbmdlIHRvIHdoZXRoZXIg
d2UgY2FjaGUgdGhvc2Ugb2JqZWN0cy4gVGhpcyBuZXdlciBjb2RlIHBhdGggd29ya3MgaW4gYQor
ICAgICAgICBtb3JlIHN0cmFpZ2h0Zm9yd2FyZCB3YXksIGtlZXBzIG91ciBleGlzdGluZyB0ZXN0
cyBwc2FzaW5nLCBhbmQgbGlrZWx5IGdldHMKKyAgICAgICAgc29tZSBlZGdlIGNhc2VzIGhhbmRs
ZWQgbW9yZSBjb3JyZWN0bHkgKHNob3VsZCBhZGQgbmV3IHRlc3RzIGZvciB0aG9zZSkuCisKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZG9jdW1lbnRMaW5rcyk6
IFVzZSBjcmVhdGUuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjphZGRJbWFnZU1hcENoaWxkcmVuKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjphZGRUZXh0RmllbGRDaGlsZHJlbik6IERpdHRvLgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5U2xpZGVyOjphZGRDaGlsZHJlbik6IERpdHRvLgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVNwaW5CdXR0b246OmFkZENoaWxkcmVuKTogRGl0dG8uCisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjphZGRDaGlsZHJlbik6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjpoZWFkZXJDb250YWluZXIpOiBEaXR0by4KKwor
ICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE9wdGlvbkVsZW1lbnQ6OnNlbGVjdGVkIGNvbnN0KTogTWFkZSB0aGlzIGNvbnN0LiBBbiBl
YXJsaWVyCisgICAgICAgIHZlcnNpb24gb2YgdGhlIHBhdGNoIHJlcXVpcmVkIHRoaXM7IHRoZSBs
YXRlc3QgdmVyc2lvbiBkb2Vzbid0LCBidXQgaXQncworICAgICAgICBtb3JlIGxvZ2ljYWwgYW5k
IGJldHRlciBmb3IgaXQgdG8gYmUgY29uc3QuCisgICAgICAgICogaHRtbC9IVE1MT3B0aW9uRWxl
bWVudC5oOiBVcGRhdGVkIGZvciBhYm92ZS4KKwogMjAyMC0wOC0wNyAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEF1ZGlvQ29udGV4dCAvIE9mZmxpbmVBdWRpb0Nv
bnRleHQgc2hvdWxkIHN1cHBvcnQgYSB3aWRlciBzYW1wbGUgcmF0ZSByYW5nZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXggYzdmZmZjZmMy
NzM4ZGYxYmY1NmE2YWZlNGQ0NWIzZTAwMWM0YmRjMy4uYmI2YmQzMWY2ODI3ZGI4ZDRhZTkyY2U5
NTkyZjVmMjgxMDFiNDIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
T2JqZWN0Q2FjaGUuY3BwCkBAIC03OCw3ICs3OCwxMCBAQAogI2luY2x1ZGUgIkhUTUxNZWRpYUVs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTWV0ZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCisjaW5jbHVkZSAiSFRNTE9wdEdyb3VwRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxP
cHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgorI2luY2x1ZGUg
IkhUTUxTZWxlY3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQuaCIKICNpbmNsdWRlICJJbmxpbmVFbGVtZW50Qm94LmgiCiAjaW5jbHVkZSAiTWF0aE1MRWxl
bWVudC5oIgpAQCAtNjQwLDYgKzY0MywyNCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVj
dENhY2hlOjpnZXRPckNyZWF0ZShOb2RlKiBub2RlKQogICAgIGlmICghbm9kZS0+cGFyZW50RWxl
bWVudCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKKyAgICBib29sIGlzT3B0aW9u
RWxlbWVudCA9IGlzPEhUTUxPcHRpb25FbGVtZW50Pigqbm9kZSk7CisgICAgaWYgKGlzT3B0aW9u
RWxlbWVudCB8fCBpczxIVE1MT3B0R3JvdXBFbGVtZW50Pigqbm9kZSkpIHsKKyAgICAgICAgYXV0
byBzZWxlY3QgPSBpc09wdGlvbkVsZW1lbnQKKyAgICAgICAgICAgID8gZG93bmNhc3Q8SFRNTE9w
dGlvbkVsZW1lbnQ+KCpub2RlKS5vd25lclNlbGVjdEVsZW1lbnQoKQorICAgICAgICAgICAgOiBk
b3duY2FzdDxIVE1MT3B0R3JvdXBFbGVtZW50Pigqbm9kZSkub3duZXJTZWxlY3RFbGVtZW50KCk7
CisgICAgICAgIGlmICghc2VsZWN0KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiB3cmFwcGVyOworICAgICAgICBpZiAoc2Vs
ZWN0LT51c2VzTWVudUxpc3QoKSkgeworICAgICAgICAgICAgaWYgKCFpc09wdGlvbkVsZW1lbnQp
CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICB3cmFwcGVyID0g
QWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uOjpjcmVhdGUoZG93bmNhc3Q8SFRNTE9wdGlvbkVs
ZW1lbnQ+KCpub2RlKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgd3JhcHBlciA9IEFj
Y2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uOjpjcmVhdGUoZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KCpu
b2RlKSk7CisgICAgICAgIGNhY2hlQW5kSW5pdGlhbGl6ZVdyYXBwZXIod3JhcHBlci5nZXQoKSwg
bm9kZSk7CisgICAgICAgIHJldHVybiB3cmFwcGVyLmdldCgpOworICAgIH0KKwogICAgIC8vIEl0
J3Mgb25seSBhbGxvd2VkIHRvIGNyZWF0ZSBhbiBBY2Nlc3NpYmlsaXR5T2JqZWN0IGZyb20gYSBO
b2RlIGlmIGl0J3MgaW4gYSBjYW52YXMgc3VidHJlZS4KICAgICAvLyBPciBpZiBpdCdzIGEgaGlk
ZGVuIGVsZW1lbnQsIGJ1dCB3ZSBzdGlsbCB3YW50IHRvIGV4cG9zZSBpdCBiZWNhdXNlIG9mIG90
aGVyIEFSSUEgYXR0cmlidXRlcy4KICAgICBib29sIGluQ2FudmFzU3VidHJlZSA9IGxpbmVhZ2VP
ZlR5cGU8SFRNTENhbnZhc0VsZW1lbnQ+KCpub2RlLT5wYXJlbnRFbGVtZW50KCkpLmZpcnN0KCk7
CkBAIC04MDEsMTUgKzgyMiwxMiBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hl
Ojpyb290T2JqZWN0Rm9yRnJhbWUoRnJhbWUqIGZyYW1lKQogICAgIHJldHVybiBnZXRPckNyZWF0
ZShmcmFtZS0+dmlldygpKTsKIH0gICAgCiAgICAgCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9i
amVjdENhY2hlOjpnZXRPckNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZSByb2xlKQorQWNjZXNzaWJp
bGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Y3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUp
CiB7CiAgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IG9iajsKIAogICAgIC8vIHdpbGwg
YmUgZmlsbGVkIGluLi4uCiAgICAgc3dpdGNoIChyb2xlKSB7Ci0gICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6TGlzdEJveE9wdGlvbjoKLSAgICAgICAgb2JqID0gQWNjZXNzaWJpbGl0eUxpc3RC
b3hPcHRpb246OmNyZWF0ZSgpOwotICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpJbWFnZU1hcExpbms6CiAgICAgICAgIG9iaiA9IEFjY2Vzc2liaWxpdHlJbWFnZU1h
cExpbms6OmNyZWF0ZSgpOwogICAgICAgICBicmVhazsKQEAgLTgyNSw5ICs4NDMsNiBAQCBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZShBY2Nlc3NpYmlsaXR5
Um9sZSByb2xlKQogICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVMaXN0UG9wdXA6CiAg
ICAgICAgIG9iaiA9IEFjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwOjpjcmVhdGUoKTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUxpc3RPcHRpb246Ci0g
ICAgICAgIG9iaiA9IEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6Y3JlYXRlKCk7Ci0gICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNwaW5CdXR0b246CiAgICAg
ICAgIG9iaiA9IEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uOjpjcmVhdGUoKTsKICAgICAgICAgYnJl
YWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2Fj
aGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCmluZGV4
IDRmNDNmNjM4YjgxMzQ3NWFiMzBjYjE4YzM1NGJiNzU3ZTBkOTY5NGQuLjNlN2RjYTkzZWI3ZTYz
NDhlMmE2YzE4N2Q3Mzc4NWJhOTY3ZjRlOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQVhPYmplY3RDYWNoZS5oCkBAIC0xNTksNyArMTU5LDcgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIEFjY2Vzc2liaWxpdHlPYmplY3QqIGdldE9yQ3JlYXRlKE5vZGUqKTsKIAog
ICAgIC8vIHVzZWQgZm9yIG9iamVjdHMgd2l0aG91dCBiYWNraW5nIGVsZW1lbnRzCi0gICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogZ2V0T3JDcmVhdGUoQWNjZXNzaWJpbGl0eVJvbGUpOworICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIGNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZSk7CiAgICAgCiAgICAg
Ly8gd2lsbCBvbmx5IHJldHVybiB0aGUgQWNjZXNzaWJpbGl0eU9iamVjdCBpZiBpdCBhbHJlYWR5
IGV4aXN0cwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGdldChSZW5kZXJPYmplY3QqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFH
cmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFH
cmlkLmNwcAppbmRleCBlMTRhNDcxYWNjMTcyYTM0YTY3ZjBjOGYwN2QwN2JlOGE4MWFkMjYxLi40
ZWZiZjRlMjZiY2M1NGE0NjJkZjY4YTBlMWU5ZDRlODE2YzAwMzRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwCkBA
IC0xMzgsNyArMTM4LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6OmFkZENoaWxkcmVu
KCkKICAgICAKICAgICAvLyBtYWtlIHRoZSBjb2x1bW5zIGJhc2VkIG9uIHRoZSBudW1iZXIgb2Yg
Y29sdW1ucyBpbiB0aGUgZmlyc3QgYm9keQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBj
b2x1bW5Db3VudDsgKytpKSB7Ci0gICAgICAgIGF1dG8mIGNvbHVtbiA9IGRvd25jYXN0PEFjY2Vz
c2liaWxpdHlUYWJsZUNvbHVtbj4oKmF4Q2FjaGUtPmdldE9yQ3JlYXRlKEFjY2Vzc2liaWxpdHlS
b2xlOjpDb2x1bW4pKTsKKyAgICAgICAgYXV0byYgY29sdW1uID0gZG93bmNhc3Q8QWNjZXNzaWJp
bGl0eVRhYmxlQ29sdW1uPigqYXhDYWNoZS0+Y3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlOjpDb2x1
bW4pKTsKICAgICAgICAgY29sdW1uLnNldENvbHVtbkluZGV4KGkpOwogICAgICAgICBjb2x1bW4u
c2V0UGFyZW50KHRoaXMpOwogICAgICAgICBtX2NvbHVtbnMuYXBwZW5kKCZjb2x1bW4pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJv
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94
LmNwcAppbmRleCBkOWIzZTIzYTk5MjVkN2JkYjEyMjJlY2M3ZjI2MGNjNWQxZmQ4OWNjLi5mNmM1
OWU5NWZjZjcwZGFiYTI5YzRlZjUyNWMwY2ExMzcyMWMxZDFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcApAQCAtNzQs
OCArNzQsNiBAQCB2b2lkIEFjY2Vzc2liaWxpdHlMaXN0Qm94OjphZGRDaGlsZHJlbigpCiAgICAg
bV9oYXZlQ2hpbGRyZW4gPSB0cnVlOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBsaXN0SXRlbSA6
IGRvd25jYXN0PEhUTUxTZWxlY3RFbGVtZW50Pigqc2VsZWN0Tm9kZSkubGlzdEl0ZW1zKCkpIHsK
LSAgICAgICAgLy8gVGhlIGNhc3QgdG8gSFRNTEVsZW1lbnQgYmVsb3cgaXMgc2FmZSBiZWNhdXNl
IHRoZSBvbmx5IG90aGVyIHBvc3NpYmxlIGxpc3RJdGVtIHR5cGUKLSAgICAgICAgLy8gd291bGQg
YmUgYSBXTUxFbGVtZW50LCBidXQgV01MIGJ1aWxkcyBkb24ndCB1c2UgYWNjZXNzaWJpbGl0eSBm
ZWF0dXJlcyBhdCBhbGwuCiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGxpc3RPcHRpb24g
PSBsaXN0Qm94T3B0aW9uQWNjZXNzaWJpbGl0eU9iamVjdChsaXN0SXRlbSk7CiAgICAgICAgIGlm
IChsaXN0T3B0aW9uICYmICFsaXN0T3B0aW9uLT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCiAg
ICAgICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZChsaXN0T3B0aW9uKTsKQEAgLTEzNSwxNiArMTMz
LDEwIEBAIHZvaWQgQWNjZXNzaWJpbGl0eUxpc3RCb3g6OnZpc2libGVDaGlsZHJlbihBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJlc3VsdCkKIAogQWNjZXNzaWJpbGl0eU9iamVjdCogQWNj
ZXNzaWJpbGl0eUxpc3RCb3g6Omxpc3RCb3hPcHRpb25BY2Nlc3NpYmlsaXR5T2JqZWN0KEhUTUxF
bGVtZW50KiBlbGVtZW50KSBjb25zdAogewotICAgIC8vIHNraXAgaHIgZWxlbWVudHMKLSAgICBp
ZiAoIWVsZW1lbnQgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShoclRhZykpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QmIGxpc3RCb3hPYmplY3Qg
PSAqbV9yZW5kZXJlci0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKEFj
Y2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94T3B0aW9uKTsKLSAgICBkb3duY2FzdDxBY2Nlc3NpYmls
aXR5TGlzdEJveE9wdGlvbj4obGlzdEJveE9iamVjdCkuc2V0SFRNTEVsZW1lbnQoZWxlbWVudCk7
Ci0gICAgCi0gICAgcmV0dXJuICZsaXN0Qm94T2JqZWN0OworICAgIC8vIEZJWE1FOiBXaHkgZG9l
cyBBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cDo6bWVudUxpc3RPcHRpb25BY2Nlc3NpYmlsaXR5
T2JqZWN0IGNoZWNrIGluUmVuZGVyZWREb2N1bWVudCwgYnV0IHRoaXMgZG9lcyBub3Q/CisgICAg
cmV0dXJuIG1fcmVuZGVyZXItPmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0
ZShlbGVtZW50KTsKIH0KLSAgICAKKwogQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5TGlzdEJv
eDo6ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29u
c3QKIHsKICAgICAvLyB0aGUgaW50ZXJuYWwgSFRNTFNlbGVjdEVsZW1lbnQgbWV0aG9kcyBmb3Ig
cmV0dXJuaW5nIGEgbGlzdGJveCBvcHRpb24gYXQgYSBwb2ludApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNw
cAppbmRleCA1YjgzOWJkZDJkMzljN2Q0N2Y3ZGVmMWUxYzlkZWI0MTcwOGRjZTAwLi45Mjg1ZDBh
NmUyMDliMzcyMDcxOWJiNWJhNTYwZjIwZWFhZTAzZWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNw
cApAQCAtMzEsMzAgKzMxLDI3IEBACiAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5j
bHVkZSAiQWNjZXNzaWJpbGl0eUxpc3RCb3guaCIKLSNpbmNsdWRlICJFbGVtZW50LmgiCi0jaW5j
bHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJI
VE1MT3B0R3JvdXBFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE9wdGlvbkVsZW1lbnQuaCIKICNp
bmNsdWRlICJIVE1MU2VsZWN0RWxlbWVudC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNs
dWRlICJSZW5kZXJMaXN0Qm94LmgiCi0jaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKICAgICAKLUFjY2Vz
c2liaWxpdHlMaXN0Qm94T3B0aW9uOjpBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbigpCi0gICAg
OiBtX29wdGlvbkVsZW1lbnQobnVsbHB0cikKK0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uOjpB
Y2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbihIVE1MRWxlbWVudCYgZWxlbWVudCkKKyAgICA6IG1f
b3B0aW9uRWxlbWVudCgmZWxlbWVudCkKIHsKIH0KIAogQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRp
b246On5BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbigpID0gZGVmYXVsdDsKICAgICAKLVJlZjxB
Y2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbj4gQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246OmNy
ZWF0ZSgpCitSZWY8QWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24+IEFjY2Vzc2liaWxpdHlMaXN0
Qm94T3B0aW9uOjpjcmVhdGUoSFRNTEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24oKSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24oZWxlbWVudCkpOwogfQogICAg
IAogYm9vbCBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbjo6aXNFbmFibGVkKCkgY29uc3QKQEAg
LTE2MCw2ICsxNTcsMTEgQEAgRWxlbWVudCogQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246OmFj
dGlvbkVsZW1lbnQoKSBjb25zdAogICAgIHJldHVybiBtX29wdGlvbkVsZW1lbnQ7CiB9CiAKK05v
ZGUqIEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uOjpub2RlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9vcHRpb25FbGVtZW50OworfQorCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmls
aXR5TGlzdEJveE9wdGlvbjo6cGFyZW50T2JqZWN0KCkgY29uc3QKIHsKICAgICBIVE1MU2VsZWN0
RWxlbWVudCogcGFyZW50Tm9kZSA9IGxpc3RCb3hPcHRpb25QYXJlbnROb2RlKCk7CkBAIC0yMTks
NCArMjIxLDkgQEAgaW50IEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uOjpsaXN0Qm94T3B0aW9u
SW5kZXgoKSBjb25zdAogICAgIHJldHVybiAtMTsKIH0KIAordm9pZCBBY2Nlc3NpYmlsaXR5TGlz
dEJveE9wdGlvbjo6ZGV0YWNoUmVtb3RlUGFydHMoQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBl
KQoreworICAgIG1fb3B0aW9uRWxlbWVudCA9IG51bGxwdHI7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eUxpc3RCb3hPcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uaAppbmRleCAyZDc3MjM3MTIwNTE3MjYzY2M1YmVlYmM5
ZTVjOTgyYWNmNjUwODJkLi5jZjMxNTE1MWZiNWU5MWU2OTFkYjQwZGI0MWZkMDZjZWEwOTQ5NmFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlM
aXN0Qm94T3B0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5TGlzdEJveE9wdGlvbi5oCkBAIC0yOSw0NSArMjksNDMgQEAKICNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdC5oIgotI2luY2x1ZGUgIkhUTUxFbGVtZW50
LmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBBY2Nlc3NpYmlsaXR5TGlzdEJveDsKLWNsYXNzIEVsZW1lbnQ7CitjbGFzcyBIVE1MRWxl
bWVudDsKIGNsYXNzIEhUTUxTZWxlY3RFbGVtZW50OwotICAgIAorCiBjbGFzcyBBY2Nlc3NpYmls
aXR5TGlzdEJveE9wdGlvbiBmaW5hbCA6IHB1YmxpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uPiBjcmVhdGUo
KTsKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uPiBjcmVhdGUoSFRN
TEVsZW1lbnQmKTsKICAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbigpOwot
ICAgIAotICAgIHZvaWQgc2V0SFRNTEVsZW1lbnQoSFRNTEVsZW1lbnQqIGVsZW1lbnQpIHsgbV9v
cHRpb25FbGVtZW50ID0gZWxlbWVudDsgfQotICAgIAotICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJv
bGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0
Qm94T3B0aW9uOyB9Ci0gICAgYm9vbCBpc1NlbGVjdGVkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
Ym9vbCBpc0VuYWJsZWQoKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGlzU2VsZWN0ZWRPcHRp
b25BY3RpdmUoKSBjb25zdCBvdmVycmlkZTsKLSAgICBTdHJpbmcgc3RyaW5nVmFsdWUoKSBjb25z
dCBvdmVycmlkZTsKLSAgICBFbGVtZW50KiBhY3Rpb25FbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgTm9kZSogbm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fb3B0aW9uRWxlbWVu
dDsgfQotICAgIHZvaWQgc2V0U2VsZWN0ZWQoYm9vbCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBjYW5T
ZXRTZWxlY3RlZEF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgTGF5b3V0UmVjdCBl
bGVtZW50UmVjdCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBh
cmVudE9iamVjdCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNTZWxlY3RlZCgpIGNvbnN0
IGZpbmFsOworICAgIHZvaWQgc2V0U2VsZWN0ZWQoYm9vbCkgZmluYWw7CiAKIHByaXZhdGU6Ci0g
ICAgQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24oKTsKKyAgICBleHBsaWNpdCBBY2Nlc3NpYmls
aXR5TGlzdEJveE9wdGlvbihIVE1MRWxlbWVudCYpOwogCi0gICAgYm9vbCBpc0xpc3RCb3hPcHRp
b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgYm9vbCBjYW5IYXZlQ2hp
bGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIEFjY2Vzc2liaWxp
dHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xl
OjpMaXN0Qm94T3B0aW9uOyB9CisgICAgYm9vbCBpc0VuYWJsZWQoKSBjb25zdCBmaW5hbDsKKyAg
ICBib29sIGlzU2VsZWN0ZWRPcHRpb25BY3RpdmUoKSBjb25zdCBmaW5hbDsKKyAgICBTdHJpbmcg
c3RyaW5nVmFsdWUoKSBjb25zdCBmaW5hbDsKKyAgICBFbGVtZW50KiBhY3Rpb25FbGVtZW50KCkg
Y29uc3QgZmluYWw7CisgICAgTm9kZSogbm9kZSgpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgY2Fu
U2V0U2VsZWN0ZWRBdHRyaWJ1dGUoKSBjb25zdCBmaW5hbDsKKworICAgIExheW91dFJlY3QgZWxl
bWVudFJlY3QoKSBjb25zdCBmaW5hbDsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRP
YmplY3QoKSBjb25zdCBmaW5hbDsKKworICAgIGJvb2wgaXNMaXN0Qm94T3B0aW9uKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBIVE1MU2VsZWN0RWxlbWVudCogbGlzdEJveE9w
dGlvblBhcmVudE5vZGUoKSBjb25zdDsKICAgICBpbnQgbGlzdEJveE9wdGlvbkluZGV4KCkgY29u
c3Q7CiAgICAgSW50UmVjdCBsaXN0Qm94T3B0aW9uUmVjdCgpIGNvbnN0OwogICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIGxpc3RCb3hPcHRpb25BY2Nlc3NpYmlsaXR5T2JqZWN0KEhUTUxFbGVtZW50
KikgY29uc3Q7Ci0gICAgYm9vbCBjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0
IG92ZXJyaWRlOworICAgIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25z
dCBmaW5hbDsKKworICAgIHZvaWQgZGV0YWNoUmVtb3RlUGFydHMoQWNjZXNzaWJpbGl0eURldGFj
aG1lbnRUeXBlKSBmaW5hbDsKIAogICAgIEhUTUxFbGVtZW50KiBtX29wdGlvbkVsZW1lbnQ7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
TWVudUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
TWVudUxpc3QuY3BwCmluZGV4IGIwYzNjMzEzYWViYzA5N2NlMGQwMTcwM2EzYWFiMWEyZTk4ODdl
MWIuLjQ5NmRlYTU0NTFlNzMyMDY2OTIwYjNiMjk5NzFlYTVkY2E0M2QzZTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5j
cHAKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5TWVudUxpc3Q6OmFkZENoaWxk
cmVuKCkKICAgICBpZiAoIWNhY2hlKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgQWNjZXNz
aWJpbGl0eU9iamVjdCogbGlzdCA9IGNhY2hlLT5nZXRPckNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9s
ZTo6TWVudUxpc3RQb3B1cCk7CisgICAgYXV0byBsaXN0ID0gY2FjaGUtPmNyZWF0ZShBY2Nlc3Np
YmlsaXR5Um9sZTo6TWVudUxpc3RQb3B1cCk7CiAgICAgaWYgKCFsaXN0KQogICAgICAgICByZXR1
cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU1lbnVMaXN0T3B0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uLmNwcAppbmRleCA5YzE2N2M4NzczZjA2NWIxNjdkMWZh
MjE5NjdkOWM3ZTZlNGQ1ODkzLi4zYTM3YWJlNzhhMWRjZWZiZmRmOGVlNzgyYjMzYTllNDdiMGRm
M2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlNZW51TGlzdE9wdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24uY3BwCkBAIC0zNSwzNiArMzUsMzkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1BY2Nlc3NpYmls
aXR5TWVudUxpc3RPcHRpb246OkFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbigpCitBY2Nlc3Np
YmlsaXR5TWVudUxpc3RPcHRpb246OkFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbihIVE1MT3B0
aW9uRWxlbWVudCYgZWxlbWVudCkKKyAgICA6IG1fZWxlbWVudCgmZWxlbWVudCkKIHsKIH0KIAot
dm9pZCBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb246OnNldEVsZW1lbnQoSFRNTEVsZW1lbnQq
IGVsZW1lbnQpCitSZWY8QWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uPiBBY2Nlc3NpYmlsaXR5
TWVudUxpc3RPcHRpb246OmNyZWF0ZShIVE1MT3B0aW9uRWxlbWVudCYgZWxlbWVudCkKIHsKLSAg
ICBBU1NFUlRfQVJHKGVsZW1lbnQsIGlzPEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KSk7Ci0g
ICAgbV9lbGVtZW50ID0gZWxlbWVudDsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3Np
YmlsaXR5TWVudUxpc3RPcHRpb24oZWxlbWVudCkpOwogfQogCiBFbGVtZW50KiBBY2Nlc3NpYmls
aXR5TWVudUxpc3RPcHRpb246OmFjdGlvbkVsZW1lbnQoKSBjb25zdAogewotICAgIHJldHVybiBt
X2VsZW1lbnQuZ2V0KCk7CisgICAgcmV0dXJuIG1fZWxlbWVudDsKK30KKworTm9kZSogQWNjZXNz
aWJpbGl0eU1lbnVMaXN0T3B0aW9uOjpub2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9lbGVt
ZW50OwogfQogICAgIAogYm9vbCBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb246OmlzRW5hYmxl
ZCgpIGNvbnN0CiB7Ci0gICAgLy8gaXNEaXNhYmxlZEZvcm1Db250cm9sKCkgcmV0dXJucyB0cnVl
IGlmIHRoZSBwYXJlbnQgPHNlbGVjdD4gZWxlbWVudCBpcyBkaXNhYmxlZCwKLSAgICAvLyB3aGlj
aCB3ZSBkb24ndCB3YW50LgotICAgIHJldHVybiAhZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+
KCptX2VsZW1lbnQpLm93bkVsZW1lbnREaXNhYmxlZCgpOworICAgIHJldHVybiBtX2VsZW1lbnQg
JiYgIW1fZWxlbWVudC0+b3duRWxlbWVudERpc2FibGVkKCk7CiB9CiAKIGJvb2wgQWNjZXNzaWJp
bGl0eU1lbnVMaXN0T3B0aW9uOjppc1Zpc2libGUoKSBjb25zdAogewotICAgIGlmICghbV9wYXJl
bnQpCisgICAgaWYgKCFtX2VsZW1lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAg
ICAvLyBJbiBhIHNpbmdsZS1vcHRpb24gc2VsZWN0IHdpdGggdGhlIHBvcHVwIGNvbGxhcHNlZCwg
b25seSB0aGUgc2VsZWN0ZWQKLSAgICAvLyBpdGVtIGlzIGNvbnNpZGVyZWQgdmlzaWJsZS4KLSAg
ICByZXR1cm4gIW1fcGFyZW50LT5pc09mZlNjcmVlbigpIHx8IGlzU2VsZWN0ZWQoKTsKKworICAg
IC8vIEluIGEgc2luZ2xlLW9wdGlvbiBzZWxlY3Qgd2l0aCB0aGUgcG9wdXAgY29sbGFwc2VkLCBv
bmx5IHRoZSBzZWxlY3RlZCBpdGVtIGlzIGNvbnNpZGVyZWQgdmlzaWJsZS4KKyAgICBhdXRvIHBh
cmVudCA9IG1fZWxlbWVudC0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRl
KG1fZWxlbWVudC0+b3duZXJTZWxlY3RFbGVtZW50KCkpOworICAgIHJldHVybiBwYXJlbnQgJiYg
KCFwYXJlbnQtPmlzT2ZmU2NyZWVuKCkgfHwgaXNTZWxlY3RlZCgpKTsKIH0KIAogYm9vbCBBY2Nl
c3NpYmlsaXR5TWVudUxpc3RPcHRpb246OmlzT2ZmU2NyZWVuKCkgY29uc3QKQEAgLTc1LDcgKzc4
LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb246OmlzT2ZmU2NyZWVuKCkgY29u
c3QKIAogYm9vbCBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb246OmlzU2VsZWN0ZWQoKSBjb25z
dAogewotICAgIHJldHVybiBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKm1fZWxlbWVudCku
c2VsZWN0ZWQoKTsKKyAgICByZXR1cm4gbV9lbGVtZW50ICYmIG1fZWxlbWVudC0+c2VsZWN0ZWQo
KTsKIH0KIAogdm9pZCBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb246OnNldFNlbGVjdGVkKGJv
b2wgc2VsZWN0ZWQpCkBAIC04Myw3ICs4Niw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU1lbnVMaXN0
T3B0aW9uOjpzZXRTZWxlY3RlZChib29sIHNlbGVjdGVkKQogICAgIGlmICghY2FuU2V0U2VsZWN0
ZWRBdHRyaWJ1dGUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGRvd25jYXN0PEhUTUxP
cHRpb25FbGVtZW50PigqbV9lbGVtZW50KS5zZXRTZWxlY3RlZChzZWxlY3RlZCk7CisgICAgbV9l
bGVtZW50LT5zZXRTZWxlY3RlZChzZWxlY3RlZCk7CiB9CiAKIFN0cmluZyBBY2Nlc3NpYmlsaXR5
TWVudUxpc3RPcHRpb246Om5hbWVGb3JNU0FBKCkgY29uc3QKQEAgLTExOCw3ICsxMjEsMTIgQEAg
TGF5b3V0UmVjdCBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb246OmVsZW1lbnRSZWN0KCkgY29u
c3QKIAogU3RyaW5nIEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6c3RyaW5nVmFsdWUoKSBj
b25zdAogewotICAgIHJldHVybiBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKm1fZWxlbWVu
dCkubGFiZWwoKTsKKyAgICByZXR1cm4gbV9lbGVtZW50ID8gbV9lbGVtZW50LT5sYWJlbCgpIDog
U3RyaW5nKCk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uOjpkZXRhY2hS
ZW1vdGVQYXJ0cyhBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGUpCit7CisgICAgbV9lbGVtZW50
ID0gbnVsbHB0cjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9u
LmgKaW5kZXggNTExZmE3YjdiMWYwNzI3OWZmNjY0NzEzYzQ0NTZmZjg2OGNiNmEzNy4uODVhMDQ4
YjM0ZDFhYzA0OTQ0YzdmMzMyYjY3Mzk4ODczZjJiNGFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbi5o
CkBAIC0yNSwzOSArMjUsNDAgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJBY2Nlc3Np
YmlsaXR5TW9ja09iamVjdC5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3QuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBIVE1MRWxlbWVudDsKK2NsYXNzIEhUTUxPcHRp
b25FbGVtZW50OwogCi1jbGFzcyBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24gZmluYWwgOiBw
dWJsaWMgQWNjZXNzaWJpbGl0eU1vY2tPYmplY3QgeworY2xhc3MgQWNjZXNzaWJpbGl0eU1lbnVM
aXN0T3B0aW9uIGZpbmFsIDogcHVibGljIEFjY2Vzc2liaWxpdHlPYmplY3QgewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8QWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uPiBjcmVhdGUoKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbik7IH0KLQotICAg
IHZvaWQgc2V0RWxlbWVudChIVE1MRWxlbWVudCopOworICAgIHN0YXRpYyBSZWY8QWNjZXNzaWJp
bGl0eU1lbnVMaXN0T3B0aW9uPiBjcmVhdGUoSFRNTE9wdGlvbkVsZW1lbnQmKTsKIAogcHJpdmF0
ZToKLSAgICBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24oKTsKKyAgICBleHBsaWNpdCBBY2Nl
c3NpYmlsaXR5TWVudUxpc3RPcHRpb24oSFRNTE9wdGlvbkVsZW1lbnQmKTsKKworICAgIGJvb2wg
aXNNZW51TGlzdE9wdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIGJv
b2wgaXNNZW51TGlzdE9wdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAg
ICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBBY2Nl
c3NpYmlsaXR5Um9sZTo6TWVudUxpc3RPcHRpb247IH0KKyAgICBib29sIGNhbkhhdmVDaGlsZHJl
bigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICBBY2Nlc3NpYmlsaXR5Um9s
ZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6
TWVudUxpc3RPcHRpb247IH0KLSAgICBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgRWxlbWVudCogYWN0aW9uRWxlbWVudCgpIGNvbnN0
IGZpbmFsOworICAgIE5vZGUqIG5vZGUoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGlzRW5hYmxl
ZCgpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgaXNWaXNpYmxlKCkgY29uc3QgZmluYWw7CisgICAg
Ym9vbCBpc09mZlNjcmVlbigpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgaXNTZWxlY3RlZCgpIGNv
bnN0IGZpbmFsOworICAgIFN0cmluZyBuYW1lRm9yTVNBQSgpIGNvbnN0IGZpbmFsOworICAgIHZv
aWQgc2V0U2VsZWN0ZWQoYm9vbCkgZmluYWw7CisgICAgYm9vbCBjYW5TZXRTZWxlY3RlZEF0dHJp
YnV0ZSgpIGNvbnN0IGZpbmFsOworICAgIExheW91dFJlY3QgZWxlbWVudFJlY3QoKSBjb25zdCBm
aW5hbDsKKyAgICBTdHJpbmcgc3RyaW5nVmFsdWUoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGNv
bXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QgZmluYWw7CiAKLSAgICBFbGVtZW50
KiBhY3Rpb25FbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0VuYWJsZWQoKSBj
b25zdCBvdmVycmlkZTsKLSAgICBib29sIGlzVmlzaWJsZSgpIGNvbnN0IG92ZXJyaWRlOwotICAg
IGJvb2wgaXNPZmZTY3JlZW4oKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGlzU2VsZWN0ZWQo
KSBjb25zdCBvdmVycmlkZTsKLSAgICBTdHJpbmcgbmFtZUZvck1TQUEoKSBjb25zdCBvdmVycmlk
ZTsKLSAgICB2b2lkIHNldFNlbGVjdGVkKGJvb2wpIG92ZXJyaWRlOwotICAgIGJvb2wgY2FuU2V0
U2VsZWN0ZWRBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICBMYXlvdXRSZWN0IGVsZW1l
bnRSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgU3RyaW5nIHN0cmluZ1ZhbHVlKCkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgYm9vbCBjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0
IG92ZXJyaWRlOworICAgIHZvaWQgZGV0YWNoUmVtb3RlUGFydHMoQWNjZXNzaWJpbGl0eURldGFj
aG1lbnRUeXBlKSBmaW5hbDsKIAotICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gbV9lbGVtZW50Owor
ICAgIEhUTUxPcHRpb25FbGVtZW50KiBtX2VsZW1lbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlNZW51TGlzdFBvcHVwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuY3BwCmluZGV4IDdiMDJjMjI0OWM2YTM5NDYzMTk4MzQz
YTJlNDc4MGU0NGI1MTEyMTAuLjgxYjZjMWQ0ODM4NmFlMWMzNTMwYjZmMzJkOTg2NDdhNWVmYjM1
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU1lbnVMaXN0UG9wdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuY3BwCkBAIC03MCwxMyArNzAsMTAgQEAgYm9vbCBBY2Nl
c3NpYmlsaXR5TWVudUxpc3RQb3B1cDo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBj
b25zdAogCiBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24qIEFjY2Vzc2liaWxpdHlNZW51TGlz
dFBvcHVwOjptZW51TGlzdE9wdGlvbkFjY2Vzc2liaWxpdHlPYmplY3QoSFRNTEVsZW1lbnQqIGVs
ZW1lbnQpIGNvbnN0CiB7Ci0gICAgaWYgKCFpczxIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCkg
fHwgIWVsZW1lbnQtPmluUmVuZGVyZWREb2N1bWVudCgpKQorICAgIGlmICghZWxlbWVudCB8fCAh
ZWxlbWVudC0+aW5SZW5kZXJlZERvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgYXV0byYgb3B0aW9uID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9u
PigqZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShBY2Nlc3NpYmlsaXR5
Um9sZTo6TWVudUxpc3RPcHRpb24pKTsKLSAgICBvcHRpb24uc2V0RWxlbWVudChlbGVtZW50KTsK
LQotICAgIHJldHVybiAmb3B0aW9uOworICAgIHJldHVybiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5
TWVudUxpc3RPcHRpb24+KGRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUo
ZWxlbWVudCkpOwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwOjpwcmVzcygp
CkBAIC0xMDAsMTEgKzk3LDkgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cDo6YWRk
Q2hpbGRyZW4oKQogICAgIG1faGF2ZUNoaWxkcmVuID0gdHJ1ZTsKIAogICAgIGZvciAoY29uc3Qg
YXV0byYgbGlzdEl0ZW0gOiBkb3duY2FzdDxIVE1MU2VsZWN0RWxlbWVudD4oKnNlbGVjdE5vZGUp
Lmxpc3RJdGVtcygpKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbiogb3B0
aW9uID0gbWVudUxpc3RPcHRpb25BY2Nlc3NpYmlsaXR5T2JqZWN0KGxpc3RJdGVtKTsKLSAgICAg
ICAgaWYgKG9wdGlvbikgewotICAgICAgICAgICAgb3B0aW9uLT5zZXRQYXJlbnQodGhpcyk7Cisg
ICAgICAgIC8vIEZJWE1FOiBXaHkgZG9lcyBBY2Nlc3NpYmlsaXR5TGlzdEJveDo6YWRkQ2hpbGRy
ZW4gY2hlY2sgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCBidXQgdGhpcyBkb2VzIG5vdD8KKyAgICAg
ICAgaWYgKGF1dG8gb3B0aW9uID0gbWVudUxpc3RPcHRpb25BY2Nlc3NpYmlsaXR5T2JqZWN0KGxp
c3RJdGVtKSkKICAgICAgICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kKG9wdGlvbik7Ci0gICAgICAg
IH0KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKaW5kZXggNDI0ZGE4Y2NhODgyMjliMDlmMzkx
ZjcxYjk3NzdlNTIwZjJhZGI2Ny4uNzgxNTFiYzg4YTdhNThmYWVlZWFlMDBiMmFmNzZiYTlhODg4
OWJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKQEAgLTUzLDYgKzUzLDcgQEAKICNpbmNsdWRlICJIVE1M
TGFiZWxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTExlZ2VuZEVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MT3B0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJIVE1MU2VsZWN0RWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxUZXh0QXJlYUVsZW1lbnQuaCIKQEAgLTIwMjYsNyArMjAyNyw3IEBAIHN0YXRp
YyBTdHJpbmcgYWNjZXNzaWJsZU5hbWVGb3JOb2RlKE5vZGUqIG5vZGUsIE5vZGUqIGxhYmVsbGVk
YnlOb2RlKQogCiAgICAgLy8gSWYgdGhlIG5vZGUgY2FuIGJlIHR1cm5lZCBpbnRvIGFuIEFYIG9i
amVjdCwgd2UgY2FuIHVzZSBzdGFuZGFyZCBuYW1lIGNvbXB1dGF0aW9uIHJ1bGVzLgogICAgIC8v
IElmIGhvd2V2ZXIsIHRoZSBub2RlIGNhbm5vdCAoYmVjYXVzZSB0aGVyZSdzIG5vIHJlbmRlcmVy
IGUuZy4pIGZhbGxiYWNrIHRvIHVzaW5nIHRoZSBiYXNpYyB0ZXh0IHVuZGVybmVhdGguCi0gICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmplY3QgPSBub2RlLT5kb2N1bWVudCgpLmF4T2JqZWN0
Q2FjaGUoKS0+Z2V0T3JDcmVhdGUobm9kZSk7CisgICAgYXV0byBheE9iamVjdCA9IGVsZW1lbnQu
ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKCZlbGVtZW50KTsKICAgICBp
ZiAoYXhPYmplY3QpIHsKICAgICAgICAgU3RyaW5nIHZhbHVlRGVzY3JpcHRpb24gPSBheE9iamVj
dC0+dmFsdWVEZXNjcmlwdGlvbigpOwogICAgICAgICBpZiAoIXZhbHVlRGVzY3JpcHRpb24uaXNF
bXB0eSgpKQpAQCAtMjA1Niw5ICsyMDU3LDExIEBAIHN0YXRpYyBTdHJpbmcgYWNjZXNzaWJsZU5h
bWVGb3JOb2RlKE5vZGUqIG5vZGUsIE5vZGUqIGxhYmVsbGVkYnlOb2RlKQogICAgICAgICAgICAg
cmV0dXJuIGNoaWxkVGV4dDsKICAgICB9CiAgICAgCi0gICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1l
bnQ+KCpub2RlKSkKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpu
b2RlKS52YWx1ZSgpOwotICAgIAorICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50PihlbGVtZW50
KSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KGVsZW1lbnQpLnZh
bHVlKCk7CisgICAgaWYgKGlzPEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KSkKKyAgICAgICAg
cmV0dXJuIGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KS52YWx1ZSgpOworCiAg
ICAgU3RyaW5nIHRleHQ7CiAgICAgaWYgKGF4T2JqZWN0KSB7CiAgICAgICAgIGlmIChheE9iamVj
dC0+YWNjZXNzaWJsZU5hbWVEZXJpdmVzRnJvbUNvbnRlbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3Bw
CmluZGV4IDNjNDRlYzg5ODRiNjdmNmNhOThiNzA5N2Y0N2M2MDI2ZDg1NjU0MTcuLjBkODM4ZDU3
NDgxZmI0N2JkOWZlMjlkOTdhNWRjMDlhYjFkOGNhYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApA
QCAtMTk0OSw3ICsxOTQ5LDcgQEAgQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3IgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZG9jdW1lbnRMaW4KICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIGF1dG8qIHBhcmVudCA9IGN1cnJlbnQtPnBhcmVudE5vZGUoKTsK
ICAgICAgICAgICAgIGlmIChpczxIVE1MQXJlYUVsZW1lbnQ+KCpjdXJyZW50KSAmJiBpczxIVE1M
TWFwRWxlbWVudD4ocGFyZW50KSkgewotICAgICAgICAgICAgICAgIGF1dG8mIGFyZWFPYmplY3Qg
PSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rPigqYXhPYmplY3RDYWNoZSgpLT5n
ZXRPckNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2VNYXBMaW5rKSk7CisgICAgICAgICAg
ICAgICAgYXV0byYgYXJlYU9iamVjdCA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlJbWFnZU1hcExp
bms+KCpheE9iamVjdENhY2hlKCktPmNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2VNYXBM
aW5rKSk7CiAgICAgICAgICAgICAgICAgSFRNTE1hcEVsZW1lbnQmIG1hcCA9IGRvd25jYXN0PEhU
TUxNYXBFbGVtZW50PigqcGFyZW50KTsKICAgICAgICAgICAgICAgICBhcmVhT2JqZWN0LnNldEhU
TUxBcmVhRWxlbWVudChkb3duY2FzdDxIVE1MQXJlYUVsZW1lbnQ+KGN1cnJlbnQpKTsKICAgICAg
ICAgICAgICAgICBhcmVhT2JqZWN0LnNldEhUTUxNYXBFbGVtZW50KCZtYXApOwpAQCAtMzE3Myw3
ICszMTczLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRJbWFnZU1hcENo
aWxkcmVuKCkKICAgICAgICAgLy8gYWRkIGFuIDxhcmVhPiBlbGVtZW50IGZvciB0aGlzIGNoaWxk
IGlmIGl0IGhhcyBhIGxpbmsKICAgICAgICAgaWYgKCFhcmVhLmlzTGluaygpKQogICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIGF1dG8mIGFyZWFPYmplY3QgPSBkb3duY2FzdDxBY2Nlc3Np
YmlsaXR5SW1hZ2VNYXBMaW5rPigqYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShBY2Nlc3Np
YmlsaXR5Um9sZTo6SW1hZ2VNYXBMaW5rKSk7CisgICAgICAgIGF1dG8mIGFyZWFPYmplY3QgPSBk
b3duY2FzdDxBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rPigqYXhPYmplY3RDYWNoZSgpLT5jcmVh
dGUoQWNjZXNzaWJpbGl0eVJvbGU6OkltYWdlTWFwTGluaykpOwogICAgICAgICBhcmVhT2JqZWN0
LnNldEhUTUxBcmVhRWxlbWVudCgmYXJlYSk7CiAgICAgICAgIGFyZWFPYmplY3Quc2V0SFRNTE1h
cEVsZW1lbnQobWFwKTsKICAgICAgICAgYXJlYU9iamVjdC5zZXRQYXJlbnQodGhpcyk7CkBAIC0z
MjA4LDcgKzMyMDgsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZFRleHRG
aWVsZENoaWxkcmVuKCkKICAgICBpZiAoIWlzPFNwaW5CdXR0b25FbGVtZW50PihzcGluQnV0dG9u
RWxlbWVudCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8mIGF4U3BpbkJ1dHRvbiA9IGRv
d25jYXN0PEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uPigqYXhPYmplY3RDYWNoZSgpLT5nZXRPckNy
ZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6U3BpbkJ1dHRvbikpOworICAgIGF1dG8mIGF4U3BpbkJ1
dHRvbiA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uPigqYXhPYmplY3RDYWNoZSgp
LT5jcmVhdGUoQWNjZXNzaWJpbGl0eVJvbGU6OlNwaW5CdXR0b24pKTsKICAgICBheFNwaW5CdXR0
b24uc2V0U3BpbkJ1dHRvbkVsZW1lbnQoZG93bmNhc3Q8U3BpbkJ1dHRvbkVsZW1lbnQ+KHNwaW5C
dXR0b25FbGVtZW50KSk7CiAgICAgYXhTcGluQnV0dG9uLnNldFBhcmVudCh0aGlzKTsKICAgICBt
X2NoaWxkcmVuLmFwcGVuZCgmYXhTcGluQnV0dG9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwCmluZGV4IGExYTE0Nzk5ZWVl
NTc0MTVkOGVlNTM5OGM1NmIwYTFkNzg3MTA3Y2YuLjBlYjFiMmJiOTEwZTVjY2UwODNmYmQwMjQ4
YjQ3MWE1MjllNmJhZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVNsaWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcApAQCAtODQsNyArODQsNyBAQCB2b2lkIEFjY2Vzc2li
aWxpdHlTbGlkZXI6OmFkZENoaWxkcmVuKCkKIAogICAgIEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0g
bV9yZW5kZXJlci0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCk7CiAKLSAgICBhdXRvJiB0aHVt
YiA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlTbGlkZXJUaHVtYj4oKmNhY2hlLT5nZXRPckNyZWF0
ZShBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVyVGh1bWIpKTsKKyAgICBhdXRvJiB0aHVtYiA9IGRv
d25jYXN0PEFjY2Vzc2liaWxpdHlTbGlkZXJUaHVtYj4oKmNhY2hlLT5jcmVhdGUoQWNjZXNzaWJp
bGl0eVJvbGU6OlNsaWRlclRodW1iKSk7CiAgICAgdGh1bWIuc2V0UGFyZW50KHRoaXMpOwogCiAg
ICAgLy8gQmVmb3JlIGFjdHVhbGx5IGFkZGluZyB0aGUgdmFsdWUgaW5kaWNhdG9yIHRvIHRoZSBo
aWVyYXJjaHksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlTcGluQnV0dG9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNwaW5CdXR0b24uY3BwCmluZGV4IDdkMGE2YTQzYWE1MTA5MTY5ZGJlYmFhNDI0
YzZkZjk0YjdmM2RhZjkuLjkyOWY2MTM1YzIyZWQwYTk4ZDZlYzU3MTQ0ODYxZmZkZDRkMDc5YmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNw
aW5CdXR0b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVNwaW5CdXR0b24uY3BwCkBAIC04OCwxMiArODgsMTIgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5
U3BpbkJ1dHRvbjo6YWRkQ2hpbGRyZW4oKQogICAgIAogICAgIG1faGF2ZUNoaWxkcmVuID0gdHJ1
ZTsKICAgICAKLSAgICBhdXRvJiBpbmNyZW1lbnRvciA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlT
cGluQnV0dG9uUGFydD4oKmNhY2hlLT5nZXRPckNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6U3Bp
bkJ1dHRvblBhcnQpKTsKKyAgICBhdXRvJiBpbmNyZW1lbnRvciA9IGRvd25jYXN0PEFjY2Vzc2li
aWxpdHlTcGluQnV0dG9uUGFydD4oKmNhY2hlLT5jcmVhdGUoQWNjZXNzaWJpbGl0eVJvbGU6OlNw
aW5CdXR0b25QYXJ0KSk7CiAgICAgaW5jcmVtZW50b3Iuc2V0SXNJbmNyZW1lbnRvcih0cnVlKTsK
ICAgICBpbmNyZW1lbnRvci5zZXRQYXJlbnQodGhpcyk7CiAgICAgbV9jaGlsZHJlbi5hcHBlbmQo
JmluY3JlbWVudG9yKTsKIAotICAgIGF1dG8mIGRlY3JlbWVudG9yID0gZG93bmNhc3Q8QWNjZXNz
aWJpbGl0eVNwaW5CdXR0b25QYXJ0PigqY2FjaGUtPmdldE9yQ3JlYXRlKEFjY2Vzc2liaWxpdHlS
b2xlOjpTcGluQnV0dG9uUGFydCkpOworICAgIGF1dG8mIGRlY3JlbWVudG9yID0gZG93bmNhc3Q8
QWNjZXNzaWJpbGl0eVNwaW5CdXR0b25QYXJ0PigqY2FjaGUtPmNyZWF0ZShBY2Nlc3NpYmlsaXR5
Um9sZTo6U3BpbkJ1dHRvblBhcnQpKTsKICAgICBkZWNyZW1lbnRvci5zZXRJc0luY3JlbWVudG9y
KGZhbHNlKTsKICAgICBkZWNyZW1lbnRvci5zZXRQYXJlbnQodGhpcyk7CiAgICAgbV9jaGlsZHJl
bi5hcHBlbmQoJmRlY3JlbWVudG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAppbmRleCBjYmI2YWZlNWIxNDY4MzZlNmU0M2Y1
MjE2N2Y1ZjBkMWFhNDM5ZWRlLi43ZTlhMWZiODJkZDgxODMzZDQyMGU1Mjc0OWUzNmNkNzU2OWIw
NzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5VGFibGUuY3BwCkBAIC00MTcsNyArNDE3LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGU6
OmFkZENoaWxkcmVuKCkKICAgICAvLyBtYWtlIHRoZSBjb2x1bW5zIGJhc2VkIG9uIHRoZSBudW1i
ZXIgb2YgY29sdW1ucyBpbiB0aGUgZmlyc3QgYm9keQogICAgIHVuc2lnbmVkIGxlbmd0aCA9IG1h
eENvbHVtbkNvdW50OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkg
ewotICAgICAgICBhdXRvJiBjb2x1bW4gPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVDb2x1
bW4+KCpheENhY2hlLT5nZXRPckNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1uKSk7Cisg
ICAgICAgIGF1dG8mIGNvbHVtbiA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbj4o
KmF4Q2FjaGUtPmNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1uKSk7CiAgICAgICAgIGNv
bHVtbi5zZXRDb2x1bW5JbmRleChpKTsKICAgICAgICAgY29sdW1uLnNldFBhcmVudCh0aGlzKTsK
ICAgICAgICAgbV9jb2x1bW5zLmFwcGVuZCgmY29sdW1uKTsKQEAgLTUwNSw3ICs1MDUsNyBAQCBB
WENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlUYWJsZTo6aGVhZGVyQ29udGFpbmVyKCkKICAgICBp
ZiAobV9oZWFkZXJDb250YWluZXIpCiAgICAgICAgIHJldHVybiBtX2hlYWRlckNvbnRhaW5lci5n
ZXQoKTsKICAgICAKLSAgICBhdXRvJiB0YWJsZUhlYWRlciA9IGRvd25jYXN0PEFjY2Vzc2liaWxp
dHlNb2NrT2JqZWN0PigqYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShBY2Nlc3NpYmlsaXR5
Um9sZTo6VGFibGVIZWFkZXJDb250YWluZXIpKTsKKyAgICBhdXRvJiB0YWJsZUhlYWRlciA9IGRv
d25jYXN0PEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0PigqYXhPYmplY3RDYWNoZSgpLT5jcmVhdGUo
QWNjZXNzaWJpbGl0eVJvbGU6OlRhYmxlSGVhZGVyQ29udGFpbmVyKSk7CiAgICAgdGFibGVIZWFk
ZXIuc2V0UGFyZW50KHRoaXMpOwogCiAgICAgbV9oZWFkZXJDb250YWluZXIgPSAmdGFibGVIZWFk
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCmluZGV4IDZlZGU5
N2Y4MGJkNWI3YTFiNjFhYzY4NWQzYzQ0YWYyMThjZjZhY2IuLmVjNzFlZDBhNDNlOGYxODNiMzg4
ZTZiYzJlZTFjMDAxZjJmMzY2YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE9wdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVs
ZW1lbnQuY3BwCkBAIC0yMDksNyArMjA5LDcgQEAgdm9pZCBIVE1MT3B0aW9uRWxlbWVudDo6c2V0
VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKHZhbHVlQXR0ciwgdmFsdWUpOwogfQogCi1ib29sIEhUTUxPcHRpb25FbGVtZW50
OjpzZWxlY3RlZCgpCitib29sIEhUTUxPcHRpb25FbGVtZW50OjpzZWxlY3RlZCgpIGNvbnN0CiB7
CiAgICAgaWYgKFJlZlB0cjxIVE1MU2VsZWN0RWxlbWVudD4gc2VsZWN0ID0gb3duZXJTZWxlY3RF
bGVtZW50KCkpCiAgICAgICAgIHNlbGVjdC0+dXBkYXRlTGlzdEl0ZW1TZWxlY3RlZFN0YXRlcygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oCmluZGV4IDc4NWE3Y2RmZThj
ZTI0NWE4ODYxYWY1NGZjNmFjZjM0OTgxMDFhOTAuLmRjM2IwY2YzYzlhOGQzMGNmNDMyYjI0ZmQy
MjMxOTMxYjI5YzNlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlv
bkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmgK
QEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB2YWx1
ZSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5n
Jik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNlbGVjdGVkKCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBzZWxlY3RlZCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
U2VsZWN0ZWQoYm9vbCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBIVE1MU2VsZWN0RWxlbWVudCog
b3duZXJTZWxlY3RFbGVtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTVlYzNkMmI4M2IwY2NiNThhNTVmMTRkZGM2YTUyODY0
NDNhNjcyNi4uYmU3YTUyNmQ3YzY0NTNkZjhiNzY0NDk0ZDE1NzZiMGYyMDk1OTk0MyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDIwLTA4LTA5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAg
ICBMYXlvdXRUZXN0IGFjY2Vzc2liaWxpdHkvbWFjL3NlbGVjdC1lbGVtZW50LXNlbGVjdGlvbi13
aXRoLW9wdGdyb3Vwcy5odG1sIGlzIGEgZmxha3kgZmFpbHVyZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MzQxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9jb250cm9sbGVycy9zaW5nbGVfdGVzdF9ydW5uZXIucHk6CisgICAgICAgIChTaW5nbGVU
ZXN0UnVubmVyLl9jb21wYXJlX291dHB1dF93aXRoX3JlZmVyZW5jZSk6IFJlbW92ZWQgdW5oZWxw
ZnVsIGxvZyBtZXNzYWdlIHRoYXQgdGVsbHMKKyAgICAgICAgYWJvdXQgcmVmIHRlc3RzIHdoZXJl
IHRoZSBoYXNoIG9wdGltaXphdGlvbiBmb3IgY29tcGFyaW5nIGltYWdlcyBkb2VzIG5vdCB3b3Jr
LCBidXQgdGhlCisgICAgICAgIHRlc3QgcGFzc2VzLiBXZSBkb24ndCB3YW50IHRvIGdldCB0aGlz
IGtpbmQgb2YgbG9nIG1lc3NhZ2UgZm9yIHBhc3NpbmcgdGVzdHMuCisKIDIwMjAtMDgtMDcgIFdl
bnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBJ
dCBzaG91bGQgYmUgcG9zc2libGUgdG8gb3ZlcnJpZGUgc3BlbGxjaGVja2luZyByZXN1bHRzIGlu
IFdlYktpdFRlc3RSdW5uZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3NpbmdsZV90ZXN0X3J1bm5lci5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3NpbmdsZV90ZXN0X3J1bm5lci5w
eQppbmRleCBmN2ViM2IwOTVkYTQ4ZmRhMzdjZTRjZDJhNWZhZWYwM2VlYTAyN2IyLi5hMmExMjRh
MDZmNGQyMTdkMjc3NTUwM2I2NzFmZmU3N2VlYjVlNWRmIDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9zaW5nbGVfdGVzdF9ydW5uZXIu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMv
c2luZ2xlX3Rlc3RfcnVubmVyLnB5CkBAIC0zNDYsNyArMzQ2LDUgQEAgY2xhc3MgU2luZ2xlVGVz
dFJ1bm5lcihvYmplY3QpOgogICAgICAgICAgICAgICAgIGFjdHVhbF9kcml2ZXJfb3V0cHV0LmVy
cm9yID0gKGFjdHVhbF9kcml2ZXJfb3V0cHV0LmVycm9yIG9yICcnKSArIGVycm9yX3N0cmluZwog
ICAgICAgICAgICAgZWxpZiBkaWZmX3Jlc3VsdFswXToKICAgICAgICAgICAgICAgICBmYWlsdXJl
cy5hcHBlbmQodGVzdF9mYWlsdXJlcy5GYWlsdXJlUmVmdGVzdE1pc21hdGNoKHJlZmVyZW5jZV9m
aWxlbmFtZSkpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIF9sb2cud2Fybmlu
ZygiICAlcyAtPiByZWYgdGVzdCBoYXNoZXMgZGlkbid0IG1hdGNoIGJ1dCBkaWZmIHBhc3NlZCIg
JSBzZWxmLl90ZXN0X25hbWUpCiAKICAgICAgICAgcmV0dXJuIFRlc3RSZXN1bHQoc2VsZi5fdGVz
dF9uYW1lLCBmYWlsdXJlcywgdG90YWxfdGVzdF90aW1lLCBoYXNfc3RkZXJyLCBwaWQ9YWN0dWFs
X2RyaXZlcl9vdXRwdXQucGlkKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQzYjA2ODcyMzFhNzUxMWE3YTM1NGU5MzExODc3
M2E0NTE5NjVmMDYuLmI0YzYwYzUwNGZjMjMyZjY3NjVlMTkzODM4ZDUxMzA1NTVmZjc3NmEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0wOC0wOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgTGF5b3V0VGVzdCBhY2Nlc3NpYmlsaXR5L21hYy9zZWxlY3QtZWxl
bWVudC1zZWxlY3Rpb24td2l0aC1vcHRncm91cHMuaHRtbCBpcyBhIGZsYWt5IGZhaWx1cmUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTM0MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0v
bWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zOiBGaXhlZCBleHBlY3RhdGlvbiBmb3IgYW5vdGhlciBh
Y2Nlc3NpYmlsaXR5IHRlc3QsCisgICAgICAgIGFjY2Vzc2liaWxpdHkvbWFjL2V4cGFuZGVkLW5v
dGlmaWNhdGlvbi5odG1sIHRvIGV4cGVjdCBmbGFraW5lc3MsIG5vdCBmYWlsdXJlLCBiZWNhdXNl
IHRoYXQncworICAgICAgICB3aGF0IHRoZSBidWcgdGhhdCB3ZW50IGFsb25nIHdpdGggdGhpcyBl
eHBlY3RhdGlvbiBzYWlkLCBhbmQgaW5kZWVkIHRoZSB0ZXN0IG9mdGVuIHBhc3Nlcy4KKworICAg
ICAgICAqIHBsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9uczogUmVtb3ZlZCBmbGFraW5l
c3MgZXhwZWN0YXRpb24gZm9yCisgICAgICAgIGFjY2Vzc2liaWxpdHkvbWFjL3NlbGVjdC1lbGVt
ZW50LXNlbGVjdGlvbi13aXRoLW9wdGdyb3Vwcy5odG1sLCBzaW5jZSBpdCdzIG5vdyBmaXhlZC4K
KyAgICAgICAgRml4ZWQgYSAid2Via2tpdC5vcmciIHR5cG8sIHdoaWNoIGNhdXNlZCB0aGUgZXhw
ZWN0YXRpb24gZm9yCisgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL2Zhc3Qtc2Nyb2xs
LW1haW5mcmFtZS16b29tLmh0bWwgdG8gbm90IHdvcmsgYXMgZXhwZWN0ZWQuCisKIDIwMjAtMDgt
MDcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBdWRpb0NvbnRl
eHQgLyBPZmZsaW5lQXVkaW9Db250ZXh0IHNob3VsZCBzdXBwb3J0IGEgd2lkZXIgc2FtcGxlIHJh
dGUgcmFuZ2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4
cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9u
cwppbmRleCBiZDVhYjc2NjM2ODYyMzM1NjdmMDJhZDY2ZTM2ZjhkZDMxMzdhYWRhLi5iNmU1N2Qw
ZDQ1NTkzMzRjZjA0N2FiMTZiMjkyODZjOGY5YjI4OWEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCkBAIC04NTQsNyArODU0LDcgQEAgaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9zdGFsZS13aGlsZS1yZXZhbGlkYXRlIFsg
U2tpcCBdCiAKIHdlYmtpdC5vcmcvYi8yMDU0MTIgWyBNb2phdmUgRGVidWcgXSB3ZWJnbC8xLjAu
My9jb25mb3JtYW5jZS9yZW5kZXJpbmcvbWFueS1kcmF3LWNhbGxzLmh0bWwgWyBUaW1lb3V0IF0K
IAotd2Via2l0Lm9yZy9iLzIwNTQxMCBbIERlYnVnIF0gYWNjZXNzaWJpbGl0eS9tYWMvZXhwYW5k
ZWQtbm90aWZpY2F0aW9uLmh0bWwgWyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMDU0MTAgWyBE
ZWJ1ZyBdIGFjY2Vzc2liaWxpdHkvbWFjL2V4cGFuZGVkLW5vdGlmaWNhdGlvbi5odG1sIFsgUGFz
cyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzIwNjA3MSBlZGl0aW5nL3NwZWxsaW5nL2dyYW1t
YXIuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzIwNjA3MSBlZGl0aW5nL3NwZWxsaW5nL21h
cmtlcnMuaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0
RXhwZWN0YXRpb25zCmluZGV4IDIyOTMyNDljOGI2ZDRiYWFmY2Y2NDVlZWIxNGI5NWI1MWQwNjcz
NDYuLjA0ZTExNWY4YjgwOWY2NGI2Y2ZkODNjMGExYWNjYTdlMmFjYWFhYzQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTY1Myw4ICs2NTMs
NiBAQCB3ZWJraXQub3JnL2IvMTczODYxIFsgUmVsZWFzZSBdIGh0dHAvdGVzdHMvd2VicnRjL2Zp
bHRlcmluZy1pY2UtY2FuZGlkYXRlLWNyb3NzLQogCiB3ZWJraXQub3JnL2IvMTcyMTQ4IHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWlu
ZnJhbWUtdmVydGljYWwuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8xNzUz
NDEgYWNjZXNzaWJpbGl0eS9tYWMvc2VsZWN0LWVsZW1lbnQtc2VsZWN0aW9uLXdpdGgtb3B0Z3Jv
dXBzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMTcyMDQ0IFsgRGVidWcg
XSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9vcGVuLXJlcXVlc3Qt
cXVldWUuaHRtbCBbIFBhc3MgVGltZW91dCBdCiAKIHdlYmtpdC5vcmcvYi8xNzM3NzkgWyBEZWJ1
ZyBdIGZhc3Qvc2Nyb2xsaW5nL2Fycm93LWtleS1zY3JvbGwtaW4tcnRsLWRvY3VtZW50Lmh0bWwg
WyBQYXNzIEZhaWx1cmUgXQpAQCAtMTA4OCw3ICsxMDg2LDcgQEAgd2Via2l0Lm9yZy9iLzIxNDU3
NCBbIFJlbGVhc2UgXSBzdmcvYW5pbWF0aW9ucy9zbWlsLWxlYWstbGlzdC1wcm9wZXJ0eS1pbnN0
YW5jZXMKIAogd2Via2l0Lm9yZy9iLzIxNDU3OSBbIFJlbGVhc2UgXSBzdmcvYW5pbWF0aW9ucy9z
bWlsLWxlYWstZWxlbWVudC1pbnN0YW5jZXMuc3ZnIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2tp
dC5vcmcvYi8yMTQ2NTEgWyBEZWJ1ZyBdIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL2Zhc3Qtc2Ny
b2xsLW1haW5mcmFtZS16b29tLmh0bWwgWyBQYXNzIENyYXNoIF0KK3dlYmtpdC5vcmcvYi8yMTQ2
NTEgWyBEZWJ1ZyBdIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL2Zhc3Qtc2Nyb2xsLW1haW5mcmFt
ZS16b29tLmh0bWwgWyBQYXNzIENyYXNoIF0KIAogd2Via2l0Lm9yZy9iLzIxNDY2MSBbIERlYnVn
IF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDU2N0cFRyYW5zcG9y
dC1ldmVudHMuaHRtbCBbIFBhc3MgQ3Jhc2ggXQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406311</attachid>
            <date>2020-08-10 10:46:54 -0700</date>
            <delta_ts>2020-08-11 11:10:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175341-20200810104653.patch</filename>
            <type>text/plain</type>
            <size>47557</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1NDM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjExYTQ4NTNlZWUxMzRh
NDBkY2YxZWEyNjg1ZjFhMWJmNWIwMDA4ZC4uZDU5YjhjYWQyZGVlNDdjNTU5NzIwNDVlMGYxNGMz
MWU2ODM4ZDYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOSBAQAorMjAyMC0wOC0wOSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTGF5b3V0VGVzdCBhY2Nlc3Np
YmlsaXR5L21hYy9zZWxlY3QtZWxlbWVudC1zZWxlY3Rpb24td2l0aC1vcHRncm91cHMuaHRtbCBp
cyBhIGZsYWt5IGZhaWx1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3NTM0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEZhaWx1cmVzIHdlcmUgZHVlIHRvIG5ldyB3cmFwcGVyIG9iamVjdHMgYmVpbmcg
Y3JlYXRlZCBmb3IgSFRNTE9wdGlvbkVsZW1lbnQuCisgICAgICAgIFVubGlrZSBtb3N0IG90aGVy
IGFjY2Vzc2liaWxpdHkgb2JqZWN0cywgdGhlc2Ugd2VyZSBub3QgY2FjaGVkIGluIHRoZSBBWE9i
amVjdENhY2hlCisgICAgICAgIGFuZCBtdWx0aXBsZSB3cmFwcGVycyB3b3VsZCBiZSBjcmVhdGVk
IGZvciB0aGUgc2FtZSB1bmRlcmx5aW5nIG9wdGlvbi4gRml4ZWQgdGhpcworICAgICAgICBieSBj
aGFuZ2luZyBpdCB0byB0cmFjayB0aGUgb3B0aW9uIGVsZW1lbnQgaW4gdGhlIGNhY2hlIGluIHRo
ZSBjb252ZW50aW9uYWwgd2F5LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmdldE9yQ3JlYXRlKTog
QWRkZWQgY29kZSBmb3IgSFRNTE9wdGlvbkVsZW1lbnQgYW5kCisgICAgICAgIEhUTUxPcHRHcm91
cEVsZW1lbnQgc28gQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uIGFuZCBBY2Nlc3NpYmlsaXR5
TGlzdEJveE9wdGlvbgorICAgICAgICBjYW4gYmUgY3JlYXRlZCBpbiB0aGlzIGZ1bmN0aW9uLgor
ICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6Y3JlYXRlKTogUmVuYW1lZCB0aGUgdmVy
c2lvbiBvZiB0aGlzIHRoYXQgdGFrZXMgYW4KKyAgICAgICAgQWNjZXNzaWJpbGl0eVJvbGUgdG8g
bm90IGNsYWltIHRoYXQgaXQgZXZlciBnZXRzIHRoZSB2YWx1ZSBmcm9tIHRoZSBjYWNoZSwKKyAg
ICAgICAgYmVjYXVzZSBpdCBuZXZlciBkb2VzLiBBbHNvIHJlbW92ZWQgdGhlIGNhc2VzIGZvciBM
aXN0Qm94T3B0aW9uIGFuZCBNZW51TGlzdE9wdGlvbi4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L0FYT2JqZWN0Q2FjaGUuaDogVXBkYXRlZCBmb3IgYWJvdmUuCisKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5QVJJQUdyaWQ6OmFkZENoaWxkcmVuKTogVXNlIGNyZWF0ZS4KKworICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eUxpc3RCb3g6OmFkZENoaWxkcmVuKTogUmVtb3ZlZCBzdXBlci1vbGQg
Y29tbWVudCB0aGF0IG1lbnRpb25zCisgICAgICAgIHRoZSBsb25nLWFnby1yZW1vdmVkIFdNTC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlMaXN0Qm94OjpsaXN0Qm94T3B0aW9uQWNj
ZXNzaWJpbGl0eU9iamVjdCBjb25zdCk6IFVzZSB0aGUKKyAgICAgICAgZWxlbWVudCB0byBnZXQg
dGhlIGxpc3QgYm94IG9wdGlvbiByYXRoZXIgdGhhbiBjcmVhdGluZyBhIG5ldyBvbmUgZXZlcnkg
dGltZS4KKyAgICAgICAgTm8gbG9uZ2VyIGFueSBuZWVkIHRvIHNwZWNpYWwgY2FzZSA8aHI+IGVs
ZW1lbnRzIHNpbmNlIHRoZSBnZXRPckNyZWF0ZSBmdW5jdGlvbgorICAgICAgICB3aWxsIHJldHVy
biBuaWwgZm9yIG5vbi1vcHRpb24gZWxlbWVudHMgdGhhdCBkb24ndCBoYXZlIGEgcmVuZGVyZXIu
CisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uOjpBY2Nlc3Np
YmlsaXR5TGlzdEJveE9wdGlvbik6IFRha2UgdGhlIGVsZW1lbnQKKyAgICAgICAgaW4gdGhlIGNv
bnN0cnVjdG9yIGluc3RlYWQgb2YgdXNpbmcgYSBzZXBhcmF0ZSBmdW5jdGlvbiB0byBhc3NvY2lh
dGUgaXQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbjo6Y3Jl
YXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlv
bjo6bm9kZSBjb25zdCk6IEFkZGVkLiBGb3Igc29tZSByZWFzb24gdGhlCisgICAgICAgIEFjY2Vz
c2liaWxpdHlNZW51TGlzdE9wdGlvbiBjbGFzcyBoYWQgdGhpcyBmdW5jdGlvbiBhbmQgdGhpcyBv
bmUgZGlkIG5vdC4gVGhleQorICAgICAgICBzaG91bGQgYm90aCBoYXZlIGl0LgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246OmRldGFjaFJlbW90ZVBhcnRzKTog
QWRkZWQuIFRoaXMgbGV0cyB1cworICAgICAgICBjbGVhciB0aGUgcG9pbnRlciB0byB0aGUgZWxl
bWVudCBhdCB0aGUgY29ycmVjdCBtb21lbnQsIHJhdGhlciB0aGFuIHJlbHlpbmcgb24KKyAgICAg
ICAgd2lzaGZ1bCB0aGlua2luZyB0byBtYW5hZ2UgdGhlIHBvaW50ZXIgbGlmZXRpbWUuCisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5oOiBVcGRhdGVk
IGZvciBhYm92ZS4gTWFkZSBtb3N0CisgICAgICAgIGZ1bmN0aW9ucyBwcml2YXRlIGFuZCBmaW5h
bC4gRml4ZWQgaW5jbHVkZXMgYW5kIGZvcndhcmQgZGVjbGFyYXRpb25zLgorICAgICAgICBSZW1v
dmVkIHRoZSBzZXRIVE1MRWxlbWVudCBmdW5jdGlvbi4KKworICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlNZW51TGlzdDo6YWRkQ2hpbGRyZW4pOiBVc2UgY3JlYXRlLgorCisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uOjpBY2Nlc3NpYmlsaXR5TWVudUxpc3RP
cHRpb24pOiBUYWtlIHRoZQorICAgICAgICBlbGVtZW50IGluIHRoZSBjb25zdHJ1Y3RvciBpbnN0
ZWFkIG9mIHVzaW5nIGEgc2VwYXJhdGUgZnVuY3Rpb24gdG8gYXNzb2NpYXRlIGl0LgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uOjpjcmVhdGUpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6c2V0RWxlbWVu
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRp
b246OmFjdGlvbkVsZW1lbnQgY29uc3QpOiBVcGRhdGVkIGZvciByYXcKKyAgICAgICAgcG9pbnRl
ciBpbnN0ZWFkIG9mIFJlZlB0ci4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZW51
TGlzdE9wdGlvbjo6bm9kZSBjb25zdCk6IE1vdmVkIGhlcmUgZnJvbSB0aGUgaGVhZGVyLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uOjppc0VuYWJsZWQgY29u
c3QpOiBSZW1vdmVkIHVubmVlZGVkIGNhc3QKKyAgICAgICAgbm93IHRoYXQgbV9lbGVtZW50IGhh
cyBhIG1vcmUgc3BlY2lmaWMgdHlwZSwgYW5kIGFkZGVkIGEgbnVsbCBjaGVjay4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6aXNWaXNpYmxlIGNvbnN0KTog
UmVtb3ZlZCBkZXBlbmRlbmN5CisgICAgICAgIG9uIG1fcGFyZW50IHBvaW50ZXIsIHdoaWNoIGRv
ZXMgbm90IGV4aXN0IG5vdyB0aGF0IHdlIGRvbid0IGRlcml2ZSBmcm9tCisgICAgICAgIEFjY2Vz
c2liaWxpdHlNb2NrT2JqZWN0LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVM
aXN0T3B0aW9uOjppc1NlbGVjdGVkIGNvbnN0KTogUmVtb3ZlZCB1bm5lZWRlZCBjYXN0CisgICAg
ICAgIG5vdyB0aGF0IG1fZWxlbWVudCBoYXMgYSBtb3JlIHNwZWNpZmljIHR5cGUsIGFuZCBhZGRl
ZCBhIG51bGwgY2hlY2suCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVudUxpc3RP
cHRpb246OnNldFNlbGVjdGVkKTogRGl0dG8sIGJ1dCBubyBudWxsIGNoZWNrCisgICAgICAgIG5l
ZWRlZCBiZWNhdXNlIGNhblNldFNlbGVjdGVkQXR0cmlidXRlIHRha2VzIGNhcmUgb2YgdGhhdC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6c3RyaW5nVmFs
dWUgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZW51TGlz
dE9wdGlvbjo6ZGV0YWNoUmVtb3RlUGFydHMpOiBBZGRlZC4gVGhpcyBsZXRzIHVzCisgICAgICAg
IGNsZWFyIHRoZSBwb2ludGVyIHRvIHRoZSBlbGVtZW50IGF0IHRoZSBjb3JyZWN0IG1vbWVudCwg
cmF0aGVyIHRoYW4gcmVseWluZyBvbgorICAgICAgICBhIFJlZlB0ciB3aGljaCBjcmVhdGVzIGEg
cmVmZXJlbmNlIGN5Y2xlLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1l
bnVMaXN0T3B0aW9uLmg6IFVwZGF0ZWQgZm9yIGFib3ZlLiBNYXJrZWQKKyAgICAgICAgZnVuY3Rp
b25zIGZpbmFsIGluc3RlYWQgb2Ygb3ZlcnJpZGUuIENoYW5nZWQgbV9lbGVtZW50IGZyb20gUmVm
UHRyPEhUTUxFbGVtZW50PgorICAgICAgICB0byBIVE1MT3B0aW9uRWxlbWVudCogYW5kIGRlcml2
ZSBmcm9tIEFjY2Vzc2liaWxpdHlPYmplY3QgaW5zdGVhZCBvZgorICAgICAgICBBY2Nlc3NpYmls
aXR5TW9ja09iamVjdCwgc2luY2UgdGhlIGxhdHRlciBjbGFzcyBoYXMgbm90aGluZyB0byBvZmZl
ciB1cy4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9w
dXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6Om1l
bnVMaXN0T3B0aW9uQWNjZXNzaWJpbGl0eU9iamVjdCBjb25zdCk6CisgICAgICAgIFVzZSB0aGUg
ZWxlbWVudCB0byBnZXQgdGhlIG1lbnUgbGlzdCBvcHRpb24gcmF0aGVyIHRoYW4gY3JlYXRpbmcg
YSBuZXcgb25lCisgICAgICAgIGV2ZXJ5IHRpbWUuIE5vIGxvbmdlciBhbnkgbmVlZCB0byBjaGVj
ayB0aGF0IHRoZSB0eXBlIGlzIEhUTUxPcHRpb25FbGVtZW50CisgICAgICAgIGJlY2F1c2UgdGhh
dCdzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgY29kZSBpbiB0aGUgY2FjaGUgbm93LgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6OmFkZENoaWxkcmVuKTog
UmVtb3ZlZCB1bm5lZWRlZCBjYWxsCisgICAgICAgIHRvIHNldFBhcmVudCBzaW5jZSB0aGUgbWVu
dSBsaXN0IG9wdGlvbiBvYmplY3RzIG5vIGxvbmdlciBob2xkIHBhcmVudCBwb2ludGVycy4KKwor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6YWNjZXNzaWJsZU5hbWVGb3JOb2RlKTogQWRkZWQgYSBzcGVjaWFsIGNh
c2UgZm9yIEhUTUxPcHRpb25FbGVtZW50CisgICAgICAgIGxpa2UgdGhlIG9uZSBmb3IgSFRNTElu
cHV0RWxlbWVudC4gVGhlIGNvZGUgd29ya2VkIGZvciBmYWlybHkgd2VsbCBmb3Igb3B0aW9uCisg
ICAgICAgIGVsZW1lbnRzIGJlZm9yZSwgYWxtb3N0IGJ5IGFjY2lkZW50LCBhbmQgdGhlIHdheSBp
dCB3b3JrZWQgd2FzIHBlcnR1cmJlZCBieQorICAgICAgICB0aGUgY2hhbmdlIHRvIHdoZXRoZXIg
d2UgY2FjaGUgdGhvc2Ugb2JqZWN0cy4gVGhpcyBuZXdlciBjb2RlIHBhdGggd29ya3MgaW4gYQor
ICAgICAgICBtb3JlIHN0cmFpZ2h0Zm9yd2FyZCB3YXksIGtlZXBzIG91ciBleGlzdGluZyB0ZXN0
cyBwc2FzaW5nLCBhbmQgbGlrZWx5IGdldHMKKyAgICAgICAgc29tZSBlZGdlIGNhc2VzIGhhbmRs
ZWQgbW9yZSBjb3JyZWN0bHkgKHNob3VsZCBhZGQgbmV3IHRlc3RzIGZvciB0aG9zZSkuCisKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZG9jdW1lbnRMaW5rcyk6
IFVzZSBjcmVhdGUuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjphZGRJbWFnZU1hcENoaWxkcmVuKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjphZGRUZXh0RmllbGRDaGlsZHJlbik6IERpdHRvLgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5U2xpZGVyOjphZGRDaGlsZHJlbik6IERpdHRvLgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVNwaW5CdXR0b246OmFkZENoaWxkcmVuKTogRGl0dG8uCisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjphZGRDaGlsZHJlbik6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjpoZWFkZXJDb250YWluZXIpOiBEaXR0by4KKwor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGUuY3BwOgorICAgICAg
ICAoZmFsbGJhY2tPYmplY3QpOiBEZWxldGVkLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUdl
dE5hbWUpOiBBZGRlZCBudWxsIGNoZWNrLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUdldERl
c2NyaXB0aW9uKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlR2V0UGFyZW50KTog
RGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlR2V0TkNoaWxkcmVuKTogRGl0dG8uCisg
ICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlUmVmQ2hpbGQpOiBEaXR0by4KKyAgICAgICAgKHdlYmtp
dEFjY2Vzc2libGVHZXRJbmRleEluUGFyZW50KTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nl
c3NpYmxlR2V0QXR0cmlidXRlcyk6IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUdl
dFJvbGUpOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVSZWZTdGF0ZVNldCk6IERp
dHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZVJlZlJlbGF0aW9uU2V0KTogRGl0dG8uCisg
ICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlR2V0T2JqZWN0TG9jYWxlKTogRGl0dG8uCisgICAgICAg
ICh3ZWJraXRBY2Nlc3NpYmxlR2V0QWNjZXNzaWJpbGl0eU9iamVjdCk6IERpdHRvLgorICAgICAg
ICAod2Via2l0QWNjZXNzaWJsZURldGFjaCk6IFVzZSBudWxscHRyIGluc3RlYWQgb2YgZmFsbGJh
Y2tPYmplY3QuCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSXNEZXRhY2hlZCk6IERpdHRvLgor
CisgICAgICAgICogaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MT3B0aW9uRWxlbWVudDo6c2VsZWN0ZWQgY29uc3QpOiBNYWRlIHRoaXMgY29uc3QuIEFu
IGVhcmxpZXIKKyAgICAgICAgdmVyc2lvbiBvZiB0aGUgcGF0Y2ggcmVxdWlyZWQgdGhpczsgdGhl
IGxhdGVzdCB2ZXJzaW9uIGRvZXNuJ3QsIGJ1dCBpdCdzCisgICAgICAgIG1vcmUgbG9naWNhbCBh
bmQgYmV0dGVyIGZvciBpdCB0byBiZSBjb25zdC4KKyAgICAgICAgKiBodG1sL0hUTUxPcHRpb25F
bGVtZW50Lmg6IFVwZGF0ZWQgZm9yIGFib3ZlLgorCiAyMDIwLTA4LTEwICBBbnR0aSBLb2l2aXN0
byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXR1cm4gdmFsdWVzIG9mIEZvbnREYXRh
YmFzZTo6Y29sbGVjdGlvbkZvckZhbWlseSBhcmUgbm90IHRocmVhZCBzYWZlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCBjN2ZmZmNmYzI3
MzhkZjFiZjU2YTZhZmU0ZDQ1YjNlMDAxYzRiZGMzLi5iYjZiZDMxZjY4MjdkYjhkNGFlOTJjZTk1
OTJmNWYyODEwMWI0MjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhP
YmplY3RDYWNoZS5jcHAKQEAgLTc4LDcgKzc4LDEwIEBACiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxl
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxNZXRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFt
ZXMuaCIKKyNpbmNsdWRlICJIVE1MT3B0R3JvdXBFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTE9w
dGlvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCisjaW5jbHVkZSAi
SFRNTFNlbGVjdEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dC5oIgogI2luY2x1ZGUgIklubGluZUVsZW1lbnRCb3guaCIKICNpbmNsdWRlICJNYXRoTUxFbGVt
ZW50LmgiCkBAIC02NDAsNiArNjQzLDI0IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0
Q2FjaGU6OmdldE9yQ3JlYXRlKE5vZGUqIG5vZGUpCiAgICAgaWYgKCFub2RlLT5wYXJlbnRFbGVt
ZW50KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAorICAgIGJvb2wgaXNPcHRpb25F
bGVtZW50ID0gaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KCpub2RlKTsKKyAgICBpZiAoaXNPcHRpb25F
bGVtZW50IHx8IGlzPEhUTUxPcHRHcm91cEVsZW1lbnQ+KCpub2RlKSkgeworICAgICAgICBhdXRv
IHNlbGVjdCA9IGlzT3B0aW9uRWxlbWVudAorICAgICAgICAgICAgPyBkb3duY2FzdDxIVE1MT3B0
aW9uRWxlbWVudD4oKm5vZGUpLm93bmVyU2VsZWN0RWxlbWVudCgpCisgICAgICAgICAgICA6IGRv
d25jYXN0PEhUTUxPcHRHcm91cEVsZW1lbnQ+KCpub2RlKS5vd25lclNlbGVjdEVsZW1lbnQoKTsK
KyAgICAgICAgaWYgKCFzZWxlY3QpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IHdyYXBwZXI7CisgICAgICAgIGlmIChzZWxl
Y3QtPnVzZXNNZW51TGlzdCgpKSB7CisgICAgICAgICAgICBpZiAoIWlzT3B0aW9uRWxlbWVudCkK
KyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIHdyYXBwZXIgPSBB
Y2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb246OmNyZWF0ZShkb3duY2FzdDxIVE1MT3B0aW9uRWxl
bWVudD4oKm5vZGUpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB3cmFwcGVyID0gQWNj
ZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246OmNyZWF0ZShkb3duY2FzdDxIVE1MRWxlbWVudD4oKm5v
ZGUpKTsKKyAgICAgICAgY2FjaGVBbmRJbml0aWFsaXplV3JhcHBlcih3cmFwcGVyLmdldCgpLCBu
b2RlKTsKKyAgICAgICAgcmV0dXJuIHdyYXBwZXIuZ2V0KCk7CisgICAgfQorCiAgICAgLy8gSXQn
cyBvbmx5IGFsbG93ZWQgdG8gY3JlYXRlIGFuIEFjY2Vzc2liaWxpdHlPYmplY3QgZnJvbSBhIE5v
ZGUgaWYgaXQncyBpbiBhIGNhbnZhcyBzdWJ0cmVlLgogICAgIC8vIE9yIGlmIGl0J3MgYSBoaWRk
ZW4gZWxlbWVudCwgYnV0IHdlIHN0aWxsIHdhbnQgdG8gZXhwb3NlIGl0IGJlY2F1c2Ugb2Ygb3Ro
ZXIgQVJJQSBhdHRyaWJ1dGVzLgogICAgIGJvb2wgaW5DYW52YXNTdWJ0cmVlID0gbGluZWFnZU9m
VHlwZTxIVE1MQ2FudmFzRWxlbWVudD4oKm5vZGUtPnBhcmVudEVsZW1lbnQoKSkuZmlyc3QoKTsK
QEAgLTgwMSwxNSArODIyLDEyIEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6
OnJvb3RPYmplY3RGb3JGcmFtZShGcmFtZSogZnJhbWUpCiAgICAgcmV0dXJuIGdldE9yQ3JlYXRl
KGZyYW1lLT52aWV3KCkpOwogfSAgICAKICAgICAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2Jq
ZWN0Q2FjaGU6OmdldE9yQ3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUpCitBY2Nlc3NpYmls
aXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpjcmVhdGUoQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSkK
IHsKICAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gb2JqOwogCiAgICAgLy8gd2lsbCBi
ZSBmaWxsZWQgaW4uLi4KICAgICBzd2l0Y2ggKHJvbGUpIHsKLSAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpMaXN0Qm94T3B0aW9uOgotICAgICAgICBvYmogPSBBY2Nlc3NpYmlsaXR5TGlzdEJv
eE9wdGlvbjo6Y3JlYXRlKCk7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OkltYWdlTWFwTGluazoKICAgICAgICAgb2JqID0gQWNjZXNzaWJpbGl0eUltYWdlTWFw
TGluazo6Y3JlYXRlKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtODI1LDkgKzg0Myw2IEBAIEFjY2Vz
c2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmdldE9yQ3JlYXRlKEFjY2Vzc2liaWxpdHlS
b2xlIHJvbGUpCiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUxpc3RQb3B1cDoKICAg
ICAgICAgb2JqID0gQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6OmNyZWF0ZSgpOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51TGlzdE9wdGlvbjoKLSAg
ICAgICAgb2JqID0gQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uOjpjcmVhdGUoKTsKLSAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3BpbkJ1dHRvbjoKICAgICAg
ICAgb2JqID0gQWNjZXNzaWJpbGl0eVNwaW5CdXR0b246OmNyZWF0ZSgpOwogICAgICAgICBicmVh
azsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNo
ZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKaW5kZXgg
NGY0M2Y2MzhiODEzNDc1YWIzMGNiMThjMzU0YmI3NTdlMGQ5Njk0ZC4uM2U3ZGNhOTNlYjdlNjM0
OGUyYTZjMTg3ZDczNzg1YmE5NjdmNGU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTE1OSw3ICsxNTksNyBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgQWNjZXNzaWJpbGl0eU9iamVjdCogZ2V0T3JDcmVhdGUoTm9kZSopOwogCiAg
ICAgLy8gdXNlZCBmb3Igb2JqZWN0cyB3aXRob3V0IGJhY2tpbmcgZWxlbWVudHMKLSAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBnZXRPckNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZSk7CisgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogY3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlKTsKICAgICAKICAgICAv
LyB3aWxsIG9ubHkgcmV0dXJuIHRoZSBBY2Nlc3NpYmlsaXR5T2JqZWN0IGlmIGl0IGFscmVhZHkg
ZXhpc3RzCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogZ2V0KFJlbmRlck9iamVjdCopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdy
aWQuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdy
aWQuY3BwCmluZGV4IGUxNGE0NzFhY2MxNzJhMzRhNjdmMGM4ZjA3ZDA3YmU4YTgxYWQyNjEuLjRl
ZmJmNGUyNmJjYzU0YTQ2MmRmNjhhMGUxZTlkNGU4MTZjMDAzNGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKQEAg
LTEzOCw3ICsxMzgsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlBUklBR3JpZDo6YWRkQ2hpbGRyZW4o
KQogICAgIAogICAgIC8vIG1ha2UgdGhlIGNvbHVtbnMgYmFzZWQgb24gdGhlIG51bWJlciBvZiBj
b2x1bW5zIGluIHRoZSBmaXJzdCBib2R5CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNv
bHVtbkNvdW50OyArK2kpIHsKLSAgICAgICAgYXV0byYgY29sdW1uID0gZG93bmNhc3Q8QWNjZXNz
aWJpbGl0eVRhYmxlQ29sdW1uPigqYXhDYWNoZS0+Z2V0T3JDcmVhdGUoQWNjZXNzaWJpbGl0eVJv
bGU6OkNvbHVtbikpOworICAgICAgICBhdXRvJiBjb2x1bW4gPSBkb3duY2FzdDxBY2Nlc3NpYmls
aXR5VGFibGVDb2x1bW4+KCpheENhY2hlLT5jcmVhdGUoQWNjZXNzaWJpbGl0eVJvbGU6OkNvbHVt
bikpOwogICAgICAgICBjb2x1bW4uc2V0Q29sdW1uSW5kZXgoaSk7CiAgICAgICAgIGNvbHVtbi5z
ZXRQYXJlbnQodGhpcyk7CiAgICAgICAgIG1fY29sdW1ucy5hcHBlbmQoJmNvbHVtbik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3gu
Y3BwCmluZGV4IGQ5YjNlMjNhOTkyNWQ3YmRiMTIyMmVjYzdmMjYwY2M1ZDFmZDg5Y2MuLmY2YzU5
ZTk1ZmNmNzBkYWJhMjljNGVmNTI1YzBjYTEzNzIxYzFkMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwCkBAIC03NCw4
ICs3NCw2IEBAIHZvaWQgQWNjZXNzaWJpbGl0eUxpc3RCb3g6OmFkZENoaWxkcmVuKCkKICAgICBt
X2hhdmVDaGlsZHJlbiA9IHRydWU7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIGxpc3RJdGVtIDog
ZG93bmNhc3Q8SFRNTFNlbGVjdEVsZW1lbnQ+KCpzZWxlY3ROb2RlKS5saXN0SXRlbXMoKSkgewot
ICAgICAgICAvLyBUaGUgY2FzdCB0byBIVE1MRWxlbWVudCBiZWxvdyBpcyBzYWZlIGJlY2F1c2Ug
dGhlIG9ubHkgb3RoZXIgcG9zc2libGUgbGlzdEl0ZW0gdHlwZQotICAgICAgICAvLyB3b3VsZCBi
ZSBhIFdNTEVsZW1lbnQsIGJ1dCBXTUwgYnVpbGRzIGRvbid0IHVzZSBhY2Nlc3NpYmlsaXR5IGZl
YXR1cmVzIGF0IGFsbC4KICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbGlzdE9wdGlvbiA9
IGxpc3RCb3hPcHRpb25BY2Nlc3NpYmlsaXR5T2JqZWN0KGxpc3RJdGVtKTsKICAgICAgICAgaWYg
KGxpc3RPcHRpb24gJiYgIWxpc3RPcHRpb24tPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKICAg
ICAgICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kKGxpc3RPcHRpb24pOwpAQCAtMTM1LDE2ICsxMzMs
MTAgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5TGlzdEJveDo6dmlzaWJsZUNoaWxkcmVuKEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciYgcmVzdWx0KQogCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nl
c3NpYmlsaXR5TGlzdEJveDo6bGlzdEJveE9wdGlvbkFjY2Vzc2liaWxpdHlPYmplY3QoSFRNTEVs
ZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7Ci0gICAgLy8gc2tpcCBociBlbGVtZW50cwotICAgIGlm
ICghZWxlbWVudCB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKGhyVGFnKSkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCYgbGlzdEJveE9iamVjdCA9
ICptX3JlbmRlcmVyLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoQWNj
ZXNzaWJpbGl0eVJvbGU6Okxpc3RCb3hPcHRpb24pOwotICAgIGRvd25jYXN0PEFjY2Vzc2liaWxp
dHlMaXN0Qm94T3B0aW9uPihsaXN0Qm94T2JqZWN0KS5zZXRIVE1MRWxlbWVudChlbGVtZW50KTsK
LSAgICAKLSAgICByZXR1cm4gJmxpc3RCb3hPYmplY3Q7CisgICAgLy8gRklYTUU6IFdoeSBkb2Vz
IEFjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwOjptZW51TGlzdE9wdGlvbkFjY2Vzc2liaWxpdHlP
YmplY3QgY2hlY2sgaW5SZW5kZXJlZERvY3VtZW50LCBidXQgdGhpcyBkb2VzIG5vdD8KKyAgICBy
ZXR1cm4gbV9yZW5kZXJlci0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRl
KGVsZW1lbnQpOwogfQotICAgIAorCiBBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlMaXN0Qm94
OjplbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25z
dAogewogICAgIC8vIHRoZSBpbnRlcm5hbCBIVE1MU2VsZWN0RWxlbWVudCBtZXRob2RzIGZvciBy
ZXR1cm5pbmcgYSBsaXN0Ym94IG9wdGlvbiBhdCBhIHBvaW50CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3Bw
CmluZGV4IDViODM5YmRkMmQzOWM3ZDQ3ZjdkZWYxZTFjOWRlYjQxNzA4ZGNlMDAuLjkyODVkMGE2
ZTIwOWIzNzIwNzE5YmI1YmE1NjBmMjBlYWFlMDNlZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3Bw
CkBAIC0zMSwzMCArMzEsMjcgQEAKIAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNs
dWRlICJBY2Nlc3NpYmlsaXR5TGlzdEJveC5oIgotI2luY2x1ZGUgIkVsZW1lbnQuaCIKLSNpbmNs
dWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhU
TUxPcHRHcm91cEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MT3B0aW9uRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxTZWxlY3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1
ZGUgIlJlbmRlckxpc3RCb3guaCIKLSNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogICAgIAotQWNjZXNz
aWJpbGl0eUxpc3RCb3hPcHRpb246OkFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uKCkKLSAgICA6
IG1fb3B0aW9uRWxlbWVudChudWxscHRyKQorQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246OkFj
Y2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uKEhUTUxFbGVtZW50JiBlbGVtZW50KQorICAgIDogbV9v
cHRpb25FbGVtZW50KCZlbGVtZW50KQogewogfQogCiBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlv
bjo6fkFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uKCkgPSBkZWZhdWx0OwogICAgIAotUmVmPEFj
Y2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uPiBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbjo6Y3Jl
YXRlKCkKK1JlZjxBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbj4gQWNjZXNzaWJpbGl0eUxpc3RC
b3hPcHRpb246OmNyZWF0ZShIVE1MRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbigpKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbihlbGVtZW50KSk7CiB9CiAgICAg
CiBib29sIEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uOjppc0VuYWJsZWQoKSBjb25zdApAQCAt
MTYwLDYgKzE1NywxMSBAQCBFbGVtZW50KiBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbjo6YWN0
aW9uRWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fb3B0aW9uRWxlbWVudDsKIH0KIAorTm9k
ZSogQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246Om5vZGUoKSBjb25zdAoreworICAgIHJldHVy
biBtX29wdGlvbkVsZW1lbnQ7Cit9CisKIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxp
dHlMaXN0Qm94T3B0aW9uOjpwYXJlbnRPYmplY3QoKSBjb25zdAogewogICAgIEhUTUxTZWxlY3RF
bGVtZW50KiBwYXJlbnROb2RlID0gbGlzdEJveE9wdGlvblBhcmVudE5vZGUoKTsKQEAgLTIxOSw0
ICsyMjEsOSBAQCBpbnQgQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246Omxpc3RCb3hPcHRpb25J
bmRleCgpIGNvbnN0CiAgICAgcmV0dXJuIC0xOwogfQogCit2b2lkIEFjY2Vzc2liaWxpdHlMaXN0
Qm94T3B0aW9uOjpkZXRhY2hSZW1vdGVQYXJ0cyhBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGUp
Cit7CisgICAgbV9vcHRpb25FbGVtZW50ID0gbnVsbHB0cjsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5TGlzdEJveE9wdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5TGlzdEJveE9wdGlvbi5oCmluZGV4IDJkNzcyMzcxMjA1MTcyNjNjYzViZWViYzll
NWM5ODJhY2Y2NTA4MmQuLmNmMzE1MTUxZmI1ZTkxZTY5MWRiNDBkYjQxZmQwNmNlYTA5NDk2YWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxp
c3RCb3hPcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlMaXN0Qm94T3B0aW9uLmgKQEAgLTI5LDQ1ICsyOSw0MyBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCi0jaW5jbHVkZSAiSFRNTEVsZW1lbnQu
aCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIEFjY2Vzc2liaWxpdHlMaXN0Qm94OwotY2xhc3MgRWxlbWVudDsKK2NsYXNzIEhUTUxFbGVt
ZW50OwogY2xhc3MgSFRNTFNlbGVjdEVsZW1lbnQ7Ci0gICAgCisKIGNsYXNzIEFjY2Vzc2liaWxp
dHlMaXN0Qm94T3B0aW9uIGZpbmFsIDogcHVibGljIEFjY2Vzc2liaWxpdHlPYmplY3QgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8QWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24+IGNyZWF0ZSgp
OworICAgIHN0YXRpYyBSZWY8QWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24+IGNyZWF0ZShIVE1M
RWxlbWVudCYpOwogICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uKCk7Ci0g
ICAgCi0gICAgdm9pZCBzZXRIVE1MRWxlbWVudChIVE1MRWxlbWVudCogZWxlbWVudCkgeyBtX29w
dGlvbkVsZW1lbnQgPSBlbGVtZW50OyB9Ci0gICAgCi0gICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9s
ZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RC
b3hPcHRpb247IH0KLSAgICBib29sIGlzU2VsZWN0ZWQoKSBjb25zdCBvdmVycmlkZTsKLSAgICBi
b29sIGlzRW5hYmxlZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgaXNTZWxlY3RlZE9wdGlv
bkFjdGl2ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIFN0cmluZyBzdHJpbmdWYWx1ZSgpIGNvbnN0
IG92ZXJyaWRlOwotICAgIEVsZW1lbnQqIGFjdGlvbkVsZW1lbnQoKSBjb25zdCBvdmVycmlkZTsK
LSAgICBOb2RlKiBub2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9vcHRpb25FbGVtZW50
OyB9Ci0gICAgdm9pZCBzZXRTZWxlY3RlZChib29sKSBvdmVycmlkZTsKLSAgICBib29sIGNhblNl
dFNlbGVjdGVkQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBMYXlvdXRSZWN0IGVs
ZW1lbnRSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFy
ZW50T2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1NlbGVjdGVkKCkgY29uc3Qg
ZmluYWw7CisgICAgdm9pZCBzZXRTZWxlY3RlZChib29sKSBmaW5hbDsKIAogcHJpdmF0ZToKLSAg
ICBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbigpOworICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxp
dHlMaXN0Qm94T3B0aW9uKEhUTUxFbGVtZW50Jik7CiAKLSAgICBib29sIGlzTGlzdEJveE9wdGlv
bigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICBib29sIGNhbkhhdmVDaGls
ZHJlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgQWNjZXNzaWJpbGl0
eVJvbGUgcm9sZVZhbHVlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6
Okxpc3RCb3hPcHRpb247IH0KKyAgICBib29sIGlzRW5hYmxlZCgpIGNvbnN0IGZpbmFsOworICAg
IGJvb2wgaXNTZWxlY3RlZE9wdGlvbkFjdGl2ZSgpIGNvbnN0IGZpbmFsOworICAgIFN0cmluZyBz
dHJpbmdWYWx1ZSgpIGNvbnN0IGZpbmFsOworICAgIEVsZW1lbnQqIGFjdGlvbkVsZW1lbnQoKSBj
b25zdCBmaW5hbDsKKyAgICBOb2RlKiBub2RlKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBjYW5T
ZXRTZWxlY3RlZEF0dHJpYnV0ZSgpIGNvbnN0IGZpbmFsOworCisgICAgTGF5b3V0UmVjdCBlbGVt
ZW50UmVjdCgpIGNvbnN0IGZpbmFsOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9i
amVjdCgpIGNvbnN0IGZpbmFsOworCisgICAgYm9vbCBpc0xpc3RCb3hPcHRpb24oKSBjb25zdCBm
aW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBm
aW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIEhUTUxTZWxlY3RFbGVtZW50KiBsaXN0Qm94T3B0
aW9uUGFyZW50Tm9kZSgpIGNvbnN0OwogICAgIGludCBsaXN0Qm94T3B0aW9uSW5kZXgoKSBjb25z
dDsKICAgICBJbnRSZWN0IGxpc3RCb3hPcHRpb25SZWN0KCkgY29uc3Q7CiAgICAgQWNjZXNzaWJp
bGl0eU9iamVjdCogbGlzdEJveE9wdGlvbkFjY2Vzc2liaWxpdHlPYmplY3QoSFRNTEVsZW1lbnQq
KSBjb25zdDsKLSAgICBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgYm9vbCBjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0
IGZpbmFsOworCisgICAgdm9pZCBkZXRhY2hSZW1vdGVQYXJ0cyhBY2Nlc3NpYmlsaXR5RGV0YWNo
bWVudFR5cGUpIGZpbmFsOwogCiAgICAgSFRNTEVsZW1lbnQqIG1fb3B0aW9uRWxlbWVudDsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlN
ZW51TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlN
ZW51TGlzdC5jcHAKaW5kZXggYjBjM2MzMTNhZWJjMDk3Y2UwZDAxNzAzYTNhYWIxYTJlOTg4N2Ux
Yi4uNDk2ZGVhNTQ1MWU3MzIwNjY5MjBiM2IyOTk3MWVhNWRjYTQzZDNlNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNw
cApAQCAtNzEsNyArNzEsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlNZW51TGlzdDo6YWRkQ2hpbGRy
ZW4oKQogICAgIGlmICghY2FjaGUpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBsaXN0ID0gY2FjaGUtPmdldE9yQ3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xl
OjpNZW51TGlzdFBvcHVwKTsKKyAgICBhdXRvIGxpc3QgPSBjYWNoZS0+Y3JlYXRlKEFjY2Vzc2li
aWxpdHlSb2xlOjpNZW51TGlzdFBvcHVwKTsKICAgICBpZiAoIWxpc3QpCiAgICAgICAgIHJldHVy
bjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5TWVudUxpc3RPcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5TWVudUxpc3RPcHRpb24uY3BwCmluZGV4IDljMTY3Yzg3NzNmMDY1YjE2N2QxZmEy
MTk2N2Q5YzdlNmU0ZDU4OTMuLjNhMzdhYmU3OGExZGNlZmJmZGY4ZWU3ODJiMzNhOWU0N2IwZGYz
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU1lbnVMaXN0T3B0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbi5jcHAKQEAgLTM1LDM2ICszNSwzOSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLUFjY2Vzc2liaWxp
dHlNZW51TGlzdE9wdGlvbjo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uKCkKK0FjY2Vzc2li
aWxpdHlNZW51TGlzdE9wdGlvbjo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uKEhUTUxPcHRp
b25FbGVtZW50JiBlbGVtZW50KQorICAgIDogbV9lbGVtZW50KCZlbGVtZW50KQogewogfQogCi12
b2lkIEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6c2V0RWxlbWVudChIVE1MRWxlbWVudCog
ZWxlbWVudCkKK1JlZjxBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24+IEFjY2Vzc2liaWxpdHlN
ZW51TGlzdE9wdGlvbjo6Y3JlYXRlKEhUTUxPcHRpb25FbGVtZW50JiBlbGVtZW50KQogewotICAg
IEFTU0VSVF9BUkcoZWxlbWVudCwgaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpKTsKLSAg
ICBtX2VsZW1lbnQgPSBlbGVtZW50OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc2li
aWxpdHlNZW51TGlzdE9wdGlvbihlbGVtZW50KSk7CiB9CiAKIEVsZW1lbnQqIEFjY2Vzc2liaWxp
dHlNZW51TGlzdE9wdGlvbjo6YWN0aW9uRWxlbWVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
ZWxlbWVudC5nZXQoKTsKKyAgICByZXR1cm4gbV9lbGVtZW50OworfQorCitOb2RlKiBBY2Nlc3Np
YmlsaXR5TWVudUxpc3RPcHRpb246Om5vZGUoKSBjb25zdAoreworICAgIHJldHVybiBtX2VsZW1l
bnQ7CiB9CiAgICAgCiBib29sIEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6aXNFbmFibGVk
KCkgY29uc3QKIHsKLSAgICAvLyBpc0Rpc2FibGVkRm9ybUNvbnRyb2woKSByZXR1cm5zIHRydWUg
aWYgdGhlIHBhcmVudCA8c2VsZWN0PiBlbGVtZW50IGlzIGRpc2FibGVkLAotICAgIC8vIHdoaWNo
IHdlIGRvbid0IHdhbnQuCi0gICAgcmV0dXJuICFkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4o
Km1fZWxlbWVudCkub3duRWxlbWVudERpc2FibGVkKCk7CisgICAgcmV0dXJuIG1fZWxlbWVudCAm
JiAhbV9lbGVtZW50LT5vd25FbGVtZW50RGlzYWJsZWQoKTsKIH0KIAogYm9vbCBBY2Nlc3NpYmls
aXR5TWVudUxpc3RPcHRpb246OmlzVmlzaWJsZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3BhcmVu
dCkKKyAgICBpZiAoIW1fZWxlbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAg
IC8vIEluIGEgc2luZ2xlLW9wdGlvbiBzZWxlY3Qgd2l0aCB0aGUgcG9wdXAgY29sbGFwc2VkLCBv
bmx5IHRoZSBzZWxlY3RlZAotICAgIC8vIGl0ZW0gaXMgY29uc2lkZXJlZCB2aXNpYmxlLgotICAg
IHJldHVybiAhbV9wYXJlbnQtPmlzT2ZmU2NyZWVuKCkgfHwgaXNTZWxlY3RlZCgpOworCisgICAg
Ly8gSW4gYSBzaW5nbGUtb3B0aW9uIHNlbGVjdCB3aXRoIHRoZSBwb3B1cCBjb2xsYXBzZWQsIG9u
bHkgdGhlIHNlbGVjdGVkIGl0ZW0gaXMgY29uc2lkZXJlZCB2aXNpYmxlLgorICAgIGF1dG8gcGFy
ZW50ID0gbV9lbGVtZW50LT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUo
bV9lbGVtZW50LT5vd25lclNlbGVjdEVsZW1lbnQoKSk7CisgICAgcmV0dXJuIHBhcmVudCAmJiAo
IXBhcmVudC0+aXNPZmZTY3JlZW4oKSB8fCBpc1NlbGVjdGVkKCkpOwogfQogCiBib29sIEFjY2Vz
c2liaWxpdHlNZW51TGlzdE9wdGlvbjo6aXNPZmZTY3JlZW4oKSBjb25zdApAQCAtNzUsNyArNzgs
NyBAQCBib29sIEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6aXNPZmZTY3JlZW4oKSBjb25z
dAogCiBib29sIEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6aXNTZWxlY3RlZCgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PigqbV9lbGVtZW50KS5z
ZWxlY3RlZCgpOworICAgIHJldHVybiBtX2VsZW1lbnQgJiYgbV9lbGVtZW50LT5zZWxlY3RlZCgp
OwogfQogCiB2b2lkIEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6c2V0U2VsZWN0ZWQoYm9v
bCBzZWxlY3RlZCkKQEAgLTgzLDcgKzg2LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5TWVudUxpc3RP
cHRpb246OnNldFNlbGVjdGVkKGJvb2wgc2VsZWN0ZWQpCiAgICAgaWYgKCFjYW5TZXRTZWxlY3Rl
ZEF0dHJpYnV0ZSgpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgZG93bmNhc3Q8SFRNTE9w
dGlvbkVsZW1lbnQ+KCptX2VsZW1lbnQpLnNldFNlbGVjdGVkKHNlbGVjdGVkKTsKKyAgICBtX2Vs
ZW1lbnQtPnNldFNlbGVjdGVkKHNlbGVjdGVkKTsKIH0KIAogU3RyaW5nIEFjY2Vzc2liaWxpdHlN
ZW51TGlzdE9wdGlvbjo6bmFtZUZvck1TQUEoKSBjb25zdApAQCAtMTE4LDcgKzEyMSwxMiBAQCBM
YXlvdXRSZWN0IEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6ZWxlbWVudFJlY3QoKSBjb25z
dAogCiBTdHJpbmcgQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uOjpzdHJpbmdWYWx1ZSgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PigqbV9lbGVtZW50
KS5sYWJlbCgpOworICAgIHJldHVybiBtX2VsZW1lbnQgPyBtX2VsZW1lbnQtPmxhYmVsKCkgOiBT
dHJpbmcoKTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb246OmRldGFjaFJl
bW90ZVBhcnRzKEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZSkKK3sKKyAgICBtX2VsZW1lbnQg
PSBudWxscHRyOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24u
aAppbmRleCA1MTFmYTdiN2IxZjA3Mjc5ZmY2NjQ3MTNjNDQ1NmZmODY4Y2I2YTM3Li44NWEwNDhi
MzRkMWFjMDQ5NDRjN2YzMzJiNjczOTg4NzNmMmI0YWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uLmgK
QEAgLTI1LDM5ICsyNSw0MCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkFjY2Vzc2li
aWxpdHlNb2NrT2JqZWN0LmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdC5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEhUTUxFbGVtZW50OworY2xhc3MgSFRNTE9wdGlv
bkVsZW1lbnQ7CiAKLWNsYXNzIEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbiBmaW5hbCA6IHB1
YmxpYyBBY2Nlc3NpYmlsaXR5TW9ja09iamVjdCB7CitjbGFzcyBBY2Nlc3NpYmlsaXR5TWVudUxp
c3RPcHRpb24gZmluYWwgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eU9iamVjdCB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24+IGNyZWF0ZSgpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uKTsgfQotCi0gICAg
dm9pZCBzZXRFbGVtZW50KEhUTUxFbGVtZW50Kik7CisgICAgc3RhdGljIFJlZjxBY2Nlc3NpYmls
aXR5TWVudUxpc3RPcHRpb24+IGNyZWF0ZShIVE1MT3B0aW9uRWxlbWVudCYpOwogCiBwcml2YXRl
OgotICAgIEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbigpOworICAgIGV4cGxpY2l0IEFjY2Vz
c2liaWxpdHlNZW51TGlzdE9wdGlvbihIVE1MT3B0aW9uRWxlbWVudCYpOworCisgICAgYm9vbCBp
c01lbnVMaXN0T3B0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgYm9v
bCBpc01lbnVMaXN0T3B0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAg
IEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEFjY2Vz
c2liaWxpdHlSb2xlOjpNZW51TGlzdE9wdGlvbjsgfQorICAgIGJvb2wgY2FuSGF2ZUNoaWxkcmVu
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIEFjY2Vzc2liaWxpdHlSb2xl
IHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpN
ZW51TGlzdE9wdGlvbjsgfQotICAgIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBFbGVtZW50KiBhY3Rpb25FbGVtZW50KCkgY29uc3Qg
ZmluYWw7CisgICAgTm9kZSogbm9kZSgpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgaXNFbmFibGVk
KCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdCBmaW5hbDsKKyAgICBi
b29sIGlzT2ZmU2NyZWVuKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBpc1NlbGVjdGVkKCkgY29u
c3QgZmluYWw7CisgICAgU3RyaW5nIG5hbWVGb3JNU0FBKCkgY29uc3QgZmluYWw7CisgICAgdm9p
ZCBzZXRTZWxlY3RlZChib29sKSBmaW5hbDsKKyAgICBib29sIGNhblNldFNlbGVjdGVkQXR0cmli
dXRlKCkgY29uc3QgZmluYWw7CisgICAgTGF5b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0IGZp
bmFsOworICAgIFN0cmluZyBzdHJpbmdWYWx1ZSgpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgY29t
cHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdCBmaW5hbDsKIAotICAgIEVsZW1lbnQq
IGFjdGlvbkVsZW1lbnQoKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGlzRW5hYmxlZCgpIGNv
bnN0IG92ZXJyaWRlOwotICAgIGJvb2wgaXNWaXNpYmxlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
Ym9vbCBpc09mZlNjcmVlbigpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgaXNTZWxlY3RlZCgp
IGNvbnN0IG92ZXJyaWRlOwotICAgIFN0cmluZyBuYW1lRm9yTVNBQSgpIGNvbnN0IG92ZXJyaWRl
OwotICAgIHZvaWQgc2V0U2VsZWN0ZWQoYm9vbCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBjYW5TZXRT
ZWxlY3RlZEF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIExheW91dFJlY3QgZWxlbWVu
dFJlY3QoKSBjb25zdCBvdmVycmlkZTsKLSAgICBTdHJpbmcgc3RyaW5nVmFsdWUoKSBjb25zdCBv
dmVycmlkZTsKLSAgICBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgdm9pZCBkZXRhY2hSZW1vdGVQYXJ0cyhBY2Nlc3NpYmlsaXR5RGV0YWNo
bWVudFR5cGUpIGZpbmFsOwogCi0gICAgUmVmUHRyPEhUTUxFbGVtZW50PiBtX2VsZW1lbnQ7Cisg
ICAgSFRNTE9wdGlvbkVsZW1lbnQqIG1fZWxlbWVudDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU1lbnVMaXN0UG9wdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5TWVudUxpc3RQb3B1cC5jcHAKaW5kZXggN2IwMmMyMjQ5YzZhMzk0NjMxOTgzNDNh
MmU0NzgwZTQ0YjUxMTIxMC4uODFiNmMxZDQ4Mzg2YWUxYzM1MzBiNmYzMmQ5ODY0N2E1ZWZiMzVl
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
TWVudUxpc3RQb3B1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5TWVudUxpc3RQb3B1cC5jcHAKQEAgLTcwLDEzICs3MCwxMCBAQCBib29sIEFjY2Vz
c2liaWxpdHlNZW51TGlzdFBvcHVwOjpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNv
bnN0CiAKIEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbiogQWNjZXNzaWJpbGl0eU1lbnVMaXN0
UG9wdXA6Om1lbnVMaXN0T3B0aW9uQWNjZXNzaWJpbGl0eU9iamVjdChIVE1MRWxlbWVudCogZWxl
bWVudCkgY29uc3QKIHsKLSAgICBpZiAoIWlzPEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KSB8
fCAhZWxlbWVudC0+aW5SZW5kZXJlZERvY3VtZW50KCkpCisgICAgaWYgKCFlbGVtZW50IHx8ICFl
bGVtZW50LT5pblJlbmRlcmVkRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICBhdXRvJiBvcHRpb24gPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24+
KCpkb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKEFjY2Vzc2liaWxpdHlS
b2xlOjpNZW51TGlzdE9wdGlvbikpOwotICAgIG9wdGlvbi5zZXRFbGVtZW50KGVsZW1lbnQpOwot
Ci0gICAgcmV0dXJuICZvcHRpb247CisgICAgcmV0dXJuIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlN
ZW51TGlzdE9wdGlvbj4oZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShl
bGVtZW50KSk7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6OnByZXNzKCkK
QEAgLTEwMCwxMSArOTcsOSBAQCB2b2lkIEFjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwOjphZGRD
aGlsZHJlbigpCiAgICAgbV9oYXZlQ2hpbGRyZW4gPSB0cnVlOwogCiAgICAgZm9yIChjb25zdCBh
dXRvJiBsaXN0SXRlbSA6IGRvd25jYXN0PEhUTUxTZWxlY3RFbGVtZW50Pigqc2VsZWN0Tm9kZSku
bGlzdEl0ZW1zKCkpIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uKiBvcHRp
b24gPSBtZW51TGlzdE9wdGlvbkFjY2Vzc2liaWxpdHlPYmplY3QobGlzdEl0ZW0pOwotICAgICAg
ICBpZiAob3B0aW9uKSB7Ci0gICAgICAgICAgICBvcHRpb24tPnNldFBhcmVudCh0aGlzKTsKKyAg
ICAgICAgLy8gRklYTUU6IFdoeSBkb2VzIEFjY2Vzc2liaWxpdHlMaXN0Qm94OjphZGRDaGlsZHJl
biBjaGVjayBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGJ1dCB0aGlzIGRvZXMgbm90PworICAgICAg
ICBpZiAoYXV0byBvcHRpb24gPSBtZW51TGlzdE9wdGlvbkFjY2Vzc2liaWxpdHlPYmplY3QobGlz
dEl0ZW0pKQogICAgICAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmQob3B0aW9uKTsKLSAgICAgICAg
fQogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAppbmRleCA0MjRkYThjY2E4ODIyOWIwOWYzOTFm
NzFiOTc3N2U1MjBmMmFkYjY3Li43ODE1MWJjODhhN2E1OGZhZWVlYWUwMGIyYWY3NmJhOWE4ODg5
YmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlOb2RlT2JqZWN0LmNwcApAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUgIkhUTUxM
YWJlbEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTGVnZW5kRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAi
SFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkhUTUxTZWxlY3RFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTFRleHRBcmVhRWxlbWVudC5oIgpAQCAtMjAyNiw3ICsyMDI3LDcgQEAgc3RhdGlj
IFN0cmluZyBhY2Nlc3NpYmxlTmFtZUZvck5vZGUoTm9kZSogbm9kZSwgTm9kZSogbGFiZWxsZWRi
eU5vZGUpCiAKICAgICAvLyBJZiB0aGUgbm9kZSBjYW4gYmUgdHVybmVkIGludG8gYW4gQVggb2Jq
ZWN0LCB3ZSBjYW4gdXNlIHN0YW5kYXJkIG5hbWUgY29tcHV0YXRpb24gcnVsZXMuCiAgICAgLy8g
SWYgaG93ZXZlciwgdGhlIG5vZGUgY2Fubm90IChiZWNhdXNlIHRoZXJlJ3Mgbm8gcmVuZGVyZXIg
ZS5nLikgZmFsbGJhY2sgdG8gdXNpbmcgdGhlIGJhc2ljIHRleHQgdW5kZXJuZWF0aC4KLSAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVjdCA9IG5vZGUtPmRvY3VtZW50KCkuYXhPYmplY3RD
YWNoZSgpLT5nZXRPckNyZWF0ZShub2RlKTsKKyAgICBhdXRvIGF4T2JqZWN0ID0gZWxlbWVudC5k
b2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoJmVsZW1lbnQpOwogICAgIGlm
IChheE9iamVjdCkgewogICAgICAgICBTdHJpbmcgdmFsdWVEZXNjcmlwdGlvbiA9IGF4T2JqZWN0
LT52YWx1ZURlc2NyaXB0aW9uKCk7CiAgICAgICAgIGlmICghdmFsdWVEZXNjcmlwdGlvbi5pc0Vt
cHR5KCkpCkBAIC0yMDU2LDkgKzIwNTcsMTEgQEAgc3RhdGljIFN0cmluZyBhY2Nlc3NpYmxlTmFt
ZUZvck5vZGUoTm9kZSogbm9kZSwgTm9kZSogbGFiZWxsZWRieU5vZGUpCiAgICAgICAgICAgICBy
ZXR1cm4gY2hpbGRUZXh0OwogICAgIH0KICAgICAKLSAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVu
dD4oKm5vZGUpKQotICAgICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm5v
ZGUpLnZhbHVlKCk7Ci0gICAgCisgICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KGVsZW1lbnQp
KQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oZWxlbWVudCkudmFs
dWUoKTsKKyAgICBpZiAoaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpKQorICAgICAgICBy
ZXR1cm4gZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpLnZhbHVlKCk7CisKICAg
ICBTdHJpbmcgdGV4dDsKICAgICBpZiAoYXhPYmplY3QpIHsKICAgICAgICAgaWYgKGF4T2JqZWN0
LT5hY2Nlc3NpYmxlTmFtZURlcml2ZXNGcm9tQ29udGVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAK
aW5kZXggM2M0NGVjODk4NGI2N2Y2Y2E5OGI3MDk3ZjQ3YzYwMjZkODU2NTQxNy4uMGQ4MzhkNTc0
ODFmYjQ3YmQ5ZmUyOWQ5N2E1ZGMwOWFiMWQ4Y2FiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBA
IC0xOTQ5LDcgKzE5NDksNyBAQCBBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpkb2N1bWVudExpbgogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgYXV0byogcGFyZW50ID0gY3VycmVudC0+cGFyZW50Tm9kZSgpOwog
ICAgICAgICAgICAgaWYgKGlzPEhUTUxBcmVhRWxlbWVudD4oKmN1cnJlbnQpICYmIGlzPEhUTUxN
YXBFbGVtZW50PihwYXJlbnQpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byYgYXJlYU9iamVjdCA9
IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms+KCpheE9iamVjdENhY2hlKCktPmdl
dE9yQ3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlOjpJbWFnZU1hcExpbmspKTsKKyAgICAgICAgICAg
ICAgICBhdXRvJiBhcmVhT2JqZWN0ID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eUltYWdlTWFwTGlu
az4oKmF4T2JqZWN0Q2FjaGUoKS0+Y3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlOjpJbWFnZU1hcExp
bmspKTsKICAgICAgICAgICAgICAgICBIVE1MTWFwRWxlbWVudCYgbWFwID0gZG93bmNhc3Q8SFRN
TE1hcEVsZW1lbnQ+KCpwYXJlbnQpOwogICAgICAgICAgICAgICAgIGFyZWFPYmplY3Quc2V0SFRN
TEFyZWFFbGVtZW50KGRvd25jYXN0PEhUTUxBcmVhRWxlbWVudD4oY3VycmVudCkpOwogICAgICAg
ICAgICAgICAgIGFyZWFPYmplY3Quc2V0SFRNTE1hcEVsZW1lbnQoJm1hcCk7CkBAIC0zMTczLDcg
KzMxNzMsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZEltYWdlTWFwQ2hp
bGRyZW4oKQogICAgICAgICAvLyBhZGQgYW4gPGFyZWE+IGVsZW1lbnQgZm9yIHRoaXMgY2hpbGQg
aWYgaXQgaGFzIGEgbGluawogICAgICAgICBpZiAoIWFyZWEuaXNMaW5rKCkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgYXV0byYgYXJlYU9iamVjdCA9IGRvd25jYXN0PEFjY2Vzc2li
aWxpdHlJbWFnZU1hcExpbms+KCpheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKEFjY2Vzc2li
aWxpdHlSb2xlOjpJbWFnZU1hcExpbmspKTsKKyAgICAgICAgYXV0byYgYXJlYU9iamVjdCA9IGRv
d25jYXN0PEFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms+KCpheE9iamVjdENhY2hlKCktPmNyZWF0
ZShBY2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2VNYXBMaW5rKSk7CiAgICAgICAgIGFyZWFPYmplY3Qu
c2V0SFRNTEFyZWFFbGVtZW50KCZhcmVhKTsKICAgICAgICAgYXJlYU9iamVjdC5zZXRIVE1MTWFw
RWxlbWVudChtYXApOwogICAgICAgICBhcmVhT2JqZWN0LnNldFBhcmVudCh0aGlzKTsKQEAgLTMy
MDgsNyArMzIwOCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkVGV4dEZp
ZWxkQ2hpbGRyZW4oKQogICAgIGlmICghaXM8U3BpbkJ1dHRvbkVsZW1lbnQ+KHNwaW5CdXR0b25F
bGVtZW50KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byYgYXhTcGluQnV0dG9uID0gZG93
bmNhc3Q8QWNjZXNzaWJpbGl0eVNwaW5CdXR0b24+KCpheE9iamVjdENhY2hlKCktPmdldE9yQ3Jl
YXRlKEFjY2Vzc2liaWxpdHlSb2xlOjpTcGluQnV0dG9uKSk7CisgICAgYXV0byYgYXhTcGluQnV0
dG9uID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVNwaW5CdXR0b24+KCpheE9iamVjdENhY2hlKCkt
PmNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6U3BpbkJ1dHRvbikpOwogICAgIGF4U3BpbkJ1dHRv
bi5zZXRTcGluQnV0dG9uRWxlbWVudChkb3duY2FzdDxTcGluQnV0dG9uRWxlbWVudD4oc3BpbkJ1
dHRvbkVsZW1lbnQpKTsKICAgICBheFNwaW5CdXR0b24uc2V0UGFyZW50KHRoaXMpOwogICAgIG1f
Y2hpbGRyZW4uYXBwZW5kKCZheFNwaW5CdXR0b24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHAKaW5kZXggYTFhMTQ3OTllZWU1
NzQxNWQ4ZWU1Mzk4YzU2YjBhMWQ3ODcxMDdjZi4uMGViMWIyYmI5MTBlNWNjZTA4M2ZiZDAyNDhi
NDcxYTUyOWU2YmFmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5U2xpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgQWNjZXNzaWJp
bGl0eVNsaWRlcjo6YWRkQ2hpbGRyZW4oKQogCiAgICAgQVhPYmplY3RDYWNoZSogY2FjaGUgPSBt
X3JlbmRlcmVyLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKTsKIAotICAgIGF1dG8mIHRodW1i
ID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVNsaWRlclRodW1iPigqY2FjaGUtPmdldE9yQ3JlYXRl
KEFjY2Vzc2liaWxpdHlSb2xlOjpTbGlkZXJUaHVtYikpOworICAgIGF1dG8mIHRodW1iID0gZG93
bmNhc3Q8QWNjZXNzaWJpbGl0eVNsaWRlclRodW1iPigqY2FjaGUtPmNyZWF0ZShBY2Nlc3NpYmls
aXR5Um9sZTo6U2xpZGVyVGh1bWIpKTsKICAgICB0aHVtYi5zZXRQYXJlbnQodGhpcyk7CiAKICAg
ICAvLyBCZWZvcmUgYWN0dWFsbHkgYWRkaW5nIHRoZSB2YWx1ZSBpbmRpY2F0b3IgdG8gdGhlIGhp
ZXJhcmNoeSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVNwaW5CdXR0b24uY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5U3BpbkJ1dHRvbi5jcHAKaW5kZXggN2QwYTZhNDNhYTUxMDkxNjlkYmViYWE0MjRj
NmRmOTRiN2YzZGFmOS4uOTI5ZjYxMzVjMjJlZDBhOThkNmVjNTcxNDQ4NjFmZmRkNGQwNzliZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3Bp
bkJ1dHRvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5U3BpbkJ1dHRvbi5jcHAKQEAgLTg4LDEyICs4OCwxMiBAQCB2b2lkIEFjY2Vzc2liaWxpdHlT
cGluQnV0dG9uOjphZGRDaGlsZHJlbigpCiAgICAgCiAgICAgbV9oYXZlQ2hpbGRyZW4gPSB0cnVl
OwogICAgIAotICAgIGF1dG8mIGluY3JlbWVudG9yID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVNw
aW5CdXR0b25QYXJ0PigqY2FjaGUtPmdldE9yQ3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlOjpTcGlu
QnV0dG9uUGFydCkpOworICAgIGF1dG8mIGluY3JlbWVudG9yID0gZG93bmNhc3Q8QWNjZXNzaWJp
bGl0eVNwaW5CdXR0b25QYXJ0PigqY2FjaGUtPmNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6U3Bp
bkJ1dHRvblBhcnQpKTsKICAgICBpbmNyZW1lbnRvci5zZXRJc0luY3JlbWVudG9yKHRydWUpOwog
ICAgIGluY3JlbWVudG9yLnNldFBhcmVudCh0aGlzKTsKICAgICBtX2NoaWxkcmVuLmFwcGVuZCgm
aW5jcmVtZW50b3IpOwogCi0gICAgYXV0byYgZGVjcmVtZW50b3IgPSBkb3duY2FzdDxBY2Nlc3Np
YmlsaXR5U3BpbkJ1dHRvblBhcnQ+KCpjYWNoZS0+Z2V0T3JDcmVhdGUoQWNjZXNzaWJpbGl0eVJv
bGU6OlNwaW5CdXR0b25QYXJ0KSk7CisgICAgYXV0byYgZGVjcmVtZW50b3IgPSBkb3duY2FzdDxB
Y2Nlc3NpYmlsaXR5U3BpbkJ1dHRvblBhcnQ+KCpjYWNoZS0+Y3JlYXRlKEFjY2Vzc2liaWxpdHlS
b2xlOjpTcGluQnV0dG9uUGFydCkpOwogICAgIGRlY3JlbWVudG9yLnNldElzSW5jcmVtZW50b3Io
ZmFsc2UpOwogICAgIGRlY3JlbWVudG9yLnNldFBhcmVudCh0aGlzKTsKICAgICBtX2NoaWxkcmVu
LmFwcGVuZCgmZGVjcmVtZW50b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCmluZGV4IGNiYjZhZmU1YjE0NjgzNmU2ZTQzZjUy
MTY3ZjVmMGQxYWE0MzllZGUuLjdlOWExZmI4MmRkODE4MzNkNDIwZTUyNzQ5ZTM2Y2Q3NTY5YjA3
MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlUYWJsZS5jcHAKQEAgLTQxNyw3ICs0MTcsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6
YWRkQ2hpbGRyZW4oKQogICAgIC8vIG1ha2UgdGhlIGNvbHVtbnMgYmFzZWQgb24gdGhlIG51bWJl
ciBvZiBjb2x1bW5zIGluIHRoZSBmaXJzdCBib2R5CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gbWF4
Q29sdW1uQ291bnQ7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7
Ci0gICAgICAgIGF1dG8mIGNvbHVtbiA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVt
bj4oKmF4Q2FjaGUtPmdldE9yQ3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlOjpDb2x1bW4pKTsKKyAg
ICAgICAgYXV0byYgY29sdW1uID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uPigq
YXhDYWNoZS0+Y3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlOjpDb2x1bW4pKTsKICAgICAgICAgY29s
dW1uLnNldENvbHVtbkluZGV4KGkpOwogICAgICAgICBjb2x1bW4uc2V0UGFyZW50KHRoaXMpOwog
ICAgICAgICBtX2NvbHVtbnMuYXBwZW5kKCZjb2x1bW4pOwpAQCAtNTA1LDcgKzUwNSw3IEBAIEFY
Q29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVRhYmxlOjpoZWFkZXJDb250YWluZXIoKQogICAgIGlm
IChtX2hlYWRlckNvbnRhaW5lcikKICAgICAgICAgcmV0dXJuIG1faGVhZGVyQ29udGFpbmVyLmdl
dCgpOwogICAgIAotICAgIGF1dG8mIHRhYmxlSGVhZGVyID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0
eU1vY2tPYmplY3Q+KCpheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKEFjY2Vzc2liaWxpdHlS
b2xlOjpUYWJsZUhlYWRlckNvbnRhaW5lcikpOworICAgIGF1dG8mIHRhYmxlSGVhZGVyID0gZG93
bmNhc3Q8QWNjZXNzaWJpbGl0eU1vY2tPYmplY3Q+KCpheE9iamVjdENhY2hlKCktPmNyZWF0ZShB
Y2Nlc3NpYmlsaXR5Um9sZTo6VGFibGVIZWFkZXJDb250YWluZXIpKTsKICAgICB0YWJsZUhlYWRl
ci5zZXRQYXJlbnQodGhpcyk7CiAKICAgICBtX2hlYWRlckNvbnRhaW5lciA9ICZ0YWJsZUhlYWRl
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFj
Y2Vzc2libGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNj
ZXNzaWJsZS5jcHAKaW5kZXggMGQ0MTFmNDNlOWU0OTc3NDQzYzgyNTZiOWZiOTc4ZGNlOGM4ZGVj
Yi4uODZjMzBjZGQ2NjYzNzE0Zjc4ZjYzZTE5ZDczYTVjMjA4ZDg3ZWI2ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZS5jcHAK
QEAgLTk3LDE3ICs5NywxNCBAQCBzdHJ1Y3QgX1dlYktpdEFjY2Vzc2libGVQcml2YXRlIHsKIAog
V0VCS0lUX0RFRklORV9UWVBFKFdlYktpdEFjY2Vzc2libGUsIHdlYmtpdF9hY2Nlc3NpYmxlLCBB
VEtfVFlQRV9PQkpFQ1QpCiAKLXN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBmYWxsYmFja09i
amVjdCgpCi17Ci0gICAgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCA9ICZBY2Nl
c3NpYmlsaXR5TGlzdEJveE9wdGlvbjo6Y3JlYXRlKCkubGVha1JlZigpOwotICAgIHJldHVybiBv
YmplY3Q7Ci19Ci0KIHN0YXRpYyBjb25zdCBnY2hhciogd2Via2l0QWNjZXNzaWJsZUdldE5hbWUo
QXRrT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgYXV0byogYWNjZXNzaWJsZSA9IFdFQktJVF9BQ0NF
U1NJQkxFKG9iamVjdCk7CiAgICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZhbGlk
KGFjY2Vzc2libGUsIG51bGxwdHIpOwogCisgICAgaWYgKCFhY2Nlc3NpYmxlLT5wcml2LT5vYmpl
Y3QpCisgICAgICAgIHJldHVybiAiIjsKKwogICAgIFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4dD4g
dGV4dE9yZGVyOwogICAgIGFjY2Vzc2libGUtPnByaXYtPm9iamVjdC0+YWNjZXNzaWJpbGl0eVRl
eHQodGV4dE9yZGVyKTsKIApAQCAtMTMzLDYgKzEzMCw5IEBAIHN0YXRpYyBjb25zdCBnY2hhciog
d2Via2l0QWNjZXNzaWJsZUdldERlc2NyaXB0aW9uKEF0a09iamVjdCogb2JqZWN0KQogICAgIGF1
dG8qIGFjY2Vzc2libGUgPSBXRUJLSVRfQUNDRVNTSUJMRShvYmplY3QpOwogICAgIHJldHVyblZh
bElmV2ViS2l0QWNjZXNzaWJsZUlzSW52YWxpZChhY2Nlc3NpYmxlLCBudWxscHRyKTsKIAorICAg
IGlmICghYWNjZXNzaWJsZS0+cHJpdi0+b2JqZWN0KQorICAgICAgICByZXR1cm4gIiI7CisKICAg
ICBWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+IHRleHRPcmRlcjsKICAgICBhY2Nlc3NpYmxlLT5w
cml2LT5vYmplY3QtPmFjY2Vzc2liaWxpdHlUZXh0KHRleHRPcmRlcik7CiAKQEAgLTMxMiw2ICsz
MTIsOCBAQCBzdGF0aWMgQXRrT2JqZWN0KiB3ZWJraXRBY2Nlc3NpYmxlR2V0UGFyZW50KEF0a09i
amVjdCogb2JqZWN0KQogCiAgICAgLy8gUGFyZW50IG5vdCBzZXQgeWV0LCBzbyB0cnkgdG8gZmlu
ZCBpdCBpbiB0aGUgaGllcmFyY2h5LgogICAgIGF1dG8qIGNvcmVPYmplY3QgPSBhY2Nlc3NpYmxl
LT5wcml2LT5vYmplY3Q7CisgICAgaWYgKCFjb3JlT2JqZWN0KQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICBhdXRvKiBjb3JlUGFyZW50ID0gY29yZU9iamVjdC0+cGFyZW50T2JqZWN0VW5p
Z25vcmVkKCk7CiAgICAgaWYgKCFjb3JlUGFyZW50ICYmIGlzUm9vdE9iamVjdChjb3JlT2JqZWN0
KSkgewogICAgICAgICAvLyBUaGUgdG9wIGxldmVsIG9iamVjdCBjbGFpbXMgdG8gbm90IGhhdmUg
YSBwYXJlbnQuIFRoaXMgbWFrZXMgaXQKQEAgLTMyOSw2ICszMzEsOCBAQCBzdGF0aWMgZ2ludCB3
ZWJraXRBY2Nlc3NpYmxlR2V0TkNoaWxkcmVuKEF0a09iamVjdCogb2JqZWN0KQogICAgIGF1dG8q
IGFjY2Vzc2libGUgPSBXRUJLSVRfQUNDRVNTSUJMRShvYmplY3QpOwogICAgIHJldHVyblZhbElm
V2ViS2l0QWNjZXNzaWJsZUlzSW52YWxpZChhY2Nlc3NpYmxlLCAwKTsKIAorICAgIGlmICghYWNj
ZXNzaWJsZS0+cHJpdi0+b2JqZWN0KQorICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gYWNj
ZXNzaWJsZS0+cHJpdi0+b2JqZWN0LT5jaGlsZHJlbigpLnNpemUoKTsKIH0KIApAQCAtMzM3LDcg
KzM0MSw3IEBAIHN0YXRpYyBBdGtPYmplY3QqIHdlYmtpdEFjY2Vzc2libGVSZWZDaGlsZChBdGtP
YmplY3QqIG9iamVjdCwgZ2ludCBpbmRleCkKICAgICBhdXRvKiBhY2Nlc3NpYmxlID0gV0VCS0lU
X0FDQ0VTU0lCTEUob2JqZWN0KTsKICAgICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0lu
dmFsaWQoYWNjZXNzaWJsZSwgbnVsbHB0cik7CiAKLSAgICBpZiAoaW5kZXggPCAwKQorICAgIGlm
ICghYWNjZXNzaWJsZS0+cHJpdi0+b2JqZWN0IHx8IGluZGV4IDwgMCkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBjb25zdCBhdXRvJiBjaGlsZHJlbiA9IGFjY2Vzc2libGUtPnByaXYt
Pm9iamVjdC0+Y2hpbGRyZW4oKTsKQEAgLTM2Miw2ICszNjYsOCBAQCBzdGF0aWMgZ2ludCB3ZWJr
aXRBY2Nlc3NpYmxlR2V0SW5kZXhJblBhcmVudChBdGtPYmplY3QqIG9iamVjdCkKICAgICByZXR1
cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQoYWNjZXNzaWJsZSwgLTEpOwogCiAgICAg
YXV0byogY29yZU9iamVjdCA9IGFjY2Vzc2libGUtPnByaXYtPm9iamVjdDsKKyAgICBpZiAoIWNv
cmVPYmplY3QpCisgICAgICAgIHJldHVybiAtMTsKICAgICBhdXRvKiBwYXJlbnQgPSBjb3JlT2Jq
ZWN0LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICBpZiAoIXBhcmVudCAmJiBpc1Jvb3RP
YmplY3QoY29yZU9iamVjdCkpIHsKICAgICAgICAgaWYgKCFjb3JlT2JqZWN0LT5kb2N1bWVudCgp
KQpAQCAtMzk5LDYgKzQwNSw4IEBAIHN0YXRpYyBBdGtBdHRyaWJ1dGVTZXQqIHdlYmtpdEFjY2Vz
c2libGVHZXRBdHRyaWJ1dGVzKEF0a09iamVjdCogb2JqZWN0KQogI2VuZGlmCiAKICAgICBhdXRv
KiBjb3JlT2JqZWN0ID0gYWNjZXNzaWJsZS0+cHJpdi0+b2JqZWN0OworICAgIGlmICghY29yZU9i
amVjdCkKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZVNldDsKIAogICAgIC8vIEhhY2sgbmVlZGVk
IGZvciBXZWJLaXQyIHRlc3RzIGJlY2F1c2Ugb2J0YWluaW5nIGFuIGVsZW1lbnQgYnkgaXRzIElE
CiAgICAgLy8gY2Fubm90IGJlIGRvbmUgZnJvbSB0aGUgVUlQcm9jZXNzLiBBc3Npc3RpdmUgdGVj
aG5vbG9naWVzIGhhdmUgbm8gbmVlZApAQCAtODM2LDYgKzg0NCw5IEBAIHN0YXRpYyBBdGtSb2xl
IHdlYmtpdEFjY2Vzc2libGVHZXRSb2xlKEF0a09iamVjdCogb2JqZWN0KQogICAgIGF1dG8qIGFj
Y2Vzc2libGUgPSBXRUJLSVRfQUNDRVNTSUJMRShvYmplY3QpOwogICAgIHJldHVyblZhbElmV2Vi
S2l0QWNjZXNzaWJsZUlzSW52YWxpZChhY2Nlc3NpYmxlLCBBVEtfUk9MRV9JTlZBTElEKTsKIAor
ICAgIGlmICghYWNjZXNzaWJsZS0+cHJpdi0+b2JqZWN0KQorICAgICAgICByZXR1cm4gQVRLX1JP
TEVfSU5WQUxJRDsKKyAgICAKICAgICAvLyBOb3RlOiBXaHkgZG9lc24ndCBXZWJDb3JlIGhhdmUg
YSBwYXNzd29yZCBmaWVsZCBmb3IgdGhpcwogICAgIGlmIChhY2Nlc3NpYmxlLT5wcml2LT5vYmpl
Y3QtPmlzUGFzc3dvcmRGaWVsZCgpKQogICAgICAgICByZXR1cm4gQVRLX1JPTEVfUEFTU1dPUkRf
VEVYVDsKQEAgLTEwMDYsOSArMTAxNyw5IEBAIHN0YXRpYyBBdGtTdGF0ZVNldCogd2Via2l0QWNj
ZXNzaWJsZVJlZlN0YXRlU2V0KEF0a09iamVjdCogb2JqZWN0KQogCiAgICAgLy8gTWFrZSBzdXJl
IHRoZSBsYXlvdXQgaXMgdXBkYXRlZCB0byByZWFsbHkga25vdyB3aGV0aGVyIHRoZSBvYmplY3QK
ICAgICAvLyBpcyBkZWZ1bmN0IG9yIG5vdCwgc28gd2UgY2FuIHJldHVybiB0aGUgcHJvcGVyIHN0
YXRlLgotICAgIGFjY2Vzc2libGUtPnByaXYtPm9iamVjdC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7
Ci0KLSAgICBpZiAoYWNjZXNzaWJsZS0+cHJpdi0+b2JqZWN0ID09IGZhbGxiYWNrT2JqZWN0KCkp
IHsKKyAgICBpZiAoYWNjZXNzaWJsZS0+cHJpdi0+b2JqZWN0KQorICAgICAgICBhY2Nlc3NpYmxl
LT5wcml2LT5vYmplY3QtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOworICAgIGlmICghYWNjZXNzaWJs
ZS0+cHJpdi0+b2JqZWN0KSB7CiAgICAgICAgIGF0a19zdGF0ZV9zZXRfYWRkX3N0YXRlKHN0YXRl
U2V0LCBBVEtfU1RBVEVfREVGVU5DVCk7CiAgICAgICAgIHJldHVybiBzdGF0ZVNldDsKICAgICB9
CkBAIC0xMDI4LDcgKzEwMzksOCBAQCBzdGF0aWMgQXRrUmVsYXRpb25TZXQqIHdlYmtpdEFjY2Vz
c2libGVSZWZSZWxhdGlvblNldChBdGtPYmplY3QqIG9iamVjdCkKICAgICByZXR1cm5WYWxJZldl
YktpdEFjY2Vzc2libGVJc0ludmFsaWQoYWNjZXNzaWJsZSwgbnVsbHB0cik7CiAKICAgICBBdGtS
ZWxhdGlvblNldCogcmVsYXRpb25TZXQgPSBBVEtfT0JKRUNUX0NMQVNTKHdlYmtpdF9hY2Nlc3Np
YmxlX3BhcmVudF9jbGFzcyktPnJlZl9yZWxhdGlvbl9zZXQob2JqZWN0KTsKLSAgICBzZXRBdGtS
ZWxhdGlvblNldEZyb21Db3JlT2JqZWN0KGFjY2Vzc2libGUtPnByaXYtPm9iamVjdCwgcmVsYXRp
b25TZXQpOworICAgIGlmIChhY2Nlc3NpYmxlLT5wcml2LT5vYmplY3QpCisgICAgICAgIHNldEF0
a1JlbGF0aW9uU2V0RnJvbUNvcmVPYmplY3QoYWNjZXNzaWJsZS0+cHJpdi0+b2JqZWN0LCByZWxh
dGlvblNldCk7CiAgICAgcmV0dXJuIHJlbGF0aW9uU2V0OwogfQogCkBAIC0xMDQ2LDYgKzEwNTgs
OSBAQCBzdGF0aWMgY29uc3QgZ2NoYXIqIHdlYmtpdEFjY2Vzc2libGVHZXRPYmplY3RMb2NhbGUo
QXRrT2JqZWN0KiBvYmplY3QpCiAgICAgYXV0byogYWNjZXNzaWJsZSA9IFdFQktJVF9BQ0NFU1NJ
QkxFKG9iamVjdCk7CiAgICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZhbGlkKGFj
Y2Vzc2libGUsIG51bGxwdHIpOwogCisgICAgaWYgKCFhY2Nlc3NpYmxlLT5wcml2LT5vYmplY3Qp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIAogICAgIGlmIChBVEtfSVNfRE9DVU1FTlQo
b2JqZWN0KSkgewogICAgICAgICAvLyBUT0RPOiBTaG91bGQgd2UgZmFsbCBiYWNrIG9uIGxhbmcg
eG1sOmxhbmcgd2hlbiB0aGUgZm9sbG93aW5nIGNvbWVzIHVwIGVtcHR5PwogICAgICAgICBTdHJp
bmcgbGFuZ3VhZ2UgPSBhY2Nlc3NpYmxlLT5wcml2LT5vYmplY3QtPmxhbmd1YWdlKCk7CkBAIC0x
MzAwLDI3ICsxMzE1LDI0IEBAIFdlYktpdEFjY2Vzc2libGUqIHdlYmtpdEFjY2Vzc2libGVOZXco
QWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCkKIEFjY2Vzc2liaWxpdHlPYmplY3QmIHdl
YmtpdEFjY2Vzc2libGVHZXRBY2Nlc3NpYmlsaXR5T2JqZWN0KFdlYktpdEFjY2Vzc2libGUqIGFj
Y2Vzc2libGUpCiB7CiAgICAgQVNTRVJUKFdFQktJVF9JU19BQ0NFU1NJQkxFKGFjY2Vzc2libGUp
KTsKKyAgICBBU1NFUlQoYWNjZXNzaWJsZS0+cHJpdi0+b2JqZWN0KTsKICAgICByZXR1cm4gKmFj
Y2Vzc2libGUtPnByaXYtPm9iamVjdDsKIH0KIAogdm9pZCB3ZWJraXRBY2Nlc3NpYmxlRGV0YWNo
KFdlYktpdEFjY2Vzc2libGUqIGFjY2Vzc2libGUpCiB7CiAgICAgQVNTRVJUKFdFQktJVF9JU19B
Q0NFU1NJQkxFKGFjY2Vzc2libGUpKTsKLSAgICBBU1NFUlQoYWNjZXNzaWJsZS0+cHJpdi0+b2Jq
ZWN0ICE9IGZhbGxiYWNrT2JqZWN0KCkpOwogCi0gICAgaWYgKGFjY2Vzc2libGUtPnByaXYtPm9i
amVjdC0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OldlYkFyZWEpCisgICAgaWYg
KGFjY2Vzc2libGUtPnByaXYtPm9iamVjdCAmJiBhY2Nlc3NpYmxlLT5wcml2LT5vYmplY3QtPnJv
bGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJBcmVhKQogICAgICAgICBhdGtfb2Jq
ZWN0X25vdGlmeV9zdGF0ZV9jaGFuZ2UoQVRLX09CSkVDVChhY2Nlc3NpYmxlKSwgQVRLX1NUQVRF
X0RFRlVOQ1QsIFRSVUUpOwogCi0gICAgLy8gV2UgcmVwbGFjZSB0aGUgV2ViQ29yZSBBY2Nlc3Np
YmlsaXR5T2JqZWN0IHdpdGggYSBmYWxsYmFjayBvYmplY3QgdGhhdAotICAgIC8vIHByb3ZpZGVz
IGRlZmF1bHQgaW1wbGVtZW50YXRpb25zIHRvIGF2b2lkIHJlcGV0aXRpdmUgbnVsbC1jaGVja2lu
ZyBhZnRlcgotICAgIC8vIGRldGFjaG1lbnQuCi0gICAgYWNjZXNzaWJsZS0+cHJpdi0+b2JqZWN0
ID0gZmFsbGJhY2tPYmplY3QoKTsKKyAgICBhY2Nlc3NpYmxlLT5wcml2LT5vYmplY3QgPSBudWxs
cHRyOwogfQogCiBib29sIHdlYmtpdEFjY2Vzc2libGVJc0RldGFjaGVkKFdlYktpdEFjY2Vzc2li
bGUqIGFjY2Vzc2libGUpCiB7CiAgICAgQVNTRVJUKFdFQktJVF9JU19BQ0NFU1NJQkxFKGFjY2Vz
c2libGUpKTsKLSAgICByZXR1cm4gYWNjZXNzaWJsZS0+cHJpdi0+b2JqZWN0ID09IGZhbGxiYWNr
T2JqZWN0KCk7CisgICAgcmV0dXJuICFhY2Nlc3NpYmxlLT5wcml2LT5vYmplY3Q7CiB9CiAKIGNv
bnN0IGNoYXIqIHdlYmtpdEFjY2Vzc2libGVDYWNoZUFuZFJldHVybkF0a1Byb3BlcnR5KFdlYktp
dEFjY2Vzc2libGUqIGFjY2Vzc2libGUsIEF0a0NhY2hlZFByb3BlcnR5IHByb3BlcnR5LCBDU3Ry
aW5nJiYgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25F
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCmlu
ZGV4IDZlZGU5N2Y4MGJkNWI3YTFiNjFhYzY4NWQzYzQ0YWYyMThjZjZhY2IuLmVjNzFlZDBhNDNl
OGYxODNiMzg4ZTZiYzJlZTFjMDAxZjJmMzY2YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE9wdGlvbkVsZW1lbnQuY3BwCkBAIC0yMDksNyArMjA5LDcgQEAgdm9pZCBIVE1MT3B0aW9uRWxl
bWVudDo6c2V0VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICBzZXRBdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKHZhbHVlQXR0ciwgdmFsdWUpOwogfQogCi1ib29sIEhUTUxPcHRp
b25FbGVtZW50OjpzZWxlY3RlZCgpCitib29sIEhUTUxPcHRpb25FbGVtZW50OjpzZWxlY3RlZCgp
IGNvbnN0CiB7CiAgICAgaWYgKFJlZlB0cjxIVE1MU2VsZWN0RWxlbWVudD4gc2VsZWN0ID0gb3du
ZXJTZWxlY3RFbGVtZW50KCkpCiAgICAgICAgIHNlbGVjdC0+dXBkYXRlTGlzdEl0ZW1TZWxlY3Rl
ZFN0YXRlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oCmluZGV4IDc4
NWE3Y2RmZThjZTI0NWE4ODYxYWY1NGZjNmFjZjM0OTgxMDFhOTAuLmRjM2IwY2YzYzlhOGQzMGNm
NDMyYjI0ZmQyMjMxOTMxYjI5YzNlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE9wdGlvbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25F
bGVtZW50LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFN0
cmluZyB2YWx1ZSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmFsdWUoY29u
c3QgU3RyaW5nJik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNlbGVjdGVkKCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBzZWxlY3RlZCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0U2VsZWN0ZWQoYm9vbCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBIVE1MU2VsZWN0
RWxlbWVudCogb3duZXJTZWxlY3RFbGVtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzIxZTQzZTYxMDBkZGI3ODk5MTNlMTgz
YjBhY2I3ZmIwMDYxOGI1MC4uNjQ4NDNlZTk5ZDY5ZjUxYzJmNTJjMzI3MGNjNjNiNjk2ZDc5MTdl
YiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE1IEBACisyMDIwLTA4LTA5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
KworICAgICAgICBMYXlvdXRUZXN0IGFjY2Vzc2liaWxpdHkvbWFjL3NlbGVjdC1lbGVtZW50LXNl
bGVjdGlvbi13aXRoLW9wdGdyb3Vwcy5odG1sIGlzIGEgZmxha3kgZmFpbHVyZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MzQxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9zaW5nbGVfdGVzdF9ydW5uZXIucHk6CisgICAgICAg
IChTaW5nbGVUZXN0UnVubmVyLl9jb21wYXJlX291dHB1dF93aXRoX3JlZmVyZW5jZSk6IFJlbW92
ZWQgdW5oZWxwZnVsIGxvZyBtZXNzYWdlIHRoYXQgdGVsbHMKKyAgICAgICAgYWJvdXQgcmVmIHRl
c3RzIHdoZXJlIHRoZSBoYXNoIG9wdGltaXphdGlvbiBmb3IgY29tcGFyaW5nIGltYWdlcyBkb2Vz
IG5vdCB3b3JrLCBidXQgdGhlCisgICAgICAgIHRlc3QgcGFzc2VzLiBXZSBkb24ndCB3YW50IHRv
IGdldCB0aGlzIGtpbmQgb2YgbG9nIG1lc3NhZ2UgZm9yIHBhc3NpbmcgdGVzdHMuCisKIDIwMjAt
MDgtMDkgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAg
UkVHUkVTU0lPTiAocjI2MDgzMSk6IFdlYiBwcm9jZXNzIGNyYXNoZXMgdW5kZXIgRWRpdG9yOjpz
ZXRDb21wb3NpdGlvbigpIGFmdGVyIG5hdmlnYXRpbmcgd2l0aCBtYXJrZWQgdGV4dApkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvc2lu
Z2xlX3Rlc3RfcnVubmVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
Y29udHJvbGxlcnMvc2luZ2xlX3Rlc3RfcnVubmVyLnB5CmluZGV4IGY3ZWIzYjA5NWRhNDhmZGEz
N2NlNGNkMmE1ZmFlZjAzZWVhMDI3YjIuLmEyYTEyNGEwNmY0ZDIxN2QyNzc1NTAzYjY3MWZmZTc3
ZWViNWU1ZGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L2NvbnRyb2xsZXJzL3NpbmdsZV90ZXN0X3J1bm5lci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9zaW5nbGVfdGVzdF9ydW5uZXIucHkKQEAg
LTM0Niw3ICszNDYsNSBAQCBjbGFzcyBTaW5nbGVUZXN0UnVubmVyKG9iamVjdCk6CiAgICAgICAg
ICAgICAgICAgYWN0dWFsX2RyaXZlcl9vdXRwdXQuZXJyb3IgPSAoYWN0dWFsX2RyaXZlcl9vdXRw
dXQuZXJyb3Igb3IgJycpICsgZXJyb3Jfc3RyaW5nCiAgICAgICAgICAgICBlbGlmIGRpZmZfcmVz
dWx0WzBdOgogICAgICAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZCh0ZXN0X2ZhaWx1cmVzLkZh
aWx1cmVSZWZ0ZXN0TWlzbWF0Y2gocmVmZXJlbmNlX2ZpbGVuYW1lKSkKLSAgICAgICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICAgICAgX2xvZy53YXJuaW5nKCIgICVzIC0+IHJlZiB0ZXN0IGhhc2hl
cyBkaWRuJ3QgbWF0Y2ggYnV0IGRpZmYgcGFzc2VkIiAlIHNlbGYuX3Rlc3RfbmFtZSkKIAogICAg
ICAgICByZXR1cm4gVGVzdFJlc3VsdChzZWxmLl90ZXN0X25hbWUsIGZhaWx1cmVzLCB0b3RhbF90
ZXN0X3RpbWUsIGhhc19zdGRlcnIsIHBpZD1hY3R1YWxfZHJpdmVyX291dHB1dC5waWQpCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggZWJlNjVkZTY4ZGVhMmI3ZGM2ODRjMDhmOGFmMzM3ZjI2MzNjZThhYy4uNDkzYTY2OGYwYjEy
NjMwZTAxN2E2NzZmNDVmODcwMDRjYTM5ZTdlNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIw
LTA4LTA5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBMYXlvdXRU
ZXN0IGFjY2Vzc2liaWxpdHkvbWFjL3NlbGVjdC1lbGVtZW50LXNlbGVjdGlvbi13aXRoLW9wdGdy
b3Vwcy5odG1sIGlzIGEgZmxha3kgZmFpbHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MzQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnM6
IEZpeGVkIGV4cGVjdGF0aW9uIGZvciBhbm90aGVyIGFjY2Vzc2liaWxpdHkgdGVzdCwKKyAgICAg
ICAgYWNjZXNzaWJpbGl0eS9tYWMvZXhwYW5kZWQtbm90aWZpY2F0aW9uLmh0bWwgdG8gZXhwZWN0
IGZsYWtpbmVzcywgbm90IGZhaWx1cmUsIGJlY2F1c2UgdGhhdCdzCisgICAgICAgIHdoYXQgdGhl
IGJ1ZyB0aGF0IHdlbnQgYWxvbmcgd2l0aCB0aGlzIGV4cGVjdGF0aW9uIHNhaWQsIGFuZCBpbmRl
ZWQgdGhlIHRlc3Qgb2Z0ZW4gcGFzc2VzLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9U
ZXN0RXhwZWN0YXRpb25zOiBSZW1vdmVkIGZsYWtpbmVzcyBleHBlY3RhdGlvbiBmb3IKKyAgICAg
ICAgYWNjZXNzaWJpbGl0eS9tYWMvc2VsZWN0LWVsZW1lbnQtc2VsZWN0aW9uLXdpdGgtb3B0Z3Jv
dXBzLmh0bWwsIHNpbmNlIGl0J3Mgbm93IGZpeGVkLgorICAgICAgICBGaXhlZCBhICJ3ZWJra2l0
Lm9yZyIgdHlwbywgd2hpY2ggY2F1c2VkIHRoZSBleHBlY3RhdGlvbiBmb3IKKyAgICAgICAgdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvZmFzdC1zY3JvbGwtbWFpbmZyYW1lLXpvb20uaHRtbCB0byBu
b3Qgd29yayBhcyBleHBlY3RlZC4KKwogMjAyMC0wOC0xMCAgSGVjdG9yIExvcGV6ICA8aGVjdG9y
X2lfbG9wZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFsgaU9TIHdrMiBdIGNvbXBvc2l0aW5nL2Ns
aXBwaW5nL2JvcmRlci1yYWRpdXMtb24td2ViZ2wuaHRtbCBpcyBhIGZsYWt5IGZhaWx1cmUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBiZDVh
Yjc2NjM2ODYyMzM1NjdmMDJhZDY2ZTM2ZjhkZDMxMzdhYWRhLi5iNmU1N2QwZDQ1NTkzMzRjZjA0
N2FiMTZiMjkyODZjOGY5YjI4OWEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
MS9UZXN0RXhwZWN0YXRpb25zCkBAIC04NTQsNyArODU0LDcgQEAgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9mZXRjaC9zdGFsZS13aGlsZS1yZXZhbGlkYXRlIFsgU2tpcCBdCiAKIHdl
YmtpdC5vcmcvYi8yMDU0MTIgWyBNb2phdmUgRGVidWcgXSB3ZWJnbC8xLjAuMy9jb25mb3JtYW5j
ZS9yZW5kZXJpbmcvbWFueS1kcmF3LWNhbGxzLmh0bWwgWyBUaW1lb3V0IF0KIAotd2Via2l0Lm9y
Zy9iLzIwNTQxMCBbIERlYnVnIF0gYWNjZXNzaWJpbGl0eS9tYWMvZXhwYW5kZWQtbm90aWZpY2F0
aW9uLmh0bWwgWyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMDU0MTAgWyBEZWJ1ZyBdIGFjY2Vz
c2liaWxpdHkvbWFjL2V4cGFuZGVkLW5vdGlmaWNhdGlvbi5odG1sIFsgUGFzcyBGYWlsdXJlIF0K
IAogd2Via2l0Lm9yZy9iLzIwNjA3MSBlZGl0aW5nL3NwZWxsaW5nL2dyYW1tYXIuaHRtbCBbIFNr
aXAgXQogd2Via2l0Lm9yZy9iLzIwNjA3MSBlZGl0aW5nL3NwZWxsaW5nL21hcmtlcnMuaHRtbCBb
IFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhw
ZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25z
CmluZGV4IDFjNGM0YzFkMjRjNjQzNDJkZGZiNjUxMjRlNmE0ZjYyODkwNDA4ZTYuLjY0YmNkYzQ3
ZGJjOWFmZmJlZjk3YzhkMWU0MWU3ZWJkNGQxOWRmYTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTY1Myw4ICs2NTMsNiBAQCB3ZWJraXQu
b3JnL2IvMTczODYxIFsgUmVsZWFzZSBdIGh0dHAvdGVzdHMvd2VicnRjL2ZpbHRlcmluZy1pY2Ut
Y2FuZGlkYXRlLWNyb3NzLQogCiB3ZWJraXQub3JnL2IvMTcyMTQ4IHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtdmVydGlj
YWwuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8xNzUzNDEgYWNjZXNzaWJp
bGl0eS9tYWMvc2VsZWN0LWVsZW1lbnQtc2VsZWN0aW9uLXdpdGgtb3B0Z3JvdXBzLmh0bWwgWyBQ
YXNzIEZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMTcyMDQ0IFsgRGVidWcgXSBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9vcGVuLXJlcXVlc3QtcXVldWUuaHRtbCBb
IFBhc3MgVGltZW91dCBdCiAKIHdlYmtpdC5vcmcvYi8xNzM3NzkgWyBEZWJ1ZyBdIGZhc3Qvc2Ny
b2xsaW5nL2Fycm93LWtleS1zY3JvbGwtaW4tcnRsLWRvY3VtZW50Lmh0bWwgWyBQYXNzIEZhaWx1
cmUgXQpAQCAtMTA4Niw3ICsxMDg0LDcgQEAgd2Via2l0Lm9yZy9iLzIxNDU3NCBbIFJlbGVhc2Ug
XSBzdmcvYW5pbWF0aW9ucy9zbWlsLWxlYWstbGlzdC1wcm9wZXJ0eS1pbnN0YW5jZXMKIAogd2Vi
a2l0Lm9yZy9iLzIxNDU3OSBbIFJlbGVhc2UgXSBzdmcvYW5pbWF0aW9ucy9zbWlsLWxlYWstZWxl
bWVudC1pbnN0YW5jZXMuc3ZnIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2tpdC5vcmcvYi8yMTQ2
NTEgWyBEZWJ1ZyBdIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL2Zhc3Qtc2Nyb2xsLW1haW5mcmFt
ZS16b29tLmh0bWwgWyBQYXNzIENyYXNoIF0KK3dlYmtpdC5vcmcvYi8yMTQ2NTEgWyBEZWJ1ZyBd
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL2Zhc3Qtc2Nyb2xsLW1haW5mcmFtZS16b29tLmh0bWwg
WyBQYXNzIENyYXNoIF0KIAogd2Via2l0Lm9yZy9iLzIxNDY2MSBbIERlYnVnIF0gaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDU2N0cFRyYW5zcG9ydC1ldmVudHMuaHRt
bCBbIFBhc3MgQ3Jhc2ggXQogCg==
</data>
<flag name="review"
          id="421702"
          type_id="1"
          status="+"
          setter="cfleizach"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406403</attachid>
            <date>2020-08-11 12:34:46 -0700</date>
            <delta_ts>2020-08-11 12:40:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175341-20200811123445.patch</filename>
            <type>text/plain</type>
            <size>52348</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1NTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzc5NDlkY2Q1YWU4NzA0
NzJhNjU0MmYzNjBlMjc1NjcyYmYwOTNiNS4uNjY0MWMxZjllNmRkNGE5YjZhODFjZjI1M2ExMmQ2
OThlYTZmZjZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNyBAQAorMjAyMC0wOC0wOSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTGF5b3V0VGVzdCBhY2Nlc3Np
YmlsaXR5L21hYy9zZWxlY3QtZWxlbWVudC1zZWxlY3Rpb24td2l0aC1vcHRncm91cHMuaHRtbCBp
cyBhIGZsYWt5IGZhaWx1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3NTM0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEZhaWx1cmVzIHdlcmUgZHVlIHRvIG5ldyBBWCBvYmplY3RzIGJlaW5nIGNyZWF0
ZWQgZm9yIEhUTUxPcHRpb25FbGVtZW50LgorICAgICAgICBVbmxpa2UgbW9zdCBvdGhlciBBWCBv
YmplY3RzLCB0aGVzZSB3ZXJlIG5vdCBjYWNoZWQgaW4gdGhlIEFYT2JqZWN0Q2FjaGUKKyAgICAg
ICAgYW5kIG11bHRpcGxlIG9iamVjdHMgY291bGQgYmUgY3JlYXRlZCBmb3IgdGhlIHNhbWUgdW5k
ZXJseWluZyBvcHRpb24uIEZpeGVkIHRoaXMKKyAgICAgICAgYnkgY2hhbmdpbmcgaXQgdG8gdHJh
Y2sgdGhlIG9wdGlvbiBlbGVtZW50IGluIHRoZSBjYWNoZSBpbiB0aGUgY29udmVudGlvbmFsIHdh
eS4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogUmVtb3Zl
IEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmgvY3BwLgorICAgICAgICBUaGUgc291cmNlIGZp
bGVzIHdlcmUgcmVtb3ZlZCBiYWNrIGluIEFwcmlsLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6Omdl
dE9yQ3JlYXRlKTogQWRkZWQgY29kZSBmb3IgSFRNTE9wdGlvbkVsZW1lbnQgYW5kCisgICAgICAg
IEhUTUxPcHRHcm91cEVsZW1lbnQgc28gQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uIGFuZCBB
Y2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbgorICAgICAgICBjYW4gYmUgY3JlYXRlZCBpbiB0aGlz
IGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6Y3JlYXRlKTogUmVu
YW1lZCB0aGUgdmVyc2lvbiBvZiB0aGlzIHRoYXQgdGFrZXMgYW4KKyAgICAgICAgQWNjZXNzaWJp
bGl0eVJvbGUgdG8gbm90IGNsYWltIHRoYXQgaXQgZXZlciBnZXRzIHRoZSB2YWx1ZSBmcm9tIHRo
ZSBjYWNoZSwKKyAgICAgICAgYmVjYXVzZSBpdCBuZXZlciBkb2VzLiBBbHNvIHJlbW92ZWQgdGhl
IGNhc2VzIGZvciBMaXN0Qm94T3B0aW9uIGFuZCBNZW51TGlzdE9wdGlvbi4KKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaDogVXBkYXRlZCBmb3IgYWJvdmUuCisKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6OmFkZENoaWxkcmVuKTogVXNlIGNyZWF0ZS4K
KworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUxpc3RCb3g6OmFkZENoaWxkcmVuKTogUmVtb3Zl
ZCBzdXBlci1vbGQgY29tbWVudCB0aGF0IG1lbnRpb25zCisgICAgICAgIHRoZSBsb25nLWFnby1y
ZW1vdmVkIFdNTC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlMaXN0Qm94OjpsaXN0
Qm94T3B0aW9uQWNjZXNzaWJpbGl0eU9iamVjdCBjb25zdCk6IFVzZSB0aGUKKyAgICAgICAgZWxl
bWVudCB0byBnZXQgdGhlIGxpc3QgYm94IG9wdGlvbiByYXRoZXIgdGhhbiBjcmVhdGluZyBhIG5l
dyBvbmUgZXZlcnkgdGltZS4KKyAgICAgICAgTm8gbG9uZ2VyIGFueSBuZWVkIHRvIHNwZWNpYWwg
Y2FzZSA8aHI+IGVsZW1lbnRzIHNpbmNlIHRoZSBnZXRPckNyZWF0ZSBmdW5jdGlvbgorICAgICAg
ICB3aWxsIHJldHVybiBuaWwgZm9yIG5vbi1vcHRpb24gZWxlbWVudHMgdGhhdCBkb24ndCBoYXZl
IGEgcmVuZGVyZXIuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0
Qm94T3B0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0
aW9uOjpBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbik6IFRha2UgdGhlIGVsZW1lbnQKKyAgICAg
ICAgaW4gdGhlIGNvbnN0cnVjdG9yIGluc3RlYWQgb2YgdXNpbmcgYSBzZXBhcmF0ZSBmdW5jdGlv
biB0byBhc3NvY2lhdGUgaXQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TGlzdEJv
eE9wdGlvbjo6Y3JlYXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
TGlzdEJveE9wdGlvbjo6YWN0aW9uRWxlbWVudCBjb25zdCk6IFVwZGF0ZSBmb3IgV2Vha1B0ci4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uOjpub2RlIGNvbnN0
KTogQWRkZWQuIEZvciBzb21lIHJlYXNvbiB0aGUKKyAgICAgICAgQWNjZXNzaWJpbGl0eU1lbnVM
aXN0T3B0aW9uIGNsYXNzIGhhZCB0aGlzIGZ1bmN0aW9uIGFuZCB0aGlzIG9uZSBkaWQgbm90LiBU
aGV5CisgICAgICAgIHNob3VsZCBib3RoIGhhdmUgaXQuCisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5oOiBVcGRhdGVkIGZvciBhYm92ZS4gTWFkZSBt
b3N0CisgICAgICAgIGZ1bmN0aW9ucyBwcml2YXRlIGFuZCBmaW5hbC4gRml4ZWQgaW5jbHVkZXMg
YW5kIGZvcndhcmQgZGVjbGFyYXRpb25zLgorICAgICAgICBSZW1vdmVkIHRoZSBzZXRIVE1MRWxl
bWVudCBmdW5jdGlvbi4gQ2hhbmdlZCBtX29wdGlvbkVsZW1lbnQgZnJvbQorICAgICAgICBIVE1M
RWxlbWVudCogdG8gV2Vha1B0cjxIVE1MRWxlbWVudD4uCisKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5TWVudUxpc3Q6OmFkZENoaWxkcmVuKTogVXNlIGNyZWF0ZS4KKworICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0
T3B0aW9uKTogVGFrZSB0aGUKKyAgICAgICAgZWxlbWVudCBpbiB0aGUgY29uc3RydWN0b3IgaW5z
dGVhZCBvZiB1c2luZyBhIHNlcGFyYXRlIGZ1bmN0aW9uIHRvIGFzc29jaWF0ZSBpdC4KKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6Y3JlYXRlKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb246OnNldEVsZW1l
bnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0
aW9uOjpub2RlIGNvbnN0KTogTW92ZWQgaGVyZSBmcm9tIHRoZSBoZWFkZXIuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb246OmlzRW5hYmxlZCBjb25zdCk6IFJl
bW92ZWQgdW5uZWVkZWQgY2FzdAorICAgICAgICBub3cgdGhhdCBtX2VsZW1lbnQgaGFzIGEgbW9y
ZSBzcGVjaWZpYyB0eXBlLCBhbmQgYWRkZWQgYSBudWxsIGNoZWNrLgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uOjppc1Zpc2libGUgY29uc3QpOiBSZW1vdmVk
IGRlcGVuZGVuY3kKKyAgICAgICAgb24gbV9wYXJlbnQgcG9pbnRlciwgd2hpY2ggZG9lcyBub3Qg
ZXhpc3Qgbm93IHRoYXQgd2UgZG9uJ3QgZGVyaXZlIGZyb20KKyAgICAgICAgQWNjZXNzaWJpbGl0
eU1vY2tPYmplY3QuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRp
b246OmlzU2VsZWN0ZWQgY29uc3QpOiBSZW1vdmVkIHVubmVlZGVkIGNhc3QKKyAgICAgICAgbm93
IHRoYXQgbV9lbGVtZW50IGhhcyBhIG1vcmUgc3BlY2lmaWMgdHlwZSwgYW5kIGFkZGVkIGEgbnVs
bCBjaGVjay4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6
c2V0U2VsZWN0ZWQpOiBEaXR0bywgYnV0IG5vIG51bGwgY2hlY2sKKyAgICAgICAgbmVlZGVkIGJl
Y2F1c2UgY2FuU2V0U2VsZWN0ZWRBdHRyaWJ1dGUgdGFrZXMgY2FyZSBvZiB0aGF0LgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uOjpzdHJpbmdWYWx1ZSBjb25z
dCk6IERpdHRvLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0
T3B0aW9uLmg6IFVwZGF0ZWQgZm9yIGFib3ZlLiBNYXJrZWQKKyAgICAgICAgZnVuY3Rpb25zIGZp
bmFsIGluc3RlYWQgb2Ygb3ZlcnJpZGUuIENoYW5nZWQgbV9lbGVtZW50IGZyb20gUmVmUHRyPEhU
TUxFbGVtZW50PgorICAgICAgICB0byBXZWFrUHRyPEhUTUxPcHRpb25FbGVtZW50PiB0byBhdm9p
ZCByZWZlcmVuY2UgY3ljbGVzIHRoYXQgY291bGQgbGVhayB0bworICAgICAgICBtZW1vcnkgbGVh
a3MuIERlcml2ZSBmcm9tIEFjY2Vzc2liaWxpdHlPYmplY3QgaW5zdGVhZCBvZgorICAgICAgICBB
Y2Nlc3NpYmlsaXR5TW9ja09iamVjdCwgc2luY2UgdGhlIGxhdHRlciBjbGFzcyBoYXMgbm90aGlu
ZyB0byBvZmZlciB1cy4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1l
bnVMaXN0UG9wdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0
UG9wdXA6Om1lbnVMaXN0T3B0aW9uQWNjZXNzaWJpbGl0eU9iamVjdCBjb25zdCk6CisgICAgICAg
IFVzZSB0aGUgZWxlbWVudCB0byBnZXQgdGhlIG1lbnUgbGlzdCBvcHRpb24gcmF0aGVyIHRoYW4g
Y3JlYXRpbmcgYSBuZXcgb25lCisgICAgICAgIGV2ZXJ5IHRpbWUuIE5vIGxvbmdlciBhbnkgbmVl
ZCB0byBjaGVjayB0aGF0IHRoZSB0eXBlIGlzIEhUTUxPcHRpb25FbGVtZW50CisgICAgICAgIGJl
Y2F1c2UgdGhhdCdzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgY29kZSBpbiB0aGUgY2FjaGUg
bm93LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6OmFkZENo
aWxkcmVuKTogUmVtb3ZlZCB1bm5lZWRlZCBjYWxsCisgICAgICAgIHRvIHNldFBhcmVudCBzaW5j
ZSB0aGUgbWVudSBsaXN0IG9wdGlvbiBvYmplY3RzIG5vIGxvbmdlciBob2xkIHBhcmVudCBwb2lu
dGVycy4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6YWNjZXNzaWJsZU5hbWVGb3JOb2RlKTogQWRkZWQgYSBz
cGVjaWFsIGNhc2UgZm9yIEhUTUxPcHRpb25FbGVtZW50CisgICAgICAgIGxpa2UgdGhlIG9uZSBm
b3IgSFRNTElucHV0RWxlbWVudC4gVGhlIGNvZGUgd29ya2VkIGZvciBmYWlybHkgd2VsbCBmb3Ig
b3B0aW9uCisgICAgICAgIGVsZW1lbnRzIGJlZm9yZSwgYWxtb3N0IGJ5IGFjY2lkZW50LCBhbmQg
dGhlIHdheSBpdCB3b3JrZWQgd2FzIHBlcnR1cmJlZCBieQorICAgICAgICB0aGUgY2hhbmdlIHRv
IHdoZXRoZXIgd2UgY2FjaGUgdGhvc2Ugb2JqZWN0cy4gVGhpcyBuZXdlciBjb2RlIHBhdGggd29y
a3MgaW4gYQorICAgICAgICBtb3JlIHN0cmFpZ2h0Zm9yd2FyZCB3YXksIGtlZXBzIG91ciBleGlz
dGluZyB0ZXN0cyBwc2FzaW5nLCBhbmQgbGlrZWx5IGdldHMKKyAgICAgICAgc29tZSBlZGdlIGNh
c2VzIGhhbmRsZWQgbW9yZSBjb3JyZWN0bHkgKHNob3VsZCBhZGQgbmV3IHRlc3RzIGZvciB0aG9z
ZSkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZG9jdW1l
bnRMaW5rcyk6IFVzZSBjcmVhdGUuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0OjphZGRJbWFnZU1hcENoaWxkcmVuKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRUZXh0RmllbGRDaGlsZHJlbik6IERpdHRv
LgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2xpZGVyOjphZGRDaGlsZHJlbik6IERpdHRvLgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNwaW5CdXR0b246OmFkZENoaWxkcmVuKTogRGl0
dG8uCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjphZGRDaGlsZHJlbik6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjpoZWFkZXJDb250YWluZXIpOiBE
aXR0by4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGUuY3Bw
OgorICAgICAgICAoZmFsbGJhY2tPYmplY3QpOiBEZWxldGVkLgorICAgICAgICAod2Via2l0QWNj
ZXNzaWJsZUdldE5hbWUpOiBBZGRlZCBudWxsIGNoZWNrLgorICAgICAgICAod2Via2l0QWNjZXNz
aWJsZUdldERlc2NyaXB0aW9uKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlR2V0
UGFyZW50KTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlR2V0TkNoaWxkcmVuKTog
RGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlUmVmQ2hpbGQpOiBEaXR0by4KKyAgICAg
ICAgKHdlYmtpdEFjY2Vzc2libGVHZXRJbmRleEluUGFyZW50KTogRGl0dG8uCisgICAgICAgICh3
ZWJraXRBY2Nlc3NpYmxlR2V0QXR0cmlidXRlcyk6IERpdHRvLgorICAgICAgICAod2Via2l0QWNj
ZXNzaWJsZUdldFJvbGUpOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVSZWZTdGF0
ZVNldCk6IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZVJlZlJlbGF0aW9uU2V0KTog
RGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlR2V0T2JqZWN0TG9jYWxlKTogRGl0dG8u
CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlR2V0QWNjZXNzaWJpbGl0eU9iamVjdCk6IERpdHRv
LgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZURldGFjaCk6IFVzZSBudWxscHRyIGluc3RlYWQg
b2YgZmFsbGJhY2tPYmplY3QuCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSXNEZXRhY2hlZCk6
IERpdHRvLgorCisgICAgICAgICogaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudDo6c2VsZWN0ZWQgY29uc3QpOiBNYWRlIHRoaXMg
Y29uc3QuIEFuIGVhcmxpZXIKKyAgICAgICAgdmVyc2lvbiBvZiB0aGUgcGF0Y2ggcmVxdWlyZWQg
dGhpczsgdGhlIGxhdGVzdCB2ZXJzaW9uIGRvZXNuJ3QsIGJ1dCBpdCdzCisgICAgICAgIG1vcmUg
bG9naWNhbCBhbmQgYmV0dGVyIGZvciBpdCB0byBiZSBjb25zdC4KKyAgICAgICAgKiBodG1sL0hU
TUxPcHRpb25FbGVtZW50Lmg6IFVwZGF0ZWQgZm9yIGFib3ZlLgorCiAyMDIwLTA4LTExICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAgIFRleHQgbWFuaXB1bGF0aW9u
IGNyYXNoZXMgd2hlbiByZXBsYWNpbmcgZWxlbWVudCB3aXRoIGltZyByb2xlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjg3Mzgy
ZDliOGIxN2E2NDYzMGQ2Mzc0ZGFlNDM0YWQ5YmU4Mzk2MC4uYTg2MDMyZTZmYzkxMDk2NTQ2MTUx
NTQ3ZDY3OGRkZDFmOGQzMjRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTkzLDcgKzE5Myw2IEBACiAJCTA3QUI5OTZCMThE
QTNDMDEwMDE4NzcxRSAvKiBSVENJY2VTZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QUI5OTY3MThEQTNDMDEwMDE4NzcxRSAvKiBSVENJY2VT
ZXJ2ZXIuaCAqLzsgfTsKIAkJMDdBRkY0MjIxRUZCMTQ0OTAwQjU0NUIzIC8qIENvcmVBdWRpb0Nh
cHR1cmVTb3VyY2VJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3QUZGNDIwMUVGQjE0NDcwMEI1NDVCMyAvKiBDb3JlQXVkaW9DYXB0dXJlU291cmNl
SU9TLmggKi87IH07CiAJCTA3QUZGNDIzMUVGQjE0NDkwMEI1NDVCMyAvKiBDb3JlQXVkaW9DYXB0
dXJlU291cmNlSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDdBRkY0MjExRUZCMTQ0NzAwQjU0NUIzIC8qIENvcmVBdWRpb0NhcHR1cmVTb3VyY2VJ
T1MubW0gKi87IH07Ci0JCTA3QjAxMTNGMTAzMjI0MjIwMEZCREMzMyAvKiBBY2Nlc3NpYmlsaXR5
TWVkaWFDb250cm9scy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDdCMDExM0UxMDMyMjQyMjAwRkJEQzMzIC8qIEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRy
b2xzLmggKi87IH07CiAJCTA3QjBBQkNGMTAzMjI0MjIwMEZCREMzMyAvKiBBY2Nlc3NpYmlsaXR5
TWF0aE1MRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDdCMEFCQ0UxMDMyMjQyMjAwRkJEQzMzIC8qIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVt
ZW50LmggKi87IH07CiAJCTA3QjQ0MkQ2MTY2QzcwQjAwMDU1NkNBRCAvKiBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3QjQ0MkQ0MTY2QzcwQjAwMDU1NkNBRCAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZGLmNwcCAqLzsgfTsKIAkJMDdCNDQyRDcxNjZDNzBCMDAwNTU2Q0FEIC8qIEluYmFuZFRleHRU
cmFja1ByaXZhdGVBVkYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3QjQ0MkQ1MTY2QzcwQjAwMDU1NkNBRCAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZGLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTU3MTEsNyArNTcxMCw2IEBACiAJCTA3QUI5OTY4MThEQTNDMDEwMDE4NzcxRSAvKiBSVENJY2VT
ZXJ2ZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJUQ0ljZVNlcnZlci5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QUZGNDIwMUVGQjE0NDcwMEI1NDVCMyAvKiBDb3Jl
QXVkaW9DYXB0dXJlU291cmNlSU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENvcmVBdWRpb0NhcHR1cmVTb3VyY2VJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDdBRkY0MjExRUZCMTQ0NzAwQjU0NUIzIC8qIENvcmVBdWRpb0NhcHR1cmVTb3VyY2VJT1Mu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb3JlQXVkaW9DYXB0
dXJlU291cmNlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwN0IwMTEzRTEw
MzIyNDIyMDBGQkRDMzMgLyogQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdCMEFCQ0UxMDMyMjQyMjAwRkJEQzMzIC8qIEFj
Y2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTA3QjQ0MkQ0MTY2QzcwQjAwMDU1NkNBRCAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluYmFuZFRleHRU
cmFja1ByaXZhdGVBVkYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0I0NDJE
NTE2NkM3MEIwMDA1NTZDQUQgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02ODEzLDcgKzY4MTEsNiBAQAogCQkyOTgxQ0FB
MTEzMTgyMkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eUxpc3QuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQWNjZXNzaWJpbGl0eUxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyOTgxQ0FBMjEzMTgyMkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyOTgxQ0FBMzEzMTgyMkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0
eUxpc3RCb3hPcHRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eUxpc3RC
b3hPcHRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkyOTgxQ0FBNDEzMTgy
MkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkyOTgxQ0FBNTEzMTgyMkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eU9i
amVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk4MUNBQTYxMzE4MjJFQzAwRDEyRjJBIC8qIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5ODFD
QUE3MTMxODIyRUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlTY3JvbGxiYXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTgzNTIsOCArMTgzNDksNiBAQAogCQkJCTI5QTgxMjI0MEZCQjlDMUQw
MDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5oICovLAogCQkJCTI5ODFBQkM0
MTMxODIyRUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudC5jcHAgKi8sCiAJ
CQkJMDdCMEFCQ0UxMDMyMjQyMjAwRkJEQzMzIC8qIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50
LmggKi8sCi0JCQkJMjk4MUNBQTQxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlNZWRp
YUNvbnRyb2xzLmNwcCAqLywKLQkJCQkwN0IwMTEzRTEwMzIyNDIyMDBGQkRDMzMgLyogQWNjZXNz
aWJpbGl0eU1lZGlhQ29udHJvbHMuaCAqLywKIAkJCQlBOTc4N0NCMzFGNUY1QzY1MDBDNTUxQzYg
LyogQWNjZXNzaWJpbGl0eU1lZGlhT2JqZWN0LmNwcCAqLywKIAkJCQlBOTc4N0NCMjFGNUY1OTky
MDBDNTUxQzYgLyogQWNjZXNzaWJpbGl0eU1lZGlhT2JqZWN0LmggKi8sCiAJCQkJNzZDREQyRUMx
MTAzREE2NjAwNjgwNTIxIC8qIEFjY2Vzc2liaWxpdHlNZW51TGlzdC5jcHAgKi8sCkBAIC0yOTk5
NCw3ICsyOTk4OSw2IEBACiAJCQkJMjlBODEyNDMwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2li
aWxpdHlMaXN0Qm94LmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUE4MTI0MjBGQkI5QzFEMDA1MTAy
OTMgLyogQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTA3
QjBBQkNGMTAzMjI0MjIwMEZCREMzMyAvKiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJMDdCMDExM0YxMDMyMjQyMjAwRkJEQzMzIC8qIEFjY2Vzc2liaWxp
dHlNZWRpYUNvbnRyb2xzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3NkNERDJGMzExMDNEQTY2MDA2
ODA1MjEgLyogQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3NkNE
RDJGNzExMDNEQTY2MDA2ODA1MjEgLyogQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQk3NkNERDJGNTExMDNEQTY2MDA2ODA1MjEgLyogQWNjZXNzaWJpbGl0
eU1lbnVMaXN0UG9wdXAuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXggOWZlYjUxNThjMGE1MDE3N2JlOTkzMDZk
NjFkYWY0YjAwOTkzZjM1Yi4uYjAzYzMwMDk0ZDFiMmIyYzNmZDUwMjQwZTUyNjY1NGRlNTZlN2Q3
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3Bw
CkBAIC03OCw3ICs3OCwxMCBAQAogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MTWV0ZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVk
ZSAiSFRNTE9wdEdyb3VwRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgorI2luY2x1ZGUgIkhUTUxTZWxlY3RFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaCIKICNpbmNsdWRl
ICJJbmxpbmVFbGVtZW50Qm94LmgiCiAjaW5jbHVkZSAiTWF0aE1MRWxlbWVudC5oIgpAQCAtNjQw
LDYgKzY0MywyNCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpnZXRPckNy
ZWF0ZShOb2RlKiBub2RlKQogICAgIGlmICghbm9kZS0+cGFyZW50RWxlbWVudCgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICAKKyAgICBib29sIGlzT3B0aW9uRWxlbWVudCA9IGlzPEhU
TUxPcHRpb25FbGVtZW50Pigqbm9kZSk7CisgICAgaWYgKGlzT3B0aW9uRWxlbWVudCB8fCBpczxI
VE1MT3B0R3JvdXBFbGVtZW50Pigqbm9kZSkpIHsKKyAgICAgICAgYXV0byBzZWxlY3QgPSBpc09w
dGlvbkVsZW1lbnQKKyAgICAgICAgICAgID8gZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KCpu
b2RlKS5vd25lclNlbGVjdEVsZW1lbnQoKQorICAgICAgICAgICAgOiBkb3duY2FzdDxIVE1MT3B0
R3JvdXBFbGVtZW50Pigqbm9kZSkub3duZXJTZWxlY3RFbGVtZW50KCk7CisgICAgICAgIGlmICgh
c2VsZWN0KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIFJlZlB0cjxBY2Nl
c3NpYmlsaXR5T2JqZWN0PiBvYmplY3Q7CisgICAgICAgIGlmIChzZWxlY3QtPnVzZXNNZW51TGlz
dCgpKSB7CisgICAgICAgICAgICBpZiAoIWlzT3B0aW9uRWxlbWVudCkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIG9iamVjdCA9IEFjY2Vzc2liaWxpdHlNZW51
TGlzdE9wdGlvbjo6Y3JlYXRlKGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50Pigqbm9kZSkpOwor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG9iamVjdCA9IEFjY2Vzc2liaWxpdHlMaXN0Qm94
T3B0aW9uOjpjcmVhdGUoZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KCpub2RlKSk7CisgICAgICAgIGNh
Y2hlQW5kSW5pdGlhbGl6ZVdyYXBwZXIob2JqZWN0LmdldCgpLCBub2RlKTsKKyAgICAgICAgcmV0
dXJuIG9iamVjdC5nZXQoKTsKKyAgICB9CisKICAgICAvLyBJdCdzIG9ubHkgYWxsb3dlZCB0byBj
cmVhdGUgYW4gQWNjZXNzaWJpbGl0eU9iamVjdCBmcm9tIGEgTm9kZSBpZiBpdCdzIGluIGEgY2Fu
dmFzIHN1YnRyZWUuCiAgICAgLy8gT3IgaWYgaXQncyBhIGhpZGRlbiBlbGVtZW50LCBidXQgd2Ug
c3RpbGwgd2FudCB0byBleHBvc2UgaXQgYmVjYXVzZSBvZiBvdGhlciBBUklBIGF0dHJpYnV0ZXMu
CiAgICAgYm9vbCBpbkNhbnZhc1N1YnRyZWUgPSBsaW5lYWdlT2ZUeXBlPEhUTUxDYW52YXNFbGVt
ZW50Pigqbm9kZS0+cGFyZW50RWxlbWVudCgpKS5maXJzdCgpOwpAQCAtODAxLDE1ICs4MjIsMTIg
QEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6cm9vdE9iamVjdEZvckZyYW1l
KEZyYW1lKiBmcmFtZSkKICAgICByZXR1cm4gZ2V0T3JDcmVhdGUoZnJhbWUtPnZpZXcoKSk7CiB9
ICAgIAogICAgIAotQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Z2V0T3JDcmVh
dGUoQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSkKK0FjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0
Q2FjaGU6OmNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZSByb2xlKQogewogICAgIFJlZlB0cjxBY2Nl
c3NpYmlsaXR5T2JqZWN0PiBvYmo7CiAKICAgICAvLyB3aWxsIGJlIGZpbGxlZCBpbi4uLgogICAg
IHN3aXRjaCAocm9sZSkgewotICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RCb3hPcHRp
b246Ci0gICAgICAgIG9iaiA9IEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uOjpjcmVhdGUoKTsK
LSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2VNYXBMaW5r
OgogICAgICAgICBvYmogPSBBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rOjpjcmVhdGUoKTsKICAg
ICAgICAgYnJlYWs7CkBAIC04MjUsOSArODQzLDYgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhP
YmplY3RDYWNoZTo6Z2V0T3JDcmVhdGUoQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSkKICAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51TGlzdFBvcHVwOgogICAgICAgICBvYmogPSBBY2Nlc3Np
YmlsaXR5TWVudUxpc3RQb3B1cDo6Y3JlYXRlKCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVMaXN0T3B0aW9uOgotICAgICAgICBvYmogPSBBY2Nlc3Np
YmlsaXR5TWVudUxpc3RPcHRpb246OmNyZWF0ZSgpOwotICAgICAgICBicmVhazsKICAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpTcGluQnV0dG9uOgogICAgICAgICBvYmogPSBBY2Nlc3NpYmls
aXR5U3BpbkJ1dHRvbjo6Y3JlYXRlKCk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCBlOWM0ZDkzYjM2MjcxODk3ODI2
YjhlYjhmY2FmNWVmMTZkZTBhMjZhLi5mY2QxNzZiM2ZkNjZjMDc1NjEyZjRiMzVkN2ZhM2M3Yzcw
MWJkNjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0
Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
aApAQCAtMTU5LDcgKzE1OSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBnZXRPckNyZWF0ZShOb2RlKik7CiAKICAgICAvLyB1c2VkIGZvciBvYmpl
Y3RzIHdpdGhvdXQgYmFja2luZyBlbGVtZW50cwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGdl
dE9yQ3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlKTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBj
cmVhdGUoQWNjZXNzaWJpbGl0eVJvbGUpOwogICAgIAogICAgIC8vIHdpbGwgb25seSByZXR1cm4g
dGhlIEFjY2Vzc2liaWxpdHlPYmplY3QgaWYgaXQgYWxyZWFkeSBleGlzdHMKICAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBnZXQoUmVuZGVyT2JqZWN0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKaW5kZXggZTE0YTQ3
MWFjYzE3MmEzNGE2N2YwYzhmMDdkMDdiZThhODFhZDI2MS4uNGVmYmY0ZTI2YmNjNTRhNDYyZGY2
OGEwZTFlOWQ0ZTgxNmMwMDM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHZv
aWQgQWNjZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRDaGlsZHJlbigpCiAgICAgCiAgICAgLy8gbWFr
ZSB0aGUgY29sdW1ucyBiYXNlZCBvbiB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgaW4gdGhlIGZpcnN0
IGJvZHkKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29sdW1uQ291bnQ7ICsraSkgewot
ICAgICAgICBhdXRvJiBjb2x1bW4gPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4+
KCpheENhY2hlLT5nZXRPckNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1uKSk7CisgICAg
ICAgIGF1dG8mIGNvbHVtbiA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbj4oKmF4
Q2FjaGUtPmNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1uKSk7CiAgICAgICAgIGNvbHVt
bi5zZXRDb2x1bW5JbmRleChpKTsKICAgICAgICAgY29sdW1uLnNldFBhcmVudCh0aGlzKTsKICAg
ICAgICAgbV9jb2x1bW5zLmFwcGVuZCgmY29sdW1uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAKaW5kZXggZDliM2UyM2E5
OTI1ZDdiZGIxMjIyZWNjN2YyNjBjYzVkMWZkODljYy4uZjZjNTllOTVmY2Y3MGRhYmEyOWM0ZWY1
MjVjMGNhMTM3MjFjMWQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAKQEAgLTc0LDggKzc0LDYgQEAgdm9pZCBBY2Nl
c3NpYmlsaXR5TGlzdEJveDo6YWRkQ2hpbGRyZW4oKQogICAgIG1faGF2ZUNoaWxkcmVuID0gdHJ1
ZTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgbGlzdEl0ZW0gOiBkb3duY2FzdDxIVE1MU2VsZWN0
RWxlbWVudD4oKnNlbGVjdE5vZGUpLmxpc3RJdGVtcygpKSB7Ci0gICAgICAgIC8vIFRoZSBjYXN0
IHRvIEhUTUxFbGVtZW50IGJlbG93IGlzIHNhZmUgYmVjYXVzZSB0aGUgb25seSBvdGhlciBwb3Nz
aWJsZSBsaXN0SXRlbSB0eXBlCi0gICAgICAgIC8vIHdvdWxkIGJlIGEgV01MRWxlbWVudCwgYnV0
IFdNTCBidWlsZHMgZG9uJ3QgdXNlIGFjY2Vzc2liaWxpdHkgZmVhdHVyZXMgYXQgYWxsLgogICAg
ICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBsaXN0T3B0aW9uID0gbGlzdEJveE9wdGlvbkFjY2Vz
c2liaWxpdHlPYmplY3QobGlzdEl0ZW0pOwogICAgICAgICBpZiAobGlzdE9wdGlvbiAmJiAhbGlz
dE9wdGlvbi0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKQogICAgICAgICAgICAgbV9jaGlsZHJl
bi5hcHBlbmQobGlzdE9wdGlvbik7CkBAIC0xMzUsMTYgKzEzMywxMCBAQCB2b2lkIEFjY2Vzc2li
aWxpdHlMaXN0Qm94Ojp2aXNpYmxlQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
JiByZXN1bHQpCiAKIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlMaXN0Qm94Ojps
aXN0Qm94T3B0aW9uQWNjZXNzaWJpbGl0eU9iamVjdChIVE1MRWxlbWVudCogZWxlbWVudCkgY29u
c3QKIHsKLSAgICAvLyBza2lwIGhyIGVsZW1lbnRzCi0gICAgaWYgKCFlbGVtZW50IHx8IGVsZW1l
bnQtPmhhc1RhZ05hbWUoaHJUYWcpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKLSAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBsaXN0Qm94T2JqZWN0ID0gKm1fcmVuZGVyZXItPmRvY3Vt
ZW50KCkuYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6TGlz
dEJveE9wdGlvbik7Ci0gICAgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24+KGxp
c3RCb3hPYmplY3QpLnNldEhUTUxFbGVtZW50KGVsZW1lbnQpOwotICAgIAotICAgIHJldHVybiAm
bGlzdEJveE9iamVjdDsKKyAgICAvLyBGSVhNRTogV2h5IGRvZXMgQWNjZXNzaWJpbGl0eU1lbnVM
aXN0UG9wdXA6Om1lbnVMaXN0T3B0aW9uQWNjZXNzaWJpbGl0eU9iamVjdCBjaGVjayBpblJlbmRl
cmVkRG9jdW1lbnQsIGJ1dCB0aGlzIGRvZXMgbm90PworICAgIHJldHVybiBtX3JlbmRlcmVyLT5k
b2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoZWxlbWVudCk7CiB9Ci0gICAg
CisKIEFYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eUxpc3RCb3g6OmVsZW1lbnRBY2Nlc3NpYmls
aXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CiB7CiAgICAgLy8gdGhlIGlu
dGVybmFsIEhUTUxTZWxlY3RFbGVtZW50IG1ldGhvZHMgZm9yIHJldHVybmluZyBhIGxpc3Rib3gg
b3B0aW9uIGF0IGEgcG9pbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAKaW5kZXggNWI4MzliZGQyZDM5
YzdkNDdmN2RlZjFlMWM5ZGViNDE3MDhkY2UwMC4uODE4YzU2YjY4YTY3MThjY2E3OWE2MjMwOTM2
MzBjZjE5ODAxY2Q1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAKQEAgLTMxLDMwICszMSwyNyBA
QAogCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlM
aXN0Qm94LmgiCi0jaW5jbHVkZSAiRWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTE9wdEdyb3VwRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFNlbGVjdEVs
ZW1lbnQuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGlzdEJveC5o
IgotI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVz
aW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAgICAgCi1BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlv
bjo6QWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24oKQotICAgIDogbV9vcHRpb25FbGVtZW50KG51
bGxwdHIpCitBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbjo6QWNjZXNzaWJpbGl0eUxpc3RCb3hP
cHRpb24oSFRNTEVsZW1lbnQmIGVsZW1lbnQpCisgICAgOiBtX29wdGlvbkVsZW1lbnQobWFrZVdl
YWtQdHIoZWxlbWVudCkpCiB7CiB9CiAKIEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uOjp+QWNj
ZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24oKSA9IGRlZmF1bHQ7CiAgICAgCi1SZWY8QWNjZXNzaWJp
bGl0eUxpc3RCb3hPcHRpb24+IEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uOjpjcmVhdGUoKQor
UmVmPEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uPiBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlv
bjo6Y3JlYXRlKEhUTUxFbGVtZW50JiBlbGVtZW50KQogewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uKCkpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uKGVsZW1lbnQpKTsKIH0KICAgICAKIGJvb2wg
QWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246OmlzRW5hYmxlZCgpIGNvbnN0CkBAIC0xNTcsNyAr
MTU0LDEyIEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbjo6c3RyaW5nVmFsdWUo
KSBjb25zdAogCiBFbGVtZW50KiBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbjo6YWN0aW9uRWxl
bWVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fb3B0aW9uRWxlbWVudDsKKyAgICByZXR1cm4g
bV9vcHRpb25FbGVtZW50LmdldCgpOworfQorCitOb2RlKiBBY2Nlc3NpYmlsaXR5TGlzdEJveE9w
dGlvbjo6bm9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fb3B0aW9uRWxlbWVudC5nZXQoKTsK
IH0KIAogQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246OnBh
cmVudE9iamVjdCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmgKaW5kZXggMmQ3NzIzNzEyMDUxNzI2
M2NjNWJlZWJjOWU1Yzk4MmFjZjY1MDgyZC4uYzFiOTQ0OWE0MDc0MmQ0MzdiZjRlYzljN2I3ZWVl
OTAzNTY2Y2MyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5TGlzdEJveE9wdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uaApAQCAtMjksNDcgKzI5LDQzIEBACiAjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3QuaCIKLSNpbmNsdWRlICJI
VE1MRWxlbWVudC5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgQWNjZXNzaWJpbGl0eUxpc3RCb3g7Ci1jbGFzcyBFbGVtZW50OworY2xh
c3MgSFRNTEVsZW1lbnQ7CiBjbGFzcyBIVE1MU2VsZWN0RWxlbWVudDsKLSAgICAKKwogY2xhc3Mg
QWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24gZmluYWwgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eU9i
amVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlv
bj4gY3JlYXRlKCk7CisgICAgc3RhdGljIFJlZjxBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbj4g
Y3JlYXRlKEhUTUxFbGVtZW50Jik7CiAgICAgdmlydHVhbCB+QWNjZXNzaWJpbGl0eUxpc3RCb3hP
cHRpb24oKTsKLSAgICAKLSAgICB2b2lkIHNldEhUTUxFbGVtZW50KEhUTUxFbGVtZW50KiBlbGVt
ZW50KSB7IG1fb3B0aW9uRWxlbWVudCA9IGVsZW1lbnQ7IH0KLSAgICAKLSAgICBBY2Nlc3NpYmls
aXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBY2Nlc3NpYmlsaXR5
Um9sZTo6TGlzdEJveE9wdGlvbjsgfQotICAgIGJvb2wgaXNTZWxlY3RlZCgpIGNvbnN0IG92ZXJy
aWRlOwotICAgIGJvb2wgaXNFbmFibGVkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc1Nl
bGVjdGVkT3B0aW9uQWN0aXZlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgU3RyaW5nIHN0cmluZ1Zh
bHVlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgRWxlbWVudCogYWN0aW9uRWxlbWVudCgpIGNvbnN0
IG92ZXJyaWRlOwotICAgIE5vZGUqIG5vZGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX29w
dGlvbkVsZW1lbnQ7IH0KLSAgICB2b2lkIHNldFNlbGVjdGVkKGJvb2wpIG92ZXJyaWRlOwotICAg
IGJvb2wgY2FuU2V0U2VsZWN0ZWRBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIExh
eW91dFJlY3QgZWxlbWVudFJlY3QoKSBjb25zdCBvdmVycmlkZTsKLSAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBwYXJlbnRPYmplY3QoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzU2VsZWN0
ZWQoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNldFNlbGVjdGVkKGJvb2wpIGZpbmFsOwogCiBw
cml2YXRlOgotICAgIEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uKCk7CisgICAgZXhwbGljaXQg
QWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24oSFRNTEVsZW1lbnQmKTsKKworICAgIEFjY2Vzc2li
aWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlS
b2xlOjpMaXN0Qm94T3B0aW9uOyB9CisgICAgYm9vbCBpc0VuYWJsZWQoKSBjb25zdCBmaW5hbDsK
KyAgICBib29sIGlzU2VsZWN0ZWRPcHRpb25BY3RpdmUoKSBjb25zdCBmaW5hbDsKKyAgICBTdHJp
bmcgc3RyaW5nVmFsdWUoKSBjb25zdCBmaW5hbDsKKyAgICBFbGVtZW50KiBhY3Rpb25FbGVtZW50
KCkgY29uc3QgZmluYWw7CisgICAgTm9kZSogbm9kZSgpIGNvbnN0IGZpbmFsOworICAgIGJvb2wg
Y2FuU2V0U2VsZWN0ZWRBdHRyaWJ1dGUoKSBjb25zdCBmaW5hbDsKKworICAgIExheW91dFJlY3Qg
ZWxlbWVudFJlY3QoKSBjb25zdCBmaW5hbDsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJl
bnRPYmplY3QoKSBjb25zdCBmaW5hbDsKIAotICAgIGJvb2wgaXNMaXN0Qm94T3B0aW9uKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTGlzdEJveE9wdGlv
bigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGNhbkhhdmVDaGlsZHJl
bigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgSFRNTFNlbGVjdEVsZW1lbnQq
IGxpc3RCb3hPcHRpb25QYXJlbnROb2RlKCkgY29uc3Q7CiAgICAgaW50IGxpc3RCb3hPcHRpb25J
bmRleCgpIGNvbnN0OwogICAgIEludFJlY3QgbGlzdEJveE9wdGlvblJlY3QoKSBjb25zdDsKICAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBsaXN0Qm94T3B0aW9uQWNjZXNzaWJpbGl0eU9iamVjdChI
VE1MRWxlbWVudCopIGNvbnN0OwotICAgIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9y
ZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25v
cmVkKCkgY29uc3QgZmluYWw7CiAKLSAgICBIVE1MRWxlbWVudCogbV9vcHRpb25FbGVtZW50Owor
ICAgIFdlYWtQdHI8SFRNTEVsZW1lbnQ+IG1fb3B0aW9uRWxlbWVudDsKIH07CiAgICAgCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuY3BwCmluZGV4IGIwYzNjMzEzYWViYzA5N2NlMGQw
MTcwM2EzYWFiMWEyZTk4ODdlMWIuLjQ5NmRlYTU0NTFlNzMyMDY2OTIwYjNiMjk5NzFlYTVkY2E0
M2QzZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU1lbnVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlNZW51TGlzdC5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5
TWVudUxpc3Q6OmFkZENoaWxkcmVuKCkKICAgICBpZiAoIWNhY2hlKQogICAgICAgICByZXR1cm47
CiAgICAgCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbGlzdCA9IGNhY2hlLT5nZXRPckNyZWF0
ZShBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUxpc3RQb3B1cCk7CisgICAgYXV0byBsaXN0ID0gY2Fj
aGUtPmNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUxpc3RQb3B1cCk7CiAgICAgaWYgKCFs
aXN0KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uLmNwcAppbmRleCA5YzE2
N2M4NzczZjA2NWIxNjdkMWZhMjE5NjdkOWM3ZTZlNGQ1ODkzLi5mMzBmZmQ4Mjk2YWQ2MGY0M2M0
NjhhOTFhNzEyMzA4NzIzNWJjMDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24uY3BwCkBAIC0zNSwz
NiArMzUsMzkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5h
bWVzOwogCi1BY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb246OkFjY2Vzc2liaWxpdHlNZW51TGlz
dE9wdGlvbigpCitBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb246OkFjY2Vzc2liaWxpdHlNZW51
TGlzdE9wdGlvbihIVE1MT3B0aW9uRWxlbWVudCYgZWxlbWVudCkKKyAgICA6IG1fZWxlbWVudCht
YWtlV2Vha1B0cihlbGVtZW50KSkKIHsKIH0KIAotdm9pZCBBY2Nlc3NpYmlsaXR5TWVudUxpc3RP
cHRpb246OnNldEVsZW1lbnQoSFRNTEVsZW1lbnQqIGVsZW1lbnQpCitSZWY8QWNjZXNzaWJpbGl0
eU1lbnVMaXN0T3B0aW9uPiBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb246OmNyZWF0ZShIVE1M
T3B0aW9uRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICBBU1NFUlRfQVJHKGVsZW1lbnQsIGlzPEhU
TUxPcHRpb25FbGVtZW50PihlbGVtZW50KSk7Ci0gICAgbV9lbGVtZW50ID0gZWxlbWVudDsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24oZWxlbWVu
dCkpOwogfQogCiBFbGVtZW50KiBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb246OmFjdGlvbkVs
ZW1lbnQoKSBjb25zdAogewogICAgIHJldHVybiBtX2VsZW1lbnQuZ2V0KCk7CiB9CisKK05vZGUq
IEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6bm9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fZWxlbWVudC5nZXQoKTsKK30KICAgICAKIGJvb2wgQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0
aW9uOjppc0VuYWJsZWQoKSBjb25zdAogewotICAgIC8vIGlzRGlzYWJsZWRGb3JtQ29udHJvbCgp
IHJldHVybnMgdHJ1ZSBpZiB0aGUgcGFyZW50IDxzZWxlY3Q+IGVsZW1lbnQgaXMgZGlzYWJsZWQs
Ci0gICAgLy8gd2hpY2ggd2UgZG9uJ3Qgd2FudC4KLSAgICByZXR1cm4gIWRvd25jYXN0PEhUTUxP
cHRpb25FbGVtZW50PigqbV9lbGVtZW50KS5vd25FbGVtZW50RGlzYWJsZWQoKTsKKyAgICByZXR1
cm4gbV9lbGVtZW50ICYmICFtX2VsZW1lbnQtPm93bkVsZW1lbnREaXNhYmxlZCgpOwogfQogCiBi
b29sIEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6aXNWaXNpYmxlKCkgY29uc3QKIHsKLSAg
ICBpZiAoIW1fcGFyZW50KQorICAgIGlmICghbV9lbGVtZW50KQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgCi0gICAgLy8gSW4gYSBzaW5nbGUtb3B0aW9uIHNlbGVjdCB3aXRoIHRoZSBwb3B1
cCBjb2xsYXBzZWQsIG9ubHkgdGhlIHNlbGVjdGVkCi0gICAgLy8gaXRlbSBpcyBjb25zaWRlcmVk
IHZpc2libGUuCi0gICAgcmV0dXJuICFtX3BhcmVudC0+aXNPZmZTY3JlZW4oKSB8fCBpc1NlbGVj
dGVkKCk7CisKKyAgICAvLyBJbiBhIHNpbmdsZS1vcHRpb24gc2VsZWN0IHdpdGggdGhlIHBvcHVw
IGNvbGxhcHNlZCwgb25seSB0aGUgc2VsZWN0ZWQgaXRlbSBpcyBjb25zaWRlcmVkIHZpc2libGUu
CisgICAgYXV0byBwYXJlbnQgPSBtX2VsZW1lbnQtPmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgp
LT5nZXRPckNyZWF0ZShtX2VsZW1lbnQtPm93bmVyU2VsZWN0RWxlbWVudCgpKTsKKyAgICByZXR1
cm4gcGFyZW50ICYmICghcGFyZW50LT5pc09mZlNjcmVlbigpIHx8IGlzU2VsZWN0ZWQoKSk7CiB9
CiAKIGJvb2wgQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uOjppc09mZlNjcmVlbigpIGNvbnN0
CkBAIC03NSw3ICs3OCw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uOjppc09m
ZlNjcmVlbigpIGNvbnN0CiAKIGJvb2wgQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uOjppc1Nl
bGVjdGVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+
KCptX2VsZW1lbnQpLnNlbGVjdGVkKCk7CisgICAgcmV0dXJuIG1fZWxlbWVudCAmJiBtX2VsZW1l
bnQtPnNlbGVjdGVkKCk7CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uOjpz
ZXRTZWxlY3RlZChib29sIHNlbGVjdGVkKQpAQCAtODMsNyArODYsNyBAQCB2b2lkIEFjY2Vzc2li
aWxpdHlNZW51TGlzdE9wdGlvbjo6c2V0U2VsZWN0ZWQoYm9vbCBzZWxlY3RlZCkKICAgICBpZiAo
IWNhblNldFNlbGVjdGVkQXR0cmlidXRlKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBk
b3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKm1fZWxlbWVudCkuc2V0U2VsZWN0ZWQoc2VsZWN0
ZWQpOworICAgIG1fZWxlbWVudC0+c2V0U2VsZWN0ZWQoc2VsZWN0ZWQpOwogfQogCiBTdHJpbmcg
QWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uOjpuYW1lRm9yTVNBQSgpIGNvbnN0CkBAIC0xMTgs
NyArMTIxLDcgQEAgTGF5b3V0UmVjdCBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb246OmVsZW1l
bnRSZWN0KCkgY29uc3QKIAogU3RyaW5nIEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6c3Ry
aW5nVmFsdWUoKSBjb25zdAogewotICAgIHJldHVybiBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVu
dD4oKm1fZWxlbWVudCkubGFiZWwoKTsKKyAgICByZXR1cm4gbV9lbGVtZW50ID8gbV9lbGVtZW50
LT5sYWJlbCgpIDogU3RyaW5nKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0
T3B0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51
TGlzdE9wdGlvbi5oCmluZGV4IDUxMWZhN2I3YjFmMDcyNzlmZjY2NDcxM2M0NDU2ZmY4NjhjYjZh
MzcuLmIyYmZjMzM3Zjg5OGUwMDA5MThmZjZjMzI2MDYyMjNkNzhmMjU2ZWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxp
c3RPcHRpb24uaApAQCAtMjUsMzkgKzI1LDM4IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVk
ZSAiQWNjZXNzaWJpbGl0eU1vY2tPYmplY3QuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSFRNTEVsZW1lbnQ7CitjbGFz
cyBIVE1MT3B0aW9uRWxlbWVudDsKIAotY2xhc3MgQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9u
IGZpbmFsIDogcHVibGljIEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0IHsKK2NsYXNzIEFjY2Vzc2li
aWxpdHlNZW51TGlzdE9wdGlvbiBmaW5hbCA6IHB1YmxpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbj4gY3Jl
YXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24p
OyB9Ci0KLSAgICB2b2lkIHNldEVsZW1lbnQoSFRNTEVsZW1lbnQqKTsKKyAgICBzdGF0aWMgUmVm
PEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbj4gY3JlYXRlKEhUTUxPcHRpb25FbGVtZW50Jik7
CiAKIHByaXZhdGU6Ci0gICAgQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uKCk7CisgICAgZXhw
bGljaXQgQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uKEhUTUxPcHRpb25FbGVtZW50Jik7CiAK
LSAgICBib29sIGlzTWVudUxpc3RPcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CisgICAgYm9vbCBpc01lbnVMaXN0T3B0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1
ZTsgfQogCi0gICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVMaXN0T3B0aW9uOyB9Ci0gICAgYm9vbCBj
YW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIEFj
Y2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEFjY2Vzc2li
aWxpdHlSb2xlOjpNZW51TGlzdE9wdGlvbjsgfQorICAgIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIEVsZW1lbnQqIGFjdGlvbkVsZW1l
bnQoKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGlzRW5hYmxlZCgpIGNvbnN0IG92ZXJyaWRl
OwotICAgIGJvb2wgaXNWaXNpYmxlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc09mZlNj
cmVlbigpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgaXNTZWxlY3RlZCgpIGNvbnN0IG92ZXJy
aWRlOwotICAgIFN0cmluZyBuYW1lRm9yTVNBQSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQg
c2V0U2VsZWN0ZWQoYm9vbCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBjYW5TZXRTZWxlY3RlZEF0dHJp
YnV0ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIExheW91dFJlY3QgZWxlbWVudFJlY3QoKSBjb25z
dCBvdmVycmlkZTsKLSAgICBTdHJpbmcgc3RyaW5nVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKLSAg
ICBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgRWxlbWVudCogYWN0aW9uRWxlbWVudCgpIGNvbnN0IGZpbmFsOworICAgIE5vZGUqIG5vZGUo
KSBjb25zdCBmaW5hbDsKKyAgICBib29sIGlzRW5hYmxlZCgpIGNvbnN0IGZpbmFsOworICAgIGJv
b2wgaXNWaXNpYmxlKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBpc09mZlNjcmVlbigpIGNvbnN0
IGZpbmFsOworICAgIGJvb2wgaXNTZWxlY3RlZCgpIGNvbnN0IGZpbmFsOworICAgIFN0cmluZyBu
YW1lRm9yTVNBQSgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc2V0U2VsZWN0ZWQoYm9vbCkgZmlu
YWw7CisgICAgYm9vbCBjYW5TZXRTZWxlY3RlZEF0dHJpYnV0ZSgpIGNvbnN0IGZpbmFsOworICAg
IExheW91dFJlY3QgZWxlbWVudFJlY3QoKSBjb25zdCBmaW5hbDsKKyAgICBTdHJpbmcgc3RyaW5n
VmFsdWUoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25v
cmVkKCkgY29uc3QgZmluYWw7CiAKLSAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IG1fZWxlbWVudDsK
KyAgICBXZWFrUHRyPEhUTUxPcHRpb25FbGVtZW50PiBtX2VsZW1lbnQ7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuY3BwCmluZGV4IDdiMDJjMjI0OWM2YTM5
NDYzMTk4MzQzYTJlNDc4MGU0NGI1MTEyMTAuLjgxYjZjMWQ0ODM4NmFlMWMzNTMwYjZmMzJkOTg2
NDdhNWVmYjM1ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuY3BwCkBAIC03MCwxMyArNzAsMTAgQEAg
Ym9vbCBBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cDo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0ln
bm9yZWQoKSBjb25zdAogCiBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24qIEFjY2Vzc2liaWxp
dHlNZW51TGlzdFBvcHVwOjptZW51TGlzdE9wdGlvbkFjY2Vzc2liaWxpdHlPYmplY3QoSFRNTEVs
ZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7Ci0gICAgaWYgKCFpczxIVE1MT3B0aW9uRWxlbWVudD4o
ZWxlbWVudCkgfHwgIWVsZW1lbnQtPmluUmVuZGVyZWREb2N1bWVudCgpKQorICAgIGlmICghZWxl
bWVudCB8fCAhZWxlbWVudC0+aW5SZW5kZXJlZERvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgYXV0byYgb3B0aW9uID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eU1lbnVM
aXN0T3B0aW9uPigqZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShBY2Nl
c3NpYmlsaXR5Um9sZTo6TWVudUxpc3RPcHRpb24pKTsKLSAgICBvcHRpb24uc2V0RWxlbWVudChl
bGVtZW50KTsKLQotICAgIHJldHVybiAmb3B0aW9uOworICAgIHJldHVybiBkb3duY2FzdDxBY2Nl
c3NpYmlsaXR5TWVudUxpc3RPcHRpb24+KGRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+Z2V0
T3JDcmVhdGUoZWxlbWVudCkpOwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVw
OjpwcmVzcygpCkBAIC0xMDAsMTEgKzk3LDkgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5TWVudUxpc3RQ
b3B1cDo6YWRkQ2hpbGRyZW4oKQogICAgIG1faGF2ZUNoaWxkcmVuID0gdHJ1ZTsKIAogICAgIGZv
ciAoY29uc3QgYXV0byYgbGlzdEl0ZW0gOiBkb3duY2FzdDxIVE1MU2VsZWN0RWxlbWVudD4oKnNl
bGVjdE5vZGUpLmxpc3RJdGVtcygpKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlNZW51TGlzdE9w
dGlvbiogb3B0aW9uID0gbWVudUxpc3RPcHRpb25BY2Nlc3NpYmlsaXR5T2JqZWN0KGxpc3RJdGVt
KTsKLSAgICAgICAgaWYgKG9wdGlvbikgewotICAgICAgICAgICAgb3B0aW9uLT5zZXRQYXJlbnQo
dGhpcyk7CisgICAgICAgIC8vIEZJWE1FOiBXaHkgZG9lcyBBY2Nlc3NpYmlsaXR5TGlzdEJveDo6
YWRkQ2hpbGRyZW4gY2hlY2sgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCBidXQgdGhpcyBkb2VzIG5v
dD8KKyAgICAgICAgaWYgKGF1dG8gb3B0aW9uID0gbWVudUxpc3RPcHRpb25BY2Nlc3NpYmlsaXR5
T2JqZWN0KGxpc3RJdGVtKSkKICAgICAgICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kKG9wdGlvbik7
Ci0gICAgICAgIH0KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKaW5kZXggNDI0ZGE4Y2NhODgy
MjliMDlmMzkxZjcxYjk3NzdlNTIwZjJhZGI2Ny4uNzgxNTFiYzg4YTdhNThmYWVlZWFlMDBiMmFm
NzZiYTlhODg4OWJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKQEAgLTUzLDYgKzUzLDcgQEAKICNpbmNs
dWRlICJIVE1MTGFiZWxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTExlZ2VuZEVsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MT3B0aW9uRWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJIVE1MU2VsZWN0RWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxUZXh0QXJlYUVsZW1lbnQuaCIKQEAgLTIwMjYsNyArMjAyNyw3
IEBAIHN0YXRpYyBTdHJpbmcgYWNjZXNzaWJsZU5hbWVGb3JOb2RlKE5vZGUqIG5vZGUsIE5vZGUq
IGxhYmVsbGVkYnlOb2RlKQogCiAgICAgLy8gSWYgdGhlIG5vZGUgY2FuIGJlIHR1cm5lZCBpbnRv
IGFuIEFYIG9iamVjdCwgd2UgY2FuIHVzZSBzdGFuZGFyZCBuYW1lIGNvbXB1dGF0aW9uIHJ1bGVz
LgogICAgIC8vIElmIGhvd2V2ZXIsIHRoZSBub2RlIGNhbm5vdCAoYmVjYXVzZSB0aGVyZSdzIG5v
IHJlbmRlcmVyIGUuZy4pIGZhbGxiYWNrIHRvIHVzaW5nIHRoZSBiYXNpYyB0ZXh0IHVuZGVybmVh
dGguCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmplY3QgPSBub2RlLT5kb2N1bWVudCgp
LmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUobm9kZSk7CisgICAgYXV0byBheE9iamVjdCA9
IGVsZW1lbnQuZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKCZlbGVtZW50
KTsKICAgICBpZiAoYXhPYmplY3QpIHsKICAgICAgICAgU3RyaW5nIHZhbHVlRGVzY3JpcHRpb24g
PSBheE9iamVjdC0+dmFsdWVEZXNjcmlwdGlvbigpOwogICAgICAgICBpZiAoIXZhbHVlRGVzY3Jp
cHRpb24uaXNFbXB0eSgpKQpAQCAtMjA1Niw5ICsyMDU3LDExIEBAIHN0YXRpYyBTdHJpbmcgYWNj
ZXNzaWJsZU5hbWVGb3JOb2RlKE5vZGUqIG5vZGUsIE5vZGUqIGxhYmVsbGVkYnlOb2RlKQogICAg
ICAgICAgICAgcmV0dXJuIGNoaWxkVGV4dDsKICAgICB9CiAgICAgCi0gICAgaWYgKGlzPEhUTUxJ
bnB1dEVsZW1lbnQ+KCpub2RlKSkKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxJbnB1dEVs
ZW1lbnQ+KCpub2RlKS52YWx1ZSgpOwotICAgIAorICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50
PihlbGVtZW50KSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KGVs
ZW1lbnQpLnZhbHVlKCk7CisgICAgaWYgKGlzPEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KSkK
KyAgICAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KS52YWx1
ZSgpOworCiAgICAgU3RyaW5nIHRleHQ7CiAgICAgaWYgKGF4T2JqZWN0KSB7CiAgICAgICAgIGlm
IChheE9iamVjdC0+YWNjZXNzaWJsZU5hbWVEZXJpdmVzRnJvbUNvbnRlbnQoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwCmluZGV4IDNjNDRlYzg5ODRiNjdmNmNhOThiNzA5N2Y0N2M2MDI2ZDg1NjU0MTcu
LjBkODM4ZDU3NDgxZmI0N2JkOWZlMjlkOTdhNWRjMDlhYjFkOGNhYjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LmNwcApAQCAtMTk0OSw3ICsxOTQ5LDcgQEAgQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3IgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZG9jdW1lbnRMaW4KICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGF1dG8qIHBhcmVudCA9IGN1cnJlbnQtPnBhcmVu
dE5vZGUoKTsKICAgICAgICAgICAgIGlmIChpczxIVE1MQXJlYUVsZW1lbnQ+KCpjdXJyZW50KSAm
JiBpczxIVE1MTWFwRWxlbWVudD4ocGFyZW50KSkgewotICAgICAgICAgICAgICAgIGF1dG8mIGFy
ZWFPYmplY3QgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rPigqYXhPYmplY3RD
YWNoZSgpLT5nZXRPckNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2VNYXBMaW5rKSk7Cisg
ICAgICAgICAgICAgICAgYXV0byYgYXJlYU9iamVjdCA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlJ
bWFnZU1hcExpbms+KCpheE9iamVjdENhY2hlKCktPmNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6
SW1hZ2VNYXBMaW5rKSk7CiAgICAgICAgICAgICAgICAgSFRNTE1hcEVsZW1lbnQmIG1hcCA9IGRv
d25jYXN0PEhUTUxNYXBFbGVtZW50PigqcGFyZW50KTsKICAgICAgICAgICAgICAgICBhcmVhT2Jq
ZWN0LnNldEhUTUxBcmVhRWxlbWVudChkb3duY2FzdDxIVE1MQXJlYUVsZW1lbnQ+KGN1cnJlbnQp
KTsKICAgICAgICAgICAgICAgICBhcmVhT2JqZWN0LnNldEhUTUxNYXBFbGVtZW50KCZtYXApOwpA
QCAtMzE3Myw3ICszMTczLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRJ
bWFnZU1hcENoaWxkcmVuKCkKICAgICAgICAgLy8gYWRkIGFuIDxhcmVhPiBlbGVtZW50IGZvciB0
aGlzIGNoaWxkIGlmIGl0IGhhcyBhIGxpbmsKICAgICAgICAgaWYgKCFhcmVhLmlzTGluaygpKQog
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGF1dG8mIGFyZWFPYmplY3QgPSBkb3duY2Fz
dDxBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rPigqYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0
ZShBY2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2VNYXBMaW5rKSk7CisgICAgICAgIGF1dG8mIGFyZWFP
YmplY3QgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rPigqYXhPYmplY3RDYWNo
ZSgpLT5jcmVhdGUoQWNjZXNzaWJpbGl0eVJvbGU6OkltYWdlTWFwTGluaykpOwogICAgICAgICBh
cmVhT2JqZWN0LnNldEhUTUxBcmVhRWxlbWVudCgmYXJlYSk7CiAgICAgICAgIGFyZWFPYmplY3Qu
c2V0SFRNTE1hcEVsZW1lbnQobWFwKTsKICAgICAgICAgYXJlYU9iamVjdC5zZXRQYXJlbnQodGhp
cyk7CkBAIC0zMjA4LDcgKzMyMDgsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmFkZFRleHRGaWVsZENoaWxkcmVuKCkKICAgICBpZiAoIWlzPFNwaW5CdXR0b25FbGVtZW50Pihz
cGluQnV0dG9uRWxlbWVudCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8mIGF4U3BpbkJ1
dHRvbiA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uPigqYXhPYmplY3RDYWNoZSgp
LT5nZXRPckNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6U3BpbkJ1dHRvbikpOworICAgIGF1dG8m
IGF4U3BpbkJ1dHRvbiA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uPigqYXhPYmpl
Y3RDYWNoZSgpLT5jcmVhdGUoQWNjZXNzaWJpbGl0eVJvbGU6OlNwaW5CdXR0b24pKTsKICAgICBh
eFNwaW5CdXR0b24uc2V0U3BpbkJ1dHRvbkVsZW1lbnQoZG93bmNhc3Q8U3BpbkJ1dHRvbkVsZW1l
bnQ+KHNwaW5CdXR0b25FbGVtZW50KSk7CiAgICAgYXhTcGluQnV0dG9uLnNldFBhcmVudCh0aGlz
KTsKICAgICBtX2NoaWxkcmVuLmFwcGVuZCgmYXhTcGluQnV0dG9uKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwCmluZGV4IGEx
YTE0Nzk5ZWVlNTc0MTVkOGVlNTM5OGM1NmIwYTFkNzg3MTA3Y2YuLjBlYjFiMmJiOTEwZTVjY2Uw
ODNmYmQwMjQ4YjQ3MWE1MjllNmJhZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcApAQCAtODQsNyArODQsNyBAQCB2b2lk
IEFjY2Vzc2liaWxpdHlTbGlkZXI6OmFkZENoaWxkcmVuKCkKIAogICAgIEFYT2JqZWN0Q2FjaGUq
IGNhY2hlID0gbV9yZW5kZXJlci0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCk7CiAKLSAgICBh
dXRvJiB0aHVtYiA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlTbGlkZXJUaHVtYj4oKmNhY2hlLT5n
ZXRPckNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVyVGh1bWIpKTsKKyAgICBhdXRvJiB0
aHVtYiA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlTbGlkZXJUaHVtYj4oKmNhY2hlLT5jcmVhdGUo
QWNjZXNzaWJpbGl0eVJvbGU6OlNsaWRlclRodW1iKSk7CiAgICAgdGh1bWIuc2V0UGFyZW50KHRo
aXMpOwogCiAgICAgLy8gQmVmb3JlIGFjdHVhbGx5IGFkZGluZyB0aGUgdmFsdWUgaW5kaWNhdG9y
IHRvIHRoZSBoaWVyYXJjaHksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uY3BwCmluZGV4IDdkMGE2YTQzYWE1MTA5MTY5
ZGJlYmFhNDI0YzZkZjk0YjdmM2RhZjkuLjkyOWY2MTM1YzIyZWQwYTk4ZDZlYzU3MTQ0ODYxZmZk
ZDRkMDc5YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVNwaW5CdXR0b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uY3BwCkBAIC04OCwxMiArODgsMTIgQEAgdm9pZCBBY2Nl
c3NpYmlsaXR5U3BpbkJ1dHRvbjo6YWRkQ2hpbGRyZW4oKQogICAgIAogICAgIG1faGF2ZUNoaWxk
cmVuID0gdHJ1ZTsKICAgICAKLSAgICBhdXRvJiBpbmNyZW1lbnRvciA9IGRvd25jYXN0PEFjY2Vz
c2liaWxpdHlTcGluQnV0dG9uUGFydD4oKmNhY2hlLT5nZXRPckNyZWF0ZShBY2Nlc3NpYmlsaXR5
Um9sZTo6U3BpbkJ1dHRvblBhcnQpKTsKKyAgICBhdXRvJiBpbmNyZW1lbnRvciA9IGRvd25jYXN0
PEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uUGFydD4oKmNhY2hlLT5jcmVhdGUoQWNjZXNzaWJpbGl0
eVJvbGU6OlNwaW5CdXR0b25QYXJ0KSk7CiAgICAgaW5jcmVtZW50b3Iuc2V0SXNJbmNyZW1lbnRv
cih0cnVlKTsKICAgICBpbmNyZW1lbnRvci5zZXRQYXJlbnQodGhpcyk7CiAgICAgbV9jaGlsZHJl
bi5hcHBlbmQoJmluY3JlbWVudG9yKTsKIAotICAgIGF1dG8mIGRlY3JlbWVudG9yID0gZG93bmNh
c3Q8QWNjZXNzaWJpbGl0eVNwaW5CdXR0b25QYXJ0PigqY2FjaGUtPmdldE9yQ3JlYXRlKEFjY2Vz
c2liaWxpdHlSb2xlOjpTcGluQnV0dG9uUGFydCkpOworICAgIGF1dG8mIGRlY3JlbWVudG9yID0g
ZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVNwaW5CdXR0b25QYXJ0PigqY2FjaGUtPmNyZWF0ZShBY2Nl
c3NpYmlsaXR5Um9sZTo6U3BpbkJ1dHRvblBhcnQpKTsKICAgICBkZWNyZW1lbnRvci5zZXRJc0lu
Y3JlbWVudG9yKGZhbHNlKTsKICAgICBkZWNyZW1lbnRvci5zZXRQYXJlbnQodGhpcyk7CiAgICAg
bV9jaGlsZHJlbi5hcHBlbmQoJmRlY3JlbWVudG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAppbmRleCBjYmI2YWZlNWIxNDY4
MzZlNmU0M2Y1MjE2N2Y1ZjBkMWFhNDM5ZWRlLi43ZTlhMWZiODJkZDgxODMzZDQyMGU1Mjc0OWUz
NmNkNzU2OWIwNzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VGFibGUuY3BwCkBAIC00MTcsNyArNDE3LDcgQEAgdm9pZCBBY2Nlc3NpYmls
aXR5VGFibGU6OmFkZENoaWxkcmVuKCkKICAgICAvLyBtYWtlIHRoZSBjb2x1bW5zIGJhc2VkIG9u
IHRoZSBudW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgZmlyc3QgYm9keQogICAgIHVuc2lnbmVkIGxl
bmd0aCA9IG1heENvbHVtbkNvdW50OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5n
dGg7ICsraSkgewotICAgICAgICBhdXRvJiBjb2x1bW4gPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5
VGFibGVDb2x1bW4+KCpheENhY2hlLT5nZXRPckNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6Q29s
dW1uKSk7CisgICAgICAgIGF1dG8mIGNvbHVtbiA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJs
ZUNvbHVtbj4oKmF4Q2FjaGUtPmNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1uKSk7CiAg
ICAgICAgIGNvbHVtbi5zZXRDb2x1bW5JbmRleChpKTsKICAgICAgICAgY29sdW1uLnNldFBhcmVu
dCh0aGlzKTsKICAgICAgICAgbV9jb2x1bW5zLmFwcGVuZCgmY29sdW1uKTsKQEAgLTUwNSw3ICs1
MDUsNyBAQCBBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlUYWJsZTo6aGVhZGVyQ29udGFpbmVy
KCkKICAgICBpZiAobV9oZWFkZXJDb250YWluZXIpCiAgICAgICAgIHJldHVybiBtX2hlYWRlckNv
bnRhaW5lci5nZXQoKTsKICAgICAKLSAgICBhdXRvJiB0YWJsZUhlYWRlciA9IGRvd25jYXN0PEFj
Y2Vzc2liaWxpdHlNb2NrT2JqZWN0PigqYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShBY2Nl
c3NpYmlsaXR5Um9sZTo6VGFibGVIZWFkZXJDb250YWluZXIpKTsKKyAgICBhdXRvJiB0YWJsZUhl
YWRlciA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0PigqYXhPYmplY3RDYWNoZSgp
LT5jcmVhdGUoQWNjZXNzaWJpbGl0eVJvbGU6OlRhYmxlSGVhZGVyQ29udGFpbmVyKSk7CiAgICAg
dGFibGVIZWFkZXIuc2V0UGFyZW50KHRoaXMpOwogCiAgICAgbV9oZWFkZXJDb250YWluZXIgPSAm
dGFibGVIZWFkZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0
ay9XZWJLaXRBY2Nlc3NpYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRr
L1dlYktpdEFjY2Vzc2libGUuY3BwCmluZGV4IDBkNDExZjQzZTllNDk3NzQ0M2M4MjU2YjlmYjk3
OGRjZThjOGRlY2IuLjg2YzMwY2RkNjY2MzcxNGY3OGY2M2UxOWQ3M2E1YzIwOGQ4N2ViNmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2li
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vz
c2libGUuY3BwCkBAIC05NywxNyArOTcsMTQgQEAgc3RydWN0IF9XZWJLaXRBY2Nlc3NpYmxlUHJp
dmF0ZSB7CiAKIFdFQktJVF9ERUZJTkVfVFlQRShXZWJLaXRBY2Nlc3NpYmxlLCB3ZWJraXRfYWNj
ZXNzaWJsZSwgQVRLX1RZUEVfT0JKRUNUKQogCi1zdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdCog
ZmFsbGJhY2tPYmplY3QoKQotewotICAgIHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmpl
Y3QgPSAmQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246OmNyZWF0ZSgpLmxlYWtSZWYoKTsKLSAg
ICByZXR1cm4gb2JqZWN0OwotfQotCiBzdGF0aWMgY29uc3QgZ2NoYXIqIHdlYmtpdEFjY2Vzc2li
bGVHZXROYW1lKEF0a09iamVjdCogb2JqZWN0KQogewogICAgIGF1dG8qIGFjY2Vzc2libGUgPSBX
RUJLSVRfQUNDRVNTSUJMRShvYmplY3QpOwogICAgIHJldHVyblZhbElmV2ViS2l0QWNjZXNzaWJs
ZUlzSW52YWxpZChhY2Nlc3NpYmxlLCBudWxscHRyKTsKIAorICAgIGlmICghYWNjZXNzaWJsZS0+
cHJpdi0+b2JqZWN0KQorICAgICAgICByZXR1cm4gIiI7CisKICAgICBWZWN0b3I8QWNjZXNzaWJp
bGl0eVRleHQ+IHRleHRPcmRlcjsKICAgICBhY2Nlc3NpYmxlLT5wcml2LT5vYmplY3QtPmFjY2Vz
c2liaWxpdHlUZXh0KHRleHRPcmRlcik7CiAKQEAgLTEzMyw2ICsxMzAsOSBAQCBzdGF0aWMgY29u
c3QgZ2NoYXIqIHdlYmtpdEFjY2Vzc2libGVHZXREZXNjcmlwdGlvbihBdGtPYmplY3QqIG9iamVj
dCkKICAgICBhdXRvKiBhY2Nlc3NpYmxlID0gV0VCS0lUX0FDQ0VTU0lCTEUob2JqZWN0KTsKICAg
ICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQoYWNjZXNzaWJsZSwgbnVsbHB0
cik7CiAKKyAgICBpZiAoIWFjY2Vzc2libGUtPnByaXYtPm9iamVjdCkKKyAgICAgICAgcmV0dXJu
ICIiOworCiAgICAgVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiB0ZXh0T3JkZXI7CiAgICAgYWNj
ZXNzaWJsZS0+cHJpdi0+b2JqZWN0LT5hY2Nlc3NpYmlsaXR5VGV4dCh0ZXh0T3JkZXIpOwogCkBA
IC0zMTIsNiArMzEyLDggQEAgc3RhdGljIEF0a09iamVjdCogd2Via2l0QWNjZXNzaWJsZUdldFBh
cmVudChBdGtPYmplY3QqIG9iamVjdCkKIAogICAgIC8vIFBhcmVudCBub3Qgc2V0IHlldCwgc28g
dHJ5IHRvIGZpbmQgaXQgaW4gdGhlIGhpZXJhcmNoeS4KICAgICBhdXRvKiBjb3JlT2JqZWN0ID0g
YWNjZXNzaWJsZS0+cHJpdi0+b2JqZWN0OworICAgIGlmICghY29yZU9iamVjdCkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgYXV0byogY29yZVBhcmVudCA9IGNvcmVPYmplY3QtPnBhcmVu
dE9iamVjdFVuaWdub3JlZCgpOwogICAgIGlmICghY29yZVBhcmVudCAmJiBpc1Jvb3RPYmplY3Qo
Y29yZU9iamVjdCkpIHsKICAgICAgICAgLy8gVGhlIHRvcCBsZXZlbCBvYmplY3QgY2xhaW1zIHRv
IG5vdCBoYXZlIGEgcGFyZW50LiBUaGlzIG1ha2VzIGl0CkBAIC0zMjksNiArMzMxLDggQEAgc3Rh
dGljIGdpbnQgd2Via2l0QWNjZXNzaWJsZUdldE5DaGlsZHJlbihBdGtPYmplY3QqIG9iamVjdCkK
ICAgICBhdXRvKiBhY2Nlc3NpYmxlID0gV0VCS0lUX0FDQ0VTU0lCTEUob2JqZWN0KTsKICAgICBy
ZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQoYWNjZXNzaWJsZSwgMCk7CiAKKyAg
ICBpZiAoIWFjY2Vzc2libGUtPnByaXYtPm9iamVjdCkKKyAgICAgICAgcmV0dXJuIDA7CiAgICAg
cmV0dXJuIGFjY2Vzc2libGUtPnByaXYtPm9iamVjdC0+Y2hpbGRyZW4oKS5zaXplKCk7CiB9CiAK
QEAgLTMzNyw3ICszNDEsNyBAQCBzdGF0aWMgQXRrT2JqZWN0KiB3ZWJraXRBY2Nlc3NpYmxlUmVm
Q2hpbGQoQXRrT2JqZWN0KiBvYmplY3QsIGdpbnQgaW5kZXgpCiAgICAgYXV0byogYWNjZXNzaWJs
ZSA9IFdFQktJVF9BQ0NFU1NJQkxFKG9iamVjdCk7CiAgICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nl
c3NpYmxlSXNJbnZhbGlkKGFjY2Vzc2libGUsIG51bGxwdHIpOwogCi0gICAgaWYgKGluZGV4IDwg
MCkKKyAgICBpZiAoIWFjY2Vzc2libGUtPnByaXYtPm9iamVjdCB8fCBpbmRleCA8IDApCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgY29uc3QgYXV0byYgY2hpbGRyZW4gPSBhY2Nlc3Np
YmxlLT5wcml2LT5vYmplY3QtPmNoaWxkcmVuKCk7CkBAIC0zNjIsNiArMzY2LDggQEAgc3RhdGlj
IGdpbnQgd2Via2l0QWNjZXNzaWJsZUdldEluZGV4SW5QYXJlbnQoQXRrT2JqZWN0KiBvYmplY3Qp
CiAgICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZhbGlkKGFjY2Vzc2libGUsIC0x
KTsKIAogICAgIGF1dG8qIGNvcmVPYmplY3QgPSBhY2Nlc3NpYmxlLT5wcml2LT5vYmplY3Q7Cisg
ICAgaWYgKCFjb3JlT2JqZWN0KQorICAgICAgICByZXR1cm4gLTE7CiAgICAgYXV0byogcGFyZW50
ID0gY29yZU9iamVjdC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgaWYgKCFwYXJlbnQg
JiYgaXNSb290T2JqZWN0KGNvcmVPYmplY3QpKSB7CiAgICAgICAgIGlmICghY29yZU9iamVjdC0+
ZG9jdW1lbnQoKSkKQEAgLTM5OSw2ICs0MDUsOCBAQCBzdGF0aWMgQXRrQXR0cmlidXRlU2V0KiB3
ZWJraXRBY2Nlc3NpYmxlR2V0QXR0cmlidXRlcyhBdGtPYmplY3QqIG9iamVjdCkKICNlbmRpZgog
CiAgICAgYXV0byogY29yZU9iamVjdCA9IGFjY2Vzc2libGUtPnByaXYtPm9iamVjdDsKKyAgICBp
ZiAoIWNvcmVPYmplY3QpCisgICAgICAgIHJldHVybiBhdHRyaWJ1dGVTZXQ7CiAKICAgICAvLyBI
YWNrIG5lZWRlZCBmb3IgV2ViS2l0MiB0ZXN0cyBiZWNhdXNlIG9idGFpbmluZyBhbiBlbGVtZW50
IGJ5IGl0cyBJRAogICAgIC8vIGNhbm5vdCBiZSBkb25lIGZyb20gdGhlIFVJUHJvY2Vzcy4gQXNz
aXN0aXZlIHRlY2hub2xvZ2llcyBoYXZlIG5vIG5lZWQKQEAgLTgzNiw2ICs4NDQsOSBAQCBzdGF0
aWMgQXRrUm9sZSB3ZWJraXRBY2Nlc3NpYmxlR2V0Um9sZShBdGtPYmplY3QqIG9iamVjdCkKICAg
ICBhdXRvKiBhY2Nlc3NpYmxlID0gV0VCS0lUX0FDQ0VTU0lCTEUob2JqZWN0KTsKICAgICByZXR1
cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQoYWNjZXNzaWJsZSwgQVRLX1JPTEVfSU5W
QUxJRCk7CiAKKyAgICBpZiAoIWFjY2Vzc2libGUtPnByaXYtPm9iamVjdCkKKyAgICAgICAgcmV0
dXJuIEFUS19ST0xFX0lOVkFMSUQ7CisgICAgCiAgICAgLy8gTm90ZTogV2h5IGRvZXNuJ3QgV2Vi
Q29yZSBoYXZlIGEgcGFzc3dvcmQgZmllbGQgZm9yIHRoaXMKICAgICBpZiAoYWNjZXNzaWJsZS0+
cHJpdi0+b2JqZWN0LT5pc1Bhc3N3b3JkRmllbGQoKSkKICAgICAgICAgcmV0dXJuIEFUS19ST0xF
X1BBU1NXT1JEX1RFWFQ7CkBAIC0xMDA2LDkgKzEwMTcsOSBAQCBzdGF0aWMgQXRrU3RhdGVTZXQq
IHdlYmtpdEFjY2Vzc2libGVSZWZTdGF0ZVNldChBdGtPYmplY3QqIG9iamVjdCkKIAogICAgIC8v
IE1ha2Ugc3VyZSB0aGUgbGF5b3V0IGlzIHVwZGF0ZWQgdG8gcmVhbGx5IGtub3cgd2hldGhlciB0
aGUgb2JqZWN0CiAgICAgLy8gaXMgZGVmdW5jdCBvciBub3QsIHNvIHdlIGNhbiByZXR1cm4gdGhl
IHByb3BlciBzdGF0ZS4KLSAgICBhY2Nlc3NpYmxlLT5wcml2LT5vYmplY3QtPnVwZGF0ZUJhY2tp
bmdTdG9yZSgpOwotCi0gICAgaWYgKGFjY2Vzc2libGUtPnByaXYtPm9iamVjdCA9PSBmYWxsYmFj
a09iamVjdCgpKSB7CisgICAgaWYgKGFjY2Vzc2libGUtPnByaXYtPm9iamVjdCkKKyAgICAgICAg
YWNjZXNzaWJsZS0+cHJpdi0+b2JqZWN0LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKKyAgICBpZiAo
IWFjY2Vzc2libGUtPnByaXYtPm9iamVjdCkgewogICAgICAgICBhdGtfc3RhdGVfc2V0X2FkZF9z
dGF0ZShzdGF0ZVNldCwgQVRLX1NUQVRFX0RFRlVOQ1QpOwogICAgICAgICByZXR1cm4gc3RhdGVT
ZXQ7CiAgICAgfQpAQCAtMTAyOCw3ICsxMDM5LDggQEAgc3RhdGljIEF0a1JlbGF0aW9uU2V0KiB3
ZWJraXRBY2Nlc3NpYmxlUmVmUmVsYXRpb25TZXQoQXRrT2JqZWN0KiBvYmplY3QpCiAgICAgcmV0
dXJuVmFsSWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZhbGlkKGFjY2Vzc2libGUsIG51bGxwdHIpOwog
CiAgICAgQXRrUmVsYXRpb25TZXQqIHJlbGF0aW9uU2V0ID0gQVRLX09CSkVDVF9DTEFTUyh3ZWJr
aXRfYWNjZXNzaWJsZV9wYXJlbnRfY2xhc3MpLT5yZWZfcmVsYXRpb25fc2V0KG9iamVjdCk7Ci0g
ICAgc2V0QXRrUmVsYXRpb25TZXRGcm9tQ29yZU9iamVjdChhY2Nlc3NpYmxlLT5wcml2LT5vYmpl
Y3QsIHJlbGF0aW9uU2V0KTsKKyAgICBpZiAoYWNjZXNzaWJsZS0+cHJpdi0+b2JqZWN0KQorICAg
ICAgICBzZXRBdGtSZWxhdGlvblNldEZyb21Db3JlT2JqZWN0KGFjY2Vzc2libGUtPnByaXYtPm9i
amVjdCwgcmVsYXRpb25TZXQpOwogICAgIHJldHVybiByZWxhdGlvblNldDsKIH0KIApAQCAtMTA0
Niw2ICsxMDU4LDkgQEAgc3RhdGljIGNvbnN0IGdjaGFyKiB3ZWJraXRBY2Nlc3NpYmxlR2V0T2Jq
ZWN0TG9jYWxlKEF0a09iamVjdCogb2JqZWN0KQogICAgIGF1dG8qIGFjY2Vzc2libGUgPSBXRUJL
SVRfQUNDRVNTSUJMRShvYmplY3QpOwogICAgIHJldHVyblZhbElmV2ViS2l0QWNjZXNzaWJsZUlz
SW52YWxpZChhY2Nlc3NpYmxlLCBudWxscHRyKTsKIAorICAgIGlmICghYWNjZXNzaWJsZS0+cHJp
di0+b2JqZWN0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAKICAgICBpZiAoQVRLX0lT
X0RPQ1VNRU5UKG9iamVjdCkpIHsKICAgICAgICAgLy8gVE9ETzogU2hvdWxkIHdlIGZhbGwgYmFj
ayBvbiBsYW5nIHhtbDpsYW5nIHdoZW4gdGhlIGZvbGxvd2luZyBjb21lcyB1cCBlbXB0eT8KICAg
ICAgICAgU3RyaW5nIGxhbmd1YWdlID0gYWNjZXNzaWJsZS0+cHJpdi0+b2JqZWN0LT5sYW5ndWFn
ZSgpOwpAQCAtMTMwMCwyNyArMTMxNSwyNCBAQCBXZWJLaXRBY2Nlc3NpYmxlKiB3ZWJraXRBY2Nl
c3NpYmxlTmV3KEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QpCiBBY2Nlc3NpYmlsaXR5
T2JqZWN0JiB3ZWJraXRBY2Nlc3NpYmxlR2V0QWNjZXNzaWJpbGl0eU9iamVjdChXZWJLaXRBY2Nl
c3NpYmxlKiBhY2Nlc3NpYmxlKQogewogICAgIEFTU0VSVChXRUJLSVRfSVNfQUNDRVNTSUJMRShh
Y2Nlc3NpYmxlKSk7CisgICAgQVNTRVJUKGFjY2Vzc2libGUtPnByaXYtPm9iamVjdCk7CiAgICAg
cmV0dXJuICphY2Nlc3NpYmxlLT5wcml2LT5vYmplY3Q7CiB9CiAKIHZvaWQgd2Via2l0QWNjZXNz
aWJsZURldGFjaChXZWJLaXRBY2Nlc3NpYmxlKiBhY2Nlc3NpYmxlKQogewogICAgIEFTU0VSVChX
RUJLSVRfSVNfQUNDRVNTSUJMRShhY2Nlc3NpYmxlKSk7Ci0gICAgQVNTRVJUKGFjY2Vzc2libGUt
PnByaXYtPm9iamVjdCAhPSBmYWxsYmFja09iamVjdCgpKTsKIAotICAgIGlmIChhY2Nlc3NpYmxl
LT5wcml2LT5vYmplY3QtPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJBcmVh
KQorICAgIGlmIChhY2Nlc3NpYmxlLT5wcml2LT5vYmplY3QgJiYgYWNjZXNzaWJsZS0+cHJpdi0+
b2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQXJlYSkKICAgICAg
ICAgYXRrX29iamVjdF9ub3RpZnlfc3RhdGVfY2hhbmdlKEFUS19PQkpFQ1QoYWNjZXNzaWJsZSks
IEFUS19TVEFURV9ERUZVTkNULCBUUlVFKTsKIAotICAgIC8vIFdlIHJlcGxhY2UgdGhlIFdlYkNv
cmUgQWNjZXNzaWJpbGl0eU9iamVjdCB3aXRoIGEgZmFsbGJhY2sgb2JqZWN0IHRoYXQKLSAgICAv
LyBwcm92aWRlcyBkZWZhdWx0IGltcGxlbWVudGF0aW9ucyB0byBhdm9pZCByZXBldGl0aXZlIG51
bGwtY2hlY2tpbmcgYWZ0ZXIKLSAgICAvLyBkZXRhY2htZW50LgotICAgIGFjY2Vzc2libGUtPnBy
aXYtPm9iamVjdCA9IGZhbGxiYWNrT2JqZWN0KCk7CisgICAgYWNjZXNzaWJsZS0+cHJpdi0+b2Jq
ZWN0ID0gbnVsbHB0cjsKIH0KIAogYm9vbCB3ZWJraXRBY2Nlc3NpYmxlSXNEZXRhY2hlZChXZWJL
aXRBY2Nlc3NpYmxlKiBhY2Nlc3NpYmxlKQogewogICAgIEFTU0VSVChXRUJLSVRfSVNfQUNDRVNT
SUJMRShhY2Nlc3NpYmxlKSk7Ci0gICAgcmV0dXJuIGFjY2Vzc2libGUtPnByaXYtPm9iamVjdCA9
PSBmYWxsYmFja09iamVjdCgpOworICAgIHJldHVybiAhYWNjZXNzaWJsZS0+cHJpdi0+b2JqZWN0
OwogfQogCiBjb25zdCBjaGFyKiB3ZWJraXRBY2Nlc3NpYmxlQ2FjaGVBbmRSZXR1cm5BdGtQcm9w
ZXJ0eShXZWJLaXRBY2Nlc3NpYmxlKiBhY2Nlc3NpYmxlLCBBdGtDYWNoZWRQcm9wZXJ0eSBwcm9w
ZXJ0eSwgQ1N0cmluZyYmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT3B0aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVt
ZW50LmNwcAppbmRleCA2ZWRlOTdmODBiZDViN2ExYjYxYWM2ODVkM2M0NGFmMjE4Y2Y2YWNiLi5l
YzcxZWQwYTQzZThmMTgzYjM4OGU2YmMyZWUxYzAwMWYyZjM2NmJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcApAQCAtMjA5LDcgKzIwOSw3IEBAIHZvaWQgSFRN
TE9wdGlvbkVsZW1lbnQ6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgc2V0QXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih2YWx1ZUF0dHIsIHZhbHVlKTsKIH0KIAotYm9v
bCBIVE1MT3B0aW9uRWxlbWVudDo6c2VsZWN0ZWQoKQorYm9vbCBIVE1MT3B0aW9uRWxlbWVudDo6
c2VsZWN0ZWQoKSBjb25zdAogewogICAgIGlmIChSZWZQdHI8SFRNTFNlbGVjdEVsZW1lbnQ+IHNl
bGVjdCA9IG93bmVyU2VsZWN0RWxlbWVudCgpKQogICAgICAgICBzZWxlY3QtPnVwZGF0ZUxpc3RJ
dGVtU2VsZWN0ZWRTdGF0ZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE9wdGlvbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQu
aAppbmRleCA3ODVhN2NkZmU4Y2UyNDVhODg2MWFmNTRmYzZhY2YzNDk4MTAxYTkwLi5kYzNiMGNm
M2M5YThkMzBjZjQzMmIyNGZkMjIzMTkzMWIyOWMzZWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT3B0aW9uRWxlbWVudC5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCBTdHJpbmcgdmFsdWUoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dFZhbHVlKGNvbnN0IFN0cmluZyYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzZWxlY3Rl
ZCgpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2VsZWN0ZWQoKSBjb25zdDsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldFNlbGVjdGVkKGJvb2wpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQg
SFRNTFNlbGVjdEVsZW1lbnQqIG93bmVyU2VsZWN0RWxlbWVudCgpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDdmMjhlMDA1OGIzZDc0
ZGJiMGU1NTRiY2IyNDRmOWQ3YTgyMmJiOTYuLmQyYzQxNTQ5Nzc1YzgzNTczMTFkZGNjZDVlZmJh
NzMxZThlMzBiM2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wOC0xMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgTGF5b3V0VGVzdCBhY2Nlc3NpYmlsaXR5L21hYy9zZWxlY3Qt
ZWxlbWVudC1zZWxlY3Rpb24td2l0aC1vcHRncm91cHMuaHRtbCBpcyBhIGZsYWt5IGZhaWx1cmUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTM0MQor
CisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIEZsZWl6YWNoLgorCisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvc2luZ2xlX3Rlc3RfcnVubmVyLnB5
OgorICAgICAgICAoU2luZ2xlVGVzdFJ1bm5lci5fY29tcGFyZV9vdXRwdXRfd2l0aF9yZWZlcmVu
Y2UpOiBSZW1vdmVkIHVuaGVscGZ1bCBsb2cgbWVzc2FnZSB0aGF0IHRlbGxzCisgICAgICAgIGFi
b3V0IHJlZiB0ZXN0cyB3aGVyZSB0aGUgaGFzaCBvcHRpbWl6YXRpb24gZm9yIGNvbXBhcmluZyBp
bWFnZXMgZG9lcyBub3Qgd29yaywgYnV0IHRoZQorICAgICAgICB0ZXN0IHBhc3Nlcy4gV2UgZG9u
J3Qgd2FudCB0byBnZXQgdGhpcyBraW5kIG9mIGxvZyBtZXNzYWdlIGZvciBwYXNzaW5nIHRlc3Rz
LgorCiAyMDIwLTA4LTExICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAg
ICAgIFRleHQgbWFuaXB1bGF0aW9uIGNyYXNoZXMgd2hlbiByZXBsYWNpbmcgZWxlbWVudCB3aXRo
IGltZyByb2xlCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9jb250cm9sbGVycy9zaW5nbGVfdGVzdF9ydW5uZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9zaW5nbGVfdGVzdF9ydW5uZXIucHkKaW5kZXgg
ZjdlYjNiMDk1ZGE0OGZkYTM3Y2U0Y2QyYTVmYWVmMDNlZWEwMjdiMi4uYTJhMTI0YTA2ZjRkMjE3
ZDI3NzU1MDNiNjcxZmZlNzdlZWI1ZTVkZiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvc2luZ2xlX3Rlc3RfcnVubmVyLnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3NpbmdsZV90
ZXN0X3J1bm5lci5weQpAQCAtMzQ2LDcgKzM0Niw1IEBAIGNsYXNzIFNpbmdsZVRlc3RSdW5uZXIo
b2JqZWN0KToKICAgICAgICAgICAgICAgICBhY3R1YWxfZHJpdmVyX291dHB1dC5lcnJvciA9IChh
Y3R1YWxfZHJpdmVyX291dHB1dC5lcnJvciBvciAnJykgKyBlcnJvcl9zdHJpbmcKICAgICAgICAg
ICAgIGVsaWYgZGlmZl9yZXN1bHRbMF06CiAgICAgICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5k
KHRlc3RfZmFpbHVyZXMuRmFpbHVyZVJlZnRlc3RNaXNtYXRjaChyZWZlcmVuY2VfZmlsZW5hbWUp
KQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBfbG9nLndhcm5pbmcoIiAgJXMg
LT4gcmVmIHRlc3QgaGFzaGVzIGRpZG4ndCBtYXRjaCBidXQgZGlmZiBwYXNzZWQiICUgc2VsZi5f
dGVzdF9uYW1lKQogCiAgICAgICAgIHJldHVybiBUZXN0UmVzdWx0KHNlbGYuX3Rlc3RfbmFtZSwg
ZmFpbHVyZXMsIHRvdGFsX3Rlc3RfdGltZSwgaGFzX3N0ZGVyciwgcGlkPWFjdHVhbF9kcml2ZXJf
b3V0cHV0LnBpZCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCBiOWRjZjg2MWI1ZTRlMzVkMjIwMzg4MDNkZDk4OTM2YzIxZjky
N2U2Li4zNWYwYjNmZjhlNjIwYjM0MjY4N2E4Yzg5M2Q4OWZjZGVhY2MwMjgwIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTkgQEAKKzIwMjAtMDgtMTEgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgor
CisgICAgICAgIExheW91dFRlc3QgYWNjZXNzaWJpbGl0eS9tYWMvc2VsZWN0LWVsZW1lbnQtc2Vs
ZWN0aW9uLXdpdGgtb3B0Z3JvdXBzLmh0bWwgaXMgYSBmbGFreSBmYWlsdXJlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUzNDEKKworICAgICAgICBS
ZXZpZXdlZCBieSBDaHJpcyBGbGVpemFjaC4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy13azEv
VGVzdEV4cGVjdGF0aW9uczogRml4ZWQgZXhwZWN0YXRpb24gZm9yIGFub3RoZXIgYWNjZXNzaWJp
bGl0eSB0ZXN0LAorICAgICAgICBhY2Nlc3NpYmlsaXR5L21hYy9leHBhbmRlZC1ub3RpZmljYXRp
b24uaHRtbCB0byBleHBlY3QgZmxha2luZXNzLCBub3QgZmFpbHVyZSwgYmVjYXVzZSB0aGF0J3MK
KyAgICAgICAgd2hhdCB0aGUgYnVnIHRoYXQgd2VudCBhbG9uZyB3aXRoIHRoaXMgZXhwZWN0YXRp
b24gc2FpZCwgYW5kIGluZGVlZCB0aGUgdGVzdCBvZnRlbiBwYXNzZXMuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnM6IFJlbW92ZWQgZmxha2luZXNzIGV4cGVj
dGF0aW9uIGZvcgorICAgICAgICBhY2Nlc3NpYmlsaXR5L21hYy9zZWxlY3QtZWxlbWVudC1zZWxl
Y3Rpb24td2l0aC1vcHRncm91cHMuaHRtbCwgc2luY2UgaXQncyBub3cgZml4ZWQuCisgICAgICAg
IEZpeGVkIGEgIndlYmtraXQub3JnIiB0eXBvLCB3aGljaCBjYXVzZWQgdGhlIGV4cGVjdGF0aW9u
IGZvcgorICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9mYXN0LXNjcm9sbC1tYWluZnJh
bWUtem9vbS5odG1sIHRvIG5vdCB3b3JrIGFzIGV4cGVjdGVkLgorCiAyMDIwLTA4LTExICBLZW5u
ZXRoIFJ1c3NlbGwgIDxrYnJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtXZWJHTDJdIGV4cGFu
ZG8tbG9zcyBhbmQgZXhwYW5kby1sb3NzLTIgY29uZm9ybWFuY2UgdGVzdHMgYXJlIGZhaWxpbmcK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9u
cyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBk
YTQ4ZWZhZTk1MDc2OWFhNGM1NDg0Y2U4MTQxMGNlYjJiMGIyYmUwLi5jNTY5YzhhY2QwNGYyZTQ0
MjIzMjc1ODhlNzgyNGU0MWQwMWY4Y2FmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMS9UZXN0RXhwZWN0YXRpb25zCkBAIC04NTQsNyArODU0LDcgQEAgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9zdGFsZS13aGlsZS1yZXZhbGlkYXRlIFsgU2tpcCBdCiAK
IHdlYmtpdC5vcmcvYi8yMDU0MTIgWyBNb2phdmUgRGVidWcgXSB3ZWJnbC8xLjAuMy9jb25mb3Jt
YW5jZS9yZW5kZXJpbmcvbWFueS1kcmF3LWNhbGxzLmh0bWwgWyBUaW1lb3V0IF0KIAotd2Via2l0
Lm9yZy9iLzIwNTQxMCBbIERlYnVnIF0gYWNjZXNzaWJpbGl0eS9tYWMvZXhwYW5kZWQtbm90aWZp
Y2F0aW9uLmh0bWwgWyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMDU0MTAgWyBEZWJ1ZyBdIGFj
Y2Vzc2liaWxpdHkvbWFjL2V4cGFuZGVkLW5vdGlmaWNhdGlvbi5odG1sIFsgUGFzcyBGYWlsdXJl
IF0KIAogd2Via2l0Lm9yZy9iLzIwNjA3MSBlZGl0aW5nL3NwZWxsaW5nL2dyYW1tYXIuaHRtbCBb
IFNraXAgXQogd2Via2l0Lm9yZy9iLzIwNjA3MSBlZGl0aW5nL3NwZWxsaW5nL21hcmtlcnMuaHRt
bCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0
RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRp
b25zCmluZGV4IDg0ZWNiNDFhNzg5MDUwODZlYWY5MmIxYmQ4MGFjYTM3NDE5MTljMDMuLjE0Y2Fm
ZTVlM2Q0YTU2NWE2ZjZhMmM0NDUxNjRmYWFlNGE1ZmZiOGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTY1Myw4ICs2NTMsNiBAQCB3ZWJr
aXQub3JnL2IvMTczODYxIFsgUmVsZWFzZSBdIGh0dHAvdGVzdHMvd2VicnRjL2ZpbHRlcmluZy1p
Y2UtY2FuZGlkYXRlLWNyb3NzLQogCiB3ZWJraXQub3JnL2IvMTcyMTQ4IHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtdmVy
dGljYWwuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8xNzUzNDEgYWNjZXNz
aWJpbGl0eS9tYWMvc2VsZWN0LWVsZW1lbnQtc2VsZWN0aW9uLXdpdGgtb3B0Z3JvdXBzLmh0bWwg
WyBQYXNzIEZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMTcyMDQ0IFsgRGVidWcgXSBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9vcGVuLXJlcXVlc3QtcXVldWUuaHRt
bCBbIFBhc3MgVGltZW91dCBdCiAKIHdlYmtpdC5vcmcvYi8xNzM3NzkgWyBEZWJ1ZyBdIGZhc3Qv
c2Nyb2xsaW5nL2Fycm93LWtleS1zY3JvbGwtaW4tcnRsLWRvY3VtZW50Lmh0bWwgWyBQYXNzIEZh
aWx1cmUgXQpAQCAtMTA4Niw3ICsxMDg0LDcgQEAgd2Via2l0Lm9yZy9iLzIxNDU3NCBbIFJlbGVh
c2UgXSBzdmcvYW5pbWF0aW9ucy9zbWlsLWxlYWstbGlzdC1wcm9wZXJ0eS1pbnN0YW5jZXMKIAog
d2Via2l0Lm9yZy9iLzIxNDU3OSBbIFJlbGVhc2UgXSBzdmcvYW5pbWF0aW9ucy9zbWlsLWxlYWst
ZWxlbWVudC1pbnN0YW5jZXMuc3ZnIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2tpdC5vcmcvYi8y
MTQ2NTEgWyBEZWJ1ZyBdIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL2Zhc3Qtc2Nyb2xsLW1haW5m
cmFtZS16b29tLmh0bWwgWyBQYXNzIENyYXNoIF0KK3dlYmtpdC5vcmcvYi8yMTQ2NTEgWyBEZWJ1
ZyBdIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL2Zhc3Qtc2Nyb2xsLW1haW5mcmFtZS16b29tLmh0
bWwgWyBQYXNzIENyYXNoIF0KIAogd2Via2l0Lm9yZy9iLzIxNDY2MSBbIERlYnVnIF0gaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDU2N0cFRyYW5zcG9ydC1ldmVudHMu
aHRtbCBbIFBhc3MgQ3Jhc2ggXQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406405</attachid>
            <date>2020-08-11 12:43:31 -0700</date>
            <delta_ts>2020-08-11 12:43:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175341-20200811124330.patch</filename>
            <type>text/plain</type>
            <size>53493</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1NTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzc5NDlkY2Q1YWU4NzA0
NzJhNjU0MmYzNjBlMjc1NjcyYmYwOTNiNS4uZDg5MWNjM2YzYWVmZDAxZjJiM2NiMzc3MDE5MmEx
OGI4OGUzYmU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMCBAQAorMjAyMC0wOC0xMSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTGF5b3V0VGVzdCBhY2Nlc3Np
YmlsaXR5L21hYy9zZWxlY3QtZWxlbWVudC1zZWxlY3Rpb24td2l0aC1vcHRncm91cHMuaHRtbCBp
cyBhIGZsYWt5IGZhaWx1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3NTM0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEZhaWx1cmVzIHdlcmUgZHVlIHRvIG5ldyBBWCBvYmplY3RzIGJlaW5nIGNyZWF0
ZWQgZm9yIEhUTUxPcHRpb25FbGVtZW50LgorICAgICAgICBVbmxpa2UgbW9zdCBvdGhlciBBWCBv
YmplY3RzLCB0aGVzZSB3ZXJlIG5vdCBjYWNoZWQgaW4gdGhlIEFYT2JqZWN0Q2FjaGUKKyAgICAg
ICAgYW5kIG11bHRpcGxlIG9iamVjdHMgY291bGQgYmUgY3JlYXRlZCBmb3IgdGhlIHNhbWUgdW5k
ZXJseWluZyBvcHRpb24uIEZpeGVkIHRoaXMKKyAgICAgICAgYnkgY2hhbmdpbmcgaXQgdG8gdHJh
Y2sgdGhlIG9wdGlvbiBlbGVtZW50IGluIHRoZSBjYWNoZSBpbiB0aGUgY29udmVudGlvbmFsIHdh
eS4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogUmVtb3Zl
IEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmgvY3BwLgorICAgICAgICBUaGUgc291cmNlIGZp
bGVzIHdlcmUgcmVtb3ZlZCBiYWNrIGluIEFwcmlsLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6Omdl
dE9yQ3JlYXRlKTogQWRkZWQgY29kZSBmb3IgSFRNTE9wdGlvbkVsZW1lbnQgYW5kCisgICAgICAg
IEhUTUxPcHRHcm91cEVsZW1lbnQgc28gQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uIGFuZCBB
Y2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbgorICAgICAgICBjYW4gYmUgY3JlYXRlZCBpbiB0aGlz
IGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6Y3JlYXRlKTogUmVu
YW1lZCB0aGUgdmVyc2lvbiBvZiB0aGlzIHRoYXQgdGFrZXMgYW4KKyAgICAgICAgQWNjZXNzaWJp
bGl0eVJvbGUgdG8gbm90IGNsYWltIHRoYXQgaXQgZXZlciBnZXRzIHRoZSB2YWx1ZSBmcm9tIHRo
ZSBjYWNoZSwKKyAgICAgICAgYmVjYXVzZSBpdCBuZXZlciBkb2VzLiBBbHNvIHJlbW92ZWQgdGhl
IGNhc2VzIGZvciBMaXN0Qm94T3B0aW9uIGFuZCBNZW51TGlzdE9wdGlvbi4KKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaDogVXBkYXRlZCBmb3IgYWJvdmUuCisKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6OmFkZENoaWxkcmVuKTogVXNlIGNyZWF0ZS4K
KworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUxpc3RCb3g6OmFkZENoaWxkcmVuKTogUmVtb3Zl
ZCBzdXBlci1vbGQgY29tbWVudCB0aGF0IG1lbnRpb25zCisgICAgICAgIHRoZSBsb25nLWFnby1y
ZW1vdmVkIFdNTC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlMaXN0Qm94OjpsaXN0
Qm94T3B0aW9uQWNjZXNzaWJpbGl0eU9iamVjdCBjb25zdCk6IFVzZSB0aGUKKyAgICAgICAgZWxl
bWVudCB0byBnZXQgdGhlIGxpc3QgYm94IG9wdGlvbiByYXRoZXIgdGhhbiBjcmVhdGluZyBhIG5l
dyBvbmUgZXZlcnkgdGltZS4KKyAgICAgICAgTm8gbG9uZ2VyIGFueSBuZWVkIHRvIHNwZWNpYWwg
Y2FzZSA8aHI+IGVsZW1lbnRzIHNpbmNlIHRoZSBnZXRPckNyZWF0ZSBmdW5jdGlvbgorICAgICAg
ICB3aWxsIHJldHVybiBuaWwgZm9yIG5vbi1vcHRpb24gZWxlbWVudHMgdGhhdCBkb24ndCBoYXZl
IGEgcmVuZGVyZXIuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0
Qm94T3B0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0
aW9uOjpBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbik6IFRha2UgdGhlIGVsZW1lbnQKKyAgICAg
ICAgaW4gdGhlIGNvbnN0cnVjdG9yIGluc3RlYWQgb2YgdXNpbmcgYSBzZXBhcmF0ZSBmdW5jdGlv
biB0byBhc3NvY2lhdGUgaXQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TGlzdEJv
eE9wdGlvbjo6Y3JlYXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
TGlzdEJveE9wdGlvbjo6aXNFbmFibGVkIGNvbnN0KTogVXBkYXRlIGZvciBXZWFrUHRyLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246OmlzU2VsZWN0ZWQgY29u
c3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9u
OjpjYW5TZXRTZWxlY3RlZEF0dHJpYnV0ZSBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246OmFjdGlvbkVsZW1lbnQgY29uc3QpOiBVcGRh
dGUgZm9yIFdlYWtQdHIuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TGlzdEJveE9w
dGlvbjo6bm9kZSBjb25zdCk6IEFkZGVkLiBGb3Igc29tZSByZWFzb24gdGhlCisgICAgICAgIEFj
Y2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbiBjbGFzcyBoYWQgdGhpcyBmdW5jdGlvbiBhbmQgdGhp
cyBvbmUgZGlkIG5vdC4gVGhleQorICAgICAgICBzaG91bGQgYm90aCBoYXZlIGl0LgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uaDogVXBkYXRlZCBm
b3IgYWJvdmUuIE1hZGUgbW9zdAorICAgICAgICBmdW5jdGlvbnMgcHJpdmF0ZSBhbmQgZmluYWwu
IEZpeGVkIGluY2x1ZGVzIGFuZCBmb3J3YXJkIGRlY2xhcmF0aW9ucy4KKyAgICAgICAgUmVtb3Zl
ZCB0aGUgc2V0SFRNTEVsZW1lbnQgZnVuY3Rpb24uIENoYW5nZWQgbV9vcHRpb25FbGVtZW50IGZy
b20KKyAgICAgICAgSFRNTEVsZW1lbnQqIHRvIFdlYWtQdHI8SFRNTEVsZW1lbnQ+LgorCisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0OjphZGRDaGlsZHJlbik6IFVzZSBjcmVhdGUu
CisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb246OkFjY2Vz
c2liaWxpdHlNZW51TGlzdE9wdGlvbik6IFRha2UgdGhlCisgICAgICAgIGVsZW1lbnQgaW4gdGhl
IGNvbnN0cnVjdG9yIGluc3RlYWQgb2YgdXNpbmcgYSBzZXBhcmF0ZSBmdW5jdGlvbiB0byBhc3Nv
Y2lhdGUgaXQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb246
OmNyZWF0ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0
T3B0aW9uOjpzZXRFbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlNZW51TGlzdE9wdGlvbjo6bm9kZSBjb25zdCk6IE1vdmVkIGhlcmUgZnJvbSB0aGUgaGVh
ZGVyLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uOjppc0Vu
YWJsZWQgY29uc3QpOiBSZW1vdmVkIHVubmVlZGVkIGNhc3QKKyAgICAgICAgbm93IHRoYXQgbV9l
bGVtZW50IGhhcyBhIG1vcmUgc3BlY2lmaWMgdHlwZSwgYW5kIGFkZGVkIGEgbnVsbCBjaGVjay4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6aXNWaXNpYmxl
IGNvbnN0KTogUmVtb3ZlZCBkZXBlbmRlbmN5CisgICAgICAgIG9uIG1fcGFyZW50IHBvaW50ZXIs
IHdoaWNoIGRvZXMgbm90IGV4aXN0IG5vdyB0aGF0IHdlIGRvbid0IGRlcml2ZSBmcm9tCisgICAg
ICAgIEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU1lbnVMaXN0T3B0aW9uOjppc1NlbGVjdGVkIGNvbnN0KTogUmVtb3ZlZCB1bm5lZWRlZCBj
YXN0CisgICAgICAgIG5vdyB0aGF0IG1fZWxlbWVudCBoYXMgYSBtb3JlIHNwZWNpZmljIHR5cGUs
IGFuZCBhZGRlZCBhIG51bGwgY2hlY2suCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
TWVudUxpc3RPcHRpb246OnNldFNlbGVjdGVkKTogRGl0dG8sIGJ1dCBubyBudWxsIGNoZWNrCisg
ICAgICAgIG5lZWRlZCBiZWNhdXNlIGNhblNldFNlbGVjdGVkQXR0cmlidXRlIHRha2VzIGNhcmUg
b2YgdGhhdC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6
c3RyaW5nVmFsdWUgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlNZW51TGlzdE9wdGlvbi5oOiBVcGRhdGVkIGZvciBhYm92ZS4gTWFya2VkCisgICAg
ICAgIGZ1bmN0aW9ucyBmaW5hbCBpbnN0ZWFkIG9mIG92ZXJyaWRlLiBDaGFuZ2VkIG1fZWxlbWVu
dCBmcm9tIFJlZlB0cjxIVE1MRWxlbWVudD4KKyAgICAgICAgdG8gV2Vha1B0cjxIVE1MT3B0aW9u
RWxlbWVudD4gdG8gYXZvaWQgcmVmZXJlbmNlIGN5Y2xlcyB0aGF0IGNvdWxkIGxlYWsgdG8KKyAg
ICAgICAgbWVtb3J5IGxlYWtzLiBEZXJpdmUgZnJvbSBBY2Nlc3NpYmlsaXR5T2JqZWN0IGluc3Rl
YWQgb2YKKyAgICAgICAgQWNjZXNzaWJpbGl0eU1vY2tPYmplY3QsIHNpbmNlIHRoZSBsYXR0ZXIg
Y2xhc3MgaGFzIG5vdGhpbmcgdG8gb2ZmZXIgdXMuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlNZW51TGlzdFBvcHVwOjptZW51TGlzdE9wdGlvbkFjY2Vzc2liaWxpdHlPYmplY3Qg
Y29uc3QpOgorICAgICAgICBVc2UgdGhlIGVsZW1lbnQgdG8gZ2V0IHRoZSBtZW51IGxpc3Qgb3B0
aW9uIHJhdGhlciB0aGFuIGNyZWF0aW5nIGEgbmV3IG9uZQorICAgICAgICBldmVyeSB0aW1lLiBO
byBsb25nZXIgYW55IG5lZWQgdG8gY2hlY2sgdGhhdCB0aGUgdHlwZSBpcyBIVE1MT3B0aW9uRWxl
bWVudAorICAgICAgICBiZWNhdXNlIHRoYXQncyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGNv
ZGUgaW4gdGhlIGNhY2hlIG5vdy4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZW51
TGlzdFBvcHVwOjphZGRDaGlsZHJlbik6IFJlbW92ZWQgdW5uZWVkZWQgY2FsbAorICAgICAgICB0
byBzZXRQYXJlbnQgc2luY2UgdGhlIG1lbnUgbGlzdCBvcHRpb24gb2JqZWN0cyBubyBsb25nZXIg
aG9sZCBwYXJlbnQgcG9pbnRlcnMuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFjY2Vzc2libGVOYW1lRm9y
Tm9kZSk6IEFkZGVkIGEgc3BlY2lhbCBjYXNlIGZvciBIVE1MT3B0aW9uRWxlbWVudAorICAgICAg
ICBsaWtlIHRoZSBvbmUgZm9yIEhUTUxJbnB1dEVsZW1lbnQuIFRoZSBjb2RlIHdvcmtlZCBmb3Ig
ZmFpcmx5IHdlbGwgZm9yIG9wdGlvbgorICAgICAgICBlbGVtZW50cyBiZWZvcmUsIGFsbW9zdCBi
eSBhY2NpZGVudCwgYW5kIHRoZSB3YXkgaXQgd29ya2VkIHdhcyBwZXJ0dXJiZWQgYnkKKyAgICAg
ICAgdGhlIGNoYW5nZSB0byB3aGV0aGVyIHdlIGNhY2hlIHRob3NlIG9iamVjdHMuIFRoaXMgbmV3
ZXIgY29kZSBwYXRoIHdvcmtzIGluIGEKKyAgICAgICAgbW9yZSBzdHJhaWdodGZvcndhcmQgd2F5
LCBrZWVwcyBvdXIgZXhpc3RpbmcgdGVzdHMgcHNhc2luZywgYW5kIGxpa2VseSBnZXRzCisgICAg
ICAgIHNvbWUgZWRnZSBjYXNlcyBoYW5kbGVkIG1vcmUgY29ycmVjdGx5IChzaG91bGQgYWRkIG5l
dyB0ZXN0cyBmb3IgdGhvc2UpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OmRvY3VtZW50TGlua3MpOiBVc2UgY3JlYXRlLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkSW1hZ2VNYXBDaGlsZHJlbik6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkVGV4dEZpZWxk
Q2hpbGRyZW4pOiBEaXR0by4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlT
bGlkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNsaWRlcjo6YWRkQ2hp
bGRyZW4pOiBEaXR0by4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGlu
QnV0dG9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTcGluQnV0dG9uOjph
ZGRDaGlsZHJlbik6IERpdHRvLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVRhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6YWRkQ2hp
bGRyZW4pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6aGVh
ZGVyQ29udGFpbmVyKTogRGl0dG8uCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJL
aXRBY2Nlc3NpYmxlLmNwcDoKKyAgICAgICAgKGZhbGxiYWNrT2JqZWN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKHdlYmtpdEFjY2Vzc2libGVHZXROYW1lKTogQWRkZWQgbnVsbCBjaGVjay4KKyAgICAg
ICAgKHdlYmtpdEFjY2Vzc2libGVHZXREZXNjcmlwdGlvbik6IERpdHRvLgorICAgICAgICAod2Vi
a2l0QWNjZXNzaWJsZUdldFBhcmVudCk6IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJs
ZUdldE5DaGlsZHJlbik6IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZVJlZkNoaWxk
KTogRGl0dG8uCisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlR2V0SW5kZXhJblBhcmVudCk6IERp
dHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUdldEF0dHJpYnV0ZXMpOiBEaXR0by4KKyAg
ICAgICAgKHdlYmtpdEFjY2Vzc2libGVHZXRSb2xlKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRB
Y2Nlc3NpYmxlUmVmU3RhdGVTZXQpOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVS
ZWZSZWxhdGlvblNldCk6IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUdldE9iamVj
dExvY2FsZSk6IERpdHRvLgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUdldEFjY2Vzc2liaWxp
dHlPYmplY3QpOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVEZXRhY2gpOiBVc2Ug
bnVsbHB0ciBpbnN0ZWFkIG9mIGZhbGxiYWNrT2JqZWN0LgorICAgICAgICAod2Via2l0QWNjZXNz
aWJsZUlzRGV0YWNoZWQpOiBEaXR0by4KKworICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbkVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ6OnNlbGVjdGVkIGNv
bnN0KTogTWFkZSB0aGlzIGNvbnN0LiBBbiBlYXJsaWVyCisgICAgICAgIHZlcnNpb24gb2YgdGhl
IHBhdGNoIHJlcXVpcmVkIHRoaXM7IHRoZSBsYXRlc3QgdmVyc2lvbiBkb2Vzbid0LCBidXQgaXQn
cworICAgICAgICBtb3JlIGxvZ2ljYWwgYW5kIGJldHRlciBmb3IgaXQgdG8gYmUgY29uc3QuCisg
ICAgICAgICogaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oOiBVcGRhdGVkIGZvciBhYm92ZS4KKwog
MjAyMC0wOC0xMSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBU
ZXh0IG1hbmlwdWxhdGlvbiBjcmFzaGVzIHdoZW4gcmVwbGFjaW5nIGVsZW1lbnQgd2l0aCBpbWcg
cm9sZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDY4NzM4MmQ5YjhiMTdhNjQ2MzBkNjM3NGRhZTQzNGFkOWJlODM5NjAuLmE4NjAz
MmU2ZmM5MTA5NjU0NjE1MTU0N2Q2NzhkZGQxZjhkMzI0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE5Myw3ICsxOTMsNiBA
QAogCQkwN0FCOTk2QjE4REEzQzAxMDAxODc3MUUgLyogUlRDSWNlU2VydmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0FCOTk2NzE4REEzQzAxMDAx
ODc3MUUgLyogUlRDSWNlU2VydmVyLmggKi87IH07CiAJCTA3QUZGNDIyMUVGQjE0NDkwMEI1NDVC
MyAvKiBDb3JlQXVkaW9DYXB0dXJlU291cmNlSU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0FGRjQyMDFFRkIxNDQ3MDBCNTQ1QjMgLyogQ29yZUF1
ZGlvQ2FwdHVyZVNvdXJjZUlPUy5oICovOyB9OwogCQkwN0FGRjQyMzFFRkIxNDQ5MDBCNTQ1QjMg
LyogQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZUlPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QUZGNDIxMUVGQjE0NDcwMEI1NDVCMyAvKiBDb3JlQXVk
aW9DYXB0dXJlU291cmNlSU9TLm1tICovOyB9OwotCQkwN0IwMTEzRjEwMzIyNDIyMDBGQkRDMzMg
LyogQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QjAxMTNFMTAzMjI0MjIwMEZCREMzMyAvKiBBY2Nlc3Np
YmlsaXR5TWVkaWFDb250cm9scy5oICovOyB9OwogCQkwN0IwQUJDRjEwMzIyNDIyMDBGQkRDMzMg
LyogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QjBBQkNFMTAzMjI0MjIwMEZCREMzMyAvKiBBY2Nlc3Np
YmlsaXR5TWF0aE1MRWxlbWVudC5oICovOyB9OwogCQkwN0I0NDJENjE2NkM3MEIwMDA1NTZDQUQg
LyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0I0NDJENDE2NkM3MEIwMDA1NTZDQUQgLyogSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAgKi87IH07CiAJCTA3QjQ0MkQ3MTY2QzcwQjAwMDU1NkNB
RCAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0I0NDJENTE2NkM3MEIwMDA1NTZDQUQgLyogSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC01NzExLDcgKzU3MTAsNiBAQAogCQkwN0FCOTk2ODE4REEzQzAxMDAx
ODc3MUUgLyogUlRDSWNlU2VydmVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSVENJY2VT
ZXJ2ZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0FGRjQyMDFFRkIxNDQ3
MDBCNTQ1QjMgLyogQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZUlPUy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDb3JlQXVkaW9DYXB0dXJlU291cmNlSU9TLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTA3QUZGNDIxMUVGQjE0NDcwMEI1NDVCMyAvKiBDb3JlQXVkaW9D
YXB0dXJlU291cmNlSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMDdCMDExM0UxMDMyMjQyMjAwRkJEQzMzIC8qIEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRy
b2xzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlNZWRp
YUNvbnRyb2xzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QjBBQkNFMTAzMjI0
MjIwMEZCREMzMyAvKiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwN0I0NDJENDE2NkM3MEIwMDA1NTZDQUQgLyogSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDdCNDQyRDUxNjZDNzBCMDAwNTU2Q0FEIC8qIEluYmFuZFRleHRUcmFja1ByaXZh
dGVBVkYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWRi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjgxMyw3ICs2ODEx
LDYgQEAKIAkJMjk4MUNBQTExMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlMaXN0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlMaXN0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMjk4MUNBQTIxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxp
dHlMaXN0Qm94LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlMaXN0Qm94LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk4MUNBQTMxMzE4MjJFQzAwRDEyRjJB
IC8qIEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFj
Y2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMjk4MUNBQTQxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk4MUNBQTUxMzE4MjJFQzAwRDEyRjJBIC8q
IEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0
eU9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5ODFDQUE2MTMxODIy
RUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyOTgxQ0FBNzEzMTgyMkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eVNjcm9s
bGJhci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4MzUyLDggKzE4MzQ5LDYgQEAKIAkJCQky
OUE4MTIyNDBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uaCAq
LywKIAkJCQkyOTgxQUJDNDEzMTgyMkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eU1hdGhNTEVs
ZW1lbnQuY3BwICovLAogCQkJCTA3QjBBQkNFMTAzMjI0MjIwMEZCREMzMyAvKiBBY2Nlc3NpYmls
aXR5TWF0aE1MRWxlbWVudC5oICovLAotCQkJCTI5ODFDQUE0MTMxODIyRUMwMEQxMkYyQSAvKiBB
Y2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5jcHAgKi8sCi0JCQkJMDdCMDExM0UxMDMyMjQyMjAw
RkJEQzMzIC8qIEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmggKi8sCiAJCQkJQTk3ODdDQjMx
RjVGNUM2NTAwQzU1MUM2IC8qIEFjY2Vzc2liaWxpdHlNZWRpYU9iamVjdC5jcHAgKi8sCiAJCQkJ
QTk3ODdDQjIxRjVGNTk5MjAwQzU1MUM2IC8qIEFjY2Vzc2liaWxpdHlNZWRpYU9iamVjdC5oICov
LAogCQkJCTc2Q0REMkVDMTEwM0RBNjYwMDY4MDUyMSAvKiBBY2Nlc3NpYmlsaXR5TWVudUxpc3Qu
Y3BwICovLApAQCAtMjk5OTQsNyArMjk5ODksNiBAQAogCQkJCTI5QTgxMjQzMEZCQjlDMUQwMDUx
MDI5MyAvKiBBY2Nlc3NpYmlsaXR5TGlzdEJveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEy
NDIwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwN0IwQUJDRjEwMzIyNDIyMDBGQkRDMzMgLyogQWNjZXNzaWJpbGl0eU1h
dGhNTEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTA3QjAxMTNGMTAzMjI0MjIwMEZCREMz
MyAvKiBBY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzZD
REQyRjMxMTAzREE2NjAwNjgwNTIxIC8qIEFjY2Vzc2liaWxpdHlNZW51TGlzdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNzZDREQyRjcxMTAzREE2NjAwNjgwNTIxIC8qIEFjY2Vzc2liaWxpdHlNZW51
TGlzdE9wdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzZDREQyRjUxMTAzREE2NjAwNjgwNTIx
IC8qIEFjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IDlmZWI1MTU4
YzBhNTAxNzdiZTk5MzA2ZDYxZGFmNGIwMDk5M2YzNWIuLmIwM2MzMDA5NGQxYjJiMmMzZmQ1MDI0
MGU1MjY2NTRkZTU2ZTdkNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmNwcApAQCAtNzgsNyArNzgsMTAgQEAKICNpbmNsdWRlICJIVE1MTWVkaWFF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE1ldGVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgorI2luY2x1ZGUgIkhUTUxPcHRHcm91cEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1M
T3B0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKKyNpbmNsdWRl
ICJIVE1MU2VsZWN0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSW5saW5lRWxlbWVudEJveC5oIgogI2luY2x1ZGUgIk1hdGhNTEVs
ZW1lbnQuaCIKQEAgLTY0MCw2ICs2NDMsMjQgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmpl
Y3RDYWNoZTo6Z2V0T3JDcmVhdGUoTm9kZSogbm9kZSkKICAgICBpZiAoIW5vZGUtPnBhcmVudEVs
ZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCisgICAgYm9vbCBpc09wdGlv
bkVsZW1lbnQgPSBpczxIVE1MT3B0aW9uRWxlbWVudD4oKm5vZGUpOworICAgIGlmIChpc09wdGlv
bkVsZW1lbnQgfHwgaXM8SFRNTE9wdEdyb3VwRWxlbWVudD4oKm5vZGUpKSB7CisgICAgICAgIGF1
dG8gc2VsZWN0ID0gaXNPcHRpb25FbGVtZW50CisgICAgICAgICAgICA/IGRvd25jYXN0PEhUTUxP
cHRpb25FbGVtZW50Pigqbm9kZSkub3duZXJTZWxlY3RFbGVtZW50KCkKKyAgICAgICAgICAgIDog
ZG93bmNhc3Q8SFRNTE9wdEdyb3VwRWxlbWVudD4oKm5vZGUpLm93bmVyU2VsZWN0RWxlbWVudCgp
OworICAgICAgICBpZiAoIXNlbGVjdCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gb2JqZWN0OworICAgICAgICBpZiAoc2Vs
ZWN0LT51c2VzTWVudUxpc3QoKSkgeworICAgICAgICAgICAgaWYgKCFpc09wdGlvbkVsZW1lbnQp
CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBvYmplY3QgPSBB
Y2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb246OmNyZWF0ZShkb3duY2FzdDxIVE1MT3B0aW9uRWxl
bWVudD4oKm5vZGUpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBvYmplY3QgPSBBY2Nl
c3NpYmlsaXR5TGlzdEJveE9wdGlvbjo6Y3JlYXRlKGRvd25jYXN0PEhUTUxFbGVtZW50Pigqbm9k
ZSkpOworICAgICAgICBjYWNoZUFuZEluaXRpYWxpemVXcmFwcGVyKG9iamVjdC5nZXQoKSwgbm9k
ZSk7CisgICAgICAgIHJldHVybiBvYmplY3QuZ2V0KCk7CisgICAgfQorCiAgICAgLy8gSXQncyBv
bmx5IGFsbG93ZWQgdG8gY3JlYXRlIGFuIEFjY2Vzc2liaWxpdHlPYmplY3QgZnJvbSBhIE5vZGUg
aWYgaXQncyBpbiBhIGNhbnZhcyBzdWJ0cmVlLgogICAgIC8vIE9yIGlmIGl0J3MgYSBoaWRkZW4g
ZWxlbWVudCwgYnV0IHdlIHN0aWxsIHdhbnQgdG8gZXhwb3NlIGl0IGJlY2F1c2Ugb2Ygb3RoZXIg
QVJJQSBhdHRyaWJ1dGVzLgogICAgIGJvb2wgaW5DYW52YXNTdWJ0cmVlID0gbGluZWFnZU9mVHlw
ZTxIVE1MQ2FudmFzRWxlbWVudD4oKm5vZGUtPnBhcmVudEVsZW1lbnQoKSkuZmlyc3QoKTsKQEAg
LTgwMSwxNSArODIyLDEyIEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OnJv
b3RPYmplY3RGb3JGcmFtZShGcmFtZSogZnJhbWUpCiAgICAgcmV0dXJuIGdldE9yQ3JlYXRlKGZy
YW1lLT52aWV3KCkpOwogfSAgICAKICAgICAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0
Q2FjaGU6OmdldE9yQ3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUpCitBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBBWE9iamVjdENhY2hlOjpjcmVhdGUoQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSkKIHsK
ICAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gb2JqOwogCiAgICAgLy8gd2lsbCBiZSBm
aWxsZWQgaW4uLi4KICAgICBzd2l0Y2ggKHJvbGUpIHsKLSAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpMaXN0Qm94T3B0aW9uOgotICAgICAgICBvYmogPSBBY2Nlc3NpYmlsaXR5TGlzdEJveE9w
dGlvbjo6Y3JlYXRlKCk7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OkltYWdlTWFwTGluazoKICAgICAgICAgb2JqID0gQWNjZXNzaWJpbGl0eUltYWdlTWFwTGlu
azo6Y3JlYXRlKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtODI1LDkgKzg0Myw2IEBAIEFjY2Vzc2li
aWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmdldE9yQ3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xl
IHJvbGUpCiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUxpc3RQb3B1cDoKICAgICAg
ICAgb2JqID0gQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6OmNyZWF0ZSgpOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51TGlzdE9wdGlvbjoKLSAgICAg
ICAgb2JqID0gQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uOjpjcmVhdGUoKTsKLSAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3BpbkJ1dHRvbjoKICAgICAgICAg
b2JqID0gQWNjZXNzaWJpbGl0eVNwaW5CdXR0b246OmNyZWF0ZSgpOwogICAgICAgICBicmVhazsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5o
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKaW5kZXggZTlj
NGQ5M2IzNjI3MTg5NzgyNmI4ZWI4ZmNhZjVlZjE2ZGUwYTI2YS4uZmNkMTc2YjNmZDY2YzA3NTYx
MmY0YjM1ZDdmYTNjN2M3MDFiZDYxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmgKQEAgLTE1OSw3ICsxNTksNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgQWNjZXNzaWJpbGl0eU9iamVjdCogZ2V0T3JDcmVhdGUoTm9kZSopOwogCiAgICAg
Ly8gdXNlZCBmb3Igb2JqZWN0cyB3aXRob3V0IGJhY2tpbmcgZWxlbWVudHMKLSAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBnZXRPckNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZSk7CisgICAgQWNjZXNz
aWJpbGl0eU9iamVjdCogY3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlKTsKICAgICAKICAgICAvLyB3
aWxsIG9ubHkgcmV0dXJuIHRoZSBBY2Nlc3NpYmlsaXR5T2JqZWN0IGlmIGl0IGFscmVhZHkgZXhp
c3RzCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogZ2V0KFJlbmRlck9iamVjdCopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQu
Y3BwCmluZGV4IGUxNGE0NzFhY2MxNzJhMzRhNjdmMGM4ZjA3ZDA3YmU4YTgxYWQyNjEuLjRlZmJm
NGUyNmJjYzU0YTQ2MmRmNjhhMGUxZTlkNGU4MTZjMDAzNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKQEAgLTEz
OCw3ICsxMzgsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlBUklBR3JpZDo6YWRkQ2hpbGRyZW4oKQog
ICAgIAogICAgIC8vIG1ha2UgdGhlIGNvbHVtbnMgYmFzZWQgb24gdGhlIG51bWJlciBvZiBjb2x1
bW5zIGluIHRoZSBmaXJzdCBib2R5CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvbHVt
bkNvdW50OyArK2kpIHsKLSAgICAgICAgYXV0byYgY29sdW1uID0gZG93bmNhc3Q8QWNjZXNzaWJp
bGl0eVRhYmxlQ29sdW1uPigqYXhDYWNoZS0+Z2V0T3JDcmVhdGUoQWNjZXNzaWJpbGl0eVJvbGU6
OkNvbHVtbikpOworICAgICAgICBhdXRvJiBjb2x1bW4gPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5
VGFibGVDb2x1bW4+KCpheENhY2hlLT5jcmVhdGUoQWNjZXNzaWJpbGl0eVJvbGU6OkNvbHVtbikp
OwogICAgICAgICBjb2x1bW4uc2V0Q29sdW1uSW5kZXgoaSk7CiAgICAgICAgIGNvbHVtbi5zZXRQ
YXJlbnQodGhpcyk7CiAgICAgICAgIG1fY29sdW1ucy5hcHBlbmQoJmNvbHVtbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3Bw
CmluZGV4IGQ5YjNlMjNhOTkyNWQ3YmRiMTIyMmVjYzdmMjYwY2M1ZDFmZDg5Y2MuLmY2YzU5ZTk1
ZmNmNzBkYWJhMjljNGVmNTI1YzBjYTEzNzIxYzFkMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwCkBAIC03NCw4ICs3
NCw2IEBAIHZvaWQgQWNjZXNzaWJpbGl0eUxpc3RCb3g6OmFkZENoaWxkcmVuKCkKICAgICBtX2hh
dmVDaGlsZHJlbiA9IHRydWU7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIGxpc3RJdGVtIDogZG93
bmNhc3Q8SFRNTFNlbGVjdEVsZW1lbnQ+KCpzZWxlY3ROb2RlKS5saXN0SXRlbXMoKSkgewotICAg
ICAgICAvLyBUaGUgY2FzdCB0byBIVE1MRWxlbWVudCBiZWxvdyBpcyBzYWZlIGJlY2F1c2UgdGhl
IG9ubHkgb3RoZXIgcG9zc2libGUgbGlzdEl0ZW0gdHlwZQotICAgICAgICAvLyB3b3VsZCBiZSBh
IFdNTEVsZW1lbnQsIGJ1dCBXTUwgYnVpbGRzIGRvbid0IHVzZSBhY2Nlc3NpYmlsaXR5IGZlYXR1
cmVzIGF0IGFsbC4KICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbGlzdE9wdGlvbiA9IGxp
c3RCb3hPcHRpb25BY2Nlc3NpYmlsaXR5T2JqZWN0KGxpc3RJdGVtKTsKICAgICAgICAgaWYgKGxp
c3RPcHRpb24gJiYgIWxpc3RPcHRpb24tPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKICAgICAg
ICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kKGxpc3RPcHRpb24pOwpAQCAtMTM1LDE2ICsxMzMsMTAg
QEAgdm9pZCBBY2Nlc3NpYmlsaXR5TGlzdEJveDo6dmlzaWJsZUNoaWxkcmVuKEFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciYgcmVzdWx0KQogCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3Np
YmlsaXR5TGlzdEJveDo6bGlzdEJveE9wdGlvbkFjY2Vzc2liaWxpdHlPYmplY3QoSFRNTEVsZW1l
bnQqIGVsZW1lbnQpIGNvbnN0CiB7Ci0gICAgLy8gc2tpcCBociBlbGVtZW50cwotICAgIGlmICgh
ZWxlbWVudCB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKGhyVGFnKSkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCYgbGlzdEJveE9iamVjdCA9ICpt
X3JlbmRlcmVyLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoQWNjZXNz
aWJpbGl0eVJvbGU6Okxpc3RCb3hPcHRpb24pOwotICAgIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlM
aXN0Qm94T3B0aW9uPihsaXN0Qm94T2JqZWN0KS5zZXRIVE1MRWxlbWVudChlbGVtZW50KTsKLSAg
ICAKLSAgICByZXR1cm4gJmxpc3RCb3hPYmplY3Q7CisgICAgLy8gRklYTUU6IFdoeSBkb2VzIEFj
Y2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwOjptZW51TGlzdE9wdGlvbkFjY2Vzc2liaWxpdHlPYmpl
Y3QgY2hlY2sgaW5SZW5kZXJlZERvY3VtZW50LCBidXQgdGhpcyBkb2VzIG5vdD8KKyAgICByZXR1
cm4gbV9yZW5kZXJlci0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKGVs
ZW1lbnQpOwogfQotICAgIAorCiBBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlMaXN0Qm94Ojpl
bGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAog
ewogICAgIC8vIHRoZSBpbnRlcm5hbCBIVE1MU2VsZWN0RWxlbWVudCBtZXRob2RzIGZvciByZXR1
cm5pbmcgYSBsaXN0Ym94IG9wdGlvbiBhdCBhIHBvaW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwCmlu
ZGV4IDViODM5YmRkMmQzOWM3ZDQ3ZjdkZWYxZTFjOWRlYjQxNzA4ZGNlMDAuLjMzNGMyOGEwOWRi
YzNiYmMwYmVmNDViM2E2ZDZkYzIyMTY2ODFhYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwCkBA
IC0zMSwzNSArMzEsMzIgQEAKIAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRl
ICJBY2Nlc3NpYmlsaXR5TGlzdEJveC5oIgotI2luY2x1ZGUgIkVsZW1lbnQuaCIKLSNpbmNsdWRl
ICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxP
cHRHcm91cEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MT3B0aW9uRWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxTZWxlY3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUg
IlJlbmRlckxpc3RCb3guaCIKLSNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogICAgIAotQWNjZXNzaWJp
bGl0eUxpc3RCb3hPcHRpb246OkFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uKCkKLSAgICA6IG1f
b3B0aW9uRWxlbWVudChudWxscHRyKQorQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246OkFjY2Vz
c2liaWxpdHlMaXN0Qm94T3B0aW9uKEhUTUxFbGVtZW50JiBlbGVtZW50KQorICAgIDogbV9vcHRp
b25FbGVtZW50KG1ha2VXZWFrUHRyKGVsZW1lbnQpKQogewogfQogCiBBY2Nlc3NpYmlsaXR5TGlz
dEJveE9wdGlvbjo6fkFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uKCkgPSBkZWZhdWx0OwogICAg
IAotUmVmPEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uPiBBY2Nlc3NpYmlsaXR5TGlzdEJveE9w
dGlvbjo6Y3JlYXRlKCkKK1JlZjxBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbj4gQWNjZXNzaWJp
bGl0eUxpc3RCb3hPcHRpb246OmNyZWF0ZShIVE1MRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbigpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbihlbGVtZW50KSk7
CiB9CiAgICAgCiBib29sIEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uOjppc0VuYWJsZWQoKSBj
b25zdAogewotICAgIGlmIChpczxIVE1MT3B0R3JvdXBFbGVtZW50PihtX29wdGlvbkVsZW1lbnQp
KQorICAgIGlmIChpczxIVE1MT3B0R3JvdXBFbGVtZW50PihtX29wdGlvbkVsZW1lbnQuZ2V0KCkp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UoZ2V0QXR0cmlidXRlKGFyaWFfZGlzYWJsZWRBdHRyKSwgInRydWUiKSkKQEAgLTcz
LDcgKzcwLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbjo6aXNFbmFibGVkKCkg
Y29uc3QKICAgICAKIGJvb2wgQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246OmlzU2VsZWN0ZWQo
KSBjb25zdAogewotICAgIGlmICghaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KG1fb3B0aW9uRWxlbWVu
dCkpCisgICAgaWYgKCFpczxIVE1MT3B0aW9uRWxlbWVudD4obV9vcHRpb25FbGVtZW50LmdldCgp
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxPcHRp
b25FbGVtZW50PigqbV9vcHRpb25FbGVtZW50KS5zZWxlY3RlZCgpOwpAQCAtMTI0LDcgKzEyMSw3
IEBAIGJvb2wgQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246OmNvbXB1dGVBY2Nlc3NpYmlsaXR5
SXNJZ25vcmVkKCkgY29uc3QKICAgICAKIGJvb2wgQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246
OmNhblNldFNlbGVjdGVkQXR0cmlidXRlKCkgY29uc3QKIHsKLSAgICBpZiAoIWlzPEhUTUxPcHRp
b25FbGVtZW50PihtX29wdGlvbkVsZW1lbnQpKQorICAgIGlmICghaXM8SFRNTE9wdGlvbkVsZW1l
bnQ+KG1fb3B0aW9uRWxlbWVudC5nZXQoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAK
ICAgICBpZiAobV9vcHRpb25FbGVtZW50LT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSkKQEAgLTE1
Nyw3ICsxNTQsMTIgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uOjpzdHJpbmdW
YWx1ZSgpIGNvbnN0CiAKIEVsZW1lbnQqIEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uOjphY3Rp
b25FbGVtZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9vcHRpb25FbGVtZW50OworICAgIHJl
dHVybiBtX29wdGlvbkVsZW1lbnQuZ2V0KCk7Cit9CisKK05vZGUqIEFjY2Vzc2liaWxpdHlMaXN0
Qm94T3B0aW9uOjpub2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9vcHRpb25FbGVtZW50Lmdl
dCgpOwogfQogCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlv
bjo6cGFyZW50T2JqZWN0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uaAppbmRleCAyZDc3MjM3MTIw
NTE3MjYzY2M1YmVlYmM5ZTVjOTgyYWNmNjUwODJkLi5jMWI5NDQ5YTQwNzQyZDQzN2JmNGVjOWM3
YjdlZWU5MDM1NjZjYzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5oCkBAIC0yOSw0NyArMjksNDMgQEAK
ICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdC5oIgotI2luY2x1
ZGUgIkhUTUxFbGVtZW50LmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBBY2Nlc3NpYmlsaXR5TGlzdEJveDsKLWNsYXNzIEVsZW1lbnQ7
CitjbGFzcyBIVE1MRWxlbWVudDsKIGNsYXNzIEhUTUxTZWxlY3RFbGVtZW50OwotICAgIAorCiBj
bGFzcyBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbiBmaW5hbCA6IHB1YmxpYyBBY2Nlc3NpYmls
aXR5T2JqZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlMaXN0Qm94
T3B0aW9uPiBjcmVhdGUoKTsKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0
aW9uPiBjcmVhdGUoSFRNTEVsZW1lbnQmKTsKICAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5TGlz
dEJveE9wdGlvbigpOwotICAgIAotICAgIHZvaWQgc2V0SFRNTEVsZW1lbnQoSFRNTEVsZW1lbnQq
IGVsZW1lbnQpIHsgbV9vcHRpb25FbGVtZW50ID0gZWxlbWVudDsgfQotICAgIAotICAgIEFjY2Vz
c2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFjY2Vzc2li
aWxpdHlSb2xlOjpMaXN0Qm94T3B0aW9uOyB9Ci0gICAgYm9vbCBpc1NlbGVjdGVkKCkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0VuYWJsZWQoKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29s
IGlzU2VsZWN0ZWRPcHRpb25BY3RpdmUoKSBjb25zdCBvdmVycmlkZTsKLSAgICBTdHJpbmcgc3Ry
aW5nVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKLSAgICBFbGVtZW50KiBhY3Rpb25FbGVtZW50KCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgTm9kZSogbm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fb3B0aW9uRWxlbWVudDsgfQotICAgIHZvaWQgc2V0U2VsZWN0ZWQoYm9vbCkgb3ZlcnJpZGU7
Ci0gICAgYm9vbCBjYW5TZXRTZWxlY3RlZEF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0g
ICAgTGF5b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIHBhcmVudE9iamVjdCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNT
ZWxlY3RlZCgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc2V0U2VsZWN0ZWQoYm9vbCkgZmluYWw7
CiAKIHByaXZhdGU6Ci0gICAgQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24oKTsKKyAgICBleHBs
aWNpdCBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbihIVE1MRWxlbWVudCYpOworCisgICAgQWNj
ZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gQWNjZXNzaWJp
bGl0eVJvbGU6Okxpc3RCb3hPcHRpb247IH0KKyAgICBib29sIGlzRW5hYmxlZCgpIGNvbnN0IGZp
bmFsOworICAgIGJvb2wgaXNTZWxlY3RlZE9wdGlvbkFjdGl2ZSgpIGNvbnN0IGZpbmFsOworICAg
IFN0cmluZyBzdHJpbmdWYWx1ZSgpIGNvbnN0IGZpbmFsOworICAgIEVsZW1lbnQqIGFjdGlvbkVs
ZW1lbnQoKSBjb25zdCBmaW5hbDsKKyAgICBOb2RlKiBub2RlKCkgY29uc3QgZmluYWw7CisgICAg
Ym9vbCBjYW5TZXRTZWxlY3RlZEF0dHJpYnV0ZSgpIGNvbnN0IGZpbmFsOworCisgICAgTGF5b3V0
UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0IGZpbmFsOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IHBhcmVudE9iamVjdCgpIGNvbnN0IGZpbmFsOwogCi0gICAgYm9vbCBpc0xpc3RCb3hPcHRpb24o
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgYm9vbCBjYW5IYXZlQ2hpbGRy
ZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNMaXN0Qm94
T3B0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgY2FuSGF2ZUNo
aWxkcmVuKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBIVE1MU2VsZWN0RWxl
bWVudCogbGlzdEJveE9wdGlvblBhcmVudE5vZGUoKSBjb25zdDsKICAgICBpbnQgbGlzdEJveE9w
dGlvbkluZGV4KCkgY29uc3Q7CiAgICAgSW50UmVjdCBsaXN0Qm94T3B0aW9uUmVjdCgpIGNvbnN0
OwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGxpc3RCb3hPcHRpb25BY2Nlc3NpYmlsaXR5T2Jq
ZWN0KEhUTUxFbGVtZW50KikgY29uc3Q7Ci0gICAgYm9vbCBjb21wdXRlQWNjZXNzaWJpbGl0eUlz
SWdub3JlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJ
c0lnbm9yZWQoKSBjb25zdCBmaW5hbDsKIAotICAgIEhUTUxFbGVtZW50KiBtX29wdGlvbkVsZW1l
bnQ7CisgICAgV2Vha1B0cjxIVE1MRWxlbWVudD4gbV9vcHRpb25FbGVtZW50OwogfTsKICAgICAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5jcHAKaW5kZXggYjBjM2MzMTNhZWJjMDk3
Y2UwZDAxNzAzYTNhYWIxYTJlOTg4N2UxYi4uNDk2ZGVhNTQ1MWU3MzIwNjY5MjBiM2IyOTk3MWVh
NWRjYTQzZDNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5TWVudUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcApAQCAtNzEsNyArNzEsNyBAQCB2b2lkIEFjY2Vzc2li
aWxpdHlNZW51TGlzdDo6YWRkQ2hpbGRyZW4oKQogICAgIGlmICghY2FjaGUpCiAgICAgICAgIHJl
dHVybjsKICAgICAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBsaXN0ID0gY2FjaGUtPmdldE9y
Q3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51TGlzdFBvcHVwKTsKKyAgICBhdXRvIGxpc3Qg
PSBjYWNoZS0+Y3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51TGlzdFBvcHVwKTsKICAgICBp
ZiAoIWxpc3QpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24uY3BwCmluZGV4
IDljMTY3Yzg3NzNmMDY1YjE2N2QxZmEyMTk2N2Q5YzdlNmU0ZDU4OTMuLmYzMGZmZDgyOTZhZDYw
ZjQzYzQ2OGE5MWE3MTIzMDg3MjM1YmMwMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbi5jcHAKQEAg
LTM1LDM2ICszNSwzOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBI
VE1MTmFtZXM7CiAKLUFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6QWNjZXNzaWJpbGl0eU1l
bnVMaXN0T3B0aW9uKCkKK0FjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6QWNjZXNzaWJpbGl0
eU1lbnVMaXN0T3B0aW9uKEhUTUxPcHRpb25FbGVtZW50JiBlbGVtZW50KQorICAgIDogbV9lbGVt
ZW50KG1ha2VXZWFrUHRyKGVsZW1lbnQpKQogewogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlNZW51
TGlzdE9wdGlvbjo6c2V0RWxlbWVudChIVE1MRWxlbWVudCogZWxlbWVudCkKK1JlZjxBY2Nlc3Np
YmlsaXR5TWVudUxpc3RPcHRpb24+IEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6Y3JlYXRl
KEhUTUxPcHRpb25FbGVtZW50JiBlbGVtZW50KQogewotICAgIEFTU0VSVF9BUkcoZWxlbWVudCwg
aXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpKTsKLSAgICBtX2VsZW1lbnQgPSBlbGVtZW50
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbihl
bGVtZW50KSk7CiB9CiAKIEVsZW1lbnQqIEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6YWN0
aW9uRWxlbWVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZWxlbWVudC5nZXQoKTsKIH0KKwor
Tm9kZSogQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uOjpub2RlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9lbGVtZW50LmdldCgpOworfQogICAgIAogYm9vbCBBY2Nlc3NpYmlsaXR5TWVudUxp
c3RPcHRpb246OmlzRW5hYmxlZCgpIGNvbnN0CiB7Ci0gICAgLy8gaXNEaXNhYmxlZEZvcm1Db250
cm9sKCkgcmV0dXJucyB0cnVlIGlmIHRoZSBwYXJlbnQgPHNlbGVjdD4gZWxlbWVudCBpcyBkaXNh
YmxlZCwKLSAgICAvLyB3aGljaCB3ZSBkb24ndCB3YW50LgotICAgIHJldHVybiAhZG93bmNhc3Q8
SFRNTE9wdGlvbkVsZW1lbnQ+KCptX2VsZW1lbnQpLm93bkVsZW1lbnREaXNhYmxlZCgpOworICAg
IHJldHVybiBtX2VsZW1lbnQgJiYgIW1fZWxlbWVudC0+b3duRWxlbWVudERpc2FibGVkKCk7CiB9
CiAKIGJvb2wgQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uOjppc1Zpc2libGUoKSBjb25zdAog
ewotICAgIGlmICghbV9wYXJlbnQpCisgICAgaWYgKCFtX2VsZW1lbnQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAKLSAgICAvLyBJbiBhIHNpbmdsZS1vcHRpb24gc2VsZWN0IHdpdGggdGhl
IHBvcHVwIGNvbGxhcHNlZCwgb25seSB0aGUgc2VsZWN0ZWQKLSAgICAvLyBpdGVtIGlzIGNvbnNp
ZGVyZWQgdmlzaWJsZS4KLSAgICByZXR1cm4gIW1fcGFyZW50LT5pc09mZlNjcmVlbigpIHx8IGlz
U2VsZWN0ZWQoKTsKKworICAgIC8vIEluIGEgc2luZ2xlLW9wdGlvbiBzZWxlY3Qgd2l0aCB0aGUg
cG9wdXAgY29sbGFwc2VkLCBvbmx5IHRoZSBzZWxlY3RlZCBpdGVtIGlzIGNvbnNpZGVyZWQgdmlz
aWJsZS4KKyAgICBhdXRvIHBhcmVudCA9IG1fZWxlbWVudC0+ZG9jdW1lbnQoKS5heE9iamVjdENh
Y2hlKCktPmdldE9yQ3JlYXRlKG1fZWxlbWVudC0+b3duZXJTZWxlY3RFbGVtZW50KCkpOworICAg
IHJldHVybiBwYXJlbnQgJiYgKCFwYXJlbnQtPmlzT2ZmU2NyZWVuKCkgfHwgaXNTZWxlY3RlZCgp
KTsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb246OmlzT2ZmU2NyZWVuKCkg
Y29uc3QKQEAgLTc1LDcgKzc4LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb246
OmlzT2ZmU2NyZWVuKCkgY29uc3QKIAogYm9vbCBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb246
OmlzU2VsZWN0ZWQoKSBjb25zdAogewotICAgIHJldHVybiBkb3duY2FzdDxIVE1MT3B0aW9uRWxl
bWVudD4oKm1fZWxlbWVudCkuc2VsZWN0ZWQoKTsKKyAgICByZXR1cm4gbV9lbGVtZW50ICYmIG1f
ZWxlbWVudC0+c2VsZWN0ZWQoKTsKIH0KIAogdm9pZCBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRp
b246OnNldFNlbGVjdGVkKGJvb2wgc2VsZWN0ZWQpCkBAIC04Myw3ICs4Niw3IEBAIHZvaWQgQWNj
ZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uOjpzZXRTZWxlY3RlZChib29sIHNlbGVjdGVkKQogICAg
IGlmICghY2FuU2V0U2VsZWN0ZWRBdHRyaWJ1dGUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAot
ICAgIGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PigqbV9lbGVtZW50KS5zZXRTZWxlY3RlZChz
ZWxlY3RlZCk7CisgICAgbV9lbGVtZW50LT5zZXRTZWxlY3RlZChzZWxlY3RlZCk7CiB9CiAKIFN0
cmluZyBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb246Om5hbWVGb3JNU0FBKCkgY29uc3QKQEAg
LTExOCw3ICsxMjEsNyBAQCBMYXlvdXRSZWN0IEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6
ZWxlbWVudFJlY3QoKSBjb25zdAogCiBTdHJpbmcgQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9u
OjpzdHJpbmdWYWx1ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRvd25jYXN0PEhUTUxPcHRpb25F
bGVtZW50PigqbV9lbGVtZW50KS5sYWJlbCgpOworICAgIHJldHVybiBtX2VsZW1lbnQgPyBtX2Vs
ZW1lbnQtPmxhYmVsKCkgOiBTdHJpbmcoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVu
dUxpc3RPcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU1lbnVMaXN0T3B0aW9uLmgKaW5kZXggNTExZmE3YjdiMWYwNzI3OWZmNjY0NzEzYzQ0NTZmZjg2
OGNiNmEzNy4uYjJiZmMzMzdmODk4ZTAwMDkxOGZmNmMzMjYwNjIyM2Q3OGYyNTZlZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RP
cHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlN
ZW51TGlzdE9wdGlvbi5oCkBAIC0yNSwzOSArMjUsMzggQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNp
bmNsdWRlICJBY2Nlc3NpYmlsaXR5TW9ja09iamVjdC5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxp
dHlPYmplY3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBIVE1MRWxlbWVudDsK
K2NsYXNzIEhUTUxPcHRpb25FbGVtZW50OwogCi1jbGFzcyBBY2Nlc3NpYmlsaXR5TWVudUxpc3RP
cHRpb24gZmluYWwgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eU1vY2tPYmplY3QgeworY2xhc3MgQWNj
ZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uIGZpbmFsIDogcHVibGljIEFjY2Vzc2liaWxpdHlPYmpl
Y3QgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8QWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9u
PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc2liaWxpdHlNZW51TGlzdE9w
dGlvbik7IH0KLQotICAgIHZvaWQgc2V0RWxlbWVudChIVE1MRWxlbWVudCopOworICAgIHN0YXRp
YyBSZWY8QWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uPiBjcmVhdGUoSFRNTE9wdGlvbkVsZW1l
bnQmKTsKIAogcHJpdmF0ZToKLSAgICBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24oKTsKKyAg
ICBleHBsaWNpdCBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24oSFRNTE9wdGlvbkVsZW1lbnQm
KTsKIAotICAgIGJvb2wgaXNNZW51TGlzdE9wdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KKyAgICBib29sIGlzTWVudUxpc3RPcHRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVy
biB0cnVlOyB9CiAKLSAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUxpc3RPcHRpb247IH0KLSAgICBi
b29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gQWNj
ZXNzaWJpbGl0eVJvbGU6Ok1lbnVMaXN0T3B0aW9uOyB9CisgICAgYm9vbCBjYW5IYXZlQ2hpbGRy
ZW4oKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgRWxlbWVudCogYWN0aW9u
RWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgaXNFbmFibGVkKCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGlz
T2ZmU2NyZWVuKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc1NlbGVjdGVkKCkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgU3RyaW5nIG5hbWVGb3JNU0FBKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBzZXRTZWxlY3RlZChib29sKSBvdmVycmlkZTsKLSAgICBib29sIGNhblNldFNlbGVjdGVk
QXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgTGF5b3V0UmVjdCBlbGVtZW50UmVjdCgp
IGNvbnN0IG92ZXJyaWRlOwotICAgIFN0cmluZyBzdHJpbmdWYWx1ZSgpIGNvbnN0IG92ZXJyaWRl
OwotICAgIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBFbGVtZW50KiBhY3Rpb25FbGVtZW50KCkgY29uc3QgZmluYWw7CisgICAgTm9kZSog
bm9kZSgpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgaXNFbmFibGVkKCkgY29uc3QgZmluYWw7Cisg
ICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGlzT2ZmU2NyZWVuKCkg
Y29uc3QgZmluYWw7CisgICAgYm9vbCBpc1NlbGVjdGVkKCkgY29uc3QgZmluYWw7CisgICAgU3Ry
aW5nIG5hbWVGb3JNU0FBKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzZXRTZWxlY3RlZChib29s
KSBmaW5hbDsKKyAgICBib29sIGNhblNldFNlbGVjdGVkQXR0cmlidXRlKCkgY29uc3QgZmluYWw7
CisgICAgTGF5b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0IGZpbmFsOworICAgIFN0cmluZyBz
dHJpbmdWYWx1ZSgpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJ
c0lnbm9yZWQoKSBjb25zdCBmaW5hbDsKIAotICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gbV9lbGVt
ZW50OworICAgIFdlYWtQdHI8SFRNTE9wdGlvbkVsZW1lbnQ+IG1fZWxlbWVudDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5jcHAKaW5kZXggN2IwMmMyMjQ5
YzZhMzk0NjMxOTgzNDNhMmU0NzgwZTQ0YjUxMTIxMC4uODFiNmMxZDQ4Mzg2YWUxYzM1MzBiNmYz
MmQ5ODY0N2E1ZWZiMzVlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5jcHAKQEAgLTcwLDEzICs3MCwx
MCBAQCBib29sIEFjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwOjpjb21wdXRlQWNjZXNzaWJpbGl0
eUlzSWdub3JlZCgpIGNvbnN0CiAKIEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbiogQWNjZXNz
aWJpbGl0eU1lbnVMaXN0UG9wdXA6Om1lbnVMaXN0T3B0aW9uQWNjZXNzaWJpbGl0eU9iamVjdChI
VE1MRWxlbWVudCogZWxlbWVudCkgY29uc3QKIHsKLSAgICBpZiAoIWlzPEhUTUxPcHRpb25FbGVt
ZW50PihlbGVtZW50KSB8fCAhZWxlbWVudC0+aW5SZW5kZXJlZERvY3VtZW50KCkpCisgICAgaWYg
KCFlbGVtZW50IHx8ICFlbGVtZW50LT5pblJlbmRlcmVkRG9jdW1lbnQoKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvJiBvcHRpb24gPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5
TWVudUxpc3RPcHRpb24+KCpkb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRl
KEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51TGlzdE9wdGlvbikpOwotICAgIG9wdGlvbi5zZXRFbGVt
ZW50KGVsZW1lbnQpOwotCi0gICAgcmV0dXJuICZvcHRpb247CisgICAgcmV0dXJuIGRvd25jYXN0
PEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbj4oZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgp
LT5nZXRPckNyZWF0ZShlbGVtZW50KSk7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eU1lbnVMaXN0
UG9wdXA6OnByZXNzKCkKQEAgLTEwMCwxMSArOTcsOSBAQCB2b2lkIEFjY2Vzc2liaWxpdHlNZW51
TGlzdFBvcHVwOjphZGRDaGlsZHJlbigpCiAgICAgbV9oYXZlQ2hpbGRyZW4gPSB0cnVlOwogCiAg
ICAgZm9yIChjb25zdCBhdXRvJiBsaXN0SXRlbSA6IGRvd25jYXN0PEhUTUxTZWxlY3RFbGVtZW50
Pigqc2VsZWN0Tm9kZSkubGlzdEl0ZW1zKCkpIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU1lbnVM
aXN0T3B0aW9uKiBvcHRpb24gPSBtZW51TGlzdE9wdGlvbkFjY2Vzc2liaWxpdHlPYmplY3QobGlz
dEl0ZW0pOwotICAgICAgICBpZiAob3B0aW9uKSB7Ci0gICAgICAgICAgICBvcHRpb24tPnNldFBh
cmVudCh0aGlzKTsKKyAgICAgICAgLy8gRklYTUU6IFdoeSBkb2VzIEFjY2Vzc2liaWxpdHlMaXN0
Qm94OjphZGRDaGlsZHJlbiBjaGVjayBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGJ1dCB0aGlzIGRv
ZXMgbm90PworICAgICAgICBpZiAoYXV0byBvcHRpb24gPSBtZW51TGlzdE9wdGlvbkFjY2Vzc2li
aWxpdHlPYmplY3QobGlzdEl0ZW0pKQogICAgICAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmQob3B0
aW9uKTsKLSAgICAgICAgfQogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAppbmRleCA0MjRkYThj
Y2E4ODIyOWIwOWYzOTFmNzFiOTc3N2U1MjBmMmFkYjY3Li43ODE1MWJjODhhN2E1OGZhZWVlYWUw
MGIyYWY3NmJhOWE4ODg5YmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcApAQCAtNTMsNiArNTMsNyBAQAog
I2luY2x1ZGUgIkhUTUxMYWJlbEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTGVnZW5kRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkhUTUxTZWxlY3RF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRleHRBcmVhRWxlbWVudC5oIgpAQCAtMjAyNiw3ICsy
MDI3LDcgQEAgc3RhdGljIFN0cmluZyBhY2Nlc3NpYmxlTmFtZUZvck5vZGUoTm9kZSogbm9kZSwg
Tm9kZSogbGFiZWxsZWRieU5vZGUpCiAKICAgICAvLyBJZiB0aGUgbm9kZSBjYW4gYmUgdHVybmVk
IGludG8gYW4gQVggb2JqZWN0LCB3ZSBjYW4gdXNlIHN0YW5kYXJkIG5hbWUgY29tcHV0YXRpb24g
cnVsZXMuCiAgICAgLy8gSWYgaG93ZXZlciwgdGhlIG5vZGUgY2Fubm90IChiZWNhdXNlIHRoZXJl
J3Mgbm8gcmVuZGVyZXIgZS5nLikgZmFsbGJhY2sgdG8gdXNpbmcgdGhlIGJhc2ljIHRleHQgdW5k
ZXJuZWF0aC4KLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVjdCA9IG5vZGUtPmRvY3Vt
ZW50KCkuYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShub2RlKTsKKyAgICBhdXRvIGF4T2Jq
ZWN0ID0gZWxlbWVudC5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoJmVs
ZW1lbnQpOwogICAgIGlmIChheE9iamVjdCkgewogICAgICAgICBTdHJpbmcgdmFsdWVEZXNjcmlw
dGlvbiA9IGF4T2JqZWN0LT52YWx1ZURlc2NyaXB0aW9uKCk7CiAgICAgICAgIGlmICghdmFsdWVE
ZXNjcmlwdGlvbi5pc0VtcHR5KCkpCkBAIC0yMDU2LDkgKzIwNTcsMTEgQEAgc3RhdGljIFN0cmlu
ZyBhY2Nlc3NpYmxlTmFtZUZvck5vZGUoTm9kZSogbm9kZSwgTm9kZSogbGFiZWxsZWRieU5vZGUp
CiAgICAgICAgICAgICByZXR1cm4gY2hpbGRUZXh0OwogICAgIH0KICAgICAKLSAgICBpZiAoaXM8
SFRNTElucHV0RWxlbWVudD4oKm5vZGUpKQotICAgICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTElu
cHV0RWxlbWVudD4oKm5vZGUpLnZhbHVlKCk7Ci0gICAgCisgICAgaWYgKGlzPEhUTUxJbnB1dEVs
ZW1lbnQ+KGVsZW1lbnQpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVu
dD4oZWxlbWVudCkudmFsdWUoKTsKKyAgICBpZiAoaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1l
bnQpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQp
LnZhbHVlKCk7CisKICAgICBTdHJpbmcgdGV4dDsKICAgICBpZiAoYXhPYmplY3QpIHsKICAgICAg
ICAgaWYgKGF4T2JqZWN0LT5hY2Nlc3NpYmxlTmFtZURlcml2ZXNGcm9tQ29udGVudCgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdC5jcHAKaW5kZXggM2M0NGVjODk4NGI2N2Y2Y2E5OGI3MDk3ZjQ3YzYwMjZkODU2
NTQxNy4uMGQ4MzhkNTc0ODFmYjQ3YmQ5ZmUyOWQ5N2E1ZGMwOWFiMWQ4Y2FiNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwCkBAIC0xOTQ5LDcgKzE5NDksNyBAQCBBWENvcmVPYmplY3Q6OkFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpkb2N1bWVudExp
bgogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgYXV0byogcGFyZW50ID0gY3VycmVudC0+
cGFyZW50Tm9kZSgpOwogICAgICAgICAgICAgaWYgKGlzPEhUTUxBcmVhRWxlbWVudD4oKmN1cnJl
bnQpICYmIGlzPEhUTUxNYXBFbGVtZW50PihwYXJlbnQpKSB7Ci0gICAgICAgICAgICAgICAgYXV0
byYgYXJlYU9iamVjdCA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms+KCpheE9i
amVjdENhY2hlKCktPmdldE9yQ3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlOjpJbWFnZU1hcExpbmsp
KTsKKyAgICAgICAgICAgICAgICBhdXRvJiBhcmVhT2JqZWN0ID0gZG93bmNhc3Q8QWNjZXNzaWJp
bGl0eUltYWdlTWFwTGluaz4oKmF4T2JqZWN0Q2FjaGUoKS0+Y3JlYXRlKEFjY2Vzc2liaWxpdHlS
b2xlOjpJbWFnZU1hcExpbmspKTsKICAgICAgICAgICAgICAgICBIVE1MTWFwRWxlbWVudCYgbWFw
ID0gZG93bmNhc3Q8SFRNTE1hcEVsZW1lbnQ+KCpwYXJlbnQpOwogICAgICAgICAgICAgICAgIGFy
ZWFPYmplY3Quc2V0SFRNTEFyZWFFbGVtZW50KGRvd25jYXN0PEhUTUxBcmVhRWxlbWVudD4oY3Vy
cmVudCkpOwogICAgICAgICAgICAgICAgIGFyZWFPYmplY3Quc2V0SFRNTE1hcEVsZW1lbnQoJm1h
cCk7CkBAIC0zMTczLDcgKzMxNzMsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmFkZEltYWdlTWFwQ2hpbGRyZW4oKQogICAgICAgICAvLyBhZGQgYW4gPGFyZWE+IGVsZW1lbnQg
Zm9yIHRoaXMgY2hpbGQgaWYgaXQgaGFzIGEgbGluawogICAgICAgICBpZiAoIWFyZWEuaXNMaW5r
KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgYXV0byYgYXJlYU9iamVjdCA9IGRv
d25jYXN0PEFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms+KCpheE9iamVjdENhY2hlKCktPmdldE9y
Q3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlOjpJbWFnZU1hcExpbmspKTsKKyAgICAgICAgYXV0byYg
YXJlYU9iamVjdCA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms+KCpheE9iamVj
dENhY2hlKCktPmNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2VNYXBMaW5rKSk7CiAgICAg
ICAgIGFyZWFPYmplY3Quc2V0SFRNTEFyZWFFbGVtZW50KCZhcmVhKTsKICAgICAgICAgYXJlYU9i
amVjdC5zZXRIVE1MTWFwRWxlbWVudChtYXApOwogICAgICAgICBhcmVhT2JqZWN0LnNldFBhcmVu
dCh0aGlzKTsKQEAgLTMyMDgsNyArMzIwOCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6YWRkVGV4dEZpZWxkQ2hpbGRyZW4oKQogICAgIGlmICghaXM8U3BpbkJ1dHRvbkVsZW1l
bnQ+KHNwaW5CdXR0b25FbGVtZW50KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byYgYXhT
cGluQnV0dG9uID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVNwaW5CdXR0b24+KCpheE9iamVjdENh
Y2hlKCktPmdldE9yQ3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlOjpTcGluQnV0dG9uKSk7CisgICAg
YXV0byYgYXhTcGluQnV0dG9uID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVNwaW5CdXR0b24+KCph
eE9iamVjdENhY2hlKCktPmNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6U3BpbkJ1dHRvbikpOwog
ICAgIGF4U3BpbkJ1dHRvbi5zZXRTcGluQnV0dG9uRWxlbWVudChkb3duY2FzdDxTcGluQnV0dG9u
RWxlbWVudD4oc3BpbkJ1dHRvbkVsZW1lbnQpKTsKICAgICBheFNwaW5CdXR0b24uc2V0UGFyZW50
KHRoaXMpOwogICAgIG1fY2hpbGRyZW4uYXBwZW5kKCZheFNwaW5CdXR0b24pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHAKaW5k
ZXggYTFhMTQ3OTllZWU1NzQxNWQ4ZWU1Mzk4YzU2YjBhMWQ3ODcxMDdjZi4uMGViMWIyYmI5MTBl
NWNjZTA4M2ZiZDAyNDhiNDcxYTUyOWU2YmFmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwCkBAIC04NCw3ICs4NCw3IEBA
IHZvaWQgQWNjZXNzaWJpbGl0eVNsaWRlcjo6YWRkQ2hpbGRyZW4oKQogCiAgICAgQVhPYmplY3RD
YWNoZSogY2FjaGUgPSBtX3JlbmRlcmVyLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKTsKIAot
ICAgIGF1dG8mIHRodW1iID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVNsaWRlclRodW1iPigqY2Fj
aGUtPmdldE9yQ3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlOjpTbGlkZXJUaHVtYikpOworICAgIGF1
dG8mIHRodW1iID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVNsaWRlclRodW1iPigqY2FjaGUtPmNy
ZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVyVGh1bWIpKTsKICAgICB0aHVtYi5zZXRQYXJl
bnQodGhpcyk7CiAKICAgICAvLyBCZWZvcmUgYWN0dWFsbHkgYWRkaW5nIHRoZSB2YWx1ZSBpbmRp
Y2F0b3IgdG8gdGhlIGhpZXJhcmNoeSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5jcHAKaW5kZXggN2QwYTZhNDNhYTUx
MDkxNjlkYmViYWE0MjRjNmRmOTRiN2YzZGFmOS4uOTI5ZjYxMzVjMjJlZDBhOThkNmVjNTcxNDQ4
NjFmZmRkNGQwNzliZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5jcHAKQEAgLTg4LDEyICs4OCwxMiBAQCB2b2lk
IEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uOjphZGRDaGlsZHJlbigpCiAgICAgCiAgICAgbV9oYXZl
Q2hpbGRyZW4gPSB0cnVlOwogICAgIAotICAgIGF1dG8mIGluY3JlbWVudG9yID0gZG93bmNhc3Q8
QWNjZXNzaWJpbGl0eVNwaW5CdXR0b25QYXJ0PigqY2FjaGUtPmdldE9yQ3JlYXRlKEFjY2Vzc2li
aWxpdHlSb2xlOjpTcGluQnV0dG9uUGFydCkpOworICAgIGF1dG8mIGluY3JlbWVudG9yID0gZG93
bmNhc3Q8QWNjZXNzaWJpbGl0eVNwaW5CdXR0b25QYXJ0PigqY2FjaGUtPmNyZWF0ZShBY2Nlc3Np
YmlsaXR5Um9sZTo6U3BpbkJ1dHRvblBhcnQpKTsKICAgICBpbmNyZW1lbnRvci5zZXRJc0luY3Jl
bWVudG9yKHRydWUpOwogICAgIGluY3JlbWVudG9yLnNldFBhcmVudCh0aGlzKTsKICAgICBtX2No
aWxkcmVuLmFwcGVuZCgmaW5jcmVtZW50b3IpOwogCi0gICAgYXV0byYgZGVjcmVtZW50b3IgPSBk
b3duY2FzdDxBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvblBhcnQ+KCpjYWNoZS0+Z2V0T3JDcmVhdGUo
QWNjZXNzaWJpbGl0eVJvbGU6OlNwaW5CdXR0b25QYXJ0KSk7CisgICAgYXV0byYgZGVjcmVtZW50
b3IgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvblBhcnQ+KCpjYWNoZS0+Y3JlYXRl
KEFjY2Vzc2liaWxpdHlSb2xlOjpTcGluQnV0dG9uUGFydCkpOwogICAgIGRlY3JlbWVudG9yLnNl
dElzSW5jcmVtZW50b3IoZmFsc2UpOwogICAgIGRlY3JlbWVudG9yLnNldFBhcmVudCh0aGlzKTsK
ICAgICBtX2NoaWxkcmVuLmFwcGVuZCgmZGVjcmVtZW50b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCmluZGV4IGNiYjZhZmU1
YjE0NjgzNmU2ZTQzZjUyMTY3ZjVmMGQxYWE0MzllZGUuLjdlOWExZmI4MmRkODE4MzNkNDIwZTUy
NzQ5ZTM2Y2Q3NTY5YjA3MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKQEAgLTQxNyw3ICs0MTcsNyBAQCB2b2lkIEFjY2Vz
c2liaWxpdHlUYWJsZTo6YWRkQ2hpbGRyZW4oKQogICAgIC8vIG1ha2UgdGhlIGNvbHVtbnMgYmFz
ZWQgb24gdGhlIG51bWJlciBvZiBjb2x1bW5zIGluIHRoZSBmaXJzdCBib2R5CiAgICAgdW5zaWdu
ZWQgbGVuZ3RoID0gbWF4Q29sdW1uQ291bnQ7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGF1dG8mIGNvbHVtbiA9IGRvd25jYXN0PEFjY2Vzc2li
aWxpdHlUYWJsZUNvbHVtbj4oKmF4Q2FjaGUtPmdldE9yQ3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xl
OjpDb2x1bW4pKTsKKyAgICAgICAgYXV0byYgY29sdW1uID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0
eVRhYmxlQ29sdW1uPigqYXhDYWNoZS0+Y3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlOjpDb2x1bW4p
KTsKICAgICAgICAgY29sdW1uLnNldENvbHVtbkluZGV4KGkpOwogICAgICAgICBjb2x1bW4uc2V0
UGFyZW50KHRoaXMpOwogICAgICAgICBtX2NvbHVtbnMuYXBwZW5kKCZjb2x1bW4pOwpAQCAtNTA1
LDcgKzUwNSw3IEBAIEFYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVRhYmxlOjpoZWFkZXJDb250
YWluZXIoKQogICAgIGlmIChtX2hlYWRlckNvbnRhaW5lcikKICAgICAgICAgcmV0dXJuIG1faGVh
ZGVyQ29udGFpbmVyLmdldCgpOwogICAgIAotICAgIGF1dG8mIHRhYmxlSGVhZGVyID0gZG93bmNh
c3Q8QWNjZXNzaWJpbGl0eU1vY2tPYmplY3Q+KCpheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRl
KEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJsZUhlYWRlckNvbnRhaW5lcikpOworICAgIGF1dG8mIHRh
YmxlSGVhZGVyID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eU1vY2tPYmplY3Q+KCpheE9iamVjdENh
Y2hlKCktPmNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6VGFibGVIZWFkZXJDb250YWluZXIpKTsK
ICAgICB0YWJsZUhlYWRlci5zZXRQYXJlbnQodGhpcyk7CiAKICAgICBtX2hlYWRlckNvbnRhaW5l
ciA9ICZ0YWJsZUhlYWRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvYXRrL1dlYktpdEFjY2Vzc2libGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9hdGsvV2ViS2l0QWNjZXNzaWJsZS5jcHAKaW5kZXggMGQ0MTFmNDNlOWU0OTc3NDQzYzgyNTZi
OWZiOTc4ZGNlOGM4ZGVjYi4uODZjMzBjZGQ2NjYzNzE0Zjc4ZjYzZTE5ZDczYTVjMjA4ZDg3ZWI2
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNj
ZXNzaWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0
QWNjZXNzaWJsZS5jcHAKQEAgLTk3LDE3ICs5NywxNCBAQCBzdHJ1Y3QgX1dlYktpdEFjY2Vzc2li
bGVQcml2YXRlIHsKIAogV0VCS0lUX0RFRklORV9UWVBFKFdlYktpdEFjY2Vzc2libGUsIHdlYmtp
dF9hY2Nlc3NpYmxlLCBBVEtfVFlQRV9PQkpFQ1QpCiAKLXN0YXRpYyBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBmYWxsYmFja09iamVjdCgpCi17Ci0gICAgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IG9iamVjdCA9ICZBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbjo6Y3JlYXRlKCkubGVha1JlZigp
OwotICAgIHJldHVybiBvYmplY3Q7Ci19Ci0KIHN0YXRpYyBjb25zdCBnY2hhciogd2Via2l0QWNj
ZXNzaWJsZUdldE5hbWUoQXRrT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgYXV0byogYWNjZXNzaWJs
ZSA9IFdFQktJVF9BQ0NFU1NJQkxFKG9iamVjdCk7CiAgICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nl
c3NpYmxlSXNJbnZhbGlkKGFjY2Vzc2libGUsIG51bGxwdHIpOwogCisgICAgaWYgKCFhY2Nlc3Np
YmxlLT5wcml2LT5vYmplY3QpCisgICAgICAgIHJldHVybiAiIjsKKwogICAgIFZlY3RvcjxBY2Nl
c3NpYmlsaXR5VGV4dD4gdGV4dE9yZGVyOwogICAgIGFjY2Vzc2libGUtPnByaXYtPm9iamVjdC0+
YWNjZXNzaWJpbGl0eVRleHQodGV4dE9yZGVyKTsKIApAQCAtMTMzLDYgKzEzMCw5IEBAIHN0YXRp
YyBjb25zdCBnY2hhciogd2Via2l0QWNjZXNzaWJsZUdldERlc2NyaXB0aW9uKEF0a09iamVjdCog
b2JqZWN0KQogICAgIGF1dG8qIGFjY2Vzc2libGUgPSBXRUJLSVRfQUNDRVNTSUJMRShvYmplY3Qp
OwogICAgIHJldHVyblZhbElmV2ViS2l0QWNjZXNzaWJsZUlzSW52YWxpZChhY2Nlc3NpYmxlLCBu
dWxscHRyKTsKIAorICAgIGlmICghYWNjZXNzaWJsZS0+cHJpdi0+b2JqZWN0KQorICAgICAgICBy
ZXR1cm4gIiI7CisKICAgICBWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+IHRleHRPcmRlcjsKICAg
ICBhY2Nlc3NpYmxlLT5wcml2LT5vYmplY3QtPmFjY2Vzc2liaWxpdHlUZXh0KHRleHRPcmRlcik7
CiAKQEAgLTMxMiw2ICszMTIsOCBAQCBzdGF0aWMgQXRrT2JqZWN0KiB3ZWJraXRBY2Nlc3NpYmxl
R2V0UGFyZW50KEF0a09iamVjdCogb2JqZWN0KQogCiAgICAgLy8gUGFyZW50IG5vdCBzZXQgeWV0
LCBzbyB0cnkgdG8gZmluZCBpdCBpbiB0aGUgaGllcmFyY2h5LgogICAgIGF1dG8qIGNvcmVPYmpl
Y3QgPSBhY2Nlc3NpYmxlLT5wcml2LT5vYmplY3Q7CisgICAgaWYgKCFjb3JlT2JqZWN0KQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBhdXRvKiBjb3JlUGFyZW50ID0gY29yZU9iamVjdC0+
cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgaWYgKCFjb3JlUGFyZW50ICYmIGlzUm9vdE9i
amVjdChjb3JlT2JqZWN0KSkgewogICAgICAgICAvLyBUaGUgdG9wIGxldmVsIG9iamVjdCBjbGFp
bXMgdG8gbm90IGhhdmUgYSBwYXJlbnQuIFRoaXMgbWFrZXMgaXQKQEAgLTMyOSw2ICszMzEsOCBA
QCBzdGF0aWMgZ2ludCB3ZWJraXRBY2Nlc3NpYmxlR2V0TkNoaWxkcmVuKEF0a09iamVjdCogb2Jq
ZWN0KQogICAgIGF1dG8qIGFjY2Vzc2libGUgPSBXRUJLSVRfQUNDRVNTSUJMRShvYmplY3QpOwog
ICAgIHJldHVyblZhbElmV2ViS2l0QWNjZXNzaWJsZUlzSW52YWxpZChhY2Nlc3NpYmxlLCAwKTsK
IAorICAgIGlmICghYWNjZXNzaWJsZS0+cHJpdi0+b2JqZWN0KQorICAgICAgICByZXR1cm4gMDsK
ICAgICByZXR1cm4gYWNjZXNzaWJsZS0+cHJpdi0+b2JqZWN0LT5jaGlsZHJlbigpLnNpemUoKTsK
IH0KIApAQCAtMzM3LDcgKzM0MSw3IEBAIHN0YXRpYyBBdGtPYmplY3QqIHdlYmtpdEFjY2Vzc2li
bGVSZWZDaGlsZChBdGtPYmplY3QqIG9iamVjdCwgZ2ludCBpbmRleCkKICAgICBhdXRvKiBhY2Nl
c3NpYmxlID0gV0VCS0lUX0FDQ0VTU0lCTEUob2JqZWN0KTsKICAgICByZXR1cm5WYWxJZldlYktp
dEFjY2Vzc2libGVJc0ludmFsaWQoYWNjZXNzaWJsZSwgbnVsbHB0cik7CiAKLSAgICBpZiAoaW5k
ZXggPCAwKQorICAgIGlmICghYWNjZXNzaWJsZS0+cHJpdi0+b2JqZWN0IHx8IGluZGV4IDwgMCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBjb25zdCBhdXRvJiBjaGlsZHJlbiA9IGFj
Y2Vzc2libGUtPnByaXYtPm9iamVjdC0+Y2hpbGRyZW4oKTsKQEAgLTM2Miw2ICszNjYsOCBAQCBz
dGF0aWMgZ2ludCB3ZWJraXRBY2Nlc3NpYmxlR2V0SW5kZXhJblBhcmVudChBdGtPYmplY3QqIG9i
amVjdCkKICAgICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQoYWNjZXNzaWJs
ZSwgLTEpOwogCiAgICAgYXV0byogY29yZU9iamVjdCA9IGFjY2Vzc2libGUtPnByaXYtPm9iamVj
dDsKKyAgICBpZiAoIWNvcmVPYmplY3QpCisgICAgICAgIHJldHVybiAtMTsKICAgICBhdXRvKiBw
YXJlbnQgPSBjb3JlT2JqZWN0LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICBpZiAoIXBh
cmVudCAmJiBpc1Jvb3RPYmplY3QoY29yZU9iamVjdCkpIHsKICAgICAgICAgaWYgKCFjb3JlT2Jq
ZWN0LT5kb2N1bWVudCgpKQpAQCAtMzk5LDYgKzQwNSw4IEBAIHN0YXRpYyBBdGtBdHRyaWJ1dGVT
ZXQqIHdlYmtpdEFjY2Vzc2libGVHZXRBdHRyaWJ1dGVzKEF0a09iamVjdCogb2JqZWN0KQogI2Vu
ZGlmCiAKICAgICBhdXRvKiBjb3JlT2JqZWN0ID0gYWNjZXNzaWJsZS0+cHJpdi0+b2JqZWN0Owor
ICAgIGlmICghY29yZU9iamVjdCkKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZVNldDsKIAogICAg
IC8vIEhhY2sgbmVlZGVkIGZvciBXZWJLaXQyIHRlc3RzIGJlY2F1c2Ugb2J0YWluaW5nIGFuIGVs
ZW1lbnQgYnkgaXRzIElECiAgICAgLy8gY2Fubm90IGJlIGRvbmUgZnJvbSB0aGUgVUlQcm9jZXNz
LiBBc3Npc3RpdmUgdGVjaG5vbG9naWVzIGhhdmUgbm8gbmVlZApAQCAtODM2LDYgKzg0NCw5IEBA
IHN0YXRpYyBBdGtSb2xlIHdlYmtpdEFjY2Vzc2libGVHZXRSb2xlKEF0a09iamVjdCogb2JqZWN0
KQogICAgIGF1dG8qIGFjY2Vzc2libGUgPSBXRUJLSVRfQUNDRVNTSUJMRShvYmplY3QpOwogICAg
IHJldHVyblZhbElmV2ViS2l0QWNjZXNzaWJsZUlzSW52YWxpZChhY2Nlc3NpYmxlLCBBVEtfUk9M
RV9JTlZBTElEKTsKIAorICAgIGlmICghYWNjZXNzaWJsZS0+cHJpdi0+b2JqZWN0KQorICAgICAg
ICByZXR1cm4gQVRLX1JPTEVfSU5WQUxJRDsKKyAgICAKICAgICAvLyBOb3RlOiBXaHkgZG9lc24n
dCBXZWJDb3JlIGhhdmUgYSBwYXNzd29yZCBmaWVsZCBmb3IgdGhpcwogICAgIGlmIChhY2Nlc3Np
YmxlLT5wcml2LT5vYmplY3QtPmlzUGFzc3dvcmRGaWVsZCgpKQogICAgICAgICByZXR1cm4gQVRL
X1JPTEVfUEFTU1dPUkRfVEVYVDsKQEAgLTEwMDYsOSArMTAxNyw5IEBAIHN0YXRpYyBBdGtTdGF0
ZVNldCogd2Via2l0QWNjZXNzaWJsZVJlZlN0YXRlU2V0KEF0a09iamVjdCogb2JqZWN0KQogCiAg
ICAgLy8gTWFrZSBzdXJlIHRoZSBsYXlvdXQgaXMgdXBkYXRlZCB0byByZWFsbHkga25vdyB3aGV0
aGVyIHRoZSBvYmplY3QKICAgICAvLyBpcyBkZWZ1bmN0IG9yIG5vdCwgc28gd2UgY2FuIHJldHVy
biB0aGUgcHJvcGVyIHN0YXRlLgotICAgIGFjY2Vzc2libGUtPnByaXYtPm9iamVjdC0+dXBkYXRl
QmFja2luZ1N0b3JlKCk7Ci0KLSAgICBpZiAoYWNjZXNzaWJsZS0+cHJpdi0+b2JqZWN0ID09IGZh
bGxiYWNrT2JqZWN0KCkpIHsKKyAgICBpZiAoYWNjZXNzaWJsZS0+cHJpdi0+b2JqZWN0KQorICAg
ICAgICBhY2Nlc3NpYmxlLT5wcml2LT5vYmplY3QtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOworICAg
IGlmICghYWNjZXNzaWJsZS0+cHJpdi0+b2JqZWN0KSB7CiAgICAgICAgIGF0a19zdGF0ZV9zZXRf
YWRkX3N0YXRlKHN0YXRlU2V0LCBBVEtfU1RBVEVfREVGVU5DVCk7CiAgICAgICAgIHJldHVybiBz
dGF0ZVNldDsKICAgICB9CkBAIC0xMDI4LDcgKzEwMzksOCBAQCBzdGF0aWMgQXRrUmVsYXRpb25T
ZXQqIHdlYmtpdEFjY2Vzc2libGVSZWZSZWxhdGlvblNldChBdGtPYmplY3QqIG9iamVjdCkKICAg
ICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQoYWNjZXNzaWJsZSwgbnVsbHB0
cik7CiAKICAgICBBdGtSZWxhdGlvblNldCogcmVsYXRpb25TZXQgPSBBVEtfT0JKRUNUX0NMQVNT
KHdlYmtpdF9hY2Nlc3NpYmxlX3BhcmVudF9jbGFzcyktPnJlZl9yZWxhdGlvbl9zZXQob2JqZWN0
KTsKLSAgICBzZXRBdGtSZWxhdGlvblNldEZyb21Db3JlT2JqZWN0KGFjY2Vzc2libGUtPnByaXYt
Pm9iamVjdCwgcmVsYXRpb25TZXQpOworICAgIGlmIChhY2Nlc3NpYmxlLT5wcml2LT5vYmplY3Qp
CisgICAgICAgIHNldEF0a1JlbGF0aW9uU2V0RnJvbUNvcmVPYmplY3QoYWNjZXNzaWJsZS0+cHJp
di0+b2JqZWN0LCByZWxhdGlvblNldCk7CiAgICAgcmV0dXJuIHJlbGF0aW9uU2V0OwogfQogCkBA
IC0xMDQ2LDYgKzEwNTgsOSBAQCBzdGF0aWMgY29uc3QgZ2NoYXIqIHdlYmtpdEFjY2Vzc2libGVH
ZXRPYmplY3RMb2NhbGUoQXRrT2JqZWN0KiBvYmplY3QpCiAgICAgYXV0byogYWNjZXNzaWJsZSA9
IFdFQktJVF9BQ0NFU1NJQkxFKG9iamVjdCk7CiAgICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3Np
YmxlSXNJbnZhbGlkKGFjY2Vzc2libGUsIG51bGxwdHIpOwogCisgICAgaWYgKCFhY2Nlc3NpYmxl
LT5wcml2LT5vYmplY3QpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIAogICAgIGlmIChB
VEtfSVNfRE9DVU1FTlQob2JqZWN0KSkgewogICAgICAgICAvLyBUT0RPOiBTaG91bGQgd2UgZmFs
bCBiYWNrIG9uIGxhbmcgeG1sOmxhbmcgd2hlbiB0aGUgZm9sbG93aW5nIGNvbWVzIHVwIGVtcHR5
PwogICAgICAgICBTdHJpbmcgbGFuZ3VhZ2UgPSBhY2Nlc3NpYmxlLT5wcml2LT5vYmplY3QtPmxh
bmd1YWdlKCk7CkBAIC0xMzAwLDI3ICsxMzE1LDI0IEBAIFdlYktpdEFjY2Vzc2libGUqIHdlYmtp
dEFjY2Vzc2libGVOZXcoQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCkKIEFjY2Vzc2li
aWxpdHlPYmplY3QmIHdlYmtpdEFjY2Vzc2libGVHZXRBY2Nlc3NpYmlsaXR5T2JqZWN0KFdlYktp
dEFjY2Vzc2libGUqIGFjY2Vzc2libGUpCiB7CiAgICAgQVNTRVJUKFdFQktJVF9JU19BQ0NFU1NJ
QkxFKGFjY2Vzc2libGUpKTsKKyAgICBBU1NFUlQoYWNjZXNzaWJsZS0+cHJpdi0+b2JqZWN0KTsK
ICAgICByZXR1cm4gKmFjY2Vzc2libGUtPnByaXYtPm9iamVjdDsKIH0KIAogdm9pZCB3ZWJraXRB
Y2Nlc3NpYmxlRGV0YWNoKFdlYktpdEFjY2Vzc2libGUqIGFjY2Vzc2libGUpCiB7CiAgICAgQVNT
RVJUKFdFQktJVF9JU19BQ0NFU1NJQkxFKGFjY2Vzc2libGUpKTsKLSAgICBBU1NFUlQoYWNjZXNz
aWJsZS0+cHJpdi0+b2JqZWN0ICE9IGZhbGxiYWNrT2JqZWN0KCkpOwogCi0gICAgaWYgKGFjY2Vz
c2libGUtPnByaXYtPm9iamVjdC0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Oldl
YkFyZWEpCisgICAgaWYgKGFjY2Vzc2libGUtPnByaXYtPm9iamVjdCAmJiBhY2Nlc3NpYmxlLT5w
cml2LT5vYmplY3QtPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJBcmVhKQog
ICAgICAgICBhdGtfb2JqZWN0X25vdGlmeV9zdGF0ZV9jaGFuZ2UoQVRLX09CSkVDVChhY2Nlc3Np
YmxlKSwgQVRLX1NUQVRFX0RFRlVOQ1QsIFRSVUUpOwogCi0gICAgLy8gV2UgcmVwbGFjZSB0aGUg
V2ViQ29yZSBBY2Nlc3NpYmlsaXR5T2JqZWN0IHdpdGggYSBmYWxsYmFjayBvYmplY3QgdGhhdAot
ICAgIC8vIHByb3ZpZGVzIGRlZmF1bHQgaW1wbGVtZW50YXRpb25zIHRvIGF2b2lkIHJlcGV0aXRp
dmUgbnVsbC1jaGVja2luZyBhZnRlcgotICAgIC8vIGRldGFjaG1lbnQuCi0gICAgYWNjZXNzaWJs
ZS0+cHJpdi0+b2JqZWN0ID0gZmFsbGJhY2tPYmplY3QoKTsKKyAgICBhY2Nlc3NpYmxlLT5wcml2
LT5vYmplY3QgPSBudWxscHRyOwogfQogCiBib29sIHdlYmtpdEFjY2Vzc2libGVJc0RldGFjaGVk
KFdlYktpdEFjY2Vzc2libGUqIGFjY2Vzc2libGUpCiB7CiAgICAgQVNTRVJUKFdFQktJVF9JU19B
Q0NFU1NJQkxFKGFjY2Vzc2libGUpKTsKLSAgICByZXR1cm4gYWNjZXNzaWJsZS0+cHJpdi0+b2Jq
ZWN0ID09IGZhbGxiYWNrT2JqZWN0KCk7CisgICAgcmV0dXJuICFhY2Nlc3NpYmxlLT5wcml2LT5v
YmplY3Q7CiB9CiAKIGNvbnN0IGNoYXIqIHdlYmtpdEFjY2Vzc2libGVDYWNoZUFuZFJldHVybkF0
a1Byb3BlcnR5KFdlYktpdEFjY2Vzc2libGUqIGFjY2Vzc2libGUsIEF0a0NhY2hlZFByb3BlcnR5
IHByb3BlcnR5LCBDU3RyaW5nJiYgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlv
bkVsZW1lbnQuY3BwCmluZGV4IDZlZGU5N2Y4MGJkNWI3YTFiNjFhYzY4NWQzYzQ0YWYyMThjZjZh
Y2IuLmVjNzFlZDBhNDNlOGYxODNiMzg4ZTZiYzJlZTFjMDAxZjJmMzY2YmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCkBAIC0yMDksNyArMjA5LDcgQEAgdm9p
ZCBIVE1MT3B0aW9uRWxlbWVudDo6c2V0VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICBz
ZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHZhbHVlQXR0ciwgdmFsdWUpOwogfQog
Ci1ib29sIEhUTUxPcHRpb25FbGVtZW50OjpzZWxlY3RlZCgpCitib29sIEhUTUxPcHRpb25FbGVt
ZW50OjpzZWxlY3RlZCgpIGNvbnN0CiB7CiAgICAgaWYgKFJlZlB0cjxIVE1MU2VsZWN0RWxlbWVu
dD4gc2VsZWN0ID0gb3duZXJTZWxlY3RFbGVtZW50KCkpCiAgICAgICAgIHNlbGVjdC0+dXBkYXRl
TGlzdEl0ZW1TZWxlY3RlZFN0YXRlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3B0aW9uRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxl
bWVudC5oCmluZGV4IDc4NWE3Y2RmZThjZTI0NWE4ODYxYWY1NGZjNmFjZjM0OTgxMDFhOTAuLmRj
M2IwY2YzYzlhOGQzMGNmNDMyYjI0ZmQyMjMxOTMxYjI5YzNlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPcHRpb25FbGVtZW50LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIFN0cmluZyB2YWx1ZSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNl
bGVjdGVkKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzZWxlY3RlZCgpIGNvbnN0OwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2VsZWN0ZWQoYm9vbCk7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBIVE1MU2VsZWN0RWxlbWVudCogb3duZXJTZWxlY3RFbGVtZW50KCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2YyOGUwMDU4
YjNkNzRkYmIwZTU1NGJjYjI0NGY5ZDdhODIyYmI5Ni4uZDJjNDE1NDk3NzVjODM1NzMxMWRkY2Nk
NWVmYmE3MzFlOGUzMGIzYyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTA4LTExICBEYXJpbiBBZGxlciAgPGRh
cmluQGFwcGxlLmNvbT4KKworICAgICAgICBMYXlvdXRUZXN0IGFjY2Vzc2liaWxpdHkvbWFjL3Nl
bGVjdC1lbGVtZW50LXNlbGVjdGlvbi13aXRoLW9wdGdyb3Vwcy5odG1sIGlzIGEgZmxha3kgZmFp
bHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1
MzQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRmxlaXphY2guCisKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9zaW5nbGVfdGVzdF9ydW5u
ZXIucHk6CisgICAgICAgIChTaW5nbGVUZXN0UnVubmVyLl9jb21wYXJlX291dHB1dF93aXRoX3Jl
ZmVyZW5jZSk6IFJlbW92ZWQgdW5oZWxwZnVsIGxvZyBtZXNzYWdlIHRoYXQgdGVsbHMKKyAgICAg
ICAgYWJvdXQgcmVmIHRlc3RzIHdoZXJlIHRoZSBoYXNoIG9wdGltaXphdGlvbiBmb3IgY29tcGFy
aW5nIGltYWdlcyBkb2VzIG5vdCB3b3JrLCBidXQgdGhlCisgICAgICAgIHRlc3QgcGFzc2VzLiBX
ZSBkb24ndCB3YW50IHRvIGdldCB0aGlzIGtpbmQgb2YgbG9nIG1lc3NhZ2UgZm9yIHBhc3Npbmcg
dGVzdHMuCisKIDIwMjAtMDgtMTEgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CiAK
ICAgICAgICAgVGV4dCBtYW5pcHVsYXRpb24gY3Jhc2hlcyB3aGVuIHJlcGxhY2luZyBlbGVtZW50
IHdpdGggaW1nIHJvbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2NvbnRyb2xsZXJzL3NpbmdsZV90ZXN0X3J1bm5lci5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3NpbmdsZV90ZXN0X3J1bm5lci5weQpp
bmRleCBmN2ViM2IwOTVkYTQ4ZmRhMzdjZTRjZDJhNWZhZWYwM2VlYTAyN2IyLi5hMmExMjRhMDZm
NGQyMTdkMjc3NTUwM2I2NzFmZmU3N2VlYjVlNWRmIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9zaW5nbGVfdGVzdF9ydW5uZXIucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvc2lu
Z2xlX3Rlc3RfcnVubmVyLnB5CkBAIC0zNDYsNyArMzQ2LDUgQEAgY2xhc3MgU2luZ2xlVGVzdFJ1
bm5lcihvYmplY3QpOgogICAgICAgICAgICAgICAgIGFjdHVhbF9kcml2ZXJfb3V0cHV0LmVycm9y
ID0gKGFjdHVhbF9kcml2ZXJfb3V0cHV0LmVycm9yIG9yICcnKSArIGVycm9yX3N0cmluZwogICAg
ICAgICAgICAgZWxpZiBkaWZmX3Jlc3VsdFswXToKICAgICAgICAgICAgICAgICBmYWlsdXJlcy5h
cHBlbmQodGVzdF9mYWlsdXJlcy5GYWlsdXJlUmVmdGVzdE1pc21hdGNoKHJlZmVyZW5jZV9maWxl
bmFtZSkpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIF9sb2cud2FybmluZygi
ICAlcyAtPiByZWYgdGVzdCBoYXNoZXMgZGlkbid0IG1hdGNoIGJ1dCBkaWZmIHBhc3NlZCIgJSBz
ZWxmLl90ZXN0X25hbWUpCiAKICAgICAgICAgcmV0dXJuIFRlc3RSZXN1bHQoc2VsZi5fdGVzdF9u
YW1lLCBmYWlsdXJlcywgdG90YWxfdGVzdF90aW1lLCBoYXNfc3RkZXJyLCBwaWQ9YWN0dWFsX2Ry
aXZlcl9vdXRwdXQucGlkKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGI5ZGNmODYxYjVlNGUzNWQyMjAzODgwM2RkOTg5MzZj
MjFmOTI3ZTYuLjM1ZjBiM2ZmOGU2MjBiMzQyNjg3YThjODkzZDg5ZmNkZWFjYzAyODAgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxOSBAQAorMjAyMC0wOC0xMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5j
b20+CisKKyAgICAgICAgTGF5b3V0VGVzdCBhY2Nlc3NpYmlsaXR5L21hYy9zZWxlY3QtZWxlbWVu
dC1zZWxlY3Rpb24td2l0aC1vcHRncm91cHMuaHRtbCBpcyBhIGZsYWt5IGZhaWx1cmUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTM0MQorCisgICAg
ICAgIFJldmlld2VkIGJ5IENocmlzIEZsZWl6YWNoLgorCisgICAgICAgICogcGxhdGZvcm0vbWFj
LXdrMS9UZXN0RXhwZWN0YXRpb25zOiBGaXhlZCBleHBlY3RhdGlvbiBmb3IgYW5vdGhlciBhY2Nl
c3NpYmlsaXR5IHRlc3QsCisgICAgICAgIGFjY2Vzc2liaWxpdHkvbWFjL2V4cGFuZGVkLW5vdGlm
aWNhdGlvbi5odG1sIHRvIGV4cGVjdCBmbGFraW5lc3MsIG5vdCBmYWlsdXJlLCBiZWNhdXNlIHRo
YXQncworICAgICAgICB3aGF0IHRoZSBidWcgdGhhdCB3ZW50IGFsb25nIHdpdGggdGhpcyBleHBl
Y3RhdGlvbiBzYWlkLCBhbmQgaW5kZWVkIHRoZSB0ZXN0IG9mdGVuIHBhc3Nlcy4KKworICAgICAg
ICAqIHBsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9uczogUmVtb3ZlZCBmbGFraW5lc3Mg
ZXhwZWN0YXRpb24gZm9yCisgICAgICAgIGFjY2Vzc2liaWxpdHkvbWFjL3NlbGVjdC1lbGVtZW50
LXNlbGVjdGlvbi13aXRoLW9wdGdyb3Vwcy5odG1sLCBzaW5jZSBpdCdzIG5vdyBmaXhlZC4KKyAg
ICAgICAgRml4ZWQgYSAid2Via2tpdC5vcmciIHR5cG8sIHdoaWNoIGNhdXNlZCB0aGUgZXhwZWN0
YXRpb24gZm9yCisgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL2Zhc3Qtc2Nyb2xsLW1h
aW5mcmFtZS16b29tLmh0bWwgdG8gbm90IHdvcmsgYXMgZXhwZWN0ZWQuCisKIDIwMjAtMDgtMTEg
IEtlbm5ldGggUnVzc2VsbCAgPGtickBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1dlYkdMMl0g
ZXhwYW5kby1sb3NzIGFuZCBleHBhbmRvLWxvc3MtMiBjb25mb3JtYW5jZSB0ZXN0cyBhcmUgZmFp
bGluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0
YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCmlu
ZGV4IGRhNDhlZmFlOTUwNzY5YWE0YzU0ODRjZTgxNDEwY2ViMmIwYjJiZTAuLmM1NjljOGFjZDA0
ZjJlNDQyMjMyNzU4OGU3ODI0ZTQxZDAxZjhjYWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTg1NCw3ICs4NTQsNyBAQCBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL3N0YWxlLXdoaWxlLXJldmFsaWRhdGUgWyBTa2lw
IF0KIAogd2Via2l0Lm9yZy9iLzIwNTQxMiBbIE1vamF2ZSBEZWJ1ZyBdIHdlYmdsLzEuMC4zL2Nv
bmZvcm1hbmNlL3JlbmRlcmluZy9tYW55LWRyYXctY2FsbHMuaHRtbCBbIFRpbWVvdXQgXQogCi13
ZWJraXQub3JnL2IvMjA1NDEwIFsgRGVidWcgXSBhY2Nlc3NpYmlsaXR5L21hYy9leHBhbmRlZC1u
b3RpZmljYXRpb24uaHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIwNTQxMCBbIERlYnVn
IF0gYWNjZXNzaWJpbGl0eS9tYWMvZXhwYW5kZWQtbm90aWZpY2F0aW9uLmh0bWwgWyBQYXNzIEZh
aWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMjA2MDcxIGVkaXRpbmcvc3BlbGxpbmcvZ3JhbW1hci5o
dG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMjA2MDcxIGVkaXRpbmcvc3BlbGxpbmcvbWFya2Vy
cy5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sy
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBl
Y3RhdGlvbnMKaW5kZXggODRlY2I0MWE3ODkwNTA4NmVhZjkyYjFiZDgwYWNhMzc0MTkxOWMwMy4u
MTRjYWZlNWUzZDRhNTY1YTZmNmEyYzQ0NTE2NGZhYWU0YTVmZmI4ZCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNjUzLDggKzY1Myw2IEBA
IHdlYmtpdC5vcmcvYi8xNzM4NjEgWyBSZWxlYXNlIF0gaHR0cC90ZXN0cy93ZWJydGMvZmlsdGVy
aW5nLWljZS1jYW5kaWRhdGUtY3Jvc3MtCiAKIHdlYmtpdC5vcmcvYi8xNzIxNDggdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5mcmFt
ZS12ZXJ0aWNhbC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzE3NTM0MSBh
Y2Nlc3NpYmlsaXR5L21hYy9zZWxlY3QtZWxlbWVudC1zZWxlY3Rpb24td2l0aC1vcHRncm91cHMu
aHRtbCBbIFBhc3MgRmFpbHVyZSBdCi0KIHdlYmtpdC5vcmcvYi8xNzIwNDQgWyBEZWJ1ZyBdIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL29wZW4tcmVxdWVzdC1xdWV1
ZS5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIAogd2Via2l0Lm9yZy9iLzE3Mzc3OSBbIERlYnVnIF0g
ZmFzdC9zY3JvbGxpbmcvYXJyb3cta2V5LXNjcm9sbC1pbi1ydGwtZG9jdW1lbnQuaHRtbCBbIFBh
c3MgRmFpbHVyZSBdCkBAIC0xMDg2LDcgKzEwODQsNyBAQCB3ZWJraXQub3JnL2IvMjE0NTc0IFsg
UmVsZWFzZSBdIHN2Zy9hbmltYXRpb25zL3NtaWwtbGVhay1saXN0LXByb3BlcnR5LWluc3RhbmNl
cwogCiB3ZWJraXQub3JnL2IvMjE0NTc5IFsgUmVsZWFzZSBdIHN2Zy9hbmltYXRpb25zL3NtaWwt
bGVhay1lbGVtZW50LWluc3RhbmNlcy5zdmcgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJra2l0Lm9y
Zy9iLzIxNDY1MSBbIERlYnVnIF0gdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvZmFzdC1zY3JvbGwt
bWFpbmZyYW1lLXpvb20uaHRtbCBbIFBhc3MgQ3Jhc2ggXQord2Via2l0Lm9yZy9iLzIxNDY1MSBb
IERlYnVnIF0gdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvZmFzdC1zY3JvbGwtbWFpbmZyYW1lLXpv
b20uaHRtbCBbIFBhc3MgQ3Jhc2ggXQogCiB3ZWJraXQub3JnL2IvMjE0NjYxIFsgRGVidWcgXSBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENTY3RwVHJhbnNwb3J0LWV2
ZW50cy5odG1sIFsgUGFzcyBDcmFzaCBdCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>