<?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>108180</bug_id>
          
          <creation_ts>2013-01-29 04:58:05 -0800</creation_ts>
          <short_desc>Cleanup: Normalize ExceptionCode handling.</short_desc>
          <delta_ts>2013-03-01 05:53:53 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>108766</dependson>
    
    <dependson>108769</dependson>
    
    <dependson>108770</dependson>
    
    <dependson>108771</dependson>
    
    <dependson>108772</dependson>
    
    <dependson>108773</dependson>
    
    <dependson>108921</dependson>
    
    <dependson>109044</dependson>
    
    <dependson>109143</dependson>
    
    <dependson>109187</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mike West">mkwst</reporter>
          <assigned_to name="Mike West">mkwst</assigned_to>
          <cc>alecflett</cc>
    
    <cc>ap</cc>
    
    <cc>arv</cc>
    
    <cc>dgrogan</cc>
    
    <cc>d-r</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>eric</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>fmalita</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jochen</cc>
    
    <cc>jsbell</cc>
    
    <cc>mifenton</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>pdr</cc>
    
    <cc>rakuco</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>schenney</cc>
    
    <cc>tkent</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>WebkitBugTracker</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yong.li.webkit</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>818841</commentid>
    <comment_count>0</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-01-29 04:58:05 -0800</bug_when>
    <thetext>To ease the progress of my ongoing &quot;sed-driven development&quot;, I&apos;d like to normalize WebKit&apos;s handling of ExceptionCodes. Specifically, I would like:

* every callsite that might throw an exception to create ExceptionCode variables named &quot;ec&quot; (90% already do, the rest are &quot;exception&quot;, &quot;exceptionCode&quot;, &quot;code&quot;, and so on).
* ExceptionCode member variables to be named &quot;m_ec&quot;.
* every callsite that ignored exceptions to create ExceptionCode variables named &quot;ignoredException&quot; (~50% do; it&apos;s a wash between &quot;unused&quot;, &quot;ignored&quot;, and others).
* every method that accepts a pass-by-reference ExceptionCode to do so as &quot;ExceptionCode&amp; ec&quot; (positioning of the &quot;&amp;&quot; is variable).

If anything else pops up, I&apos;ll note it here. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818846</commentid>
    <comment_count>1</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-01-29 05:04:18 -0800</bug_when>
    <thetext>* ExceptionCodes should always be initialized to 0, even if they&apos;re (currently) ignored.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818925</commentid>
    <comment_count>2</comment_count>
      <attachid>185239</attachid>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-01-29 07:15:51 -0800</bug_when>
    <thetext>Created attachment 185239
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818927</commentid>
    <comment_count>3</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-01-29 07:20:11 -0800</bug_when>
    <thetext>Hi, Alexey. Apologies in advance, but you seem like a brilliant place to start for a review on this patch. I hope it mostly codifies practices that were already more or less in place in the code, and will make my (eventual) work on https://bugs.webkit.org/show_bug.cgi?id=98050 (which I haven&apos;t forgotten!) a bit simpler in the future.

I&apos;ll find reviewers for the port-specific portions of the patch, but I&apos;d appreciate you reviewing the general concept, and the WebKit2 bits in particular.

Thanks!

---

Jochen, perhaps you could skim the Chromium bits?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818942</commentid>
    <comment_count>4</comment_count>
      <attachid>185239</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-29 07:46:54 -0800</bug_when>
    <thetext>Comment on attachment 185239
Patch

Attachment 185239 did not pass win-ews (win):
Output: http://queues.webkit.org/results/16200190</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818975</commentid>
    <comment_count>5</comment_count>
      <attachid>185239</attachid>
    <who name="">jochen</who>
    <bug_when>2013-01-29 08:35:31 -0800</bug_when>
    <thetext>Comment on attachment 185239
Patch

the chromium bits look good</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819029</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-29 09:50:24 -0800</bug_when>
    <thetext>I&apos;m not sure if this is a win.  At least not all at once.  You shoudl also be aware of our ASSERT_NO_EXCEPTION object (or it may be named silghtly differnetly) which you pass instead of an ExceptionCode and it asserts that it came back 0.  Many of these callers were written before such existed.

I&apos;m not a huge fan of m_ec over m_exceptionCode.

Since these are mostly mechanical, I would have done these one at a time.  Or less in one patch.  That&apos;s less controvertial.  For example, I would easily r+ a patch which set all of these to 0 on initialization as you&apos;ve done.

That said... Arv (I think?) had an earlier patch which made exception codes classes and got rid of the actual integer value for many of them since newer DOM exceptions have no associated int and thus we are careful not to expose it... iirc.  If ExceptionCode was a class, it could have a constructor which did the inititalization anyway. :)

I guesss my point is that a larger cleanup patch like this is easy to bikeshed about.  Smaller single-idea patches are going to be much easier for someone to rubber stamp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819050</commentid>
    <comment_count>7</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2013-01-29 10:08:47 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; That said... Arv (I think?) had an earlier patch which made exception codes classes and got rid of the actual integer value for many of them since newer DOM exceptions have no associated int and thus we are careful not to expose it... iirc.  If ExceptionCode was a class, it could have a constructor which did the inititalization anyway. :)

That was actually Mike too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819059</commentid>
    <comment_count>8</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-01-29 10:15:52 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; That said... Arv (I think?) had an earlier patch which made exception codes classes and got rid of the actual integer value for many of them since newer DOM exceptions have no associated int and thus we are careful not to expose it... iirc.  If ExceptionCode was a class, it could have a constructor which did the inititalization anyway. :)
&gt; 
&gt; That was actually Mike too.

Right. I think Arv is (correct me if I&apos;m wrong) replacing the ExceptionCode enum with one that doesn&apos;t directly encode the ID of the DOM exception. I&apos;m in the process of figuring out how to replace the enum with a class without double-digit perf regressions. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819061</commentid>
    <comment_count>9</comment_count>
      <attachid>185239</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-01-29 10:16:28 -0800</bug_when>
    <thetext>Comment on attachment 185239
Patch

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

&gt; Source/WebCore/ChangeLog:18
&gt; +        - Member variables are named &apos;m_ec&apos;.

I&apos;m with Eric here, this seems questionable.

&gt; Source/WebCore/ChangeLog:26
&gt; +        - ExceptionCode variables are always initialized to 0, even if they&apos;re
&gt; +          not (yet) used to throw exceptions.

What is the win here? The rule has been that any code that cares about exceptionCode initializes it, and code that doesn&apos;t care doesn&apos;t initialize.

&gt; Source/WebCore/Modules/websockets/WebSocketChannel.cpp:429
&gt; -                    ExceptionCode ec; // Exception (for sandboxed documents) ignored.
&gt; +                    ExceptionCode ec = 0; // Exception (for sandboxed documents) ignored.

You were renaming these to ignoredExpection.

&gt; Source/WebCore/dom/ContainerNode.cpp:-219
&gt; -    if (ExceptionCode code = checkAcceptChild(newParent, newChild, 0)) {
&gt; -        ec = code;
&gt; +    ec = checkAcceptChild(newParent, newChild, 0);
&gt; +    if (ec)
&gt;          return false;
&gt; -    }

This was strange code. The change may be correct (depends on call sites), but it&apos;s definitely not mechanical.

&gt; Source/WebCore/dom/ContainerNode.cpp:-229
&gt; -    if (ExceptionCode code = checkAcceptChild(newParent, newChild, oldChild)) {
&gt; -        ec = code;
&gt; +    ec = checkAcceptChild(newParent, newChild, oldChild);
&gt; +    if (ec)
&gt;          return false;
&gt; -    }

Ditto.

&gt; Source/WebCore/dom/Document.cpp:2849
&gt; +            ExceptionCode ec = 0; // Exception (for sandboxed documents) ignored.

ignoredException

&gt; Source/WebCore/dom/Node.cpp:629
&gt; -            ExceptionCode ec;
&gt; +            ExceptionCode ec = 0;
&gt;              text-&gt;appendData(nextText-&gt;data(), ec);
&gt;              document()-&gt;textNodesMerged(nextText.get(), offset);
&gt;              nextText-&gt;remove(ec);

The usefulness of this initialization is particularly questionable, given that ex is not reset to 0 before the remove() call.

&gt; Source/WebCore/editing/AlternativeTextController.cpp:710
&gt; +    ExceptionCode ec = 0;

ignoredException.

&gt; Source/WebCore/editing/CompositeEditCommand.cpp:898
&gt; +    ExceptionCode ec = 0;

And so on... As Eric said, most of these may actually be cases for ASSERT_NO_EXCEPTION.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819081</commentid>
    <comment_count>10</comment_count>
      <attachid>185239</attachid>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-01-29 10:34:30 -0800</bug_when>
    <thetext>Comment on attachment 185239
Patch

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

(In reply to comment #6)
&gt; I&apos;m not sure if this is a win.  At least not all at once.  You shoudl also be aware of our ASSERT_NO_EXCEPTION object (or it may be named silghtly differnetly) which you pass instead of an ExceptionCode and it asserts that it came back 0.  Many of these callers were written before such existed.

I&apos;d like to make use of that, but without knowing the intentions of the original authors, it&apos;s difficult to just insert ASSERTions willy-nilly. Some of the places where the exceptions are ignored might very well have assertions as their meaning, but others might mean &quot;I don&apos;t care, just do this thing.&quot;

&gt; I&apos;m not a huge fan of m_ec over m_exceptionCode.

If I had a dollar for every time I wasn&apos;t a fan of someone arguing for &quot;Consistency&quot;... :) But sure, I recognize that that might be controversial.

&gt; Since these are mostly mechanical, I would have done these one at a time.  Or less in one patch.  That&apos;s less controvertial.  For example, I would easily r+ a patch which set all of these to 0 on initialization as you&apos;ve done.

I can certainly split this out into multiple patches. Part of the reason I put these changes into one patch was the fact that they&apos;re fairly interrelated: if I change `ExceptionCode e;` to `ExceptionCode ec = 0;`, it just makes sense to do it in one step rather than two.

Given the ~5 changes I&apos;m making here, which would you like to see split out for further discussion? &quot;All five&quot; is a valid answer, of course. :)

---

&gt;&gt; Source/WebCore/ChangeLog:18
&gt;&gt; +        - Member variables are named &apos;m_ec&apos;.
&gt; 
&gt; I&apos;m with Eric here, this seems questionable.

I&apos;ll split it out to argue about it. My argument will be that we&apos;ve tacitly decided on &apos;ec&apos; as a naming convention for stored exception codes, which makes spelling out &apos;exceptionCode&apos; in certain circumstances (or shortening to &apos;code&apos; or the like) the exception (ha!) rather than the role.

&gt;&gt; Source/WebCore/ChangeLog:26
&gt;&gt; +          not (yet) used to throw exceptions.
&gt; 
&gt; What is the win here? The rule has been that any code that cares about exceptionCode initializes it, and code that doesn&apos;t care doesn&apos;t initialize.

1) Uninitialized variables are a bad habit. I subscribe to the broken windows theory of coding. :)
2) If/when we change our minds about ignoring these exceptions, missing initializations are a possible source of error.

What&apos;s the downside to making the change?

&gt;&gt; Source/WebCore/Modules/websockets/WebSocketChannel.cpp:429
&gt;&gt; +                    ExceptionCode ec = 0; // Exception (for sandboxed documents) ignored.
&gt; 
&gt; You were renaming these to ignoredExpection.

I renamed the ones I noticed. Thanks for catching a few that I didn&apos;t; I&apos;ll ensure they&apos;re changed on the next pass.

&gt;&gt; Source/WebCore/dom/ContainerNode.cpp:-219
&gt;&gt; -    }
&gt; 
&gt; This was strange code. The change may be correct (depends on call sites), but it&apos;s definitely not mechanical.

Arg. I did mean to call these two out as particularly non-mechanical.

These were the only instances of this pattern, and it seemed particularly strange. The change I&apos;ve made has the side effect of setting `ec` to 0 if there&apos;s no exception, which didn&apos;t happen in the existing code. My assumption is that that would be a no-op, but you&apos;re right: I&apos;ll check the call sites to be sure.

&gt;&gt; Source/WebCore/dom/Node.cpp:629
&gt;&gt;              nextText-&gt;remove(ec);
&gt; 
&gt; The usefulness of this initialization is particularly questionable, given that ex is not reset to 0 before the remove() call.

This is likely another case where renaming to `ignoredException` would be reasonable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823800</commentid>
    <comment_count>11</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-02-03 02:54:30 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; I guesss my point is that a larger cleanup patch like this is easy to bikeshed about.  Smaller single-idea patches are going to be much easier for someone to rubber stamp.

I&apos;ll start breaking this up into smaller patches, as you&apos;re right: some of the changes aren&apos;t as universally appreciated as I thought they&apos;d be. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823834</commentid>
    <comment_count>12</comment_count>
      <attachid>185239</attachid>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-02-03 05:57:56 -0800</bug_when>
    <thetext>Comment on attachment 185239
Patch

Dropping r? in favor of the following bugs:

http://wkbug.com/108766 for the non-mechanical change in ContainerNode::checkXxxChild().
http://wkbug.com/108769 for pass-by-reference style.
http://wkbug.com/108770 for assignment.
http://wkbug.com/108771 for making ignored exceptions explicit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826384</commentid>
    <comment_count>13</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-02-06 06:10:35 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 185239 [details])
&gt; Dropping r? in favor of the following bugs:
&gt; 
&gt; http://wkbug.com/108766 for the non-mechanical change in ContainerNode::checkXxxChild().
&gt; http://wkbug.com/108769 for pass-by-reference style.
&gt; http://wkbug.com/108770 for assignment.
&gt; http://wkbug.com/108771 for making ignored exceptions explicit.

http://wkbug.com/109044 for replacing ExceptionCode assertions with the ASSERT_NO_EXCEPTION macro.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185239</attachid>
            <date>2013-01-29 07:15:51 -0800</date>
            <delta_ts>2013-02-03 05:57:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108180-20130129161236.patch</filename>
            <type>text/plain</type>
            <size>156027</size>
            <attacher name="Mike West">mkwst</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMDk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjM1YTJiNzRiN2EyZjc5
MDViNDAzZWJmNGM5NTVlNmI5MTc5YzdhMi4uYWFhYjJjM2M1YzQ4ZjIzMzRlYWU2NTcxOGQ4NjZk
YWVjNjBmN2JmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2OCBAQAorMjAxMy0wMS0yOSAgTWlr
ZSBXZXN0ICA8bWt3c3RAY2hyb21pdW0ub3JnPgorCisgICAgICAgIENsZWFudXA6IE5vcm1hbGl6
ZSBFeGNlcHRpb25Db2RlIGhhbmRsaW5nLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA4MTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBhIHF1YXNpLW1lY2hhbmljYWwgcGF0Y2ggdGhhdCBj
bGVhbnMgdXAgRXhjZXB0aW9uQ29kZSBoYW5kbGluZworICAgICAgICBpbiBzaXggd2F5czoKKwor
ICAgICAgICAtIENhbGxzaXRlcyB0aGF0IHRocm93IGV4Y2VwdGlvbnMgbmFtZSB0aGUgbG9jYWwg
dmFyaWFibGUgJ2VjJyB0aGlzCisgICAgICAgICAgd2FzIGFscmVhZHkgdGhlIGNhc2UgZm9yIHRo
ZSBtYWpvcml0eSBvZiB0aGUgY2FsbHNpdGVzKS4KKworICAgICAgICAtIENhbGxzaXRlcyB0aGF0
IHN3YWxsb3cgdGhlIGV4Y2VwdGlvbiBuYW1lIHRoZSBsb2NhbCB2YXJpYWJsZQorICAgICAgICAg
ICdpZ25vcmVkRXhjZXB0aW9uJyAodGhpcyB3YXMgbGVzcyBjb25zaXN0ZW50LCBidXQgJ2lnbm9y
ZWRFeGNlcHRpb24nCisgICAgICAgICAgd2FzIGVhc2lseSB0aGUgbW9zdCBwb3B1bGFyIHZhcmlh
bnQpLgorCisgICAgICAgIC0gTWVtYmVyIHZhcmlhYmxlcyBhcmUgbmFtZWQgJ21fZWMnLgorCisg
ICAgICAgIC0gRXhjZXB0aW9uQ29kZSBwYXJhbWV0ZXJzIGFyZSAoYWxsKSBuYW1lZCAnZWMnLgor
CisgICAgICAgIC0gUGFzcy1ieS1yZWZlcmVuY2UgcGFyYW1ldGVycyBhcmUgd3JpdHRlbiAnRXhj
ZXB0aW9uQ29kZSYgZWMnLCBub3QKKyAgICAgICAgICAnRXhjZXB0aW9uQ29kZSAmZWMnLgorCisg
ICAgICAgIC0gRXhjZXB0aW9uQ29kZSB2YXJpYWJsZXMgYXJlIGFsd2F5cyBpbml0aWFsaXplZCB0
byAwLCBldmVuIGlmIHRoZXkncmUKKyAgICAgICAgICBub3QgKHlldCkgdXNlZCB0byB0aHJvdyBl
eGNlcHRpb25zLgorCisgICAgICAgIFRoZXJlIHNob3VsZCBiZSB6ZXJvIHdlYi12aXNpYmxlIGVm
ZmVjdHMgZnJvbSB0aGlzIGNoYW5nZSwgc28gbm8gdGVzdAorICAgICAgICBjaGFuZ2VzIGFyZSBp
bmNsdWRlZCBpbiB0aGlzIHBhdGNoOyB0aGF0IHNhaWQsIHdlYiBkZXZlbG9wZXJzIF9taWdodF8K
KyAgICAgICAgYnJpZWZseSBleHBlcmllbmNlIG90aGVyd2lzZSB1bmV4cGxhaW5hYmxlIGVsYXRp
b24uCisKKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vU3luY0NhbGxiYWNrSGVscGVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpTeW5jQ2FsbGJhY2tIZWxwZXI6OlN5bmNDYWxsYmFja0hlbHBl
cik6CisgICAgICAgIChXZWJDb3JlOjpTeW5jQ2FsbGJhY2tIZWxwZXI6OmdldFJlc3VsdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTeW5jQ2FsbGJhY2tIZWxwZXI6OnNldEVycm9yKToKKyAgICAgICAg
KFN5bmNDYWxsYmFja0hlbHBlcik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVx
dWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OnVuY2F1Z2h0RXhjZXB0aW9uSW5FdmVudEhh
bmRsZXIpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpzdG9wKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
OjpvcGVuQW5kVmVyaWZ5VmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6cGVy
Zm9ybU9wZW5BbmRWZXJpZnkpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6b3BlbkRh
dGFiYXNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGFzay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6RGF0YWJhc2VPcGVuVGFzazo6RGF0YWJhc2VP
cGVuVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6RGF0YWJhc2VPcGVuVGFzazo6
ZG9QZXJmb3JtVGFzayk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRh
c2suaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpEYXRhYmFzZU9wZW5UYXNrOjpjcmVh
dGUpOgorICAgICAgICAoRGF0YWJhc2U6OkRhdGFiYXNlT3BlblRhc2spOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZGF0YWJhc2UvU1FMUmVzdWx0U2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNR
TFJlc3VsdFNldDo6aW5zZXJ0SWQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FM
VHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OmV4ZWN1
dGVTUUwpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NCdWZmZXIpOgor
ICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNr
QWRkQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tSZXBsYWNlQ2hpbGQpOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cHJvY2Vz
c0h0dHBFcXVpdik6CisgICAgICAgICogZG9tL0V4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6RXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyOjpvcGVyYXRvciBFeGNl
cHRpb25Db2RlJiApOgorICAgICAgICAoRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlcjo6RXhjZXB0aW9uQ29kZVBsYWNl
aG9sZGVyKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
Ojpub3JtYWxpemUpOgorICAgICAgICAqIGRvbS9UZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRleHQ6OnJlcGxhY2VXaG9sZVRleHQpOgorICAgICAgICAqIGVkaXRpbmcvQWx0ZXJuYXRpdmVU
ZXh0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyOjppbnNlcnREaWN0YXRlZFRleHQpOgorICAgICAgICAqIGVkaXRpbmcvQXBwZW5kTm9k
ZUNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwZW5kTm9kZUNvbW1hbmQ6OmRvQXBw
bHkpOgorICAgICAgICAoV2ViQ29yZTo6QXBwZW5kTm9kZUNvbW1hbmQ6OmRvVW5hcHBseSk6Cisg
ICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6aW5zZXJ0TmV3RGVmYXVsdFBhcmFncmFwaEVsZW1l
bnRBdCk6CisgICAgICAgICogZWRpdGluZy9EZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQ6OmRvVW5hcHBseSk6
CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
OjpjYW5EZWxldGVSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnBhc3RlQXNQbGFp
blRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwYXN0ZUFzRnJhZ21lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzaG91bGREZWxldGVSYW5nZSk6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0b3I6OmRpc3BhdGNoQ1BQRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6ZGlzcGF0
Y2hFZGl0YWJsZUNvbnRlbnRDaGFuZ2VkRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6c2V0Q29tcG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjphcHBseUVkaXRp
bmdTdHlsZVRvRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjppc0ZyYW1lSW5SYW5nZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmNvdW50TWF0Y2hlc0ZvclRleHQpOgorICAgICAgICAq
IGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlRm9y
bWF0QmxvY2spOgorICAgICAgICAqIGVkaXRpbmcvRm9ybWF0QmxvY2tDb21tYW5kLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZvcm1hdEJsb2NrQ29tbWFuZDo6ZWxlbWVudEZvckZvcm1hdEJsb2Nr
Q29tbWFuZCk6CisgICAgICAgICogZWRpdGluZy9JbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQ6OmRvQXBwbHkp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZDo6ZG9VbmFwcGx5
KToKKyAgICAgICAgKiBlZGl0aW5nL0luc2VydExpc3RDb21tYW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc2VydExpc3RDb21tYW5kOjpkb0FwcGx5Rm9yU2luZ2xlUGFyYWdyYXBoKToKKyAg
ICAgICAgKiBlZGl0aW5nL0luc2VydE5vZGVCZWZvcmVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc2VydE5vZGVCZWZvcmVDb21tYW5kOjpkb0FwcGx5KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc2VydE5vZGVCZWZvcmVDb21tYW5kOjpkb1VuYXBwbHkpOgorICAgICAgICAqIGVkaXRp
bmcvTWFya3VwQWNjdW11bGF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwQWNjdW11
bGF0b3I6OmFwcGVuZE5vZGVWYWx1ZSk6CisgICAgICAgICogZWRpdGluZy9SZW1vdmVDU1NQcm9w
ZXJ0eUNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3ZlQ1NTUHJvcGVydHlDb21t
YW5kOjpkb0FwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW92ZUNTU1Byb3BlcnR5Q29tbWFu
ZDo6ZG9VbmFwcGx5KToKKyAgICAgICAgKiBlZGl0aW5nL1JlbW92ZU5vZGVDb21tYW5kLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbW92ZU5vZGVDb21tYW5kOjpkb0FwcGx5KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbW92ZU5vZGVDb21tYW5kOjpkb1VuYXBwbHkpOgorICAgICAgICAqIGVkaXRp
bmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92ZVJlZHVuZGFudFN0eWxlc0FuZEtlZXBTdHlsZVNwYW5J
bmxpbmUpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ0hlbHBlcjo6aXNVbmdyYW1tYXRpY2FsKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ0hlbHBlcjo6Z3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVu
Z3JhbW1hdGljYWxSYW5nZSk6CisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpnZXRMb2NhdGlvbkFuZExlbmd0aEZyb21S
YW5nZSk6CisgICAgICAgICogZWRpdGluZy9XcmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5kOjpl
eGVjdXRlQXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6V3JhcENvbnRlbnRzSW5EdW1teVNwYW5D
b21tYW5kOjpkb1VuYXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcvaHRtbGVkaXRpbmcuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y29tcGFyZVBvc2l0aW9ucyk6CisgICAgICAgICogZWRpdGluZy9t
YWMvRWRpdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpmb250Rm9yU2VsZWN0
aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6cmVuZGVyZWRUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjpzdHJpbmdWYWx1ZUZvclJhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6OmhpZ2hlc3RBbmNlc3RvclRvV3JhcE1hcmt1cCk6CisgICAgICAgIChXZWJDb3Jl
OjpyZW1vdmVFbGVtZW50UHJlc2VydmluZ0NoaWxkcmVuKToKKyAgICAgICAgKiBodG1sL0ZUUERp
cmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZUUERpcmVjdG9yeURvY3Vt
ZW50UGFyc2VyOjphcHBlbmRFbnRyeSk6CisgICAgICAgIChXZWJDb3JlOjpGVFBEaXJlY3RvcnlE
b2N1bWVudFBhcnNlcjo6Y3JlYXRlVERGb3JGaWxlbmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpG
VFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmNyZWF0ZUJhc2ljRG9jdW1l
bnQpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjpyZXdpbmQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6cmV0dXJuVG9SZWFsdGltZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjpwbGF5SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6cGVyY2VudExvYWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjptZWRpYVBsYXllclRpbWVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhUGxheWVyRHVyYXRpb25DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OmFwcGx5TWVkaWFGcmFnbWVudFVSSSk6CisgICAgICAgICogaHRtbC9I
VE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbnND
b2xsZWN0aW9uOjphZGQpOgorICAgICAgICAqIGh0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE91dHB1dEVsZW1lbnQ6OnNldFRleHRDb250ZW50SW50ZXJu
YWwpOgorICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnJlbW92ZSk6CisgICAgICAgICogaHRtbC9IVE1MVGFi
bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUVsZW1lbnQ6OmNyZWF0
ZVRIZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUVsZW1lbnQ6OmRlbGV0ZVRIZWFk
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUVsZW1lbnQ6OmNyZWF0ZVRGb290KToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUVsZW1lbnQ6OmRlbGV0ZVRGb290KToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUYWJsZUVsZW1lbnQ6OmNyZWF0ZUNhcHRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRhYmxlRWxlbWVudDo6ZGVsZXRlQ2FwdGlvbik6CisgICAgICAgICogaHRtbC9I
VE1MVGV4dEFyZWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVs
ZW1lbnQ6OnNldERlZmF1bHRWYWx1ZSk6CisgICAgICAgICogaHRtbC9JbWFnZURvY3VtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRG9jdW1lbnQ6OmNyZWF0ZURvY3VtZW50U3RydWN0
dXJlKToKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnB1dFR5cGU6OnN0ZXBVcEZyb21SZW5kZXJlcik6CisgICAgICAgICogaHRtbC9NZWRpYUNvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpzZXRDdXJyZW50VGltZSk6Cisg
ICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OnNldFZvbHVtZSk6CisgICAgICAgIChNZWRpYUNvbnRy
b2xsZXI6OmJyaW5nRWxlbWVudFVwVG9TcGVlZCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6
OmFzeW5jRXZlbnRUaW1lckZpcmVkKToKKyAgICAgICAgKiBodG1sL01lZGlhRG9jdW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEb2N1bWVudFBhcnNlcjo6Y3JlYXRlRG9jdW1lbnRT
dHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEb2N1bWVudDo6cmVwbGFjZU1lZGlh
RWxlbWVudFRpbWVyRmlyZWQpOgorICAgICAgICAqIGh0bWwvUGx1Z2luRG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZURvY3VtZW50U3Ry
dWN0dXJlKToKKyAgICAgICAgKiBodG1sL1JhbmdlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpoYW5kbGVLZXlkb3duRXZlbnQpOgorICAgICAgICAqIGh0
bWwvVGltZVJhbmdlcy5jcHA6CisgICAgICAgIChUaW1lUmFuZ2VzOjpjb250YWluKToKKyAgICAg
ICAgKFRpbWVSYW5nZXM6Om5lYXJlc3QpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OmRyYXdJbWFnZUZyb21SZWN0KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xFbGVtZW50VHlwZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9s
U2Vla0J1dHRvbkVsZW1lbnQ6OnNlZWtUaW1lckZpcmVkKToKKyAgICAgICAgKiBodG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRy
b2xQYW5lbEVsZW1lbnQ6OnNldFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
dHJvbFBhbmVsRWxlbWVudDo6cmVzZXRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xTdGF0dXNEaXNwbGF5RWxlbWVudDo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50OjpkZWZhdWx0RXZl
bnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1
bWVNaW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50OjpkZWZhdWx0
RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHM6OnVwZGF0ZUN1cnJlbnRUaW1lRGlzcGxh
eSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzOjpjcmVhdGVUZXh0VHJhY2tEaXNw
bGF5KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0FwcGxlOjpjcmVhdGVDb250cm9scyk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQXBwbGU6OnVwZGF0ZUN1cnJlbnRUaW1lRGlzcGxh
eSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0JsYWNrQmVycnkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ6OnNldFBv
c2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxFbGVt
ZW50OjpyZXNldFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxz
Y3JlZW5UaW1lbGluZUVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb250cm9sc0JsYWNrQmVycnk6OmNyZWF0ZUNvbnRyb2xzKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFja0JlcnJ5Ojp1cGRhdGVDdXJyZW50VGltZURpc3Bs
YXkpOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbHNDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQ2hyb21pdW06OmluaXRpYWxpemVDb250cm9s
cyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQ2hyb21pdW06OnVwZGF0ZUN1cnJl
bnRUaW1lRGlzcGxheSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0Nocm9t
aXVtQW5kcm9pZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQ2hyb21pdW1B
bmRyb2lkOjpjcmVhdGVDb250cm9scyk6CisgICAgICAgICogaHRtbC90cmFjay9JbmJhbmRUZXh0
VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrOjphZGRHZW5lcmlj
Q3VlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxp
c3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpzZXRET01TdG9yYWdl
SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OnJlbW92
ZURPTVN0b3JhZ2VJdGVtKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JIaXN0b3J5OjptYXJrVW5kb2FibGVTdGF0
ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6cmVwbGF5WEhSKToKKyAgICAg
ICAgKiBwYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKToKKyAgICAgICAg
KiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkaWRBZGRTdG9yYWdlRXZl
bnRMaXN0ZW5lcik6CisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpkb2N1bWVudEZyYWdtZW50RnJvbURyYWdEYXRhKToKKyAgICAgICAgKiBwYWdl
L0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRpc3Bh
dGNoRHJhZ0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6a2V5RXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVUZXh0SW5wdXRFdmVudCk6
CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmZpbmRT
dHJpbmdNYXRjaGluZ1Jhbmdlcyk6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1l
RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjpwYWludE1lZGlhU2xp
ZGVyVHJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQ
bGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGU6OnBlcmNlbnRMb2FkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9SZW5kZXJU
aGVtZUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRp
YVNsaWRlclRyYWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmdldERhdGFTZWxlY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6ZG9jdW1lbnRGcmFnbWVudFdpdGhJbWFnZVJlc291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmRvY3VtZW50RnJhZ21lbnQpOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tOgorICAgICAg
ICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIHNldEN1cnJlbnRUaW1l
Ol0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIHNl
dFZvbHVtZTpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUXQ6OnBhaW50TWVkaWFTbGlkZXJUcmFjayk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmdldFJhbmdlcyk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVN
YWM6OnBhaW50TWVkaWFTbGlkZXJUcmFjayk6CisgICAgICAgICogc3ZnL1NWR1RSZWZFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RSZWZFbGVtZW50OjpkZXRhY2hUYXJnZXQpOgor
ICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxI
dHRwUmVxdWVzdDo6WE1MSHR0cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJl
cXVlc3Q6OnNlbmRGcm9tSW5zcGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1
ZXN0OjpjcmVhdGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0Ojpk
aWRGYWlsKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRUaW1lb3V0KToK
KyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuaDoKKyAgICAgICAgKFhNTEh0dHBSZXF1ZXN0
KToKKyAgICAgICAgKiB4bWwvWE1MVHJlZVZpZXdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpY
TUxUcmVlVmlld2VyOjp0cmFuc2Zvcm1Eb2N1bWVudFRvVHJlZVZpZXcpOgorICAgICAgICAqIHht
bC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlhNTERvY3VtZW50UGFyc2VyOjplbmRFbGVtZW50TnMpOgorICAgICAgICAqIHhtbC9wYXJzZXIv
WE1MRG9jdW1lbnRQYXJzZXJRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBh
cnNlcjo6cGFyc2VFbmRFbGVtZW50KToKKwogMjAxMy0wMS0yOSAgRXVnZW5lIEtseXVjaG5pa292
ICA8ZXVzdGFzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBbQ1BVIFBy
b2ZpbGVdIFRha2luZyBwcm9maWxlIGNyYXNoZXMgcmVuZGVyZXIuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L0NoYW5nZUxvZwppbmRleCA0NDUxNzdiMmE4NTZjNDlhOWFiZjQ2YTg5MGI0MTM5NDkxNmZhZjc3
Li5kN2VjNTE3ODE4NTJlODU5NDExZWZmMDQyMTU0ZGQ3MTAzZmZkNzJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxMy0wMS0yOSAgTWlrZSBXZXN0
ICA8bWt3c3RAY2hyb21pdW0ub3JnPgorCisgICAgICAgIENsZWFudXA6IE5vcm1hbGl6ZSBFeGNl
cHRpb25Db2RlIGhhbmRsaW5nLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTA4MTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBpcyBhIHF1YXNpLW1lY2hhbmljYWwgcGF0Y2ggdGhhdCBjbGVhbnMg
dXAgRXhjZXB0aW9uQ29kZSBoYW5kbGluZworICAgICAgICBpbiBzaXggd2F5czoKKworICAgICAg
ICAtIENhbGxzaXRlcyB0aGF0IHRocm93IGV4Y2VwdGlvbnMgbmFtZSB0aGUgbG9jYWwgdmFyaWFi
bGUgJ2VjJyB0aGlzCisgICAgICAgICAgd2FzIGFscmVhZHkgdGhlIGNhc2UgZm9yIHRoZSBtYWpv
cml0eSBvZiB0aGUgY2FsbHNpdGVzKS4KKworICAgICAgICAtIENhbGxzaXRlcyB0aGF0IHN3YWxs
b3cgdGhlIGV4Y2VwdGlvbiBuYW1lIHRoZSBsb2NhbCB2YXJpYWJsZQorICAgICAgICAgICdpZ25v
cmVkRXhjZXB0aW9uJyAodGhpcyB3YXMgbGVzcyBjb25zaXN0ZW50LCBidXQgJ2lnbm9yZWRFeGNl
cHRpb24nCisgICAgICAgICAgd2FzIGVhc2lseSB0aGUgbW9zdCBwb3B1bGFyIHZhcmlhbnQpLgor
CisgICAgICAgIC0gTWVtYmVyIHZhcmlhYmxlcyBhcmUgbmFtZWQgJ21fZWMnLgorCisgICAgICAg
IC0gRXhjZXB0aW9uQ29kZSBwYXJhbWV0ZXJzIGFyZSAoYWxsKSBuYW1lZCAnZWMnLgorCisgICAg
ICAgIC0gUGFzcy1ieS1yZWZlcmVuY2UgcGFyYW1ldGVycyBhcmUgd3JpdHRlbiAnRXhjZXB0aW9u
Q29kZSYgZWMnLCBub3QKKyAgICAgICAgICAnRXhjZXB0aW9uQ29kZSAmZWMnLgorCisgICAgICAg
IC0gRXhjZXB0aW9uQ29kZSB2YXJpYWJsZXMgYXJlIGFsd2F5cyBpbml0aWFsaXplZCB0byAwLCBl
dmVuIGlmIHRoZXkncmUKKyAgICAgICAgICBub3QgKHlldCkgdXNlZCB0byB0aHJvdyBleGNlcHRp
b25zLgorCisgICAgICAgIFRoZXJlIHNob3VsZCBiZSB6ZXJvIHdlYi12aXNpYmxlIGVmZmVjdHMg
ZnJvbSB0aGlzIGNoYW5nZSwgc28gbm8gdGVzdAorICAgICAgICBjaGFuZ2VzIGFyZSBpbmNsdWRl
ZCBpbiB0aGlzIHBhdGNoOyB0aGF0IHNhaWQsIHdlYiBkZXZlbG9wZXJzIF9taWdodF8KKyAgICAg
ICAgYnJpZWZseSBleHBlcmllbmNlIG90aGVyd2lzZSB1bmV4cGxhaW5hYmxlIGVsYXRpb24uCisK
KyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxlci5jcHA6CisgICAgICAgIChCbGFj
a0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6c2VsZWN0aW9uUG9zaXRpb24pOgorCiAyMDEz
LTAxLTI4ICBBbmRyZXcgTG8gIDxhbmxvQHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVycnld
IFNtYWxsIGFuaW1hdGVkIHpvb20gbGV2ZWwgYWRqdXN0bWVudHMgYXJlIHVubmVjZXNzYXJ5CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDIwMTJlYjVjMDM3ODdiZTExZTJiZGIyZDdkNzI2
MmZlYTQwNzdjMjMuLjM3YTM4ZWJkNGU5NjdjNjJhMjViYTNlODYzNTZlN2Q1YzQ1ZjQ3NTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTMtMDEtMjkgIE1p
a2UgV2VzdCAgPG1rd3N0QGNocm9taXVtLm9yZz4KKworICAgICAgICBDbGVhbnVwOiBOb3JtYWxp
emUgRXhjZXB0aW9uQ29kZSBoYW5kbGluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwODE4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgYSBxdWFzaS1tZWNoYW5pY2FsIHBhdGNoIHRoYXQg
Y2xlYW5zIHVwIEV4Y2VwdGlvbkNvZGUgaGFuZGxpbmcKKyAgICAgICAgaW4gc2l4IHdheXM6CisK
KyAgICAgICAgLSBDYWxsc2l0ZXMgdGhhdCB0aHJvdyBleGNlcHRpb25zIG5hbWUgdGhlIGxvY2Fs
IHZhcmlhYmxlICdlYycgdGhpcworICAgICAgICAgIHdhcyBhbHJlYWR5IHRoZSBjYXNlIGZvciB0
aGUgbWFqb3JpdHkgb2YgdGhlIGNhbGxzaXRlcykuCisKKyAgICAgICAgLSBDYWxsc2l0ZXMgdGhh
dCBzd2FsbG93IHRoZSBleGNlcHRpb24gbmFtZSB0aGUgbG9jYWwgdmFyaWFibGUKKyAgICAgICAg
ICAnaWdub3JlZEV4Y2VwdGlvbicgKHRoaXMgd2FzIGxlc3MgY29uc2lzdGVudCwgYnV0ICdpZ25v
cmVkRXhjZXB0aW9uJworICAgICAgICAgIHdhcyBlYXNpbHkgdGhlIG1vc3QgcG9wdWxhciB2YXJp
YW50KS4KKworICAgICAgICAtIE1lbWJlciB2YXJpYWJsZXMgYXJlIG5hbWVkICdtX2VjJy4KKwor
ICAgICAgICAtIEV4Y2VwdGlvbkNvZGUgcGFyYW1ldGVycyBhcmUgKGFsbCkgbmFtZWQgJ2VjJy4K
KworICAgICAgICAtIFBhc3MtYnktcmVmZXJlbmNlIHBhcmFtZXRlcnMgYXJlIHdyaXR0ZW4gJ0V4
Y2VwdGlvbkNvZGUmIGVjJywgbm90CisgICAgICAgICAgJ0V4Y2VwdGlvbkNvZGUgJmVjJy4KKwor
ICAgICAgICAtIEV4Y2VwdGlvbkNvZGUgdmFyaWFibGVzIGFyZSBhbHdheXMgaW5pdGlhbGl6ZWQg
dG8gMCwgZXZlbiBpZiB0aGV5J3JlCisgICAgICAgICAgbm90ICh5ZXQpIHVzZWQgdG8gdGhyb3cg
ZXhjZXB0aW9ucy4KKworICAgICAgICBUaGVyZSBzaG91bGQgYmUgemVybyB3ZWItdmlzaWJsZSBl
ZmZlY3RzIGZyb20gdGhpcyBjaGFuZ2UsIHNvIG5vIHRlc3QKKyAgICAgICAgY2hhbmdlcyBhcmUg
aW5jbHVkZWQgaW4gdGhpcyBwYXRjaDsgdGhhdCBzYWlkLCB3ZWIgZGV2ZWxvcGVycyBfbWlnaHRf
CisgICAgICAgIGJyaWVmbHkgZXhwZXJpZW5jZSBvdGhlcndpc2UgdW5leHBsYWluYWJsZSBlbGF0
aW9uLgorCisgICAgICAgICogc3JjL1dlYkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJFbGVtZW50OjpzZXRBdHRyaWJ1dGUpOgorICAgICAgICAqIHNyYy9XZWJGcmFtZUltcGwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpmcmFtZUNvbnRlbnRBc1BsYWluVGV4dCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lSW1wbDo6ZmluZENoaWxkQnlFeHByZXNzaW9uKToKKyAgICAgICAgKFdl
YktpdDo6V2ViRnJhbWVJbXBsOjpzZXRNYXJrZXJBY3RpdmUpOgorICAgICAgICAqIHNyYy9XZWJO
b2RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTm9kZTo6c2V0Tm9kZVZhbHVlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTm9kZTo6YXBwZW5kQ2hpbGQpOgorICAgICAgICAoV2ViS2l0OjpXZWJO
b2RlOjpyZW1vdmUpOgorICAgICAgICAqIHNyYy9tYWMvV2ViU3Vic3RyaW5nVXRpbC5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU3Vic3RyaW5nVXRpbDo6YXR0cmlidXRlZFN1YnN0cmluZ0luUmFu
Z2UpOgorCiAyMDEzLTAxLTI5ICBLZWlzaGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFtDaHJvbWl1bV0gRGlzYWJsaW5nIFdlYkZyYW1lVGVzdC5EaXNhbWJpZ3VhdGlv
blBvcHVwTW9iaWxlU2l0ZSBiZWNhdXNlIFdlYkZyYW1lVGVzdCBpcyBzdGlsbCBmYWlsaW5nIGFm
dGVyIHIxNDEwNzMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggM2U4YWJlOWM0ZjYyODQwMDYxZGRlZDY0
YmQyMzMyMjQ4NDNlOGZiYi4uM2NmZjBmNjBiN2FmN2MxYzAyYjY4OTIwZTU2ODQ3MDhhODU2NGRl
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEzLTAxLTI5ICBNaWtlIFdl
c3QgIDxta3dzdEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ2xlYW51cDogTm9ybWFsaXplIEV4
Y2VwdGlvbkNvZGUgaGFuZGxpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDgxODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIGlzIGEgcXVhc2ktbWVjaGFuaWNhbCBwYXRjaCB0aGF0IGNsZWFu
cyB1cCBFeGNlcHRpb25Db2RlIGhhbmRsaW5nCisgICAgICAgIGluIHNpeCB3YXlzOgorCisgICAg
ICAgIC0gQ2FsbHNpdGVzIHRoYXQgdGhyb3cgZXhjZXB0aW9ucyBuYW1lIHRoZSBsb2NhbCB2YXJp
YWJsZSAnZWMnIHRoaXMKKyAgICAgICAgICB3YXMgYWxyZWFkeSB0aGUgY2FzZSBmb3IgdGhlIG1h
am9yaXR5IG9mIHRoZSBjYWxsc2l0ZXMpLgorCisgICAgICAgIC0gQ2FsbHNpdGVzIHRoYXQgc3dh
bGxvdyB0aGUgZXhjZXB0aW9uIG5hbWUgdGhlIGxvY2FsIHZhcmlhYmxlCisgICAgICAgICAgJ2ln
bm9yZWRFeGNlcHRpb24nICh0aGlzIHdhcyBsZXNzIGNvbnNpc3RlbnQsIGJ1dCAnaWdub3JlZEV4
Y2VwdGlvbicKKyAgICAgICAgICB3YXMgZWFzaWx5IHRoZSBtb3N0IHBvcHVsYXIgdmFyaWFudCku
CisKKyAgICAgICAgLSBNZW1iZXIgdmFyaWFibGVzIGFyZSBuYW1lZCAnbV9lYycuCisKKyAgICAg
ICAgLSBFeGNlcHRpb25Db2RlIHBhcmFtZXRlcnMgYXJlIChhbGwpIG5hbWVkICdlYycuCisKKyAg
ICAgICAgLSBQYXNzLWJ5LXJlZmVyZW5jZSBwYXJhbWV0ZXJzIGFyZSB3cml0dGVuICdFeGNlcHRp
b25Db2RlJiBlYycsIG5vdAorICAgICAgICAgICdFeGNlcHRpb25Db2RlICZlYycuCisKKyAgICAg
ICAgLSBFeGNlcHRpb25Db2RlIHZhcmlhYmxlcyBhcmUgYWx3YXlzIGluaXRpYWxpemVkIHRvIDAs
IGV2ZW4gaWYgdGhleSdyZQorICAgICAgICAgIG5vdCAoeWV0KSB1c2VkIHRvIHRocm93IGV4Y2Vw
dGlvbnMuCisKKyAgICAgICAgVGhlcmUgc2hvdWxkIGJlIHplcm8gd2ViLXZpc2libGUgZWZmZWN0
cyBmcm9tIHRoaXMgY2hhbmdlLCBzbyBubyB0ZXN0CisgICAgICAgIGNoYW5nZXMgYXJlIGluY2x1
ZGVkIGluIHRoaXMgcGF0Y2g7IHRoYXQgc2FpZCwgd2ViIGRldmVsb3BlcnMgX21pZ2h0XworICAg
ICAgICBicmllZmx5IGV4cGVyaWVuY2Ugb3RoZXJ3aXNlIHVuZXhwbGFpbmFibGUgZWxhdGlvbi4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6
CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNlbGVjdGVkUmFuZ2UpOgorCiAy
MDEzLTAxLTI4ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCiAg
ICAgICAgIFtUZXhNYXBdIEVuYWJsZSBkZWJ1ZyBib3JkZXJzIGFuZCByZXBhaW50IGNvdW50ZXIg
dmlhIFNldHRpbmdzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IDEwNzdmOWRhOGJlYWRlZTEwYjUyYTFi
NTc1ZTcxMTVhMzk1ZDVmOWUuLjk1YTY1YTc0ZTJkMzIyZGJhOTMzNDk5YmNjYTAzY2NlMDM1MjE5
OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxMy0wMS0yOSAgTWlrZSBX
ZXN0ICA8bWt3c3RAY2hyb21pdW0ub3JnPgorCisgICAgICAgIENsZWFudXA6IE5vcm1hbGl6ZSBF
eGNlcHRpb25Db2RlIGhhbmRsaW5nLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTA4MTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBpcyBhIHF1YXNpLW1lY2hhbmljYWwgcGF0Y2ggdGhhdCBjbGVh
bnMgdXAgRXhjZXB0aW9uQ29kZSBoYW5kbGluZworICAgICAgICBpbiBzaXggd2F5czoKKworICAg
ICAgICAtIENhbGxzaXRlcyB0aGF0IHRocm93IGV4Y2VwdGlvbnMgbmFtZSB0aGUgbG9jYWwgdmFy
aWFibGUgJ2VjJyB0aGlzCisgICAgICAgICAgd2FzIGFscmVhZHkgdGhlIGNhc2UgZm9yIHRoZSBt
YWpvcml0eSBvZiB0aGUgY2FsbHNpdGVzKS4KKworICAgICAgICAtIENhbGxzaXRlcyB0aGF0IHN3
YWxsb3cgdGhlIGV4Y2VwdGlvbiBuYW1lIHRoZSBsb2NhbCB2YXJpYWJsZQorICAgICAgICAgICdp
Z25vcmVkRXhjZXB0aW9uJyAodGhpcyB3YXMgbGVzcyBjb25zaXN0ZW50LCBidXQgJ2lnbm9yZWRF
eGNlcHRpb24nCisgICAgICAgICAgd2FzIGVhc2lseSB0aGUgbW9zdCBwb3B1bGFyIHZhcmlhbnQp
LgorCisgICAgICAgIC0gTWVtYmVyIHZhcmlhYmxlcyBhcmUgbmFtZWQgJ21fZWMnLgorCisgICAg
ICAgIC0gRXhjZXB0aW9uQ29kZSBwYXJhbWV0ZXJzIGFyZSAoYWxsKSBuYW1lZCAnZWMnLgorCisg
ICAgICAgIC0gUGFzcy1ieS1yZWZlcmVuY2UgcGFyYW1ldGVycyBhcmUgd3JpdHRlbiAnRXhjZXB0
aW9uQ29kZSYgZWMnLCBub3QKKyAgICAgICAgICAnRXhjZXB0aW9uQ29kZSAmZWMnLgorCisgICAg
ICAgIC0gRXhjZXB0aW9uQ29kZSB2YXJpYWJsZXMgYXJlIGFsd2F5cyBpbml0aWFsaXplZCB0byAw
LCBldmVuIGlmIHRoZXkncmUKKyAgICAgICAgICBub3QgKHlldCkgdXNlZCB0byB0aHJvdyBleGNl
cHRpb25zLgorCisgICAgICAgIFRoZXJlIHNob3VsZCBiZSB6ZXJvIHdlYi12aXNpYmxlIGVmZmVj
dHMgZnJvbSB0aGlzIGNoYW5nZSwgc28gbm8gdGVzdAorICAgICAgICBjaGFuZ2VzIGFyZSBpbmNs
dWRlZCBpbiB0aGlzIHBhdGNoOyB0aGF0IHNhaWQsIHdlYiBkZXZlbG9wZXJzIF9taWdodF8KKyAg
ICAgICAgYnJpZWZseSBleHBlcmllbmNlIG90aGVyd2lzZSB1bmV4cGxhaW5hYmxlIGVsYXRpb24u
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3Bw
OgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZWxlY3RlZFJhbmdlKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnNldFZvbHVtZSk6CisgICAgICAgIChG
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpzZXRDdXJyZW50VGltZSk6CisKIDIwMTMtMDEtMjgg
IEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgW1Rl
eE1hcF0gRW5hYmxlIGRlYnVnIGJvcmRlcnMgYW5kIHJlcGFpbnQgY291bnRlciB2aWEgU2V0dGlu
Z3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvcXQvQ2hhbmdlTG9nCmluZGV4IDM3YzA1YzMwMTRlOTNlZTdiYjFmMjc2ZGNiMzlkZWRjYWMw
Njg1NTYuLmI0OWFmYTk1ZmFkZGQ4YjM3MWY5NTM0NDEyMDM2YjIwMzNkYTg3OTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTMgQEAKKzIwMTMtMDEtMjkgIE1pa2UgV2VzdCAgPG1rd3N0QGNo
cm9taXVtLm9yZz4KKworICAgICAgICBDbGVhbnVwOiBOb3JtYWxpemUgRXhjZXB0aW9uQ29kZSBo
YW5kbGluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwODE4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoaXMgaXMgYSBxdWFzaS1tZWNoYW5pY2FsIHBhdGNoIHRoYXQgY2xlYW5zIHVwIEV4Y2VwdGlv
bkNvZGUgaGFuZGxpbmcKKyAgICAgICAgaW4gc2l4IHdheXM6CisKKyAgICAgICAgLSBDYWxsc2l0
ZXMgdGhhdCB0aHJvdyBleGNlcHRpb25zIG5hbWUgdGhlIGxvY2FsIHZhcmlhYmxlICdlYycgdGhp
cworICAgICAgICAgIHdhcyBhbHJlYWR5IHRoZSBjYXNlIGZvciB0aGUgbWFqb3JpdHkgb2YgdGhl
IGNhbGxzaXRlcykuCisKKyAgICAgICAgLSBDYWxsc2l0ZXMgdGhhdCBzd2FsbG93IHRoZSBleGNl
cHRpb24gbmFtZSB0aGUgbG9jYWwgdmFyaWFibGUKKyAgICAgICAgICAnaWdub3JlZEV4Y2VwdGlv
bicgKHRoaXMgd2FzIGxlc3MgY29uc2lzdGVudCwgYnV0ICdpZ25vcmVkRXhjZXB0aW9uJworICAg
ICAgICAgIHdhcyBlYXNpbHkgdGhlIG1vc3QgcG9wdWxhciB2YXJpYW50KS4KKworICAgICAgICAt
IE1lbWJlciB2YXJpYWJsZXMgYXJlIG5hbWVkICdtX2VjJy4KKworICAgICAgICAtIEV4Y2VwdGlv
bkNvZGUgcGFyYW1ldGVycyBhcmUgKGFsbCkgbmFtZWQgJ2VjJy4KKworICAgICAgICAtIFBhc3Mt
YnktcmVmZXJlbmNlIHBhcmFtZXRlcnMgYXJlIHdyaXR0ZW4gJ0V4Y2VwdGlvbkNvZGUmIGVjJywg
bm90CisgICAgICAgICAgJ0V4Y2VwdGlvbkNvZGUgJmVjJy4KKworICAgICAgICAtIEV4Y2VwdGlv
bkNvZGUgdmFyaWFibGVzIGFyZSBhbHdheXMgaW5pdGlhbGl6ZWQgdG8gMCwgZXZlbiBpZiB0aGV5
J3JlCisgICAgICAgICAgbm90ICh5ZXQpIHVzZWQgdG8gdGhyb3cgZXhjZXB0aW9ucy4KKworICAg
ICAgICBUaGVyZSBzaG91bGQgYmUgemVybyB3ZWItdmlzaWJsZSBlZmZlY3RzIGZyb20gdGhpcyBj
aGFuZ2UsIHNvIG5vIHRlc3QKKyAgICAgICAgY2hhbmdlcyBhcmUgaW5jbHVkZWQgaW4gdGhpcyBw
YXRjaDsgdGhhdCBzYWlkLCB3ZWIgZGV2ZWxvcGVycyBfbWlnaHRfCisgICAgICAgIGJyaWVmbHkg
ZXhwZXJpZW5jZSBvdGhlcndpc2UgdW5leHBsYWluYWJsZSBlbGF0aW9uLgorCisgICAgICAgICog
QXBpL3F3ZWJlbGVtZW50LmNwcDoKKyAgICAgICAgKFFXZWJFbGVtZW50OjpmaW5kRmlyc3QpOgor
ICAgICAgICAoUVdlYkVsZW1lbnQ6OnNldFBsYWluVGV4dCk6CisgICAgICAgIChRV2ViRWxlbWVu
dDo6c2V0T3V0ZXJYbWwpOgorICAgICAgICAoUVdlYkVsZW1lbnQ6OnNldElubmVyWG1sKToKKyAg
ICAgICAgKFFXZWJFbGVtZW50OjpzZXRBdHRyaWJ1dGUpOgorICAgICAgICAoUVdlYkVsZW1lbnQ6
OnNldEF0dHJpYnV0ZU5TKToKKyAgICAgICAgKFFXZWJFbGVtZW50OjphcHBlbmRJbnNpZGUpOgor
ICAgICAgICAoUVdlYkVsZW1lbnQ6OnByZXBlbmRJbnNpZGUpOgorICAgICAgICAoUVdlYkVsZW1l
bnQ6OnByZXBlbmRPdXRzaWRlKToKKyAgICAgICAgKFFXZWJFbGVtZW50OjphcHBlbmRPdXRzaWRl
KToKKyAgICAgICAgKFFXZWJFbGVtZW50Ojp0YWtlRnJvbURvY3VtZW50KToKKyAgICAgICAgKFFX
ZWJFbGVtZW50OjpyZW1vdmVGcm9tRG9jdW1lbnQpOgorICAgICAgICAoUVdlYkVsZW1lbnQ6OmVu
Y2xvc2VDb250ZW50c1dpdGgpOgorICAgICAgICAoUVdlYkVsZW1lbnQ6OmVuY2xvc2VXaXRoKToK
KyAgICAgICAgKFFXZWJFbGVtZW50Q29sbGVjdGlvblByaXZhdGU6OmNyZWF0ZSk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAo
RHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNlbGVjdGVkUmFuZ2UpOgorCiAyMDEzLTAxLTI4ICBI
dWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAgIFtUZXhN
YXBdIEVuYWJsZSBkZWJ1ZyBib3JkZXJzIGFuZCByZXBhaW50IGNvdW50ZXIgdmlhIFNldHRpbmdz
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nCmluZGV4IDJmODQ3YzcxMDQ4MmYzMTk3MjAwNGEwYWFjNWU4NDgzMzVm
ODkwMzcuLjZmMDgwYjM0MmU1NjcyOGM3ZTIxNmE1MDJjMDk2ZGY4YjRhYWE0YWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAxMy0wMS0yOSAgTWlrZSBXZXN0ICA8bWt3c3RA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIENsZWFudXA6IE5vcm1hbGl6ZSBFeGNlcHRpb25Db2Rl
IGhhbmRsaW5nLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTA4MTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBpcyBhIHF1YXNpLW1lY2hhbmljYWwgcGF0Y2ggdGhhdCBjbGVhbnMgdXAgRXhjZXB0
aW9uQ29kZSBoYW5kbGluZworICAgICAgICBpbiBzaXggd2F5czoKKworICAgICAgICAtIENhbGxz
aXRlcyB0aGF0IHRocm93IGV4Y2VwdGlvbnMgbmFtZSB0aGUgbG9jYWwgdmFyaWFibGUgJ2VjJyB0
aGlzCisgICAgICAgICAgd2FzIGFscmVhZHkgdGhlIGNhc2UgZm9yIHRoZSBtYWpvcml0eSBvZiB0
aGUgY2FsbHNpdGVzKS4KKworICAgICAgICAtIENhbGxzaXRlcyB0aGF0IHN3YWxsb3cgdGhlIGV4
Y2VwdGlvbiBuYW1lIHRoZSBsb2NhbCB2YXJpYWJsZQorICAgICAgICAgICdpZ25vcmVkRXhjZXB0
aW9uJyAodGhpcyB3YXMgbGVzcyBjb25zaXN0ZW50LCBidXQgJ2lnbm9yZWRFeGNlcHRpb24nCisg
ICAgICAgICAgd2FzIGVhc2lseSB0aGUgbW9zdCBwb3B1bGFyIHZhcmlhbnQpLgorCisgICAgICAg
IC0gTWVtYmVyIHZhcmlhYmxlcyBhcmUgbmFtZWQgJ21fZWMnLgorCisgICAgICAgIC0gRXhjZXB0
aW9uQ29kZSBwYXJhbWV0ZXJzIGFyZSAoYWxsKSBuYW1lZCAnZWMnLgorCisgICAgICAgIC0gUGFz
cy1ieS1yZWZlcmVuY2UgcGFyYW1ldGVycyBhcmUgd3JpdHRlbiAnRXhjZXB0aW9uQ29kZSYgZWMn
LCBub3QKKyAgICAgICAgICAnRXhjZXB0aW9uQ29kZSAmZWMnLgorCisgICAgICAgIC0gRXhjZXB0
aW9uQ29kZSB2YXJpYWJsZXMgYXJlIGFsd2F5cyBpbml0aWFsaXplZCB0byAwLCBldmVuIGlmIHRo
ZXkncmUKKyAgICAgICAgICBub3QgKHlldCkgdXNlZCB0byB0aHJvdyBleGNlcHRpb25zLgorCisg
ICAgICAgIFRoZXJlIHNob3VsZCBiZSB6ZXJvIHdlYi12aXNpYmxlIGVmZmVjdHMgZnJvbSB0aGlz
IGNoYW5nZSwgc28gbm8gdGVzdAorICAgICAgICBjaGFuZ2VzIGFyZSBpbmNsdWRlZCBpbiB0aGlz
IHBhdGNoOyB0aGF0IHNhaWQsIHdlYiBkZXZlbG9wZXJzIF9taWdodF8KKyAgICAgICAgYnJpZWZs
eSBleHBlcmllbmNlIG90aGVyd2lzZSB1bmV4cGxhaW5hYmxlIGVsYXRpb24uCisKKyAgICAgICAg
KiBET01DU1NDbGFzc2VzLmNwcDoKKyAgICAgICAgKERPTUNTU1N0eWxlRGVjbGFyYXRpb246OnNl
dENzc1RleHQpOgorICAgICAgICAqIERPTUNvcmVDbGFzc2VzLmNwcDoKKyAgICAgICAgKERPTU5v
ZGU6Omluc2VydEJlZm9yZSk6CisgICAgICAgIChET01Ob2RlOjpyZW1vdmVDaGlsZCk6CisgICAg
ICAgIChET01Eb2N1bWVudDo6Y3JlYXRlRWxlbWVudCk6CisgICAgICAgICogRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlci5jcHA6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpz
ZXRWb2x1bWUpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6c2V0Q3VycmVu
dFRpbWUpOgorCiAyMDEzLTAxLTI3ICBab2x0YW4gQXJ2YWkgIDx6YXJ2YWlAaW5mLnUtc3plZ2Vk
Lmh1PgogCiAgICAgICAgIEZpeGluZyBhdG9taWNJbmNyZW1lbnQgaW1wbGVtZW50YXRpb24gZm9y
IFdpbmRvd3MgYnkgZHJvcHBpbmcgc3VwcG9ydCBiZWZvcmUgWFAgU1AyLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4
IGY3YjliNDhkYWIxMDI3NDQ2ZTY0NmExYzFlZmE0ZTQxOTQ2YTI3OTIuLjY1ZmM2MDI1Mjg5M2Zk
MDg5MzYxNzFmYjM5NGFmNTM2YjViNzg5YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAor
MjAxMy0wMS0yOSAgTWlrZSBXZXN0ICA8bWt3c3RAY2hyb21pdW0ub3JnPgorCisgICAgICAgIENs
ZWFudXA6IE5vcm1hbGl6ZSBFeGNlcHRpb25Db2RlIGhhbmRsaW5nLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4MTgwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBhIHF1YXNpLW1lY2hhbmlj
YWwgcGF0Y2ggdGhhdCBjbGVhbnMgdXAgRXhjZXB0aW9uQ29kZSBoYW5kbGluZworICAgICAgICBp
biBzaXggd2F5czoKKworICAgICAgICAtIENhbGxzaXRlcyB0aGF0IHRocm93IGV4Y2VwdGlvbnMg
bmFtZSB0aGUgbG9jYWwgdmFyaWFibGUgJ2VjJyB0aGlzCisgICAgICAgICAgd2FzIGFscmVhZHkg
dGhlIGNhc2UgZm9yIHRoZSBtYWpvcml0eSBvZiB0aGUgY2FsbHNpdGVzKS4KKworICAgICAgICAt
IENhbGxzaXRlcyB0aGF0IHN3YWxsb3cgdGhlIGV4Y2VwdGlvbiBuYW1lIHRoZSBsb2NhbCB2YXJp
YWJsZQorICAgICAgICAgICdpZ25vcmVkRXhjZXB0aW9uJyAodGhpcyB3YXMgbGVzcyBjb25zaXN0
ZW50LCBidXQgJ2lnbm9yZWRFeGNlcHRpb24nCisgICAgICAgICAgd2FzIGVhc2lseSB0aGUgbW9z
dCBwb3B1bGFyIHZhcmlhbnQpLgorCisgICAgICAgIC0gTWVtYmVyIHZhcmlhYmxlcyBhcmUgbmFt
ZWQgJ21fZWMnLgorCisgICAgICAgIC0gRXhjZXB0aW9uQ29kZSBwYXJhbWV0ZXJzIGFyZSAoYWxs
KSBuYW1lZCAnZWMnLgorCisgICAgICAgIC0gUGFzcy1ieS1yZWZlcmVuY2UgcGFyYW1ldGVycyBh
cmUgd3JpdHRlbiAnRXhjZXB0aW9uQ29kZSYgZWMnLCBub3QKKyAgICAgICAgICAnRXhjZXB0aW9u
Q29kZSAmZWMnLgorCisgICAgICAgIC0gRXhjZXB0aW9uQ29kZSB2YXJpYWJsZXMgYXJlIGFsd2F5
cyBpbml0aWFsaXplZCB0byAwLCBldmVuIGlmIHRoZXkncmUKKyAgICAgICAgICBub3QgKHlldCkg
dXNlZCB0byB0aHJvdyBleGNlcHRpb25zLgorCisgICAgICAgIFRoZXJlIHNob3VsZCBiZSB6ZXJv
IHdlYi12aXNpYmxlIGVmZmVjdHMgZnJvbSB0aGlzIGNoYW5nZSwgc28gbm8gdGVzdAorICAgICAg
ICBjaGFuZ2VzIGFyZSBpbmNsdWRlZCBpbiB0aGlzIHBhdGNoOyB0aGF0IHNhaWQsIHdlYiBkZXZl
bG9wZXJzIF9taWdodF8KKyAgICAgICAgYnJpZWZseSBleHBlcmllbmNlIG90aGVyd2lzZSB1bmV4
cGxhaW5hYmxlIGVsYXRpb24uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlSW50ZW50LmNwcDoKKyAgICAgICAgKFdLQnVuZGxlSW50ZW50Q3JlYXRl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01FbGVt
ZW50Lm1tOgorICAgICAgICAoLVtXS0RPTUVsZW1lbnQgc2V0QXR0cmlidXRlOnZhbHVlOl0pOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTU5vZGUubW06
CisgICAgICAgICgtW1dLRE9NTm9kZSBpbnNlcnROb2RlOmJlZm9yZTpdKToKKyAgICAgICAgKC1b
V0tET01Ob2RlIGFwcGVuZENoaWxkOl0pOgorICAgICAgICAoLVtXS0RPTU5vZGUgcmVtb3ZlQ2hp
bGQ6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9N
VGV4dC5tbToKKyAgICAgICAgKC1bV0tET01UZXh0IHNldERhdGE6XSk6CisKIDIwMTMtMDEtMjkg
IENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtH
VEtdIEltcGxlbWVudCByZXNvdXJjZXMgQVBJIHVzaW5nIGluamVjdGVkIGJ1bmRsZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL1N5bmNDYWxsYmFja0hlbHBl
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL1N5bmNDYWxsYmFja0hlbHBl
ci5oCmluZGV4IGQ4NDY5MTY0OTA3YjIzZDQ0ZTA0ODFmNmQxYjBlMGFkMzc5OWFhNmUuLjUyYzkw
MmEzZDgyODE5MDE3Y2Y4YzBhNzdmZDE4ZDRkMDZhOTE0NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9TeW5jQ2FsbGJhY2tIZWxwZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vU3luY0NhbGxiYWNrSGVscGVyLmgKQEAgLTY3
LDcgKzY3LDcgQEAgcHVibGljOgogICAgICAgICA6IG1fb2JzZXJ2ZXIob2JzZXJ2ZXIpCiAgICAg
ICAgICwgbV9zdWNjZXNzQ2FsbGJhY2soU3VjY2Vzc0NhbGxiYWNrSW1wbDo6Y3JlYXRlKHRoaXMp
KQogICAgICAgICAsIG1fZXJyb3JDYWxsYmFjayhFcnJvckNhbGxiYWNrSW1wbDo6Y3JlYXRlKHRo
aXMpKQotICAgICAgICAsIG1fZXhjZXB0aW9uQ29kZSgwKQorICAgICAgICAsIG1fZWMoMCkKICAg
ICAgICAgLCBtX2NvbXBsZXRlZChmYWxzZSkKICAgICB7CiAgICAgfQpAQCAtNzcsMTIgKzc3LDEy
IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKG1fb2JzZXJ2ZXIpIHsKICAgICAgICAgICAgIHdoaWxl
ICghbV9jb21wbGV0ZWQpIHsKICAgICAgICAgICAgICAgICBpZiAoIW1fb2JzZXJ2ZXItPndhaXRG
b3JPcGVyYXRpb25Ub0NvbXBsZXRlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9leGNlcHRp
b25Db2RlID0gRmlsZUV4Y2VwdGlvbjo6QUJPUlRfRVJSOworICAgICAgICAgICAgICAgICAgICBt
X2VjID0gRmlsZUV4Y2VwdGlvbjo6QUJPUlRfRVJSOwogICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAg
ZWMgPSBtX2V4Y2VwdGlvbkNvZGU7CisgICAgICAgIGVjID0gbV9lYzsKICAgICAgICAgcmV0dXJu
IG1fcmVzdWx0LnJlbGVhc2UoKTsKICAgICB9CiAKQEAgLTE0NCw3ICsxNDQsNyBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCBzZXRFcnJvcihpbnQgY29kZSkKICAgICB7Ci0gICAgICAgIG1fZXhjZXB0
aW9uQ29kZSA9IEZpbGVFeGNlcHRpb246OkVycm9yQ29kZVRvRXhjZXB0aW9uQ29kZShjb2RlKTsK
KyAgICAgICAgbV9lYyA9IEZpbGVFeGNlcHRpb246OkVycm9yQ29kZVRvRXhjZXB0aW9uQ29kZShj
b2RlKTsKICAgICAgICAgbV9jb21wbGV0ZWQgPSB0cnVlOwogICAgIH0KIApAQCAtMTU4LDcgKzE1
OCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFN1Y2Nlc3NDYWxsYmFja0ltcGw+IG1fc3VjY2Vz
c0NhbGxiYWNrOwogICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrSW1wbD4gbV9lcnJvckNhbGxiYWNr
OwogICAgIFJlZlB0cjxSZXN1bHRUeXBlPiBtX3Jlc3VsdDsKLSAgICBFeGNlcHRpb25Db2RlIG1f
ZXhjZXB0aW9uQ29kZTsKKyAgICBFeGNlcHRpb25Db2RlIG1fZWM7CiAgICAgYm9vbCBtX2NvbXBs
ZXRlZDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVx
dWVzdC5jcHAKaW5kZXggZjdjNmIyZGU4NGFhZjQ1YTcwYTljNGNmNDA5MjJiYTllOGM2NGVlNy4u
MTBkYjViZmE2MzEzNjgzYmQ2ZjM2MDQ5N2YxOTY3YWM5YjlhOGIwNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKQEAgLTUwMSw4ICs1MDEs
OCBAQCBib29sIElEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZl
bnQpCiAgICAgICAgIC8vIGRvZXNuJ3QgcmVjZWl2ZSBhIHNlY29uZCBlcnJvcikgYW5kIGJlZm9y
ZSBkZWFjdGl2YXRpbmcgKHdoaWNoIG1pZ2h0IHRyaWdnZXIgY29tbWl0KS4KICAgICAgICAgaWYg
KGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmVycm9yRXZlbnQgJiYgZG9udFByZXZlbnRE
ZWZhdWx0ICYmICFtX3JlcXVlc3RBYm9ydGVkKSB7CiAgICAgICAgICAgICBtX3RyYW5zYWN0aW9u
LT5zZXRFcnJvcihtX2Vycm9yLCBtX2Vycm9yTWVzc2FnZSk7Ci0gICAgICAgICAgICBFeGNlcHRp
b25Db2RlIHVudXNlZDsKLSAgICAgICAgICAgIG1fdHJhbnNhY3Rpb24tPmFib3J0KHVudXNlZCk7
CisgICAgICAgICAgICBFeGNlcHRpb25Db2RlIGlnbm9yZWRFeGNlcHRpb24gPSAwOworICAgICAg
ICAgICAgbV90cmFuc2FjdGlvbi0+YWJvcnQoaWdub3JlZEV4Y2VwdGlvbik7CiAgICAgICAgIH0K
IAogICAgICAgICAvLyBJZiB0aGlzIHdhcyB0aGUgbGFzdCByZXF1ZXN0IGluIHRoZSB0cmFuc2Fj
dGlvbidzIGxpc3QsIGl0IG1heSBjb21taXQgaGVyZS4KQEAgLTUyMyw4ICs1MjMsOCBAQCB2b2lk
IElEQlJlcXVlc3Q6OnVuY2F1Z2h0RXhjZXB0aW9uSW5FdmVudEhhbmRsZXIoKQogewogICAgIGlm
IChtX3RyYW5zYWN0aW9uICYmICFtX3JlcXVlc3RBYm9ydGVkKSB7CiAgICAgICAgIG1fdHJhbnNh
Y3Rpb24tPnNldEVycm9yKERPTUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246Omdl
dEVycm9yTmFtZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6QWJvcnRFcnJvcikpLCAiVW5jYXVnaHQg
ZXhjZXB0aW9uIGluIGV2ZW50IGhhbmRsZXIuIik7Ci0gICAgICAgIEV4Y2VwdGlvbkNvZGUgdW51
c2VkOwotICAgICAgICBtX3RyYW5zYWN0aW9uLT5hYm9ydCh1bnVzZWQpOworICAgICAgICBFeGNl
cHRpb25Db2RlIGlnbm9yZWRFeGNlcHRpb24gPSAwOworICAgICAgICBtX3RyYW5zYWN0aW9uLT5h
Ym9ydChpZ25vcmVkRXhjZXB0aW9uKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCBiYjYwYjRlNDdh
NGExMjE5YmI4YWJhZDI2YmQ0OTcxY2YxNWI3YjBhLi42ZmYyNzFmNmFjYzkxMmNhNjJmY2Q4NmIz
N2YzNzI0NjljZmJkY2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC00MjYsOCArNDI2LDggQEAgdm9pZCBJREJUcmFu
c2FjdGlvbjo6c3RvcCgpCiAgICAgQWN0aXZlRE9NT2JqZWN0OjpzdG9wKCk7CiAgICAgbV9jb250
ZXh0U3RvcHBlZCA9IHRydWU7CiAKLSAgICBFeGNlcHRpb25Db2RlIHVudXNlZDsKLSAgICBhYm9y
dCh1bnVzZWQpOworICAgIEV4Y2VwdGlvbkNvZGUgaWdub3JlZEV4Y2VwdGlvbiA9IDA7CisgICAg
YWJvcnQoaWdub3JlZEV4Y2VwdGlvbik7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb246OmVucXVl
dWVFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKaW5kZXggMjU2ZjAyNzZkZTNlMGE4Y2ExYTFk
MDBlZTJmOTA2OTBiOGZkYzcyMC4uNmQ5OTlmZWEyMTIyNTc2MjViMWE0ZGJiZjZlNmE1NzYzYzU4
YzhkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZS5jcHAKQEAgLTEyMCwxNCArMTIwLDE0IEBAIFN0cmluZyBEYXRhYmFzZTo6dmVyc2lvbigpIGNv
bnN0CiAgICAgcmV0dXJuIEFic3RyYWN0RGF0YWJhc2U6OnZlcnNpb24oKTsKIH0KIAotYm9vbCBE
YXRhYmFzZTo6b3BlbkFuZFZlcmlmeVZlcnNpb24oYm9vbCBzZXRWZXJzaW9uSW5OZXdEYXRhYmFz
ZSwgRXhjZXB0aW9uQ29kZSYgZSwgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCitib29sIERhdGFiYXNl
OjpvcGVuQW5kVmVyaWZ5VmVyc2lvbihib29sIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBFeGNl
cHRpb25Db2RlJiBlYywgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7CiAgICAgRGF0YWJhc2VUYXNr
U3luY2hyb25pemVyIHN5bmNocm9uaXplcjsKICAgICBpZiAoIWRhdGFiYXNlQ29udGV4dCgpLT5k
YXRhYmFzZVRocmVhZCgpIHx8IGRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT50
ZXJtaW5hdGlvblJlcXVlc3RlZCgmc3luY2hyb25pemVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7Ci0gICAgT3duUHRyPERhdGFiYXNlT3BlblRh
c2s+IHRhc2sgPSBEYXRhYmFzZU9wZW5UYXNrOjpjcmVhdGUodGhpcywgc2V0VmVyc2lvbkluTmV3
RGF0YWJhc2UsICZzeW5jaHJvbml6ZXIsIGUsIGVycm9yTWVzc2FnZSwgc3VjY2Vzcyk7CisgICAg
T3duUHRyPERhdGFiYXNlT3BlblRhc2s+IHRhc2sgPSBEYXRhYmFzZU9wZW5UYXNrOjpjcmVhdGUo
dGhpcywgc2V0VmVyc2lvbkluTmV3RGF0YWJhc2UsICZzeW5jaHJvbml6ZXIsIGVjLCBlcnJvck1l
c3NhZ2UsIHN1Y2Nlc3MpOwogICAgIGRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgp
LT5zY2hlZHVsZUltbWVkaWF0ZVRhc2sodGFzay5yZWxlYXNlKCkpOwogICAgIHN5bmNocm9uaXpl
ci53YWl0Rm9yVGFza0NvbXBsZXRpb24oKTsKIApAQCAtMTg5LDkgKzE4OSw5IEBAIHVuc2lnbmVk
IGxvbmcgbG9uZyBEYXRhYmFzZTo6bWF4aW11bVNpemUoKSBjb25zdAogICAgIHJldHVybiBEYXRh
YmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5nZXRNYXhTaXplRm9yRGF0YWJhc2UodGhpcyk7CiB9CiAK
LWJvb2wgRGF0YWJhc2U6OnBlcmZvcm1PcGVuQW5kVmVyaWZ5KGJvb2wgc2V0VmVyc2lvbkluTmV3
RGF0YWJhc2UsIEV4Y2VwdGlvbkNvZGUmIGUsIFN0cmluZyYgZXJyb3JNZXNzYWdlKQorYm9vbCBE
YXRhYmFzZTo6cGVyZm9ybU9wZW5BbmRWZXJpZnkoYm9vbCBzZXRWZXJzaW9uSW5OZXdEYXRhYmFz
ZSwgRXhjZXB0aW9uQ29kZSYgZWMsIFN0cmluZyYgZXJyb3JNZXNzYWdlKQogewotICAgIGlmIChB
YnN0cmFjdERhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeShzZXRWZXJzaW9uSW5OZXdEYXRh
YmFzZSwgZSwgZXJyb3JNZXNzYWdlKSkgeworICAgIGlmIChBYnN0cmFjdERhdGFiYXNlOjpwZXJm
b3JtT3BlbkFuZFZlcmlmeShzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwgZWMsIGVycm9yTWVzc2Fn
ZSkpIHsKICAgICAgICAgaWYgKGRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpKQog
ICAgICAgICAgICAgZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCktPnJlY29yZERh
dGFiYXNlT3Blbih0aGlzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCmluZGV4IGZhNDJhZDhjNWNiYWFkNmIxYWQw
ZGYwZDYzMzhlMTEwNThkMTA3ZjcuLmJlYjFmMjc5NGE1ZDBhOGU5NGY1NGIwNGRmMTAzNTAzZmZi
NDA4ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlTWFuYWdlci5jcHAKQEAgLTEyNCw3ICsxMjQsNyBAQCBwcml2YXRlOgogCiBQYXNz
UmVmUHRyPERhdGFiYXNlPiBEYXRhYmFzZU1hbmFnZXI6Om9wZW5EYXRhYmFzZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiBleHBlY3RlZFZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsCi0gICAgdW5z
aWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+IGNy
ZWF0aW9uQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGUpCisgICAgdW5zaWduZWQgbG9uZyBlc3Rp
bWF0ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+IGNyZWF0aW9uQ2FsbGJhY2ss
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICghY2FuRXN0YWJsaXNoRGF0YWJhc2UoY29u
dGV4dCwgbmFtZSwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUpKSB7CiAgICAgICAgIExPRyhT
dG9yYWdlQVBJLCAiRGF0YWJhc2UgJXMgZm9yIG9yaWdpbiAlcyBub3QgYWxsb3dlZCB0byBiZSBl
c3RhYmxpc2hlZCIsIG5hbWUuYXNjaWkoKS5kYXRhKCksIGNvbnRleHQtPnNlY3VyaXR5T3JpZ2lu
KCktPnRvU3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwpAQCAtMTM0LDcgKzEzNCw3IEBAIFBhc3NS
ZWZQdHI8RGF0YWJhc2U+IERhdGFiYXNlTWFuYWdlcjo6b3BlbkRhdGFiYXNlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRlCiAgICAgUmVmUHRyPERhdGFiYXNlPiBkYXRhYmFzZSA9IGFkb3B0
UmVmKG5ldyBEYXRhYmFzZShjb250ZXh0LCBuYW1lLCBleHBlY3RlZFZlcnNpb24sIGRpc3BsYXlO
YW1lLCBlc3RpbWF0ZWRTaXplKSk7CiAKICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlOwotICAgIGlm
ICghZGF0YWJhc2UtPm9wZW5BbmRWZXJpZnlWZXJzaW9uKCFjcmVhdGlvbkNhbGxiYWNrLCBlLCBl
cnJvck1lc3NhZ2UpKSB7CisgICAgaWYgKCFkYXRhYmFzZS0+b3BlbkFuZFZlcmlmeVZlcnNpb24o
IWNyZWF0aW9uQ2FsbGJhY2ssIGVjLCBlcnJvck1lc3NhZ2UpKSB7CiAgICAgICAgIGRhdGFiYXNl
LT5sb2dFcnJvck1lc3NhZ2UoZXJyb3JNZXNzYWdlKTsKICAgICAgICAgRGF0YWJhc2VNYW5hZ2Vy
OjptYW5hZ2VyKCkucmVtb3ZlT3BlbkRhdGFiYXNlKGRhdGFiYXNlLmdldCgpKTsKICAgICAgICAg
cmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlVGFzay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlVGFzay5jcHAKaW5kZXggMDY2NzI1ZmUzNzcyYWE0OGRlMGFkOTllNTEzZDdmOWRmZjJj
ODllMi4uODc0N2EyMjM0M2Y2Y2ZkNjQ0MTBhZTBiZWE5MWNiMDBjY2VhMDVhMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRhc2suY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmNwcApA
QCAtOTgsMTAgKzk4LDEwIEBAIHZvaWQgRGF0YWJhc2VUYXNrOjpwZXJmb3JtVGFzaygpCiAvLyAq
KiogRGF0YWJhc2VPcGVuVGFzayAqKioKIC8vIE9wZW5zIHRoZSBkYXRhYmFzZSBmaWxlIGFuZCB2
ZXJpZmllcyB0aGUgdmVyc2lvbiBtYXRjaGVzIHRoZSBleHBlY3RlZCB2ZXJzaW9uLgogCi1EYXRh
YmFzZTo6RGF0YWJhc2VPcGVuVGFzazo6RGF0YWJhc2VPcGVuVGFzayhEYXRhYmFzZSogZGF0YWJh
c2UsIGJvb2wgc2V0VmVyc2lvbkluTmV3RGF0YWJhc2UsIERhdGFiYXNlVGFza1N5bmNocm9uaXpl
ciogc3luY2hyb25pemVyLCBFeGNlcHRpb25Db2RlJiBjb2RlLCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSwgYm9vbCYgc3VjY2VzcykKK0RhdGFiYXNlOjpEYXRhYmFzZU9wZW5UYXNrOjpEYXRhYmFzZU9w
ZW5UYXNrKERhdGFiYXNlKiBkYXRhYmFzZSwgYm9vbCBzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwg
RGF0YWJhc2VUYXNrU3luY2hyb25pemVyKiBzeW5jaHJvbml6ZXIsIEV4Y2VwdGlvbkNvZGUmIGVj
LCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgYm9vbCYgc3VjY2VzcykKICAgICA6IERhdGFiYXNlVGFz
ayhkYXRhYmFzZSwgc3luY2hyb25pemVyKQogICAgICwgbV9zZXRWZXJzaW9uSW5OZXdEYXRhYmFz
ZShzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSkKLSAgICAsIG1fY29kZShjb2RlKQorICAgICwgbV9l
YyhlYykKICAgICAsIG1fZXJyb3JNZXNzYWdlKGVycm9yTWVzc2FnZSkKICAgICAsIG1fc3VjY2Vz
cyhzdWNjZXNzKQogewpAQCAtMTExLDcgKzExMSw3IEBAIERhdGFiYXNlOjpEYXRhYmFzZU9wZW5U
YXNrOjpEYXRhYmFzZU9wZW5UYXNrKERhdGFiYXNlKiBkYXRhYmFzZSwgYm9vbCBzZXRWZXJzaW9u
CiB2b2lkIERhdGFiYXNlOjpEYXRhYmFzZU9wZW5UYXNrOjpkb1BlcmZvcm1UYXNrKCkKIHsKICAg
ICBTdHJpbmcgZXJyb3JNZXNzYWdlOwotICAgIG1fc3VjY2VzcyA9IGRhdGFiYXNlKCktPnBlcmZv
cm1PcGVuQW5kVmVyaWZ5KG1fc2V0VmVyc2lvbkluTmV3RGF0YWJhc2UsIG1fY29kZSwgZXJyb3JN
ZXNzYWdlKTsKKyAgICBtX3N1Y2Nlc3MgPSBkYXRhYmFzZSgpLT5wZXJmb3JtT3BlbkFuZFZlcmlm
eShtX3NldFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBtX2VjLCBlcnJvck1lc3NhZ2UpOwogICAgIGlm
ICghbV9zdWNjZXNzKQogICAgICAgICBtX2Vycm9yTWVzc2FnZSA9IGVycm9yTWVzc2FnZS5pc29s
YXRlZENvcHkoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VUYXNrLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlVGFzay5oCmluZGV4IGI1YzYxNjVmOGU3MjkyODc0N2Y3ZTYxYjdiZGE4YmY4MDk2
MzhmYWEuLjI1NzNhODk5NTE4NDE5MmU3YjQ3YmRjNDlhZGUwOGQxNDViYWM2MGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRhc2suaApAQCAt
OTksOSArOTksOSBAQCBwcml2YXRlOgogCiBjbGFzcyBEYXRhYmFzZTo6RGF0YWJhc2VPcGVuVGFz
ayA6IHB1YmxpYyBEYXRhYmFzZVRhc2sgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRy
PERhdGFiYXNlT3BlblRhc2s+IGNyZWF0ZShEYXRhYmFzZSogZGIsIGJvb2wgc2V0VmVyc2lvbklu
TmV3RGF0YWJhc2UsIERhdGFiYXNlVGFza1N5bmNocm9uaXplciogc3luY2hyb25pemVyLCBFeGNl
cHRpb25Db2RlJiBjb2RlLCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgYm9vbCYgc3VjY2VzcykKKyAg
ICBzdGF0aWMgUGFzc093blB0cjxEYXRhYmFzZU9wZW5UYXNrPiBjcmVhdGUoRGF0YWJhc2UqIGRi
LCBib29sIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBEYXRhYmFzZVRhc2tTeW5jaHJvbml6ZXIq
IHN5bmNocm9uaXplciwgRXhjZXB0aW9uQ29kZSYgZWMsIFN0cmluZyYgZXJyb3JNZXNzYWdlLCBi
b29sJiBzdWNjZXNzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBEYXRhYmFz
ZU9wZW5UYXNrKGRiLCBzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwgc3luY2hyb25pemVyLCBjb2Rl
LCBlcnJvck1lc3NhZ2UsIHN1Y2Nlc3MpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBE
YXRhYmFzZU9wZW5UYXNrKGRiLCBzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwgc3luY2hyb25pemVy
LCBlYywgZXJyb3JNZXNzYWdlLCBzdWNjZXNzKSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTEz
LDcgKzExMyw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIGJvb2wgbV9zZXRWZXJzaW9uSW5O
ZXdEYXRhYmFzZTsKLSAgICBFeGNlcHRpb25Db2RlJiBtX2NvZGU7CisgICAgRXhjZXB0aW9uQ29k
ZSYgbV9lYzsKICAgICBTdHJpbmcmIG1fZXJyb3JNZXNzYWdlOwogICAgIGJvb2wmIG1fc3VjY2Vz
czsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NR
TFJlc3VsdFNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFJl
c3VsdFNldC5jcHAKaW5kZXggNzNjYjQzMGU1YWM0MzE3M2Q1NTQ2M2M0MWM5OGYzMTE4MjZjMjgx
NS4uYmViYzE4NTFhOWViOWE5ZGQ1YzdhZmJlZTMwMGM3NWU1YWRiMjA2YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxSZXN1bHRTZXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMUmVzdWx0U2V0LmNwcApAQCAt
NDUsMTQgKzQ1LDE0IEBAIFNRTFJlc3VsdFNldDo6U1FMUmVzdWx0U2V0KCkKIHsKIH0KIAotaW50
NjRfdCBTUUxSZXN1bHRTZXQ6Omluc2VydElkKEV4Y2VwdGlvbkNvZGUmIGUpIGNvbnN0CitpbnQ2
NF90IFNRTFJlc3VsdFNldDo6aW5zZXJ0SWQoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB7CiAg
ICAgLy8gNC4xMS40IC0gUmV0dXJuIHRoZSBpZCBvZiB0aGUgbGFzdCByb3cgaW5zZXJ0ZWQgYXMg
YSByZXN1bHQgb2YgdGhlIHF1ZXJ5CiAgICAgLy8gSWYgdGhlIHF1ZXJ5IGRpZG4ndCByZXN1bHQg
aW4gYW55IHJvd3MgYmVpbmcgYWRkZWQsIHJhaXNlIGFuIElOVkFMSURfQUNDRVNTX0VSUiBleGNl
cHRpb24KICAgICBpZiAobV9pbnNlcnRJZFNldCkKICAgICAgICAgcmV0dXJuIG1faW5zZXJ0SWQ7
CiAKLSAgICBlID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgIGVjID0gSU5WQUxJRF9BQ0NFU1Nf
RVJSOwogICAgIHJldHVybiAtMTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcAppbmRleCAzMjU5NzdhOGI3MTM0Zjdm
NWQ1N2ViZDVmM2NjNzcyNzE3YzJjOWY4Li40MjA5OGFhMjkzN2YzNWIyNGY0NTBkMTQzODQ5ZDVk
M2M1ZDg2ZjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L1NRTFRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL1NRTFRyYW5zYWN0aW9uLmNwcApAQCAtOTAsMTAgKzkwLDEwIEBAIFNRTFRyYW5zYWN0aW9u
Ojp+U1FMVHJhbnNhY3Rpb24oKQogICAgIEFTU0VSVCghbV9zcWxpdGVUcmFuc2FjdGlvbik7CiB9
CiAKLXZvaWQgU1FMVHJhbnNhY3Rpb246OmV4ZWN1dGVTUUwoY29uc3QgU3RyaW5nJiBzcWxTdGF0
ZW1lbnQsIGNvbnN0IFZlY3RvcjxTUUxWYWx1ZT4mIGFyZ3VtZW50cywgUGFzc1JlZlB0cjxTUUxT
dGF0ZW1lbnRDYWxsYmFjaz4gY2FsbGJhY2ssIFBhc3NSZWZQdHI8U1FMU3RhdGVtZW50RXJyb3JD
YWxsYmFjaz4gY2FsbGJhY2tFcnJvciwgRXhjZXB0aW9uQ29kZSYgZSkKK3ZvaWQgU1FMVHJhbnNh
Y3Rpb246OmV4ZWN1dGVTUUwoY29uc3QgU3RyaW5nJiBzcWxTdGF0ZW1lbnQsIGNvbnN0IFZlY3Rv
cjxTUUxWYWx1ZT4mIGFyZ3VtZW50cywgUGFzc1JlZlB0cjxTUUxTdGF0ZW1lbnRDYWxsYmFjaz4g
Y2FsbGJhY2ssIFBhc3NSZWZQdHI8U1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjaz4gY2FsbGJhY2tF
cnJvciwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFtX2V4ZWN1dGVTcWxBbGxvd2Vk
IHx8ICFtX2RhdGFiYXNlLT5vcGVuZWQoKSkgewotICAgICAgICBlID0gSU5WQUxJRF9TVEFURV9F
UlI7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXRDaGFubmVsLmNwcAppbmRleCA3MWQ5YzUyMWVmN2MxNjYzNDEwZmI0ZmFlMmVhNGU2ZDFk
YjQxYzlkLi4wNWQ0MmM4Zjk4MGJjMDU3ZDU5Njk4YmJiZDcwYWM3NTVkMjllM2Q2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWwuY3BwCkBAIC00MjYsNyArNDI2LDcgQEAgYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNz
QnVmZmVyKCkKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJl
Y2VpdmVXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZShtX2RvY3VtZW50LCBtX2lkZW50aWZpZXIs
IG1faGFuZHNoYWtlLT5zZXJ2ZXJIYW5kc2hha2VSZXNwb25zZSgpKTsKICAgICAgICAgICAgIGlm
ICghbV9oYW5kc2hha2UtPnNlcnZlclNldENvb2tpZSgpLmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgICAgIGlmIChjb29raWVzRW5hYmxlZChtX2RvY3VtZW50KSkgewotICAgICAgICAgICAgICAg
ICAgICBFeGNlcHRpb25Db2RlIGVjOyAvLyBFeGNlcHRpb24gKGZvciBzYW5kYm94ZWQgZG9jdW1l
bnRzKSBpZ25vcmVkLgorICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsg
Ly8gRXhjZXB0aW9uIChmb3Igc2FuZGJveGVkIGRvY3VtZW50cykgaWdub3JlZC4KICAgICAgICAg
ICAgICAgICAgICAgbV9kb2N1bWVudC0+c2V0Q29va2llKG1faGFuZHNoYWtlLT5zZXJ2ZXJTZXRD
b29raWUoKSwgZWMpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db250YWluZXJOb2RlLmNwcAppbmRleCA4NzNiZjY2Y2M4ODc4MjUxMjEwOWRjMjc5MGIy
YmMxYjgxMWMxZDNmLi4wM2JlMjVlZGFjNjJjNGFiNzNlNGZiMmVkZDcxNmFlYzBhMTZjNzdkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCkBAIC0yMTMsMjEgKzIxMywxOSBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgY2hlY2tBY2NlcHRDaGlsZEd1YXJhbnRlZWROb2RlVHlwZXMoQ29u
dGFpbmVyTm9kZSogbmV3UGFyZW50LAogCiBzdGF0aWMgaW5saW5lIGJvb2wgY2hlY2tBZGRDaGls
ZChDb250YWluZXJOb2RlKiBuZXdQYXJlbnQsIE5vZGUqIG5ld0NoaWxkLCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKLSAgICBpZiAoRXhjZXB0aW9uQ29kZSBjb2RlID0gY2hlY2tBY2NlcHRDaGlsZChu
ZXdQYXJlbnQsIG5ld0NoaWxkLCAwKSkgewotICAgICAgICBlYyA9IGNvZGU7CisgICAgZWMgPSBj
aGVja0FjY2VwdENoaWxkKG5ld1BhcmVudCwgbmV3Q2hpbGQsIDApOworICAgIGlmIChlYykKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KIAogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0
aWMgaW5saW5lIGJvb2wgY2hlY2tSZXBsYWNlQ2hpbGQoQ29udGFpbmVyTm9kZSogbmV3UGFyZW50
LCBOb2RlKiBuZXdDaGlsZCwgTm9kZSogb2xkQ2hpbGQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewot
ICAgIGlmIChFeGNlcHRpb25Db2RlIGNvZGUgPSBjaGVja0FjY2VwdENoaWxkKG5ld1BhcmVudCwg
bmV3Q2hpbGQsIG9sZENoaWxkKSkgewotICAgICAgICBlYyA9IGNvZGU7CisgICAgZWMgPSBjaGVj
a0FjY2VwdENoaWxkKG5ld1BhcmVudCwgbmV3Q2hpbGQsIG9sZENoaWxkKTsKKyAgICBpZiAoZWMp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCisKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNmNiYTI5ZWQ2OTgyYjA3Y2U5MTc2YjU3
MTI2MzkyNGQ1ZDk1MThlYi4uMDc3Y2I4ZTAxZDkyZTcwNjU4NzdlNzc5OTYyZTlmM2Q2YzlhYTQy
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0yODQ2LDcgKzI4NDYsNyBAQCB2b2lkIERv
Y3VtZW50Ojpwcm9jZXNzSHR0cEVxdWl2KGNvbnN0IFN0cmluZyYgZXF1aXYsIGNvbnN0IFN0cmlu
ZyYgY29udGVudCkKICAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGVxdWl2LCAic2V0
LWNvb2tpZSIpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBtYWtlIHNldENvb2tpZSB3b3JrIG9uIFhN
TCBkb2N1bWVudHMgdG9vOyBlLmcuIGluIGNhc2Ugb2YgPGh0bWw6bWV0YSAuLi4uLj4KICAgICAg
ICAgaWYgKGlzSFRNTERvY3VtZW50KCkpIHsKLSAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7
IC8vIEV4Y2VwdGlvbiAoZm9yIHNhbmRib3hlZCBkb2N1bWVudHMpIGlnbm9yZWQuCisgICAgICAg
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsgLy8gRXhjZXB0aW9uIChmb3Igc2FuZGJveGVkIGRv
Y3VtZW50cykgaWdub3JlZC4KICAgICAgICAgICAgIHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+
KHRoaXMpLT5zZXRDb29raWUoY29udGVudCwgZWMpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlm
IChlcXVhbElnbm9yaW5nQ2FzZShlcXVpdiwgImNvbnRlbnQtbGFuZ3VhZ2UiKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaAppbmRleCBjZWM4YjhkNTJk
OWM3MWNiMzAyOTU5YWRiMjZmOThjNTMzZDY1NjZiLi45ODFkZGI1NDM1YmI5YTk5MWQxODc2ODM0
NzNlODI3NDk0NzBjMWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9u
Q29kZVBsYWNlaG9sZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkNvZGVQ
bGFjZWhvbGRlci5oCkBAIC00NCwxNCArNDQsMTQgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbkNv
ZGVQbGFjZWhvbGRlcigpIHsgfQogICAgIGV4cGxpY2l0IEV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRl
cihFeGNlcHRpb25Db2RlKTsKIAotICAgIG9wZXJhdG9yIEV4Y2VwdGlvbkNvZGUmICgpIGNvbnN0
IHsgcmV0dXJuIG1fY29kZTsgfQorICAgIG9wZXJhdG9yIEV4Y2VwdGlvbkNvZGUmICgpIGNvbnN0
IHsgcmV0dXJuIG1fZWM7IH0KIAogcHJvdGVjdGVkOgotICAgIG11dGFibGUgRXhjZXB0aW9uQ29k
ZSBtX2NvZGU7CisgICAgbXV0YWJsZSBFeGNlcHRpb25Db2RlIG1fZWM7CiB9OwogCi1pbmxpbmUg
RXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyOjpFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIoRXhjZXB0
aW9uQ29kZSBjb2RlKQotICAgIDogbV9jb2RlKGNvZGUpCitpbmxpbmUgRXhjZXB0aW9uQ29kZVBs
YWNlaG9sZGVyOjpFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIoRXhjZXB0aW9uQ29kZSBlYykKKyAg
ICA6IG1fZWMoZWMpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA0MTE2OTAxOWQyZWIxYTk2
N2ZjYzU2Y2FmMjJlMDIyM2Q1N2JmOWY5Li43ODUzNmIwNjg1OTMxZmQzMDQwZmIwN2E5OGIwNWVm
ODE0OTRkOWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC02MDMsNyArNjAzLDcgQEAgdm9pZCBOb2Rl
Ojpub3JtYWxpemUoKQogICAgICAgICBpZiAoIXRleHQtPmxlbmd0aCgpKSB7CiAgICAgICAgICAg
ICAvLyBDYXJlIG11c3QgYmUgdGFrZW4gdG8gZ2V0IHRoZSBuZXh0IG5vZGUgYmVmb3JlIHJlbW92
aW5nIHRoZSBjdXJyZW50IG5vZGUuCiAgICAgICAgICAgICBub2RlID0gTm9kZVRyYXZlcnNhbDo6
bmV4dFBvc3RPcmRlcihub2RlLmdldCgpKTsKLSAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7
CisgICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICAgICAgICAgIHRleHQtPnJl
bW92ZShlYyk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQpAQCAtNjE2LDE0ICs2
MTYsMTQgQEAgdm9pZCBOb2RlOjpub3JtYWxpemUoKQogCiAgICAgICAgICAgICAvLyBSZW1vdmUg
ZW1wdHkgdGV4dCBub2Rlcy4KICAgICAgICAgICAgIGlmICghbmV4dFRleHQtPmxlbmd0aCgpKSB7
Ci0gICAgICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICAgICAgICAgICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKICAgICAgICAgICAgICAgICBuZXh0VGV4dC0+cmVtb3ZlKGVjKTsK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
Ly8gQm90aCBub24tZW1wdHkgdGV4dCBub2Rlcy4gTWVyZ2UgdGhlbS4KICAgICAgICAgICAgIHVu
c2lnbmVkIG9mZnNldCA9IHRleHQtPmxlbmd0aCgpOwotICAgICAgICAgICAgRXhjZXB0aW9uQ29k
ZSBlYzsKKyAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgICAgICAgICAgdGV4
dC0+YXBwZW5kRGF0YShuZXh0VGV4dC0+ZGF0YSgpLCBlYyk7CiAgICAgICAgICAgICBkb2N1bWVu
dCgpLT50ZXh0Tm9kZXNNZXJnZWQobmV4dFRleHQuZ2V0KCksIG9mZnNldCk7CiAgICAgICAgICAg
ICBuZXh0VGV4dC0+cmVtb3ZlKGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9U
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcAppbmRleCBiNWJkYWJiMDlkN2Jm
N2MyYjNkOTYxYzBmNzljMjYxNTE5MDA4ZDEwLi4zN2Q3MDk0NjRkMDdmOGVkMjRkNzQ2MTFlYTRk
NTQ0ZTZkZjgwYjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCkBAIC0xNTYsMTEgKzE1NiwxMSBAQCBQYXNz
UmVmUHRyPFRleHQ+IFRleHQ6OnJlcGxhY2VXaG9sZVRleHQoY29uc3QgU3RyaW5nJiBuZXdUZXh0
LCBFeGNlcHRpb25Db2RlJikKIAogICAgIFJlZlB0cjxUZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMp
OyAvLyBNdXRhdGlvbiBldmVudCBoYW5kbGVycyBjb3VsZCBjYXVzZSBvdXIgbGFzdCByZWYgdG8g
Z28gYXdheQogICAgIFJlZlB0cjxDb250YWluZXJOb2RlPiBwYXJlbnQgPSBwYXJlbnROb2RlKCk7
IC8vIFByb3RlY3QgYWdhaW5zdCBtdXRhdGlvbiBoYW5kbGVycyBtb3ZpbmcgdGhpcyBub2RlIGR1
cmluZyB0cmF2ZXJzYWwKLSAgICBFeGNlcHRpb25Db2RlIGlnbm9yZWQgPSAwOworICAgIEV4Y2Vw
dGlvbkNvZGUgaWdub3JlZEV4Y2VwdGlvbiA9IDA7CiAgICAgZm9yIChSZWZQdHI8Tm9kZT4gbiA9
IHN0YXJ0VGV4dDsgbiAmJiBuICE9IHRoaXMgJiYgbi0+aXNUZXh0Tm9kZSgpICYmIG4tPnBhcmVu
dE5vZGUoKSA9PSBwYXJlbnQ7KSB7CiAgICAgICAgIFJlZlB0cjxOb2RlPiBub2RlVG9SZW1vdmUo
bi5yZWxlYXNlKCkpOwogICAgICAgICBuID0gbm9kZVRvUmVtb3ZlLT5uZXh0U2libGluZygpOwot
ICAgICAgICBwYXJlbnQtPnJlbW92ZUNoaWxkKG5vZGVUb1JlbW92ZS5nZXQoKSwgaWdub3JlZCk7
CisgICAgICAgIHBhcmVudC0+cmVtb3ZlQ2hpbGQobm9kZVRvUmVtb3ZlLmdldCgpLCBpZ25vcmVk
RXhjZXB0aW9uKTsKICAgICB9CiAKICAgICBpZiAodGhpcyAhPSBlbmRUZXh0KSB7CkBAIC0xNjgs
MTcgKzE2OCwxNyBAQCBQYXNzUmVmUHRyPFRleHQ+IFRleHQ6OnJlcGxhY2VXaG9sZVRleHQoY29u
c3QgU3RyaW5nJiBuZXdUZXh0LCBFeGNlcHRpb25Db2RlJikKICAgICAgICAgZm9yIChSZWZQdHI8
Tm9kZT4gbiA9IG5leHRTaWJsaW5nKCk7IG4gJiYgbiAhPSBvbmVQYXN0RW5kVGV4dCAmJiBuLT5p
c1RleHROb2RlKCkgJiYgbi0+cGFyZW50Tm9kZSgpID09IHBhcmVudDspIHsKICAgICAgICAgICAg
IFJlZlB0cjxOb2RlPiBub2RlVG9SZW1vdmUobi5yZWxlYXNlKCkpOwogICAgICAgICAgICAgbiA9
IG5vZGVUb1JlbW92ZS0+bmV4dFNpYmxpbmcoKTsKLSAgICAgICAgICAgIHBhcmVudC0+cmVtb3Zl
Q2hpbGQobm9kZVRvUmVtb3ZlLmdldCgpLCBpZ25vcmVkKTsKKyAgICAgICAgICAgIHBhcmVudC0+
cmVtb3ZlQ2hpbGQobm9kZVRvUmVtb3ZlLmdldCgpLCBpZ25vcmVkRXhjZXB0aW9uKTsKICAgICAg
ICAgfQogICAgIH0KIAogICAgIGlmIChuZXdUZXh0LmlzRW1wdHkoKSkgewogICAgICAgICBpZiAo
cGFyZW50ICYmIHBhcmVudE5vZGUoKSA9PSBwYXJlbnQpCi0gICAgICAgICAgICBwYXJlbnQtPnJl
bW92ZUNoaWxkKHRoaXMsIGlnbm9yZWQpOworICAgICAgICAgICAgcGFyZW50LT5yZW1vdmVDaGls
ZCh0aGlzLCBpZ25vcmVkRXhjZXB0aW9uKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0g
ICAgc2V0RGF0YShuZXdUZXh0LCBpZ25vcmVkKTsKKyAgICBzZXREYXRhKG5ld1RleHQsIGlnbm9y
ZWRFeGNlcHRpb24pOwogICAgIHJldHVybiBwcm90ZWN0ZWRUaGlzLnJlbGVhc2UoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
ci5jcHAKaW5kZXggNTY0MGFlMzk4MTM1OTRiMjk0ZmVkMzI3ZGQyODBiN2VkYmQ3Mjg3OC4uMDlk
Yzg2OWU2NzAwYTQ2YjFiZTFlNWYzM2I1MDgxYjhmYzg0ZjYxNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCkBAIC03MDcs
NyArNzA3LDcgQEAgYm9vbCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjppbnNlcnREaWN0YXRl
ZFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWMKICAgICBSZWZQdHI8VGV4dEV2ZW50
PiBldmVudCA9IFRleHRFdmVudDo6Y3JlYXRlRm9yRGljdGF0aW9uKG1fZnJhbWUtPmRvY3VtZW50
KCktPmRvbVdpbmRvdygpLCB0ZXh0LCBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOwogICAgIGV2ZW50
LT5zZXRVbmRlcmx5aW5nRXZlbnQodHJpZ2dlcmluZ0V2ZW50KTsKIAotICAgIEV4Y2VwdGlvbkNv
ZGUgZWM7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2
ZW50KGV2ZW50LCBlYyk7CiAgICAgcmV0dXJuIGV2ZW50LT5kZWZhdWx0SGFuZGxlZCgpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBlbmROb2RlQ29tbWFuZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGVuZE5vZGVDb21tYW5kLmNwcAppbmRleCA0Y2Nh
YzdhNjM5Nzg1Y2RlZjY0YjQwYWQ5Njc4YTcwNjdiOTY0NGUxLi5hZTA3NGVkMDczOGY0OGM0ZjUy
OWRjM2QzMGZhNDM2OWJiMmFhMGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0FwcGVuZE5vZGVDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGVu
ZE5vZGVDb21tYW5kLmNwcApAQCAtNTksNyArNTksNyBAQCB2b2lkIEFwcGVuZE5vZGVDb21tYW5k
Ojpkb0FwcGx5KCkKICAgICBpZiAoIW1fcGFyZW50LT5yZW5kZXJlcklzRWRpdGFibGUoKSAmJiBt
X3BhcmVudC0+YXR0YWNoZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICBFeGNl
cHRpb25Db2RlIGVjOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIG1fcGFyZW50LT5h
cHBlbmRDaGlsZChtX25vZGUuZ2V0KCksIGVjLCB0cnVlIC8qIGxhenlBdHRhY2ggKi8pOwogCiAg
ICAgaWYgKEFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkpCkBAIC03NSw3ICs3
NSw3IEBAIHZvaWQgQXBwZW5kTm9kZUNvbW1hbmQ6OmRvVW5hcHBseSgpCiAgICAgaWYgKEFYT2Jq
ZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkpCiAgICAgICAgIHNlbmRBWFRleHRDaGFu
Z2VkSWdub3JpbmdMaW5lQnJlYWtzKG1fbm9kZS5nZXQoKSwgQVhPYmplY3RDYWNoZTo6QVhUZXh0
RGVsZXRlZCk7CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjOworICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwogICAgIG1fbm9kZS0+cmVtb3ZlKGVjKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAppbmRleCBhMTk5NTQ1ZGU1YTJkZTZlNGE0
ZDM0YjY1OTQzZTJkM2NmNzMyMmMwLi40NjY0MDNmNTJlZjFjOTBlYmRmOTZiYjczYjRiZmI2MjIx
Zjk1OTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRD
b21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21t
YW5kLmNwcApAQCAtODk1LDcgKzg5NSw3IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnJl
bW92ZVBsYWNlaG9sZGVyQXQoY29uc3QgUG9zaXRpb24mIHApCiBQYXNzUmVmUHRyPE5vZGU+IENv
bXBvc2l0ZUVkaXRDb21tYW5kOjppbnNlcnROZXdEZWZhdWx0UGFyYWdyYXBoRWxlbWVudEF0KGNv
bnN0IFBvc2l0aW9uJiBwb3NpdGlvbikKIHsKICAgICBSZWZQdHI8RWxlbWVudD4gcGFyYWdyYXBo
RWxlbWVudCA9IGNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KGRvY3VtZW50KCkpOwotICAg
IEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgcGFyYWdy
YXBoRWxlbWVudC0+YXBwZW5kQ2hpbGQoY3JlYXRlQnJlYWtFbGVtZW50KGRvY3VtZW50KCkpLCBl
Yyk7CiAgICAgaW5zZXJ0Tm9kZUF0KHBhcmFncmFwaEVsZW1lbnQsIHBvc2l0aW9uKTsKICAgICBy
ZXR1cm4gcGFyYWdyYXBoRWxlbWVudC5yZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0RlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9EZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kLmNwcAppbmRleCAyNTQ0NGFjMzEw
Y2JkMzIwYjNkMThkNzllYWQzYTRiMGVmOTJkMWExLi5kZTU5Y2YzMmYyYWE5NWRiNzMwMWM5Nzli
NWIzYmQ0MTA4ODdmOWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0
ZUZyb21UZXh0Tm9kZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVs
ZXRlRnJvbVRleHROb2RlQ29tbWFuZC5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBEZWxldGVG
cm9tVGV4dE5vZGVDb21tYW5kOjpkb1VuYXBwbHkoKQogICAgIGlmICghbV9ub2RlLT5yZW5kZXJl
cklzRWRpdGFibGUoKSkKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICBFeGNlcHRpb25D
b2RlIGVjOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIG1fbm9kZS0+aW5zZXJ0RGF0
YShtX29mZnNldCwgbV90ZXh0LCBlYyk7CiAKICAgICBpZiAoQVhPYmplY3RDYWNoZTo6YWNjZXNz
aWJpbGl0eUVuYWJsZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCAyZTFkNWVj
MzNkNDIyMzA5ODA3ZGY1ZDQ5NmEwZWZkNzAzNjI5MzczLi42MzdkM2Q3ODdlNzllYjgyMjkzOGVh
ZDM4ZGFjZDUwODA1YjNjMWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0yNTQs
MTYgKzI1NCwxNiBAQCBib29sIEVkaXRvcjo6Y2FuRGVsZXRlKCkgY29uc3QKIAogYm9vbCBFZGl0
b3I6OmNhbkRlbGV0ZVJhbmdlKFJhbmdlKiByYW5nZSkgY29uc3QKIHsKLSAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICBOb2RlKiBzdGFydENvbnRhaW5lciA9IHJhbmdlLT5zdGFydENvbnRh
aW5lcihlYyk7Ci0gICAgTm9kZSogZW5kQ29udGFpbmVyID0gcmFuZ2UtPmVuZENvbnRhaW5lcihl
Yyk7CisgICAgRXhjZXB0aW9uQ29kZSBpZ25vcmVkRXhjZXB0aW9uID0gMDsKKyAgICBOb2RlKiBz
dGFydENvbnRhaW5lciA9IHJhbmdlLT5zdGFydENvbnRhaW5lcihpZ25vcmVkRXhjZXB0aW9uKTsK
KyAgICBOb2RlKiBlbmRDb250YWluZXIgPSByYW5nZS0+ZW5kQ29udGFpbmVyKGlnbm9yZWRFeGNl
cHRpb24pOwogICAgIGlmICghc3RhcnRDb250YWluZXIgfHwgIWVuZENvbnRhaW5lcikKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIGlmICghc3RhcnRDb250YWluZXItPnJlbmRlcmVy
SXNFZGl0YWJsZSgpIHx8ICFlbmRDb250YWluZXItPnJlbmRlcmVySXNFZGl0YWJsZSgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgaWYgKHJhbmdlLT5jb2xsYXBzZWQoZWMpKSB7
CisgICAgaWYgKHJhbmdlLT5jb2xsYXBzZWQoaWdub3JlZEV4Y2VwdGlvbikpIHsKICAgICAgICAg
VmlzaWJsZVBvc2l0aW9uIHN0YXJ0KHJhbmdlLT5zdGFydFBvc2l0aW9uKCksIERPV05TVFJFQU0p
OwogICAgICAgICBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXMgPSBzdGFydC5wcmV2aW91cygpOwog
ICAgICAgICAvLyBGSVhNRTogV2Ugc29tZXRpbWVzIGFsbG93IGRlbGV0aW9ucyBhdCB0aGUgc3Rh
cnQgb2YgZWRpdGFibGUgcm9vdHMsIGxpa2Ugd2hlbiB0aGUgY2FyZXQgaXMgaW4gYW4gZW1wdHkg
bGlzdCBpdGVtLgpAQCAtMzQ0LDggKzM0NCw4IEBAIHZvaWQgRWRpdG9yOjpwYXN0ZUFzUGxhaW5U
ZXh0KGNvbnN0IFN0cmluZyYgcGFzdGluZ1RleHQsIGJvb2wgc21hcnRSZXBsYWNlKQogICAgIE5v
ZGUqIHRhcmdldCA9IGZpbmRFdmVudFRhcmdldEZyb21TZWxlY3Rpb24oKTsKICAgICBpZiAoIXRh
cmdldCkKICAgICAgICAgcmV0dXJuOwotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHRh
cmdldC0+ZGlzcGF0Y2hFdmVudChUZXh0RXZlbnQ6OmNyZWF0ZUZvclBsYWluVGV4dFBhc3RlKG1f
ZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLCBwYXN0aW5nVGV4dCwgc21hcnRSZXBsYWNl
KSwgZWMpOworICAgIEV4Y2VwdGlvbkNvZGUgaWdub3JlZEV4Y2VwdGlvbiA9IDA7CisgICAgdGFy
Z2V0LT5kaXNwYXRjaEV2ZW50KFRleHRFdmVudDo6Y3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUobV9m
cmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCksIHBhc3RpbmdUZXh0LCBzbWFydFJlcGxhY2Up
LCBpZ25vcmVkRXhjZXB0aW9uKTsKIH0KIAogdm9pZCBFZGl0b3I6OnBhc3RlQXNGcmFnbWVudChQ
YXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IHBhc3RpbmdGcmFnbWVudCwgYm9vbCBzbWFydFJl
cGxhY2UsIGJvb2wgbWF0Y2hTdHlsZSkKQEAgLTM1Myw4ICszNTMsOCBAQCB2b2lkIEVkaXRvcjo6
cGFzdGVBc0ZyYWdtZW50KFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gcGFzdGluZ0ZyYWdt
ZW50LCBib29sCiAgICAgTm9kZSogdGFyZ2V0ID0gZmluZEV2ZW50VGFyZ2V0RnJvbVNlbGVjdGlv
bigpOwogICAgIGlmICghdGFyZ2V0KQogICAgICAgICByZXR1cm47Ci0gICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7Ci0gICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KFRleHRFdmVudDo6Y3JlYXRlRm9y
RnJhZ21lbnRQYXN0ZShtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSwgcGFzdGluZ0Zy
YWdtZW50LCBzbWFydFJlcGxhY2UsIG1hdGNoU3R5bGUpLCBlYyk7CisgICAgRXhjZXB0aW9uQ29k
ZSBpZ25vcmVkRXhjZXB0aW9uID0gMDsKKyAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoVGV4dEV2
ZW50OjpjcmVhdGVGb3JGcmFnbWVudFBhc3RlKG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRv
dygpLCBwYXN0aW5nRnJhZ21lbnQsIHNtYXJ0UmVwbGFjZSwgbWF0Y2hTdHlsZSksIGlnbm9yZWRF
eGNlcHRpb24pOwogfQogCiB2b2lkIEVkaXRvcjo6cGFzdGVBc1BsYWluVGV4dEJ5cGFzc2luZ0RI
VE1MKCkKQEAgLTQzOCw4ICs0MzgsOCBAQCBQYXNzUmVmUHRyPFJhbmdlPiBFZGl0b3I6OnNlbGVj
dGVkUmFuZ2UoKQogCiBib29sIEVkaXRvcjo6c2hvdWxkRGVsZXRlUmFuZ2UoUmFuZ2UqIHJhbmdl
KSBjb25zdAogewotICAgIEV4Y2VwdGlvbkNvZGUgZWM7Ci0gICAgaWYgKCFyYW5nZSB8fCByYW5n
ZS0+Y29sbGFwc2VkKGVjKSkKKyAgICBFeGNlcHRpb25Db2RlIGlnbm9yZWRFeGNlcHRpb24gPSAw
OworICAgIGlmICghcmFuZ2UgfHwgcmFuZ2UtPmNvbGxhcHNlZChpZ25vcmVkRXhjZXB0aW9uKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIGlmICghY2FuRGVsZXRlUmFuZ2UocmFu
Z2UpKQpAQCAtNjQ5LDkgKzY0OSw5IEBAIGJvb2wgRWRpdG9yOjpkaXNwYXRjaENQUEV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyAmZXZlbnRUeXBlLCBDbGlwYm9hcmRBY2Nlc3NQb2xpCiAgICAgCiAg
ICAgUmVmUHRyPENsaXBib2FyZD4gY2xpcGJvYXJkID0gbmV3R2VuZXJhbENsaXBib2FyZChwb2xp
Y3ksIG1fZnJhbWUpOwogCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgRXhjZXB0aW9u
Q29kZSBpZ25vcmVkRXhjZXB0aW9uID0gMDsKICAgICBSZWZQdHI8RXZlbnQ+IGV2dCA9IENsaXBi
b2FyZEV2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCB0cnVlLCB0cnVlLCBjbGlwYm9hcmQpOwotICAg
IHRhcmdldC0+ZGlzcGF0Y2hFdmVudChldnQsIGVjKTsKKyAgICB0YXJnZXQtPmRpc3BhdGNoRXZl
bnQoZXZ0LCBpZ25vcmVkRXhjZXB0aW9uKTsKICAgICBib29sIG5vRGVmYXVsdFByb2Nlc3Npbmcg
PSBldnQtPmRlZmF1bHRQcmV2ZW50ZWQoKTsKICAgICBpZiAobm9EZWZhdWx0UHJvY2Vzc2luZyAm
JiBwb2xpY3kgPT0gQ2xpcGJvYXJkV3JpdGFibGUpIHsKICAgICAgICAgUGFzdGVib2FyZCogcGFz
dGVib2FyZCA9IFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCk7CkBAIC03NjksMTEgKzc2
OSwxMSBAQCB2b2lkIEVkaXRvcjo6b3V0ZGVudCgpCiAKIHN0YXRpYyB2b2lkIGRpc3BhdGNoRWRp
dGFibGVDb250ZW50Q2hhbmdlZEV2ZW50cyhFbGVtZW50KiBzdGFydFJvb3QsIEVsZW1lbnQqIGVu
ZFJvb3QpCiB7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICBFeGNlcHRpb25Db2RlIGlnbm9y
ZWRFeGNlcHRpb24gPSAwOwogICAgIGlmIChzdGFydFJvb3QpCi0gICAgICAgIHN0YXJ0Um9vdC0+
ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRFZGl0YWJsZUNv
bnRlbnRDaGFuZ2VkRXZlbnQsIGZhbHNlLCBmYWxzZSksIGVjKTsKKyAgICAgICAgc3RhcnRSb290
LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdEVkaXRhYmxl
Q29udGVudENoYW5nZWRFdmVudCwgZmFsc2UsIGZhbHNlKSwgaWdub3JlZEV4Y2VwdGlvbik7CiAg
ICAgaWYgKGVuZFJvb3QgJiYgZW5kUm9vdCAhPSBzdGFydFJvb3QpCi0gICAgICAgIGVuZFJvb3Qt
PmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0RWRpdGFibGVD
b250ZW50Q2hhbmdlZEV2ZW50LCBmYWxzZSwgZmFsc2UpLCBlYyk7CisgICAgICAgIGVuZFJvb3Qt
PmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0RWRpdGFibGVD
b250ZW50Q2hhbmdlZEV2ZW50LCBmYWxzZSwgZmFsc2UpLCBpZ25vcmVkRXhjZXB0aW9uKTsKIH0K
IAogdm9pZCBFZGl0b3I6OmFwcGxpZWRFZGl0aW5nKFBhc3NSZWZQdHI8Q29tcG9zaXRlRWRpdENv
bW1hbmQ+IGNtZCkKQEAgLTEzNjMsOCArMTM2Myw4IEBAIHZvaWQgRWRpdG9yOjpzZXRDb21wb3Np
dGlvbihjb25zdCBTdHJpbmcmIHRleHQsIFNldENvbXBvc2l0aW9uTW9kZSBtb2RlKQogICAgIE5v
ZGUqIHRhcmdldCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmZvY3VzZWROb2RlKCk7CiAgICAgaWYg
KHRhcmdldCkgewogICAgICAgICBSZWZQdHI8Q29tcG9zaXRpb25FdmVudD4gZXZlbnQgPSBDb21w
b3NpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBvc2l0aW9uZW5kRXZlbnQsIG1f
ZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLCB0ZXh0KTsKLSAgICAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7Ci0gICAgICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChldmVudCwgZWMpOwor
ICAgICAgICBFeGNlcHRpb25Db2RlIGlnbm9yZWRFeGNlcHRpb24gPSAwOworICAgICAgICB0YXJn
ZXQtPmRpc3BhdGNoRXZlbnQoZXZlbnQsIGlnbm9yZWRFeGNlcHRpb24pOwogICAgIH0KIAogICAg
IC8vIElmIHRleHQgaXMgZW1wdHksIHRoZW4gZGVsZXRlIHRoZSBvbGQgY29tcG9zaXRpb24gaGVy
ZS4gIElmIHRleHQgaXMgbm9uLWVtcHR5LCBJbnNlcnRUZXh0Q29tbWFuZDo6aW5wdXQKQEAgLTE0
MzQsOSArMTQzNCw5IEBAIHZvaWQgRWRpdG9yOjpzZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcm
IHRleHQsIGNvbnN0IFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluCiAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgIGV2ZW50ID0gQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5jb21wb3NpdGlvbmVuZEV2ZW50LCBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3co
KSwgdGV4dCk7CiAgICAgICAgIH0KLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAg
ICAgIEV4Y2VwdGlvbkNvZGUgaWdub3JlZEV4Y2VwdGlvbiA9IDA7CiAgICAgICAgIGlmIChldmVu
dC5nZXQoKSkKLSAgICAgICAgICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChldmVudCwgZWMpOwor
ICAgICAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KGV2ZW50LCBpZ25vcmVkRXhjZXB0aW9u
KTsKICAgICB9CiAKICAgICAvLyBJZiB0ZXh0IGlzIGVtcHR5LCB0aGVuIGRlbGV0ZSB0aGUgb2xk
IGNvbXBvc2l0aW9uIGhlcmUuICBJZiB0ZXh0IGlzIG5vbi1lbXB0eSwgSW5zZXJ0VGV4dENvbW1h
bmQ6OmlucHV0CkBAIC0yNjE5LDEwICsyNjE5LDEwIEBAIHZvaWQgRWRpdG9yOjphcHBseUVkaXRp
bmdTdHlsZVRvRWxlbWVudChFbGVtZW50KiBlbGVtZW50KSBjb25zdAogCiAgICAgLy8gTXV0YXRl
IHVzaW5nIHRoZSBDU1NPTSB3cmFwcGVyIHNvIHdlIGdldCB0aGUgc2FtZSBldmVudCBiZWhhdmlv
ciBhcyBhIHNjcmlwdC4KICAgICBDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSA9IHN0YXRpY19j
YXN0PFN0eWxlZEVsZW1lbnQqPihlbGVtZW50KS0+c3R5bGUoKTsKLSAgICBFeGNlcHRpb25Db2Rl
IGVjOwotICAgIHN0eWxlLT5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5V29yZFdyYXAs
ICJicmVhay13b3JkIiwgZmFsc2UsIGVjKTsKLSAgICBzdHlsZS0+c2V0UHJvcGVydHlJbnRlcm5h
bChDU1NQcm9wZXJ0eVdlYmtpdE5ic3BNb2RlLCAic3BhY2UiLCBmYWxzZSwgZWMpOwotICAgIHN0
eWxlLT5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFrLCAiYWZ0
ZXItd2hpdGUtc3BhY2UiLCBmYWxzZSwgZWMpOworICAgIEV4Y2VwdGlvbkNvZGUgaWdub3JlZEV4
Y2VwdGlvbiA9IDA7CisgICAgc3R5bGUtPnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlX
b3JkV3JhcCwgImJyZWFrLXdvcmQiLCBmYWxzZSwgaWdub3JlZEV4Y2VwdGlvbik7CisgICAgc3R5
bGUtPnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZSwgInNwYWNl
IiwgZmFsc2UsIGlnbm9yZWRFeGNlcHRpb24pOworICAgIHN0eWxlLT5zZXRQcm9wZXJ0eUludGVy
bmFsKENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFrLCAiYWZ0ZXItd2hpdGUtc3BhY2UiLCBmYWxz
ZSwgaWdub3JlZEV4Y2VwdGlvbik7CiB9CiAKIC8vIFNlYXJjaGVzIGZyb20gdGhlIGJlZ2lubmlu
ZyBvZiB0aGUgZG9jdW1lbnQgaWYgbm90aGluZyBpcyBzZWxlY3RlZC4KQEAgLTI3MzQsOCArMjcz
NCw4IEBAIHN0YXRpYyBib29sIGlzRnJhbWVJblJhbmdlKEZyYW1lKiBmcmFtZSwgUmFuZ2UqIHJh
bmdlKQogICAgIGJvb2wgaW5SYW5nZSA9IGZhbHNlOwogICAgIGZvciAoSFRNTEZyYW1lT3duZXJF
bGVtZW50KiBvd25lckVsZW1lbnQgPSBmcmFtZS0+b3duZXJFbGVtZW50KCk7IG93bmVyRWxlbWVu
dDsgb3duZXJFbGVtZW50ID0gb3duZXJFbGVtZW50LT5kb2N1bWVudCgpLT5vd25lckVsZW1lbnQo
KSkgewogICAgICAgICBpZiAob3duZXJFbGVtZW50LT5kb2N1bWVudCgpID09IHJhbmdlLT5vd25l
ckRvY3VtZW50KCkpIHsKLSAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAg
ICAgICAgaW5SYW5nZSA9IHJhbmdlLT5pbnRlcnNlY3RzTm9kZShvd25lckVsZW1lbnQsIGVjKTsK
KyAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgaWdub3JlZEV4Y2VwdGlvbiA9IDA7CisgICAgICAg
ICAgICBpblJhbmdlID0gcmFuZ2UtPmludGVyc2VjdHNOb2RlKG93bmVyRWxlbWVudCwgaWdub3Jl
ZEV4Y2VwdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KQEAgLTI3
NjAsMjMgKzI3NjAsMjMgQEAgdW5zaWduZWQgRWRpdG9yOjpjb3VudE1hdGNoZXNGb3JUZXh0KGNv
bnN0IFN0cmluZyYgdGFyZ2V0LCBSYW5nZSogcmFuZ2UsIEZpbmRPcHQKICAgICBOb2RlKiBvcmln
aW5hbEVuZENvbnRhaW5lciA9IHNlYXJjaFJhbmdlLT5lbmRDb250YWluZXIoKTsKICAgICBpbnQg
b3JpZ2luYWxFbmRPZmZzZXQgPSBzZWFyY2hSYW5nZS0+ZW5kT2Zmc2V0KCk7CiAKLSAgICBFeGNl
cHRpb25Db2RlIGV4Y2VwdGlvbiA9IDA7CisgICAgRXhjZXB0aW9uQ29kZSBpZ25vcmVkRXhjZXB0
aW9uID0gMDsKICAgICB1bnNpZ25lZCBtYXRjaENvdW50ID0gMDsKICAgICBkbyB7CiAgICAgICAg
IFJlZlB0cjxSYW5nZT4gcmVzdWx0UmFuZ2UoZmluZFBsYWluVGV4dChzZWFyY2hSYW5nZS5nZXQo
KSwgdGFyZ2V0LCBvcHRpb25zICYgfkJhY2t3YXJkcykpOwotICAgICAgICBpZiAocmVzdWx0UmFu
Z2UtPmNvbGxhcHNlZChleGNlcHRpb24pKSB7CisgICAgICAgIGlmIChyZXN1bHRSYW5nZS0+Y29s
bGFwc2VkKGlnbm9yZWRFeGNlcHRpb24pKSB7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdFJhbmdl
LT5zdGFydENvbnRhaW5lcigpLT5pc0luU2hhZG93VHJlZSgpKQogICAgICAgICAgICAgICAgIGJy
ZWFrOwogCi0gICAgICAgICAgICBzZWFyY2hSYW5nZS0+c2V0U3RhcnRBZnRlcihyZXN1bHRSYW5n
ZS0+c3RhcnRDb250YWluZXIoKS0+ZGVwcmVjYXRlZFNoYWRvd0FuY2VzdG9yTm9kZSgpLCBleGNl
cHRpb24pOwotICAgICAgICAgICAgc2VhcmNoUmFuZ2UtPnNldEVuZChvcmlnaW5hbEVuZENvbnRh
aW5lciwgb3JpZ2luYWxFbmRPZmZzZXQsIGV4Y2VwdGlvbik7CisgICAgICAgICAgICBzZWFyY2hS
YW5nZS0+c2V0U3RhcnRBZnRlcihyZXN1bHRSYW5nZS0+c3RhcnRDb250YWluZXIoKS0+ZGVwcmVj
YXRlZFNoYWRvd0FuY2VzdG9yTm9kZSgpLCBpZ25vcmVkRXhjZXB0aW9uKTsKKyAgICAgICAgICAg
IHNlYXJjaFJhbmdlLT5zZXRFbmQob3JpZ2luYWxFbmRDb250YWluZXIsIG9yaWdpbmFsRW5kT2Zm
c2V0LCBpZ25vcmVkRXhjZXB0aW9uKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9
CiAKICAgICAgICAgKyttYXRjaENvdW50OwogICAgICAgICBpZiAobWF0Y2hlcykKICAgICAgICAg
ICAgIG1hdGNoZXMtPmFwcGVuZChyZXN1bHRSYW5nZSk7Ci0gICAgICAgIAorCiAgICAgICAgIGlm
IChtYXJrTWF0Y2hlcykKICAgICAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPm1hcmtlcnMo
KS0+YWRkTWFya2VyKHJlc3VsdFJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6VGV4dE1hdGNo
KTsKIApAQCAtMjc4NywxMiArMjc4NywxMiBAQCB1bnNpZ25lZCBFZGl0b3I6OmNvdW50TWF0Y2hl
c0ZvclRleHQoY29uc3QgU3RyaW5nJiB0YXJnZXQsIFJhbmdlKiByYW5nZSwgRmluZE9wdAogICAg
ICAgICAvLyBTZXQgdGhlIG5ldyBzdGFydCBmb3IgdGhlIHNlYXJjaCByYW5nZSB0byBiZSB0aGUg
ZW5kIG9mIHRoZSBwcmV2aW91cwogICAgICAgICAvLyByZXN1bHQgcmFuZ2UuIFRoZXJlIGlzIG5v
IG5lZWQgdG8gdXNlIGEgVmlzaWJsZVBvc2l0aW9uIGhlcmUsCiAgICAgICAgIC8vIHNpbmNlIGZp
bmRQbGFpblRleHQgd2lsbCB1c2UgYSBUZXh0SXRlcmF0b3IgdG8gZ28gb3ZlciB0aGUgdmlzaWJs
ZQotICAgICAgICAvLyB0ZXh0IG5vZGVzLiAKLSAgICAgICAgc2VhcmNoUmFuZ2UtPnNldFN0YXJ0
KHJlc3VsdFJhbmdlLT5lbmRDb250YWluZXIoZXhjZXB0aW9uKSwgcmVzdWx0UmFuZ2UtPmVuZE9m
ZnNldChleGNlcHRpb24pLCBleGNlcHRpb24pOworICAgICAgICAvLyB0ZXh0IG5vZGVzLgorICAg
ICAgICBzZWFyY2hSYW5nZS0+c2V0U3RhcnQocmVzdWx0UmFuZ2UtPmVuZENvbnRhaW5lcihpZ25v
cmVkRXhjZXB0aW9uKSwgcmVzdWx0UmFuZ2UtPmVuZE9mZnNldChpZ25vcmVkRXhjZXB0aW9uKSwg
aWdub3JlZEV4Y2VwdGlvbik7CiAKICAgICAgICAgTm9kZSogc2hhZG93VHJlZVJvb3QgPSBzZWFy
Y2hSYW5nZS0+c2hhZG93Um9vdCgpOwotICAgICAgICBpZiAoc2VhcmNoUmFuZ2UtPmNvbGxhcHNl
ZChleGNlcHRpb24pICYmIHNoYWRvd1RyZWVSb290KQotICAgICAgICAgICAgc2VhcmNoUmFuZ2Ut
PnNldEVuZChzaGFkb3dUcmVlUm9vdCwgc2hhZG93VHJlZVJvb3QtPmNoaWxkTm9kZUNvdW50KCks
IGV4Y2VwdGlvbik7CisgICAgICAgIGlmIChzZWFyY2hSYW5nZS0+Y29sbGFwc2VkKGlnbm9yZWRF
eGNlcHRpb24pICYmIHNoYWRvd1RyZWVSb290KQorICAgICAgICAgICAgc2VhcmNoUmFuZ2UtPnNl
dEVuZChzaGFkb3dUcmVlUm9vdCwgc2hhZG93VHJlZVJvb3QtPmNoaWxkTm9kZUNvdW50KCksIGln
bm9yZWRFeGNlcHRpb24pOwogICAgIH0gd2hpbGUgKHRydWUpOwogCiAgICAgaWYgKG1hcmtNYXRj
aGVzIHx8IG1hdGNoZXMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3Bw
CmluZGV4IDJmMDljM2Y1MzAyZTlmYzg1NTdmNzMzNGJmYTcyODQ5N2QyZjM0MGUuLjlhYWRkM2Y2
ZjczNzIwYjkxMDUwYTQzYWE5Y2Y5M2VhODAxMzFmZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3JDb21tYW5kLmNwcApAQCAtNDQ1LDcgKzQ0NSw3IEBAIHN0YXRpYyBib29sIGV4ZWN1
dGVGb3JtYXRCbG9jayhGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwg
Y29uc3QKICAgICBpZiAodGFnTmFtZVswXSA9PSAnPCcgJiYgdGFnTmFtZVt0YWdOYW1lLmxlbmd0
aCgpIC0gMV0gPT0gJz4nKQogICAgICAgICB0YWdOYW1lID0gdGFnTmFtZS5zdWJzdHJpbmcoMSwg
dGFnTmFtZS5sZW5ndGgoKSAtIDIpOwogCi0gICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKICAgICBTdHJpbmcgbG9jYWxOYW1lLCBwcmVmaXg7CiAgICAgaWYg
KCFEb2N1bWVudDo6cGFyc2VRdWFsaWZpZWROYW1lKHRhZ05hbWUsIHByZWZpeCwgbG9jYWxOYW1l
LCBlYykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRm9ybWF0QmxvY2tDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Rm9ybWF0QmxvY2tDb21tYW5kLmNwcAppbmRleCA3YzkxMmQxYTc5NzUxMDZhNDNhYmM5NDhlODYx
MTdhZWNmMTA0NzVkLi42MDI0MGI5MzEwOWJjNzY1MGU4MDQ4N2VlN2E4YTE0MjJmMmFlOTAxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb3JtYXRCbG9ja0NvbW1hbmQuY3BwCkBAIC0x
MDAsNyArMTAwLDcgQEAgRWxlbWVudCogRm9ybWF0QmxvY2tDb21tYW5kOjplbGVtZW50Rm9yRm9y
bWF0QmxvY2tDb21tYW5kKFJhbmdlKiByYW5nZSkKICAgICBpZiAoIXJhbmdlKQogICAgICAgICBy
ZXR1cm4gMDsKIAotICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CiAgICAgTm9kZSogY29tbW9uQW5jZXN0b3IgPSByYW5nZS0+Y29tbW9uQW5jZXN0b3JDb250
YWluZXIoZWMpOwogICAgIHdoaWxlIChjb21tb25BbmNlc3RvciAmJiAhaXNFbGVtZW50Rm9yRm9y
bWF0QmxvY2soY29tbW9uQW5jZXN0b3IpKQogICAgICAgICBjb21tb25BbmNlc3RvciA9IGNvbW1v
bkFuY2VzdG9yLT5wYXJlbnROb2RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0luc2VydEludG9UZXh0Tm9kZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9JbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmNwcAppbmRleCAzYWRhYTA2YzFmNjhmMGMzNmQ1
N2E5MWEwNDk4NTkyOTRmNDMzZDU1Li45YzRjYjc0YjkzYWY3NzMxMTlmNjFiMjY5MjljMDYyM2Ix
NjQxZDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydEludG9UZXh0
Tm9kZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0SW50b1Rl
eHROb2RlQ29tbWFuZC5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBJbnNlcnRJbnRvVGV4dE5v
ZGVDb21tYW5kOjpkb0FwcGx5KCkKICAgICAgICAgICAgIHJlbmRlclRleHQtPm1vbWVudGFyaWx5
UmV2ZWFsTGFzdFR5cGVkQ2hhcmFjdGVyKG1fb2Zmc2V0ICsgbV90ZXh0Lmxlbmd0aCgpIC0gMSk7
CiAgICAgfQogCi0gICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKICAgICBtX25vZGUtPmluc2VydERhdGEobV9vZmZzZXQsIG1fdGV4dCwgZWMpOwogCiAgICAg
aWYgKEFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkpCkBAIC03Niw3ICs3Niw3
IEBAIHZvaWQgSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZDo6ZG9VbmFwcGx5KCkKICAgICBpZiAo
QVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSkKICAgICAgICAgZG9jdW1lbnQo
KS0+YXhPYmplY3RDYWNoZSgpLT5ub2RlVGV4dENoYW5nZU5vdGlmaWNhdGlvbihtX25vZGUuZ2V0
KCksIEFYT2JqZWN0Q2FjaGU6OkFYVGV4dERlbGV0ZWQsIG1fb2Zmc2V0LCBtX3RleHQpOwogCi0g
ICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBtX25v
ZGUtPmRlbGV0ZURhdGEobV9vZmZzZXQsIG1fdGV4dC5sZW5ndGgoKSwgZWMpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpc3RDb21tYW5kLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwCmluZGV4IDcwODJlOGMw
NDQwOGRjYjhiNzgyZGZlM2Q0YzU2ODM1Y2QzYWE1NzUuLjdhYTIzZmY3ODczNmEzMTkxZmMzNjJk
YTE5NjZmMzZlMzkyYmQ0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5z
ZXJ0TGlzdENvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGlz
dENvbW1hbmQuY3BwCkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBJbnNlcnRMaXN0Q29tbWFuZDo6
ZG9BcHBseUZvclNpbmdsZVBhcmFncmFwaChib29sIGZvcmNlQ3JlYXRlTGlzdCwgY29uc3QgUXUK
IAogICAgICAgICAgICAgLy8gUmVzdG9yZSB0aGUgc3RhcnQgYW5kIHRoZSBlbmQgb2YgY3VycmVu
dCBzZWxlY3Rpb24gaWYgdGhleSBzdGFydGVkIGluc2lkZSBsaXN0Tm9kZQogICAgICAgICAgICAg
Ly8gYmVjYXVzZSBtb3ZlUGFyYWdyYXBoV2l0aENsb25lcyBjb3VsZCBoYXZlIHJlbW92ZWQgdGhl
bS4KLSAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgICAgICAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKICAgICAgICAgICAgIGlmIChyYW5nZVN0YXJ0SXNJbkxpc3QgJiYgbmV3TGlz
dCkKICAgICAgICAgICAgICAgICBjdXJyZW50U2VsZWN0aW9uLT5zZXRTdGFydChuZXdMaXN0LCAw
LCBlYyk7CiAgICAgICAgICAgICBpZiAocmFuZ2VFbmRJc0luTGlzdCAmJiBuZXdMaXN0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnROb2RlQmVmb3JlQ29tbWFuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydE5vZGVCZWZvcmVDb21tYW5kLmNwcApp
bmRleCBmODY4MWZmMmYyNmQ2MjM1Njg5MWIxMDUzZWYxNmU0OTY2YjI5YjM4Li45MjBmYjhhNWQ5
ZTEyNGQ1ZDQ1YjNhODA1N2Y1NDAxYjIzM2NiNDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0luc2VydE5vZGVCZWZvcmVDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0luc2VydE5vZGVCZWZvcmVDb21tYW5kLmNwcApAQCAtNTQsNyArNTQsNyBAQCB2
b2lkIEluc2VydE5vZGVCZWZvcmVDb21tYW5kOjpkb0FwcGx5KCkKICAgICAgICAgcmV0dXJuOwog
ICAgIEFTU0VSVChwYXJlbnQtPmlzQ29udGVudEVkaXRhYmxlKE5vZGU6OlVzZXJTZWxlY3RBbGxJ
c0Fsd2F5c05vbkVkaXRhYmxlKSk7CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjOworICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwogICAgIHBhcmVudC0+aW5zZXJ0QmVmb3JlKG1faW5zZXJ0Q2hpbGQu
Z2V0KCksIG1fcmVmQ2hpbGQuZ2V0KCksIGVjLCB0cnVlIC8qIGxhenlBdHRhY2ggKi8pOwogCiAg
ICAgaWYgKEFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkpCkBAIC03MCw3ICs3
MCw3IEBAIHZvaWQgSW5zZXJ0Tm9kZUJlZm9yZUNvbW1hbmQ6OmRvVW5hcHBseSgpCiAgICAgaWYg
KEFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkpCiAgICAgICAgIGRvY3VtZW50
KCktPmF4T2JqZWN0Q2FjaGUoKS0+bm9kZVRleHRDaGFuZ2VOb3RpZmljYXRpb24obV9pbnNlcnRD
aGlsZC5nZXQoKSwgQVhPYmplY3RDYWNoZTo6QVhUZXh0RGVsZXRlZCwgMCwgbV9pbnNlcnRDaGls
ZC0+bm9kZVZhbHVlKCkpOwogCi0gICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKICAgICBtX2luc2VydENoaWxkLT5yZW1vdmUoZWMpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCmluZGV4IGMzNGU1NDhjYzhm
NzBhMDE0NmU4MjhiYjY5MmIzOWNkNGM4MTAzOGUuLjY2NjE0ZmNlOTU1YWNkODY2Njc4MzY4ZDQz
ZTRiMTYzOTliY2MxMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3Vw
QWNjdW11bGF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11
bGF0b3IuY3BwCkBAIC0yNDUsNyArMjQ1LDcgQEAgdm9pZCBNYXJrdXBBY2N1bXVsYXRvcjo6YXBw
ZW5kTm9kZVZhbHVlKFN0cmluZ0J1aWxkZXImIHJlc3VsdCwgY29uc3QgTm9kZSogbm9kZSwKICAg
ICB1bnNpZ25lZCBzdGFydCA9IDA7CiAKICAgICBpZiAocmFuZ2UpIHsKLSAgICAgICAgRXhjZXB0
aW9uQ29kZSBlYzsKKyAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgICAgIGlmIChu
b2RlID09IHJhbmdlLT5lbmRDb250YWluZXIoZWMpKQogICAgICAgICAgICAgbGVuZ3RoID0gcmFu
Z2UtPmVuZE9mZnNldChlYyk7CiAgICAgICAgIGlmIChub2RlID09IHJhbmdlLT5zdGFydENvbnRh
aW5lcihlYykpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlQ1NT
UHJvcGVydHlDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlQ1NTUHJv
cGVydHlDb21tYW5kLmNwcAppbmRleCA1OGNhNmRiNjEwMmZkZTdlYWUxZTY2MDQ2OGM2ODM4ZGFl
OWUwOTc1Li5jMjk2MmMzYWZiZDAzMjc3NjEyOTU0YjI5ZGMwZGZkYmZiM2U3MmM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZUNTU1Byb3BlcnR5Q29tbWFuZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVDU1NQcm9wZXJ0eUNvbW1hbmQuY3Bw
CkBAIC00OCwxNCArNDgsMTQgQEAgdm9pZCBSZW1vdmVDU1NQcm9wZXJ0eUNvbW1hbmQ6OmRvQXBw
bHkoKQogICAgIG1faW1wb3J0YW50ID0gc3R5bGUtPnByb3BlcnR5SXNJbXBvcnRhbnQobV9wcm9w
ZXJ0eSk7CiAKICAgICAvLyBNdXRhdGUgdXNpbmcgdGhlIENTU09NIHdyYXBwZXIgc28gd2UgZ2V0
IHRoZSBzYW1lIGV2ZW50IGJlaGF2aW9yIGFzIGEgc2NyaXB0LgotICAgIEV4Y2VwdGlvbkNvZGUg
ZWM7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgLy8gU2V0dGluZyB0byBudWxsIHN0
cmluZyByZW1vdmVzIHRoZSBwcm9wZXJ0eS4gV2UgZG9uJ3QgaGF2ZSBpbnRlcm5hbCB2ZXJzaW9u
IG9mIHJlbW92ZVByb3BlcnR5LgogICAgIG1fZWxlbWVudC0+c3R5bGUoKS0+c2V0UHJvcGVydHlJ
bnRlcm5hbChtX3Byb3BlcnR5LCBTdHJpbmcoKSwgZmFsc2UsIGVjKTsKIH0KIAogdm9pZCBSZW1v
dmVDU1NQcm9wZXJ0eUNvbW1hbmQ6OmRvVW5hcHBseSgpCiB7Ci0gICAgRXhjZXB0aW9uQ29kZSBl
YzsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBtX2VsZW1lbnQtPnN0eWxlKCktPnNl
dFByb3BlcnR5SW50ZXJuYWwobV9wcm9wZXJ0eSwgbV9vbGRWYWx1ZSwgbV9pbXBvcnRhbnQsIGVj
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlQ29t
bWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVDb21tYW5kLmNwcApp
bmRleCAyMzEzZDBlZmYzNTAwZDViOTAwMjhkMGNhY2ZmM2YzMTI2ZDUzNmY4Li5hMGVhMDliNGFk
OTRhNjhiOTU5MTJmMjg0ZTk4OTgyMGM1ZjJlM2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1JlbW92ZU5vZGVDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1JlbW92ZU5vZGVDb21tYW5kLmNwcApAQCAtNTEsNyArNTEsNyBAQCB2b2lkIFJlbW92ZU5v
ZGVDb21tYW5kOjpkb0FwcGx5KCkKICAgICBtX3BhcmVudCA9IHBhcmVudDsKICAgICBtX3JlZkNo
aWxkID0gbV9ub2RlLT5uZXh0U2libGluZygpOwogCi0gICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBtX25vZGUtPnJlbW92ZShlYyk7CiB9CiAKQEAg
LTYyLDcgKzYyLDcgQEAgdm9pZCBSZW1vdmVOb2RlQ29tbWFuZDo6ZG9VbmFwcGx5KCkKICAgICBp
ZiAoIXBhcmVudCB8fCAhcGFyZW50LT5yZW5kZXJlcklzRWRpdGFibGUoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
ICAgICBwYXJlbnQtPmluc2VydEJlZm9yZShtX25vZGUuZ2V0KCksIHJlZkNoaWxkLmdldCgpLCBl
Yyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVj
dGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9u
Q29tbWFuZC5jcHAKaW5kZXggNGFkZTY4YWE4Y2YwNzY2ZDJjOGQ4ZjU2M2M0YmM3M2Y0M2EyODFi
Mi4uMTEwOWNiZTllOGMxZjA2MTNjNzQxMjI3MzQ1NzA1YjhjODM0Y2QyYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTUz
OSw3ICs1MzksNyBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpyZW1vdmVSZWR1bmRh
bnRTdHlsZXNBbmRLZWVwU3R5bGVTcGFuSW5saW5lKEluc2VydAogICAgICAgICAgICAgLy8gaW4g
cXVpcmtzIG1vZGUgKHdoaWNoIE1haWwuYXBwIGlzIGFsd2F5cyBpbikuIFdlIHNob3VsZCBsb29r
IGZvciBhbiBhbHRlcm5hdGl2ZS4KICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gTXV0YXRl
IHVzaW5nIHRoZSBDU1NPTSB3cmFwcGVyIHNvIHdlIGdldCB0aGUgc2FtZSBldmVudCBiZWhhdmlv
ciBhcyBhIHNjcmlwdC4KLSAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgICAgICAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICAgICAgICAgIGlmIChpc0Jsb2NrKGVsZW1lbnQp
KQogICAgICAgICAgICAgICAgIGVsZW1lbnQtPnN0eWxlKCktPnNldFByb3BlcnR5SW50ZXJuYWwo
Q1NTUHJvcGVydHlEaXNwbGF5LCAiaW5saW5lIiwgZmFsc2UsIGVjKTsKICAgICAgICAgICAgIGlm
IChlbGVtZW50LT5yZW5kZXJlcigpICYmIGVsZW1lbnQtPnJlbmRlcmVyKCktPnN0eWxlKCktPmlz
RmxvYXRpbmcoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNr
aW5nSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVy
LmNwcAppbmRleCBkNTUzODMwM2QwYmM3YjlmNzQzZjUyZjg5OGViYWI1M2IyMjAzNzFhLi43ZTYw
NmM5ZWZlYTQ1MGZiMjg1NGNmODM2MDc4M2I4ZDhjMjAyYjRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCkBAIC01MzMsNyArNTMzLDcgQEAgYm9v
bCBUZXh0Q2hlY2tpbmdIZWxwZXI6OmlzVW5ncmFtbWF0aWNhbChWZWN0b3I8U3RyaW5nPiYgZ3Vl
c3Nlc1ZlY3RvcikgY29uc3QKICAgICBpZiAoIW1fY2xpZW50KQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwog
ICAgIGlmICghbV9yYW5nZSB8fCBtX3JhbmdlLT5jb2xsYXBzZWQoZWMpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgCkBAIC01NzksNyArNTc5LDcgQEAgVmVjdG9yPFN0cmluZz4gVGV4dENo
ZWNraW5nSGVscGVyOjpndWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0aWNhbFJhbmdlKGJv
b2wKICAgICAgICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7CiAKICAgICBWZWN0b3I8U3RyaW5n
PiBndWVzc2VzOwotICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CiAgICAgbWlzc3BlbGxlZCA9IGZhbHNlOwogICAgIHVuZ3JhbW1hdGljYWwgPSBmYWxzZTsK
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAppbmRleCA5ZGE3MWFl
ZGVhY2JiY2MzZGU1MmNjYTExYTM2ZmVhYzQ1YmIyZWRjLi5kZjBiOWJkZDc4MDc1OTVhODc2MzIw
NzY0YzljMzYzMmFjODQ1NzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Rl
eHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3Iu
Y3BwCkBAIC0yNTQ1LDcgKzI1NDUsNyBAQCBib29sIFRleHRJdGVyYXRvcjo6Z2V0TG9jYXRpb25B
bmRMZW5ndGhGcm9tUmFuZ2UoRWxlbWVudCogc2NvcGUsIGNvbnN0IFJhbmdlKiByYQogICAgIEFT
U0VSVCh0ZXN0UmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkgPT0gc2NvcGUpOwogICAgIGxvY2F0aW9u
ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aCh0ZXN0UmFuZ2UuZ2V0KCkpOwogICAgIAotICAg
IEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgdGVzdFJh
bmdlLT5zZXRFbmQocmFuZ2UtPmVuZENvbnRhaW5lcigpLCByYW5nZS0+ZW5kT2Zmc2V0KCksIGVj
KTsKICAgICBBU1NFUlQodGVzdFJhbmdlLT5zdGFydENvbnRhaW5lcigpID09IHNjb3BlKTsKICAg
ICBsZW5ndGggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHRlc3RSYW5nZS5nZXQoKSkgLSBs
b2NhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV3JhcENvbnRlbnRz
SW5EdW1teVNwYW5Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV3JhcENvbnRl
bnRzSW5EdW1teVNwYW5Db21tYW5kLmNwcAppbmRleCBkY2U0ODFjN2ZmNzA2MWNlOTRjZDMyYTJm
YzdmNWRlNjdjNmY2NTBjLi41NDUwOTdmMjVhMTIwMGRkZjI2MDY3ZGZiYjQwZGFhNzY2NzZlYzdm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dyYXBDb250ZW50c0luRHVtbXlT
cGFuQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XcmFwQ29udGVudHNJ
bkR1bW15U3BhbkNvbW1hbmQuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHZvaWQgV3JhcENvbnRlbnRz
SW5EdW1teVNwYW5Db21tYW5kOjpleGVjdXRlQXBwbHkoKQogICAgIGZvciAoTm9kZSogY2hpbGQg
PSBtX2VsZW1lbnQtPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJs
aW5nKCkpCiAgICAgICAgIGNoaWxkcmVuLmFwcGVuZChjaGlsZCk7CiAgICAgCi0gICAgRXhjZXB0
aW9uQ29kZSBlYzsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICAKICAgICBzaXplX3Qg
c2l6ZSA9IGNoaWxkcmVuLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7
ICsraSkKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBXcmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1h
bmQ6OmRvVW5hcHBseSgpCiAgICAgZm9yIChOb2RlKiBjaGlsZCA9IG1fZHVtbXlTcGFuLT5maXJz
dENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKQogICAgICAgICBj
aGlsZHJlbi5hcHBlbmQoY2hpbGQpOwogCi0gICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKIAogICAgIHNpemVfdCBzaXplID0gY2hpbGRyZW4uc2l6ZSgpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2h0bWxlZGl0aW5nLmNwcAppbmRleCA5NmVmODYzMzVhNTE0Y2YyNzQ3MjQ3NDljYmZjZTMxMmNl
ZDgyYTdjLi5mMjk4MWUzODM1NjBiYzk4Njk5NTVmZjFjZTY2NjAzNjgyZDQxOGNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcApAQCAtOTYsNyArOTYsNyBAQCBpbnQgY29t
cGFyZVBvc2l0aW9ucyhjb25zdCBQb3NpdGlvbiYgYSwgY29uc3QgUG9zaXRpb24mIGIpCiAgICAg
ICAgICAgICBiaWFzID0gMTsKICAgICB9CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjOworICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGludCByZXN1bHQgPSBSYW5nZTo6Y29tcGFyZUJvdW5k
YXJ5UG9pbnRzKG5vZGVBLCBvZmZzZXRBLCBub2RlQiwgb2Zmc2V0QiwgZWMpOwogICAgIHJldHVy
biByZXN1bHQgPyByZXN1bHQgOiBiaWFzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRp
dG9yTWFjLm1tCmluZGV4IDgzZmY3YmRjZDkzNmQ0NjQ0MTVmNGJlN2RjZmViNjMxNDdjNzliNjMu
LmZmYzNmMzZlYTk0MTViYjhkNDE1ZWU5N2YwMTdkYjBkNmQ3ZWE5Y2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTE1NCw3ICsxNTQsNyBAQCBjb25zdCBTaW1w
bGVGb250RGF0YSogRWRpdG9yOjpmb250Rm9yU2VsZWN0aW9uKGJvb2wmIGhhc011bHRpcGxlRm9u
dHMpIGNvbnN0CiAgICAgICAgICAgICByZXN1bHQgPSBzdHlsZS0+Zm9udCgpLnByaW1hcnlGb250
KCk7CiAKICAgICAgICAgaWYgKG5vZGVUb1JlbW92ZSkgewotICAgICAgICAgICAgRXhjZXB0aW9u
Q29kZSBlYzsKKyAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgICAgICAgICAg
bm9kZVRvUmVtb3ZlLT5yZW1vdmUoZWMpOwogICAgICAgICAgICAgQVNTRVJUKCFlYyk7CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCA0NmI5NDNiNzdkNWJmMjUwMDBl
ZGEwYjgxODkwY2NhMjNiZjhlOGFjLi5mNzkzYjU4NTYyNjQwMmY5OTgyNjNlNDMyMDA0NDRkNDU3
YWNiM2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC0yNTQsMTUgKzI1NCwxNSBA
QCBTdHJpbmcgU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnJlbmRlcmVkVGV4dChjb25zdCBOb2Rl
KiBub2RlLCBjb25zdCBSYW5nZSogcmFuZwogICAgIGlmICghbm9kZS0+aXNUZXh0Tm9kZSgpKQog
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjOworICAgIEV4
Y2VwdGlvbkNvZGUgaWdub3JlZEV4Y2VwdGlvbiA9IDA7CiAgICAgY29uc3QgVGV4dCogdGV4dE5v
ZGUgPSBzdGF0aWNfY2FzdDxjb25zdCBUZXh0Kj4obm9kZSk7CiAgICAgdW5zaWduZWQgc3RhcnRP
ZmZzZXQgPSAwOwogICAgIHVuc2lnbmVkIGVuZE9mZnNldCA9IHRleHROb2RlLT5sZW5ndGgoKTsK
IAotICAgIGlmIChyYW5nZSAmJiBub2RlID09IHJhbmdlLT5zdGFydENvbnRhaW5lcihlYykpCi0g
ICAgICAgIHN0YXJ0T2Zmc2V0ID0gcmFuZ2UtPnN0YXJ0T2Zmc2V0KGVjKTsKLSAgICBpZiAocmFu
Z2UgJiYgbm9kZSA9PSByYW5nZS0+ZW5kQ29udGFpbmVyKGVjKSkKLSAgICAgICAgZW5kT2Zmc2V0
ID0gcmFuZ2UtPmVuZE9mZnNldChlYyk7CisgICAgaWYgKHJhbmdlICYmIG5vZGUgPT0gcmFuZ2Ut
PnN0YXJ0Q29udGFpbmVyKGlnbm9yZWRFeGNlcHRpb24pKQorICAgICAgICBzdGFydE9mZnNldCA9
IHJhbmdlLT5zdGFydE9mZnNldChpZ25vcmVkRXhjZXB0aW9uKTsKKyAgICBpZiAocmFuZ2UgJiYg
bm9kZSA9PSByYW5nZS0+ZW5kQ29udGFpbmVyKGlnbm9yZWRFeGNlcHRpb24pKQorICAgICAgICBl
bmRPZmZzZXQgPSByYW5nZS0+ZW5kT2Zmc2V0KGlnbm9yZWRFeGNlcHRpb24pOwogCiAgICAgUG9z
aXRpb24gc3RhcnQgPSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oY29uc3RfY2FzdDxOb2Rl
Kj4obm9kZSksIHN0YXJ0T2Zmc2V0KTsKICAgICBQb3NpdGlvbiBlbmQgPSBjcmVhdGVMZWdhY3lF
ZGl0aW5nUG9zaXRpb24oY29uc3RfY2FzdDxOb2RlKj4obm9kZSksIGVuZE9mZnNldCk7CkBAIC0y
NzUsMTEgKzI3NSwxMSBAQCBTdHJpbmcgU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnN0cmluZ1Zh
bHVlRm9yUmFuZ2UoY29uc3QgTm9kZSogbm9kZSwgY29uc3QgUmFuZwogICAgICAgICByZXR1cm4g
bm9kZS0+bm9kZVZhbHVlKCk7CiAKICAgICBTdHJpbmcgc3RyID0gbm9kZS0+bm9kZVZhbHVlKCk7
Ci0gICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICBpZiAobm9kZSA9PSByYW5nZS0+ZW5kQ29udGFp
bmVyKGVjKSkKLSAgICAgICAgc3RyLnRydW5jYXRlKHJhbmdlLT5lbmRPZmZzZXQoZWMpKTsKLSAg
ICBpZiAobm9kZSA9PSByYW5nZS0+c3RhcnRDb250YWluZXIoZWMpKQotICAgICAgICBzdHIucmVt
b3ZlKDAsIHJhbmdlLT5zdGFydE9mZnNldChlYykpOworICAgIEV4Y2VwdGlvbkNvZGUgaWdub3Jl
ZEV4Y2VwdGlvbiA9IDA7CisgICAgaWYgKG5vZGUgPT0gcmFuZ2UtPmVuZENvbnRhaW5lcihpZ25v
cmVkRXhjZXB0aW9uKSkKKyAgICAgICAgc3RyLnRydW5jYXRlKHJhbmdlLT5lbmRPZmZzZXQoaWdu
b3JlZEV4Y2VwdGlvbikpOworICAgIGlmIChub2RlID09IHJhbmdlLT5zdGFydENvbnRhaW5lcihp
Z25vcmVkRXhjZXB0aW9uKSkKKyAgICAgICAgc3RyLnJlbW92ZSgwLCByYW5nZS0+c3RhcnRPZmZz
ZXQoaWdub3JlZEV4Y2VwdGlvbikpOwogICAgIHJldHVybiBzdHI7CiB9CiAKQEAgLTUwNiw4ICs1
MDYsOCBAQCBzdGF0aWMgYm9vbCBpc0VsZW1lbnRQcmVzZW50YXRpb25hbChjb25zdCBOb2RlKiBu
b2RlKQogCiBzdGF0aWMgTm9kZSogaGlnaGVzdEFuY2VzdG9yVG9XcmFwTWFya3VwKGNvbnN0IFJh
bmdlKiByYW5nZSwgRUFubm90YXRlRm9ySW50ZXJjaGFuZ2Ugc2hvdWxkQW5ub3RhdGUpCiB7Ci0g
ICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICBOb2RlKiBjb21tb25BbmNlc3RvciA9IHJhbmdlLT5j
b21tb25BbmNlc3RvckNvbnRhaW5lcihlYyk7CisgICAgRXhjZXB0aW9uQ29kZSBpZ25vcmVkRXhj
ZXB0aW9uID0gMDsKKyAgICBOb2RlKiBjb21tb25BbmNlc3RvciA9IHJhbmdlLT5jb21tb25BbmNl
c3RvckNvbnRhaW5lcihpZ25vcmVkRXhjZXB0aW9uKTsKICAgICBBU1NFUlQoY29tbW9uQW5jZXN0
b3IpOwogICAgIE5vZGUqIHNwZWNpYWxDb21tb25BbmNlc3RvciA9IDA7CiAgICAgaWYgKHNob3Vs
ZEFubm90YXRlID09IEFubm90YXRlRm9ySW50ZXJjaGFuZ2UpIHsKQEAgLTEwNDQsMTggKzEwNDQs
MTggQEAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvclRyYW5z
Zm9ybVRvRnJhZ21lbnQoY29uc3QgU3RyaW5nJgogCiBzdGF0aWMgaW5saW5lIHZvaWQgcmVtb3Zl
RWxlbWVudFByZXNlcnZpbmdDaGlsZHJlbihQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZy
YWdtZW50LCBIVE1MRWxlbWVudCogZWxlbWVudCkKIHsKLSAgICBFeGNlcHRpb25Db2RlIGlnbm9y
ZWRFeGNlcHRpb25Db2RlOworICAgIEV4Y2VwdGlvbkNvZGUgaWdub3JlZEV4Y2VwdGlvbiA9IDA7
CiAKICAgICBSZWZQdHI8Tm9kZT4gbmV4dENoaWxkOwogICAgIGZvciAoUmVmUHRyPE5vZGU+IGNo
aWxkID0gZWxlbWVudC0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBuZXh0Q2hpbGQpIHsK
ICAgICAgICAgbmV4dENoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCk7Ci0gICAgICAgIGVsZW1l
bnQtPnJlbW92ZUNoaWxkKGNoaWxkLmdldCgpLCBpZ25vcmVkRXhjZXB0aW9uQ29kZSk7Ci0gICAg
ICAgIEFTU0VSVCghaWdub3JlZEV4Y2VwdGlvbkNvZGUpOwotICAgICAgICBmcmFnbWVudC0+aW5z
ZXJ0QmVmb3JlKGNoaWxkLCBlbGVtZW50LCBpZ25vcmVkRXhjZXB0aW9uQ29kZSk7Ci0gICAgICAg
IEFTU0VSVCghaWdub3JlZEV4Y2VwdGlvbkNvZGUpOworICAgICAgICBlbGVtZW50LT5yZW1vdmVD
aGlsZChjaGlsZC5nZXQoKSwgaWdub3JlZEV4Y2VwdGlvbik7CisgICAgICAgIEFTU0VSVCghaWdu
b3JlZEV4Y2VwdGlvbik7CisgICAgICAgIGZyYWdtZW50LT5pbnNlcnRCZWZvcmUoY2hpbGQsIGVs
ZW1lbnQsIGlnbm9yZWRFeGNlcHRpb24pOworICAgICAgICBBU1NFUlQoIWlnbm9yZWRFeGNlcHRp
b24pOwogICAgIH0KLSAgICBmcmFnbWVudC0+cmVtb3ZlQ2hpbGQoZWxlbWVudCwgaWdub3JlZEV4
Y2VwdGlvbkNvZGUpOwotICAgIEFTU0VSVCghaWdub3JlZEV4Y2VwdGlvbkNvZGUpOworICAgIGZy
YWdtZW50LT5yZW1vdmVDaGlsZChlbGVtZW50LCBpZ25vcmVkRXhjZXB0aW9uKTsKKyAgICBBU1NF
UlQoIWlnbm9yZWRFeGNlcHRpb24pOwogfQogCiBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+
IGNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudChjb25zdCBTdHJpbmcmIG1hcmt1cCwgSFRNTEVsZW1l
bnQqIGVsZW1lbnQsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiBzY3JpcHRpbmdQZXJtaXNz
aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3Rv
cnlEb2N1bWVudC5jcHAKaW5kZXggYzFhMDE1MGUzMTAxZWE0NTcyYmMyMzQxMDU1ZGNhOTg2ZjRm
MTA5YS4uZGZmMmM0ZTc2NDllMDk3MGQ4NWQ0MmQzNzMzNjExMjljNWQ4OTIwYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKQEAgLTEwOSw3ICsxMDks
NyBAQCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJz
ZXIoSFRNTERvY3VtZW50KiBkb2N1bWVudCkKIAogdm9pZCBGVFBEaXJlY3RvcnlEb2N1bWVudFBh
cnNlcjo6YXBwZW5kRW50cnkoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBz
aXplLCBjb25zdCBTdHJpbmcmIGRhdGUsIGJvb2wgaXNEaXJlY3RvcnkpCiB7Ci0gICAgRXhjZXB0
aW9uQ29kZSBlYzsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKIAogICAgIFJlZlB0cjxFbGVt
ZW50PiByb3dFbGVtZW50ID0gbV90YWJsZUVsZW1lbnQtPmluc2VydFJvdygtMSwgZWMpOwogICAg
IHJvd0VsZW1lbnQtPnNldEF0dHJpYnV0ZSgiY2xhc3MiLCAiZnRwRGlyZWN0b3J5RW50cnlSb3ci
LCBlYyk7CkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNl
cjo6YXBwZW5kRW50cnkoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW4KIAogUGFz
c1JlZlB0cjxFbGVtZW50PiBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6Y3JlYXRlVERGb3JG
aWxlbmFtZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQogewotICAgIEV4Y2VwdGlvbkNvZGUgZWM7
CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAKICAgICBTdHJpbmcgZnVsbFVSTCA9IGRvY3Vt
ZW50KCktPmJhc2VVUkwoKS5zdHJpbmcoKTsKICAgICBpZiAoZnVsbFVSTFtmdWxsVVJMLmxlbmd0
aCgpIC0gMV0gPT0gJy8nKQpAQCAtMzE5LDcgKzMxOSw3IEBAIGJvb2wgRlRQRGlyZWN0b3J5RG9j
dW1lbnRQYXJzZXI6OmxvYWREb2N1bWVudFRlbXBsYXRlKCkKICAgICAvLyBPdGhlcndpc2UgY3Jl
YXRlIG9uZSBtYW51YWxseQogICAgIHRhYmxlRWxlbWVudCA9IGRvY3VtZW50KCktPmNyZWF0ZUVs
ZW1lbnQodGFibGVUYWcsIGZhbHNlKTsKICAgICBtX3RhYmxlRWxlbWVudCA9IHN0YXRpY19jYXN0
PEhUTUxUYWJsZUVsZW1lbnQqPih0YWJsZUVsZW1lbnQuZ2V0KCkpOwotICAgIEV4Y2VwdGlvbkNv
ZGUgZWM7ICAgICAgICAKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsgICAgICAgIAogICAgIG1f
dGFibGVFbGVtZW50LT5zZXRBdHRyaWJ1dGUoImlkIiwgImZ0cERpcmVjdG9yeVRhYmxlIiwgZWMp
OwogCiAgICAgLy8gSWYgd2UgZGlkbid0IGZpbmQgdGhlIHRhYmxlIGVsZW1lbnQsIGxldHMgdHJ5
IHRvIGFwcGVuZCBvdXIgb3duIHRvIHRoZSBib2R5CkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCBG
VFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6Y3JlYXRlQmFzaWNEb2N1bWVudCgpCiAKICAgICBS
ZWZQdHI8RWxlbWVudD4gYm9keUVsZW1lbnQgPSBkb2N1bWVudCgpLT5jcmVhdGVFbGVtZW50KGJv
ZHlUYWcsIGZhbHNlKTsKIAotICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CiAgICAgZG9jdW1lbnQoKS0+YXBwZW5kQ2hpbGQoYm9keUVsZW1lbnQsIGVjKTsK
IAogICAgIFJlZlB0cjxFbGVtZW50PiB0YWJsZUVsZW1lbnQgPSBkb2N1bWVudCgpLT5jcmVhdGVF
bGVtZW50KHRhYmxlVGFnLCBmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcAppbmRleCBlZDViOGViMjYxYTA1OTEyNzlmM2Y4YjhjYzRmYmRmOWY4MjI5ZDA0Li5k
YzgxMDBjNjQ3MjgxOGVmNGIxNzliY2VkZWQ3OWRiYTcyMmYwNThhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTE5OTAsMTUgKzE5OTAsMTUgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpyZXdpbmQoZmxvYXQgdGltZURlbHRhKQogewogICAgIExPRyhNZWRp
YSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnJld2luZCglZikiLCB0aW1lRGVsdGEpOwogCi0gICAgRXhj
ZXB0aW9uQ29kZSBlOwotICAgIHNldEN1cnJlbnRUaW1lKG1heChjdXJyZW50VGltZSgpIC0gdGlt
ZURlbHRhLCBtaW5UaW1lU2Vla2FibGUoKSksIGUpOworICAgIEV4Y2VwdGlvbkNvZGUgaWdub3Jl
ZEV4Y2VwdGlvbiA9IDA7CisgICAgc2V0Q3VycmVudFRpbWUobWF4KGN1cnJlbnRUaW1lKCkgLSB0
aW1lRGVsdGEsIG1pblRpbWVTZWVrYWJsZSgpKSwgaWdub3JlZEV4Y2VwdGlvbik7CiB9CiAKIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6cmV0dXJuVG9SZWFsdGltZSgpCiB7CiAgICAgTE9HKE1lZGlh
LCAiSFRNTE1lZGlhRWxlbWVudDo6cmV0dXJuVG9SZWFsdGltZSIpOwotICAgIEV4Y2VwdGlvbkNv
ZGUgZTsKLSAgICBzZXRDdXJyZW50VGltZShtYXhUaW1lU2Vla2FibGUoKSwgZSk7CisgICAgRXhj
ZXB0aW9uQ29kZSBpZ25vcmVkRXhjZXB0aW9uID0gMDsKKyAgICBzZXRDdXJyZW50VGltZShtYXhU
aW1lU2Vla2FibGUoKSwgaWdub3JlZEV4Y2VwdGlvbik7CiB9ICAKIAogdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjphZGRQbGF5ZWRSYW5nZShmbG9hdCBzdGFydCwgZmxvYXQgZW5kKQpAQCAtMjQwNCw4
ICsyNDA0LDggQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwbGF5SW50ZXJuYWwoKQogICAgICAg
ICBzY2hlZHVsZUxvYWQoTWVkaWFSZXNvdXJjZSk7CiAKICAgICBpZiAoZW5kZWRQbGF5YmFjaygp
KSB7Ci0gICAgICAgIEV4Y2VwdGlvbkNvZGUgdW51c2VkOwotICAgICAgICBzZWVrKDAsIHVudXNl
ZCk7CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgaWdub3JlZEV4Y2VwdGlvbiA9IDA7CisgICAgICAg
IHNlZWsoMCwgaWdub3JlZEV4Y2VwdGlvbik7CiAgICAgfQogCiAgICAgaWYgKG1fbWVkaWFDb250
cm9sbGVyKQpAQCAtMjc0OSw3ICsyNzQ5LDcgQEAgZmxvYXQgSFRNTE1lZGlhRWxlbWVudDo6cGVy
Y2VudExvYWRlZCgpIGNvbnN0CiAgICAgZmxvYXQgYnVmZmVyZWQgPSAwOwogICAgIFJlZlB0cjxU
aW1lUmFuZ2VzPiB0aW1lUmFuZ2VzID0gbV9wbGF5ZXItPmJ1ZmZlcmVkKCk7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHRpbWVSYW5nZXMtPmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAg
RXhjZXB0aW9uQ29kZSBpZ25vcmVkRXhjZXB0aW9uOworICAgICAgICBFeGNlcHRpb25Db2RlIGln
bm9yZWRFeGNlcHRpb24gPSAwOwogICAgICAgICBmbG9hdCBzdGFydCA9IHRpbWVSYW5nZXMtPnN0
YXJ0KGksIGlnbm9yZWRFeGNlcHRpb24pOwogICAgICAgICBmbG9hdCBlbmQgPSB0aW1lUmFuZ2Vz
LT5lbmQoaSwgaWdub3JlZEV4Y2VwdGlvbik7CiAgICAgICAgIGJ1ZmZlcmVkICs9IGVuZCAtIHN0
YXJ0OwpAQCAtMzM1Miw3ICszMzUyLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBs
YXllclRpbWVDaGFuZ2VkKE1lZGlhUGxheWVyKikKICAgICBpZiAoIWlzbmFuKGR1cikgJiYgZHVy
ICYmIG5vdyA+PSBkdXIgJiYgbV9wbGF5YmFja1JhdGUgPiAwKSB7CiAgICAgICAgIC8vIElmIHRo
ZSBtZWRpYSBlbGVtZW50IGhhcyBhIGxvb3AgYXR0cmlidXRlIHNwZWNpZmllZCBhbmQgZG9lcyBu
b3QgaGF2ZSBhIGN1cnJlbnQgbWVkaWEgY29udHJvbGxlciwKICAgICAgICAgaWYgKGxvb3AoKSAm
JiAhbV9tZWRpYUNvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgaWdub3Jl
ZEV4Y2VwdGlvbjsKKyAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgaWdub3JlZEV4Y2VwdGlvbiA9
IDA7CiAgICAgICAgICAgICBtX3NlbnRFbmRFdmVudCA9IGZhbHNlOwogICAgICAgICAgICAgLy8g
IHRoZW4gc2VlayB0byB0aGUgZWFybGllc3QgcG9zc2libGUgcG9zaXRpb24gb2YgdGhlIG1lZGlh
IHJlc291cmNlIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KICAgICAgICAgICAgIHNlZWsoc3RhcnRU
aW1lKCksIGlnbm9yZWRFeGNlcHRpb24pOwpAQCAtMzQxOSw3ICszNDE5LDcgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjptZWRpYVBsYXllckR1cmF0aW9uQ2hhbmdlZChNZWRpYVBsYXllciogcGxh
eWVyKQogCiAgICAgZmxvYXQgbm93ID0gY3VycmVudFRpbWUoKTsKICAgICBmbG9hdCBkdXIgPSBk
dXJhdGlvbigpOwotICAgIEV4Y2VwdGlvbkNvZGUgaWdub3JlZEV4Y2VwdGlvbjsKKyAgICBFeGNl
cHRpb25Db2RlIGlnbm9yZWRFeGNlcHRpb24gPSAwOwogICAgIGlmIChub3cgPiBkdXIpCiAgICAg
ICAgIHNlZWsoZHVyLCBpZ25vcmVkRXhjZXB0aW9uKTsKIApAQCAtNDU5OSw3ICs0NTk5LDcgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlTWVkaWFGcmFnbWVudFVSSSgpCiB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OmFwcGx5TWVkaWFGcmFnbWVudFVSSSgpCiB7CiAgICAgaWYgKG1fZnJh
Z21lbnRTdGFydFRpbWUgIT0gTWVkaWFQbGF5ZXI6OmludmFsaWRUaW1lKCkpIHsKLSAgICAgICAg
RXhjZXB0aW9uQ29kZSBpZ25vcmVkRXhjZXB0aW9uOworICAgICAgICBFeGNlcHRpb25Db2RlIGln
bm9yZWRFeGNlcHRpb24gPSAwOwogICAgICAgICBtX3NlbnRFbmRFdmVudCA9IGZhbHNlOwogICAg
ICAgICBzZWVrKG1fZnJhZ21lbnRTdGFydFRpbWUsIGlnbm9yZWRFeGNlcHRpb24pOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNwcAppbmRleCA4
NTVhNDA3ZTZhZmY2NjUzYTEzNjkyZDY3ZWQ3OGMzNjllOTljODAyLi5kN2MyNjdiYTE3Yjc5NzBk
NmZhMmM0N2EwN2Y0MzE3NWI1MmU4YjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
T3B0aW9uc0NvbGxlY3Rpb24uY3BwCkBAIC0zOCwxMiArMzgsMTIgQEAgUGFzc1JlZlB0cjxIVE1M
T3B0aW9uc0NvbGxlY3Rpb24+IEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6Y3JlYXRlKE5vZGUqIHNl
bGVjdCwgQ28KICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxPcHRpb25zQ29sbGVjdGlvbihz
ZWxlY3QpKTsKIH0KIAotdm9pZCBIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmFkZChQYXNzUmVmUHRy
PEhUTUxPcHRpb25FbGVtZW50PiBlbGVtZW50LCBFeGNlcHRpb25Db2RlICZlYykKK3ZvaWQgSFRN
TE9wdGlvbnNDb2xsZWN0aW9uOjphZGQoUGFzc1JlZlB0cjxIVE1MT3B0aW9uRWxlbWVudD4gZWxl
bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgYWRkKGVsZW1lbnQsIGxlbmd0aCgpLCBl
Yyk7CiB9CiAKLXZvaWQgSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjphZGQoUGFzc1JlZlB0cjxIVE1M
T3B0aW9uRWxlbWVudD4gZWxlbWVudCwgaW50IGluZGV4LCBFeGNlcHRpb25Db2RlICZlYykKK3Zv
aWQgSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjphZGQoUGFzc1JlZlB0cjxIVE1MT3B0aW9uRWxlbWVu
dD4gZWxlbWVudCwgaW50IGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBIVE1MT3B0
aW9uRWxlbWVudCogbmV3T3B0aW9uID0gZWxlbWVudC5nZXQoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcAppbmRleCBhODM5MDJhNTk3OWZjMGE5OGMyNzk0MjRh
MGIyZjEyYjA4NjM4MjFkLi43YTEzZDA1YzBlZTM5NTQ5OGRhZTQwY2EwOWVmZmMxYjUxNjM3NjE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcApAQCAtMTM2LDcg
KzEzNiw3IEBAIHZvaWQgSFRNTE91dHB1dEVsZW1lbnQ6OnNldERlZmF1bHRWYWx1ZShjb25zdCBT
dHJpbmcmIHZhbHVlKQogdm9pZCBIVE1MT3V0cHV0RWxlbWVudDo6c2V0VGV4dENvbnRlbnRJbnRl
cm5hbChjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIEFTU0VSVCghbV9pc1NldFRleHRDb250
ZW50SW5Qcm9ncmVzcyk7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKICAgICBtX2lzU2V0VGV4dENvbnRlbnRJblByb2dyZXNzID0gdHJ1ZTsKICAgICBz
ZXRUZXh0Q29udGVudCh2YWx1ZSwgZWMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxl
Y3RFbGVtZW50LmNwcAppbmRleCBkN2E2ZjRkOTE2YmI2NWJiOTVjZjEwMTQ0ZjgxMDI2MzIyZTc5
ZjVlLi4zMzkzZGQ0ODMyMWI5MDdmNGQ3MDk4YmQ0MTQ0OWNiMjc1NGE4ZDk0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcApAQCAtMjI0LDcgKzIyNCw3IEBAIHZv
aWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnJlbW92ZShpbnQgb3B0aW9uSW5kZXgpCiAgICAgaWYgKGxp
c3RJbmRleCA8IDApCiAgICAgICAgIHJldHVybjsKIAotICAgIEV4Y2VwdGlvbkNvZGUgZWM7Cisg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgbGlzdEl0ZW1zKClbbGlzdEluZGV4XS0+cmVt
b3ZlKGVjKTsKIH0KIApAQCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6
OnJlbW92ZShIVE1MT3B0aW9uRWxlbWVudCogb3B0aW9uKQogICAgIGlmIChvcHRpb24tPm93bmVy
U2VsZWN0RWxlbWVudCgpICE9IHRoaXMpCiAgICAgICAgIHJldHVybjsKIAotICAgIEV4Y2VwdGlv
bkNvZGUgZWM7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgb3B0aW9uLT5yZW1vdmUo
ZWMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcAppbmRleCA1
OWYwYjBjZTNlMjI5ZTkyYjU2MWJlMmJmN2Q4MGE0NzQ5MGE0MmI5Li5iMjFlNjljNjY4NTA4Mzk4
OGQwYmIxMmQ4ZjU2MGVmNzE0ODc2NmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUYWJsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxl
RWxlbWVudC5jcHAKQEAgLTEyOCwxNCArMTI4LDE0IEBAIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+
IEhUTUxUYWJsZUVsZW1lbnQ6OmNyZWF0ZVRIZWFkKCkKICAgICBpZiAoSFRNTFRhYmxlU2VjdGlv
bkVsZW1lbnQqIGV4aXN0aW5nSGVhZCA9IHRIZWFkKCkpCiAgICAgICAgIHJldHVybiBleGlzdGlu
Z0hlYWQ7CiAgICAgUmVmUHRyPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50PiBoZWFkID0gSFRNTFRh
YmxlU2VjdGlvbkVsZW1lbnQ6OmNyZWF0ZSh0aGVhZFRhZywgZG9jdW1lbnQoKSk7Ci0gICAgRXhj
ZXB0aW9uQ29kZSBlYzsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBzZXRUSGVhZCho
ZWFkLCBlYyk7CiAgICAgcmV0dXJuIGhlYWQucmVsZWFzZSgpOwogfQogCiB2b2lkIEhUTUxUYWJs
ZUVsZW1lbnQ6OmRlbGV0ZVRIZWFkKCkKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVjOworICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIHJlbW92ZUNoaWxkKHRIZWFkKCksIGVjKTsKIH0KIApA
QCAtMTQ0LDE0ICsxNDQsMTQgQEAgUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gSFRNTFRhYmxlRWxl
bWVudDo6Y3JlYXRlVEZvb3QoKQogICAgIGlmIChIVE1MVGFibGVTZWN0aW9uRWxlbWVudCogZXhp
c3RpbmdGb290ID0gdEZvb3QoKSkKICAgICAgICAgcmV0dXJuIGV4aXN0aW5nRm9vdDsKICAgICBS
ZWZQdHI8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ+IGZvb3QgPSBIVE1MVGFibGVTZWN0aW9uRWxl
bWVudDo6Y3JlYXRlKHRmb290VGFnLCBkb2N1bWVudCgpKTsKLSAgICBFeGNlcHRpb25Db2RlIGVj
OworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIHNldFRGb290KGZvb3QsIGVjKTsKICAg
ICByZXR1cm4gZm9vdC5yZWxlYXNlKCk7CiB9CiAKIHZvaWQgSFRNTFRhYmxlRWxlbWVudDo6ZGVs
ZXRlVEZvb3QoKQogewotICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CiAgICAgcmVtb3ZlQ2hpbGQodEZvb3QoKSwgZWMpOwogfQogCkBAIC0xNjgsMTQgKzE2
OCwxNCBAQCBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBIVE1MVGFibGVFbGVtZW50OjpjcmVhdGVD
YXB0aW9uKCkKICAgICBpZiAoSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQqIGV4aXN0aW5nQ2FwdGlv
biA9IGNhcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGV4aXN0aW5nQ2FwdGlvbjsKICAgICBSZWZQ
dHI8SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ+IGNhcHRpb24gPSBIVE1MVGFibGVDYXB0aW9uRWxl
bWVudDo6Y3JlYXRlKGNhcHRpb25UYWcsIGRvY3VtZW50KCkpOwotICAgIEV4Y2VwdGlvbkNvZGUg
ZWM7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgc2V0Q2FwdGlvbihjYXB0aW9uLCBl
Yyk7CiAgICAgcmV0dXJuIGNhcHRpb24ucmVsZWFzZSgpOwogfQogCiB2b2lkIEhUTUxUYWJsZUVs
ZW1lbnQ6OmRlbGV0ZUNhcHRpb24oKQogewotICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgcmVtb3ZlQ2hpbGQoY2FwdGlvbigpLCBlYyk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCmluZGV4IDc2MThh
MzNmMTIyODRmODAwODZkMjdlMzUxMDRlMTgwMjA3Y2UwZTMuLmQxZGZkYTIwZjViZGRjMmExOWE1
NzYyZDQ1NWI3MWZlMGU1ZTlmZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRleHRBcmVhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFy
ZWFFbGVtZW50LmNwcApAQCAtNDE3LDcgKzQxNyw3IEBAIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVu
dDo6c2V0RGVmYXVsdFZhbHVlKGNvbnN0IFN0cmluZyYgZGVmYXVsdFZhbHVlKQogICAgICAgICBp
ZiAobi0+aXNUZXh0Tm9kZSgpKQogICAgICAgICAgICAgdGV4dE5vZGVzLmFwcGVuZChuKTsKICAg
ICB9Ci0gICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAg
ICBzaXplX3Qgc2l6ZSA9IHRleHROb2Rlcy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzaXplOyArK2kpCiAgICAgICAgIHJlbW92ZUNoaWxkKHRleHROb2Rlc1tpXS5nZXQoKSwg
ZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKaW5kZXggNTFhMDMwNGE1ZDBj
NTA0MzQ0YjQ1OGEzYzJhY2MxNjNiZWEzMDJjMS4uODcyY2ViNTE5Yzg4MzVlNDRkNDM1NjI1NTY5
MTM3MTExZmEyMGVkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3Vt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCkBAIC0x
OTIsNyArMTkyLDcgQEAgUGFzc1JlZlB0cjxEb2N1bWVudFBhcnNlcj4gSW1hZ2VEb2N1bWVudDo6
Y3JlYXRlUGFyc2VyKCkKIAogdm9pZCBJbWFnZURvY3VtZW50OjpjcmVhdGVEb2N1bWVudFN0cnVj
dHVyZSgpCiB7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKICAgICAKICAgICBSZWZQdHI8RWxlbWVudD4gcm9vdEVsZW1lbnQgPSBEb2N1bWVudDo6Y3Jl
YXRlRWxlbWVudChodG1sVGFnLCBmYWxzZSk7CiAgICAgYXBwZW5kQ2hpbGQocm9vdEVsZW1lbnQs
IGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAppbmRleCAwOThjMWUxMzViYzQxMTA1ZGNh
ZThhNzU3YjE0NGNjNmJjZmE2MzA0Li4yMWZkZmVkMWY0Nzk0NzRiNzFlZGFhNmMxMjhmYmYyNTRh
MmIxMTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCkBAIC0xMDkwLDcgKzEwOTAsNyBA
QCB2b2lkIElucHV0VHlwZTo6c3RlcFVwRnJvbVJlbmRlcmVyKGludCBuKQogICAgIFN0cmluZyBj
dXJyZW50U3RyaW5nVmFsdWUgPSBlbGVtZW50KCktPnZhbHVlKCk7CiAgICAgRGVjaW1hbCBjdXJy
ZW50ID0gcGFyc2VUb051bWJlck9yTmFOKGN1cnJlbnRTdHJpbmdWYWx1ZSk7CiAgICAgaWYgKCFj
dXJyZW50LmlzRmluaXRlKCkpIHsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICAgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgICAgIGN1cnJlbnQgPSBkZWZhdWx0VmFsdWVGb3JT
dGVwVXAoKTsKICAgICAgICAgY29uc3QgRGVjaW1hbCBuZXh0RGlmZiA9IHN0ZXAgKiBuOwogICAg
ICAgICBpZiAoY3VycmVudCA8IHN0ZXBSYW5nZS5taW5pbXVtKCkgLSBuZXh0RGlmZikKQEAgLTEx
MDAsMTAgKzExMDAsMTAgQEAgdm9pZCBJbnB1dFR5cGU6OnN0ZXBVcEZyb21SZW5kZXJlcihpbnQg
bikKICAgICAgICAgc2V0VmFsdWVBc0RlY2ltYWwoY3VycmVudCwgRGlzcGF0Y2hJbnB1dEFuZENo
YW5nZUV2ZW50LCBlYyk7CiAgICAgfQogICAgIGlmICgoc2lnbiA+IDAgJiYgY3VycmVudCA8IHN0
ZXBSYW5nZS5taW5pbXVtKCkpIHx8IChzaWduIDwgMCAmJiBjdXJyZW50ID4gc3RlcFJhbmdlLm1h
eGltdW0oKSkpIHsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CiAgICAgICAgIHNldFZhbHVlQXNEZWNpbWFsKHNpZ24gPiAwID8gc3RlcFJh
bmdlLm1pbmltdW0oKSA6IHN0ZXBSYW5nZS5tYXhpbXVtKCksIERpc3BhdGNoSW5wdXRBbmRDaGFu
Z2VFdmVudCwgZWMpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7Cisg
ICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgICAgICBpZiAoc3RlcE1pc21hdGNoKGVs
ZW1lbnQoKS0+dmFsdWUoKSkpIHsKICAgICAgICAgICAgIEFTU0VSVCghc3RlcC5pc1plcm8oKSk7
CiAgICAgICAgICAgICBjb25zdCBEZWNpbWFsIGJhc2UgPSBzdGVwUmFuZ2Uuc3RlcEJhc2UoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcAppbmRleCAyYmQ2MWI2OTA0NTYw
NGE5NGJmMWIwZjVkZGQ1YTc1Y2I5ODNiNzFhLi40Mjc0Y2ZhZGFkZjE4OTI0YTFlM2MxODhjMDFk
N2ZmMzE0YTk1MDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwCkBA
IC0xNTcsNyArMTU3LDcgQEAgZmxvYXQgTWVkaWFDb250cm9sbGVyOjpjdXJyZW50VGltZSgpIGNv
bnN0CiAgICAgcmV0dXJuIG1fcG9zaXRpb247CiB9CiAKLXZvaWQgTWVkaWFDb250cm9sbGVyOjpz
ZXRDdXJyZW50VGltZShmbG9hdCB0aW1lLCBFeGNlcHRpb25Db2RlJiBjb2RlKQordm9pZCBNZWRp
YUNvbnRyb2xsZXI6OnNldEN1cnJlbnRUaW1lKGZsb2F0IHRpbWUsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogewogICAgIC8vIFdoZW4gdGhlIHVzZXIgYWdlbnQgaXMgdG8gc2VlayB0aGUgbWVkaWEgY29u
dHJvbGxlciB0byBhIHBhcnRpY3VsYXIgbmV3IHBsYXliYWNrIHBvc2l0aW9uLCAKICAgICAvLyBp
dCBtdXN0IGZvbGxvdyB0aGVzZSBzdGVwczoKQEAgLTE3Myw3ICsxNzMsNyBAQCB2b2lkIE1lZGlh
Q29udHJvbGxlcjo6c2V0Q3VycmVudFRpbWUoZmxvYXQgdGltZSwgRXhjZXB0aW9uQ29kZSYgY29k
ZSkKICAgICAKICAgICAvLyBTZWVrIGVhY2ggc2xhdmVkIG1lZGlhIGVsZW1lbnQgdG8gdGhlIG5l
dyBwbGF5YmFjayBwb3NpdGlvbiByZWxhdGl2ZSB0byB0aGUgbWVkaWEgZWxlbWVudCB0aW1lbGlu
ZS4KICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNp
emUoKTsgKytpbmRleCkKLSAgICAgICAgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+c2Vlayh0aW1l
LCBjb2RlKTsKKyAgICAgICAgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+c2Vlayh0aW1lLCBlYyk7
CiAKICAgICBzY2hlZHVsZVRpbWV1cGRhdGVFdmVudCgpOwogfQpAQCAtMjUxLDcgKzI1MSw3IEBA
IHZvaWQgTWVkaWFDb250cm9sbGVyOjpzZXRQbGF5YmFja1JhdGUoZmxvYXQgcmF0ZSkKICAgICBz
Y2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5yYXRlY2hhbmdlRXZlbnQpOwogfQogCi12b2lkIE1l
ZGlhQ29udHJvbGxlcjo6c2V0Vm9sdW1lKGZsb2F0IGxldmVsLCBFeGNlcHRpb25Db2RlJiBjb2Rl
KQordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnNldFZvbHVtZShmbG9hdCBsZXZlbCwgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7CiAgICAgaWYgKG1fdm9sdW1lID09IGxldmVsKQogICAgICAgICByZXR1cm47
CkBAIC0yNTksNyArMjU5LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xsZXI6OnNldFZvbHVtZShmbG9h
dCBsZXZlbCwgRXhjZXB0aW9uQ29kZSYgY29kZSkKICAgICAvLyBJZiB0aGUgbmV3IHZhbHVlIGlz
IG91dHNpZGUgdGhlIHJhbmdlIDAuMCB0byAxLjAgaW5jbHVzaXZlLCB0aGVuLCBvbiBzZXR0aW5n
LCBhbiAKICAgICAvLyBJbmRleFNpemVFcnJvciBleGNlcHRpb24gbXVzdCBiZSByYWlzZWQgaW5z
dGVhZC4KICAgICBpZiAobGV2ZWwgPCAwIHx8IGxldmVsID4gMSkgewotICAgICAgICBjb2RlID0g
SU5ERVhfU0laRV9FUlI7CisgICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgICAgIApAQCAtNDgxLDggKzQ4MSw4IEBAIHZvaWQgTWVkaWFDb250
cm9sbGVyOjpicmluZ0VsZW1lbnRVcFRvU3BlZWQoSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCkK
ICAgICAvLyBXaGVuIHRoZSB1c2VyIGFnZW50IGlzIHRvIGJyaW5nIGEgbWVkaWEgZWxlbWVudCB1
cCB0byBzcGVlZCB3aXRoIGl0cyBuZXcgbWVkaWEgY29udHJvbGxlciwKICAgICAvLyBpdCBtdXN0
IHNlZWsgdGhhdCBtZWRpYSBlbGVtZW50IHRvIHRoZSBNZWRpYUNvbnRyb2xsZXIncyBtZWRpYSBj
b250cm9sbGVyIHBvc2l0aW9uIHJlbGF0aXZlCiAgICAgLy8gdG8gdGhlIG1lZGlhIGVsZW1lbnQn
cyB0aW1lbGluZS4KLSAgICBFeGNlcHRpb25Db2RlIGlnbm9yZWRDb2RlID0gMDsKLSAgICBlbGVt
ZW50LT5zZWVrKGN1cnJlbnRUaW1lKCksIGlnbm9yZWRDb2RlKTsKKyAgICBFeGNlcHRpb25Db2Rl
IGlnbm9yZWRFeGNlcHRpb24gPSAwOworICAgIGVsZW1lbnQtPnNlZWsoY3VycmVudFRpbWUoKSwg
aWdub3JlZEV4Y2VwdGlvbik7CiB9CiAKIGJvb2wgTWVkaWFDb250cm9sbGVyOjppc0Jsb2NrZWQo
KSBjb25zdApAQCAtNTQ0LDEyICs1NDQsMTIgQEAgdm9pZCBNZWRpYUNvbnRyb2xsZXI6OnNjaGVk
dWxlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUpCiB2b2lkIE1lZGlhQ29udHJv
bGxlcjo6YXN5bmNFdmVudFRpbWVyRmlyZWQoVGltZXI8TWVkaWFDb250cm9sbGVyPiopCiB7CiAg
ICAgVmVjdG9yPFJlZlB0cjxFdmVudD4gPiBwZW5kaW5nRXZlbnRzOwotICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOworICAgIEV4Y2VwdGlvbkNvZGUgaWdub3JlZEV4Y2VwdGlvbiA9IDA7CiAgICAg
CiAgICAgbV9wZW5kaW5nRXZlbnRzLnN3YXAocGVuZGluZ0V2ZW50cyk7CiAgICAgc2l6ZV90IGNv
dW50ID0gcGVuZGluZ0V2ZW50cy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBp
bmRleCA8IGNvdW50OyArK2luZGV4KQotICAgICAgICBkaXNwYXRjaEV2ZW50KHBlbmRpbmdFdmVu
dHNbaW5kZXhdLnJlbGVhc2UoKSwgZWMpOworICAgICAgICBkaXNwYXRjaEV2ZW50KHBlbmRpbmdF
dmVudHNbaW5kZXhdLnJlbGVhc2UoKSwgaWdub3JlZEV4Y2VwdGlvbik7CiB9CiAKIHZvaWQgTWVk
aWFDb250cm9sbGVyOjpjbGVhclBvc2l0aW9uVGltZXJGaXJlZChUaW1lcjxNZWRpYUNvbnRyb2xs
ZXI+KikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwCmluZGV4IDU3YjFiNzkyYmJl
YmM4ODNkMDRlMmEzODFiZGYwYTQ4YjIyNWQyNzQuLmNmZWFjZjgzOTQxNzBhOWE0OTIyZWJkZmVm
MTU4ZjliYWNjMGEyMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmNwcApAQCAt
NzEsNyArNzEsNyBAQCBwcml2YXRlOgogICAgIAogdm9pZCBNZWRpYURvY3VtZW50UGFyc2VyOjpj
cmVhdGVEb2N1bWVudFN0cnVjdHVyZSgpCiB7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBSZWZQdHI8RWxlbWVudD4gcm9vdEVsZW1lbnQgPSBk
b2N1bWVudCgpLT5jcmVhdGVFbGVtZW50KGh0bWxUYWcsIGZhbHNlKTsKICAgICBkb2N1bWVudCgp
LT5hcHBlbmRDaGlsZChyb290RWxlbWVudCwgZWMpOwogICAgIGRvY3VtZW50KCktPnNldENTU1Rh
cmdldChyb290RWxlbWVudC5nZXQoKSk7CkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBNZWRpYURv
Y3VtZW50OjpyZXBsYWNlTWVkaWFFbGVtZW50VGltZXJGaXJlZChUaW1lcjxNZWRpYURvY3VtZW50
PiopCiAgICAgICAgIGlmIChkb2N1bWVudExvYWRlcikKICAgICAgICAgICAgIGVtYmVkRWxlbWVu
dC0+c2V0QXR0cmlidXRlKHR5cGVBdHRyLCBkb2N1bWVudExvYWRlci0+d3JpdGVyKCktPm1pbWVU
eXBlKCkpOwogCi0gICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwogICAgICAgICB2aWRlb0VsZW1lbnQtPnBhcmVudE5vZGUoKS0+cmVwbGFjZUNo
aWxkKGVtYmVkRWxlbWVudCwgdmlkZW9FbGVtZW50LCBlYyk7CiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1BsdWdpbkRvY3VtZW50LmNwcAppbmRleCA0NzRkOTkxYTRmY2FhZDQwNDVhYTQ3OGM4
OWIxZmEwOTNmYjBkNGU5Li40MzBkM2RjZDdlN2VkZTY1OWMzYjJlM2EzNzdkNmNjNWUyNTgwZjVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmNwcApAQCAtNjcsNyArNjcsNyBA
QCBwcml2YXRlOgogCiB2b2lkIFBsdWdpbkRvY3VtZW50UGFyc2VyOjpjcmVhdGVEb2N1bWVudFN0
cnVjdHVyZSgpCiB7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKICAgICBSZWZQdHI8RWxlbWVudD4gcm9vdEVsZW1lbnQgPSBkb2N1bWVudCgpLT5jcmVh
dGVFbGVtZW50KGh0bWxUYWcsIGZhbHNlKTsKICAgICBkb2N1bWVudCgpLT5hcHBlbmRDaGlsZChy
b290RWxlbWVudCwgZWMpOwogICAgIHN0YXRpY19jYXN0PEhUTUxIdG1sRWxlbWVudCo+KHJvb3RF
bGVtZW50LmdldCgpKS0+aW5zZXJ0ZWRCeVBhcnNlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Jhbmdl
SW5wdXRUeXBlLmNwcAppbmRleCBiZWNhN2FkNGU3NWI0ODdmNWI1YzRhZTc2OGY0NzNiYzY1ZTdm
ZjY2Li5hNTEzZDYwN2RhODFkNTA5MTZkZTM0ZjkxZmZhMDJiOTM5ZWJmYTVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcApAQCAtMjQyLDcgKzI0Miw3IEBAIHZvaWQgUmFu
Z2VJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKIAog
ICAgIGlmIChuZXdWYWx1ZSAhPSBjdXJyZW50KSB7CiAgICAgICAgIEV2ZW50UXVldWVTY29wZSBz
Y29wZTsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CiAgICAgICAgIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IgZXZlbnRCZWhhdmlvciA9IERp
c3BhdGNoQ2hhbmdlRXZlbnQ7CiAgICAgICAgIHNldFZhbHVlQXNEZWNpbWFsKG5ld1ZhbHVlLCBl
dmVudEJlaGF2aW9yLCBlYyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGlt
ZVJhbmdlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuY3BwCmluZGV4IGQ2
OGVhMDM3MTgzMzJiZWU2ZGI2ZjA3OTljMTI2MTUxN2JmMTVkZmYuLmExYmYwZmM2MGUxM2Q0ZTI3
YzdiZjFmMzlkMjhmYWFkOTNmMzljOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VGltZVJhbmdlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmNwcApA
QCAtMTU3LDkgKzE1Nyw5IEBAIHZvaWQgVGltZVJhbmdlczo6YWRkKGZsb2F0IHN0YXJ0LCBmbG9h
dCBlbmQpCiAKIGJvb2wgVGltZVJhbmdlczo6Y29udGFpbihmbG9hdCB0aW1lKSBjb25zdAogeyAK
LSAgICBFeGNlcHRpb25Db2RlIHVudXNlZDsKKyAgICBFeGNlcHRpb25Db2RlIGlnbm9yZWRFeGNl
cHRpb24gPSAwOwogICAgIGZvciAodW5zaWduZWQgbiA9IDA7IG4gPCBsZW5ndGgoKTsgbisrKSB7
Ci0gICAgICAgIGlmICh0aW1lID49IHN0YXJ0KG4sIHVudXNlZCkgJiYgdGltZSA8PSBlbmQobiwg
dW51c2VkKSkKKyAgICAgICAgaWYgKHRpbWUgPj0gc3RhcnQobiwgaWdub3JlZEV4Y2VwdGlvbikg
JiYgdGltZSA8PSBlbmQobiwgaWdub3JlZEV4Y2VwdGlvbikpCiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTY3LDEyICsxNjcsMTIgQEAgYm9v
bCBUaW1lUmFuZ2VzOjpjb250YWluKGZsb2F0IHRpbWUpIGNvbnN0CiAKIGZsb2F0IFRpbWVSYW5n
ZXM6Om5lYXJlc3QoZmxvYXQgdGltZSkgY29uc3QKIHsgCi0gICAgRXhjZXB0aW9uQ29kZSB1bnVz
ZWQ7CisgICAgRXhjZXB0aW9uQ29kZSBpZ25vcmVkRXhjZXB0aW9uID0gMDsKICAgICBmbG9hdCBj
bG9zZXN0ID0gMDsKICAgICB1bnNpZ25lZCBjb3VudCA9IGxlbmd0aCgpOwogICAgIGZvciAodW5z
aWduZWQgbmR4ID0gMDsgbmR4IDwgY291bnQ7IG5keCsrKSB7Ci0gICAgICAgIGZsb2F0IHN0YXJ0
VGltZSA9IHN0YXJ0KG5keCwgdW51c2VkKTsKLSAgICAgICAgZmxvYXQgZW5kVGltZSA9IGVuZChu
ZHgsIHVudXNlZCk7CisgICAgICAgIGZsb2F0IHN0YXJ0VGltZSA9IHN0YXJ0KG5keCwgaWdub3Jl
ZEV4Y2VwdGlvbik7CisgICAgICAgIGZsb2F0IGVuZFRpbWUgPSBlbmQobmR4LCBpZ25vcmVkRXhj
ZXB0aW9uKTsKICAgICAgICAgaWYgKHRpbWUgPj0gc3RhcnRUaW1lICYmIHRpbWUgPD0gZW5kVGlt
ZSkKICAgICAgICAgICAgIHJldHVybiB0aW1lOwogICAgICAgICBpZiAoZmFicyhzdGFydFRpbWUg
LSB0aW1lKSA8IGNsb3Nlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCA3MjBjYTczYmNlYzljM2VkYjE2
OWMyZjQ3YjZmOGMyNjg3NTk5OTIzLi4xOGE1NWRjZmQ2MTA3NDU3NGY5OWU4Mzc4OTZmNzdmZjBh
ZDJiYjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTE0NTgsNyArMTQ1OCw3IEBAIHZvaWQgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2VGcm9tUmVjdChIVE1MSW1hZ2VFbGVtZW50KiBp
bWFnZSwKICAgICBpZiAoIXBhcnNlQ29tcG9zaXRlQW5kQmxlbmRPcGVyYXRvcihjb21wb3NpdGVP
cGVyYXRpb24sIG9wLCBibGVuZE9wKSB8fCBibGVuZE9wICE9IEJsZW5kTW9kZU5vcm1hbCkKICAg
ICAgICAgb3AgPSBDb21wb3NpdGVTb3VyY2VPdmVyOwogCi0gICAgRXhjZXB0aW9uQ29kZSBlYzsK
KyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBkcmF3SW1hZ2UoaW1hZ2UsIEZsb2F0UmVj
dChzeCwgc3ksIHN3LCBzaCksIEZsb2F0UmVjdChkeCwgZHksIGR3LCBkaCksIG9wLCBCbGVuZE1v
ZGVOb3JtYWwsIGVjKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5jcHAKaW5kZXggN2MxMjBjMjFhMzhhMzkxOTZl
ODQ3NDNlNDViMDM5Y2Y4Y2FmZjBmYi4uYTAzN2RmZGIyMjM3YWZlYTczN2UwMDQ1MDBmOGJmMTcx
NWIyMWRlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sRWxlbWVudFR5cGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xFbGVtZW50VHlwZXMuY3BwCkBAIC0yNjMsNyArMjYzLDcgQEAgZmxvYXQgTWVkaWFD
b250cm9sU2Vla0J1dHRvbkVsZW1lbnQ6Om5leHRSYXRlKCkgY29uc3QKIHZvaWQgTWVkaWFDb250
cm9sU2Vla0J1dHRvbkVsZW1lbnQ6OnNlZWtUaW1lckZpcmVkKFRpbWVyPE1lZGlhQ29udHJvbFNl
ZWtCdXR0b25FbGVtZW50PiopCiB7CiAgICAgaWYgKG1fc2Vla1R5cGUgPT0gU2tpcCkgewotICAg
ICAgICBFeGNlcHRpb25Db2RlIGVjOworICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAg
ICAgICAgZmxvYXQgc2tpcFRpbWUgPSBpc0ZvcndhcmRCdXR0b24oKSA/IGNTa2lwVGltZSA6IC1j
U2tpcFRpbWU7CiAgICAgICAgIG1lZGlhQ29udHJvbGxlcigpLT5zZXRDdXJyZW50VGltZShtZWRp
YUNvbnRyb2xsZXIoKS0+Y3VycmVudFRpbWUoKSArIHNraXBUaW1lLCBlYyk7CiAgICAgfSBlbHNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVt
ZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50
cy5jcHAKaW5kZXggYTE2NzZlYTllZmQyOTllZDI3ODdjYTU1OTBkYjgzNWE0MjUxMjY1Ni4uYjU1
YzgxZWJkZDg4ZmI5ZGQ5MmFkYjQ5ZjIwZjk3ZWI4ZjM4MTc0NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcApAQCAtMTcxLDgg
KzE3MSw4IEBAIHZvaWQgTWVkaWFDb250cm9sUGFuZWxFbGVtZW50OjpzZXRQb3NpdGlvbihjb25z
dCBMYXlvdXRQb2ludCYgcG9zaXRpb24pCiAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQ
cm9wZXJ0eU1hcmdpbkxlZnQsIDAuMCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CiAgICAg
c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmdpblRvcCwgMC4wLCBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX1BYKTsKIAotICAgIEV4Y2VwdGlvbkNvZGUgaWdub3JlZDsKLSAgICBj
bGFzc0xpc3QoKS0+YWRkKCJkcmFnZ2VkIiwgaWdub3JlZCk7CisgICAgRXhjZXB0aW9uQ29kZSBp
Z25vcmVkRXhjZXB0aW9uID0gMDsKKyAgICBjbGFzc0xpc3QoKS0+YWRkKCJkcmFnZ2VkIiwgaWdu
b3JlZEV4Y2VwdGlvbik7CiB9CiAKIHZvaWQgTWVkaWFDb250cm9sUGFuZWxFbGVtZW50OjpyZXNl
dFBvc2l0aW9uKCkKQEAgLTE4Miw4ICsxODIsOCBAQCB2b2lkIE1lZGlhQ29udHJvbFBhbmVsRWxl
bWVudDo6cmVzZXRQb3NpdGlvbigpCiAgICAgcmVtb3ZlSW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQ
cm9wZXJ0eU1hcmdpbkxlZnQpOwogICAgIHJlbW92ZUlubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJv
cGVydHlNYXJnaW5Ub3ApOwogCi0gICAgRXhjZXB0aW9uQ29kZSBpZ25vcmVkOwotICAgIGNsYXNz
TGlzdCgpLT5yZW1vdmUoImRyYWdnZWQiLCBpZ25vcmVkKTsKKyAgICBFeGNlcHRpb25Db2RlIGln
bm9yZWRFeGNlcHRpb24gPSAwOworICAgIGNsYXNzTGlzdCgpLT5yZW1vdmUoImRyYWdnZWQiLCBp
Z25vcmVkRXhjZXB0aW9uKTsKIAogICAgIG1fY3VtdWxhdGl2ZURyYWdPZmZzZXQuc2V0WCgwKTsK
ICAgICBtX2N1bXVsYXRpdmVEcmFnT2Zmc2V0LnNldFkoMCk7CkBAIC0zODMsNyArMzgzLDcgQEAg
dm9pZCBNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5RWxlbWVudDo6dXBkYXRlKCkKICAgICBpZiAo
bmV3U3RhdGVUb0Rpc3BsYXkgPT0gbV9zdGF0ZUJlaW5nRGlzcGxheWVkKQogICAgICAgICByZXR1
cm47CiAKLSAgICBFeGNlcHRpb25Db2RlIGU7CisgICAgRXhjZXB0aW9uQ29kZSBpZ25vcmVkRXhj
ZXB0aW9uID0gMDsKIAogICAgIGlmIChtX3N0YXRlQmVpbmdEaXNwbGF5ZWQgPT0gTm90aGluZykK
ICAgICAgICAgc2hvdygpOwpAQCAtMzk0LDEzICszOTQsMTMgQEAgdm9pZCBNZWRpYUNvbnRyb2xT
dGF0dXNEaXNwbGF5RWxlbWVudDo6dXBkYXRlKCkKIAogICAgIHN3aXRjaCAobV9zdGF0ZUJlaW5n
RGlzcGxheWVkKSB7CiAgICAgY2FzZSBOb3RoaW5nOgotICAgICAgICBzZXRJbm5lclRleHQoIiIs
IGUpOworICAgICAgICBzZXRJbm5lclRleHQoIiIsIGlnbm9yZWRFeGNlcHRpb24pOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIExvYWRpbmc6Ci0gICAgICAgIHNldElubmVyVGV4dChtZWRpYUVs
ZW1lbnRMb2FkaW5nU3RhdGVUZXh0KCksIGUpOworICAgICAgICBzZXRJbm5lclRleHQobWVkaWFF
bGVtZW50TG9hZGluZ1N0YXRlVGV4dCgpLCBpZ25vcmVkRXhjZXB0aW9uKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBMaXZlQnJvYWRjYXN0OgotICAgICAgICBzZXRJbm5lclRleHQobWVkaWFF
bGVtZW50TGl2ZUJyb2FkY2FzdFN0YXRlVGV4dCgpLCBlKTsKKyAgICAgICAgc2V0SW5uZXJUZXh0
KG1lZGlhRWxlbWVudExpdmVCcm9hZGNhc3RTdGF0ZVRleHQoKSwgaWdub3JlZEV4Y2VwdGlvbik7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KQEAgLTYwNCw4ICs2MDQsOCBAQCBQYXNzUmVmUHRy
PE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ+IE1lZGlhQ29udHJvbFJld2luZEJ1dHRv
bkVsZW1lbnQ6OmNyZQogdm9pZCBNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50OjpkZWZh
dWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIHsKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9
PSBldmVudE5hbWVzKCkuY2xpY2tFdmVudCkgewotICAgICAgICBFeGNlcHRpb25Db2RlIGlnbm9y
ZWRDb2RlOwotICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+c2V0Q3VycmVudFRpbWUobWF4KDAu
MGYsIG1lZGlhQ29udHJvbGxlcigpLT5jdXJyZW50VGltZSgpIC0gMzApLCBpZ25vcmVkQ29kZSk7
CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgaWdub3JlZEV4Y2VwdGlvbiA9IDA7CisgICAgICAgIG1l
ZGlhQ29udHJvbGxlcigpLT5zZXRDdXJyZW50VGltZShtYXgoMC4wZiwgbWVkaWFDb250cm9sbGVy
KCktPmN1cnJlbnRUaW1lKCkgLSAzMCksIGlnbm9yZWRFeGNlcHRpb24pOwogICAgICAgICBldmVu
dC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICB9CiAgICAgSFRNTElucHV0RWxlbWVudDo6ZGVm
YXVsdEV2ZW50SGFuZGxlcihldmVudCk7CkBAIC05ODIsOCArOTgyLDggQEAgdm9pZCBNZWRpYUNv
bnRyb2xUaW1lbGluZUVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQog
CiAgICAgZmxvYXQgdGltZSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodmFsdWUoKS50b0RvdWJs
ZSgpKTsKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuaW5wdXRFdmVudCAm
JiB0aW1lICE9IG1lZGlhQ29udHJvbGxlcigpLT5jdXJyZW50VGltZSgpKSB7Ci0gICAgICAgIEV4
Y2VwdGlvbkNvZGUgZWM7Ci0gICAgICAgIG1lZGlhQ29udHJvbGxlcigpLT5zZXRDdXJyZW50VGlt
ZSh0aW1lLCBlYyk7CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgaWdub3JlZEV4Y2VwdGlvbiA9IDA7
CisgICAgICAgIG1lZGlhQ29udHJvbGxlcigpLT5zZXRDdXJyZW50VGltZSh0aW1lLCBpZ25vcmVk
RXhjZXB0aW9uKTsKICAgICB9CiAKICAgICBSZW5kZXJTbGlkZXIqIHNsaWRlciA9IHRvUmVuZGVy
U2xpZGVyKHJlbmRlcmVyKCkpOwpAQCAtMTEyOSw4ICsxMTI5LDggQEAgUGFzc1JlZlB0cjxNZWRp
YUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudD4gTWVkaWFDb250cm9sRnVs
bHNjcmVlblYKIHZvaWQgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1l
bnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogewogICAgIGlmIChldmVudC0+
dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KSB7Ci0gICAgICAgIEV4Y2VwdGlvbkNv
ZGUgY29kZSA9IDA7Ci0gICAgICAgIG1lZGlhQ29udHJvbGxlcigpLT5zZXRWb2x1bWUoMCwgY29k
ZSk7CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgaWdub3JlZEV4Y2VwdGlvbiA9IDA7CisgICAgICAg
IG1lZGlhQ29udHJvbGxlcigpLT5zZXRWb2x1bWUoMCwgaWdub3JlZEV4Y2VwdGlvbik7CiAgICAg
ICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgIH0KICAgICBIVE1MSW5wdXRFbGVt
ZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKQEAgLTExNjAsOCArMTE2MCw4IEBAIFBh
c3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dHRvbkVsZW1lbnQ+IE1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5WCiB2b2lkIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVN
YXhCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIHsKICAg
ICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY2xpY2tFdmVudCkgewotICAgICAg
ICBFeGNlcHRpb25Db2RlIGNvZGUgPSAwOwotICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+c2V0
Vm9sdW1lKDEsIGNvZGUpOworICAgICAgICBFeGNlcHRpb25Db2RlIGlnbm9yZWRFeGNlcHRpb24g
PSAwOworICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+c2V0Vm9sdW1lKDEsIGlnbm9yZWRFeGNl
cHRpb24pOwogICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICB9CiAgICAg
SFRNTElucHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3BwCmluZGV4IDk0OWJlOGQ3YTkyNjli
ZDc0MzMxODE2MjA3MWQxMDYxOGE5ZmQ4NWUuLmE2NTIzMzI0OGZlYTZhNGU2ZjgxOGQ0NjhkYjY3
MDM1YzlkYzYxYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlh
Q29udHJvbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJv
bHMuY3BwCkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xzOjp1cGRhdGVDdXJy
ZW50VGltZURpc3BsYXkoKQogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
RXhjZXB0aW9uQ29kZSBlYzsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBtX2N1cnJl
bnRUaW1lRGlzcGxheS0+c2V0SW5uZXJUZXh0KHBhZ2UtPnRoZW1lKCktPmZvcm1hdE1lZGlhQ29u
dHJvbHNUaW1lKG5vdyksIGVjKTsKICAgICBtX2N1cnJlbnRUaW1lRGlzcGxheS0+c2V0Q3VycmVu
dFZhbHVlKG5vdyk7CiB9CkBAIC0zODAsNyArMzgwLDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xzOjpj
cmVhdGVUZXh0VHJhY2tEaXNwbGF5KCkKICAgICAgICAgbV90ZXh0RGlzcGxheUNvbnRhaW5lci0+
c2V0TWVkaWFDb250cm9sbGVyKG1fbWVkaWFDb250cm9sbGVyKTsKIAogICAgIC8vIEluc2VydCBp
dCBiZWZvcmUgdGhlIGZpcnN0IGNvbnRyb2xsZXIgZWxlbWVudCBzbyBpdCBhbHdheXMgZGlzcGxh
eXMgYmVoaW5kIHRoZSBjb250cm9scy4KLSAgICBFeGNlcHRpb25Db2RlIGVjOworICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwogICAgIGluc2VydEJlZm9yZSh0ZXh0RGlzcGxheUNvbnRhaW5lciwg
bV9wYW5lbCwgZWMsIHRydWUpOwogICAgIHRleHREaXNwbGF5Q29udGFpbmVyLT5jcmVhdGVTdWJ0
cmVlcyhkb2N1bWVudCgpKTsKICAgICB0ZXh0RGlzcGxheUNvbnRhaW5lci5yZWxlYXNlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNwcApp
bmRleCA5YjUxZmUzNzRmNGFjNzcwYjIwNjRlMTFmMWFhYjA3MzY3M2ZiY2Y3Li43ODcyOTQzYWY0
MTViOWNlODQ5ZWY1NTI5ZjA5ZTczMWJkMzM4YzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgUGFz
c1JlZlB0cjxNZWRpYUNvbnRyb2xzQXBwbGU+IE1lZGlhQ29udHJvbHNBcHBsZTo6Y3JlYXRlQ29u
dHJvbHMoRG9jdW1lbnQqIGRvY3UKIAogICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xQYW5lbEVsZW1l
bnQ+IHBhbmVsID0gTWVkaWFDb250cm9sUGFuZWxFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwog
Ci0gICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKIAogICAg
IFJlZlB0cjxNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50PiByZXdpbmRCdXR0b24gPSBN
ZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgIGNv
bnRyb2xzLT5tX3Jld2luZEJ1dHRvbiA9IHJld2luZEJ1dHRvbi5nZXQoKTsKQEAgLTM3Nyw3ICsz
NzcsNyBAQCB2b2lkIE1lZGlhQ29udHJvbHNBcHBsZTo6dXBkYXRlQ3VycmVudFRpbWVEaXNwbGF5
KCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gQWxsb3cgdGhlIHRoZW1lIHRvIGZvcm1hdCB0
aGUgdGltZS4KLSAgICBFeGNlcHRpb25Db2RlIGVjOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwogICAgIG1fY3VycmVudFRpbWVEaXNwbGF5LT5zZXRJbm5lclRleHQocGFnZS0+dGhlbWUoKS0+
Zm9ybWF0TWVkaWFDb250cm9sc0N1cnJlbnRUaW1lKG5vdywgZHVyYXRpb24pLCBlYyk7CiAgICAg
bV9jdXJyZW50VGltZURpc3BsYXktPnNldEN1cnJlbnRWYWx1ZShub3cpOwogICAgIG1fdGltZVJl
bWFpbmluZ0Rpc3BsYXktPnNldElubmVyVGV4dChwYWdlLT50aGVtZSgpLT5mb3JtYXRNZWRpYUNv
bnRyb2xzUmVtYWluaW5nVGltZShub3csIGR1cmF0aW9uKSwgZWMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0JsYWNrQmVycnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0JsYWNrQmVycnkuY3BwCmluZGV4
IGViOTI2NTdjNTBkNjUzMzllMmZjZmZkYTdkNDQ0MTVhMmZhODA5ZWUuLmE3NGIyNzc4MTkwYmEz
NjViYTNhYjEyYzVmYjBmMTljMjM2ZTQwMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L01lZGlhQ29udHJvbHNCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQmxhY2tCZXJyeS5jcHAKQEAgLTE5Nyw4ICsxOTcs
OCBAQCB2b2lkIE1lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50OjpzZXRQb3NpdGlvbihj
b25zdCBMYXlvdXRQb2ludCYgcG9zaXRpb24pCiAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShD
U1NQcm9wZXJ0eU1hcmdpbkxlZnQsIDAuMCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CiAg
ICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmdpblRvcCwgMC4wLCBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKIAotICAgIEV4Y2VwdGlvbkNvZGUgaWdub3JlZDsKLSAg
ICBjbGFzc0xpc3QoKS0+YWRkKCJkcmFnZ2VkIiwgaWdub3JlZCk7CisgICAgRXhjZXB0aW9uQ29k
ZSBpZ25vcmVkRXhjZXB0aW9uID0gMDsKKyAgICBjbGFzc0xpc3QoKS0+YWRkKCJkcmFnZ2VkIiwg
aWdub3JlZEV4Y2VwdGlvbik7CiB9CiAKIHZvaWQgTWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVs
ZW1lbnQ6OnJlc2V0UG9zaXRpb24oKQpAQCAtMjA4LDggKzIwOCw4IEBAIHZvaWQgTWVkaWFDb250
cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ6OnJlc2V0UG9zaXRpb24oKQogICAgIHJlbW92ZUlubGlu
ZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlNYXJnaW5MZWZ0KTsKICAgICByZW1vdmVJbmxpbmVT
dHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TWFyZ2luVG9wKTsKIAotICAgIEV4Y2VwdGlvbkNvZGUg
aWdub3JlZDsKLSAgICBjbGFzc0xpc3QoKS0+cmVtb3ZlKCJkcmFnZ2VkIiwgaWdub3JlZCk7Cisg
ICAgRXhjZXB0aW9uQ29kZSBpZ25vcmVkRXhjZXB0aW9uID0gMDsKKyAgICBjbGFzc0xpc3QoKS0+
cmVtb3ZlKCJkcmFnZ2VkIiwgaWdub3JlZEV4Y2VwdGlvbik7CiAKICAgICBtX2N1bXVsYXRpdmVE
cmFnT2Zmc2V0LnNldFgoMCk7CiAgICAgbV9jdW11bGF0aXZlRHJhZ09mZnNldC5zZXRZKDApOwpA
QCAtNTA4LDggKzUwOCw4IEBAIHZvaWQgTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxl
bWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAKICAgICBmbG9hdCB0aW1l
ID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh2YWx1ZSgpLnRvRG91YmxlKCkpOwogICAgIGlmIChl
dmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5pbnB1dEV2ZW50ICYmIHRpbWUgIT0gbWVkaWFD
b250cm9sbGVyKCktPmN1cnJlbnRUaW1lKCkpIHsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsK
LSAgICAgICAgbWVkaWFDb250cm9sbGVyKCktPnNldEN1cnJlbnRUaW1lKHRpbWUsIGVjKTsKKyAg
ICAgICAgRXhjZXB0aW9uQ29kZSBpZ25vcmVkRXhjZXB0aW9uID0gMDsKKyAgICAgICAgbWVkaWFD
b250cm9sbGVyKCktPnNldEN1cnJlbnRUaW1lKHRpbWUsIGlnbm9yZWRFeGNlcHRpb24pOwogICAg
IH0KIAogICAgIFJlbmRlclNsaWRlciogc2xpZGVyID0gdG9SZW5kZXJTbGlkZXIocmVuZGVyZXIo
KSk7CkBAIC02NDgsNyArNjQ4LDcgQEAgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xzQmxhY2tCZXJy
eT4gTWVkaWFDb250cm9sc0JsYWNrQmVycnk6OmNyZWF0ZUNvbnRyb2xzKERvY3UKICAgICBSZWZQ
dHI8TWVkaWFDb250cm9sUGFuZWxFbGVtZW50PiBwYW5lbCA9IE1lZGlhQ29udHJvbFBhbmVsRWxl
bWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBSZWZQdHI8TWVkaWFDb250cm9sRW1iZWRkZWRQ
YW5lbEVsZW1lbnQ+IGVtYmVkUGFuZWwgPSBNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVu
dDo6Y3JlYXRlKGRvY3VtZW50KTsKIAotICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CiAKICAgICBSZWZQdHI8TWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1l
bnQ+IHBsYXlCdXR0b24gPSBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRv
Y3VtZW50KTsKICAgICBjb250cm9scy0+bV9wbGF5QnV0dG9uID0gcGxheUJ1dHRvbi5nZXQoKTsK
QEAgLTEwMTEsMTQgKzEwMTEsMTQgQEAgdm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6dXBk
YXRlQ3VycmVudFRpbWVEaXNwbGF5KCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gQWxsb3cg
dGhlIHRoZW1lIHRvIGZvcm1hdCB0aGUgdGltZS4KLSAgICBFeGNlcHRpb25Db2RlIGVjOwotICAg
IG1fY3VycmVudFRpbWVEaXNwbGF5LT5zZXRJbm5lclRleHQocGFnZS0+dGhlbWUoKS0+Zm9ybWF0
TWVkaWFDb250cm9sc0N1cnJlbnRUaW1lKG5vdywgZHVyYXRpb24pLCBlYyk7CisgICAgRXhjZXB0
aW9uQ29kZSBpZ25vcmVkRXhjZXB0aW9uID0gMDsKKyAgICBtX2N1cnJlbnRUaW1lRGlzcGxheS0+
c2V0SW5uZXJUZXh0KHBhZ2UtPnRoZW1lKCktPmZvcm1hdE1lZGlhQ29udHJvbHNDdXJyZW50VGlt
ZShub3csIGR1cmF0aW9uKSwgaWdub3JlZEV4Y2VwdGlvbik7CiAgICAgbV9jdXJyZW50VGltZURp
c3BsYXktPnNldEN1cnJlbnRWYWx1ZShub3cpOwotICAgIG1fZnVsbHNjcmVlbkN1cnJlbnRUaW1l
RGlzcGxheS0+c2V0SW5uZXJUZXh0KHBhZ2UtPnRoZW1lKCktPmZvcm1hdE1lZGlhQ29udHJvbHND
dXJyZW50VGltZShub3csIGR1cmF0aW9uKSwgZWMpOworICAgIG1fZnVsbHNjcmVlbkN1cnJlbnRU
aW1lRGlzcGxheS0+c2V0SW5uZXJUZXh0KHBhZ2UtPnRoZW1lKCktPmZvcm1hdE1lZGlhQ29udHJv
bHNDdXJyZW50VGltZShub3csIGR1cmF0aW9uKSwgaWdub3JlZEV4Y2VwdGlvbik7CiAgICAgbV9m
dWxsc2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5LT5zZXRDdXJyZW50VmFsdWUobm93KTsKLSAgICBt
X3RpbWVSZW1haW5pbmdEaXNwbGF5LT5zZXRJbm5lclRleHQocGFnZS0+dGhlbWUoKS0+Zm9ybWF0
TWVkaWFDb250cm9sc1JlbWFpbmluZ1RpbWUobm93LCBkdXJhdGlvbiksIGVjKTsKKyAgICBtX3Rp
bWVSZW1haW5pbmdEaXNwbGF5LT5zZXRJbm5lclRleHQocGFnZS0+dGhlbWUoKS0+Zm9ybWF0TWVk
aWFDb250cm9sc1JlbWFpbmluZ1RpbWUobm93LCBkdXJhdGlvbiksIGlnbm9yZWRFeGNlcHRpb24p
OwogICAgIG1fdGltZVJlbWFpbmluZ0Rpc3BsYXktPnNldEN1cnJlbnRWYWx1ZShub3cgLSBkdXJh
dGlvbik7Ci0gICAgbV9mdWxsc2NyZWVuVGltZVJlbWFpbmluZ0Rpc3BsYXktPnNldElubmVyVGV4
dChwYWdlLT50aGVtZSgpLT5mb3JtYXRNZWRpYUNvbnRyb2xzUmVtYWluaW5nVGltZShub3csIGR1
cmF0aW9uKSwgZWMpOworICAgIG1fZnVsbHNjcmVlblRpbWVSZW1haW5pbmdEaXNwbGF5LT5zZXRJ
bm5lclRleHQocGFnZS0+dGhlbWUoKS0+Zm9ybWF0TWVkaWFDb250cm9sc1JlbWFpbmluZ1RpbWUo
bm93LCBkdXJhdGlvbiksIGlnbm9yZWRFeGNlcHRpb24pOwogICAgIG1fZnVsbHNjcmVlblRpbWVS
ZW1haW5pbmdEaXNwbGF5LT5zZXRDdXJyZW50VmFsdWUobm93IC0gZHVyYXRpb24pOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQ2hyb21p
dW0uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0Nocm9taXVt
LmNwcAppbmRleCA1NWNmYWMyZjdjZDY5MjQ3ZTZjZWMzOGQ2ODY2YWNiNjc4Njc1NDAwLi45YzAy
MDY4MTQ1NDlmOTViMzY0YmEzNTYwZDBlZmYwNjk0ZTI0ZDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNDaHJvbWl1bS5jcHAKQEAgLTY4LDcg
KzY4LDcgQEAgYm9vbCBNZWRpYUNvbnRyb2xzQ2hyb21pdW06OmluaXRpYWxpemVDb250cm9scyhE
b2N1bWVudCogZG9jdW1lbnQpCiAKICAgICBSZWZQdHI8TWVkaWFDb250cm9sUGFuZWxFbGVtZW50
PiBwYW5lbCA9IE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKIAot
ICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAKICAgICBS
ZWZQdHI8TWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ+IHBsYXlCdXR0b24gPSBNZWRpYUNv
bnRyb2xQbGF5QnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBtX3BsYXlCdXR0
b24gPSBwbGF5QnV0dG9uLmdldCgpOwpAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgTWVkaWFDb250
cm9sc0Nocm9taXVtOjp1cGRhdGVDdXJyZW50VGltZURpc3BsYXkoKQogICAgIH0KIAogICAgIC8v
IEFsbG93IHRoZSB0aGVtZSB0byBmb3JtYXQgdGhlIHRpbWUuCi0gICAgRXhjZXB0aW9uQ29kZSBl
YzsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBtX2N1cnJlbnRUaW1lRGlzcGxheS0+
c2V0SW5uZXJUZXh0KHBhZ2UtPnRoZW1lKCktPmZvcm1hdE1lZGlhQ29udHJvbHNDdXJyZW50VGlt
ZShub3csIGR1cmF0aW9uKSwgZWMpOwogICAgIG1fY3VycmVudFRpbWVEaXNwbGF5LT5zZXRDdXJy
ZW50VmFsdWUobm93KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L01lZGlhQ29udHJvbHNDaHJvbWl1bUFuZHJvaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvTWVkaWFDb250cm9sc0Nocm9taXVtQW5kcm9pZC5jcHAKaW5kZXggZWExMWJiMzk5Y2M4
NzFmMWMzZDQ0M2Y3YjMyNDQwOTEyNWQyYWFkMy4uMWEwYWYyNTRhOTQ2MDFhZTM0NGM5MTYwNDQ5
MGZhNWJiNzU5N2EyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVk
aWFDb250cm9sc0Nocm9taXVtQW5kcm9pZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvTWVkaWFDb250cm9sc0Nocm9taXVtQW5kcm9pZC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAg
UGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xzQ2hyb21pdW1BbmRyb2lkPiBNZWRpYUNvbnRyb2xzQ2hy
b21pdW1BbmRyb2lkOjpjcmVhdGVDb24KIAogICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xzQ2hyb21p
dW1BbmRyb2lkPiBjb250cm9scyA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xzQ2hyb21pdW1B
bmRyb2lkKGRvY3VtZW50KSk7CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjOworICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwogCiAgICAgUmVmUHRyPE1lZGlhQ29udHJvbE92ZXJsYXlFbmNsb3N1cmVF
bGVtZW50PiBvdmVybGF5RW5jbG9zdXJlID0gTWVkaWFDb250cm9sT3ZlcmxheUVuY2xvc3VyZUVs
ZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAgICAgUmVmUHRyPE1lZGlhQ29udHJvbE92ZXJsYXlQ
bGF5QnV0dG9uRWxlbWVudD4gb3ZlcmxheVBsYXlCdXR0b24gPSBNZWRpYUNvbnRyb2xPdmVybGF5
UGxheUJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5jcHAKaW5kZXggYmZkOTZjMDNjNTJiMmQ5YTljNjZl
NjgyMzMyMTk2OTJiNTYzODZiNi4uNzBmYjY0YjllMjQzYzc3YWExYmQzNmFhMzRlYjlhZDIyZTdk
NjRjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJh
Y2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmNw
cApAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgSW5iYW5kVGV4dFRyYWNrOjphZGRHZW5lcmljQ3Vl
KEluYmFuZFRleHRUcmFja1ByaXZhdGUqIHRyYWNrUHJpdmF0ZSwgR2VuZXJpCiAgICAgY3VlLT5z
ZXRGb250U2l6ZU11bHRpcGxpZXIoY3VlRGF0YS0+cmVsYXRpdmVGb250U2l6ZSgpKTsKICAgICBj
dWUtPnNldEZvbnROYW1lKGN1ZURhdGEtPmZvbnROYW1lKCkpOwogCi0gICAgRXhjZXB0aW9uQ29k
ZSBlYzsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBpZiAoY3VlRGF0YS0+cG9zaXRp
b24oKSA+IDApCiAgICAgICAgIGN1ZS0+c2V0UG9zaXRpb24obHJvdW5kKGN1ZURhdGEtPnBvc2l0
aW9uKCkpLCBlYyk7CiAgICAgaWYgKGN1ZURhdGEtPmxpbmUoKSA+IDApCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCAzYWFmMDM5NTk4YzYz
ZjljMWZlNDZiZTk4ZmYxMWNlOTVjYjNlMzZhLi45Y2E0MTQ0MDM3YWY2OGNjYmMwNjM0ZmM1OGZl
YWNmYzI5YzNmNTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
U1NBZ2VudC5jcHAKQEAgLTExNjQsNyArMTE2NCw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6
OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlJ1bGVNYXRjaD4gPiBJbnNwZWN0b3JDU1NBZ2VudDo6
CiAgICAgICAgIGNvbnN0IENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JMaXN0ID0gcnVsZS0+c3R5
bGVSdWxlKCktPnNlbGVjdG9yTGlzdCgpOwogICAgICAgICBsb25nIGluZGV4ID0gMDsKICAgICAg
ICAgZm9yIChjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IgPSBzZWxlY3Rvckxpc3QuZmlyc3Qo
KTsgc2VsZWN0b3I7IHNlbGVjdG9yID0gQ1NTU2VsZWN0b3JMaXN0OjpuZXh0KHNlbGVjdG9yKSkg
ewotICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICAgICAgICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwogICAgICAgICAgICAgYm9vbCBtYXRjaGVkID0gZWxlbWVudC0+d2Via2l0TWF0
Y2hlc1NlbGVjdG9yKHNlbGVjdG9yLT5zZWxlY3RvclRleHQoKSwgZWMpOwogICAgICAgICAgICAg
aWYgKG1hdGNoZWQpCiAgICAgICAgICAgICAgICAgbWF0Y2hpbmdTZWxlY3RvcnMtPmFkZEl0ZW0o
aW5kZXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9N
U3RvcmFnZUFnZW50LmNwcAppbmRleCBiNjIzYjA5ZmFiMTIwOTkxODM1YjBkMDkxNGQ5NjE3NTY4
ZTBhMzMzLi5hYTcwMTFmYTZkODcwZTVhNjAxN2M2ZWJiODQwNTI5MTc2NGFiMDhkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50
LmNwcApAQCAtMTQyLDkgKzE0Miw5IEBAIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Ojpz
ZXRET01TdG9yYWdlSXRlbShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc3RvCiB7CiAgICAg
SW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlKiBzdG9yYWdlUmVzb3VyY2UgPSBnZXRET01TdG9y
YWdlUmVzb3VyY2VGb3JJZChzdG9yYWdlSWQpOwogICAgIGlmIChzdG9yYWdlUmVzb3VyY2UpIHsK
LSAgICAgICAgRXhjZXB0aW9uQ29kZSBleGNlcHRpb24gPSAwOwotICAgICAgICBzdG9yYWdlUmVz
b3VyY2UtPnN0b3JhZ2VBcmVhKCktPnNldEl0ZW0oa2V5LCB2YWx1ZSwgZXhjZXB0aW9uLCBzdG9y
YWdlUmVzb3VyY2UtPmZyYW1lKCkpOwotICAgICAgICAqc3VjY2VzcyA9ICFleGNlcHRpb247Cisg
ICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgICAgICBzdG9yYWdlUmVzb3VyY2UtPnN0
b3JhZ2VBcmVhKCktPnNldEl0ZW0oa2V5LCB2YWx1ZSwgZWMsIHN0b3JhZ2VSZXNvdXJjZS0+ZnJh
bWUoKSk7CisgICAgICAgICpzdWNjZXNzID0gIWVjOwogICAgIH0gZWxzZQogICAgICAgICAqc3Vj
Y2VzcyA9IGZhbHNlOwogfQpAQCAtMTUzLDkgKzE1Myw5IEBAIHZvaWQgSW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50OjpyZW1vdmVET01TdG9yYWdlSXRlbShFcnJvclN0cmluZyosIGNvbnN0IFN0cmlu
ZyYKIHsKICAgICBJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UqIHN0b3JhZ2VSZXNvdXJjZSA9
IGdldERPTVN0b3JhZ2VSZXNvdXJjZUZvcklkKHN0b3JhZ2VJZCk7CiAgICAgaWYgKHN0b3JhZ2VS
ZXNvdXJjZSkgewotICAgICAgICBFeGNlcHRpb25Db2RlIGV4Y2VwdGlvbiA9IDA7Ci0gICAgICAg
IHN0b3JhZ2VSZXNvdXJjZS0+c3RvcmFnZUFyZWEoKS0+cmVtb3ZlSXRlbShrZXksIGV4Y2VwdGlv
biwgc3RvcmFnZVJlc291cmNlLT5mcmFtZSgpKTsKLSAgICAgICAgKnN1Y2Nlc3MgPSAhZXhjZXB0
aW9uOworICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAgICAgc3RvcmFnZVJlc291
cmNlLT5zdG9yYWdlQXJlYSgpLT5yZW1vdmVJdGVtKGtleSwgZWMsIHN0b3JhZ2VSZXNvdXJjZS0+
ZnJhbWUoKSk7CisgICAgICAgICpzdWNjZXNzID0gIWVjOwogICAgIH0gZWxzZQogICAgICAgICAq
c3VjY2VzcyA9IGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckhpc3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckhpc3RvcnkuY3BwCmluZGV4IGYzOTIxNGFmMjdkMDQzYjk4ZGU3M2ZhMjc0MjcxNGNmNDMzMmQ3
NjguLmQ3MWIzNGE4MTAyN2QxZmY3YjhkMTMxYzZmY2M3YTY5NjE2Njk0ZjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5jcHAKQEAgLTEwMyw3ICsxMDMs
NyBAQCBib29sIEluc3BlY3Rvckhpc3Rvcnk6OnBlcmZvcm0oUGFzc093blB0cjxBY3Rpb24+IGFj
dGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKIHZvaWQgSW5zcGVjdG9ySGlzdG9yeTo6bWFya1Vu
ZG9hYmxlU3RhdGUoKQogewotICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CiAgICAgcGVyZm9ybShhZG9wdFB0cihuZXcgVW5kb2FibGVTdGF0ZU1hcmsoKSks
IGVjKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clJlc291cmNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJl
c291cmNlQWdlbnQuY3BwCmluZGV4IGM0MWQ2YmFiNGQyOWRjYzM4MTMxNGMxYzIwY2E5MzM0ZWJi
MjNjYjguLmRkY2MzOTg5MzIwY2IzY2QxZjU1NGM1YmMzMjVlZWY5YTZjOTA5MGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAK
QEAgLTYwMiw3ICs2MDIsNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmdldFJlc3Bv
bnNlQm9keShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cgogdm9pZCBJbnNwZWN0
b3JSZXNvdXJjZUFnZW50OjpyZXBsYXlYSFIoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHJl
cXVlc3RJZCkKIHsKICAgICBSZWZQdHI8WE1MSHR0cFJlcXVlc3Q+IHhociA9IFhNTEh0dHBSZXF1
ZXN0OjpjcmVhdGUobV9wYWdlQWdlbnQtPm1haW5GcmFtZSgpLT5kb2N1bWVudCgpKTsKLSAgICBF
eGNlcHRpb25Db2RlIGNvZGU7CisgICAgRXhjZXB0aW9uQ29kZSBpZ25vcmVkRXhjZXB0aW9uID0g
MDsKICAgICBTdHJpbmcgYWN0dWFsUmVxdWVzdElkID0gcmVxdWVzdElkOwogCiAgICAgWEhSUmVw
bGF5RGF0YSogeGhyUmVwbGF5RGF0YSA9IG1fcmVzb3VyY2VzRGF0YS0+eGhyUmVwbGF5RGF0YShy
ZXF1ZXN0SWQpOwpAQCAtNjEzLDExICs2MTMsMTEgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50OjpyZXBsYXlYSFIoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCkKICAg
ICBpZiAoY2FjaGVkUmVzb3VyY2UpCiAgICAgICAgIG1lbW9yeUNhY2hlKCktPnJlbW92ZShjYWNo
ZWRSZXNvdXJjZSk7CiAKLSAgICB4aHItPm9wZW4oeGhyUmVwbGF5RGF0YS0+bWV0aG9kKCksIHho
clJlcGxheURhdGEtPnVybCgpLCB4aHJSZXBsYXlEYXRhLT5hc3luYygpLCBjb2RlKTsKKyAgICB4
aHItPm9wZW4oeGhyUmVwbGF5RGF0YS0+bWV0aG9kKCksIHhoclJlcGxheURhdGEtPnVybCgpLCB4
aHJSZXBsYXlEYXRhLT5hc3luYygpLCBpZ25vcmVkRXhjZXB0aW9uKTsKICAgICBIVFRQSGVhZGVy
TWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSB4aHJSZXBsYXlEYXRhLT5oZWFkZXJzKCkuZW5kKCk7
CiAgICAgZm9yIChIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IHhoclJlcGxheURh
dGEtPmhlYWRlcnMoKS5iZWdpbigpOyBpdCE9IGVuZDsgKytpdCkKLSAgICAgICAgeGhyLT5zZXRS
ZXF1ZXN0SGVhZGVyKGl0LT5rZXksIGl0LT52YWx1ZSwgY29kZSk7Ci0gICAgeGhyLT5zZW5kRnJv
bUluc3BlY3Rvcih4aHJSZXBsYXlEYXRhLT5mb3JtRGF0YSgpLCBjb2RlKTsKKyAgICAgICAgeGhy
LT5zZXRSZXF1ZXN0SGVhZGVyKGl0LT5rZXksIGl0LT52YWx1ZSwgaWdub3JlZEV4Y2VwdGlvbik7
CisgICAgeGhyLT5zZW5kRnJvbUluc3BlY3Rvcih4aHJSZXBsYXlEYXRhLT5mb3JtRGF0YSgpLCBp
Z25vcmVkRXhjZXB0aW9uKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpjYW5D
bGVhckJyb3dzZXJDYWNoZShFcnJvclN0cmluZyosIGJvb2wqIHJlc3VsdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRleCA4NWU2YmNmYzFlN2E2
MWRhYjk4NjRiOWM1ZjA3NjNmNTcxZmE2YWFhLi41YzA3NjhiZjQ1NGUzMDI1Nzk4MDViN2RjZWQx
ZjRjMzk4M2U0MmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRy
b2xsZXIuY3BwCkBAIC0zOTgsNyArMzk4LDcgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6
OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51SXRlbSogaXRlbSkKICAgICAgICAg
Ly8gd2hpY2ggbWF5IG1ha2UgdGhpcyBkaWZmaWN1bHQgdG8gaW1wbGVtZW50LiBNYXliZSBhIHNw
ZWNpYWwgY2FzZSBvZiB0ZXh0LXNoYWRvdz8KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250
ZXh0TWVudUl0ZW1UYWdTdGFydFNwZWFraW5nOiB7Ci0gICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7
CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgICAgICBSZWZQdHI8UmFuZ2U+IHNl
bGVjdGVkUmFuZ2UgPSBmcmFtZS0+c2VsZWN0aW9uKCktPnRvTm9ybWFsaXplZFJhbmdlKCk7CiAg
ICAgICAgIGlmICghc2VsZWN0ZWRSYW5nZSB8fCBzZWxlY3RlZFJhbmdlLT5jb2xsYXBzZWQoZWMp
KSB7CiAgICAgICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX2hpdFRlc3RSZXN1bHQuaW5u
ZXJOb25TaGFyZWROb2RlKCktPmRvY3VtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAK
aW5kZXggMmY1MWE4MTc1MGNhNWNkOGY1YmQ1ZDI0ZGVjZGUwODQ1ZTBhZmM2YS4uMDA1YzkzZWIw
YTFjODVmMmFmZThlNWZlZGNhM2I4MDJkZTkwZjJjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmNwcApAQCAtMTU3NiwxMCArMTU3NiwxMCBAQCBzdGF0aWMgdm9pZCBkaWRBZGRTdG9yYWdlRXZl
bnRMaXN0ZW5lcihET01XaW5kb3cqIHdpbmRvdykKICAgICAvLyBDcmVhdGluZyB0aGVzZSBXZWJD
b3JlOjpTdG9yYWdlIG9iamVjdHMgaW5mb3JtcyB0aGUgc3lzdGVtIHRoYXQgd2UnZCBsaWtlIHRv
IHJlY2VpdmUKICAgICAvLyBub3RpZmljYXRpb25zIGFib3V0IHN0b3JhZ2UgZXZlbnRzIHRoYXQg
bWlnaHQgYmUgdHJpZ2dlcmVkIGluIG90aGVyIHByb2Nlc3Nlcy4gUmF0aGVyCiAgICAgLy8gdGhh
biBzdWJzY3JpYmUgdG8gdGhlc2Ugbm90aWZpY2F0aW9ucyBleHBsaWNpdGx5LCB3ZSBzdWJzY3Jp
YmUgdG8gdGhlbSBpbXBsaWNpdGx5IHRvCi0gICAgLy8gc2ltcGxpZnkgdGhlIHdvcmsgZG9uZSBi
eSB0aGUgc3lzdGVtLiAKLSAgICBFeGNlcHRpb25Db2RlIHVudXNlZDsKLSAgICB3aW5kb3ctPmxv
Y2FsU3RvcmFnZSh1bnVzZWQpOwotICAgIHdpbmRvdy0+c2Vzc2lvblN0b3JhZ2UodW51c2VkKTsK
KyAgICAvLyBzaW1wbGlmeSB0aGUgd29yayBkb25lIGJ5IHRoZSBzeXN0ZW0uCisgICAgRXhjZXB0
aW9uQ29kZSBpZ25vcmVkRXhjZXB0aW9uID0gMDsKKyAgICB3aW5kb3ctPmxvY2FsU3RvcmFnZShp
Z25vcmVkRXhjZXB0aW9uKTsKKyAgICB3aW5kb3ctPnNlc3Npb25TdG9yYWdlKGlnbm9yZWRFeGNl
cHRpb24pOwogfQogCiBib29sIERPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciwg
Ym9vbCB1c2VDYXB0dXJlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRl
eCAxMDMyMjgzN2EyMDMyMTYwMjVlMzE5YjRiODMzNTIwOTY0NDIwYmQzLi5kMjQ0ZmJjYzA5MDZm
NDg3YWQzNTMzY2ZlY2MxMDE0NDA1YzcyZjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250
cm9sbGVyLmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IGRvY3VtZW50RnJhZ21lbnRGcm9tRHJhZ0RhdGEoRHJhZ0RhdGEqIGRyYWdECiAg
ICAgICAgICAgICAgICAgICAgICAgICB0aXRsZSA9IHVybDsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgUmVmUHRyPE5vZGU+IGFuY2hvclRleHQgPSBkb2N1bWVudC0+Y3JlYXRl
VGV4dE5vZGUodGl0bGUpOwotICAgICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAg
ICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgICAgICAgICAgICAgYW5jaG9y
LT5hcHBlbmRDaGlsZChhbmNob3JUZXh0LCBlYyk7CiAgICAgICAgICAgICAgICAgUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gZG9jdW1lbnQtPmNyZWF0ZURvY3VtZW50RnJhZ21l
bnQoKTsKICAgICAgICAgICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoYW5jaG9yLCBlYyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggMWUxMjE0YWEwYTBhYTJiNjA5
YzE2NDYxZGZkNjhiNmUyZjBlZTBkMi4uMTI0ODI2ZTZmZGFjODY1MmU0MjBkZTJjY2M0OWYxMDYz
YmNhMGVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMTkxNiw3ICsx
OTE2LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmRpc3BhdGNoRHJhZ0V2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBOb2RlKiBkcmFnVGEKICAgICAgICAgZXZlbnQuY3RybEtleSgp
LCBldmVudC5hbHRLZXkoKSwgZXZlbnQuc2hpZnRLZXkoKSwgZXZlbnQubWV0YUtleSgpLAogICAg
ICAgICAwLCAwLCBjbGlwYm9hcmQpOwogCi0gICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKICAgICBkcmFnVGFyZ2V0LT5kaXNwYXRjaEV2ZW50KG1lLmdldCgp
LCBlYyk7CiAgICAgcmV0dXJuIG1lLT5kZWZhdWx0UHJldmVudGVkKCk7CiB9CkBAIC0zMTI3LDcg
KzMxMjcsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6a2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXli
b2FyZEV2ZW50JiBpbml0aWFsS2V5RXZlbnQpCiAKICAgICBib29sIGJhY2t3YXJkQ29tcGF0aWJp
bGl0eU1vZGUgPSBuZWVkc0tleWJvYXJkRXZlbnREaXNhbWJpZ3VhdGlvblF1aXJrcygpOwogCi0g
ICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQga2V5RG93bkV2ZW50ID0gaW5pdGlhbEtleUV2ZW50OyAgICAKICAg
ICBpZiAoa2V5RG93bkV2ZW50LnR5cGUoKSAhPSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKQog
ICAgICAgICBrZXlEb3duRXZlbnQuZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFBsYXRmb3JtRXZl
bnQ6OlJhd0tleURvd24sIGJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUpOwpAQCAtMzUzOSw3ICsz
NTM5LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVRleHRJbnB1dEV2ZW50KGNvbnN0IFN0
cmluZyYgdGV4dCwgRXZlbnQqIHVuZGVybHlpbmdFdmUKICAgICBSZWZQdHI8VGV4dEV2ZW50PiBl
dmVudCA9IFRleHRFdmVudDo6Y3JlYXRlKG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygp
LCB0ZXh0LCBpbnB1dFR5cGUpOwogICAgIGV2ZW50LT5zZXRVbmRlcmx5aW5nRXZlbnQodW5kZXJs
eWluZ0V2ZW50KTsKIAotICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CiAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KGV2ZW50LCBlYyk7CiAgICAgcmV0dXJu
IGV2ZW50LT5kZWZhdWx0SGFuZGxlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggYWVjYmEz
Mzk2MTY1NmFjNWM0MTU1M2JiZDNiOTcyMWEwYTJkZDIxOC4uNWY2ZDUzYzBhMDUwZjAxZGMxMGVi
NjI2ZTIzZjk0ZjQ5MjdiZDBlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC01OTEsNyArNTkxLDcg
QEAgdm9pZCBQYWdlOjpmaW5kU3RyaW5nTWF0Y2hpbmdSYW5nZXMoY29uc3QgU3RyaW5nJiB0YXJn
ZXQsIEZpbmRPcHRpb25zIG9wdGlvbnMsIGkKICAgICAgICAgaW5kZXhGb3JTZWxlY3Rpb24gPSBO
b01hdGNoQmVmb3JlVXNlclNlbGVjdGlvbjsKICAgICAgICAgUmVmUHRyPFJhbmdlPiBzZWxlY3Rl
ZFJhbmdlID0gZnJhbWVXaXRoU2VsZWN0aW9uLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkuZmly
c3RSYW5nZSgpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1hdGNoUmFuZ2VzLT5z
aXplKCk7ICsraSkgewotICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICAgICAgICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgICAgICAgICAgaWYgKHNlbGVjdGVkUmFuZ2UtPmNv
bXBhcmVCb3VuZGFyeVBvaW50cyhSYW5nZTo6U1RBUlRfVE9fRU5ELCBtYXRjaFJhbmdlcy0+YXQo
aSkuZ2V0KCksIGVjKSA8IDApIHsKICAgICAgICAgICAgICAgICBpbmRleEZvclNlbGVjdGlvbiA9
IGk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZWZsL1JlbmRlclRoZW1lRWZsLmNwcAppbmRleCAyYzIyOGFmNGMxMjRlNzI3OTYxOTExZTg3YTk1
OGQ0OTMyNGEzOWFkLi44NzI5NmUwZTAzY2U5NGFlNzBjNDFhOGRjMDI4MTM2YjFiODMyYjllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAKQEAg
LTExNzgsNyArMTE3OCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50TWVkaWFTbGlkZXJU
cmFjayhSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvCiAgICAgY29udGV4dC0+
c2V0U3Ryb2tlU3R5bGUoTm9TdHJva2UpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7
IGluZGV4IDwgdGltZVJhbmdlcy0+bGVuZ3RoKCk7ICsraW5kZXgpIHsKLSAgICAgICAgRXhjZXB0
aW9uQ29kZSBpZ25vcmVkRXhjZXB0aW9uOworICAgICAgICBFeGNlcHRpb25Db2RlIGlnbm9yZWRF
eGNlcHRpb24gPSAwOwogICAgICAgICBmbG9hdCBzdGFydCA9IHRpbWVSYW5nZXMtPnN0YXJ0KGlu
ZGV4LCBpZ25vcmVkRXhjZXB0aW9uKTsKICAgICAgICAgZmxvYXQgZW5kID0gdGltZVJhbmdlcy0+
ZW5kKGluZGV4LCBpZ25vcmVkRXhjZXB0aW9uKTsKICAgICAgICAgaW50IHdpZHRoID0gKChlbmQg
LSBzdGFydCkgKiB0b3RhbFdpZHRoKSAvIG1lZGlhRHVyYXRpb247CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L01lZGlhUGxheWVyUHJpdmF0
ZUJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2ti
ZXJyeS9NZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5LmNwcAppbmRleCA1NjE4MjVhYTY0ZDM3
NGU0YmM0ZDUzYzUzZTM5Yjk2ZTJjNzIxZjYwLi5mODg4NWRlYWQ2OGU3MjFhMzI1YTQ5NDA1M2Ji
NWZjZGI1OThhN2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ibGFja2JlcnJ5L01lZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRl
QmxhY2tCZXJyeS5jcHAKQEAgLTUwNyw3ICs1MDcsNyBAQCBmbG9hdCBNZWRpYVBsYXllclByaXZh
dGU6OnBlcmNlbnRMb2FkZWQoKQogICAgIGZsb2F0IGJ1ZmZlcmVkID0gMDsKICAgICBSZWZQdHI8
VGltZVJhbmdlcz4gdGltZVJhbmdlcyA9IHRoaXMtPmJ1ZmZlcmVkKCk7CiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHRpbWVSYW5nZXMtPmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgRXhj
ZXB0aW9uQ29kZSBpZ25vcmVkRXhjZXB0aW9uOworICAgICAgICBFeGNlcHRpb25Db2RlIGlnbm9y
ZWRFeGNlcHRpb24gPSAwOwogICAgICAgICBmbG9hdCBzdGFydCA9IHRpbWVSYW5nZXMtPnN0YXJ0
KGksIGlnbm9yZWRFeGNlcHRpb24pOwogICAgICAgICBmbG9hdCBlbmQgPSB0aW1lUmFuZ2VzLT5l
bmQoaSwgaWdub3JlZEV4Y2VwdGlvbik7CiAgICAgICAgIGJ1ZmZlcmVkICs9IGVuZCAtIHN0YXJ0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3Rr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAKaW5k
ZXggODFlYjVhYTk0Y2M0YjhjNjJkMWJjY2EyM2RkMWVjNmEzNGRhNzA4Ny4uNDVlZGY5ZTRmYTY2
MDhlZDVmOWMyNDRiY2FjOThlMDEyMGNiMTQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwCkBAIC01NzksNyArNTc5LDcgQEAgYm9vbCBSZW5k
ZXJUaGVtZUd0azo6cGFpbnRNZWRpYVNsaWRlclRyYWNrKFJlbmRlck9iamVjdCogbywgY29uc3Qg
UGFpbnRJbmZvJiBwYWkKICAgICBjb250ZXh0LT5zZXRTdHJva2VTdHlsZShOb1N0cm9rZSk7CiAK
ICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCB0aW1lUmFuZ2VzLT5sZW5ndGgo
KTsgKytpbmRleCkgewotICAgICAgICBFeGNlcHRpb25Db2RlIGlnbm9yZWRFeGNlcHRpb247Cisg
ICAgICAgIEV4Y2VwdGlvbkNvZGUgaWdub3JlZEV4Y2VwdGlvbiA9IDA7CiAgICAgICAgIGZsb2F0
IHN0YXJ0ID0gdGltZVJhbmdlcy0+c3RhcnQoaW5kZXgsIGlnbm9yZWRFeGNlcHRpb24pOwogICAg
ICAgICBmbG9hdCBlbmQgPSB0aW1lUmFuZ2VzLT5lbmQoaW5kZXgsIGlnbm9yZWRFeGNlcHRpb24p
OwogICAgICAgICBpbnQgd2lkdGggPSAoKGVuZCAtIHN0YXJ0KSAqIHRvdGFsV2lkdGgpIC8gbWVk
aWFEdXJhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0
ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMu
bW0KaW5kZXggNTVkYzNhODI2NDU3MjZjNDM4MDI1MjAyZDdmNjIwNDZmZDZhM2Q3Yi4uYjMxNGVl
YzQ3ZmY0ZGE3ZDlmN2Y0NDhkMzU5OWUyNGU2ZTdjMDEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTE0OSw3ICsxNDksNyBAQCBQYXNzUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6Z2V0RGF0YVNlbGVjdGlvbihGcmFtZSogZnJh
bWUsIGNvbnN0IFN0cmluZwogICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjp3cmFwTlNEYXRh
KChOU0RhdGEgKilkYXRhLmdldCgpKTsKICAgICB9CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjOwor
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBmcmFt
ZS0+ZWRpdG9yKCktPnNlbGVjdGVkUmFuZ2UoKTsKICAgICBOb2RlKiBjb21tb25BbmNlc3RvciA9
IHJhbmdlLT5jb21tb25BbmNlc3RvckNvbnRhaW5lcihlYyk7CiAgICAgQVNTRVJUKGNvbW1vbkFu
Y2VzdG9yKTsKQEAgLTM4OCw3ICszODgsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxEb2N1bWVudEZy
YWdtZW50PiBkb2N1bWVudEZyYWdtZW50V2l0aEltYWdlUmVzb3VyY2UoRnJhbWUqIGZyYQogICAg
IGltYWdlRWxlbWVudC0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6c3JjQXR0ciwgW1VSTCBpc0Zp
bGVVUkxdID8gW1VSTCBhYnNvbHV0ZVN0cmluZ10gOiByZXNvdXJjZS0+dXJsKCkpOwogICAgIFJl
ZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGZyYW1lLT5kb2N1bWVudCgpLT5jcmVh
dGVEb2N1bWVudEZyYWdtZW50KCk7CiAgICAgaWYgKGZyYWdtZW50KSB7Ci0gICAgICAgIEV4Y2Vw
dGlvbkNvZGUgZWM7CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgICAgICBmcmFn
bWVudC0+YXBwZW5kQ2hpbGQoaW1hZ2VFbGVtZW50LCBlYyk7CiAgICAgICAgIHJldHVybiBmcmFn
bWVudC5yZWxlYXNlKCk7ICAgICAgIAogICAgIH0KQEAgLTU0MSw3ICs1NDEsNyBAQCBQYXNzUmVm
UHRyPERvY3VtZW50RnJhZ21lbnQ+IFBhc3RlYm9hcmQ6OmRvY3VtZW50RnJhZ21lbnQoRnJhbWUq
IGZyYW1lLCBQYXNzUmVmUAogICAgICAgICBpZiAoW1VSTFN0cmluZyBsZW5ndGhdID09IDApCiAg
ICAgICAgICAgICByZXR1cm4gbmlsOwogICAgICAgICBOU1N0cmluZyAqVVJMVGl0bGVTdHJpbmcg
PSBbcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zdHJpbmdGb3JU
eXBlKFdlYlVSTE5hbWVQYm9hcmRUeXBlLCBtX3Bhc3RlYm9hcmROYW1lKSBwcmVjb21wb3NlZFN0
cmluZ1dpdGhDYW5vbmljYWxNYXBwaW5nXTsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAg
ICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgICAgIGFuY2hvci0+c2V0QXR0cmlidXRl
KEhUTUxOYW1lczo6aHJlZkF0dHIsIFVSTFN0cmluZyk7CiAgICAgICAgIGFuY2hvci0+YXBwZW5k
Q2hpbGQoZG9jdW1lbnQtPmNyZWF0ZVRleHROb2RlKFVSTFRpdGxlU3RyaW5nKSwgZWMpOwogICAg
ICAgICBmcmFnbWVudCA9IGRvY3VtZW50LT5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuSFVE
V2luZG93Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRl
b0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tCmluZGV4IDkwZjY5MWQ3YzYwM2UzYTUy
Y2Y2ZDZmZTFkNjcxNGFmMjI2YWJlOGMuLjkyYWUzYTZmYWI5YTJhMzJhZTIwODJlYTBmZDgxOTFi
OWZmNGJiNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRl
b0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tCkBAIC00
NjksOCArNDY5LDggQEAgLSAodm9pZClzZXRDdXJyZW50VGltZTooZmxvYXQpY3VycmVudFRpbWUK
IHsKICAgICBpZiAoIVtfZGVsZWdhdGUgbWVkaWFFbGVtZW50XSkKICAgICAgICAgcmV0dXJuOwot
ICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZTsKLSAgICBbX2RlbGVnYXRlIG1lZGlhRWxlbWVu
dF0tPnNldEN1cnJlbnRUaW1lKGN1cnJlbnRUaW1lLCBlKTsKKyAgICBXZWJDb3JlOjpFeGNlcHRp
b25Db2RlIGlnbm9yZWRFeGNlcHRpb24gPSAwOworICAgIFtfZGVsZWdhdGUgbWVkaWFFbGVtZW50
XS0+c2V0Q3VycmVudFRpbWUoY3VycmVudFRpbWUsIGlnbm9yZWRFeGNlcHRpb24pOwogICAgIFtz
ZWxmIHVwZGF0ZVRpbWVdOwogfQogCkBAIC01MzAsMTAgKzUzMCwxMCBAQCAtICh2b2lkKXNldFZv
bHVtZTooZmxvYXQpdm9sdW1lCiB7CiAgICAgaWYgKCFbX2RlbGVnYXRlIG1lZGlhRWxlbWVudF0p
CiAgICAgICAgIHJldHVybjsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGU7CisgICAgV2Vi
Q29yZTo6RXhjZXB0aW9uQ29kZSBpZ25vcmVkRXhjZXB0aW9uID0gMDsKICAgICBpZiAoW19kZWxl
Z2F0ZSBtZWRpYUVsZW1lbnRdLT5tdXRlZCgpKQogICAgICAgICBbX2RlbGVnYXRlIG1lZGlhRWxl
bWVudF0tPnNldE11dGVkKGZhbHNlKTsKLSAgICBbX2RlbGVnYXRlIG1lZGlhRWxlbWVudF0tPnNl
dFZvbHVtZSh2b2x1bWUgLyBbc2VsZiBtYXhWb2x1bWVdLCBlKTsKKyAgICBbX2RlbGVnYXRlIG1l
ZGlhRWxlbWVudF0tPnNldFZvbHVtZSh2b2x1bWUgLyBbc2VsZiBtYXhWb2x1bWVdLCBpZ25vcmVk
RXhjZXB0aW9uKTsKICAgICBbc2VsZiB1cGRhdGVWb2x1bWVdOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQuY3BwCmluZGV4IGUwOWI1MGRiZTMzZGE5NGMy
MTY2MWE1ZTA4NzY3YzUzZDFmMGMyMWEuLjBhMGUwNzYzYTFkMzY2ZTQ0ZDcyYmMxZTg4NmZmYjkz
OGM5ODFkYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRo
ZW1lUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQu
Y3BwCkBAIC03OTAsMTAgKzc5MCwxMCBAQCBib29sIFJlbmRlclRoZW1lUXQ6OnBhaW50TWVkaWFT
bGlkZXJUcmFjayhSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbgogICAgICAg
ICAgICAgcC0+cGFpbnRlci0+c2V0QnJ1c2goZ2V0TWVkaWFDb250cm9sRm9yZWdyb3VuZENvbG9y
KCkpOwogCiAgICAgICAgICAgICAvLyBQYWludCBlYWNoIGJ1ZmZlcmVkIHNlY3Rpb24KLSAgICAg
ICAgICAgIEV4Y2VwdGlvbkNvZGUgZXg7CisgICAgICAgICAgICBFeGNlcHRpb25Db2RlIGlnbm9y
ZWRFeGNlcHRpb24gPSAwOwogICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBidWZmZXJl
ZC0+bGVuZ3RoKCk7IGkrKykgewotICAgICAgICAgICAgICAgIGZsb2F0IHN0YXJ0WCA9IChidWZm
ZXJlZC0+c3RhcnQoaSwgZXgpIC8gcGxheWVyLT5kdXJhdGlvbigpKSAqIDEwMDsKLSAgICAgICAg
ICAgICAgICBmbG9hdCB3aWR0aCA9ICgoYnVmZmVyZWQtPmVuZChpLCBleCkgLyBwbGF5ZXItPmR1
cmF0aW9uKCkpICogMTAwKSAtIHN0YXJ0WDsKKyAgICAgICAgICAgICAgICBmbG9hdCBzdGFydFgg
PSAoYnVmZmVyZWQtPnN0YXJ0KGksIGlnbm9yZWRFeGNlcHRpb24pIC8gcGxheWVyLT5kdXJhdGlv
bigpKSAqIDEwMDsKKyAgICAgICAgICAgICAgICBmbG9hdCB3aWR0aCA9ICgoYnVmZmVyZWQtPmVu
ZChpLCBpZ25vcmVkRXhjZXB0aW9uKSAvIHBsYXllci0+ZHVyYXRpb24oKSkgKiAxMDApIC0gc3Rh
cnRYOwogICAgICAgICAgICAgICAgIHAtPnBhaW50ZXItPmRyYXdSZWN0KHN0YXJ0WCwgMzcsIHdp
ZHRoLCAyNik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAKaW5kZXggMWU0YzRmMGM1Y2E5
NzQ5ZmVhYWJhYmMyZGQ0MzY1MTQwMzYxMDFiNi4uMThkZjNhMjc0MDhkNGQ5YmY5Yzc5Mzg4ZTFj
N2E0ZTI4NDBmYmNiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck5hbWVkRmxvd1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck5hbWVkRmxvd1RocmVhZC5jcHAKQEAgLTQ3Nyw3ICs0NzcsNyBAQCB2b2lkIFJlbmRlck5hbWVk
Rmxvd1RocmVhZDo6Z2V0UmFuZ2VzKFZlY3RvcjxSZWZQdHI8UmFuZ2U+ID4mIHJhbmdlT2JqZWN0
cywgY29ucwogICAgICAgICBpZiAoIWNvbnRlbnROb2RlLT5yZW5kZXJlcigpKQogICAgICAgICAg
ICAgY29udGludWU7CiAKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBpZ25vcmVkRXhjZXB0aW9uOwor
ICAgICAgICBFeGNlcHRpb25Db2RlIGlnbm9yZWRFeGNlcHRpb24gPSAwOwogICAgICAgICBSZWZQ
dHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShjb250ZW50Tm9kZS0+ZG9jdW1lbnQoKSk7
CiAgICAgICAgIGJvb2wgZm91bmRTdGFydFBvc2l0aW9uID0gZmFsc2U7CiAgICAgICAgIGJvb2wg
c3RhcnRzQWJvdmVSZWdpb24gPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lTWFjLm1tCmluZGV4IDFmZmE2YWE2ZWI1MjA1NGE3MmQ2OTYzNzc3YmE5NmUxNmU5MjQ2
ZmMuLjc2NjYyYzBjYjQwYjU4YmRmZTAzODBjNmVjYWJiY2Y1MjE3MzJiMDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KQEAgLTIzNCw3ICsyMzQsNyBAQCBi
b29sIFJlbmRlclRoZW1lTWFjOjpwYWludE1lZGlhU2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiBv
LCBjb25zdCBQYWludEluZm8mIHBhaQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBSZWZQ
dHI8VGltZVJhbmdlcz4gdGltZVJhbmdlcyA9IG1lZGlhRWxlbWVudC0+YnVmZmVyZWQoKTsKLSAg
ICBFeGNlcHRpb25Db2RlIGlnbm9yZWRFeGNlcHRpb247CisgICAgRXhjZXB0aW9uQ29kZSBpZ25v
cmVkRXhjZXB0aW9uID0gMDsKICAgICBmbG9hdCB0aW1lTG9hZGVkID0gdGltZVJhbmdlcy0+bGVu
Z3RoKCkgPyB0aW1lUmFuZ2VzLT5lbmQoMCwgaWdub3JlZEV4Y2VwdGlvbikgOiAwOwogICAgIGZs
b2F0IGN1cnJlbnRUaW1lID0gbWVkaWFFbGVtZW50LT5jdXJyZW50VGltZSgpOwogICAgIGZsb2F0
IGR1cmF0aW9uID0gbWVkaWFFbGVtZW50LT5kdXJhdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdU
UmVmRWxlbWVudC5jcHAKaW5kZXggNmE5ZDMxYjcxYmU4YjUxYzhhODBiNDZlMjNhY2ZkYjZiM2U5
ZDZkMi4uOTIwNzM5YTAxZmRiNGI1YzhhNDcxMDU5YTBjNjI4OGE2MjM4MGY1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCkBAIC0xNjUsMTIgKzE2NSwxMiBAQCB2b2lkIFNW
R1RSZWZFbGVtZW50OjpkZXRhY2hUYXJnZXQoKQogICAgIG1fdGFyZ2V0TGlzdGVuZXItPmRldGFj
aCgpOwogCiAgICAgU3RyaW5nIGVtcHR5Q29udGVudDsKLSAgICBFeGNlcHRpb25Db2RlIGlnbm9y
ZSA9IDA7CisgICAgRXhjZXB0aW9uQ29kZSBpZ25vcmVkRXhjZXB0aW9uID0gMDsKIAogICAgIEFT
U0VSVChzaGFkb3coKSk7CiAgICAgTm9kZSogY29udGFpbmVyID0gc2hhZG93KCktPm9sZGVzdFNo
YWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgpOwogICAgIGlmIChjb250YWluZXIpCi0gICAgICAgIGNv
bnRhaW5lci0+c2V0VGV4dENvbnRlbnQoZW1wdHlDb250ZW50LCBpZ25vcmUpOworICAgICAgICBj
b250YWluZXItPnNldFRleHRDb250ZW50KGVtcHR5Q29udGVudCwgaWdub3JlZEV4Y2VwdGlvbik7
CiAKICAgICBpZiAoIWluRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggMWJlZjUwMDYxYTNhNTQ0YzUyYmRhNmU2MzJhYmJl
NGQwMzBmY2IwYy4uODQxNzg4MjBkZTExOWZhZGQ1OTNkNGVlZjRiZDk4YjBjYmJiNGQyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0xOTQsNyArMTk0LDcgQEAgWE1M
SHR0cFJlcXVlc3Q6OlhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIFBhc3NSZWZQdHI8U2VjdXIKICAgICAsIG1fc2FtZU9yaWdpblJlcXVlc3QodHJ1ZSkKICAg
ICAsIG1fcmVjZWl2ZWRMZW5ndGgoMCkKICAgICAsIG1fbGFzdFNlbmRMaW5lTnVtYmVyKDApCi0g
ICAgLCBtX2V4Y2VwdGlvbkNvZGUoMCkKKyAgICAsIG1fZWMoMCkKICAgICAsIG1fcHJvZ3Jlc3NF
dmVudFRocm90dGxlKHRoaXMpCiAgICAgLCBtX3Jlc3BvbnNlVHlwZUNvZGUoUmVzcG9uc2VUeXBl
RGVmYXVsdCkKICAgICAsIG1fc2VjdXJpdHlPcmlnaW4oc2VjdXJpdHlPcmlnaW4pCkBAIC03MzYs
NyArNzM2LDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6c2VuZEZyb21JbnNwZWN0b3IoUGFzc1Jl
ZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEsIEV4Y2VwdGlvbkMKIHsKICAgICBtX3JlcXVlc3RFbnRp
dHlCb2R5ID0gZm9ybURhdGEgPyBmb3JtRGF0YS0+ZGVlcENvcHkoKSA6IDA7CiAgICAgY3JlYXRl
UmVxdWVzdChlYyk7Ci0gICAgbV9leGNlcHRpb25Db2RlID0gZWM7CisgICAgbV9lYyA9IGVjOwog
fQogCiB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXF1ZXN0KEV4Y2VwdGlvbkNvZGUmIGVj
KQpAQCAtODAwLDcgKzgwMCw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlcXVlc3Qo
RXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIHJlcXVlc3Quc2V0VGltZW91dEludGVydmFsKG1f
dGltZW91dE1pbGxpc2Vjb25kcyAvIDEwMDAuMCk7CiAjZW5kaWYKIAotICAgIG1fZXhjZXB0aW9u
Q29kZSA9IDA7CisgICAgbV9lYyA9IDA7CiAgICAgbV9lcnJvciA9IGZhbHNlOwogCiAgICAgaWYg
KG1fYXN5bmMpIHsKQEAgLTgyNCw5ICs4MjQsOSBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpjcmVh
dGVSZXF1ZXN0KEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZExvYWRYSFJTeW5jaHJvbm91c2x5KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7
CiAgICAgfQogCi0gICAgaWYgKCFtX2V4Y2VwdGlvbkNvZGUgJiYgbV9lcnJvcikKLSAgICAgICAg
bV9leGNlcHRpb25Db2RlID0gWE1MSHR0cFJlcXVlc3RFeGNlcHRpb246Ok5FVFdPUktfRVJSOwot
ICAgIGVjID0gbV9leGNlcHRpb25Db2RlOworICAgIGlmICghbV9lYyAmJiBtX2Vycm9yKQorICAg
ICAgICBtX2VjID0gWE1MSHR0cFJlcXVlc3RFeGNlcHRpb246Ok5FVFdPUktfRVJSOworICAgIGVj
ID0gbV9lYzsKIH0KIAogdm9pZCBYTUxIdHRwUmVxdWVzdDo6YWJvcnQoKQpAQCAtMTExMSw3ICsx
MTExLDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9y
JiBlcnJvcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGVycm9yLmlzQ2FuY2VsbGF0aW9u
KCkpIHsKLSAgICAgICAgbV9leGNlcHRpb25Db2RlID0gWE1MSHR0cFJlcXVlc3RFeGNlcHRpb246
OkFCT1JUX0VSUjsKKyAgICAgICAgbV9lYyA9IFhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uOjpBQk9S
VF9FUlI7CiAgICAgICAgIGFib3J0RXJyb3IoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTExMjcsNyArMTEyNyw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZEZhaWwoY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IpCiAgICAgaWYgKGVycm9yLmRvbWFpbigpID09IGVycm9yRG9tYWlu
V2ViS2l0SW50ZXJuYWwpCiAgICAgICAgIGxvZ0NvbnNvbGVFcnJvcihzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCksICJYTUxIdHRwUmVxdWVzdCBjYW5ub3QgbG9hZCAiICsgZXJyb3IuZmFpbGluZ1VS
TCgpICsgIi4gIiArIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkpOwogCi0gICAgbV9leGNl
cHRpb25Db2RlID0gWE1MSHR0cFJlcXVlc3RFeGNlcHRpb246Ok5FVFdPUktfRVJSOworICAgIG1f
ZWMgPSBYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbjo6TkVUV09SS19FUlI7CiAgICAgbmV0d29ya0Vy
cm9yKCk7CiB9CiAKQEAgLTEyNTgsMTEgKzEyNTgsMTEgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6
ZGlkVGltZW91dCgpCiAgICAgY2xlYXJSZXF1ZXN0KCk7CiAKICAgICBtX2Vycm9yID0gdHJ1ZTsK
LSAgICBtX2V4Y2VwdGlvbkNvZGUgPSBYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbjo6VElNRU9VVF9F
UlI7CisgICAgbV9lYyA9IFhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uOjpUSU1FT1VUX0VSUjsKIAog
ICAgIGlmICghbV9hc3luYykgewogICAgICAgICBtX3N0YXRlID0gRE9ORTsKLSAgICAgICAgbV9l
eGNlcHRpb25Db2RlID0gVElNRU9VVF9FUlI7CisgICAgICAgIG1fZWMgPSBUSU1FT1VUX0VSUjsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApp
bmRleCBmNzAxZjNhYTlhMzBkMzczMWFlMjA3MWJjNTNhOTdhNjQwNTZkNzk1Li5hZDk1ZDBiZjEz
NDRmZjhlMTUyOTdiNTVlOTY3NTdlZmY4M2VlMmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuaApAQCAtMjM3LDcgKzIzNyw3IEBAIHByaXZhdGU6CiAKICAgICB1bnNpZ25lZCBtX2xh
c3RTZW5kTGluZU51bWJlcjsKICAgICBTdHJpbmcgbV9sYXN0U2VuZFVSTDsKLSAgICBFeGNlcHRp
b25Db2RlIG1fZXhjZXB0aW9uQ29kZTsKKyAgICBFeGNlcHRpb25Db2RlIG1fZWM7CiAKICAgICBF
dmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxUcmVlVmlld2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxUcmVl
Vmlld2VyLmNwcAppbmRleCAxOTBiZjM3YWY3ZTMzOGIzMzE4ZTBhN2VmOTgzN2Q0MGJmNDY2YzJh
Li4wZGI3MDhmOTc3NzUzYjYxNGNlMWFlNTdiOWNhNmM5M2FhNTEyZGIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MVHJlZVZpZXdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hNTFRyZWVWaWV3ZXIuY3BwCkBAIC03OCw4ICs3OCw4IEBAIHZvaWQgWE1MVHJlZVZpZXdl
cjo6dHJhbnNmb3JtRG9jdW1lbnRUb1RyZWVWaWV3KCkKIAogICAgIFN0cmluZyBjc3NTdHJpbmco
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oWE1MVmlld2VyX2NzcyksIHNpemVvZihYTUxW
aWV3ZXJfY3NzKSk7CiAgICAgUmVmUHRyPFRleHQ+IHRleHQgPSBtX2RvY3VtZW50LT5jcmVhdGVU
ZXh0Tm9kZShjc3NTdHJpbmcpOwotICAgIEV4Y2VwdGlvbkNvZGUgZXhjZXB0aW9uQ29kZTsKLSAg
ICBtX2RvY3VtZW50LT5nZXRFbGVtZW50QnlJZCgieG1sLXZpZXdlci1zdHlsZSIpLT5hcHBlbmRD
aGlsZCh0ZXh0LCBleGNlcHRpb25Db2RlKTsKKyAgICBFeGNlcHRpb25Db2RlIGlnbm9yZWRFeGNl
cHRpb24gPSAwOworICAgIG1fZG9jdW1lbnQtPmdldEVsZW1lbnRCeUlkKCJ4bWwtdmlld2VyLXN0
eWxlIiktPmFwcGVuZENoaWxkKHRleHQsIGlnbm9yZWRFeGNlcHRpb24pOwogICAgIG1fZG9jdW1l
bnQtPnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKFJlY2FsY1N0eWxlSW1tZWRpYXRlbHkpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGli
eG1sMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGli
eG1sMi5jcHAKaW5kZXggYzcyYTUyZDU2NTQwYzVhMzNhM2M5N2ZiNDlkY2E3MWMzMzBlNTM5Zi4u
ZjRiZTcyZDhhNjBmODkwMDk0ODAzYjMxMWJhYTI5OTI1OTVjNjI2MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApA
QCAtODY0LDcgKzg2NCw3IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmVuZEVsZW1lbnROcygp
CiAKICAgICBpZiAoIXNjcmlwdGluZ0NvbnRlbnRJc0FsbG93ZWQobV9zY3JpcHRpbmdQZXJtaXNz
aW9uKSAmJiBuLT5pc0VsZW1lbnROb2RlKCkgJiYgdG9TY3JpcHRFbGVtZW50KHN0YXRpY19jYXN0
PEVsZW1lbnQqPihuLmdldCgpKSkpIHsKICAgICAgICAgcG9wQ3VycmVudE5vZGUoKTsKLSAgICAg
ICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAg
ICAgIG4tPnJlbW92ZShlYyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyUXQuY3BwIGIvU291cmNl
L1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlclF0LmNwcAppbmRleCBjNGQwZGVk
YWM1Y2U2MGQ0YjkyMDI4N2Y2NjEyOTMzYWE3YWRkOGQ2Li5lMzcwNTc5N2MwYzA1YmJmMzkyYzZi
MjVkNGI2YzM3M2U0NjcyMmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2Vy
L1hNTERvY3VtZW50UGFyc2VyUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIv
WE1MRG9jdW1lbnRQYXJzZXJRdC5jcHAKQEAgLTUxMiw3ICs1MTIsNyBAQCB2b2lkIFhNTERvY3Vt
ZW50UGFyc2VyOjpwYXJzZUVuZEVsZW1lbnQoKQogCiAgICAgaWYgKCFzY3JpcHRpbmdDb250ZW50
SXNBbGxvd2VkKG1fc2NyaXB0aW5nUGVybWlzc2lvbikgJiYgbi0+aXNFbGVtZW50Tm9kZSgpICYm
IHRvU2NyaXB0RWxlbWVudChzdGF0aWNfY2FzdDxFbGVtZW50Kj4obi5nZXQoKSkpKSB7CiAgICAg
ICAgIHBvcEN1cnJlbnROb2RlKCk7Ci0gICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgICAgICBuLT5yZW1vdmUoZWMpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktp
dFN1cHBvcnQvSW5wdXRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJL
aXRTdXBwb3J0L0lucHV0SGFuZGxlci5jcHAKaW5kZXggODBhMDY4ODk3MDZjZWVmNzdiZWQzNzc4
Y2MwZGMxMWVlNDIyYjI1NC4uM2I0NzY4YjllMjAwZTU0Yzg1ZmJmYmU3MzQ5NDg0YjdjN2FiNGE4
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5w
dXRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9y
dC9JbnB1dEhhbmRsZXIuY3BwCkBAIC0xNDIyLDcgKzE0MjIsNyBAQCBpbnQgSW5wdXRIYW5kbGVy
OjpzZWxlY3Rpb25Qb3NpdGlvbihib29sIHN0YXJ0KSBjb25zdAogICAgIGludCBzZWxlY3Rpb25Q
b2ludEluTm9kZSA9IHN0YXJ0ID8gcmFuZ2VTZWxlY3Rpb24tPnN0YXJ0T2Zmc2V0KCkgOiByYW5n
ZVNlbGVjdGlvbi0+ZW5kT2Zmc2V0KCk7CiAgICAgTm9kZSogY29udGFpbmVyTm9kZSA9IHN0YXJ0
ID8gcmFuZ2VTZWxlY3Rpb24tPnN0YXJ0Q29udGFpbmVyKCkgOiByYW5nZVNlbGVjdGlvbi0+ZW5k
Q29udGFpbmVyKCk7CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjOworICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VGb3JOb2RlID0gcmFuZ2VPZkNvbnRlbnRz
KG1fY3VycmVudEZvY3VzRWxlbWVudC5nZXQoKSk7CiAgICAgcmFuZ2VGb3JOb2RlLT5zZXRFbmQo
Y29udGFpbmVyTm9kZSwgc2VsZWN0aW9uUG9pbnRJbk5vZGUsIGVjKTsKICAgICBBU1NFUlQoIWVj
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRWxlbWVudC5jcHAKaW5kZXggMDhmYjE0
OTJhMWUxYWE0NWFmNTk2OGE0MDg4NDE4MzY0NjUwMTFmOS4uOThlOWYwOGMxMmFkZTRmOTU5ODk1
NzNkMzFmMTBmNzI3YzY0OTE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRWxl
bWVudC5jcHAKQEAgLTkyLDkgKzkyLDkgQEAgV2ViU3RyaW5nIFdlYkVsZW1lbnQ6OmdldEF0dHJp
YnV0ZShjb25zdCBXZWJTdHJpbmcmIGF0dHJOYW1lKSBjb25zdAogCiBib29sIFdlYkVsZW1lbnQ6
OnNldEF0dHJpYnV0ZShjb25zdCBXZWJTdHJpbmcmIGF0dHJOYW1lLCBjb25zdCBXZWJTdHJpbmcm
IGF0dHJWYWx1ZSkKIHsKLSAgICBFeGNlcHRpb25Db2RlIGV4Y2VwdGlvbkNvZGUgPSAwOwotICAg
IHVud3JhcDxFbGVtZW50PigpLT5zZXRBdHRyaWJ1dGUoYXR0ck5hbWUsIGF0dHJWYWx1ZSwgZXhj
ZXB0aW9uQ29kZSk7Ci0gICAgcmV0dXJuICFleGNlcHRpb25Db2RlOworICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOworICAgIHVud3JhcDxFbGVtZW50PigpLT5zZXRBdHRyaWJ1dGUoYXR0ck5hbWUs
IGF0dHJWYWx1ZSwgZWMpOworICAgIHJldHVybiAhZWM7CiB9CiAKIHVuc2lnbmVkIFdlYkVsZW1l
bnQ6OmF0dHJpYnV0ZUNvdW50KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJGcmFtZUltcGwuY3BwCmluZGV4IDYwYzJlMGY0NjI3ODI3YmMxOGQ5ZTY2ZThmYWM0ZWMxNzhk
NGQzN2UuLjk2NjQwZDU4YzRhNWE2MzFlODFkNDIxMDg4YmZkNzljNmEzMjliNzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcApAQCAtMjI5LDEwICsyMjks
MTAgQEAgc3RhdGljIHZvaWQgZnJhbWVDb250ZW50QXNQbGFpblRleHQoc2l6ZV90IG1heENoYXJz
LCBGcmFtZSogZnJhbWUsIFZlY3RvcjxVQ2hhcj4KIAogICAgIC8vIFNlbGVjdCB0aGUgZG9jdW1l
bnQgYm9keS4KICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlKGRvY3VtZW50LT5jcmVhdGVSYW5nZSgp
KTsKLSAgICBFeGNlcHRpb25Db2RlIGV4Y2VwdGlvbiA9IDA7Ci0gICAgcmFuZ2UtPnNlbGVjdE5v
ZGVDb250ZW50cyhkb2N1bWVudC0+Ym9keSgpLCBleGNlcHRpb24pOworICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOworICAgIHJhbmdlLT5zZWxlY3ROb2RlQ29udGVudHMoZG9jdW1lbnQtPmJvZHko
KSwgZWMpOwogCi0gICAgaWYgKCFleGNlcHRpb24pIHsKKyAgICBpZiAoIWVjKSB7CiAgICAgICAg
IC8vIFRoZSB0ZXh0IGl0ZXJhdG9yIHdpbGwgd2FsayBub2RlcyBnaXZpbmcgdXMgdGV4dC4gVGhp
cyBpcyBzaW1pbGFyIHRvCiAgICAgICAgIC8vIHRoZSBwbGFpblRleHQoKSBmdW5jdGlvbiBpbiBU
ZXh0SXRlcmF0b3IuaCwgYnV0IHdlIGltcGxlbWVudCB0aGUgbWF4aW11bQogICAgICAgICAvLyBz
aXplIGFuZCBhbHNvIGNvcHkgdGhlIHJlc3VsdHMgZGlyZWN0bHkgaW50byBhIHdzdHJpbmcsIGF2
b2lkaW5nIHRoZQpAQCAtNzQyLDEyICs3NDIsMTIgQEAgV2ViRnJhbWUqIFdlYkZyYW1lSW1wbDo6
ZmluZENoaWxkQnlFeHByZXNzaW9uKGNvbnN0IFdlYlN0cmluZyYgeHBhdGgpIGNvbnN0CiAKICAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZSgpLT5kb2N1bWVudCgpOwogCi0gICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRyPFhQYXRoUmVzdWx0PiB4cGF0aFJlc3VsdCA9IGRv
Y3VtZW50LT5ldmFsdWF0ZSh4cGF0aCwgZG9jdW1lbnQsIDAsIFhQYXRoUmVzdWx0OjpPUkRFUkVE
X05PREVfSVRFUkFUT1JfVFlQRSwgMCwgZWMpOworICAgIEV4Y2VwdGlvbkNvZGUgaWdub3JlZEV4
Y2VwdGlvbiA9IDA7CisgICAgUmVmUHRyPFhQYXRoUmVzdWx0PiB4cGF0aFJlc3VsdCA9IGRvY3Vt
ZW50LT5ldmFsdWF0ZSh4cGF0aCwgZG9jdW1lbnQsIDAsIFhQYXRoUmVzdWx0OjpPUkRFUkVEX05P
REVfSVRFUkFUT1JfVFlQRSwgMCwgaWdub3JlZEV4Y2VwdGlvbik7CiAgICAgaWYgKCF4cGF0aFJl
c3VsdCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBOb2RlKiBub2RlID0geHBhdGhSZXN1bHQt
Pml0ZXJhdGVOZXh0KGVjKTsKKyAgICBOb2RlKiBub2RlID0geHBhdGhSZXN1bHQtPml0ZXJhdGVO
ZXh0KGlnbm9yZWRFeGNlcHRpb24pOwogICAgIGlmICghbm9kZSB8fCAhbm9kZS0+aXNGcmFtZU93
bmVyRWxlbWVudCgpKQogICAgICAgICByZXR1cm4gMDsKICAgICBIVE1MRnJhbWVPd25lckVsZW1l
bnQqIGZyYW1lRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxGcmFtZU93bmVyRWxlbWVudCo+KG5v
ZGUpOwpAQCAtMjQyOSw4ICsyNDI5LDggQEAgdm9pZCBXZWJGcmFtZUltcGw6OmFkZE1hcmtlcihS
YW5nZSogcmFuZ2UsIGJvb2wgYWN0aXZlTWF0Y2gpCiAKIHZvaWQgV2ViRnJhbWVJbXBsOjpzZXRN
YXJrZXJBY3RpdmUoUmFuZ2UqIHJhbmdlLCBib29sIGFjdGl2ZSkKIHsKLSAgICBXZWJDb3JlOjpF
eGNlcHRpb25Db2RlIGVjOwotICAgIGlmICghcmFuZ2UgfHwgcmFuZ2UtPmNvbGxhcHNlZChlYykp
CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBpZ25vcmVkRXhjZXB0aW9uID0gMDsKKyAgICBp
ZiAoIXJhbmdlIHx8IHJhbmdlLT5jb2xsYXBzZWQoaWdub3JlZEV4Y2VwdGlvbikpCiAgICAgICAg
IHJldHVybjsKICAgICBmcmFtZSgpLT5kb2N1bWVudCgpLT5tYXJrZXJzKCktPnNldE1hcmtlcnNB
Y3RpdmUocmFuZ2UsIGFjdGl2ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJOb2RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk5vZGUu
Y3BwCmluZGV4IGJjNzBiNTRiNzY1OWVlNDI0NDU2MTFmZDViZTU0ZWMyNjRlMzFjOTEuLjkwNjRm
YWZhYmY2NDFlMDAxNDQ3ZmZjNzMwOWFmOTAyNWE2MmJiZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYk5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYk5vZGUuY3BwCkBAIC05OSw5ICs5OSw5IEBAIFdlYlN0cmluZyBXZWJOb2RlOjpu
b2RlVmFsdWUoKSBjb25zdAogCiBib29sIFdlYk5vZGU6OnNldE5vZGVWYWx1ZShjb25zdCBXZWJT
dHJpbmcmIHZhbHVlKQogewotICAgIEV4Y2VwdGlvbkNvZGUgZXhjZXB0aW9uQ29kZSA9IDA7Ci0g
ICAgbV9wcml2YXRlLT5zZXROb2RlVmFsdWUodmFsdWUsIGV4Y2VwdGlvbkNvZGUpOwotICAgIHJl
dHVybiAhZXhjZXB0aW9uQ29kZTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBtX3By
aXZhdGUtPnNldE5vZGVWYWx1ZSh2YWx1ZSwgZWMpOworICAgIHJldHVybiAhZWM7CiB9CiAKIFdl
YkRvY3VtZW50IFdlYk5vZGU6OmRvY3VtZW50KCkgY29uc3QKQEAgLTEzOSwxMSArMTM5LDExIEBA
IFdlYk5vZGVMaXN0IFdlYk5vZGU6OmNoaWxkTm9kZXMoKQogICAgIHJldHVybiBXZWJOb2RlTGlz
dChtX3ByaXZhdGUtPmNoaWxkTm9kZXMoKSk7CiB9CiAKLWJvb2wgV2ViTm9kZTo6YXBwZW5kQ2hp
bGQoY29uc3QgV2ViTm9kZSYgY2hpbGQpIAorYm9vbCBXZWJOb2RlOjphcHBlbmRDaGlsZChjb25z
dCBXZWJOb2RlJiBjaGlsZCkKIHsKLSAgICBFeGNlcHRpb25Db2RlIGV4Y2VwdGlvbkNvZGUgPSAw
OwotICAgIG1fcHJpdmF0ZS0+YXBwZW5kQ2hpbGQoY2hpbGQsIGV4Y2VwdGlvbkNvZGUpOwotICAg
IHJldHVybiAhZXhjZXB0aW9uQ29kZTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBt
X3ByaXZhdGUtPmFwcGVuZENoaWxkKGNoaWxkLCBlYyk7CisgICAgcmV0dXJuICFlYzsKIH0KIAog
V2ViU3RyaW5nIFdlYk5vZGU6OmNyZWF0ZU1hcmt1cCgpIGNvbnN0CkBAIC0yMzQsOSArMjM0LDkg
QEAgYm9vbCBXZWJOb2RlOjpmb2N1c2VkKCkgY29uc3QKIAogYm9vbCBXZWJOb2RlOjpyZW1vdmUo
KQogewotICAgIEV4Y2VwdGlvbkNvZGUgZXhjZXB0aW9uQ29kZSA9IDA7Ci0gICAgbV9wcml2YXRl
LT5yZW1vdmUoZXhjZXB0aW9uQ29kZSk7Ci0gICAgcmV0dXJuICFleGNlcHRpb25Db2RlOworICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIG1fcHJpdmF0ZS0+cmVtb3ZlKGVjKTsKKyAgICBy
ZXR1cm4gIWVjOwogfQogCiBib29sIFdlYk5vZGU6Omhhc05vbkVtcHR5Qm91bmRpbmdCb3goKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbWFjL1dlYlN1YnN0
cmluZ1V0aWwubW0gYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9tYWMvV2ViU3Vic3RyaW5n
VXRpbC5tbQppbmRleCBlZmJhOGIyOTk0YWEwOGZmZGE1NmI5NWUxNzUxYmJiZTE5ZGRhYzcxLi5k
MTRiYTcyM2EwNWI5MmE2YThjOGNmZDllMDdlMmRlY2ZjNDY1YzQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9tYWMvV2ViU3Vic3RyaW5nVXRpbC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9tYWMvV2ViU3Vic3RyaW5nVXRpbC5tbQpAQCAtNzMsOCAr
NzMsOCBAQCBOU0F0dHJpYnV0ZWRTdHJpbmcqIFdlYlN1YnN0cmluZ1V0aWw6OmF0dHJpYnV0ZWRT
dWJzdHJpbmdJblJhbmdlKFdlYkZyYW1lKiB3ZWJGcgogICAgICAgICBpZiAoIW51bUNoYXJhY3Rl
cnMpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBFeGNlcHRpb25Db2RlIGV4Y2Vw
dGlvbiA9IDA7Ci0gICAgICAgIE5vZGUqIGNvbnRhaW5lciA9IGl0LnJhbmdlKCktPnN0YXJ0Q29u
dGFpbmVyKGV4Y2VwdGlvbik7CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgaWdub3JlZEV4Y2VwdGlv
biA9IDA7CisgICAgICAgIE5vZGUqIGNvbnRhaW5lciA9IGl0LnJhbmdlKCktPnN0YXJ0Q29udGFp
bmVyKGlnbm9yZWRFeGNlcHRpb24pOwogICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0g
Y29udGFpbmVyLT5yZW5kZXJlcigpOwogICAgICAgICBBU1NFUlQocmVuZGVyZXIpOwogICAgICAg
ICBpZiAoIXJlbmRlcmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKaW5kZXggYTg3NWJjZTNi
MTc0YTM3NTRhY2Q3ODg2MzE2YzMzZGEzOWI5NjQ4Zi4uNjJmNDk3NDgwMmFjNTI1NjJmMjNjMmU0
NTU0OTE5YzkyZWViYzAxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCkBAIC04MDksNyAr
ODA5LDcgQEAgYm9vbCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNlbGVjdGVkUmFuZ2UoRXZh
c19PYmplY3QqIGV3a1ZpZXcsIGludCogc3RhcnQsIGkKICAgICBSZWZQdHI8V2ViQ29yZTo6UmFu
Z2U+IHRlc3RSYW5nZSA9IFdlYkNvcmU6OlJhbmdlOjpjcmVhdGUoc2NvcGUtPmRvY3VtZW50KCks
IHNjb3BlLCAwLCByYW5nZS0+c3RhcnRDb250YWluZXIoKSwgcmFuZ2UtPnN0YXJ0T2Zmc2V0KCkp
OwogICAgICpzdGFydCA9IFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgodGVzdFJh
bmdlLmdldCgpKTsKIAotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWM7CisgICAgV2ViQ29y
ZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgdGVzdFJhbmdlLT5zZXRFbmQocmFuZ2UtPmVu
ZENvbnRhaW5lcigpLCByYW5nZS0+ZW5kT2Zmc2V0KCksIGVjKTsKICAgICAqbGVuZ3RoID0gV2Vi
Q29yZTo6VGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aCh0ZXN0UmFuZ2UuZ2V0KCkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0R3RrLmNwcAppbmRleCBjYjUwMDA1ZjZiYTIzODJjMTM2OTJlY2U2NjIwMjQ5
NGZkZDQwZGQwLi41NDM0OTE4MDhkMTI5ZjViMDY4NTY3ODFmNmMxOGJhNzQzNTgxMGJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKQEAgLTQ3OSw3ICs0NzksNyBAQCBib29sIER1bXBSZW5k
ZXJUcmVlU3VwcG9ydEd0azo6c2VsZWN0ZWRSYW5nZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBp
bnQqIHN0YXJ0LAogICAgIEFTU0VSVCh0ZXN0UmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkgPT0gc2Nv
cGUpOwogICAgICpzdGFydCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgodGVzdFJhbmdlLmdl
dCgpKTsKIAotICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CiAgICAgdGVzdFJhbmdlLT5zZXRFbmQocmFuZ2UtPmVuZENvbnRhaW5lcigpLCByYW5nZS0+ZW5k
T2Zmc2V0KCksIGVjKTsKICAgICBBU1NFUlQodGVzdFJhbmdlLT5zdGFydENvbnRhaW5lcigpID09
IHNjb3BlKTsKICAgICAqbGVuZ3RoID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aCh0ZXN0UmFu
Z2UuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAppbmRleCBkMTRkYzk3NTRlNzgz
ZTg5MWM5Njk1YzExMjkzOGNkYzhiYjk5ZDdmLi4wZjJiNDVmZGEwNTA5ZjVmN2UzY2Q5YjI5N2U2
Y2NhM2ZkMTU5ZGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcApAQCAtNDE1LDcgKzQx
NSw3IEBAIHZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6c2V0Vm9sdW1lKGZsb2F0IHZv
bHVtZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fbWVkaWFFbGVtZW50KSB7Ci0gICAg
ICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAg
ICAgICBtX21lZGlhRWxlbWVudC0+c2V0Vm9sdW1lKHZvbHVtZSwgZWMpOwogICAgIH0KIH0KQEAg
LTQ0Miw3ICs0NDIsNyBAQCBmbG9hdCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpjdXJyZW50
VGltZSgpIGNvbnN0CiB2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnNldEN1cnJlbnRU
aW1lKGZsb2F0IHZhbHVlKQogewogICAgIGlmIChtX21lZGlhRWxlbWVudCkgewotICAgICAgICBF
eGNlcHRpb25Db2RlIGVjOworICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICAgICAg
bV9tZWRpYUVsZW1lbnQtPnNldEN1cnJlbnRUaW1lKHZhbHVlLCBlYyk7CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YktpdC9xdC9BcGkvcXdlYmVsZW1lbnQuY3BwCmluZGV4IDNiMDllYmI3ODM3MDRkZDljNWRhNTAw
OTcyNDFiMjgxOTQyMzdlNjAuLjEyOTMwZTU5ZmEyYmM1YzVmOGM2MzhkNTMwZjExZmJhMmU1Mjlk
ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJlbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZWxlbWVudC5jcHAKQEAgLTI0OCw4ICsyNDgsOCBA
QCBRV2ViRWxlbWVudCBRV2ViRWxlbWVudDo6ZmluZEZpcnN0KGNvbnN0IFFTdHJpbmcgJnNlbGVj
dG9yUXVlcnkpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2VsZW1lbnQpCiAgICAgICAgIHJldHVybiBR
V2ViRWxlbWVudCgpOwotICAgIEV4Y2VwdGlvbkNvZGUgZXhjZXB0aW9uID0gMDsgLy8gIyMjCi0g
ICAgcmV0dXJuIFFXZWJFbGVtZW50KG1fZWxlbWVudC0+cXVlcnlTZWxlY3RvcihzZWxlY3RvclF1
ZXJ5LCBleGNlcHRpb24pLmdldCgpKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsgLy8gIyMj
CisgICAgcmV0dXJuIFFXZWJFbGVtZW50KG1fZWxlbWVudC0+cXVlcnlTZWxlY3RvcihzZWxlY3Rv
clF1ZXJ5LCBlYykuZ2V0KCkpOwogfQogCiAvKiEKQEAgLTI2Myw4ICsyNjMsOCBAQCB2b2lkIFFX
ZWJFbGVtZW50OjpzZXRQbGFpblRleHQoY29uc3QgUVN0cmluZyAmdGV4dCkKIHsKICAgICBpZiAo
IW1fZWxlbWVudCB8fCAhbV9lbGVtZW50LT5pc0hUTUxFbGVtZW50KCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICBFeGNlcHRpb25Db2RlIGV4Y2VwdGlvbiA9IDA7Ci0gICAgc3RhdGljX2Nhc3Q8SFRN
TEVsZW1lbnQqPihtX2VsZW1lbnQpLT5zZXRJbm5lclRleHQodGV4dCwgZXhjZXB0aW9uKTsKKyAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBzdGF0aWNfY2FzdDxIVE1MRWxlbWVudCo+KG1f
ZWxlbWVudCktPnNldElubmVyVGV4dCh0ZXh0LCBlYyk7CiB9CiAKIC8qIQpAQCAtMjk2LDkgKzI5
Niw5IEBAIHZvaWQgUVdlYkVsZW1lbnQ6OnNldE91dGVyWG1sKGNvbnN0IFFTdHJpbmcgJm1hcmt1
cCkKICAgICBpZiAoIW1fZWxlbWVudCB8fCAhbV9lbGVtZW50LT5pc0hUTUxFbGVtZW50KCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIEV4Y2VwdGlvbkNvZGUgZXhjZXB0aW9uID0gMDsKKyAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKIAotICAgIHN0YXRpY19jYXN0PEhUTUxFbGVtZW50Kj4obV9l
bGVtZW50KS0+c2V0T3V0ZXJIVE1MKG1hcmt1cCwgZXhjZXB0aW9uKTsKKyAgICBzdGF0aWNfY2Fz
dDxIVE1MRWxlbWVudCo+KG1fZWxlbWVudCktPnNldE91dGVySFRNTChtYXJrdXAsIGVjKTsKIH0K
IAogLyohCkBAIC0zMzYsOSArMzM2LDkgQEAgdm9pZCBRV2ViRWxlbWVudDo6c2V0SW5uZXJYbWwo
Y29uc3QgUVN0cmluZyAmbWFya3VwKQogICAgIGlmICghbV9lbGVtZW50IHx8ICFtX2VsZW1lbnQt
PmlzSFRNTEVsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRXhjZXB0aW9uQ29kZSBl
eGNlcHRpb24gPSAwOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogCi0gICAgc3RhdGljX2Nh
c3Q8SFRNTEVsZW1lbnQqPihtX2VsZW1lbnQpLT5zZXRJbm5lckhUTUwobWFya3VwLCBleGNlcHRp
b24pOworICAgIHN0YXRpY19jYXN0PEhUTUxFbGVtZW50Kj4obV9lbGVtZW50KS0+c2V0SW5uZXJI
VE1MKG1hcmt1cCwgZWMpOwogfQogCiAvKiEKQEAgLTM3MSw4ICszNzEsOCBAQCB2b2lkIFFXZWJF
bGVtZW50OjpzZXRBdHRyaWJ1dGUoY29uc3QgUVN0cmluZyAmbmFtZSwgY29uc3QgUVN0cmluZyAm
dmFsdWUpCiB7CiAgICAgaWYgKCFtX2VsZW1lbnQpCiAgICAgICAgIHJldHVybjsKLSAgICBFeGNl
cHRpb25Db2RlIGV4Y2VwdGlvbiA9IDA7Ci0gICAgbV9lbGVtZW50LT5zZXRBdHRyaWJ1dGUobmFt
ZSwgdmFsdWUsIGV4Y2VwdGlvbik7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgbV9l
bGVtZW50LT5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUsIGVjKTsKIH0KIAogLyohCkBAIC0zODYs
OCArMzg2LDggQEAgdm9pZCBRV2ViRWxlbWVudDo6c2V0QXR0cmlidXRlTlMoY29uc3QgUVN0cmlu
ZyAmbmFtZXNwYWNlVXJpLCBjb25zdCBRU3RyaW5nICZuYW0KIHsKICAgICBpZiAoIW1fZWxlbWVu
dCkKICAgICAgICAgcmV0dXJuOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZXhjZXB0aW9u
ID0gMDsKLSAgICBtX2VsZW1lbnQtPnNldEF0dHJpYnV0ZU5TKG5hbWVzcGFjZVVyaSwgbmFtZSwg
dmFsdWUsIGV4Y2VwdGlvbik7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Cisg
ICAgbV9lbGVtZW50LT5zZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2VVcmksIG5hbWUsIHZhbHVlLCBl
Yyk7CiB9CiAKIC8qIQpAQCAtOTY0LDggKzk2NCw4IEBAIHZvaWQgUVdlYkVsZW1lbnQ6OmFwcGVu
ZEluc2lkZShjb25zdCBRV2ViRWxlbWVudCAmZWxlbWVudCkKICAgICBpZiAoIW1fZWxlbWVudCB8
fCBlbGVtZW50LmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBFeGNlcHRpb25Db2Rl
IGV4Y2VwdGlvbiA9IDA7Ci0gICAgbV9lbGVtZW50LT5hcHBlbmRDaGlsZChlbGVtZW50Lm1fZWxl
bWVudCwgZXhjZXB0aW9uKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBtX2VsZW1l
bnQtPmFwcGVuZENoaWxkKGVsZW1lbnQubV9lbGVtZW50LCBlYyk7CiB9CiAKIC8qIQpAQCAtOTgz
LDEwICs5ODMsMTAgQEAgdm9pZCBRV2ViRWxlbWVudDo6YXBwZW5kSW5zaWRlKGNvbnN0IFFTdHJp
bmcgJm1hcmt1cCkKICAgICBpZiAoIW1fZWxlbWVudC0+aXNIVE1MRWxlbWVudCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBFeGNlcHRpb25Db2RlIGV4Y2VwdGlvbiA9IDA7Ci0gICAgUmVmUHRy
PERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gIGNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudCht
YXJrdXAsIHRvSFRNTEVsZW1lbnQobV9lbGVtZW50KSwgQWxsb3dTY3JpcHRpbmdDb250ZW50LCBl
eGNlcHRpb24pOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFJlZlB0cjxEb2N1bWVu
dEZyYWdtZW50PiBmcmFnbWVudCA9ICBjcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQobWFya3VwLCB0
b0hUTUxFbGVtZW50KG1fZWxlbWVudCksIEFsbG93U2NyaXB0aW5nQ29udGVudCwgZWMpOwogCi0g
ICAgbV9lbGVtZW50LT5hcHBlbmRDaGlsZChmcmFnbWVudCwgZXhjZXB0aW9uKTsKKyAgICBtX2Vs
ZW1lbnQtPmFwcGVuZENoaWxkKGZyYWdtZW50LCBlYyk7CiB9CiAKIC8qIQpAQCAtMTAwNSwxMiAr
MTAwNSwxMiBAQCB2b2lkIFFXZWJFbGVtZW50OjpwcmVwZW5kSW5zaWRlKGNvbnN0IFFXZWJFbGVt
ZW50ICZlbGVtZW50KQogICAgIGlmICghbV9lbGVtZW50IHx8IGVsZW1lbnQuaXNOdWxsKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIEV4Y2VwdGlvbkNvZGUgZXhjZXB0aW9uID0gMDsKKyAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKIAogICAgIGlmIChtX2VsZW1lbnQtPmhhc0NoaWxkTm9kZXMo
KSkKLSAgICAgICAgbV9lbGVtZW50LT5pbnNlcnRCZWZvcmUoZWxlbWVudC5tX2VsZW1lbnQsIG1f
ZWxlbWVudC0+Zmlyc3RDaGlsZCgpLCBleGNlcHRpb24pOworICAgICAgICBtX2VsZW1lbnQtPmlu
c2VydEJlZm9yZShlbGVtZW50Lm1fZWxlbWVudCwgbV9lbGVtZW50LT5maXJzdENoaWxkKCksIGVj
KTsKICAgICBlbHNlCi0gICAgICAgIG1fZWxlbWVudC0+YXBwZW5kQ2hpbGQoZWxlbWVudC5tX2Vs
ZW1lbnQsIGV4Y2VwdGlvbik7CisgICAgICAgIG1fZWxlbWVudC0+YXBwZW5kQ2hpbGQoZWxlbWVu
dC5tX2VsZW1lbnQsIGVjKTsKIH0KIAogLyohCkBAIC0xMDI4LDEzICsxMDI4LDEzIEBAIHZvaWQg
UVdlYkVsZW1lbnQ6OnByZXBlbmRJbnNpZGUoY29uc3QgUVN0cmluZyAmbWFya3VwKQogICAgIGlm
ICghbV9lbGVtZW50LT5pc0hUTUxFbGVtZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEV4
Y2VwdGlvbkNvZGUgZXhjZXB0aW9uID0gMDsKLSAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4g
ZnJhZ21lbnQgPSAgY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KG1hcmt1cCwgdG9IVE1MRWxlbWVu
dChtX2VsZW1lbnQpLCBBbGxvd1NjcmlwdGluZ0NvbnRlbnQsIGV4Y2VwdGlvbik7CisgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50
ID0gIGNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudChtYXJrdXAsIHRvSFRNTEVsZW1lbnQobV9lbGVt
ZW50KSwgQWxsb3dTY3JpcHRpbmdDb250ZW50LCBlYyk7CiAKICAgICBpZiAobV9lbGVtZW50LT5o
YXNDaGlsZE5vZGVzKCkpCi0gICAgICAgIG1fZWxlbWVudC0+aW5zZXJ0QmVmb3JlKGZyYWdtZW50
LCBtX2VsZW1lbnQtPmZpcnN0Q2hpbGQoKSwgZXhjZXB0aW9uKTsKKyAgICAgICAgbV9lbGVtZW50
LT5pbnNlcnRCZWZvcmUoZnJhZ21lbnQsIG1fZWxlbWVudC0+Zmlyc3RDaGlsZCgpLCBlYyk7CiAg
ICAgZWxzZQotICAgICAgICBtX2VsZW1lbnQtPmFwcGVuZENoaWxkKGZyYWdtZW50LCBleGNlcHRp
b24pOworICAgICAgICBtX2VsZW1lbnQtPmFwcGVuZENoaWxkKGZyYWdtZW50LCBlYyk7CiB9CiAK
IApAQCAtMTA1Niw4ICsxMDU2LDggQEAgdm9pZCBRV2ViRWxlbWVudDo6cHJlcGVuZE91dHNpZGUo
Y29uc3QgUVdlYkVsZW1lbnQgJmVsZW1lbnQpCiAgICAgaWYgKCFtX2VsZW1lbnQtPnBhcmVudE5v
ZGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRXhjZXB0aW9uQ29kZSBleGNlcHRpb24gPSAw
OwotICAgIG1fZWxlbWVudC0+cGFyZW50Tm9kZSgpLT5pbnNlcnRCZWZvcmUoZWxlbWVudC5tX2Vs
ZW1lbnQsIG1fZWxlbWVudCwgZXhjZXB0aW9uKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
KyAgICBtX2VsZW1lbnQtPnBhcmVudE5vZGUoKS0+aW5zZXJ0QmVmb3JlKGVsZW1lbnQubV9lbGVt
ZW50LCBtX2VsZW1lbnQsIGVjKTsKIH0KIAogLyohCkBAIC0xMDc5LDEwICsxMDc5LDEwIEBAIHZv
aWQgUVdlYkVsZW1lbnQ6OnByZXBlbmRPdXRzaWRlKGNvbnN0IFFTdHJpbmcgJm1hcmt1cCkKICAg
ICBpZiAoIXBhcmVudC0+aXNIVE1MRWxlbWVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBF
eGNlcHRpb25Db2RlIGV4Y2VwdGlvbiA9IDA7Ci0gICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+
IGZyYWdtZW50ID0gY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KG1hcmt1cCwgdG9IVE1MRWxlbWVu
dChwYXJlbnQpLCBBbGxvd1NjcmlwdGluZ0NvbnRlbnQsIGV4Y2VwdGlvbik7CisgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CisgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0g
Y3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KG1hcmt1cCwgdG9IVE1MRWxlbWVudChwYXJlbnQpLCBB
bGxvd1NjcmlwdGluZ0NvbnRlbnQsIGVjKTsKIAotICAgIHBhcmVudC0+aW5zZXJ0QmVmb3JlKGZy
YWdtZW50LCBtX2VsZW1lbnQsIGV4Y2VwdGlvbik7CisgICAgcGFyZW50LT5pbnNlcnRCZWZvcmUo
ZnJhZ21lbnQsIG1fZWxlbWVudCwgZWMpOwogfQogCiAvKiEKQEAgLTExMDMsMTEgKzExMDMsMTEg
QEAgdm9pZCBRV2ViRWxlbWVudDo6YXBwZW5kT3V0c2lkZShjb25zdCBRV2ViRWxlbWVudCAmZWxl
bWVudCkKICAgICBpZiAoIW1fZWxlbWVudC0+cGFyZW50Tm9kZSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBFeGNlcHRpb25Db2RlIGV4Y2VwdGlvbiA9IDA7CisgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CiAgICAgaWYgKCFtX2VsZW1lbnQtPm5leHRTaWJsaW5nKCkpCi0gICAgICAgIG1fZWxl
bWVudC0+cGFyZW50Tm9kZSgpLT5hcHBlbmRDaGlsZChlbGVtZW50Lm1fZWxlbWVudCwgZXhjZXB0
aW9uKTsKKyAgICAgICAgbV9lbGVtZW50LT5wYXJlbnROb2RlKCktPmFwcGVuZENoaWxkKGVsZW1l
bnQubV9lbGVtZW50LCBlYyk7CiAgICAgZWxzZQotICAgICAgICBtX2VsZW1lbnQtPnBhcmVudE5v
ZGUoKS0+aW5zZXJ0QmVmb3JlKGVsZW1lbnQubV9lbGVtZW50LCBtX2VsZW1lbnQtPm5leHRTaWJs
aW5nKCksIGV4Y2VwdGlvbik7CisgICAgICAgIG1fZWxlbWVudC0+cGFyZW50Tm9kZSgpLT5pbnNl
cnRCZWZvcmUoZWxlbWVudC5tX2VsZW1lbnQsIG1fZWxlbWVudC0+bmV4dFNpYmxpbmcoKSwgZWMp
OwogfQogCiAvKiEKQEAgLTExMjksMTMgKzExMjksMTMgQEAgdm9pZCBRV2ViRWxlbWVudDo6YXBw
ZW5kT3V0c2lkZShjb25zdCBRU3RyaW5nICZtYXJrdXApCiAgICAgaWYgKCFwYXJlbnQtPmlzSFRN
TEVsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRXhjZXB0aW9uQ29kZSBleGNlcHRp
b24gPSAwOwotICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0ZUNv
bnRleHR1YWxGcmFnbWVudChtYXJrdXAsIHRvSFRNTEVsZW1lbnQocGFyZW50KSwgQWxsb3dTY3Jp
cHRpbmdDb250ZW50LCBleGNlcHRpb24pOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAg
IFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0ZUNvbnRleHR1YWxGcmFn
bWVudChtYXJrdXAsIHRvSFRNTEVsZW1lbnQocGFyZW50KSwgQWxsb3dTY3JpcHRpbmdDb250ZW50
LCBlYyk7CiAKICAgICBpZiAoIW1fZWxlbWVudC0+bmV4dFNpYmxpbmcoKSkKLSAgICAgICAgcGFy
ZW50LT5hcHBlbmRDaGlsZChmcmFnbWVudCwgZXhjZXB0aW9uKTsKKyAgICAgICAgcGFyZW50LT5h
cHBlbmRDaGlsZChmcmFnbWVudCwgZWMpOwogICAgIGVsc2UKLSAgICAgICAgcGFyZW50LT5pbnNl
cnRCZWZvcmUoZnJhZ21lbnQsIG1fZWxlbWVudC0+bmV4dFNpYmxpbmcoKSwgZXhjZXB0aW9uKTsK
KyAgICAgICAgcGFyZW50LT5pbnNlcnRCZWZvcmUoZnJhZ21lbnQsIG1fZWxlbWVudC0+bmV4dFNp
YmxpbmcoKSwgZWMpOwogfQogCiAvKiEKQEAgLTExNjYsOCArMTE2Niw4IEBAIFFXZWJFbGVtZW50
ICZRV2ViRWxlbWVudDo6dGFrZUZyb21Eb2N1bWVudCgpCiAgICAgaWYgKCFtX2VsZW1lbnQpCiAg
ICAgICAgIHJldHVybiAqdGhpczsKIAotICAgIEV4Y2VwdGlvbkNvZGUgZXhjZXB0aW9uID0gMDsK
LSAgICBtX2VsZW1lbnQtPnJlbW92ZShleGNlcHRpb24pOworICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOworICAgIG1fZWxlbWVudC0+cmVtb3ZlKGVjKTsKIAogICAgIHJldHVybiAqdGhpczsKIH0K
QEAgLTExODIsOCArMTE4Miw4IEBAIHZvaWQgUVdlYkVsZW1lbnQ6OnJlbW92ZUZyb21Eb2N1bWVu
dCgpCiAgICAgaWYgKCFtX2VsZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIEV4Y2VwdGlv
bkNvZGUgZXhjZXB0aW9uID0gMDsKLSAgICBtX2VsZW1lbnQtPnJlbW92ZShleGNlcHRpb24pOwor
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIG1fZWxlbWVudC0+cmVtb3ZlKGVjKTsKICAg
ICBtX2VsZW1lbnQtPmRlcmVmKCk7CiAgICAgbV9lbGVtZW50ID0gMDsKIH0KQEAgLTEyNDMsMTkg
KzEyNDMsMTkgQEAgdm9pZCBRV2ViRWxlbWVudDo6ZW5jbG9zZUNvbnRlbnRzV2l0aChjb25zdCBR
V2ViRWxlbWVudCAmZWxlbWVudCkKICAgICBpZiAoIWluc2VydGlvblBvaW50KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBFeGNlcHRpb25Db2RlIGV4Y2VwdGlvbiA9IDA7CisgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CiAKICAgICAvLyByZXBhcmVudCBjaGlsZHJlbgogICAgIGZvciAoUmVmUHRy
PE5vZGU+IGNoaWxkID0gbV9lbGVtZW50LT5maXJzdENoaWxkKCk7IGNoaWxkOykgewogICAgICAg
ICBSZWZQdHI8Tm9kZT4gbmV4dCA9IGNoaWxkLT5uZXh0U2libGluZygpOwotICAgICAgICBpbnNl
cnRpb25Qb2ludC0+YXBwZW5kQ2hpbGQoY2hpbGQsIGV4Y2VwdGlvbik7CisgICAgICAgIGluc2Vy
dGlvblBvaW50LT5hcHBlbmRDaGlsZChjaGlsZCwgZWMpOwogICAgICAgICBjaGlsZCA9IG5leHQ7
CiAgICAgfQogCiAgICAgaWYgKG1fZWxlbWVudC0+aGFzQ2hpbGROb2RlcygpKQotICAgICAgICBt
X2VsZW1lbnQtPmluc2VydEJlZm9yZShlbGVtZW50Lm1fZWxlbWVudCwgbV9lbGVtZW50LT5maXJz
dENoaWxkKCksIGV4Y2VwdGlvbik7CisgICAgICAgIG1fZWxlbWVudC0+aW5zZXJ0QmVmb3JlKGVs
ZW1lbnQubV9lbGVtZW50LCBtX2VsZW1lbnQtPmZpcnN0Q2hpbGQoKSwgZWMpOwogICAgIGVsc2UK
LSAgICAgICAgbV9lbGVtZW50LT5hcHBlbmRDaGlsZChlbGVtZW50Lm1fZWxlbWVudCwgZXhjZXB0
aW9uKTsKKyAgICAgICAgbV9lbGVtZW50LT5hcHBlbmRDaGlsZChlbGVtZW50Lm1fZWxlbWVudCwg
ZWMpOwogfQogCiAvKiEKQEAgLTEyNzUsOCArMTI3NSw4IEBAIHZvaWQgUVdlYkVsZW1lbnQ6OmVu
Y2xvc2VDb250ZW50c1dpdGgoY29uc3QgUVN0cmluZyAmbWFya3VwKQogICAgIGlmICghbV9lbGVt
ZW50LT5pc0hUTUxFbGVtZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEV4Y2VwdGlvbkNv
ZGUgZXhjZXB0aW9uID0gMDsKLSAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQg
PSAgY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KG1hcmt1cCwgdG9IVE1MRWxlbWVudChtX2VsZW1l
bnQpLCBBbGxvd1NjcmlwdGluZ0NvbnRlbnQsIGV4Y2VwdGlvbik7CisgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CisgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gIGNyZWF0
ZUNvbnRleHR1YWxGcmFnbWVudChtYXJrdXAsIHRvSFRNTEVsZW1lbnQobV9lbGVtZW50KSwgQWxs
b3dTY3JpcHRpbmdDb250ZW50LCBlYyk7CiAKICAgICBpZiAoIWZyYWdtZW50IHx8ICFmcmFnbWVu
dC0+Zmlyc3RDaGlsZCgpKQogICAgICAgICByZXR1cm47CkBAIC0xMjg5LDE0ICsxMjg5LDE0IEBA
IHZvaWQgUVdlYkVsZW1lbnQ6OmVuY2xvc2VDb250ZW50c1dpdGgoY29uc3QgUVN0cmluZyAmbWFy
a3VwKQogICAgIC8vIHJlcGFyZW50IGNoaWxkcmVuCiAgICAgZm9yIChSZWZQdHI8Tm9kZT4gY2hp
bGQgPSBtX2VsZW1lbnQtPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7KSB7CiAgICAgICAgIFJlZlB0cjxO
b2RlPiBuZXh0ID0gY2hpbGQtPm5leHRTaWJsaW5nKCk7Ci0gICAgICAgIGluc2VydGlvblBvaW50
LT5hcHBlbmRDaGlsZChjaGlsZCwgZXhjZXB0aW9uKTsKKyAgICAgICAgaW5zZXJ0aW9uUG9pbnQt
PmFwcGVuZENoaWxkKGNoaWxkLCBlYyk7CiAgICAgICAgIGNoaWxkID0gbmV4dDsKICAgICB9CiAK
ICAgICBpZiAobV9lbGVtZW50LT5oYXNDaGlsZE5vZGVzKCkpCi0gICAgICAgIG1fZWxlbWVudC0+
aW5zZXJ0QmVmb3JlKGZyYWdtZW50LCBtX2VsZW1lbnQtPmZpcnN0Q2hpbGQoKSwgZXhjZXB0aW9u
KTsKKyAgICAgICAgbV9lbGVtZW50LT5pbnNlcnRCZWZvcmUoZnJhZ21lbnQsIG1fZWxlbWVudC0+
Zmlyc3RDaGlsZCgpLCBlYyk7CiAgICAgZWxzZQotICAgICAgICBtX2VsZW1lbnQtPmFwcGVuZENo
aWxkKGZyYWdtZW50LCBleGNlcHRpb24pOworICAgICAgICBtX2VsZW1lbnQtPmFwcGVuZENoaWxk
KGZyYWdtZW50LCBlYyk7CiB9CiAKIC8qIQpAQCAtMTMyMiwxMyArMTMyMiwxMyBAQCB2b2lkIFFX
ZWJFbGVtZW50OjplbmNsb3NlV2l0aChjb25zdCBRV2ViRWxlbWVudCAmZWxlbWVudCkKICAgICBO
b2RlKiBwYXJlbnQgPSBtX2VsZW1lbnQtPnBhcmVudE5vZGUoKTsKICAgICBOb2RlKiBzaWJsaW5n
Tm9kZSA9IG1fZWxlbWVudC0+bmV4dFNpYmxpbmcoKTsKIAotICAgIEV4Y2VwdGlvbkNvZGUgZXhj
ZXB0aW9uID0gMDsKLSAgICBpbnNlcnRpb25Qb2ludC0+YXBwZW5kQ2hpbGQobV9lbGVtZW50LCBl
eGNlcHRpb24pOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGluc2VydGlvblBvaW50
LT5hcHBlbmRDaGlsZChtX2VsZW1lbnQsIGVjKTsKIAogICAgIGlmICghc2libGluZ05vZGUpCi0g
ICAgICAgIHBhcmVudC0+YXBwZW5kQ2hpbGQoZWxlbWVudC5tX2VsZW1lbnQsIGV4Y2VwdGlvbik7
CisgICAgICAgIHBhcmVudC0+YXBwZW5kQ2hpbGQoZWxlbWVudC5tX2VsZW1lbnQsIGVjKTsKICAg
ICBlbHNlCi0gICAgICAgIHBhcmVudC0+aW5zZXJ0QmVmb3JlKGVsZW1lbnQubV9lbGVtZW50LCBz
aWJsaW5nTm9kZSwgZXhjZXB0aW9uKTsKKyAgICAgICAgcGFyZW50LT5pbnNlcnRCZWZvcmUoZWxl
bWVudC5tX2VsZW1lbnQsIHNpYmxpbmdOb2RlLCBlYyk7CiB9CiAKIC8qIQpAQCAtMTM0OSw4ICsx
MzQ5LDggQEAgdm9pZCBRV2ViRWxlbWVudDo6ZW5jbG9zZVdpdGgoY29uc3QgUVN0cmluZyAmbWFy
a3VwKQogICAgIGlmICghcGFyZW50LT5pc0hUTUxFbGVtZW50KCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIEV4Y2VwdGlvbkNvZGUgZXhjZXB0aW9uID0gMDsKLSAgICBSZWZQdHI8RG9jdW1lbnRG
cmFnbWVudD4gZnJhZ21lbnQgPSBjcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQobWFya3VwLCB0b0hU
TUxFbGVtZW50KHBhcmVudCksIEFsbG93U2NyaXB0aW5nQ29udGVudCwgZXhjZXB0aW9uKTsKKyAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJh
Z21lbnQgPSBjcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQobWFya3VwLCB0b0hUTUxFbGVtZW50KHBh
cmVudCksIEFsbG93U2NyaXB0aW5nQ29udGVudCwgZWMpOwogCiAgICAgaWYgKCFmcmFnbWVudCB8
fCAhZnJhZ21lbnQtPmZpcnN0Q2hpbGQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTM2NiwxMiAr
MTM2NiwxMiBAQCB2b2lkIFFXZWJFbGVtZW50OjplbmNsb3NlV2l0aChjb25zdCBRU3RyaW5nICZt
YXJrdXApCiAgICAgLy8gd2Ugbm8gbG9uZ2VyIGhhdmUgYWNjZXNzIHRvIHRoZSBub2RlcyBpdCBj
b250YWluZWQuCiAgICAgTm9kZSogc2libGluZ05vZGUgPSBtX2VsZW1lbnQtPm5leHRTaWJsaW5n
KCk7CiAKLSAgICBpbnNlcnRpb25Qb2ludC0+YXBwZW5kQ2hpbGQobV9lbGVtZW50LCBleGNlcHRp
b24pOworICAgIGluc2VydGlvblBvaW50LT5hcHBlbmRDaGlsZChtX2VsZW1lbnQsIGVjKTsKIAog
ICAgIGlmICghc2libGluZ05vZGUpCi0gICAgICAgIHBhcmVudC0+YXBwZW5kQ2hpbGQoZnJhZ21l
bnQsIGV4Y2VwdGlvbik7CisgICAgICAgIHBhcmVudC0+YXBwZW5kQ2hpbGQoZnJhZ21lbnQsIGVj
KTsKICAgICBlbHNlCi0gICAgICAgIHBhcmVudC0+aW5zZXJ0QmVmb3JlKGZyYWdtZW50LCBzaWJs
aW5nTm9kZSwgZXhjZXB0aW9uKTsKKyAgICAgICAgcGFyZW50LT5pbnNlcnRCZWZvcmUoZnJhZ21l
bnQsIHNpYmxpbmdOb2RlLCBlYyk7CiB9CiAKIC8qIQpAQCAtMTUwMSw4ICsxNTAxLDggQEAgUVdl
YkVsZW1lbnRDb2xsZWN0aW9uUHJpdmF0ZSogUVdlYkVsZW1lbnRDb2xsZWN0aW9uUHJpdmF0ZTo6
Y3JlYXRlKGNvbnN0IFBhc3NSZWYKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAvLyBMZXQgV2Vi
S2l0IGRvIHRoZSBoYXJkIHdvcmsgaGVoZWhlCi0gICAgRXhjZXB0aW9uQ29kZSBleGNlcHRpb24g
PSAwOyAvLyAjIyMKLSAgICBSZWZQdHI8Tm9kZUxpc3Q+IG5vZGVzID0gY29udGV4dC0+cXVlcnlT
ZWxlY3RvckFsbChxdWVyeSwgZXhjZXB0aW9uKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsg
Ly8gIyMjCisgICAgUmVmUHRyPE5vZGVMaXN0PiBub2RlcyA9IGNvbnRleHQtPnF1ZXJ5U2VsZWN0
b3JBbGwocXVlcnksIGVjKTsKICAgICBpZiAoIW5vZGVzKQogICAgICAgICByZXR1cm4gMDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJl
ZVN1cHBvcnRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydFF0LmNwcAppbmRleCAzM2E0ZDI0Y2RlZTkwNDFhM2MzNzc3ZDdiN2I1MmI1
NTQ5YzZhYmUzLi41OWYzZDFmMDUxMmZhN2NjNjkwMzEwOWI5NWEwMWNiNjY4YTk4NzcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydFF0LmNwcApAQCAtNTA0LDcgKzUwNCw3IEBAIFFWYXJpYW50TGlzdCBEdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdDo6c2VsZWN0ZWRSYW5nZShRV2ViUGFnZUFkYXB0ZXIgKmFkYXB0
ZXIpCiAgICAgQVNTRVJUKHRlc3RSYW5nZS0+c3RhcnRDb250YWluZXIoKSA9PSBzY29wZSk7CiAg
ICAgaW50IHN0YXJ0UG9zaXRpb24gPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHRlc3RSYW5n
ZS5nZXQoKSk7CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjOworICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwogICAgIHRlc3RSYW5nZS0+c2V0RW5kKHJhbmdlLT5lbmRDb250YWluZXIoKSwgcmFuZ2Ut
PmVuZE9mZnNldCgpLCBlYyk7CiAgICAgQVNTRVJUKHRlc3RSYW5nZS0+c3RhcnRDb250YWluZXIo
KSA9PSBzY29wZSk7CiAgICAgaW50IGVuZFBvc2l0aW9uID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxl
bmd0aCh0ZXN0UmFuZ2UuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vRE9N
Q1NTQ2xhc3Nlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01DU1NDbGFzc2VzLmNwcAppbmRl
eCAyY2ViOTE2NTQ0YjMyMmYwMzFmY2U1YTMyZGMxOThlNTc1MGY4NGYwLi45M2EyNWJkMmVhYjAx
ZjA3N2M3NjEwNGU4YjlmNjU3MmVjNWRjOGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dp
bi9ET01DU1NDbGFzc2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01DU1NDbGFzc2Vz
LmNwcApAQCAtOTEsNyArOTEsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUNTU1N0
eWxlRGVjbGFyYXRpb246OnNldENzc1RleHQoCiB7CiAgICAgV1RGOjpTdHJpbmcgY3NzVGV4dFN0
cmluZyhjc3NUZXh0KTsKICAgICAvLyBGSVhNRTogPHJkYXI6Ly81MTQ4MDQ1PiByZXR1cm4gRE9N
IGV4Y2VwdGlvbiBpbmZvCi0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYzsKKyAgICBXZWJD
b3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBtX3N0eWxlLT5zZXRDc3NUZXh0KGNzc1Rl
eHRTdHJpbmcsIGVjKTsKICAgICByZXR1cm4gU19PSzsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvd2luL0RPTUNvcmVDbGFzc2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL0RPTUNvcmVD
bGFzc2VzLmNwcAppbmRleCA0MmZiMmUwNTEwNDViMTk5NzUyYjczMTE5MjQyMGM4MjEwZmQyYjlm
Li4wMTU4ZWY5YzRjYTgxY2IxNmIyYTMwYzY4NTkyNjU5M2U4MzIwM2I4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93
aW4vRE9NQ29yZUNsYXNzZXMuY3BwCkBAIC0yMzUsNyArMjM1LDcgQEAgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBET01Ob2RlOjppbnNlcnRCZWZvcmUoCiAKICAgICBDT01QdHI8RE9NTm9kZT4g
cmVmQ2hpbGROb2RlKFF1ZXJ5LCByZWZDaGlsZCk7CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjOwor
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGlmICghbV9ub2RlLT5pbnNlcnRCZWZvcmUo
bmV3Q2hpbGROb2RlLT5ub2RlKCksIHJlZkNoaWxkTm9kZSA/IHJlZkNoaWxkTm9kZS0+bm9kZSgp
IDogMCwgZWMpKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCkBAIC0yNjksNyArMjY5LDcgQEAg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01Ob2RlOjpyZW1vdmVDaGlsZCgKICAgICBpZiAo
IW9sZENoaWxkTm9kZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIEV4Y2VwdGlvbkNv
ZGUgZWM7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgaWYgKCFtX25vZGUtPnJlbW92
ZUNoaWxkKG9sZENoaWxkTm9kZS0+bm9kZSgpLCBlYykpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7
CiAKQEAgLTYyNiw3ICs2MjYsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTURvY3Vt
ZW50OjpjcmVhdGVFbGVtZW50KAogICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAgICAgU3RyaW5n
IHRhZ05hbWVTdHJpbmcodGFnTmFtZSk7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKICAgICAqcmVzdWx0ID0gRE9NRWxlbWVudDo6Y3JlYXRlSW5zdGFu
Y2UobV9kb2N1bWVudC0+Y3JlYXRlRWxlbWVudCh0YWdOYW1lU3RyaW5nLCBlYykuZ2V0KCkpOwog
ICAgIHJldHVybiAqcmVzdWx0ID8gU19PSyA6IEVfRkFJTDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktp
dC93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAKaW5kZXggODVhMGNhNDdhMmNkMGZm
MjFmOTRjOWQwYTQ1NjE0ZTc1MTEwYWFkYi4uMjQ5ZmE1YTYxYTc0NDNlODU4ODEyYzc5YjM2OGNm
YmQ4OGY0YjcwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlci5jcHAKQEAgLTM0Nyw3ICszNDcsNyBAQCBmbG9hdCBGdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyOjp2b2x1bWUoKSBjb25zdAogdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpz
ZXRWb2x1bWUoZmxvYXQgdm9sdW1lKQogewogICAgIGlmIChtX21lZGlhRWxlbWVudCkgewotICAg
ICAgICBFeGNlcHRpb25Db2RlIGVjOworICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAg
ICAgICAgbV9tZWRpYUVsZW1lbnQtPnNldFZvbHVtZSh2b2x1bWUsIGVjKTsKICAgICB9CiB9CkBA
IC0zNjAsNyArMzYwLDcgQEAgZmxvYXQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6Y3VycmVu
dFRpbWUoKSBjb25zdAogdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpzZXRDdXJyZW50
VGltZShmbG9hdCB2YWx1ZSkKIHsKICAgICBpZiAobV9tZWRpYUVsZW1lbnQpIHsKLSAgICAgICAg
RXhjZXB0aW9uQ29kZSBlYzsKKyAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgICAg
IG1fbWVkaWFFbGVtZW50LT5zZXRDdXJyZW50VGltZSh2YWx1ZSwgZWMpOwogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVJbnRlbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudC5jcHAKaW5kZXggNjZiZWU5MGIwMDNjNzAzNTZhNTE5
NzdmZjYyMTMxZDU3MGY3N2UwMi4uYTIyNGZhYmM0Nzg4YjI0MmVmN2E5YmM3NjY5MmVkMmQyYzRm
MjM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZUludGVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudC5jcHAKQEAgLTYyLDcgKzYyLDcg
QEAgV0tCdW5kbGVJbnRlbnRSZWYgV0tCdW5kbGVJbnRlbnRDcmVhdGUoV0tEaWN0aW9uYXJ5UmVm
IGRpY3Rpb25hcnlSZWYpCiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGRhdGFLZXkoQWRv
cHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImRhdGEiKSk7CiAgICAgV0tTZXJp
YWxpemVkU2NyaXB0VmFsdWVSZWYgZGF0YSA9IHN0YXRpY19jYXN0PFdLU2VyaWFsaXplZFNjcmlw
dFZhbHVlUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KGRpY3Rpb25hcnlSZWYsIGRhdGFL
ZXkuZ2V0KCkpKTsKICAgICBNZXNzYWdlUG9ydEFycmF5IGR1bW15UG9ydHM7Ci0gICAgRXhjZXB0
aW9uQ29kZSBlYzsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKIAogICAgIFJlZlB0cjxJbnRl
bnQ+IGNvcmVJbnRlbnQgPSBJbnRlbnQ6OmNyZWF0ZSh0b1dURlN0cmluZyhhY3Rpb24pLCB0b1dU
RlN0cmluZyh0eXBlKSwgZGF0YSA/IHN0YXRpY19jYXN0PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSo+
KHRvSW1wbChkYXRhKS0+aW50ZXJuYWxSZXByZXNlbnRhdGlvbigpKSA6IDAsIGR1bW15UG9ydHMs
IGVjKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvbWFjL1dLRE9NRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTUVsZW1lbnQubW0KaW5kZXggNzJjZjVhYjQwODk3
ZTMyMmRhOTljODFmNDhlYjVmNWJmZGFkMDk5ZS4uZGI1MGMyOGQzMTM1YWVmOTg4ZmZkYmM4ODk3
NzEwMzIxMmIxYTAyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01FbGVtZW50Lm1tCkBAIC00Nyw3
ICs0Nyw3IEBAIC0gKE5TU3RyaW5nICopZ2V0QXR0cmlidXRlOihOU1N0cmluZyAqKWF0dHJpYnV0
ZQogLSAodm9pZClzZXRBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZSB2YWx1ZTooTlNTdHJpbmcg
Kil2YWx1ZQogewogICAgIC8vIEZJWE1FOiBEbyBzb21ldGhpbmcgYWJvdXQgdGhlIGV4Y2VwdGlv
bi4KLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjOworICAgIFdlYkNvcmU6OkV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwogICAgIFdlYkNvcmU6OnRvRWxlbWVudChfaW1wbC5nZXQoKSktPnNldEF0
dHJpYnV0ZShuYW1lLCB2YWx1ZSwgZWMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01Ob2RlLm1tIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NTm9kZS5tbQpp
bmRleCA1Yjg2Zjc0NmQ1Mjk0NTljNzJlZTdlNzQ5MDk5Y2U0NTQwYjRhYjdlLi4yY2MyMDQ5MzQz
MDdjYmY3ZjE2MTUzN2ZiNGVjYWVkZWZlNzJkMjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01Ob2RlLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTU5vZGUu
bW0KQEAgLTU1LDIxICs1NSwyMSBAQCAtICh2b2lkKWRlYWxsb2MKIC0gKHZvaWQpaW5zZXJ0Tm9k
ZTooV0tET01Ob2RlICopbm9kZSBiZWZvcmU6KFdLRE9NTm9kZSAqKXJlZk5vZGUKIHsKICAgICAv
LyBGSVhNRTogRG8gc29tZXRoaW5nIGFib3V0IHRoZSBleGNlcHRpb24uCi0gICAgV2ViQ29yZTo6
RXhjZXB0aW9uQ29kZSBlYzsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKICAg
ICBfaW1wbC0+aW5zZXJ0QmVmb3JlKFdlYktpdDo6dG9XZWJDb3JlTm9kZShub2RlKSwgV2ViS2l0
Ojp0b1dlYkNvcmVOb2RlKHJlZk5vZGUpLCBlYyk7CiB9CiAKIC0gKHZvaWQpYXBwZW5kQ2hpbGQ6
KFdLRE9NTm9kZSAqKW5vZGUKIHsKICAgICAvLyBGSVhNRTogRG8gc29tZXRoaW5nIGFib3V0IHRo
ZSBleGNlcHRpb24uCi0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYzsKKyAgICBXZWJDb3Jl
OjpFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBfaW1wbC0+YXBwZW5kQ2hpbGQoV2ViS2l0Ojp0
b1dlYkNvcmVOb2RlKG5vZGUpLCBlYyk7CiB9CiAKIC0gKHZvaWQpcmVtb3ZlQ2hpbGQ6KFdLRE9N
Tm9kZSAqKW5vZGUKIHsKICAgICAvLyBGSVhNRTogRG8gc29tZXRoaW5nIGFib3V0IHRoZSBleGNl
cHRpb24uCi0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYzsKKyAgICBXZWJDb3JlOjpFeGNl
cHRpb25Db2RlIGVjID0gMDsKICAgICBfaW1wbC0+cmVtb3ZlQ2hpbGQoV2ViS2l0Ojp0b1dlYkNv
cmVOb2RlKG5vZGUpLCBlYyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVRleHQubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0Lm1tCmluZGV4IDli
Y2Q3YjRjNDMyY2JmMTFmNGRhZjg4ZGUxNWM1YzEwZTNjNGZmMjMuLmFhNTA0MjUwNjg2MTI2NDFi
MWFkOTM2NWQ1OGNiZWRkNGMxMDEyNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVRleHQubW0KKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NVGV4dC5tbQpAQCAt
NDEsNyArNDEsNyBAQCAtIChOU1N0cmluZyAqKWRhdGEKIC0gKHZvaWQpc2V0RGF0YTooTlNTdHJp
bmcgKilkYXRhCiB7CiAgICAgLy8gRklYTUU6IERvIHNvbWV0aGluZyBhYm91dCB0aGUgZXhjZXB0
aW9uLgotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWM7CisgICAgV2ViQ29yZTo6RXhjZXB0
aW9uQ29kZSBlYyA9IDA7CiAgICAgV2ViQ29yZTo6dG9UZXh0KF9pbXBsLmdldCgpKS0+c2V0RGF0
YShkYXRhLCBlYyk7CiB9CiAK
</data>
<flag name="commit-queue"
          id="204237"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>