<?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>223621</bug_id>
          
          <creation_ts>2021-03-22 19:14:40 -0700</creation_ts>
          <short_desc>[Payment Request] move added `object data` to `ApplePayModifier`</short_desc>
          <delta_ts>2021-07-29 12:33:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=223827</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>221970</dependson>
    
    <dependson>222002</dependson>
    
    <dependson>222211</dependson>
          <blocked>228599</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>aestes</cc>
    
    <cc>bdakin</cc>
    
    <cc>cdumez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>heycam</cc>
    
    <cc>hi</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1742645</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-03-22 19:14:40 -0700</bug_when>
    <thetext>After looking at the spec a bit more, the existing `object data` in `PaymentDetailsModifier` and `PaymentMethodData` is a sibling to a `required DOMString supportedMethods` which acts as a &quot;guard&quot; to make sure that the structure of `data` is only limited to that `supportedMethods` meaning that there&apos;s no concern over naming collisions between two different `supportedMethods`.  As such, the `object data` added to `PaymentItem` and `PaymentDetailsBase` and `PaymentShippingOption` should really be part of `ApplePayModifier` (which is what the `object data` in `PaymentDetailsModifier` is parsed into).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742646</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-22 19:37:01 -0700</bug_when>
    <thetext>&lt;rdar://problem/75720879&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742652</commentid>
    <comment_count>2</comment_count>
      <attachid>423983</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-03-22 19:56:58 -0700</bug_when>
    <thetext>Created attachment 423983
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742657</commentid>
    <comment_count>3</comment_count>
      <attachid>423983</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-03-22 20:42:57 -0700</bug_when>
    <thetext>Comment on attachment 423983
Patch

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

&gt; Source/WebCore/ChangeLog:89
&gt; +        Add support for `dictionary mixin` and `partial dictionary mixin`. Since `dictionary` are
&gt; +        basically just a plain JS `object` with no special prototype/inheritance, it makes sense
&gt; +        to allow for multiple inheritance in the form of `mixin` (just like for `interface`). See
&gt; +        above for an example of how this is used.

I think it&apos;s worth mentioning that dictionary mixins are not something supported by the Web IDL spec. And perhaps that while normally extended attributes would be used for extensions like this, that adding something a [MixesInTo] extended attribute seems more confusing than re-using the interface mixins idea.

&gt; Source/WebCore/bindings/scripts/IDLParser.pm:175
&gt; +    isMixin =&gt; &apos;$&apos;, # Used for mixin interfaces

s/interfaces/dictionaries/

&gt; Source/WebCore/bindings/scripts/preprocess-idls.pl:196
&gt; +        die &quot;Could not find a the IDL file where the following included interface is defined: $include&quot; unless $includedIdlFilePath;

s/a the/the/ while you&apos;re here.  And maybe s/interface/interface or dictionary/ (or look up its type).

&gt; Source/WebCore/bindings/scripts/preprocess-idls.pl:534
&gt;      my $interfaceName = shift;

Maybe rename this?  (I guess there&apos;s no good single name that means &quot;interface or dictionary&quot;.)

&gt; Source/WebCore/bindings/scripts/preprocess-idls.pl:561
&gt; +            die &quot;FAILURE: Included interfaces from regular expression based parser (&quot; . Dumper(@sortedIncludes) . &quot;) don&apos;t match those from validation parser (&quot; . Dumper(@sortedIncludesFromParsedDocument) . &quot;) [&quot; . $idlFile-&gt;fileName . &quot;]&quot;;
&gt;          }
&gt; -        print &quot;SUCCESS! Included interfaces from regular expression based parser (&quot; . Dumper(@sortedIncludedInterfaces) . &quot;) match those from validation parser (&quot; . Dumper(@sortedIncludedInterfacesFromParsedDocument) . &quot;).\n&quot; if $verbose;
&gt; +        print &quot;SUCCESS! Included interfaces from regular expression based parser (&quot; . Dumper(@sortedIncludes) . &quot;) match those from validation parser (&quot; . Dumper(@sortedIncludesFromParsedDocument) . &quot;).\n&quot; if $verbose;

And similarly s/interfaces or dictionaries/ here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742661</commentid>
    <comment_count>4</comment_count>
      <attachid>423985</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-03-22 21:07:41 -0700</bug_when>
    <thetext>Created attachment 423985
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744355</commentid>
    <comment_count>5</comment_count>
      <attachid>423985</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-03-26 15:44:34 -0700</bug_when>
    <thetext>Comment on attachment 423985
Patch

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

&gt; Source/WebCore/Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:580
&gt; +    auto modifierException = firstApplicableModifier();
&gt; +    if (modifierException.hasException())
&gt; +        return modifierException.releaseException();
&gt; +    if (auto modifierData = modifierException.releaseReturnValue()) {
&gt; +        auto&amp; [modifier, applePayModifier] = *modifierData;
&gt; +
&gt; +        UNUSED_PARAM(modifier);
&gt; +
&gt; +        merge(update, WTFMove(applePayModifier));
&gt; +    }

Nit - it seems like some of this logic could be factored out into a separate helper function (and used here and in the other three similar places below).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744403</commentid>
    <comment_count>6</comment_count>
      <attachid>423985</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-26 17:23:31 -0700</bug_when>
    <thetext>Comment on attachment 423985
Patch

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

&gt; Source/WebCore/ChangeLog:35
&gt; +        Make the various `ApplePay*Data` into `dictionary mixin` so that they can be used for both

But it appears to me that a `dictionary mixin` is not a thing in WebIDL? I worry about adding non-standard IDL things just to make our lives a little bit easier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744442</commentid>
    <comment_count>7</comment_count>
      <attachid>423985</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-26 19:52:59 -0700</bug_when>
    <thetext>Comment on attachment 423985
Patch

r- because of non-standard IDL just to avoid some IDL duplication.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744503</commentid>
    <comment_count>8</comment_count>
      <attachid>424454</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-03-27 07:46:20 -0700</bug_when>
    <thetext>Created attachment 424454
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744803</commentid>
    <comment_count>9</comment_count>
      <attachid>424454</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-03-29 11:36:33 -0700</bug_when>
    <thetext>Comment on attachment 424454
Patch

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

&gt; Source/WebCore/Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:669
&gt; +    auto modifierException = firstApplicableModifier();
&gt; +    if (modifierException.hasException())
&gt; +        return modifierException.releaseException();
&gt; +    if (auto modifierData = modifierException.releaseReturnValue()) {
&gt; +        auto&amp; [modifier, applePayModifier] = *modifierData;
&gt; +
&gt; +        UNUSED_PARAM(modifier);
&gt; +
&gt; +        merge(update, WTFMove(applePayModifier));
&gt; +    }

I still feel like some of this code could be deduplicated, but I don&apos;t think it&apos;s a big deal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744806</commentid>
    <comment_count>10</comment_count>
      <attachid>424454</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-03-29 11:42:19 -0700</bug_when>
    <thetext>Comment on attachment 424454
Patch

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

&gt;&gt; Source/WebCore/Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:669
&gt;&gt; +    }
&gt; 
&gt; I still feel like some of this code could be deduplicated, but I don&apos;t think it&apos;s a big deal.

Ah oops yes sorry I forgot to look into this (was focusing on removing the IDL changes).  Will do that now before landing :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744827</commentid>
    <comment_count>11</comment_count>
      <attachid>424562</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-03-29 12:17:03 -0700</bug_when>
    <thetext>Created attachment 424562
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744844</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-29 13:01:06 -0700</bug_when>
    <thetext>Committed r275169: &lt;https://commits.webkit.org/r275169&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 424562.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423983</attachid>
            <date>2021-03-22 19:56:58 -0700</date>
            <delta_ts>2021-03-22 21:07:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223621-20210322205657.patch</filename>
            <type>text/plain</type>
            <size>90084</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0MmNmZjU1NjlhNmI5NDhlN2Y4MWJhZjg5M2Q4M2NiMGFhOWM1YWU0Li5k
NjdlY2UzOTg3YjMxODE5YTdjNzExNmFlMDU2MGUxNzQ3MzkxMGNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTA0IEBACisyMDIxLTAzLTIyICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNv
bT4KKworICAgICAgICBbUGF5bWVudCBSZXF1ZXN0XSBtb3ZlIGFkZGVkIGBvYmplY3QgZGF0YWAg
dG8gYEFwcGxlUGF5TW9kaWZpZXJgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjM2MjEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc1NzIwODc5Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBgb2Jq
ZWN0IGRhdGFgIGluIGBQYXltZW50RGV0YWlsc01vZGlmaWVyYCBoYXMgYSBzaWJsaW5nIHByb3Bl
cnR5IGByZXF1aXJlZCBET01TdHJpbmcgc3VwcG9ydGVkTWV0aG9kc2AKKyAgICAgICAgd2hpY2gg
YWN0cyBhcyBhICJndWFyZCIgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHN0cnVjdHVyZSBvZiBgZGF0
YWAgaXMgb25seSBsaW1pdGVkIHRvIHRoYXQgYHN1cHBvcnRlZE1ldGhvZHNgCisgICAgICAgIG1l
YW5pbmcgdGhhdCB0aGVyZSdzIG5vIGNvbmNlcm4gb3ZlciBuYW1pbmcgY29sbGlzaW9ucyBiZXR3
ZWVuIHR3byBkaWZmZXJlbnQgYHN1cHBvcnRlZE1ldGhvZHNgLiBBcyBzdWNoLAorICAgICAgICB0
aGUgYG9iamVjdCBkYXRhYCBhZGRlZCB0byBgUGF5bWVudEl0ZW1gIGFuZCBgUGF5bWVudERldGFp
bHNCYXNlYCBhbmQgYFBheW1lbnRTaGlwcGluZ09wdGlvbmAgc2hvdWxkIHJlYWxseQorICAgICAg
ICBiZSBwYXJ0IG9mIGBBcHBsZVBheU1vZGlmaWVyYCAod2hpY2ggaXMgd2hhdCB0aGUgYG9iamVj
dCBkYXRhYCBpbiBgUGF5bWVudERldGFpbHNNb2RpZmllcmAgaXMgcGFyc2VkIGludG8pLgorCisg
ICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheURldGFpbHNVcGRhdGVEYXRhLmlkbDoK
KyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5RGV0YWlsc1VwZGF0ZUJhc2UuaWRs
OgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5lSXRlbURhdGEuaWRsOgor
ICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5lSXRlbS5pZGw6CisgICAgICAg
ICogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nTWV0aG9kRGF0YS5pZGw6CisgICAg
ICAgICogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nTWV0aG9kLmlkbDoKKyAgICAg
ICAgKiBNb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5TW9kaWZpZXIuaWRs
OgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlNb2Rp
Zmllci5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQ
YXlQYXltZW50SGFuZGxlci5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJl
cXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252
ZXJ0QW5kVmFsaWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6bWVyZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGVQYXlQYXltZW50SGFuZGxlcjo6c2hvdyk6CisgICAgICAgIChXZWJDb3JlOjpB
cHBsZVBheVBheW1lbnRIYW5kbGVyOjpjb21wdXRlU2hpcHBpbmdNZXRob2RzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OmNvbXB1dGVUb3RhbEFuZExp
bmVJdGVtcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjp2YWxpZGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpmaXJzdEFwcGxpY2FibGVNb2RpZmllciBj
b25zdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlQYXltZW50SGFuZGxlcjo6
c2hpcHBpbmdBZGRyZXNzVXBkYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVBheW1l
bnRIYW5kbGVyOjpzaGlwcGluZ09wdGlvblVwZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGVQYXlQYXltZW50SGFuZGxlcjo6cGF5bWVudE1ldGhvZFVwZGF0ZWQpOgorICAgICAgICBNYWtl
IHRoZSB2YXJpb3VzIGBBcHBsZVBheSpEYXRhYCBpbnRvIGBkaWN0aW9uYXJ5IG1peGluYCBzbyB0
aGF0IHRoZXkgY2FuIGJlIHVzZWQgZm9yIGJvdGgKKyAgICAgICAgdGhlIFczQyBQYXltZW50IFJl
cXVlc3QgQVBJIGBBcHBsZVBheU1vZGlmaWVyYCAod2hpY2ggaXMgdXNlZCB0byBwYXJzZSB0aGUg
YG9iamVjdCBkYXRhYCBvbgorICAgICAgICBgUGF5bWVudERldGlsc01vZGlmaWVyYCkgYW5kIHRo
ZSBBcHBsZSBQYXkgSlMgYEFwcGxlUGF5KmAuIFRoaXMgYWxsb3dzIGZvciBuZXcgcHJvcGVydGll
cworICAgICAgICB0byBvbmx5IGhhdmUgdG8gYmUgYWRkZWQgaW4gb25lIHBsYWNlLCBhdm9pZGlu
ZyBjb2RlIGR1cGxpY2F0aW9uIGFuZCBlbnN1cmluZyB0aGF0IGJvdGggdGhlCisgICAgICAgIFcz
QyBQYXltZW50IFJlcXVlc3QgQVBJIGFuZCBBcHBsZSBQYXkgSlMgaGF2ZSB0aGUgc2FtZSBmZWF0
dXJlcyAoYWxiZWl0IGluIGRpZmZlcmVudCBwbGFjZXMpLgorCisgICAgICAgICogTW9kdWxlcy9w
YXltZW50cmVxdWVzdC9QYXltZW50RGV0YWlsc0Jhc2UuaWRsOgorICAgICAgICAqIE1vZHVsZXMv
cGF5bWVudHJlcXVlc3QvUGF5bWVudERldGFpbHNCYXNlLmg6CisgICAgICAgICogTW9kdWxlcy9w
YXltZW50cmVxdWVzdC9QYXltZW50SXRlbS5pZGw6CisgICAgICAgICogTW9kdWxlcy9wYXltZW50
cmVxdWVzdC9QYXltZW50SXRlbS5oOgorICAgICAgICAqIE1vZHVsZXMvcGF5bWVudHJlcXVlc3Qv
UGF5bWVudFNoaXBwaW5nT3B0aW9uLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3BheW1lbnRyZXF1
ZXN0L1BheW1lbnRTaGlwcGluZ09wdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvcGF5bWVudHJl
cXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tBbmRDYW5v
bmljYWxpemVQYXltZW50SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpjaGVja0FuZENhbm9uaWNh
bGl6ZVRvdGFsKToKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrQW5kQ2Fub25pY2FsaXplRGV0YWls
cyk6CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpzZXR0bGVEZXRhaWxzUHJvbWlzZSk6CisgICAgICAg
IFJlbW92ZSB0aGUgSURMIGBvYmplY3QgZGF0YTtgIGFuZCBhc3NvY2lhdGVkIG1lbWJlcnMvbG9n
aWMgbm93IHRoYXQgdGhlIHBhcnNlZCBkYXRhIGlzIGFsbAorICAgICAgICBwYXJ0IG9mIGBBcHBs
ZVBheU1vZGlmaWVyYC4gVGhlc2Ugb2JqZWN0cyBhcmUgbm93IGJhY2sgdG8gYmVpbmcgc3BlYyBj
b21wbGlhbnQuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5w
bDoKKyAgICAgICAgKGdldFBhcnRpYWxOYW1lc0Zyb21JREwpOgorICAgICAgICAoZ2V0SW5jbHVk
ZXNGcm9tSURMKTogQWRkZWQuCisgICAgICAgIChnZXRVbmRlZmluZWRCYXNlRGljdGlvbmFyaWVz
RnJvbUlETCk6CisgICAgICAgIChnZXRJbmNsdWRlZEludGVyZmFjZXNGcm9tSURMKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbToKKyAgICAgICAgKHBh
cnNlRGVmaW5pdGlvbik6CisgICAgICAgIChwYXJzZUNhbGxiYWNrT3JJbnRlcmZhY2VPckludGVy
ZmFjZU1peGluKTogQWRkZWQvCisgICAgICAgIChwYXJzZUludGVyZmFjZU9ySW50ZXJmYWNlTWl4
aW4pOiBBZGRlZC4KKyAgICAgICAgKHBhcnNlSW50ZXJmYWNlTWl4aW4pOiBBZGRlZC4KKyAgICAg
ICAgKHBhcnNlSW50ZXJmYWNlTWl4aW5NZW1iZXJzKTogQWRkZWQuCisgICAgICAgIChwYXJzZUlu
dGVyZmFjZU1peGluTWVtYmVyKTogQWRkZWQuCisgICAgICAgIChwYXJzZVBhcnRpYWxEZWZpbml0
aW9uKToKKyAgICAgICAgKHBhcnNlUGFydGlhbEludGVyZmFjZU9yUGFydGlhbEludGVyZmFjZU1p
eGluKTogQWRkZWQuCisgICAgICAgIChwYXJzZVBhcnRpYWxEaWN0aW9uYXJ5T3JQYXJ0aWFsRGlj
dGlvbmFyeU1peGluKTogQWRkZWQuCisgICAgICAgIChwYXJzZURpY3Rpb25hcnlPckRpY3Rpb25h
cnlNaXhpbik6IEFkZGVkLgorICAgICAgICAocGFyc2VEaWN0aW9uYXJ5TWl4aW4pOiBBZGRlZC4K
KyAgICAgICAgKHBhcnNlRGljdGlvbmFyeSk6CisgICAgICAgIChwYXJzZUluY2x1ZGVzU3RhdGVt
ZW50KToKKyAgICAgICAgKHBhcnNlQ2FsbGJhY2tPckludGVyZmFjZU9yTWl4aW4pOiBEZWxldGVk
LgorICAgICAgICAocGFyc2VJbnRlcmZhY2VPck1peGluKTogRGVsZXRlZC4KKyAgICAgICAgKHBh
cnNlTWl4aW4pOiBEZWxldGVkLgorICAgICAgICAocGFyc2VNaXhpbk1lbWJlcnMpOiBEZWxldGVk
LgorICAgICAgICAocGFyc2VNaXhpbk1lbWJlcik6IERlbGV0ZWQuCisgICAgICAgIChwYXJzZVBh
cnRpYWxJbnRlcmZhY2VPclBhcnRpYWxNaXhpbik6IERlbGV0ZWQuCisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtOgorICAgICAgICAoUHJvY2Vzc0RpY3Rpb25hcmll
cyk6CisgICAgICAgIChJc1ZhbGlkU3VwcGxlbWVudGFsRGljdGlvbmFyeSk6CisgICAgICAgIChQ
cm9jZXNzSW50ZXJmYWNlU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzKToKKyAgICAgICAgKFByb2Nl
c3NEaWN0aW9uYXJ5U3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzKToKKyAgICAgICAgQWRkIHN1cHBv
cnQgZm9yIGBkaWN0aW9uYXJ5IG1peGluYCBhbmQgYHBhcnRpYWwgZGljdGlvbmFyeSBtaXhpbmAu
IFNpbmNlIGBkaWN0aW9uYXJ5YCBhcmUKKyAgICAgICAgYmFzaWNhbGx5IGp1c3QgYSBwbGFpbiBK
UyBgb2JqZWN0YCB3aXRoIG5vIHNwZWNpYWwgcHJvdG90eXBlL2luaGVyaXRhbmNlLCBpdCBtYWtl
cyBzZW5zZQorICAgICAgICB0byBhbGxvdyBmb3IgbXVsdGlwbGUgaW5oZXJpdGFuY2UgaW4gdGhl
IGZvcm0gb2YgYG1peGluYCAoanVzdCBsaWtlIGZvciBgaW50ZXJmYWNlYCkuIFNlZQorICAgICAg
ICBhYm92ZSBmb3IgYW4gZXhhbXBsZSBvZiBob3cgdGhpcyBpcyB1c2VkLgorCisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3REaWN0aW9uYXJ5LmlkbDogQWRkZWQuCisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERpY3Rpb25hcnkuaDogQWRkZWQuCisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERpY3Rpb25hcnkuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE1peGluRGljdGlvbmFy
eS5pZGw6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RN
aXhpbkRpY3Rpb25hcnkuaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE1peGluRGljdGlvbmFyeS5jcHA6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0UGFydGlhbE1peGluRGljdGlvbmFyeS5pZGw6IEFkZGVkLgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQYXJ0aWFsTWl4aW5EaWN0aW9u
YXJ5Lmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQ
YXJ0aWFsTWl4aW5EaWN0aW9uYXJ5LmNwcDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5kZXA6CisKIDIwMjEtMDMtMjIgIFJv
YiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBFbmFibGUgYWJpbGl0eSB0byBw
cmV2ZW50IHNjcm9sbGluZyBpbiBFbGVtZW50LmZvY3VzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlEZXRhaWxzVXBkYXRlQmFzZS5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5RGV0YWlsc1VwZGF0ZUJhc2Uu
aWRsCmluZGV4IDYxNWU4NmRlZmMyMmQyOWUzYWI5YTA0ZGVkNjk2N2E4OGIxZDVmZjMuLjM2NDli
YmJjOTNhNWFmZjY4NjY2YmZhZWM5ZjAzZWU5ZmUzZjg2Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlEZXRhaWxzVXBkYXRlQmFzZS5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheURldGFpbHNVcGRhdGVC
YXNlLmlkbApAQCAtMjksMyArMjksNSBAQAogICAgIHJlcXVpcmVkIEFwcGxlUGF5TGluZUl0ZW0g
bmV3VG90YWw7CiAgICAgc2VxdWVuY2U8QXBwbGVQYXlMaW5lSXRlbT4gbmV3TGluZUl0ZW1zOwog
fTsKKworQXBwbGVQYXlEZXRhaWxzVXBkYXRlQmFzZSBpbmNsdWRlcyBBcHBsZVBheURldGFpbHNV
cGRhdGVEYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9B
cHBsZVBheURldGFpbHNVcGRhdGVEYXRhLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvQXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YS5pZGwKaW5kZXggNjcxODgxNDIwNTMyMmYx
ZjNlMjk0MmQzYjk1MmE0MzI1ZjM2NDc4YS4uMDI2MDAzNWNkZGRlOTYxNjM3OGQ0ZmMxODEzOWE4
NTAwNDY2ODgzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9B
cHBsZVBheURldGFpbHNVcGRhdGVEYXRhLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L0FwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEuaWRsCkBAIC0yNSw1ICsyNSw1IEBA
CiAKIFsKICAgICBDb25kaXRpb25hbD1BUFBMRV9QQVksCi1dIGRpY3Rpb25hcnkgQXBwbGVQYXlE
ZXRhaWxzVXBkYXRlRGF0YSB7CitdIGRpY3Rpb25hcnkgbWl4aW4gQXBwbGVQYXlEZXRhaWxzVXBk
YXRlRGF0YSB7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheUxpbmVJdGVtLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
QXBwbGVQYXlMaW5lSXRlbS5pZGwKaW5kZXggYTQyYjc3MjRiZThmNjg3ODU1ZDQ2MDk2M2ZkYjgx
YTRiZDcxOWE4Yy4uMDcwNTMxNzBjN2NhZTdiYTExYzg4ZmYwNjZhOWE0Mzk3NjFhODMxNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxpbmVJdGVt
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5TGluZUl0
ZW0uaWRsCkBAIC0zNCw4ICszNCwxMCBAQAogICAgIENvbmRpdGlvbmFsPUFQUExFX1BBWSwKICAg
ICBFeHBvcnRNYWNybz1XRUJDT1JFX0VYUE9SVCwKICAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwK
LV0gZGljdGlvbmFyeSBBcHBsZVBheUxpbmVJdGVtIDogQXBwbGVQYXlMaW5lSXRlbURhdGEgewor
XSBkaWN0aW9uYXJ5IEFwcGxlUGF5TGluZUl0ZW0gewogICAgIEFwcGxlUGF5TGluZUl0ZW1UeXBl
IHR5cGUgPSAiZmluYWwiOwogICAgIERPTVN0cmluZyBsYWJlbDsKICAgICBET01TdHJpbmcgYW1v
dW50OwogfTsKKworQXBwbGVQYXlMaW5lSXRlbSBpbmNsdWRlcyBBcHBsZVBheUxpbmVJdGVtRGF0
YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlM
aW5lSXRlbURhdGEuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eUxpbmVJdGVtRGF0YS5pZGwKaW5kZXggM2Q0ZWI3ZDIxM2FlMDU1MmVkOWJmNzRjZmQ5NTg0ZDEx
NjYzNmU0My4uZjQwNjc4ODNiZDNjM2JjYTllNTFiODliYjVkNDA2MzBjYjdlYWMyMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxpbmVJdGVtRGF0
YS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxpbmVJ
dGVtRGF0YS5pZGwKQEAgLTI1LDYgKzI1LDUgQEAKIAogWwogICAgIENvbmRpdGlvbmFsPUFQUExF
X1BBWSwKLSAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKLV0gZGljdGlvbmFyeSBBcHBsZVBheUxp
bmVJdGVtRGF0YSB7CitdIGRpY3Rpb25hcnkgbWl4aW4gQXBwbGVQYXlMaW5lSXRlbURhdGEgewog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlT
aGlwcGluZ01ldGhvZC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxl
UGF5U2hpcHBpbmdNZXRob2QuaWRsCmluZGV4IGUwZjJhMjQxYmNhNTJmNmU0MGViOGJjODdiZmJm
NTBkMWY2OWVlMzkuLmU4MDYyMDgyMTZhMzQ0MWFmYTVjYzM3NjU3ZGRmY2FiZDNjMGMxZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGlu
Z01ldGhvZC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVNoaXBwaW5nTWV0aG9kLmlkbApAQCAtMjcsOSArMjcsMTEgQEAKICAgICBDb25kaXRpb25hbD1B
UFBMRV9QQVksCiAgICAgRXhwb3J0TWFjcm89V0VCQ09SRV9FWFBPUlQsCiAgICAgSlNHZW5lcmF0
ZVRvSlNPYmplY3QsCi1dIGRpY3Rpb25hcnkgQXBwbGVQYXlTaGlwcGluZ01ldGhvZCA6IEFwcGxl
UGF5U2hpcHBpbmdNZXRob2REYXRhIHsKK10gZGljdGlvbmFyeSBBcHBsZVBheVNoaXBwaW5nTWV0
aG9kIHsKICAgICByZXF1aXJlZCBET01TdHJpbmcgbGFiZWw7CiAgICAgcmVxdWlyZWQgRE9NU3Ry
aW5nIGRldGFpbDsKICAgICByZXF1aXJlZCBET01TdHJpbmcgYW1vdW50OwogICAgIHJlcXVpcmVk
IERPTVN0cmluZyBpZGVudGlmaWVyOwogfTsKKworQXBwbGVQYXlTaGlwcGluZ01ldGhvZCBpbmNs
dWRlcyBBcHBsZVBheVNoaXBwaW5nTWV0aG9kRGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ01ldGhvZERhdGEuaWRsIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nTWV0aG9kRGF0YS5p
ZGwKaW5kZXggYzAxNWY5OTQ5MGYwZWE3ODk5MGViYWU5ODNjNGNjN2UxY2QwZDdlOC4uOTViOTM4
MGE3ZTZlOTk2NzRiMTEwMTQwZmRjNjMzOTJhY2NmYWJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nTWV0aG9kRGF0YS5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nTWV0aG9k
RGF0YS5pZGwKQEAgLTI1LDcgKzI1LDUgQEAKIAogWwogICAgIENvbmRpdGlvbmFsPUFQUExFX1BB
WSwKLSAgICBFeHBvcnRNYWNybz1XRUJDT1JFX0VYUE9SVCwKLSAgICBKU0dlbmVyYXRlVG9KU09i
amVjdCwKLV0gZGljdGlvbmFyeSBBcHBsZVBheVNoaXBwaW5nTWV0aG9kRGF0YSB7CitdIGRpY3Rp
b25hcnkgbWl4aW4gQXBwbGVQYXlTaGlwcGluZ01ldGhvZERhdGEgewogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlN
b2RpZmllci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVz
dC9BcHBsZVBheU1vZGlmaWVyLmgKaW5kZXggY2RmYTc3ZTBlNzdjNTgxYjhiNTZlMDJkMzFhNmY0
MGMxNWJmZjI2OC4uYTE0NGFiZGY5MmZiNzgwMTc4MjkyMzFlNTVkZGEwNWJiNGFhMWY0OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9B
cHBsZVBheU1vZGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9w
YXltZW50cmVxdWVzdC9BcHBsZVBheU1vZGlmaWVyLmgKQEAgLTI3LDEyICsyNywxNiBAQAogCiAj
aWYgRU5BQkxFKEFQUExFX1BBWSkgJiYgRU5BQkxFKFBBWU1FTlRfUkVRVUVTVCkKIAorI2luY2x1
ZGUgIkFwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEuaCIKKyNpbmNsdWRlICJBcHBsZVBheUxpbmVJ
dGVtRGF0YS5oIgogI2luY2x1ZGUgIkFwcGxlUGF5UGF5bWVudE1ldGhvZFR5cGUuaCIKKyNpbmNs
dWRlICJBcHBsZVBheVNoaXBwaW5nTWV0aG9kLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
c3RydWN0IEFwcGxlUGF5TW9kaWZpZXIgewotICAgIEFwcGxlUGF5UGF5bWVudE1ldGhvZFR5cGUg
cGF5bWVudE1ldGhvZFR5cGU7CitzdHJ1Y3QgQXBwbGVQYXlNb2RpZmllciBmaW5hbCA6IHB1Ymxp
YyBBcHBsZVBheURldGFpbHNVcGRhdGVEYXRhLCBwdWJsaWMgQXBwbGVQYXlMaW5lSXRlbURhdGEg
eworICAgIE9wdGlvbmFsPEFwcGxlUGF5UGF5bWVudE1ldGhvZFR5cGU+IHBheW1lbnRNZXRob2RU
eXBlOworICAgIFZlY3RvcjxBcHBsZVBheVNoaXBwaW5nTWV0aG9kPiBhZGRpdGlvbmFsU2hpcHBp
bmdPcHRpb25zOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheU1vZGlm
aWVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3Qv
QXBwbGVQYXlNb2RpZmllci5pZGwKaW5kZXggMDY3ODk0MjMxYWViY2U4MTU5MGJmMGZlYWUwNzRm
Mjc4OGQzYzgyMi4uYjAzNWY5OGZhMjYyM2I4YjE3Zjc1YTIwZDA4ZGQ0ODQxNGFkMGNmZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9B
cHBsZVBheU1vZGlmaWVyLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5TW9kaWZpZXIuaWRsCkBAIC0yNiw1ICsyNiw5IEBACiBb
CiAgICAgQ29uZGl0aW9uYWw9QVBQTEVfUEFZJlBBWU1FTlRfUkVRVUVTVCwKIF0gZGljdGlvbmFy
eSBBcHBsZVBheU1vZGlmaWVyIHsKLSAgICByZXF1aXJlZCBBcHBsZVBheVBheW1lbnRNZXRob2RU
eXBlIHBheW1lbnRNZXRob2RUeXBlOworICAgIEFwcGxlUGF5UGF5bWVudE1ldGhvZFR5cGUgcGF5
bWVudE1ldGhvZFR5cGU7CisgICAgc2VxdWVuY2U8QXBwbGVQYXlTaGlwcGluZ01ldGhvZD4gYWRk
aXRpb25hbFNoaXBwaW5nT3B0aW9uczsKIH07CisKK0FwcGxlUGF5TW9kaWZpZXIgaW5jbHVkZXMg
QXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YTsKK0FwcGxlUGF5TW9kaWZpZXIgaW5jbHVkZXMgQXBw
bGVQYXlMaW5lSXRlbURhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRI
YW5kbGVyLmNwcAppbmRleCA3MzBkYzU4YjQ5NjFkN2Q5YjQxNTQ2NzVlZDdmY2M4MWQ3NmMxMzI5
Li44MzM0YWNjN2RiYzQ2MmIxYjg4ZGI3MDdhZDhlYzEzNzIxZDI2ZjljIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5
bWVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5
bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5jcHAKQEAgLTYxLDYgKzYxLDcgQEAK
ICNpbmNsdWRlICJQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cy5oIgogI2luY2x1ZGUgIlBheW1l
bnRDb250YWN0LmgiCiAjaW5jbHVkZSAiUGF5bWVudENvb3JkaW5hdG9yLmgiCisjaW5jbHVkZSAi
UGF5bWVudERldGFpbHNNb2RpZmllci5oIgogI2luY2x1ZGUgIlBheW1lbnRNZXJjaGFudFNlc3Np
b24uaCIKICNpbmNsdWRlICJQYXltZW50TWV0aG9kLmgiCiAjaW5jbHVkZSAiUGF5bWVudFJlcXVl
c3RVdGlsaXRpZXMuaCIKQEAgLTE0MywxMSArMTQ0LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHZv
aWQ+IHZhbGlkYXRlKGNvbnN0IFBheW1lbnRDdXJyZW5jeUFtb3VudCYgYW1vdW50LCBjb25zdCBT
dHIKICAgICByZXR1cm4geyB9OwogfQogCi0jaWYgIUVOQUJMRShBUFBMRV9QQVlfTElORV9JVEVN
X0RBVEEpCi1zdGF0aWMgdm9pZCBtZXJnZShBcHBsZVBheUxpbmVJdGVtJiwgQXBwbGVQYXlMaW5l
SXRlbURhdGEmJikgeyB9Ci0jZW5kaWYgLy8gRU5BQkxFKEFQUExFX1BBWV9MSU5FX0lURU1fREFU
QSkKLQotc3RhdGljIEV4Y2VwdGlvbk9yPEFwcGxlUGF5TGluZUl0ZW0+IGNvbnZlcnRBbmRWYWxp
ZGF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBQYXltZW50SXRlbSYg
aXRlbSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZEN1cnJlbmN5KQorc3RhdGljIEV4Y2VwdGlvbk9y
PEFwcGxlUGF5TGluZUl0ZW0+IGNvbnZlcnRBbmRWYWxpZGF0ZShjb25zdCBQYXltZW50SXRlbSYg
aXRlbSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZEN1cnJlbmN5KQogewogICAgIGF1dG8gZXhjZXB0
aW9uID0gdmFsaWRhdGUoaXRlbS5hbW91bnQsIGV4cGVjdGVkQ3VycmVuY3kpOwogICAgIGlmIChl
eGNlcHRpb24uaGFzRXhjZXB0aW9uKCkpCkBAIC0xNTgsMzMgKzE1NSwxNSBAQCBzdGF0aWMgRXhj
ZXB0aW9uT3I8QXBwbGVQYXlMaW5lSXRlbT4gY29udmVydEFuZFZhbGlkYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmCiAgICAgbGluZUl0ZW0uYW1vdW50ID0gaXRlbS5hbW91bnQudmFsdWU7CiAg
ICAgbGluZUl0ZW0udHlwZSA9IGl0ZW0ucGVuZGluZyA/IEFwcGxlUGF5TGluZUl0ZW06OlR5cGU6
OlBlbmRpbmcgOiBBcHBsZVBheUxpbmVJdGVtOjpUeXBlOjpGaW5hbDsKICAgICBsaW5lSXRlbS5s
YWJlbCA9IGl0ZW0ubGFiZWw7Ci0KLSAgICBpZiAoIWl0ZW0uc2VyaWFsaXplZERhdGEuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIGF1dG8mIGxleGljYWxHbG9iYWxPYmplY3QgPSAqY29udGV4dC5nbG9i
YWxPYmplY3QoKTsKLSAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUobGV4
aWNhbEdsb2JhbE9iamVjdC52bSgpKTsKLSAgICAgICAgSlNDOjpKU1ZhbHVlIGRhdGE7Ci0gICAg
ICAgIHsKLSAgICAgICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soJmxleGljYWxHbG9iYWxP
YmplY3QpOwotICAgICAgICAgICAgZGF0YSA9IEpTT05QYXJzZSgmbGV4aWNhbEdsb2JhbE9iamVj
dCwgaXRlbS5zZXJpYWxpemVkRGF0YSk7Ci0gICAgICAgICAgICBpZiAoc2NvcGUuZXhjZXB0aW9u
KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9u
RXJyb3IgfTsKLSAgICAgICAgfQotCi0gICAgICAgIGF1dG8gYXBwbGVQYXlMaW5lSXRlbURhdGEg
PSBjb252ZXJ0RGljdGlvbmFyeTxBcHBsZVBheUxpbmVJdGVtRGF0YT4obGV4aWNhbEdsb2JhbE9i
amVjdCwgV1RGTW92ZShkYXRhKSk7Ci0gICAgICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkKLSAg
ICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH07Ci0g
ICAgICAgIG1lcmdlKGxpbmVJdGVtLCBXVEZNb3ZlKGFwcGxlUGF5TGluZUl0ZW1EYXRhKSk7Ci0g
ICAgfQotCiAgICAgcmV0dXJuIHsgV1RGTW92ZShsaW5lSXRlbSkgfTsKIH0KIAotc3RhdGljIEV4
Y2VwdGlvbk9yPFZlY3RvcjxBcHBsZVBheUxpbmVJdGVtPj4gY29udmVydEFuZFZhbGlkYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFZlY3RvcjxQYXltZW50SXRlbT4m
IGxpbmVJdGVtcywgY29uc3QgU3RyaW5nJiBleHBlY3RlZEN1cnJlbmN5KQorc3RhdGljIEV4Y2Vw
dGlvbk9yPFZlY3RvcjxBcHBsZVBheUxpbmVJdGVtPj4gY29udmVydEFuZFZhbGlkYXRlKGNvbnN0
IFZlY3RvcjxQYXltZW50SXRlbT4mIGxpbmVJdGVtcywgY29uc3QgU3RyaW5nJiBleHBlY3RlZEN1
cnJlbmN5KQogewogICAgIFZlY3RvcjxBcHBsZVBheUxpbmVJdGVtPiByZXN1bHQ7CiAgICAgcmVz
dWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGluZUl0ZW1zLnNpemUoKSk7CiAgICAgZm9yIChh
dXRvJiBsaW5lSXRlbSA6IGxpbmVJdGVtcykgewotICAgICAgICBhdXRvIGNvbnZlcnRlZExpbmVJ
dGVtID0gY29udmVydEFuZFZhbGlkYXRlKGNvbnRleHQsIGxpbmVJdGVtLCBleHBlY3RlZEN1cnJl
bmN5KTsKKyAgICAgICAgYXV0byBjb252ZXJ0ZWRMaW5lSXRlbSA9IGNvbnZlcnRBbmRWYWxpZGF0
ZShsaW5lSXRlbSwgZXhwZWN0ZWRDdXJyZW5jeSk7CiAgICAgICAgIGlmIChjb252ZXJ0ZWRMaW5l
SXRlbS5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZWRMaW5lSXRl
bS5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoY29u
dmVydGVkTGluZUl0ZW0ucmVsZWFzZVJldHVyblZhbHVlKCkpOwpAQCAtMjA3LDExICsxODYsNyBA
QCBzdGF0aWMgQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nVHlwZSBjb252
ZXJ0KFBheW1lbnRTaGlwcGluZ1R5cGUgdAogICAgIHJldHVybiBBcHBsZVBheVNlc3Npb25QYXlt
ZW50UmVxdWVzdDo6U2hpcHBpbmdUeXBlOjpTaGlwcGluZzsKIH0KIAotI2lmICFFTkFCTEUoQVBQ
TEVfUEFZX1NISVBQSU5HX01FVEhPRF9EQVRBKQotc3RhdGljIHZvaWQgbWVyZ2UoQXBwbGVQYXlT
aGlwcGluZ01ldGhvZCYsIEFwcGxlUGF5U2hpcHBpbmdNZXRob2REYXRhJiYpIHsgfQotI2VuZGlm
Ci0KLXN0YXRpYyBFeGNlcHRpb25PcjxBcHBsZVBheVNoaXBwaW5nTWV0aG9kPiBjb252ZXJ0QW5k
VmFsaWRhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgUGF5bWVudFNo
aXBwaW5nT3B0aW9uJiBzaGlwcGluZ09wdGlvbiwgY29uc3QgU3RyaW5nJiBleHBlY3RlZEN1cnJl
bmN5KQorc3RhdGljIEV4Y2VwdGlvbk9yPEFwcGxlUGF5U2hpcHBpbmdNZXRob2Q+IGNvbnZlcnRB
bmRWYWxpZGF0ZShjb25zdCBQYXltZW50U2hpcHBpbmdPcHRpb24mIHNoaXBwaW5nT3B0aW9uLCBj
b25zdCBTdHJpbmcmIGV4cGVjdGVkQ3VycmVuY3kpCiB7CiAgICAgYXV0byBleGNlcHRpb24gPSB2
YWxpZGF0ZShzaGlwcGluZ09wdGlvbi5hbW91bnQsIGV4cGVjdGVkQ3VycmVuY3kpOwogICAgIGlm
IChleGNlcHRpb24uaGFzRXhjZXB0aW9uKCkpCkBAIC0yMjEsNTcgKzE5Niw5IEBAIHN0YXRpYyBF
eGNlcHRpb25PcjxBcHBsZVBheVNoaXBwaW5nTWV0aG9kPiBjb252ZXJ0QW5kVmFsaWRhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29uCiAgICAgcmVzdWx0LmFtb3VudCA9IHNoaXBwaW5nT3B0aW9uLmFtb3Vu
dC52YWx1ZTsKICAgICByZXN1bHQubGFiZWwgPSBzaGlwcGluZ09wdGlvbi5sYWJlbDsKICAgICBy
ZXN1bHQuaWRlbnRpZmllciA9IHNoaXBwaW5nT3B0aW9uLmlkOwotCi0gICAgaWYgKCFzaGlwcGlu
Z09wdGlvbi5zZXJpYWxpemVkRGF0YS5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byYgbGV4aWNh
bEdsb2JhbE9iamVjdCA9ICpjb250ZXh0Lmdsb2JhbE9iamVjdCgpOwotICAgICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRShsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCkpOwotICAg
ICAgICBKU0M6OkpTVmFsdWUgZGF0YTsKLSAgICAgICAgewotICAgICAgICAgICAgSlNDOjpKU0xv
Y2tIb2xkZXIgbG9jaygmbGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgICAgICAgICBkYXRhID0g
SlNPTlBhcnNlKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBzaGlwcGluZ09wdGlvbi5zZXJpYWxpemVk
RGF0YSk7Ci0gICAgICAgICAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfTsKLSAgICAgICAg
fQotCi0gICAgICAgIGF1dG8gYXBwbGVQYXlTaGlwcGluZ01ldGhvZERhdGEgPSBjb252ZXJ0RGlj
dGlvbmFyeTxBcHBsZVBheVNoaXBwaW5nTWV0aG9kRGF0YT4obGV4aWNhbEdsb2JhbE9iamVjdCwg
V1RGTW92ZShkYXRhKSk7Ci0gICAgICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkKLSAgICAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH07Ci0gICAgICAg
IG1lcmdlKHJlc3VsdCwgV1RGTW92ZShhcHBsZVBheVNoaXBwaW5nTWV0aG9kRGF0YSkpOwotICAg
IH0KLQogICAgIHJldHVybiB7IFdURk1vdmUocmVzdWx0KSB9OwogfQogCi0jaWYgIUVOQUJMRShB
UFBMRV9QQVlfUEFZTUVOVF9ERVRBSUxTX0RBVEEpCi1zdGF0aWMgRXhjZXB0aW9uT3I8dm9pZD4g
dmFsaWRhdGUoY29uc3QgQXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YSYpIHsgcmV0dXJuIHsgfTsg
fQotI2VuZGlmCi0KLXN0YXRpYyBFeGNlcHRpb25PcjxBcHBsZVBheURldGFpbHNVcGRhdGVEYXRh
PiBjb252ZXJ0QW5kVmFsaWRhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29u
c3QgUGF5bWVudERldGFpbHNCYXNlJiBkZXRhaWxzKQotewotICAgIEFwcGxlUGF5RGV0YWlsc1Vw
ZGF0ZURhdGEgcmVzdWx0OwotICAgIGlmIChkZXRhaWxzLnNlcmlhbGl6ZWREYXRhLmlzRW1wdHko
KSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLQotICAgIGF1dG8mIGxleGljYWxHbG9iYWxPYmpl
Y3QgPSAqY29udGV4dC5nbG9iYWxPYmplY3QoKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRShsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCkpOwotICAgIEpTQzo6SlNWYWx1ZSBk
YXRhOwotICAgIHsKLSAgICAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jaygmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7Ci0gICAgICAgIGRhdGEgPSBKU09OUGFyc2UoJmxleGljYWxHbG9iYWxPYmplY3Qs
IGRldGFpbHMuc2VyaWFsaXplZERhdGEpOwotICAgICAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkp
Ci0gICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9
OwotICAgIH0KLQotICAgIHJlc3VsdCA9IGNvbnZlcnREaWN0aW9uYXJ5PEFwcGxlUGF5RGV0YWls
c1VwZGF0ZURhdGE+KGxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUoZGF0YSkpOwotICAgIGlm
IChzY29wZS5leGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEV4aXN0aW5n
RXhjZXB0aW9uRXJyb3IgfTsKLSAgICBhdXRvIGV4Y2VwdGlvbiA9IHZhbGlkYXRlKHJlc3VsdCk7
Ci0gICAgaWYgKGV4Y2VwdGlvbi5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIGV4Y2Vw
dGlvbi5yZWxlYXNlRXhjZXB0aW9uKCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiBFeGNl
cHRpb25Pcjx2b2lkPiBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpjb252ZXJ0RGF0YShKU0M6OkpT
VmFsdWUgZGF0YSkKIHsKICAgICBhdXRvIHJlcXVlc3RPckV4Y2VwdGlvbiA9IGNvbnZlcnRBbmRW
YWxpZGF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBkYXRhKTsKQEAgLTMwMCw4ICsyMjcs
OCBAQCBzdGF0aWMgdm9pZCBtZXJnZVBheW1lbnRPcHRpb25zKGNvbnN0IFBheW1lbnRPcHRpb25z
JiBvcHRpb25zLCBBcHBsZVBheVNlc3Npb25QYQogfQogCiAjaWYgIUVOQUJMRShBUFBMRV9QQVlf
UEFZTUVOVF9ERVRBSUxTX0RBVEEpCi1zdGF0aWMgdm9pZCBtZXJnZShBcHBsZVBheVNlc3Npb25Q
YXltZW50UmVxdWVzdCYsIEFwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEmJikgeyB9Ci0jZW5kaWYg
Ly8gRU5BQkxFKEFQUExFX1BBWV9QQVlNRU5UX0RFVEFJTFNfREFUQSkKK3N0YXRpYyB2b2lkIG1l
cmdlKEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiwgQXBwbGVQYXlNb2RpZmllciYmKSB7
IH0KKyNlbmRpZiAvLyAhRU5BQkxFKEFQUExFX1BBWV9QQVlNRU5UX0RFVEFJTFNfREFUQSkKIAog
RXhjZXB0aW9uT3I8dm9pZD4gQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6c2hvdyhEb2N1bWVudCYg
ZG9jdW1lbnQpCiB7CkBAIC0zMTcsMTIgKzI0NCwxMiBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBcHBs
ZVBheVBheW1lbnRIYW5kbGVyOjpzaG93KERvY3VtZW50JiBkb2N1bWVudCkKICAgICBTdHJpbmcg
ZXhwZWN0ZWRDdXJyZW5jeSA9IGRldGFpbHMudG90YWwuYW1vdW50LmN1cnJlbmN5OwogICAgIHJl
cXVlc3Quc2V0Q3VycmVuY3lDb2RlKGV4cGVjdGVkQ3VycmVuY3kpOwogCi0gICAgYXV0byB0b3Rh
bCA9IGNvbnZlcnRBbmRWYWxpZGF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBkZXRhaWxz
LnRvdGFsLCBleHBlY3RlZEN1cnJlbmN5KTsKKyAgICBhdXRvIHRvdGFsID0gY29udmVydEFuZFZh
bGlkYXRlKGRldGFpbHMudG90YWwsIGV4cGVjdGVkQ3VycmVuY3kpOwogICAgIEFTU0VSVCghdG90
YWwuaGFzRXhjZXB0aW9uKCkpOwogICAgIHJlcXVlc3Quc2V0VG90YWwodG90YWwucmVsZWFzZVJl
dHVyblZhbHVlKCkpOwogCiAgICAgaWYgKGRldGFpbHMuZGlzcGxheUl0ZW1zKSB7Ci0gICAgICAg
IGF1dG8gY29udmVydGVkTGluZUl0ZW1zID0gY29udmVydEFuZFZhbGlkYXRlKCpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksICpkZXRhaWxzLmRpc3BsYXlJdGVtcywgZXhwZWN0ZWRDdXJyZW5jeSk7
CisgICAgICAgIGF1dG8gY29udmVydGVkTGluZUl0ZW1zID0gY29udmVydEFuZFZhbGlkYXRlKCpk
ZXRhaWxzLmRpc3BsYXlJdGVtcywgZXhwZWN0ZWRDdXJyZW5jeSk7CiAgICAgICAgIGlmIChjb252
ZXJ0ZWRMaW5lSXRlbXMuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gY29udmVy
dGVkTGluZUl0ZW1zLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgcmVxdWVzdC5zZXRMaW5l
SXRlbXMoY29udmVydGVkTGluZUl0ZW1zLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKQEAgLTMzNSwx
MCArMjYyLDE2IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OnNo
b3coRG9jdW1lbnQmIGRvY3VtZW50KQogICAgICAgICByZXR1cm4gc2hpcHBpbmdNZXRob2RzLnJl
bGVhc2VFeGNlcHRpb24oKTsKICAgICByZXF1ZXN0LnNldFNoaXBwaW5nTWV0aG9kcyhzaGlwcGlu
Z01ldGhvZHMucmVsZWFzZVJldHVyblZhbHVlKCkpOwogCi0gICAgYXV0byBhcHBsZVBheURldGFp
bHNVcGRhdGVEYXRhID0gY29udmVydEFuZFZhbGlkYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCksIG1fcGF5bWVudFJlcXVlc3QtPnBheW1lbnREZXRhaWxzKCkpOwotICAgIGlmIChhcHBsZVBh
eURldGFpbHNVcGRhdGVEYXRhLmhhc0V4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gYXBwbGVQ
YXlEZXRhaWxzVXBkYXRlRGF0YS5yZWxlYXNlRXhjZXB0aW9uKCk7Ci0gICAgbWVyZ2UocmVxdWVz
dCwgYXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YS5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CisgICAg
YXV0byBtb2RpZmllckV4Y2VwdGlvbiA9IGZpcnN0QXBwbGljYWJsZU1vZGlmaWVyKCk7CisgICAg
aWYgKG1vZGlmaWVyRXhjZXB0aW9uLmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gbW9k
aWZpZXJFeGNlcHRpb24ucmVsZWFzZUV4Y2VwdGlvbigpOworICAgIGlmIChhdXRvIG1vZGlmaWVy
RGF0YSA9IG1vZGlmaWVyRXhjZXB0aW9uLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKSB7CisgICAgICAg
IGF1dG8mIFttb2RpZmllciwgYXBwbGVQYXlNb2RpZmllcl0gPSAqbW9kaWZpZXJEYXRhOworCisg
ICAgICAgIFVOVVNFRF9QQVJBTShtb2RpZmllcik7CisKKyAgICAgICAgbWVyZ2UocmVxdWVzdCwg
V1RGTW92ZShhcHBsZVBheU1vZGlmaWVyKSk7CisgICAgfQogCiAgICAgYXV0byBleGNlcHRpb24g
PSBQYXltZW50UmVxdWVzdFZhbGlkYXRvcjo6dmFsaWRhdGUocmVxdWVzdCk7CiAgICAgaWYgKGV4
Y2VwdGlvbi5oYXNFeGNlcHRpb24oKSkKQEAgLTM2MCw3ICsyOTMsNyBAQCB2b2lkIEFwcGxlUGF5
UGF5bWVudEhhbmRsZXI6OmNhbk1ha2VQYXltZW50KERvY3VtZW50JiBkb2N1bWVudCwgRnVuY3Rp
b248dm9pZChibwogICAgIGNvbXBsZXRpb25IYW5kbGVyKHBheW1lbnRDb29yZGluYXRvcigpLmNh
bk1ha2VQYXltZW50cyhkb2N1bWVudCkpOwogfQogCi1FeGNlcHRpb25PcjxWZWN0b3I8QXBwbGVQ
YXlTaGlwcGluZ01ldGhvZD4+IEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OmNvbXB1dGVTaGlwcGlu
Z01ldGhvZHMoKQorRXhjZXB0aW9uT3I8VmVjdG9yPEFwcGxlUGF5U2hpcHBpbmdNZXRob2Q+PiBB
cHBsZVBheVBheW1lbnRIYW5kbGVyOjpjb21wdXRlU2hpcHBpbmdNZXRob2RzKCkgY29uc3QKIHsK
ICAgICBhdXRvJiBkZXRhaWxzID0gbV9wYXltZW50UmVxdWVzdC0+cGF5bWVudERldGFpbHMoKTsK
IApAQCAtMzcwLDgwICszMDMsNjkgQEAgRXhjZXB0aW9uT3I8VmVjdG9yPEFwcGxlUGF5U2hpcHBp
bmdNZXRob2Q+PiBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpjb21wdXRlU2hpcHAKIAogICAgICAg
ICBzaGlwcGluZ09wdGlvbnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShkZXRhaWxzLnNoaXBwaW5n
T3B0aW9ucy0+c2l6ZSgpKTsKICAgICAgICAgZm9yIChhdXRvJiBzaGlwcGluZ09wdGlvbiA6ICpk
ZXRhaWxzLnNoaXBwaW5nT3B0aW9ucykgewotICAgICAgICAgICAgYXV0byBzaGlwcGluZ01ldGhv
ZCA9IGNvbnZlcnRBbmRWYWxpZGF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBzaGlwcGlu
Z09wdGlvbiwgY3VycmVuY3kpOworICAgICAgICAgICAgYXV0byBzaGlwcGluZ01ldGhvZCA9IGNv
bnZlcnRBbmRWYWxpZGF0ZShzaGlwcGluZ09wdGlvbiwgY3VycmVuY3kpOwogICAgICAgICAgICAg
aWYgKHNoaXBwaW5nTWV0aG9kLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVy
biBzaGlwcGluZ01ldGhvZC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICBzaGlwcGlu
Z09wdGlvbnMudW5jaGVja2VkQXBwZW5kKHNoaXBwaW5nTWV0aG9kLnJlbGVhc2VSZXR1cm5WYWx1
ZSgpKTsKICAgICAgICAgfQogICAgIH0KIAorICAgIGF1dG8gbW9kaWZpZXJFeGNlcHRpb24gPSBm
aXJzdEFwcGxpY2FibGVNb2RpZmllcigpOworICAgIGlmIChtb2RpZmllckV4Y2VwdGlvbi5oYXNF
eGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIG1vZGlmaWVyRXhjZXB0aW9uLnJlbGVhc2VFeGNl
cHRpb24oKTsKKyAgICBpZiAoYXV0byBtb2RpZmllckRhdGEgPSBtb2RpZmllckV4Y2VwdGlvbi5y
ZWxlYXNlUmV0dXJuVmFsdWUoKSkgeworICAgICAgICBhdXRvJiBbbW9kaWZpZXIsIGFwcGxlUGF5
TW9kaWZpZXJdID0gKm1vZGlmaWVyRGF0YTsKKworICAgICAgICBVTlVTRURfUEFSQU0obW9kaWZp
ZXIpOworCisgICAgICAgIHNoaXBwaW5nT3B0aW9ucy5hcHBlbmRWZWN0b3IoV1RGTW92ZShhcHBs
ZVBheU1vZGlmaWVyLmFkZGl0aW9uYWxTaGlwcGluZ09wdGlvbnMpKTsKKyAgICB9CisKICAgICBy
ZXR1cm4gV1RGTW92ZShzaGlwcGluZ09wdGlvbnMpOwogfQogCisKKyNpZiAhRU5BQkxFKEFQUExF
X1BBWV9MSU5FX0lURU1fREFUQSkKK3N0YXRpYyB2b2lkIG1lcmdlKEFwcGxlUGF5TGluZUl0ZW0m
LCBBcHBsZVBheU1vZGlmaWVyJiYpIHsgfQorI2VuZGlmIC8vICFFTkFCTEUoQVBQTEVfUEFZX0xJ
TkVfSVRFTV9EQVRBKQorCiBFeGNlcHRpb25PcjxzdGQ6OnR1cGxlPEFwcGxlUGF5TGluZUl0ZW0s
IFZlY3RvcjxBcHBsZVBheUxpbmVJdGVtPj4+IEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OmNvbXB1
dGVUb3RhbEFuZExpbmVJdGVtcygpIGNvbnN0CiB7CiAgICAgYXV0byYgZGV0YWlscyA9IG1fcGF5
bWVudFJlcXVlc3QtPnBheW1lbnREZXRhaWxzKCk7Ci0gICAgU3RyaW5nIGN1cnJlbmN5ID0gZGV0
YWlscy50b3RhbC5hbW91bnQuY3VycmVuY3k7CisgICAgYXV0byYgY3VycmVuY3kgPSBkZXRhaWxz
LnRvdGFsLmFtb3VudC5jdXJyZW5jeTsKIAotICAgIGF1dG8gY29udmVydGVkVG90YWwgPSBjb252
ZXJ0QW5kVmFsaWRhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgZGV0YWlscy50b3RhbCwg
Y3VycmVuY3kpOworICAgIGF1dG8gY29udmVydGVkVG90YWwgPSBjb252ZXJ0QW5kVmFsaWRhdGUo
ZGV0YWlscy50b3RhbCwgY3VycmVuY3kpOwogICAgIGlmIChjb252ZXJ0ZWRUb3RhbC5oYXNFeGNl
cHRpb24oKSkKICAgICAgICAgcmV0dXJuIGNvbnZlcnRlZFRvdGFsLnJlbGVhc2VFeGNlcHRpb24o
KTsKICAgICBhdXRvIHRvdGFsID0gY29udmVydGVkVG90YWwucmVsZWFzZVJldHVyblZhbHVlKCk7
CiAKICAgICBWZWN0b3I8QXBwbGVQYXlMaW5lSXRlbT4gbGluZUl0ZW1zOwogICAgIGlmIChkZXRh
aWxzLmRpc3BsYXlJdGVtcykgewotICAgICAgICBhdXRvIGNvbnZlcnRlZExpbmVJdGVtcyA9IGNv
bnZlcnRBbmRWYWxpZGF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqZGV0YWlscy5kaXNw
bGF5SXRlbXMsIGN1cnJlbmN5KTsKKyAgICAgICAgYXV0byBjb252ZXJ0ZWRMaW5lSXRlbXMgPSBj
b252ZXJ0QW5kVmFsaWRhdGUoKmRldGFpbHMuZGlzcGxheUl0ZW1zLCBjdXJyZW5jeSk7CiAgICAg
ICAgIGlmIChjb252ZXJ0ZWRMaW5lSXRlbXMuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gY29udmVydGVkTGluZUl0ZW1zLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgbGlu
ZUl0ZW1zID0gY29udmVydGVkTGluZUl0ZW1zLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwogICAgIH0K
IAotICAgIGlmICghbV9zZWxlY3RlZFBheW1lbnRNZXRob2RUeXBlKQotICAgICAgICByZXR1cm4g
e3sgV1RGTW92ZSh0b3RhbCksIFdURk1vdmUobGluZUl0ZW1zKSB9fTsKKyAgICBhdXRvIG1vZGlm
aWVyRXhjZXB0aW9uID0gZmlyc3RBcHBsaWNhYmxlTW9kaWZpZXIoKTsKKyAgICBpZiAobW9kaWZp
ZXJFeGNlcHRpb24uaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBtb2RpZmllckV4Y2Vw
dGlvbi5yZWxlYXNlRXhjZXB0aW9uKCk7CisgICAgaWYgKGF1dG8gbW9kaWZpZXJEYXRhID0gbW9k
aWZpZXJFeGNlcHRpb24ucmVsZWFzZVJldHVyblZhbHVlKCkpIHsKKyAgICAgICAgYXV0byYgW21v
ZGlmaWVyLCBhcHBsZVBheU1vZGlmaWVyXSA9ICptb2RpZmllckRhdGE7CiAKLSAgICBpZiAoZGV0
YWlscy5tb2RpZmllcnMpIHsKLSAgICAgICAgYXV0byYgc2VyaWFsaXplZE1vZGlmaWVyRGF0YSA9
IG1fcGF5bWVudFJlcXVlc3QtPnNlcmlhbGl6ZWRNb2RpZmllckRhdGEoKTsKLSAgICAgICAgQVNT
RVJUKGRldGFpbHMubW9kaWZpZXJzLT5zaXplKCkgPT0gc2VyaWFsaXplZE1vZGlmaWVyRGF0YS5z
aXplKCkpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRldGFpbHMubW9kaWZpZXJz
LT5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgYXV0byYgbW9kaWZpZXIgPSBkZXRhaWxzLm1v
ZGlmaWVycy0+YXQoaSk7Ci0KLSAgICAgICAgICAgIGF1dG8gY29udmVydGVkSWRlbnRpZmllciA9
IGNvbnZlcnRBbmRWYWxpZGF0ZVBheW1lbnRNZXRob2RJZGVudGlmaWVyKG1vZGlmaWVyLnN1cHBv
cnRlZE1ldGhvZHMpOwotICAgICAgICAgICAgaWYgKCFjb252ZXJ0ZWRJZGVudGlmaWVyIHx8ICFo
YW5kbGVzSWRlbnRpZmllcigqY29udmVydGVkSWRlbnRpZmllcikpCi0gICAgICAgICAgICAgICAg
Y29udGludWU7Ci0KLSAgICAgICAgICAgIGlmIChzZXJpYWxpemVkTW9kaWZpZXJEYXRhW2ldLmlz
RW1wdHkoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgYXV0byYg
bGV4aWNhbEdsb2JhbE9iamVjdCA9ICpkb2N1bWVudCgpLmdsb2JhbE9iamVjdCgpOwotICAgICAg
ICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUobGV4aWNhbEdsb2JhbE9iamVj
dC52bSgpKTsKLSAgICAgICAgICAgIEpTQzo6SlNWYWx1ZSBkYXRhOwotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIGF1dG8gbG9jayA9IEpTQzo6SlNMb2NrSG9sZGVyIHsgJmxleGljYWxH
bG9iYWxPYmplY3QgfTsKLSAgICAgICAgICAgICAgICBkYXRhID0gSlNPTlBhcnNlKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBzZXJpYWxpemVkTW9kaWZpZXJEYXRhW2ldKTsKLSAgICAgICAgICAgICAg
ICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH07Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIGF1dG8gYXBwbGVQYXlNb2RpZmllciA9IGNvbnZlcnREaWN0aW9uYXJ5PEFwcGxlUGF5
TW9kaWZpZXI+KGxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUoZGF0YSkpOwotICAgICAgICAg
ICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH07Ci0KLSAgICAgICAgICAgIGlmIChhcHBsZVBh
eU1vZGlmaWVyLnBheW1lbnRNZXRob2RUeXBlICE9ICptX3NlbGVjdGVkUGF5bWVudE1ldGhvZFR5
cGUpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIGlmIChtb2RpZmll
ci50b3RhbCkgewotICAgICAgICAgICAgICAgIGF1dG8gdG90YWxPdmVycmlkZSA9IGNvbnZlcnRB
bmRWYWxpZGF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqbW9kaWZpZXIudG90YWwsIGN1
cnJlbmN5KTsKLSAgICAgICAgICAgICAgICBpZiAodG90YWxPdmVycmlkZS5oYXNFeGNlcHRpb24o
KSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsT3ZlcnJpZGUucmVsZWFzZUV4Y2Vw
dGlvbigpOwotICAgICAgICAgICAgICAgIHRvdGFsID0gdG90YWxPdmVycmlkZS5yZWxlYXNlUmV0
dXJuVmFsdWUoKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYXV0byBhZGRpdGlvbmFs
RGlzcGxheUl0ZW1zID0gY29udmVydEFuZFZhbGlkYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCksIG1vZGlmaWVyLmFkZGl0aW9uYWxEaXNwbGF5SXRlbXMsIGN1cnJlbmN5KTsKLSAgICAgICAg
ICAgIGlmIChhZGRpdGlvbmFsRGlzcGxheUl0ZW1zLmhhc0V4Y2VwdGlvbigpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBhZGRpdGlvbmFsRGlzcGxheUl0ZW1zLnJlbGVhc2VFeGNlcHRpb24oKTsK
LSAgICAgICAgICAgIGxpbmVJdGVtcy5hcHBlbmRWZWN0b3IoYWRkaXRpb25hbERpc3BsYXlJdGVt
cy5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYg
KG1vZGlmaWVyLnRvdGFsKSB7CisgICAgICAgICAgICBhdXRvIHRvdGFsT3ZlcnJpZGUgPSBjb252
ZXJ0QW5kVmFsaWRhdGUoKm1vZGlmaWVyLnRvdGFsLCBjdXJyZW5jeSk7CisgICAgICAgICAgICBp
ZiAodG90YWxPdmVycmlkZS5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
dG90YWxPdmVycmlkZS5yZWxlYXNlRXhjZXB0aW9uKCk7CisgICAgICAgICAgICB0b3RhbCA9IHRv
dGFsT3ZlcnJpZGUucmVsZWFzZVJldHVyblZhbHVlKCk7CiAgICAgICAgIH0KKworICAgICAgICBh
dXRvIGFkZGl0aW9uYWxEaXNwbGF5SXRlbXMgPSBjb252ZXJ0QW5kVmFsaWRhdGUobW9kaWZpZXIu
YWRkaXRpb25hbERpc3BsYXlJdGVtcywgY3VycmVuY3kpOworICAgICAgICBpZiAoYWRkaXRpb25h
bERpc3BsYXlJdGVtcy5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBhZGRpdGlv
bmFsRGlzcGxheUl0ZW1zLnJlbGVhc2VFeGNlcHRpb24oKTsKKyAgICAgICAgbGluZUl0ZW1zLmFw
cGVuZFZlY3RvcihhZGRpdGlvbmFsRGlzcGxheUl0ZW1zLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsK
KworICAgICAgICBtZXJnZSh0b3RhbCwgV1RGTW92ZShhcHBsZVBheU1vZGlmaWVyKSk7CiAgICAg
fQogCiAgICAgcmV0dXJuIHt7IFdURk1vdmUodG90YWwpLCBXVEZNb3ZlKGxpbmVJdGVtcykgfX07
CkBAIC01MzksNiArNDYxLDU2IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEFwcGxlUGF5UGF5bWVudEhh
bmRsZXI6OmNvbXB1dGVQYXltZW50TWV0aG9kRXJyb3JzKEpTQzo6SlNPYmplCiAgICAgcmV0dXJu
IHsgfTsKIH0KIAorI2lmICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorc3RhdGljIEV4Y2VwdGlv
bk9yPHZvaWQ+IHZhbGlkYXRlKGNvbnN0IEFwcGxlUGF5TW9kaWZpZXImKSB7IHJldHVybiB7IH07
IH0KKyNlbmRpZgorCitFeGNlcHRpb25PcjxPcHRpb25hbDxzdGQ6OnR1cGxlPFBheW1lbnREZXRh
aWxzTW9kaWZpZXIsIEFwcGxlUGF5TW9kaWZpZXI+Pj4gQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6
Zmlyc3RBcHBsaWNhYmxlTW9kaWZpZXIoKSBjb25zdAoreworICAgIGF1dG8mIGRldGFpbHMgPSBt
X3BheW1lbnRSZXF1ZXN0LT5wYXltZW50RGV0YWlscygpOworICAgIGlmICghZGV0YWlscy5tb2Rp
ZmllcnMpCisgICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCB9OworCisgICAgYXV0byYgbGV4
aWNhbEdsb2JhbE9iamVjdCA9ICpkb2N1bWVudCgpLmdsb2JhbE9iamVjdCgpOworCisgICAgYXV0
byYgc2VyaWFsaXplZE1vZGlmaWVyRGF0YSA9IG1fcGF5bWVudFJlcXVlc3QtPnNlcmlhbGl6ZWRN
b2RpZmllckRhdGEoKTsKKyAgICBBU1NFUlQoZGV0YWlscy5tb2RpZmllcnMtPnNpemUoKSA9PSBz
ZXJpYWxpemVkTW9kaWZpZXJEYXRhLnNpemUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBkZXRhaWxzLm1vZGlmaWVycy0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgYXV0byYgbW9kaWZp
ZXIgPSBkZXRhaWxzLm1vZGlmaWVycy0+YXQoaSk7CisKKyAgICAgICAgYXV0byBjb252ZXJ0ZWRJ
ZGVudGlmaWVyID0gY29udmVydEFuZFZhbGlkYXRlUGF5bWVudE1ldGhvZElkZW50aWZpZXIobW9k
aWZpZXIuc3VwcG9ydGVkTWV0aG9kcyk7CisgICAgICAgIGlmICghY29udmVydGVkSWRlbnRpZmll
ciB8fCAhaGFuZGxlc0lkZW50aWZpZXIoKmNvbnZlcnRlZElkZW50aWZpZXIpKQorICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgaWYgKHNlcmlhbGl6ZWRNb2RpZmllckRhdGFbaV0uaXNF
bXB0eSgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpKTsKKyAgICAgICAgSlND
OjpKU1ZhbHVlIGRhdGE7CisgICAgICAgIHsKKyAgICAgICAgICAgIEpTQzo6SlNMb2NrSG9sZGVy
IGxvY2soJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgICAgICAgICAgZGF0YSA9IEpTT05QYXJz
ZSgmbGV4aWNhbEdsb2JhbE9iamVjdCwgc2VyaWFsaXplZE1vZGlmaWVyRGF0YVtpXSk7CisgICAg
ICAgICAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbihFeGlzdGluZ0V4Y2VwdGlvbkVycm9yKTsKKyAgICAgICAgfQorCisgICAgICAgIGF1
dG8gYXBwbGVQYXlNb2RpZmllciA9IGNvbnZlcnREaWN0aW9uYXJ5PEFwcGxlUGF5TW9kaWZpZXI+
KGxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUoZGF0YSkpOworICAgICAgICBpZiAoc2NvcGUu
ZXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uKEV4aXN0aW5nRXhjZXB0
aW9uRXJyb3IpOworCisgICAgICAgIGF1dG8gdmFsaWRhdGVBcHBsZVBheU1vZGlmaWVyUmVzdWx0
ID0gdmFsaWRhdGUoYXBwbGVQYXlNb2RpZmllcik7CisgICAgICAgIGlmICh2YWxpZGF0ZUFwcGxl
UGF5TW9kaWZpZXJSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gdmFs
aWRhdGVBcHBsZVBheU1vZGlmaWVyUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKworICAgICAg
ICBpZiAoYXBwbGVQYXlNb2RpZmllci5wYXltZW50TWV0aG9kVHlwZSAmJiAqYXBwbGVQYXlNb2Rp
Zmllci5wYXltZW50TWV0aG9kVHlwZSAhPSBtX3NlbGVjdGVkUGF5bWVudE1ldGhvZFR5cGUpCisg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICByZXR1cm4geyB7IHsgbW9kaWZpZXIsIFdU
Rk1vdmUoYXBwbGVQYXlNb2RpZmllcikgfSB9IH07CisgICAgfQorCisgICAgcmV0dXJuIHsgV1RG
OjpudWxsb3B0IH07Cit9CisKIEV4Y2VwdGlvbk9yPHZvaWQ+IEFwcGxlUGF5UGF5bWVudEhhbmRs
ZXI6OmRldGFpbHNVcGRhdGVkKFBheW1lbnRSZXF1ZXN0OjpVcGRhdGVSZWFzb24gcmVhc29uLCBT
dHJpbmcmJiBlcnJvciwgQWRkcmVzc0Vycm9ycyYmIGFkZHJlc3NFcnJvcnMsIFBheWVyRXJyb3JG
aWVsZHMmJiBwYXllckVycm9ycywgSlNDOjpKU09iamVjdCogcGF5bWVudE1ldGhvZEVycm9ycykK
IHsKICAgICB1c2luZyBSZWFzb24gPSBQYXltZW50UmVxdWVzdDo6VXBkYXRlUmVhc29uOwpAQCAt
NTc1LDggKzU0Nyw4IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6
Om1lcmNoYW50VmFsaWRhdGlvbkNvbXBsZXRlZChKU0M6OkpTVmFsCiB9CiAKICNpZiAhRU5BQkxF
KEFQUExFX1BBWV9QQVlNRU5UX0RFVEFJTFNfREFUQSkKLXN0YXRpYyB2b2lkIG1lcmdlKEFwcGxl
UGF5RGV0YWlsc1VwZGF0ZUJhc2UmLCBBcHBsZVBheURldGFpbHNVcGRhdGVEYXRhJiYpIHsgfQot
I2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfUEFZTUVOVF9ERVRBSUxTX0RBVEEpCitzdGF0aWMg
dm9pZCBtZXJnZShBcHBsZVBheURldGFpbHNVcGRhdGVCYXNlJiwgQXBwbGVQYXlNb2RpZmllciYm
KSB7IH0KKyNlbmRpZiAvLyAhRU5BQkxFKEFQUExFX1BBWV9QQVlNRU5UX0RFVEFJTFNfREFUQSkK
IAogRXhjZXB0aW9uT3I8dm9pZD4gQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6c2hpcHBpbmdBZGRy
ZXNzVXBkYXRlZChWZWN0b3I8UmVmUHRyPEFwcGxlUGF5RXJyb3I+PiYmIGVycm9ycykKIHsKQEAg
LTU5NiwxMCArNTY4LDE2IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEFwcGxlUGF5UGF5bWVudEhhbmRs
ZXI6OnNoaXBwaW5nQWRkcmVzc1VwZGF0ZWQoVmVjdG9yPFJlZlB0cjxBCiAgICAgICAgIHJldHVy
biBuZXdUb3RhbEFuZExpbmVJdGVtcy5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgc3RkOjp0aWUo
dXBkYXRlLm5ld1RvdGFsLCB1cGRhdGUubmV3TGluZUl0ZW1zKSA9IG5ld1RvdGFsQW5kTGluZUl0
ZW1zLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwogCi0gICAgYXV0byBhcHBsZVBheURldGFpbHNVcGRh
dGVEYXRhID0gY29udmVydEFuZFZhbGlkYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG1f
cGF5bWVudFJlcXVlc3QtPnBheW1lbnREZXRhaWxzKCkpOwotICAgIGlmIChhcHBsZVBheURldGFp
bHNVcGRhdGVEYXRhLmhhc0V4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gYXBwbGVQYXlEZXRh
aWxzVXBkYXRlRGF0YS5yZWxlYXNlRXhjZXB0aW9uKCk7Ci0gICAgbWVyZ2UodXBkYXRlLCBhcHBs
ZVBheURldGFpbHNVcGRhdGVEYXRhLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKKyAgICBhdXRvIG1v
ZGlmaWVyRXhjZXB0aW9uID0gZmlyc3RBcHBsaWNhYmxlTW9kaWZpZXIoKTsKKyAgICBpZiAobW9k
aWZpZXJFeGNlcHRpb24uaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBtb2RpZmllckV4
Y2VwdGlvbi5yZWxlYXNlRXhjZXB0aW9uKCk7CisgICAgaWYgKGF1dG8gbW9kaWZpZXJEYXRhID0g
bW9kaWZpZXJFeGNlcHRpb24ucmVsZWFzZVJldHVyblZhbHVlKCkpIHsKKyAgICAgICAgYXV0byYg
W21vZGlmaWVyLCBhcHBsZVBheU1vZGlmaWVyXSA9ICptb2RpZmllckRhdGE7CisKKyAgICAgICAg
VU5VU0VEX1BBUkFNKG1vZGlmaWVyKTsKKworICAgICAgICBtZXJnZSh1cGRhdGUsIFdURk1vdmUo
YXBwbGVQYXlNb2RpZmllcikpOworICAgIH0KIAogICAgIHBheW1lbnRDb29yZGluYXRvcigpLmNv
bXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKFdURk1vdmUodXBkYXRlKSk7CiAgICAgcmV0
dXJuIHsgfTsKQEAgLTYxNywxMCArNTk1LDE2IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEFwcGxlUGF5
UGF5bWVudEhhbmRsZXI6OnNoaXBwaW5nT3B0aW9uVXBkYXRlZCgpCiAgICAgICAgIHJldHVybiBu
ZXdUb3RhbEFuZExpbmVJdGVtcy5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgc3RkOjp0aWUodXBk
YXRlLm5ld1RvdGFsLCB1cGRhdGUubmV3TGluZUl0ZW1zKSA9IG5ld1RvdGFsQW5kTGluZUl0ZW1z
LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwogCi0gICAgYXV0byBhcHBsZVBheURldGFpbHNVcGRhdGVE
YXRhID0gY29udmVydEFuZFZhbGlkYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG1fcGF5
bWVudFJlcXVlc3QtPnBheW1lbnREZXRhaWxzKCkpOwotICAgIGlmIChhcHBsZVBheURldGFpbHNV
cGRhdGVEYXRhLmhhc0V4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gYXBwbGVQYXlEZXRhaWxz
VXBkYXRlRGF0YS5yZWxlYXNlRXhjZXB0aW9uKCk7Ci0gICAgbWVyZ2UodXBkYXRlLCBhcHBsZVBh
eURldGFpbHNVcGRhdGVEYXRhLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKKyAgICBhdXRvIG1vZGlm
aWVyRXhjZXB0aW9uID0gZmlyc3RBcHBsaWNhYmxlTW9kaWZpZXIoKTsKKyAgICBpZiAobW9kaWZp
ZXJFeGNlcHRpb24uaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBtb2RpZmllckV4Y2Vw
dGlvbi5yZWxlYXNlRXhjZXB0aW9uKCk7CisgICAgaWYgKGF1dG8gbW9kaWZpZXJEYXRhID0gbW9k
aWZpZXJFeGNlcHRpb24ucmVsZWFzZVJldHVyblZhbHVlKCkpIHsKKyAgICAgICAgYXV0byYgW21v
ZGlmaWVyLCBhcHBsZVBheU1vZGlmaWVyXSA9ICptb2RpZmllckRhdGE7CisKKyAgICAgICAgVU5V
U0VEX1BBUkFNKG1vZGlmaWVyKTsKKworICAgICAgICBtZXJnZSh1cGRhdGUsIFdURk1vdmUoYXBw
bGVQYXlNb2RpZmllcikpOworICAgIH0KIAogICAgIHBheW1lbnRDb29yZGluYXRvcigpLmNvbXBs
ZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oV1RGTW92ZSh1cGRhdGUpKTsKICAgICByZXR1cm4g
eyB9OwpAQCAtNjQ1LDEwICs2MjksMTYgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXBwbGVQYXlQYXlt
ZW50SGFuZGxlcjo6cGF5bWVudE1ldGhvZFVwZGF0ZWQoVmVjdG9yPFJlZlB0cjxBcHAKICAgICAg
ICAgICAgIHJldHVybiBuZXdUb3RhbEFuZExpbmVJdGVtcy5yZWxlYXNlRXhjZXB0aW9uKCk7CiAg
ICAgICAgIHN0ZDo6dGllKHVwZGF0ZS5uZXdUb3RhbCwgdXBkYXRlLm5ld0xpbmVJdGVtcykgPSBu
ZXdUb3RhbEFuZExpbmVJdGVtcy5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKIAotICAgICAgICBhdXRv
IGFwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEgPSBjb252ZXJ0QW5kVmFsaWRhdGUoKnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSwgbV9wYXltZW50UmVxdWVzdC0+cGF5bWVudERldGFpbHMoKSk7Ci0g
ICAgICAgIGlmIChhcHBsZVBheURldGFpbHNVcGRhdGVEYXRhLmhhc0V4Y2VwdGlvbigpKQotICAg
ICAgICAgICAgcmV0dXJuIGFwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEucmVsZWFzZUV4Y2VwdGlv
bigpOwotICAgICAgICBtZXJnZSh1cGRhdGUsIGFwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEucmVs
ZWFzZVJldHVyblZhbHVlKCkpOworICAgICAgICBhdXRvIG1vZGlmaWVyRXhjZXB0aW9uID0gZmly
c3RBcHBsaWNhYmxlTW9kaWZpZXIoKTsKKyAgICAgICAgaWYgKG1vZGlmaWVyRXhjZXB0aW9uLmhh
c0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIG1vZGlmaWVyRXhjZXB0aW9uLnJlbGVh
c2VFeGNlcHRpb24oKTsKKyAgICAgICAgaWYgKGF1dG8gbW9kaWZpZXJEYXRhID0gbW9kaWZpZXJF
eGNlcHRpb24ucmVsZWFzZVJldHVyblZhbHVlKCkpIHsKKyAgICAgICAgICAgIGF1dG8mIFttb2Rp
ZmllciwgYXBwbGVQYXlNb2RpZmllcl0gPSAqbW9kaWZpZXJEYXRhOworCisgICAgICAgICAgICBV
TlVTRURfUEFSQU0obW9kaWZpZXIpOworCisgICAgICAgICAgICBtZXJnZSh1cGRhdGUsIFdURk1v
dmUoYXBwbGVQYXlNb2RpZmllcikpOworICAgICAgICB9CiAKICAgICAgICAgcGF5bWVudENvb3Jk
aW5hdG9yKCkuY29tcGxldGVQYXltZW50TWV0aG9kTW9kZUNoYW5nZShXVEZNb3ZlKHVwZGF0ZSkp
OwogICAgICAgICByZXR1cm4geyB9OwpAQCAtNjY3LDEwICs2NTcsMTYgQEAgRXhjZXB0aW9uT3I8
dm9pZD4gQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6cGF5bWVudE1ldGhvZFVwZGF0ZWQoVmVjdG9y
PFJlZlB0cjxBcHAKICAgICAgICAgcmV0dXJuIG5ld1RvdGFsQW5kTGluZUl0ZW1zLnJlbGVhc2VF
eGNlcHRpb24oKTsKICAgICBzdGQ6OnRpZSh1cGRhdGUubmV3VG90YWwsIHVwZGF0ZS5uZXdMaW5l
SXRlbXMpID0gbmV3VG90YWxBbmRMaW5lSXRlbXMucmVsZWFzZVJldHVyblZhbHVlKCk7CiAKLSAg
ICBhdXRvIGFwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEgPSBjb252ZXJ0QW5kVmFsaWRhdGUoKnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbV9wYXltZW50UmVxdWVzdC0+cGF5bWVudERldGFpbHMo
KSk7Ci0gICAgaWYgKGFwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEuaGFzRXhjZXB0aW9uKCkpCi0g
ICAgICAgIHJldHVybiBhcHBsZVBheURldGFpbHNVcGRhdGVEYXRhLnJlbGVhc2VFeGNlcHRpb24o
KTsKLSAgICBtZXJnZSh1cGRhdGUsIGFwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEucmVsZWFzZVJl
dHVyblZhbHVlKCkpOworICAgIGF1dG8gbW9kaWZpZXJFeGNlcHRpb24gPSBmaXJzdEFwcGxpY2Fi
bGVNb2RpZmllcigpOworICAgIGlmIChtb2RpZmllckV4Y2VwdGlvbi5oYXNFeGNlcHRpb24oKSkK
KyAgICAgICAgcmV0dXJuIG1vZGlmaWVyRXhjZXB0aW9uLnJlbGVhc2VFeGNlcHRpb24oKTsKKyAg
ICBpZiAoYXV0byBtb2RpZmllckRhdGEgPSBtb2RpZmllckV4Y2VwdGlvbi5yZWxlYXNlUmV0dXJu
VmFsdWUoKSkgeworICAgICAgICBhdXRvJiBbbW9kaWZpZXIsIGFwcGxlUGF5TW9kaWZpZXJdID0g
Km1vZGlmaWVyRGF0YTsKKworICAgICAgICBVTlVTRURfUEFSQU0obW9kaWZpZXIpOworCisgICAg
ICAgIG1lcmdlKHVwZGF0ZSwgV1RGTW92ZShhcHBsZVBheU1vZGlmaWVyKSk7CisgICAgfQogCiAg
ICAgcGF5bWVudENvb3JkaW5hdG9yKCkuY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKFdU
Rk1vdmUodXBkYXRlKSk7CiAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBs
ZVBheVBheW1lbnRIYW5kbGVyLmgKaW5kZXggZjlhNjJjYjZjMGQ1MDljNGI3ODVjNjIzNGE1ZWY4
ZGExNmQyOTQ5OS4uODAwZTc3YjkyNGJmZmIwZjk3MTk0NDM0MjQxOGVkMDQ2YTNjY2EzOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9B
cHBsZVBheVBheW1lbnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmgKQEAgLTMzLDEzICsz
MywxNyBAQAogI2luY2x1ZGUgIlBheW1lbnRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiUGF5bWVudFJl
cXVlc3QuaCIKICNpbmNsdWRlICJQYXltZW50U2Vzc2lvbi5oIgorI2luY2x1ZGUgPHd0Zi9GdW5j
dGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9PcHRp
b25hbC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBBcHBsZVBheUVycm9yOwogY2xhc3MgUGF5bWVudENvb3JkaW5hdG9yOworc3RydWN0
IEFwcGxlUGF5TW9kaWZpZXI7CitzdHJ1Y3QgUGF5bWVudERldGFpbHNNb2RpZmllcjsKIAogY2xh
c3MgQXBwbGVQYXlQYXltZW50SGFuZGxlciBmaW5hbCA6IHB1YmxpYyBQYXltZW50SGFuZGxlciwg
cHVibGljIFBheW1lbnRTZXNzaW9uLCBwcml2YXRlIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVy
IHsKIHB1YmxpYzoKQEAgLTU0LDEzICs1OCwxNCBAQCBwcml2YXRlOgogICAgIERvY3VtZW50JiBk
b2N1bWVudCgpIGNvbnN0OwogICAgIFBheW1lbnRDb29yZGluYXRvciYgcGF5bWVudENvb3JkaW5h
dG9yKCkgY29uc3Q7CiAKLSAgICBFeGNlcHRpb25PcjxWZWN0b3I8QXBwbGVQYXlTaGlwcGluZ01l
dGhvZD4+IGNvbXB1dGVTaGlwcGluZ01ldGhvZHMoKTsKKyAgICBFeGNlcHRpb25PcjxWZWN0b3I8
QXBwbGVQYXlTaGlwcGluZ01ldGhvZD4+IGNvbXB1dGVTaGlwcGluZ01ldGhvZHMoKSBjb25zdDsK
ICAgICBFeGNlcHRpb25PcjxzdGQ6OnR1cGxlPEFwcGxlUGF5TGluZUl0ZW0sIFZlY3RvcjxBcHBs
ZVBheUxpbmVJdGVtPj4+IGNvbXB1dGVUb3RhbEFuZExpbmVJdGVtcygpIGNvbnN0OwogICAgIFZl
Y3RvcjxSZWZQdHI8QXBwbGVQYXlFcnJvcj4+IGNvbXB1dGVFcnJvcnMoU3RyaW5nJiYgZXJyb3Is
IEFkZHJlc3NFcnJvcnMmJiwgUGF5ZXJFcnJvckZpZWxkcyYmLCBKU0M6OkpTT2JqZWN0KiBwYXlt
ZW50TWV0aG9kRXJyb3JzKSBjb25zdDsKICAgICBWZWN0b3I8UmVmUHRyPEFwcGxlUGF5RXJyb3I+
PiBjb21wdXRlRXJyb3JzKEpTQzo6SlNPYmplY3QqIHBheW1lbnRNZXRob2RFcnJvcnMpIGNvbnN0
OwogICAgIHZvaWQgY29tcHV0ZUFkZHJlc3NFcnJvcnMoU3RyaW5nJiYgZXJyb3IsIEFkZHJlc3NF
cnJvcnMmJiwgVmVjdG9yPFJlZlB0cjxBcHBsZVBheUVycm9yPj4mKSBjb25zdDsKICAgICB2b2lk
IGNvbXB1dGVQYXllckVycm9ycyhQYXllckVycm9yRmllbGRzJiYsIFZlY3RvcjxSZWZQdHI8QXBw
bGVQYXlFcnJvcj4+JikgY29uc3Q7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gY29tcHV0ZVBheW1l
bnRNZXRob2RFcnJvcnMoSlNDOjpKU09iamVjdCogcGF5bWVudE1ldGhvZEVycm9ycywgVmVjdG9y
PFJlZlB0cjxBcHBsZVBheUVycm9yPj4mKSBjb25zdDsKKyAgICBFeGNlcHRpb25PcjxPcHRpb25h
bDxzdGQ6OnR1cGxlPFBheW1lbnREZXRhaWxzTW9kaWZpZXIsIEFwcGxlUGF5TW9kaWZpZXI+Pj4g
Zmlyc3RBcHBsaWNhYmxlTW9kaWZpZXIoKSBjb25zdDsKIAogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+
IHNoaXBwaW5nQWRkcmVzc1VwZGF0ZWQoVmVjdG9yPFJlZlB0cjxBcHBsZVBheUVycm9yPj4mJiBl
cnJvcnMpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNoaXBwaW5nT3B0aW9uVXBkYXRlZCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50
RGV0YWlsc0Jhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5
bWVudERldGFpbHNCYXNlLmgKaW5kZXggOTBmODdkMjA2MWUwNmQ1OThhNGMzMzgzYTYzYWNjODFh
MGE2MGVkMS4uZTE3M2Q2ODVhNzlhNmI5OTRjODMwYWZlNDNhZTMzNjkxMjc1ZDA1NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50RGV0YWls
c0Jhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1l
bnREZXRhaWxzQmFzZS5oCkBAIC0zMCw4ICszMCw2IEBACiAjaW5jbHVkZSAiUGF5bWVudERldGFp
bHNNb2RpZmllci5oIgogI2luY2x1ZGUgIlBheW1lbnRJdGVtLmgiCiAjaW5jbHVkZSAiUGF5bWVu
dFNoaXBwaW5nT3B0aW9uLmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3QuaD4K
LSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmcuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9u
YWwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CkBAIC00MiwxMCArNDAsNiBAQCBzdHJ1Y3QgUGF5bWVudERldGFpbHNCYXNlIHsKICAg
ICBPcHRpb25hbDxWZWN0b3I8UGF5bWVudEl0ZW0+PiBkaXNwbGF5SXRlbXM7CiAgICAgT3B0aW9u
YWw8VmVjdG9yPFBheW1lbnRTaGlwcGluZ09wdGlvbj4+IHNoaXBwaW5nT3B0aW9uczsKICAgICBP
cHRpb25hbDxWZWN0b3I8UGF5bWVudERldGFpbHNNb2RpZmllcj4+IG1vZGlmaWVyczsKLSAgICBK
U0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0PiBkYXRhOwotCi0gICAgLy8gTm90IGZyb20gdGhlIElE
TC4gU2V0IGJ5IGBkYXRhYCB3aGVuIHRoaXMgaXMgdmFsaWRhdGVkIGJ5IGBQYXltZW50UmVxdWVz
dGAuCi0gICAgU3RyaW5nIHNlcmlhbGl6ZWREYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9Q
YXltZW50RGV0YWlsc0Jhc2UuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVx
dWVzdC9QYXltZW50RGV0YWlsc0Jhc2UuaWRsCmluZGV4IGQ4MGM0OWQ5MjA1NjYxZGU4MGE4ZTQ3
NmMzMDQxMzkxYTU2ZDVjZGMuLjQ0OWUzZWU5OGQyOTEwN2VjMGNlZTZjYzQ1NjhiMzA4ZDM1NmY1
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5
bWVudERldGFpbHNCYXNlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRy
ZXF1ZXN0L1BheW1lbnREZXRhaWxzQmFzZS5pZGwKQEAgLTI5LDUgKzI5LDQgQEAKICAgICBzZXF1
ZW5jZTxQYXltZW50SXRlbT4gZGlzcGxheUl0ZW1zOwogICAgIHNlcXVlbmNlPFBheW1lbnRTaGlw
cGluZ09wdGlvbj4gc2hpcHBpbmdPcHRpb25zOwogICAgIHNlcXVlbmNlPFBheW1lbnREZXRhaWxz
TW9kaWZpZXI+IG1vZGlmaWVyczsKLSAgICBvYmplY3QgZGF0YTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRJdGVtLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRJdGVtLmgKaW5kZXggZjE1
YjllYWVhZWU0NjRlNzg5OTEyYzdkZTZmNDBiNjdiNzZhNzJiMy4uZDU3OTQ3NmZmNDgzMTI2NWMz
YjdjM2Q2NTE0OWRkYzA1NTRiYTZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wYXltZW50cmVxdWVzdC9QYXltZW50SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudEl0ZW0uaApAQCAtMjgsOCArMjgsNiBAQAogI2lmIEVO
QUJMRShQQVlNRU5UX1JFUVVFU1QpCiAKICNpbmNsdWRlICJQYXltZW50Q3VycmVuY3lBbW91bnQu
aCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdC5oPgotI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1N0cm9uZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCwxMCArMzYsNiBAQCBzdHJ1Y3QgUGF5bWVudEl0ZW0g
ewogICAgIFN0cmluZyBsYWJlbDsKICAgICBQYXltZW50Q3VycmVuY3lBbW91bnQgYW1vdW50Owog
ICAgIGJvb2wgcGVuZGluZyB7IGZhbHNlIH07Ci0gICAgSlNDOjpTdHJvbmc8SlNDOjpKU09iamVj
dD4gZGF0YTsKLQotICAgIC8vIE5vdCBmcm9tIHRoZSBJREwuIFNldCBieSBgZGF0YWAgd2hlbiB0
aGlzIGlzIHZhbGlkYXRlZCBieSBgUGF5bWVudFJlcXVlc3RgLgotICAgIFN0cmluZyBzZXJpYWxp
emVkRGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudEl0ZW0uaWRsIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50SXRlbS5pZGwKaW5kZXggMWMw
YmM2NmZlMzE1ZTI2YWM4NWIxOTM3OGNiNzA2YzE1MzNlNWUxMi4uZGExYWU3ZjNhM2Y3OGI1YzI3
MzVhYzY1ZWZiMGFjZGE5MmRhZmUzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wYXltZW50cmVxdWVzdC9QYXltZW50SXRlbS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50SXRlbS5pZGwKQEAgLTI5LDUgKzI5LDQgQEAKICAg
ICByZXF1aXJlZCBET01TdHJpbmcgbGFiZWw7CiAgICAgcmVxdWlyZWQgUGF5bWVudEN1cnJlbmN5
QW1vdW50IGFtb3VudDsKICAgICBib29sZWFuIHBlbmRpbmcgPSBmYWxzZTsKLSAgICBvYmplY3Qg
ZGF0YTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1
ZXN0L1BheW1lbnRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJl
cXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwCmluZGV4IGVmODUyNmU5ZTdmMWVhM2VhYzk3NDViODEy
MzY5Yzg1OGI5YjA2ZTUuLmViYmE4NDc2Yzk1YzY2Y2Q5YmYwZDdlMzY4ZGI0ZTQzZDRhZDMwMmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVu
dFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3Qv
UGF5bWVudFJlcXVlc3QuY3BwCkBAIC05OSw3ICs5OSw3IEBAIHN0YXRpYyBFeGNlcHRpb25Pcjx2
b2lkPiBjaGVja0FuZENhbm9uaWNhbGl6ZUFtb3VudChQYXltZW50Q3VycmVuY3lBbW91bnQmIGFt
b3VuCiB9CiAKIGVudW0gY2xhc3MgTmVnYXRpdmVBbW91bnRBbGxvd2VkIHsgWWVzLCBObyB9Owot
c3RhdGljIEV4Y2VwdGlvbk9yPHZvaWQ+IGNoZWNrQW5kQ2Fub25pY2FsaXplUGF5bWVudEl0ZW0o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUGF5bWVudEl0ZW0mIGl0ZW0sIE5lZ2F0
aXZlQW1vdW50QWxsb3dlZCBuZWdhdGl2ZUFtb3VudEFsbG93ZWQpCitzdGF0aWMgRXhjZXB0aW9u
T3I8dm9pZD4gY2hlY2tBbmRDYW5vbmljYWxpemVQYXltZW50SXRlbShQYXltZW50SXRlbSYgaXRl
bSwgTmVnYXRpdmVBbW91bnRBbGxvd2VkIG5lZ2F0aXZlQW1vdW50QWxsb3dlZCkKIHsKICAgICBh
dXRvIGV4Y2VwdGlvbiA9IGNoZWNrQW5kQ2Fub25pY2FsaXplQW1vdW50KGl0ZW0uYW1vdW50KTsK
ICAgICBpZiAoZXhjZXB0aW9uLmhhc0V4Y2VwdGlvbigpKQpAQCAtMTA4LDIyICsxMDgsMTQgQEAg
c3RhdGljIEV4Y2VwdGlvbk9yPHZvaWQ+IGNoZWNrQW5kQ2Fub25pY2FsaXplUGF5bWVudEl0ZW0o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYKICAgICBpZiAobmVnYXRpdmVBbW91bnRBbGxvd2VkID09
IE5lZ2F0aXZlQW1vdW50QWxsb3dlZDo6Tm8gJiYgaXRlbS5hbW91bnQudmFsdWVbMF0gPT0gJy0n
KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiVG90YWwgY3VycmVuY3kg
dmFsdWVzIGNhbm5vdCBiZSBuZWdhdGl2ZS4iX3MgfTsKIAotICAgIGlmIChpdGVtLmRhdGEpIHsK
LSAgICAgICAgYXV0byBkYXRhUmVzdWx0ID0gY2hlY2tBbmRDYW5vbmljYWxpemVEYXRhKGNvbnRl
eHQsIGl0ZW0pOwotICAgICAgICBpZiAoZGF0YVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKLSAgICAg
ICAgICAgIHJldHVybiBkYXRhUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKLQotICAgICAgICBp
dGVtLnNlcmlhbGl6ZWREYXRhID0gZGF0YVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAg
ICB9Ci0KICAgICByZXR1cm4geyB9OwogfQogCiAvLyBJbXBsZW1lbnRzIHRoZSAiY2hlY2sgYW5k
IGNhbm9uaWNhbGl6ZSB0b3RhbCIgdmFsaWRpdHkgY2hlY2tlcgogLy8gaHR0cHM6Ly93d3cudzMu
b3JnL1RSL3BheW1lbnQtcmVxdWVzdC8jZGZuLWNoZWNrLWFuZC1jYW5vbmljYWxpemUtdG90YWwK
LXN0YXRpYyBFeGNlcHRpb25Pcjx2b2lkPiBjaGVja0FuZENhbm9uaWNhbGl6ZVRvdGFsKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFBheW1lbnRJdGVtJiB0b3RhbCkKK3N0YXRpYyBF
eGNlcHRpb25Pcjx2b2lkPiBjaGVja0FuZENhbm9uaWNhbGl6ZVRvdGFsKFBheW1lbnRJdGVtJiB0
b3RhbCkKIHsKLSAgICByZXR1cm4gY2hlY2tBbmRDYW5vbmljYWxpemVQYXltZW50SXRlbShjb250
ZXh0LCB0b3RhbCwgTmVnYXRpdmVBbW91bnRBbGxvd2VkOjpObyk7CisgICAgcmV0dXJuIGNoZWNr
QW5kQ2Fub25pY2FsaXplUGF5bWVudEl0ZW0odG90YWwsIE5lZ2F0aXZlQW1vdW50QWxsb3dlZDo6
Tm8pOwogfQogCiAvLyBJbXBsZW1lbnRzICJ2YWxpZGF0ZSBhIHN0YW5kYXJkaXplZCBwYXltZW50
IG1ldGhvZCBpZGVudGlmaWVyIgpAQCAtMjA2LDcgKzE5OCw3IEBAIHN0YXRpYyBFeGNlcHRpb25P
cjxzdGQ6OnR1cGxlPFN0cmluZywgVmVjdG9yPFN0cmluZz4+PiBjaGVja0FuZENhbm9uaWNhbGl6
ZURldGFpCiB7CiAgICAgaWYgKGRldGFpbHMuZGlzcGxheUl0ZW1zKSB7CiAgICAgICAgIGZvciAo
YXV0byYgaXRlbSA6ICpkZXRhaWxzLmRpc3BsYXlJdGVtcykgewotICAgICAgICAgICAgYXV0byBw
YXltZW50SXRlbVJlc3VsdCA9IGNoZWNrQW5kQ2Fub25pY2FsaXplUGF5bWVudEl0ZW0oY29udGV4
dCwgaXRlbSwgTmVnYXRpdmVBbW91bnRBbGxvd2VkOjpZZXMpOworICAgICAgICAgICAgYXV0byBw
YXltZW50SXRlbVJlc3VsdCA9IGNoZWNrQW5kQ2Fub25pY2FsaXplUGF5bWVudEl0ZW0oaXRlbSwg
TmVnYXRpdmVBbW91bnRBbGxvd2VkOjpZZXMpOwogICAgICAgICAgICAgaWYgKHBheW1lbnRJdGVt
UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybiBwYXltZW50SXRl
bVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAgIH0KQEAgLTIzMywxNCArMjI1LDYg
QEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dHVwbGU8U3RyaW5nLCBWZWN0b3I8U3RyaW5nPj4+
IGNoZWNrQW5kQ2Fub25pY2FsaXplRGV0YWkKICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5h
ZGRDb25zb2xlTWVzc2FnZShKU0M6Ok1lc3NhZ2VTb3VyY2U6OlBheW1lbnRSZXF1ZXN0LCBKU0M6
Ok1lc3NhZ2VMZXZlbDo6V2FybmluZywgIldlYktpdCBjdXJyZW50bHkgdXNlcyB0aGUgZmlyc3Qg
c2hpcHBpbmcgb3B0aW9uIGV2ZW4gaWYgb3RoZXIgc2hpcHBpbmcgb3B0aW9ucyBhcmUgbWFya2Vk
IGFzIHNlbGVjdGVkLiJfcyk7CiAgICAgICAgICAgICAgICAgICAgIGRpZExvZyA9IHRydWU7CiAg
ICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKHNoaXBwaW5nT3B0aW9uLmRh
dGEpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBkYXRhUmVzdWx0ID0gY2hlY2tBbmRDYW5v
bmljYWxpemVEYXRhKGNvbnRleHQsIHNoaXBwaW5nT3B0aW9uKTsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKGRhdGFSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZGF0YVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7Ci0KLSAgICAgICAgICAgICAg
ICAgICAgc2hpcHBpbmdPcHRpb24uc2VyaWFsaXplZERhdGEgPSBkYXRhUmVzdWx0LnJlbGVhc2VS
ZXR1cm5WYWx1ZSgpOwotICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAg
fSBlbHNlIGlmIChpc1VwZGF0ZSA9PSBJc1VwZGF0ZTo6Tm8pCiAgICAgICAgICAgICBkZXRhaWxz
LnNoaXBwaW5nT3B0aW9ucyA9IHsgeyB9IH07CkBAIC0yNTgsMTMgKzI0MiwxMyBAQCBzdGF0aWMg
RXhjZXB0aW9uT3I8c3RkOjp0dXBsZTxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+Pj4gY2hlY2tBbmRD
YW5vbmljYWxpemVEZXRhaQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAobW9kaWZp
ZXIudG90YWwpIHsKLSAgICAgICAgICAgICAgICBhdXRvIHRvdGFsUmVzdWx0ID0gY2hlY2tBbmRD
YW5vbmljYWxpemVUb3RhbChjb250ZXh0LCAqbW9kaWZpZXIudG90YWwpOworICAgICAgICAgICAg
ICAgIGF1dG8gdG90YWxSZXN1bHQgPSBjaGVja0FuZENhbm9uaWNhbGl6ZVRvdGFsKCptb2RpZmll
ci50b3RhbCk7CiAgICAgICAgICAgICAgICAgaWYgKHRvdGFsUmVzdWx0Lmhhc0V4Y2VwdGlvbigp
KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG90YWxSZXN1bHQucmVsZWFzZUV4Y2VwdGlv
bigpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBtb2Rp
Zmllci5hZGRpdGlvbmFsRGlzcGxheUl0ZW1zKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBwYXlt
ZW50SXRlbVJlc3VsdCA9IGNoZWNrQW5kQ2Fub25pY2FsaXplUGF5bWVudEl0ZW0oY29udGV4dCwg
aXRlbSwgTmVnYXRpdmVBbW91bnRBbGxvd2VkOjpZZXMpOworICAgICAgICAgICAgICAgIGF1dG8g
cGF5bWVudEl0ZW1SZXN1bHQgPSBjaGVja0FuZENhbm9uaWNhbGl6ZVBheW1lbnRJdGVtKGl0ZW0s
IE5lZ2F0aXZlQW1vdW50QWxsb3dlZDo6WWVzKTsKICAgICAgICAgICAgICAgICBpZiAocGF5bWVu
dEl0ZW1SZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBw
YXltZW50SXRlbVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICB9CkBAIC0y
ODIsMTQgKzI2Niw2IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnR1cGxlPFN0cmluZywgVmVj
dG9yPFN0cmluZz4+PiBjaGVja0FuZENhbm9uaWNhbGl6ZURldGFpCiAgICAgfSBlbHNlIGlmIChp
c1VwZGF0ZSA9PSBJc1VwZGF0ZTo6Tm8pCiAgICAgICAgIGRldGFpbHMubW9kaWZpZXJzID0geyB7
IH0gfTsKIAotICAgIGlmIChkZXRhaWxzLmRhdGEpIHsKLSAgICAgICAgYXV0byBkYXRhUmVzdWx0
ID0gY2hlY2tBbmRDYW5vbmljYWxpemVEYXRhKGNvbnRleHQsIGRldGFpbHMpOwotICAgICAgICBp
ZiAoZGF0YVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgICAgIHJldHVybiBkYXRhUmVz
dWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKLQotICAgICAgICBkZXRhaWxzLnNlcmlhbGl6ZWREYXRh
ID0gZGF0YVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICB9Ci0KICAgICByZXR1cm4g
c3RkOjptYWtlX3R1cGxlKFdURk1vdmUoc2VsZWN0ZWRTaGlwcGluZ09wdGlvbiksIFdURk1vdmUo
c2VyaWFsaXplZE1vZGlmaWVyRGF0YSkpOwogfQogCkBAIC0zNTMsNyArMzI5LDcgQEAgRXhjZXB0
aW9uT3I8UmVmPFBheW1lbnRSZXF1ZXN0Pj4gUGF5bWVudFJlcXVlc3Q6OmNyZWF0ZShEb2N1bWVu
dCYgZG9jdW1lbnQsIFZlY3QKICAgICAgICAgc2VyaWFsaXplZE1ldGhvZERhdGEudW5jaGVja2Vk
QXBwZW5kKHsgV1RGTW92ZSgqaWRlbnRpZmllciksIFdURk1vdmUoc2VyaWFsaXplZERhdGEpIH0p
OwogICAgIH0KIAotICAgIGF1dG8gdG90YWxSZXN1bHQgPSBjaGVja0FuZENhbm9uaWNhbGl6ZVRv
dGFsKGRvY3VtZW50LCBkZXRhaWxzLnRvdGFsKTsKKyAgICBhdXRvIHRvdGFsUmVzdWx0ID0gY2hl
Y2tBbmRDYW5vbmljYWxpemVUb3RhbChkZXRhaWxzLnRvdGFsKTsKICAgICBpZiAodG90YWxSZXN1
bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiB0b3RhbFJlc3VsdC5yZWxlYXNlRXhj
ZXB0aW9uKCk7CiAKQEAgLTY2NCw3ICs2NDAsNyBAQCB2b2lkIFBheW1lbnRSZXF1ZXN0OjpzZXR0
bGVEZXRhaWxzUHJvbWlzZShVcGRhdGVSZWFzb24gcmVhc29uKQogICAgIH0KIAogICAgIGlmIChk
ZXRhaWxzVXBkYXRlLnRvdGFsKSB7Ci0gICAgICAgIGF1dG8gdG90YWxSZXN1bHQgPSBjaGVja0Fu
ZENhbm9uaWNhbGl6ZVRvdGFsKGNvbnRleHQsICpkZXRhaWxzVXBkYXRlLnRvdGFsKTsKKyAgICAg
ICAgYXV0byB0b3RhbFJlc3VsdCA9IGNoZWNrQW5kQ2Fub25pY2FsaXplVG90YWwoKmRldGFpbHNV
cGRhdGUudG90YWwpOwogICAgICAgICBpZiAodG90YWxSZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsK
ICAgICAgICAgICAgIGFib3J0V2l0aEV4Y2VwdGlvbih0b3RhbFJlc3VsdC5yZWxlYXNlRXhjZXB0
aW9uKCkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNjkxLDggKzY2Nyw2IEBAIHZvaWQgUGF5
bWVudFJlcXVlc3Q6OnNldHRsZURldGFpbHNQcm9taXNlKFVwZGF0ZVJlYXNvbiByZWFzb24pCiAg
ICAgICAgIG1fZGV0YWlscy5tb2RpZmllcnMgPSBXVEZNb3ZlKCpkZXRhaWxzVXBkYXRlLm1vZGlm
aWVycyk7CiAgICAgICAgIG1fc2VyaWFsaXplZE1vZGlmaWVyRGF0YSA9IFdURk1vdmUoc3RkOjpn
ZXQ8MT4oc2hpcHBpbmdPcHRpb25BbmRNb2RpZmllckRhdGEpKTsKICAgICB9Ci0gICAgaWYgKCFk
ZXRhaWxzVXBkYXRlLnNlcmlhbGl6ZWREYXRhLmlzRW1wdHkoKSkKLSAgICAgICAgbV9kZXRhaWxz
LnNlcmlhbGl6ZWREYXRhID0gV1RGTW92ZShkZXRhaWxzVXBkYXRlLnNlcmlhbGl6ZWREYXRhKTsK
IAogICAgIGF1dG8gcmVzdWx0ID0gYWN0aXZlUGF5bWVudEhhbmRsZXIoKS0+ZGV0YWlsc1VwZGF0
ZWQocmVhc29uLCBXVEZNb3ZlKGRldGFpbHNVcGRhdGUuZXJyb3IpLCBXVEZNb3ZlKGRldGFpbHNV
cGRhdGUuc2hpcHBpbmdBZGRyZXNzRXJyb3JzKSwgV1RGTW92ZShkZXRhaWxzVXBkYXRlLnBheWVy
RXJyb3JzKSwgZGV0YWlsc1VwZGF0ZS5wYXltZW50TWV0aG9kRXJyb3JzLmdldCgpKTsKICAgICBp
ZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRTaGlwcGluZ09wdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50U2hpcHBpbmdPcHRpb24uaAppbmRl
eCBmOWJjNTY5NDM3NjY4NDU4YTdmYTUwNjY2NzU2MjI1ZTE3MzhmNTY4Li4yZGRkNTFiYTVkYWJm
MjUyNzExNTMwY2JhMGM0N2Q3NDY4M2JjNmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRTaGlwcGluZ09wdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFNoaXBwaW5nT3B0aW9uLmgK
QEAgLTI4LDggKzI4LDYgQEAKICNpZiBFTkFCTEUoUEFZTUVOVF9SRVFVRVNUKQogCiAjaW5jbHVk
ZSAiUGF5bWVudEN1cnJlbmN5QW1vdW50LmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNP
YmplY3QuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmcuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzksMTAgKzM3
LDYgQEAgc3RydWN0IFBheW1lbnRTaGlwcGluZ09wdGlvbiB7CiAgICAgU3RyaW5nIGxhYmVsOwog
ICAgIFBheW1lbnRDdXJyZW5jeUFtb3VudCBhbW91bnQ7CiAgICAgYm9vbCBzZWxlY3RlZCB7IGZh
bHNlIH07Ci0gICAgSlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4gZGF0YTsKLQotICAgIC8vIE5v
dCBmcm9tIHRoZSBJREwuIFNldCBieSBgZGF0YWAgd2hlbiB0aGlzIGlzIHZhbGlkYXRlZCBieSBg
UGF5bWVudFJlcXVlc3RgLgotICAgIFN0cmluZyBzZXJpYWxpemVkRGF0YTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5
bWVudHJlcXVlc3QvUGF5bWVudFNoaXBwaW5nT3B0aW9uLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFNoaXBwaW5nT3B0aW9uLmlkbAppbmRleCA4ZWVj
NmY2MzJhZWU5NTJlMDZlOTUwYmIzNTE2OWM0NzJjNGIzN2MxLi4wZjY4OWI4ZjRmMTRkMzhjMDMz
YTMxZDFmMDhmYTE0YWZjNzFlOTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3BheW1lbnRyZXF1ZXN0L1BheW1lbnRTaGlwcGluZ09wdGlvbi5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50U2hpcHBpbmdPcHRpb24uaWRsCkBA
IC0zMCw1ICszMCw0IEBACiAgICAgcmVxdWlyZWQgRE9NU3RyaW5nIGxhYmVsOwogICAgIHJlcXVp
cmVkIFBheW1lbnRDdXJyZW5jeUFtb3VudCBhbW91bnQ7CiAgICAgYm9vbGVhbiBzZWxlY3RlZCA9
IGZhbHNlOwotICAgIG9iamVjdCBkYXRhOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQppbmRleCAyY2EyNDIwNDE1MTM1NTVkY2IxOGMx
Nzc1NzFjMDc5ZWYwNWJmZDY3Li5lY2YwYmRmM2QwODAzZWQ0MzA5ODdmYTAwMzIxMmVhZTA3Yjhh
YTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3IucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yLnBtCkBAIC0yOTEsNyArMjkxLDcgQEAgc3ViIFByb2Nlc3NEaWN0aW9uYXJpZXMKICAgICAg
ICAgZGllICJNdWx0aXBsZSBkaWN0aW9uYXJpZXMgcGVyIGRvY3VtZW50IGFyZSBvbmx5IHN1cHBv
cnRlZCBpZiBvbmUgbWF0Y2hlcyB0aGUgZmlsZW5hbWUiIHVubGVzcyAkZGljdGlvbmFyeTsKICAg
ICB9CiAKLSAgICBpZiAoJGRpY3Rpb25hcnktPmlzUGFydGlhbCkgeworICAgIGlmICgkZGljdGlv
bmFyeS0+aXNNaXhpbiB8fCAkZGljdGlvbmFyeS0+aXNQYXJ0aWFsKSB7CiAgICAgICAgICRvYmpl
Y3QtPkdlbmVyYXRlRW1wdHlIZWFkZXJBbmRDcHAoJHVzZURvY3VtZW50LCAkY29kZUdlbmVyYXRv
cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zNjMsOSArMzYzLDEwIEBAIHN1YiBJc1Zh
bGlkU3VwcGxlbWVudGFsSW50ZXJmYWNlCiAKIHN1YiBJc1ZhbGlkU3VwcGxlbWVudGFsRGljdGlv
bmFyeQogewotICAgIG15ICgkb2JqZWN0LCAkc3VwcGxlbWVudGFsRGljdGlvbmFyeSwgJHRhcmdl
dERpY3Rpb25hcnkpID0gQF87CisgICAgbXkgKCRvYmplY3QsICRzdXBwbGVtZW50YWxEaWN0aW9u
YXJ5LCAkdGFyZ2V0RGljdGlvbmFyeSwgJGluY2x1ZGVzTWFwKSA9IEBfOwogCiAgICAgcmV0dXJu
IDEgaWYgJHN1cHBsZW1lbnRhbERpY3Rpb25hcnktPmlzUGFydGlhbCAmJiAkc3VwcGxlbWVudGFs
RGljdGlvbmFyeS0+dHlwZS0+bmFtZSBlcSAkdGFyZ2V0RGljdGlvbmFyeS0+dHlwZS0+bmFtZTsK
KyAgICByZXR1cm4gMSBpZiAkc3VwcGxlbWVudGFsRGljdGlvbmFyeS0+aXNNaXhpbiAmJiAkaW5j
bHVkZXNNYXAtPnskc3VwcGxlbWVudGFsRGljdGlvbmFyeS0+dHlwZS0+bmFtZX07CiAgICAgcmV0
dXJuIDA7CiB9CiAKQEAgLTM4Miw3ICszODMsNyBAQCBzdWIgUHJvY2Vzc0ludGVyZmFjZVN1cHBs
ZW1lbnRhbERlcGVuZGVuY2llcwogICAgICMgaXMgYXJ0aWZpY2lhbCBhbmQgd2UgY291bGQgYWRk
IHN1cHBvcnQgZm9yIGluY2x1ZGVzIHN0YXRlbWVudHMgZWxzZXdoZXJlLgogICAgIG15ICVpbmNs
dWRlc01hcCA9ICgpOwogICAgIGZvcmVhY2ggbXkgJGluY2x1ZGUgKEB7JHRhcmdldERvY3VtZW50
LT5pbmNsdWRlc30pIHsKLSAgICAgICAgaWYgKCRpbmNsdWRlLT5pbnRlcmZhY2VJZGVudGlmaWVy
IGVxICR0YXJnZXRJbnRlcmZhY2UtPnR5cGUtPm5hbWUpIHsKKyAgICAgICAgaWYgKCRpbmNsdWRl
LT50YXJnZXRJZGVudGlmaWVyIGVxICR0YXJnZXRJbnRlcmZhY2UtPnR5cGUtPm5hbWUpIHsKICAg
ICAgICAgICAgIHVubGVzcyAoZ3JlcCB7IGZpbGVwYXJzZSgkXywgIi5pZGwiKSBlcSAkaW5jbHVk
ZS0+bWl4aW5JZGVudGlmaWVyIH0gQHskc3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzLT57JHRhcmdl
dEZpbGVOYW1lfX0pIHsKICAgICAgICAgICAgICAgICBkaWUgImluY2x1ZGVkIGludGVyZmFjZSBt
aXhpbiAiIC4gJGluY2x1ZGUtPm1peGluSWRlbnRpZmllciAuICIgbm90IGluIHN1cHBsZW1lbnRh
bCBkZXBlbmRlbmNpZXMuIgogICAgICAgICAgICAgfQpAQCAtNDYyLDYgKzQ2MywyMSBAQCBzdWIg
UHJvY2Vzc0RpY3Rpb25hcnlTdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMKICAgICByZXR1cm4gdW5s
ZXNzICRzdXBwbGVtZW50YWxEZXBlbmRlbmNpZXM7CiAKICAgICBteSAkdGFyZ2V0RmlsZU5hbWUg
PSBmaWxlcGFyc2UoJHRhcmdldERvY3VtZW50LT5maWxlTmFtZSk7CisKKyAgICAjIEZJWE1FOiBD
dXJyZW50bHksIHdlIHJlcXVpcmUgYWxsIHRoZSBpbmNsdWRlcyBzdGF0ZW1lbnRzIHRvIGJlIGlu
IHRoZQorICAgICMgc2FtZSBmaWxlIGFzIHRoZSBkaWN0aW9uYXJ5IHRoZXkgYXJlIGJlaW5nIG1p
eGVkIGludG8sIGJ1dCB0aGF0IHJlc3RyaWN0aW9uCisgICAgIyBpcyBhcnRpZmljaWFsIGFuZCB3
ZSBjb3VsZCBhZGQgc3VwcG9ydCBmb3IgaW5jbHVkZXMgc3RhdGVtZW50cyBlbHNld2hlcmUuCisg
ICAgbXkgJWluY2x1ZGVzTWFwID0gKCk7CisgICAgZm9yZWFjaCBteSAkaW5jbHVkZSAoQHskdGFy
Z2V0RG9jdW1lbnQtPmluY2x1ZGVzfSkgeworICAgICAgICBpZiAoJGluY2x1ZGUtPnRhcmdldElk
ZW50aWZpZXIgZXEgJHRhcmdldERpY3Rpb25hcnktPnR5cGUtPm5hbWUpIHsKKyAgICAgICAgICAg
IHVubGVzcyAoZ3JlcCB7IGZpbGVwYXJzZSgkXywgIi5pZGwiKSBlcSAkaW5jbHVkZS0+bWl4aW5J
ZGVudGlmaWVyIH0gQHskc3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzLT57JHRhcmdldEZpbGVOYW1l
fX0pIHsKKyAgICAgICAgICAgICAgICBkaWUgImluY2x1ZGVkIGRpY3Rpb25hcnkgbWl4aW4gIiAu
ICRpbmNsdWRlLT5taXhpbklkZW50aWZpZXIgLiAiIG5vdCBpbiBzdXBwbGVtZW50YWwgZGVwZW5k
ZW5jaWVzLiIKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgJGluY2x1ZGVzTWFweyRpbmNs
dWRlLT5taXhpbklkZW50aWZpZXJ9ID0gJGluY2x1ZGU7CisgICAgICAgIH0KKyAgICB9CisKICAg
ICBmb3JlYWNoIG15ICRpZGxGaWxlIChAeyRzdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMtPnskdGFy
Z2V0RmlsZU5hbWV9fSkgewogICAgICAgICBuZXh0IGlmIGZpbGVwYXJzZSgkaWRsRmlsZSkgZXEg
JHRhcmdldEZpbGVOYW1lOwogCkBAIC00NzAsMTEgKzQ4NiwyMiBAQCBzdWIgUHJvY2Vzc0RpY3Rp
b25hcnlTdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMKICAgICAgICAgbXkgJGRvY3VtZW50ID0gJHBh
cnNlci0+UGFyc2UoJGlkbEZpbGUsICRkZWZpbmVzLCAkcHJlcHJvY2Vzc29yLCAkaWRsQXR0cmli
dXRlcyk7CiAKICAgICAgICAgZm9yZWFjaCBteSAkZGljdGlvbmFyeSAoQHskZG9jdW1lbnQtPmRp
Y3Rpb25hcmllc30pIHsKLSAgICAgICAgICAgIG5leHQgdW5sZXNzICRvYmplY3QtPklzVmFsaWRT
dXBwbGVtZW50YWxEaWN0aW9uYXJ5KCRkaWN0aW9uYXJ5LCAkdGFyZ2V0RGljdGlvbmFyeSk7Cisg
ICAgICAgICAgICBuZXh0IHVubGVzcyAkb2JqZWN0LT5Jc1ZhbGlkU3VwcGxlbWVudGFsRGljdGlv
bmFyeSgkZGljdGlvbmFyeSwgJHRhcmdldERpY3Rpb25hcnksIFwlaW5jbHVkZXNNYXApOworCisg
ICAgICAgICAgICBpZiAoJGRpY3Rpb25hcnktPmlzTWl4aW4gJiYgISRkaWN0aW9uYXJ5LT5pc1Bh
cnRpYWwpIHsKKyAgICAgICAgICAgICAgICAjIFJlY3Vyc2l2ZWx5IHByb2Nlc3MgYW55IHN1cHBs
ZW1lbnRhbCBkZXBlbmRlbmNpZXMgZm9yIGVhY2ggdmFsaWQgbWl4aW4uIFRoaXMKKyAgICAgICAg
ICAgICAgICAjIGFsbG93cyBwYXJ0aWFsIGRpY3Rpb25hcnkgbWl4aW5zIHRvIGJlIG1lcmdlZCBp
bnRvIHRoZSBtaXhpbi4KKyAgICAgICAgICAgICAgICAkb2JqZWN0LT5Qcm9jZXNzRGljdGlvbmFy
eVN1cHBsZW1lbnRhbERlcGVuZGVuY2llcygkZGljdGlvbmFyeSwgJGRvY3VtZW50KTsKKyAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgIyBTdXBwb3J0IGZvciBtZW1iZXJzIG9mIHBhcnRpYWwg
ZGljdGlvbmFyaWVzLgogICAgICAgICAgICAgZm9yZWFjaCBteSAkbWVtYmVyIChAeyRkaWN0aW9u
YXJ5LT5tZW1iZXJzfSkgewotICAgICAgICAgICAgICAgIG5leHQgdW5sZXNzIHNob3VsZFByb3Bl
cnR5QmVFeHBvc2VkKCRtZW1iZXIsICR0YXJnZXREaWN0aW9uYXJ5KTsKKyAgICAgICAgICAgICAg
ICBuZXh0IHVubGVzcyAkdGFyZ2V0RGljdGlvbmFyeS0+aXNNaXhpbiB8fCBzaG91bGRQcm9wZXJ0
eUJlRXhwb3NlZCgkbWVtYmVyLCAkdGFyZ2V0RGljdGlvbmFyeSk7CisKKyAgICAgICAgICAgICAg
ICBpZiAoJGRpY3Rpb25hcnktPmlzTWl4aW4gJiYgISRkaWN0aW9uYXJ5LT5pc1BhcnRpYWwpIHsK
KyAgICAgICAgICAgICAgICAgICAgIyBBZGQgaW5jbHVkZXMgc3RhdGVtZW50IHNwZWNpZmljIGV4
dGVuZGVkIGF0dHJpYnV0ZXMgdG8gZWFjaCBvcGVyYXRpb24uCisgICAgICAgICAgICAgICAgICAg
ICRvYmplY3QtPk1lcmdlRXh0ZW5kZWRBdHRyaWJ1dGVzRnJvbVN1cHBsZW1lbnRhbCgkaW5jbHVk
ZXNNYXB7JGRpY3Rpb25hcnktPnR5cGUtPm5hbWV9LT5leHRlbmRlZEF0dHJpYnV0ZXMsICRtZW1i
ZXIsICJkaWN0aW9uYXJ5LW1lbWJlciIpOworICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgICAgICMgQWRkIGludGVyZmFjZS13aWRlIGV4dGVuZGVkIGF0dHJpYnV0ZXMgdG8gZWFjaCBt
ZW1iZXIuCiAgICAgICAgICAgICAgICAgJG9iamVjdC0+TWVyZ2VFeHRlbmRlZEF0dHJpYnV0ZXNG
cm9tU3VwcGxlbWVudGFsKCRkaWN0aW9uYXJ5LT5leHRlbmRlZEF0dHJpYnV0ZXMsICRtZW1iZXIs
ICJkaWN0aW9uYXJ5LW1lbWJlciIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9JRExQYXJzZXIucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0lETFBhcnNlci5wbQppbmRleCBjNDAxNzRmMWUxZDExZWU4NzZlNGVkNzI2NTQ0MWM2Mjg1OWYz
M2Y4Li40OTM3NzRiNTNkNDU1OTBhMjU5ODI1ZTlmZDc5MThkYjZlMDczZDYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQpAQCAtMTcyLDYgKzE3Miw3
IEBAIHN0cnVjdCggSURMRGljdGlvbmFyeSA9PiB7CiAgICAgdHlwZSA9PiAnSURMVHlwZScsCiAg
ICAgcGFyZW50VHlwZSA9PiAnSURMVHlwZScsCiAgICAgbWVtYmVycyA9PiAnQCcsICMgTGlzdCBv
ZiAnSURMRGljdGlvbmFyeU1lbWJlcicKKyAgICBpc01peGluID0+ICckJywgIyBVc2VkIGZvciBt
aXhpbiBpbnRlcmZhY2VzCiAgICAgaXNQYXJ0aWFsID0+ICckJywgIyBVc2VkIGZvciBwYXJ0aWFs
IGRpY3Rpb25hcmllcwogICAgIGV4dGVuZGVkQXR0cmlidXRlcyA9PiAnJScsCiB9KTsKQEAgLTE5
NCw3ICsxOTUsNyBAQCBzdHJ1Y3QoIElETE5hbWVzcGFjZSA9PiB7CiAKICMgaHR0cHM6Ly9oZXlj
YW0uZ2l0aHViLmlvL3dlYmlkbC8jaW5jbHVkZXMtc3RhdGVtZW50CiBzdHJ1Y3QoIElETEluY2x1
ZGVzU3RhdGVtZW50ID0+IHsKLSAgICBpbnRlcmZhY2VJZGVudGlmaWVyID0+ICckJywKKyAgICB0
YXJnZXRJZGVudGlmaWVyID0+ICckJywKICAgICBtaXhpbklkZW50aWZpZXIgPT4gJyQnLAogICAg
IGV4dGVuZGVkQXR0cmlidXRlcyA9PiAnJScsCiB9KTsKQEAgLTc0Nyw3ICs3NDgsNyBAQCBzdWIg
cGFyc2VEZWZpbml0aW9uCiAKICAgICBteSAkbmV4dCA9ICRzZWxmLT5uZXh0VG9rZW4oKTsKICAg
ICBpZiAoJG5leHQtPnZhbHVlKCkgPX4gLyRuZXh0Q2FsbGJhY2tPckludGVyZmFjZS8pIHsKLSAg
ICAgICAgcmV0dXJuICRzZWxmLT5wYXJzZUNhbGxiYWNrT3JJbnRlcmZhY2VPck1peGluKCRleHRl
bmRlZEF0dHJpYnV0ZUxpc3QpOworICAgICAgICByZXR1cm4gJHNlbGYtPnBhcnNlQ2FsbGJhY2tP
ckludGVyZmFjZU9ySW50ZXJmYWNlTWl4aW4oJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7CiAgICAg
fQogICAgIGlmICgkbmV4dC0+dmFsdWUoKSBlcSAibmFtZXNwYWNlIikgewogICAgICAgICByZXR1
cm4gJHNlbGYtPnBhcnNlTmFtZXNwYWNlKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwpAQCAtNzU2
LDcgKzc1Nyw3IEBAIHN1YiBwYXJzZURlZmluaXRpb24KICAgICAgICAgcmV0dXJuICRzZWxmLT5w
YXJzZVBhcnRpYWwoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7CiAgICAgfQogICAgIGlmICgkbmV4
dC0+dmFsdWUoKSBlcSAiZGljdGlvbmFyeSIpIHsKLSAgICAgICAgcmV0dXJuICRzZWxmLT5wYXJz
ZURpY3Rpb25hcnkoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7CisgICAgICAgIHJldHVybiAkc2Vs
Zi0+cGFyc2VEaWN0aW9uYXJ5T3JEaWN0aW9uYXJ5TWl4aW4oJGV4dGVuZGVkQXR0cmlidXRlTGlz
dCk7CiAgICAgfQogICAgIGlmICgkbmV4dC0+dmFsdWUoKSBlcSAiZW51bSIpIHsKICAgICAgICAg
cmV0dXJuICRzZWxmLT5wYXJzZUVudW0oJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7CkBAIC03NzAs
NyArNzcxLDcgQEAgc3ViIHBhcnNlRGVmaW5pdGlvbgogICAgICRzZWxmLT5hc3NlcnRVbmV4cGVj
dGVkVG9rZW4oJG5leHQtPnZhbHVlKCksIF9fTElORV9fKTsKIH0KIAotc3ViIHBhcnNlQ2FsbGJh
Y2tPckludGVyZmFjZU9yTWl4aW4KK3N1YiBwYXJzZUNhbGxiYWNrT3JJbnRlcmZhY2VPckludGVy
ZmFjZU1peGluCiB7CiAgICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgICBteSAkZXh0ZW5kZWRBdHRy
aWJ1dGVMaXN0ID0gc2hpZnQ7CkBAIC03ODIsNyArNzgzLDcgQEAgc3ViIHBhcnNlQ2FsbGJhY2tP
ckludGVyZmFjZU9yTWl4aW4KICAgICB9CiAgICAgaWYgKCRuZXh0LT52YWx1ZSgpIGVxICJpbnRl
cmZhY2UiKSB7CiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tl
bigpLCAiaW50ZXJmYWNlIiwgX19MSU5FX18pOwotICAgICAgICByZXR1cm4gJHNlbGYtPnBhcnNl
SW50ZXJmYWNlT3JNaXhpbigkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKKyAgICAgICAgcmV0dXJu
ICRzZWxmLT5wYXJzZUludGVyZmFjZU9ySW50ZXJmYWNlTWl4aW4oJGV4dGVuZGVkQXR0cmlidXRl
TGlzdCk7CiAgICAgfQogICAgICRzZWxmLT5hc3NlcnRVbmV4cGVjdGVkVG9rZW4oJG5leHQtPnZh
bHVlKCksIF9fTElORV9fKTsKIH0KQEAgLTgwMywxNCArODA0LDE0IEBAIHN1YiBwYXJzZUNhbGxi
YWNrUmVzdE9ySW50ZXJmYWNlCiAgICAgJHNlbGYtPmFzc2VydFVuZXhwZWN0ZWRUb2tlbigkbmV4
dC0+dmFsdWUoKSwgX19MSU5FX18pOwogfQogCi1zdWIgcGFyc2VJbnRlcmZhY2VPck1peGluCitz
dWIgcGFyc2VJbnRlcmZhY2VPckludGVyZmFjZU1peGluCiB7CiAgICAgbXkgJHNlbGYgPSBzaGlm
dDsKICAgICBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0ID0gc2hpZnQ7CiAKICAgICBteSAkbmV4
dCA9ICRzZWxmLT5uZXh0VG9rZW4oKTsKICAgICBpZiAoJG5leHQtPnZhbHVlKCkgZXEgIm1peGlu
IikgewotICAgICAgICByZXR1cm4gJHNlbGYtPnBhcnNlTWl4aW4oJGV4dGVuZGVkQXR0cmlidXRl
TGlzdCk7CisgICAgICAgIHJldHVybiAkc2VsZi0+cGFyc2VJbnRlcmZhY2VNaXhpbigkZXh0ZW5k
ZWRBdHRyaWJ1dGVMaXN0KTsKICAgICB9CiAgICAgaWYgKCRuZXh0LT50eXBlKCkgPT0gSWRlbnRp
ZmllclRva2VuKSB7CiAgICAgICAgIHJldHVybiAkc2VsZi0+cGFyc2VJbnRlcmZhY2UoJGV4dGVu
ZGVkQXR0cmlidXRlTGlzdCk7CkBAIC05MjIsNyArOTIzLDcgQEAgc3ViIHBhcnNlQ2FsbGJhY2tJ
bnRlcmZhY2VNZW1iZXIKICAgICAkc2VsZi0+YXNzZXJ0VW5leHBlY3RlZFRva2VuKCRuZXh0LT52
YWx1ZSgpLCBfX0xJTkVfXyk7CiB9CiAKLXN1YiBwYXJzZU1peGluCitzdWIgcGFyc2VJbnRlcmZh
Y2VNaXhpbgogewogICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICAgbXkgJGV4dGVuZGVkQXR0cmli
dXRlTGlzdCA9IHNoaWZ0OwpAQCAtOTQxLDcgKzk0Miw3IEBAIHN1YiBwYXJzZU1peGluCiAgICAg
ICAgICRpbnRlcmZhY2VNaXhpbi0+dHlwZShtYWtlU2ltcGxlVHlwZSgkbmFtZSkpOwogCiAgICAg
ICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAieyIsIF9fTElO
RV9fKTsKLSAgICAgICAgbXkgJGludGVyZmFjZU1peGluTWVtYmVycyA9ICRzZWxmLT5wYXJzZU1p
eGluTWVtYmVycygpOworICAgICAgICBteSAkaW50ZXJmYWNlTWl4aW5NZW1iZXJzID0gJHNlbGYt
PnBhcnNlSW50ZXJmYWNlTWl4aW5NZW1iZXJzKCk7CiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tl
blZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAifSIsIF9fTElORV9fKTsKICAgICAgICAgJHNlbGYt
PmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCksICI7IiwgX19MSU5FX18pOwogICAg
ICAgICBhcHBseU1lbWJlckxpc3QoJGludGVyZmFjZU1peGluLCAkaW50ZXJmYWNlTWl4aW5NZW1i
ZXJzKTsKQEAgLTk1NCw3ICs5NTUsNyBAQCBzdWIgcGFyc2VNaXhpbgogICAgICRzZWxmLT5hc3Nl
cnRVbmV4cGVjdGVkVG9rZW4oJG5leHQtPnZhbHVlKCksIF9fTElORV9fKTsKIH0KIAotc3ViIHBh
cnNlTWl4aW5NZW1iZXJzCitzdWIgcGFyc2VJbnRlcmZhY2VNaXhpbk1lbWJlcnMKIHsKICAgICBt
eSAkc2VsZiA9IHNoaWZ0OwogICAgIG15IEBtaXhpbk1lbWJlcnMgPSAoKTsKQEAgLTk2NSw3ICs5
NjYsNyBAQCBzdWIgcGFyc2VNaXhpbk1lbWJlcnMKICAgICAgICAgbXkgJG1peGluTWVtYmVyOwog
CiAgICAgICAgIGlmICgkbmV4dC0+dHlwZSgpID09IElkZW50aWZpZXJUb2tlbiB8fCAkbmV4dC0+
dmFsdWUoKSA9fiAvJG5leHRNaXhpbk1lbWJlcnNfMS8pIHsKLSAgICAgICAgICAgICRtaXhpbk1l
bWJlciA9ICRzZWxmLT5wYXJzZU1peGluTWVtYmVyKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwor
ICAgICAgICAgICAgJG1peGluTWVtYmVyID0gJHNlbGYtPnBhcnNlSW50ZXJmYWNlTWl4aW5NZW1i
ZXIoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBsYXN0OwogICAgICAgICB9CkBAIC05NzYsNyArOTc3LDcgQEAgc3ViIHBhcnNlTWl4aW5NZW1i
ZXJzCiAgICAgcmV0dXJuIFxAbWl4aW5NZW1iZXJzOwogfQogCi1zdWIgcGFyc2VNaXhpbk1lbWJl
cgorc3ViIHBhcnNlSW50ZXJmYWNlTWl4aW5NZW1iZXIKIHsKICAgICBteSAkc2VsZiA9IHNoaWZ0
OwogICAgIG15ICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QgPSBzaGlmdDsKQEAgLTExMDYsMTEgKzEx
MDcsMTAgQEAgc3ViIHBhcnNlUGFydGlhbERlZmluaXRpb24KICAgICBteSAkbmV4dCA9ICRzZWxm
LT5uZXh0VG9rZW4oKTsKICAgICBpZiAoJG5leHQtPnZhbHVlKCkgZXEgImludGVyZmFjZSIpIHsK
ICAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCksICJpbnRl
cmZhY2UiLCBfX0xJTkVfXyk7Ci0gICAgICAgIHJldHVybiAkc2VsZi0+cGFyc2VQYXJ0aWFsSW50
ZXJmYWNlT3JQYXJ0aWFsTWl4aW4oJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7CisgICAgICAgIHJl
dHVybiAkc2VsZi0+cGFyc2VQYXJ0aWFsSW50ZXJmYWNlT3JQYXJ0aWFsSW50ZXJmYWNlTWl4aW4o
JGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7CiAgICAgfQogICAgIGlmICgkbmV4dC0+dmFsdWUoKSBl
cSAiZGljdGlvbmFyeSIpIHsKLSAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYt
PmdldFRva2VuKCksICJkaWN0aW9uYXJ5IiwgX19MSU5FX18pOwotICAgICAgICByZXR1cm4gJHNl
bGYtPnBhcnNlUGFydGlhbERpY3Rpb25hcnkoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7CisgICAg
ICAgIHJldHVybiAkc2VsZi0+cGFyc2VQYXJ0aWFsRGljdGlvbmFyeU9yUGFydGlhbERpY3Rpb25h
cnlNaXhpbigkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKICAgICB9CiAgICAgaWYgKCRuZXh0LT52
YWx1ZSgpIGVxICJuYW1lc3BhY2UiKSB7CiAgICAgICAgIG15ICRuYW1lc3BhY2UgPSAkc2VsZi0+
cGFyc2VOYW1lc3BhY2UoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7CkBAIC0xMTIwLDE0ICsxMTIw
LDE0IEBAIHN1YiBwYXJzZVBhcnRpYWxEZWZpbml0aW9uCiAgICAgJHNlbGYtPmFzc2VydFVuZXhw
ZWN0ZWRUb2tlbigkbmV4dC0+dmFsdWUoKSwgX19MSU5FX18pOwogfQogCi1zdWIgcGFyc2VQYXJ0
aWFsSW50ZXJmYWNlT3JQYXJ0aWFsTWl4aW4KK3N1YiBwYXJzZVBhcnRpYWxJbnRlcmZhY2VPclBh
cnRpYWxJbnRlcmZhY2VNaXhpbgogewogICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICAgbXkgJGV4
dGVuZGVkQXR0cmlidXRlTGlzdCA9IHNoaWZ0OwogCiAgICAgbXkgJG5leHQgPSAkc2VsZi0+bmV4
dFRva2VuKCk7CiAgICAgaWYgKCRuZXh0LT52YWx1ZSgpIGVxICJtaXhpbiIpIHsKLSAgICAgICAg
bXkgJG1peGluID0gJHNlbGYtPnBhcnNlTWl4aW4oJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7Cisg
ICAgICAgIG15ICRtaXhpbiA9ICRzZWxmLT5wYXJzZUludGVyZmFjZU1peGluKCRleHRlbmRlZEF0
dHJpYnV0ZUxpc3QpOwogICAgICAgICAkbWl4aW4tPmlzUGFydGlhbCgxKTsKICAgICAgICAgcmV0
dXJuICRtaXhpbjsKICAgICB9CkBAIC0xMjcxLDYgKzEyNzEsMjUgQEAgc3ViIHBhcnNlSW50ZXJm
YWNlTWVtYmVyCiAgICAgJHNlbGYtPmFzc2VydFVuZXhwZWN0ZWRUb2tlbigkbmV4dC0+dmFsdWUo
KSwgX19MSU5FX18pOwogfQogCitzdWIgcGFyc2VQYXJ0aWFsRGljdGlvbmFyeU9yUGFydGlhbERp
Y3Rpb25hcnlNaXhpbgoreworICAgIG15ICRzZWxmID0gc2hpZnQ7CisgICAgbXkgJGV4dGVuZGVk
QXR0cmlidXRlTGlzdCA9IHNoaWZ0OworCisgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNl
bGYtPmdldFRva2VuKCksICJkaWN0aW9uYXJ5IiwgX19MSU5FX18pOworCisgICAgbXkgJG5leHQg
PSAkc2VsZi0+bmV4dFRva2VuKCk7CisgICAgaWYgKCRuZXh0LT52YWx1ZSgpIGVxICJtaXhpbiIp
IHsKKyAgICAgICAgbXkgJG1peGluID0gJHNlbGYtPnBhcnNlRGljdGlvbmFyeU1peGluKCRleHRl
bmRlZEF0dHJpYnV0ZUxpc3QpOworICAgICAgICAkbWl4aW4tPmlzUGFydGlhbCgxKTsKKyAgICAg
ICAgcmV0dXJuICRtaXhpbjsKKyAgICB9CisgICAgaWYgKCRuZXh0LT50eXBlKCkgPT0gSWRlbnRp
ZmllclRva2VuKSB7CisgICAgICAgIHJldHVybiAkc2VsZi0+cGFyc2VQYXJ0aWFsRGljdGlvbmFy
eSgkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKKyAgICB9CisgICAgJHNlbGYtPmFzc2VydFVuZXhw
ZWN0ZWRUb2tlbigkbmV4dC0+dmFsdWUoKSwgX19MSU5FX18pOworfQorCiBzdWIgcGFyc2VQYXJ0
aWFsRGljdGlvbmFyeQogewogICAgIG15ICRzZWxmID0gc2hpZnQ7CkBAIC0xMjk5LDE1ICsxMzE4
LDYxIEBAIHN1YiBwYXJzZVBhcnRpYWxEaWN0aW9uYXJ5CiAgICAgJHNlbGYtPmFzc2VydFVuZXhw
ZWN0ZWRUb2tlbigkbmV4dC0+dmFsdWUoKSwgX19MSU5FX18pOwogfQogCitzdWIgcGFyc2VEaWN0
aW9uYXJ5T3JEaWN0aW9uYXJ5TWl4aW4KK3sKKyAgICBteSAkc2VsZiA9IHNoaWZ0OworICAgIG15
ICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QgPSBzaGlmdDsKKworICAgICRzZWxmLT5hc3NlcnRUb2tl
blZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAiZGljdGlvbmFyeSIsIF9fTElORV9fKTsKKworICAg
IG15ICRuZXh0ID0gJHNlbGYtPm5leHRUb2tlbigpOworICAgIGlmICgkbmV4dC0+dmFsdWUoKSBl
cSAibWl4aW4iKSB7CisgICAgICAgIHJldHVybiAkc2VsZi0+cGFyc2VEaWN0aW9uYXJ5TWl4aW4o
JGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7CisgICAgfQorICAgIGlmICgkbmV4dC0+dHlwZSgpID09
IElkZW50aWZpZXJUb2tlbikgeworICAgICAgICByZXR1cm4gJHNlbGYtPnBhcnNlRGljdGlvbmFy
eSgkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKKyAgICB9CisgICAgJHNlbGYtPmFzc2VydFVuZXhw
ZWN0ZWRUb2tlbigkbmV4dC0+dmFsdWUoKSwgX19MSU5FX18pOworfQorCitzdWIgcGFyc2VEaWN0
aW9uYXJ5TWl4aW4KK3sKKyAgICBteSAkc2VsZiA9IHNoaWZ0OworICAgIG15ICRleHRlbmRlZEF0
dHJpYnV0ZUxpc3QgPSBzaGlmdDsKKworICAgIG15ICRuZXh0ID0gJHNlbGYtPm5leHRUb2tlbigp
OworICAgIGlmICgkbmV4dC0+dmFsdWUoKSBlcSAibWl4aW4iKSB7CisgICAgICAgICRzZWxmLT5h
c3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAibWl4aW4iLCBfX0xJTkVfXyk7CisK
KyAgICAgICAgbXkgJGRpY3Rpb25hcnkgPSBJRExEaWN0aW9uYXJ5LT5uZXcoKTsKKyAgICAgICAg
JGRpY3Rpb25hcnktPmlzTWl4aW4oMSk7CisKKyAgICAgICAgJHNlbGYtPmFzc2VydEV4dGVuZGVk
QXR0cmlidXRlc1ZhbGlkRm9yQ29udGV4dCgkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LCAiZGljdGlv
bmFyeSIpOworICAgICAgICAkZGljdGlvbmFyeS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRl
ZEF0dHJpYnV0ZUxpc3QpOworCisgICAgICAgIG15ICRuYW1lVG9rZW4gPSAkc2VsZi0+Z2V0VG9r
ZW4oKTsKKyAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVHlwZSgkbmFtZVRva2VuLCBJZGVudGlm
aWVyVG9rZW4pOworCisgICAgICAgIG15ICRuYW1lID0gJG5hbWVUb2tlbi0+dmFsdWUoKTsKKyAg
ICAgICAgJGRpY3Rpb25hcnktPnR5cGUobWFrZVNpbXBsZVR5cGUoJG5hbWUpKTsKKworICAgICAg
ICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgInsiLCBfX0xJTkVf
Xyk7CisgICAgICAgICRkaWN0aW9uYXJ5LT5tZW1iZXJzKCRzZWxmLT5wYXJzZURpY3Rpb25hcnlN
ZW1iZXJzKCkpOworICAgICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0VG9r
ZW4oKSwgIn0iLCBfX0xJTkVfXyk7CisgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRz
ZWxmLT5nZXRUb2tlbigpLCAiOyIsIF9fTElORV9fKTsKKworICAgICAgICByZXR1cm4gJGRpY3Rp
b25hcnk7CisgICAgfQorICAgICRzZWxmLT5hc3NlcnRVbmV4cGVjdGVkVG9rZW4oJG5leHQtPnZh
bHVlKCksIF9fTElORV9fKTsKK30KKwogc3ViIHBhcnNlRGljdGlvbmFyeQogewogICAgIG15ICRz
ZWxmID0gc2hpZnQ7CiAgICAgbXkgJGV4dGVuZGVkQXR0cmlidXRlTGlzdCA9IHNoaWZ0OwogCiAg
ICAgbXkgJG5leHQgPSAkc2VsZi0+bmV4dFRva2VuKCk7Ci0gICAgaWYgKCRuZXh0LT52YWx1ZSgp
IGVxICJkaWN0aW9uYXJ5IikgewotICAgICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1ZSgkc2Vs
Zi0+Z2V0VG9rZW4oKSwgImRpY3Rpb25hcnkiLCBfX0xJTkVfXyk7Ci0KKyAgICBpZiAoJG5leHQt
PnR5cGUoKSA9PSBJZGVudGlmaWVyVG9rZW4pIHsKICAgICAgICAgbXkgJGRpY3Rpb25hcnkgPSBJ
RExEaWN0aW9uYXJ5LT5uZXcoKTsKIAogICAgICAgICAkc2VsZi0+YXNzZXJ0RXh0ZW5kZWRBdHRy
aWJ1dGVzVmFsaWRGb3JDb250ZXh0KCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QsICJkaWN0aW9uYXJ5
Iik7CkBAIC0xNTYyLDggKzE2MjcsOCBAQCBzdWIgcGFyc2VJbmNsdWRlc1N0YXRlbWVudAogICAg
IGlmICgkbmV4dC0+dHlwZSgpID09IElkZW50aWZpZXJUb2tlbikgewogICAgICAgICBteSAkaW5j
bHVkZXNTdGF0ZW1lbnQgPSBJRExJbmNsdWRlc1N0YXRlbWVudC0+bmV3KCk7CiAgICAgCi0gICAg
ICAgIG15ICRpbnRlcmZhY2VJZGVudGlmaWVyID0gJHNlbGYtPnBhcnNlTmFtZSgpOwotICAgICAg
ICAkaW5jbHVkZXNTdGF0ZW1lbnQtPmludGVyZmFjZUlkZW50aWZpZXIoJGludGVyZmFjZUlkZW50
aWZpZXIpOworICAgICAgICBteSAkdGFyZ2V0SWRlbnRpZmllciA9ICRzZWxmLT5wYXJzZU5hbWUo
KTsKKyAgICAgICAgJGluY2x1ZGVzU3RhdGVtZW50LT50YXJnZXRJZGVudGlmaWVyKCR0YXJnZXRJ
ZGVudGlmaWVyKTsKIAogICAgICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0
VG9rZW4oKSwgImluY2x1ZGVzIiwgX19MSU5FX18pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsCmluZGV4IGQwMzNlZDYwNjE3ZGE0
MzJhNTM0MTExNTRkMTJkMDY1ZDQ4MDg0YTcuLjdkYTFmMGY4NTZjOTRmNzNmNmY4ZjQyOGY4ZGY1
NjMxYTI1MWQzMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
cHJlcHJvY2Vzcy1pZGxzLnBsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
cHJlcHJvY2Vzcy1pZGxzLnBsCkBAIC0xODgsMTYgKzE4OCwxMiBAQCBmb3JlYWNoIG15ICRpZGxG
aWxlTmFtZSAoc29ydCBrZXlzICVpZGxGaWxlTmFtZUhhc2gpIHsKICAgICAgICAgJGRpY3Rpb25h
cnlEZXBlbmRlbmNpZXN7JGlkbEZpbGUtPnByaW1hcnlEZWNsYXJhdGlvbk5hbWV9ID0gKGpvaW4o
Ii5pZGwgIiwgQHskYmFzZURpY3Rpb25hcmllc30pIC4gIi5pZGwiKTsKICAgICB9CiAKLSAgICAj
IFNraXAgaWYgdGhlIElETCBmaWxlIGRvZXMgbm90IGNvbnRhaW4gYW4gaW50ZXJmYWNlIG9yIGEg
Y2FsbGJhY2sgaW50ZXJmYWNlLgotICAgICMgVGhlIElETCBtYXkgY29udGFpbiBhIGRpY3Rpb25h
cnkuCi0gICAgbmV4dCB1bmxlc3MgY29udGFpbnNJbnRlcmZhY2VPckNhbGxiYWNrSW50ZXJmYWNl
RnJvbUlETCgkaWRsRmlsZSk7Ci0KICAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICRpZGxGaWxlLT5w
cmltYXJ5RGVjbGFyYXRpb25OYW1lOwogICAgICMgSGFuZGxlIGluY2x1ZGUgc3RhdGVtZW50cy4K
LSAgICBteSAkaW5jbHVkZWRJbnRlcmZhY2VzID0gZ2V0SW5jbHVkZWRJbnRlcmZhY2VzRnJvbUlE
TCgkaWRsRmlsZSwgJGludGVyZmFjZU5hbWUpOwotICAgIGZvcmVhY2ggbXkgJGluY2x1ZGVkSW50
ZXJmYWNlIChAeyRpbmNsdWRlZEludGVyZmFjZXN9KSB7Ci0gICAgICAgIG15ICRpbmNsdWRlZElk
bEZpbGVQYXRoID0gJGludGVyZmFjZU5hbWVUb0lkbEZpbGVQYXRoeyRpbmNsdWRlZEludGVyZmFj
ZX07Ci0gICAgICAgIGRpZSAiQ291bGQgbm90IGZpbmQgYSB0aGUgSURMIGZpbGUgd2hlcmUgdGhl
IGZvbGxvd2luZyBpbmNsdWRlZCBpbnRlcmZhY2UgaXMgZGVmaW5lZDogJGluY2x1ZGVkSW50ZXJm
YWNlIiB1bmxlc3MgJGluY2x1ZGVkSWRsRmlsZVBhdGg7CisgICAgbXkgJGluY2x1ZGVzID0gZ2V0
SW5jbHVkZXNGcm9tSURMKCRpZGxGaWxlLCAkaW50ZXJmYWNlTmFtZSk7CisgICAgZm9yZWFjaCBt
eSAkaW5jbHVkZSAoQHskaW5jbHVkZXN9KSB7CisgICAgICAgIG15ICRpbmNsdWRlZElkbEZpbGVQ
YXRoID0gJGludGVyZmFjZU5hbWVUb0lkbEZpbGVQYXRoeyRpbmNsdWRlfTsKKyAgICAgICAgZGll
ICJDb3VsZCBub3QgZmluZCBhIHRoZSBJREwgZmlsZSB3aGVyZSB0aGUgZm9sbG93aW5nIGluY2x1
ZGVkIGludGVyZmFjZSBpcyBkZWZpbmVkOiAkaW5jbHVkZSIgdW5sZXNzICRpbmNsdWRlZElkbEZp
bGVQYXRoOwogICAgICAgICBpZiAoJHN1cHBsZW1lbnRhbERlcGVuZGVuY2llc3skaW5jbHVkZWRJ
ZGxGaWxlUGF0aH0pIHsKICAgICAgICAgICAgIHB1c2goQHskc3VwcGxlbWVudGFsRGVwZW5kZW5j
aWVzeyRpbmNsdWRlZElkbEZpbGVQYXRofX0sICRpbnRlcmZhY2VOYW1lKTsKICAgICAgICAgfSBl
bHNlIHsKQEAgLTIwNSw2ICsyMDEsMTAgQEAgZm9yZWFjaCBteSAkaWRsRmlsZU5hbWUgKHNvcnQg
a2V5cyAlaWRsRmlsZU5hbWVIYXNoKSB7CiAgICAgICAgIH0KICAgICB9CiAKKyAgICAjIFNraXAg
aWYgdGhlIElETCBmaWxlIGRvZXMgbm90IGNvbnRhaW4gYW4gaW50ZXJmYWNlIG9yIGEgY2FsbGJh
Y2sgaW50ZXJmYWNlLgorICAgICMgVGhlIElETCBtYXkgY29udGFpbiBhIGRpY3Rpb25hcnkuCisg
ICAgbmV4dCB1bmxlc3MgY29udGFpbnNJbnRlcmZhY2VPckNhbGxiYWNrSW50ZXJmYWNlRnJvbUlE
TCgkaWRsRmlsZSk7CisKICAgICBuZXh0IGlmIGlzTWl4aW5JbnRlcmZhY2VGcm9tSURMKCRpZGxG
aWxlKTsKIAogICAgIG15ICRpc0NhbGxiYWNrSW50ZXJmYWNlID0gaXNDYWxsYmFja0ludGVyZmFj
ZUZyb21JREwoJGlkbEZpbGUpOwpAQCAtNDg5LDEzICs0ODksMTMgQEAgc3ViIGdldFBhcnRpYWxO
YW1lc0Zyb21JREwKICAgICBteSAkZmlsZUNvbnRlbnRzID0gJGlkbEZpbGUtPmZpbGVDb250ZW50
czsKIAogICAgIG15IEBwYXJ0aWFsTmFtZXMgPSAoKTsKLSAgICB3aGlsZSAoJGZpbGVDb250ZW50
cyA9fiAvcGFydGlhbFxzK2ludGVyZmFjZVxzK21peGluXHMrKFx3KykvbWcpIHsKKyAgICB3aGls
ZSAoJGZpbGVDb250ZW50cyA9fiAvcGFydGlhbFxzKyg/OmludGVyZmFjZXxkaWN0aW9uYXJ5KVxz
K21peGluXHMrKFx3KykvbWcpIHsKICAgICAgICAgcHVzaChAcGFydGlhbE5hbWVzLCAkMSk7CiAg
ICAgfQogCiAgICAgJGZpbGVDb250ZW50cyA9ICRpZGxGaWxlLT5maWxlQ29udGVudHM7Ci0gICAg
d2hpbGUgKCRmaWxlQ29udGVudHMgPX4gL3BhcnRpYWxccysoaW50ZXJmYWNlfGRpY3Rpb25hcnl8
bmFtZXNwYWNlKVxzKyhcdyspL21nKSB7Ci0gICAgICAgIHB1c2goQHBhcnRpYWxOYW1lcywgJDIp
IGlmICQyIG5lICJtaXhpbiI7CisgICAgd2hpbGUgKCRmaWxlQ29udGVudHMgPX4gL3BhcnRpYWxc
cysoPzppbnRlcmZhY2V8ZGljdGlvbmFyeXxuYW1lc3BhY2UpXHMrKFx3KykvbWcpIHsKKyAgICAg
ICAgcHVzaChAcGFydGlhbE5hbWVzLCAkMSkgaWYgJDEgbmUgIm1peGluIjsKICAgICB9CiAgICAg
CiAgICAgaWYgKCR2YWxpZGF0ZUFnYWluc3RQYXJzZXIpIHsKQEAgLTUyOCw0MCArNTI4LDQwIEBA
IHN1YiBnZXRQYXJ0aWFsTmFtZXNGcm9tSURMCiAKICMgaWRlbnRpZmllci1BIGluY2x1ZGVzIGlk
ZW50aWZpZXItQjsKICMgaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jaW5jbHVkZXMt
c3RhdGVtZW50Ci1zdWIgZ2V0SW5jbHVkZWRJbnRlcmZhY2VzRnJvbUlETAorc3ViIGdldEluY2x1
ZGVzRnJvbUlETAogewogICAgIG15ICRpZGxGaWxlID0gc2hpZnQ7CiAgICAgbXkgJGludGVyZmFj
ZU5hbWUgPSBzaGlmdDsKIAogICAgIG15ICRmaWxlQ29udGVudHMgPSAkaWRsRmlsZS0+ZmlsZUNv
bnRlbnRzOwogCi0gICAgbXkgQGluY2x1ZGVkSW50ZXJmYWNlcyA9ICgpOworICAgIG15IEBpbmNs
dWRlcyA9ICgpOwogICAgIHdoaWxlICgkZmlsZUNvbnRlbnRzID1+IC9cYihcdyspXHMraW5jbHVk
ZXNccysoXHcrKVxzKjsvbWcpIHsKICAgICAgICAgZGllICJJZGVudGlmaWVyIG9uIHRoZSBsZWZ0
IG9mIHRoZSAnaW5jbHVkZXMnIHN0YXRlbWVudCBzaG91bGQgYmUgJGludGVyZmFjZU5hbWUgaW4g
JGludGVyZmFjZU5hbWUuaWRsLCBidXQgZm91bmQgJDEiIGlmICQxIG5lICRpbnRlcmZhY2VOYW1l
OwotICAgICAgICBwdXNoKEBpbmNsdWRlZEludGVyZmFjZXMsICQyKTsKKyAgICAgICAgcHVzaChA
aW5jbHVkZXMsICQyKTsKICAgICB9CiAKICAgICBpZiAoJHZhbGlkYXRlQWdhaW5zdFBhcnNlcikg
ewotICAgICAgICBwcmludCAiVmFsaWRhdGluZyBnZXRJbmNsdWRlZEludGVyZmFjZXNGcm9tSURM
IGZvciAiIC4gJGlkbEZpbGUtPmZpbGVOYW1lIC4gIiBhZ2FpbnN0IHZhbGlkYXRpb24gcGFyc2Vy
LlxuIiBpZiAkdmVyYm9zZTsKKyAgICAgICAgcHJpbnQgIlZhbGlkYXRpbmcgZ2V0SW5jbHVkZXNG
cm9tSURMIGZvciAiIC4gJGlkbEZpbGUtPmZpbGVOYW1lIC4gIiBhZ2FpbnN0IHZhbGlkYXRpb24g
cGFyc2VyLlxuIiBpZiAkdmVyYm9zZTsKIAotICAgICAgICBteSBAaW5jbHVkZWRJbnRlcmZhY2Vz
RnJvbVBhcnNlZERvY3VtZW50ID0gKCk7CisgICAgICAgIG15IEBpbmNsdWRlc0Zyb21QYXJzZWRE
b2N1bWVudCA9ICgpOwogICAgICAgICBmb3JlYWNoIG15ICRpbmNsdWRlIChAeyRpZGxGaWxlLT5w
YXJzZWREb2N1bWVudC0+aW5jbHVkZXN9KSB7Ci0gICAgICAgICAgICBwdXNoKEBpbmNsdWRlZElu
dGVyZmFjZXNGcm9tUGFyc2VkRG9jdW1lbnQsICRpbmNsdWRlLT5taXhpbklkZW50aWZpZXIpOwor
ICAgICAgICAgICAgcHVzaChAaW5jbHVkZXNGcm9tUGFyc2VkRG9jdW1lbnQsICRpbmNsdWRlLT5t
aXhpbklkZW50aWZpZXIpOwogICAgICAgICB9CiAKLSAgICAgICAgbXkgQHNvcnRlZEluY2x1ZGVk
SW50ZXJmYWNlcyA9IHNvcnQgQGluY2x1ZGVkSW50ZXJmYWNlczsKLSAgICAgICAgbXkgQHNvcnRl
ZEluY2x1ZGVkSW50ZXJmYWNlc0Zyb21QYXJzZWREb2N1bWVudCA9IHNvcnQgQGluY2x1ZGVkSW50
ZXJmYWNlc0Zyb21QYXJzZWREb2N1bWVudDsKKyAgICAgICAgbXkgQHNvcnRlZEluY2x1ZGVzID0g
c29ydCBAaW5jbHVkZXM7CisgICAgICAgIG15IEBzb3J0ZWRJbmNsdWRlc0Zyb21QYXJzZWREb2N1
bWVudCA9IHNvcnQgQGluY2x1ZGVzRnJvbVBhcnNlZERvY3VtZW50OwogCiAgICAgICAgIGxvY2Fs
ICREYXRhOjpEdW1wZXI6OlRlcnNlID0gMTsKICAgICAgICAgbG9jYWwgJERhdGE6OkR1bXBlcjo6
SW5kZW50ID0gMDsKIAotICAgICAgICB1bmxlc3MgKGxpc3RzQXJlSWRlbnRpY2FsKFxAc29ydGVk
SW5jbHVkZWRJbnRlcmZhY2VzLCBcQHNvcnRlZEluY2x1ZGVkSW50ZXJmYWNlc0Zyb21QYXJzZWRE
b2N1bWVudCkpIHsKLSAgICAgICAgICAgIGRpZSAiRkFJTFVSRTogSW5jbHVkZWQgaW50ZXJmYWNl
cyBmcm9tIHJlZ3VsYXIgZXhwcmVzc2lvbiBiYXNlZCBwYXJzZXIgKCIgLiBEdW1wZXIoQHNvcnRl
ZEluY2x1ZGVkSW50ZXJmYWNlcykgLiAiKSBkb24ndCBtYXRjaCB0aG9zZSBmcm9tIHZhbGlkYXRp
b24gcGFyc2VyICgiIC4gRHVtcGVyKEBzb3J0ZWRJbmNsdWRlZEludGVyZmFjZXNGcm9tUGFyc2Vk
RG9jdW1lbnQpIC4gIikgWyIgLiAkaWRsRmlsZS0+ZmlsZU5hbWUgLiAiXSI7CisgICAgICAgIHVu
bGVzcyAobGlzdHNBcmVJZGVudGljYWwoXEBzb3J0ZWRJbmNsdWRlcywgXEBzb3J0ZWRJbmNsdWRl
c0Zyb21QYXJzZWREb2N1bWVudCkpIHsKKyAgICAgICAgICAgIGRpZSAiRkFJTFVSRTogSW5jbHVk
ZWQgaW50ZXJmYWNlcyBmcm9tIHJlZ3VsYXIgZXhwcmVzc2lvbiBiYXNlZCBwYXJzZXIgKCIgLiBE
dW1wZXIoQHNvcnRlZEluY2x1ZGVzKSAuICIpIGRvbid0IG1hdGNoIHRob3NlIGZyb20gdmFsaWRh
dGlvbiBwYXJzZXIgKCIgLiBEdW1wZXIoQHNvcnRlZEluY2x1ZGVzRnJvbVBhcnNlZERvY3VtZW50
KSAuICIpIFsiIC4gJGlkbEZpbGUtPmZpbGVOYW1lIC4gIl0iOwogICAgICAgICB9Ci0gICAgICAg
IHByaW50ICJTVUNDRVNTISBJbmNsdWRlZCBpbnRlcmZhY2VzIGZyb20gcmVndWxhciBleHByZXNz
aW9uIGJhc2VkIHBhcnNlciAoIiAuIER1bXBlcihAc29ydGVkSW5jbHVkZWRJbnRlcmZhY2VzKSAu
ICIpIG1hdGNoIHRob3NlIGZyb20gdmFsaWRhdGlvbiBwYXJzZXIgKCIgLiBEdW1wZXIoQHNvcnRl
ZEluY2x1ZGVkSW50ZXJmYWNlc0Zyb21QYXJzZWREb2N1bWVudCkgLiAiKS5cbiIgaWYgJHZlcmJv
c2U7CisgICAgICAgIHByaW50ICJTVUNDRVNTISBJbmNsdWRlZCBpbnRlcmZhY2VzIGZyb20gcmVn
dWxhciBleHByZXNzaW9uIGJhc2VkIHBhcnNlciAoIiAuIER1bXBlcihAc29ydGVkSW5jbHVkZXMp
IC4gIikgbWF0Y2ggdGhvc2UgZnJvbSB2YWxpZGF0aW9uIHBhcnNlciAoIiAuIER1bXBlcihAc29y
dGVkSW5jbHVkZXNGcm9tUGFyc2VkRG9jdW1lbnQpIC4gIikuXG4iIGlmICR2ZXJib3NlOwogICAg
IH0KIAotICAgIHJldHVybiBcQGluY2x1ZGVkSW50ZXJmYWNlcworICAgIHJldHVybiBcQGluY2x1
ZGVzCiB9CiAKIHN1YiBpc0NhbGxiYWNrSW50ZXJmYWNlRnJvbUlETApAQCAtNzU2LDEzICs3NTYs
MTMgQEAgc3ViIGdldFVuZGVmaW5lZEJhc2VEaWN0aW9uYXJpZXNGcm9tSURMCiAgICAgbXkgJGZp
bGVDb250ZW50cyA9ICRpZGxGaWxlLT5maWxlQ29udGVudHM7CiAKICAgICBteSBAZGljdGlvbmFy
eU5hbWVzID0gKCk7Ci0gICAgd2hpbGUgKCRmaWxlQ29udGVudHMgPX4gL1xzKmRpY3Rpb25hcnlc
cysoXHcrKVxzKi9tZykgeworICAgIHdoaWxlICgkZmlsZUNvbnRlbnRzID1+IC9ccypkaWN0aW9u
YXJ5XHMrKD86bWl4aW5ccyspPyhcdyspXHMqL21nKSB7CiAgICAgICAgIHB1c2goQGRpY3Rpb25h
cnlOYW1lcywgJDEpCiAgICAgfQogCiAgICAgJGZpbGVDb250ZW50cyA9ICRpZGxGaWxlLT5maWxl
Q29udGVudHM7CiAgICAgbXkgQGJhc2VEaWN0aW9uYXJpZXMgPSAoKTsKLSAgICB3aGlsZSAoJGZp
bGVDb250ZW50cyA9fiAvXHMqZGljdGlvbmFyeVxzKyhcdyspXHMrOlxzKyhcdyspXHMqL21nKSB7
CisgICAgd2hpbGUgKCRmaWxlQ29udGVudHMgPX4gL1xzKmRpY3Rpb25hcnlccysoPzptaXhpblxz
Kyk/KFx3Kylccys6XHMrKFx3KylccyovbWcpIHsKICAgICAgICAgbmV4dCBpZiAoZ3JlcCB7ICRf
IGVxICQyIH0gQGRpY3Rpb25hcnlOYW1lcyk7CiAgICAgICAgIG5leHQgaWYgKGdyZXAgeyAkXyBl
cSAkMiB9IEBiYXNlRGljdGlvbmFyaWVzKTsKICAgICAgICAgcHVzaChAYmFzZURpY3Rpb25hcmll
cywgJDIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdERpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdERpY3Rpb25hcnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0MDU0MWYwNzIxYTBm
MGM5MGU4YzA0MDE5ZTBhMzYxMWMyYTg4MjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGljdGlvbmFyeS5jcHAKQEAgLTAs
MCArMSwyMzUgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVu
IHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2Vu
ZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAg
ICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisK
KyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorCisjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQorCisjaW5j
bHVkZSAiSlNUZXN0RGljdGlvbmFyeS5oIgorCisjaW5jbHVkZSAiSlNET01Db252ZXJ0TnVtYmVy
cy5oIgorI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4K
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PYmplY3RDb25zdHJ1Y3Rvci5oPgorCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKKyNpZiBFTkFCTEUoQ29uZGl0
aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCisKK3RlbXBsYXRlPD4gVGVzdERpY3Rpb25hcnkg
Y29udmVydERpY3Rpb25hcnk8VGVzdERpY3Rpb25hcnk+KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworICAgIGJvb2wgaXNOdWxsT3JVbmRlZmluZWQgPSB2YWx1ZS5pc1VuZGVm
aW5lZE9yTnVsbCgpOworICAgIGF1dG8qIG9iamVjdCA9IGlzTnVsbE9yVW5kZWZpbmVkID8gbnVs
bHB0ciA6IHZhbHVlLmdldE9iamVjdCgpOworICAgIGlmIChVTkxJS0VMWSghaXNOdWxsT3JVbmRl
ZmluZWQgJiYgIW9iamVjdCkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJmxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKyAgICBU
ZXN0RGljdGlvbmFyeSByZXN1bHQ7CisjaWYgRU5BQkxFKENvbmRpdGlvbjExKQorICAgIEpTVmFs
dWUgY29uZGl0aW9uYWxQcm9wZXJ0eVZhbHVlOworICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkK
KyAgICAgICAgY29uZGl0aW9uYWxQcm9wZXJ0eVZhbHVlID0ganNVbmRlZmluZWQoKTsKKyAgICBl
bHNlIHsKKyAgICAgICAgY29uZGl0aW9uYWxQcm9wZXJ0eVZhbHVlID0gb2JqZWN0LT5nZXQoJmxl
eGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjb25kaXRpb25h
bFByb3BlcnR5IikpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsg
fSk7CisgICAgfQorICAgIGlmICghY29uZGl0aW9uYWxQcm9wZXJ0eVZhbHVlLmlzVW5kZWZpbmVk
KCkpIHsKKyAgICAgICAgcmVzdWx0LmNvbmRpdGlvbmFsUHJvcGVydHkgPSBjb252ZXJ0PElETERv
dWJsZT4obGV4aWNhbEdsb2JhbE9iamVjdCwgY29uZGl0aW9uYWxQcm9wZXJ0eVZhbHVlKTsKKyAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0KKyNlbmRp
ZgorI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorICAgIEpT
VmFsdWUgbWl4aW5Db25kaXRpb25hbFByb3BlcnR5VmFsdWU7CisgICAgaWYgKGlzTnVsbE9yVW5k
ZWZpbmVkKQorICAgICAgICBtaXhpbkNvbmRpdGlvbmFsUHJvcGVydHlWYWx1ZSA9IGpzVW5kZWZp
bmVkKCk7CisgICAgZWxzZSB7CisgICAgICAgIG1peGluQ29uZGl0aW9uYWxQcm9wZXJ0eVZhbHVl
ID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJtaXhpbkNvbmRpdGlvbmFsUHJvcGVydHkiKSk7CisgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisgICAgaWYgKCFtaXhpbkNvbmRpdGlv
bmFsUHJvcGVydHlWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIHJlc3VsdC5taXhpbkNv
bmRpdGlvbmFsUHJvcGVydHkgPSBjb252ZXJ0PElETERvdWJsZT4obGV4aWNhbEdsb2JhbE9iamVj
dCwgbWl4aW5Db25kaXRpb25hbFByb3BlcnR5VmFsdWUpOworICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfQorI2VuZGlmCisjaWYgRU5BQkxFKENvbmRp
dGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCisgICAgSlNWYWx1ZSBtaXhpblByb3BlcnR5
VmFsdWU7CisgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQorICAgICAgICBtaXhpblByb3BlcnR5
VmFsdWUgPSBqc1VuZGVmaW5lZCgpOworICAgIGVsc2UgeworICAgICAgICBtaXhpblByb3BlcnR5
VmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgIm1peGluUHJvcGVydHkiKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisgICAgaWYgKCFtaXhpblByb3BlcnR5VmFsdWUu
aXNVbmRlZmluZWQoKSkgeworICAgICAgICByZXN1bHQubWl4aW5Qcm9wZXJ0eSA9IGNvbnZlcnQ8
SURMRG91YmxlPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBtaXhpblByb3BlcnR5VmFsdWUpOworICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfQorI2VuZGlm
CisjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCisgICAgSlNW
YWx1ZSBtaXhpblNldHRpbmdQcm9wZXJ0eVZhbHVlOworICAgIGlmIChpc051bGxPclVuZGVmaW5l
ZCkKKyAgICAgICAgbWl4aW5TZXR0aW5nUHJvcGVydHlWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7Cisg
ICAgZWxzZSB7CisgICAgICAgIG1peGluU2V0dGluZ1Byb3BlcnR5VmFsdWUgPSBvYmplY3QtPmdl
dCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1peGlu
U2V0dGluZ1Byb3BlcnR5IikpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIHsgfSk7CisgICAgfQorICAgIGlmICghbWl4aW5TZXR0aW5nUHJvcGVydHlWYWx1ZS5pc1Vu
ZGVmaW5lZCgpKSB7CisgICAgICAgIHJlc3VsdC5taXhpblNldHRpbmdQcm9wZXJ0eSA9IGNvbnZl
cnQ8SURMRG91YmxlPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBtaXhpblNldHRpbmdQcm9wZXJ0eVZh
bHVlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAg
IH0KKyNlbmRpZgorI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIz
KQorICAgIEpTVmFsdWUgcGFydGlhbE1peGluQ29uZGl0aW9uYWxQcm9wZXJ0eVZhbHVlOworICAg
IGlmIChpc051bGxPclVuZGVmaW5lZCkKKyAgICAgICAgcGFydGlhbE1peGluQ29uZGl0aW9uYWxQ
cm9wZXJ0eVZhbHVlID0ganNVbmRlZmluZWQoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgcGFydGlh
bE1peGluQ29uZGl0aW9uYWxQcm9wZXJ0eVZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9i
YWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsTWl4aW5Db25kaXRp
b25hbFByb3BlcnR5IikpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IHsgfSk7CisgICAgfQorICAgIGlmICghcGFydGlhbE1peGluQ29uZGl0aW9uYWxQcm9wZXJ0eVZh
bHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgcmVzdWx0LnBhcnRpYWxNaXhpbkNvbmRpdGlv
bmFsUHJvcGVydHkgPSBjb252ZXJ0PElETERvdWJsZT4obGV4aWNhbEdsb2JhbE9iamVjdCwgcGFy
dGlhbE1peGluQ29uZGl0aW9uYWxQcm9wZXJ0eVZhbHVlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0KKyNlbmRpZgorI2lmIEVOQUJMRShDb25k
aXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorICAgIEpTVmFsdWUgcGFydGlhbE1peGlu
UHJvcGVydHlWYWx1ZTsKKyAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCisgICAgICAgIHBhcnRp
YWxNaXhpblByb3BlcnR5VmFsdWUgPSBqc1VuZGVmaW5lZCgpOworICAgIGVsc2UgeworICAgICAg
ICBwYXJ0aWFsTWl4aW5Qcm9wZXJ0eVZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxP
YmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsTWl4aW5Qcm9wZXJ0eSIp
KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0K
KyAgICBpZiAoIXBhcnRpYWxNaXhpblByb3BlcnR5VmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAg
ICAgICByZXN1bHQucGFydGlhbE1peGluUHJvcGVydHkgPSBjb252ZXJ0PElETERvdWJsZT4obGV4
aWNhbEdsb2JhbE9iamVjdCwgcGFydGlhbE1peGluUHJvcGVydHlWYWx1ZSk7CisgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisjZW5kaWYKKyNpZiBF
TkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKKyAgICBKU1ZhbHVlIHBh
cnRpYWxNaXhpblNldHRpbmdQcm9wZXJ0eVZhbHVlOworICAgIGlmIChpc051bGxPclVuZGVmaW5l
ZCkKKyAgICAgICAgcGFydGlhbE1peGluU2V0dGluZ1Byb3BlcnR5VmFsdWUgPSBqc1VuZGVmaW5l
ZCgpOworICAgIGVsc2UgeworICAgICAgICBwYXJ0aWFsTWl4aW5TZXR0aW5nUHJvcGVydHlWYWx1
ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAicGFydGlhbE1peGluU2V0dGluZ1Byb3BlcnR5IikpOworICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfQorICAgIGlmICghcGFydGlhbE1p
eGluU2V0dGluZ1Byb3BlcnR5VmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICByZXN1bHQu
cGFydGlhbE1peGluU2V0dGluZ1Byb3BlcnR5ID0gY29udmVydDxJRExEb3VibGU+KGxleGljYWxH
bG9iYWxPYmplY3QsIHBhcnRpYWxNaXhpblNldHRpbmdQcm9wZXJ0eVZhbHVlKTsKKyAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0KKyNlbmRpZgorICAg
IEpTVmFsdWUgcHJvcGVydHlWYWx1ZTsKKyAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCisgICAg
ICAgIHByb3BlcnR5VmFsdWUgPSBqc1VuZGVmaW5lZCgpOworICAgIGVsc2UgeworICAgICAgICBw
cm9wZXJ0eVZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJwcm9wZXJ0eSIpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0KKyAgICBpZiAoIXByb3BlcnR5VmFsdWUuaXNV
bmRlZmluZWQoKSkgeworICAgICAgICByZXN1bHQucHJvcGVydHkgPSBjb252ZXJ0PElETERvdWJs
ZT4obGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlWYWx1ZSk7CisgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisgICAgSlNWYWx1ZSBzZXR0aW5n
UHJvcGVydHlWYWx1ZTsKKyAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCisgICAgICAgIHNldHRp
bmdQcm9wZXJ0eVZhbHVlID0ganNVbmRlZmluZWQoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgc2V0
dGluZ1Byb3BlcnR5VmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNldHRpbmdQcm9wZXJ0eSIpKTsKKyAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0KKyAgICBpZiAoIXNldHRp
bmdQcm9wZXJ0eVZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgcmVzdWx0LnNldHRpbmdQ
cm9wZXJ0eSA9IGNvbnZlcnQ8SURMRG91YmxlPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzZXR0aW5n
UHJvcGVydHlWYWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
eyB9KTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworSlNDOjpKU09iamVjdCogY29u
dmVydERpY3Rpb25hcnlUb0pTKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIGNvbnN0IFRlc3REaWN0aW9uYXJ5
JiBkaWN0aW9uYXJ5KQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CisKKyAgICBhdXRvIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KCZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qub2JqZWN0UHJvdG90eXBlKCkpOworCisjaWYg
RU5BQkxFKENvbmRpdGlvbjExKQorICAgIGlmICghSURMRG91YmxlOjppc051bGxWYWx1ZShkaWN0
aW9uYXJ5LmNvbmRpdGlvbmFsUHJvcGVydHkpKSB7CisgICAgICAgIGF1dG8gY29uZGl0aW9uYWxQ
cm9wZXJ0eVZhbHVlID0gdG9KUzxJRExEb3VibGU+KElETERvdWJsZTo6ZXh0cmFjdFZhbHVlRnJv
bU51bGxhYmxlKGRpY3Rpb25hcnkuY29uZGl0aW9uYWxQcm9wZXJ0eSkpOworICAgICAgICByZXN1
bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY29uZGl0
aW9uYWxQcm9wZXJ0eSIpLCBjb25kaXRpb25hbFByb3BlcnR5VmFsdWUpOworICAgIH0KKyNlbmRp
ZgorI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorICAgIGlm
ICghSURMRG91YmxlOjppc051bGxWYWx1ZShkaWN0aW9uYXJ5Lm1peGluQ29uZGl0aW9uYWxQcm9w
ZXJ0eSkpIHsKKyAgICAgICAgYXV0byBtaXhpbkNvbmRpdGlvbmFsUHJvcGVydHlWYWx1ZSA9IHRv
SlM8SURMRG91YmxlPihJRExEb3VibGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9u
YXJ5Lm1peGluQ29uZGl0aW9uYWxQcm9wZXJ0eSkpOworICAgICAgICByZXN1bHQtPnB1dERpcmVj
dCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWl4aW5Db25kaXRpb25hbFBy
b3BlcnR5IiksIG1peGluQ29uZGl0aW9uYWxQcm9wZXJ0eVZhbHVlKTsKKyAgICB9CisjZW5kaWYK
KyNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKKyAgICBpZiAo
IUlETERvdWJsZTo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5taXhpblByb3BlcnR5KSkgeworICAg
ICAgICBhdXRvIG1peGluUHJvcGVydHlWYWx1ZSA9IHRvSlM8SURMRG91YmxlPihJRExEb3VibGU6
OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5Lm1peGluUHJvcGVydHkpKTsKKyAg
ICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgIm1peGluUHJvcGVydHkiKSwgbWl4aW5Qcm9wZXJ0eVZhbHVlKTsKKyAgICB9CisjZW5kaWYK
KyNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKKyAgICBpZiAo
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+c2V0dGluZ3NWYWx1ZXMoKS50ZXN0U2V0dGluZ0VuYWJsZWQpIHsKKyAgICAg
ICAgaWYgKCFJRExEb3VibGU6OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkubWl4aW5TZXR0aW5nUHJv
cGVydHkpKSB7CisgICAgICAgICAgICBhdXRvIG1peGluU2V0dGluZ1Byb3BlcnR5VmFsdWUgPSB0
b0pTPElETERvdWJsZT4oSURMRG91YmxlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlv
bmFyeS5taXhpblNldHRpbmdQcm9wZXJ0eSkpOworICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJl
Y3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1peGluU2V0dGluZ1Byb3Bl
cnR5IiksIG1peGluU2V0dGluZ1Byb3BlcnR5VmFsdWUpOworICAgICAgICB9CisgICAgfQorI2Vu
ZGlmCisjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCisgICAg
aWYgKCFJRExEb3VibGU6OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkucGFydGlhbE1peGluQ29uZGl0
aW9uYWxQcm9wZXJ0eSkpIHsKKyAgICAgICAgYXV0byBwYXJ0aWFsTWl4aW5Db25kaXRpb25hbFBy
b3BlcnR5VmFsdWUgPSB0b0pTPElETERvdWJsZT4oSURMRG91YmxlOjpleHRyYWN0VmFsdWVGcm9t
TnVsbGFibGUoZGljdGlvbmFyeS5wYXJ0aWFsTWl4aW5Db25kaXRpb25hbFByb3BlcnR5KSk7Cisg
ICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJwYXJ0aWFsTWl4aW5Db25kaXRpb25hbFByb3BlcnR5IiksIHBhcnRpYWxNaXhpbkNvbmRp
dGlvbmFsUHJvcGVydHlWYWx1ZSk7CisgICAgfQorI2VuZGlmCisjaWYgRU5BQkxFKENvbmRpdGlv
bjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCisgICAgaWYgKCFJRExEb3VibGU6OmlzTnVsbFZh
bHVlKGRpY3Rpb25hcnkucGFydGlhbE1peGluUHJvcGVydHkpKSB7CisgICAgICAgIGF1dG8gcGFy
dGlhbE1peGluUHJvcGVydHlWYWx1ZSA9IHRvSlM8SURMRG91YmxlPihJRExEb3VibGU6OmV4dHJh
Y3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LnBhcnRpYWxNaXhpblByb3BlcnR5KSk7Cisg
ICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJwYXJ0aWFsTWl4aW5Qcm9wZXJ0eSIpLCBwYXJ0aWFsTWl4aW5Qcm9wZXJ0eVZhbHVlKTsK
KyAgICB9CisjZW5kaWYKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRp
b24yMykKKyAgICBpZiAoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmdsb2JhbE9iamVjdCkt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGluZ3NWYWx1ZXMoKS50ZXN0U2V0dGluZzJF
bmFibGVkKSB7CisgICAgICAgIGlmICghSURMRG91YmxlOjppc051bGxWYWx1ZShkaWN0aW9uYXJ5
LnBhcnRpYWxNaXhpblNldHRpbmdQcm9wZXJ0eSkpIHsKKyAgICAgICAgICAgIGF1dG8gcGFydGlh
bE1peGluU2V0dGluZ1Byb3BlcnR5VmFsdWUgPSB0b0pTPElETERvdWJsZT4oSURMRG91YmxlOjpl
eHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5wYXJ0aWFsTWl4aW5TZXR0aW5nUHJv
cGVydHkpKTsKKyAgICAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsTWl4aW5TZXR0aW5nUHJvcGVydHkiKSwgcGFydGlh
bE1peGluU2V0dGluZ1Byb3BlcnR5VmFsdWUpOworICAgICAgICB9CisgICAgfQorI2VuZGlmCisg
ICAgaWYgKCFJRExEb3VibGU6OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkucHJvcGVydHkpKSB7Cisg
ICAgICAgIGF1dG8gcHJvcGVydHlWYWx1ZSA9IHRvSlM8SURMRG91YmxlPihJRExEb3VibGU6OmV4
dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LnByb3BlcnR5KSk7CisgICAgICAgIHJl
c3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwcm9w
ZXJ0eSIpLCBwcm9wZXJ0eVZhbHVlKTsKKyAgICB9CisgICAgaWYgKGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KCZnbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNldHRp
bmdzVmFsdWVzKCkudGVzdFNldHRpbmdFbmFibGVkKSB7CisgICAgICAgIGlmICghSURMRG91Ymxl
Ojppc051bGxWYWx1ZShkaWN0aW9uYXJ5LnNldHRpbmdQcm9wZXJ0eSkpIHsKKyAgICAgICAgICAg
IGF1dG8gc2V0dGluZ1Byb3BlcnR5VmFsdWUgPSB0b0pTPElETERvdWJsZT4oSURMRG91YmxlOjpl
eHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5zZXR0aW5nUHJvcGVydHkpKTsKKyAg
ICAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJzZXR0aW5nUHJvcGVydHkiKSwgc2V0dGluZ1Byb3BlcnR5VmFsdWUpOworICAgICAg
ICB9CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKKyNlbmRpZgorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENv
bmRpdGlvbjIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RGljdGlvbmFyeS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdERpY3Rpb25hcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNzlmYzI4OGM5NjM3ZWJi
ZTkwMTJiOTAwZDMwZWIzZmRhOTE2YzNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERpY3Rpb25hcnkuaApAQCAtMCwwICsx
LDM2IEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3Vy
Y2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRl
LWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAg
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQorCisjaW5jbHVkZSAiSlNET01D
b252ZXJ0RGljdGlvbmFyeS5oIgorI2luY2x1ZGUgIlRlc3REaWN0aW9uYXJ5LmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8PiBXRUJDT1JFX0VYUE9SVCBUZXN0RGljdGlvbmFy
eSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0RGljdGlvbmFyeT4oSlNDOjpKU0dsb2JhbE9iamVjdCYs
IEpTQzo6SlNWYWx1ZSk7CisKK1dFQkNPUkVfRVhQT1JUIEpTQzo6SlNPYmplY3QqIGNvbnZlcnRE
aWN0aW9uYXJ5VG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNET01HbG9iYWxPYmplY3QmLCBj
b25zdCBUZXN0RGljdGlvbmFyeSYpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWl4aW5EaWN0
aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RNaXhpbkRpY3Rpb25hcnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1ODEyN2FiYzNhMzIyZjkzNTQyZTg1
NTJiMTRmZjQ3NmE2ZmMzNzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWl4aW5EaWN0aW9uYXJ5LmNwcApAQCAtMCwwICsx
LDUgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCB0byBpbmZvcm0gYnVpbGQgc2Ny
aXB0cyB0aGF0IEpTVGVzdE1peGluRGljdGlvbmFyeS5oIGFuZAorICAgIEpTVGVzdE1peGluRGlj
dGlvbmFyeS5jcHAgd2VyZSBjcmVhdGVkIGZvciBUZXN0TWl4aW5EaWN0aW9uYXJ5LmlkbCwgYW5k
IHByZXZlbnQgdGhlIGJ1aWxkCisgICAgc2NyaXB0cyBmcm9tIHRyeWluZyB0byByZWdlbmVyYXRl
IEpTVGVzdE1peGluRGljdGlvbmFyeS5oIGFuZCBKU1Rlc3RNaXhpbkRpY3Rpb25hcnkuY3BwIG9u
IGV2ZXJ5IGJ1aWxkLgorKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RNaXhpbkRpY3Rpb25hcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNaXhpbkRpY3Rpb25hcnkuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yNTgxMjdhYmMzYTMyMmY5MzU0MmU4NTUyYjE0ZmY0NzZhNmZjMzc2Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1peGlu
RGljdGlvbmFyeS5oCkBAIC0wLDAgKzEsNSBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgZ2VuZXJh
dGVkIHRvIGluZm9ybSBidWlsZCBzY3JpcHRzIHRoYXQgSlNUZXN0TWl4aW5EaWN0aW9uYXJ5Lmgg
YW5kCisgICAgSlNUZXN0TWl4aW5EaWN0aW9uYXJ5LmNwcCB3ZXJlIGNyZWF0ZWQgZm9yIFRlc3RN
aXhpbkRpY3Rpb25hcnkuaWRsLCBhbmQgcHJldmVudCB0aGUgYnVpbGQKKyAgICBzY3JpcHRzIGZy
b20gdHJ5aW5nIHRvIHJlZ2VuZXJhdGUgSlNUZXN0TWl4aW5EaWN0aW9uYXJ5LmggYW5kIEpTVGVz
dE1peGluRGljdGlvbmFyeS5jcHAgb24gZXZlcnkgYnVpbGQuCisqLwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBhcnRpYWxNaXhpbkRp
Y3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFBhcnRpYWxNaXhpbkRpY3Rpb25hcnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkNTJmMWZjOWExYWE5
NGMxN2E4YTI4ZjE4OGJmNWE4NzA0MDM4ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGFydGlhbE1peGluRGljdGlvbmFy
eS5jcHAKQEAgLTAsMCArMSw1IEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgdG8g
aW5mb3JtIGJ1aWxkIHNjcmlwdHMgdGhhdCBKU1Rlc3RQYXJ0aWFsTWl4aW5EaWN0aW9uYXJ5Lmgg
YW5kCisgICAgSlNUZXN0UGFydGlhbE1peGluRGljdGlvbmFyeS5jcHAgd2VyZSBjcmVhdGVkIGZv
ciBUZXN0UGFydGlhbE1peGluRGljdGlvbmFyeS5pZGwsIGFuZCBwcmV2ZW50IHRoZSBidWlsZAor
ICAgIHNjcmlwdHMgZnJvbSB0cnlpbmcgdG8gcmVnZW5lcmF0ZSBKU1Rlc3RQYXJ0aWFsTWl4aW5E
aWN0aW9uYXJ5LmggYW5kIEpTVGVzdFBhcnRpYWxNaXhpbkRpY3Rpb25hcnkuY3BwIG9uIGV2ZXJ5
IGJ1aWxkLgorKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RQYXJ0aWFsTWl4aW5EaWN0aW9uYXJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGFydGlhbE1peGluRGljdGlvbmFyeS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmJkNTJmMWZjOWExYWE5NGMxN2E4YTI4ZjE4OGJmNWE4NzA0MDM4ZmQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0UGFydGlhbE1peGluRGljdGlvbmFyeS5oCkBAIC0wLDAgKzEsNSBAQAorLyoKKyAgICBUaGlz
IGZpbGUgaXMgZ2VuZXJhdGVkIHRvIGluZm9ybSBidWlsZCBzY3JpcHRzIHRoYXQgSlNUZXN0UGFy
dGlhbE1peGluRGljdGlvbmFyeS5oIGFuZAorICAgIEpTVGVzdFBhcnRpYWxNaXhpbkRpY3Rpb25h
cnkuY3BwIHdlcmUgY3JlYXRlZCBmb3IgVGVzdFBhcnRpYWxNaXhpbkRpY3Rpb25hcnkuaWRsLCBh
bmQgcHJldmVudCB0aGUgYnVpbGQKKyAgICBzY3JpcHRzIGZyb20gdHJ5aW5nIHRvIHJlZ2VuZXJh
dGUgSlNUZXN0UGFydGlhbE1peGluRGljdGlvbmFyeS5oIGFuZCBKU1Rlc3RQYXJ0aWFsTWl4aW5E
aWN0aW9uYXJ5LmNwcCBvbiBldmVyeSBidWlsZC4KKyovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzLmRlcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBlbmRl
bmNpZXMuZGVwCmluZGV4IGE2ZjBjYmJjNjhhMWNlOTg0ZGFjOTAwZmVjNjRjODIxMmJkNDIzNDMu
LmViOWVlMzI2ZDE2OWEzMGQ0ZmYwM2YyMGY0ZWFlNWU4ZDdjY2E0NDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBlbmRlbmNp
ZXMuZGVwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVt
ZW50YWxEZXBlbmRlbmNpZXMuZGVwCkBAIC04Miw2ICs4MiwxMCBAQCBXZWJET01UZXN0RGVyaXZl
ZERpY3Rpb25hcnkuaDoKIEpTVGVzdERlcml2ZWREaWN0aW9uYXJ5Mi5oOiAKIERPTVRlc3REZXJp
dmVkRGljdGlvbmFyeTIuaDogCiBXZWJET01UZXN0RGVyaXZlZERpY3Rpb25hcnkyLmg6IAorSlNU
ZXN0RGljdGlvbmFyeS5oOiBUZXN0TWl4aW5EaWN0aW9uYXJ5LmlkbAorRE9NVGVzdERpY3Rpb25h
cnkuaDogVGVzdE1peGluRGljdGlvbmFyeS5pZGwKK1dlYkRPTVRlc3REaWN0aW9uYXJ5Lmg6IFRl
c3RNaXhpbkRpY3Rpb25hcnkuaWRsCitUZXN0TWl4aW5EaWN0aW9uYXJ5LmlkbDoKIEpTVGVzdERp
Y3Rpb25hcnlXaXRoT25seUNvbmRpdGlvbmFsTWVtYmVycy5oOiAKIERPTVRlc3REaWN0aW9uYXJ5
V2l0aE9ubHlDb25kaXRpb25hbE1lbWJlcnMuaDogCiBXZWJET01UZXN0RGljdGlvbmFyeVdpdGhP
bmx5Q29uZGl0aW9uYWxNZW1iZXJzLmg6IApAQCAtMTU5LDYgKzE2MywxMCBAQCBXZWJET01UZXN0
TWFwTGlrZS5oOgogSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5oOiAKIERP
TVRlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmg6IAogV2ViRE9NVGVzdE1hcExp
a2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuaDogCitKU1Rlc3RNaXhpbkRpY3Rpb25hcnkuaDog
VGVzdFBhcnRpYWxNaXhpbkRpY3Rpb25hcnkuaWRsCitET01UZXN0TWl4aW5EaWN0aW9uYXJ5Lmg6
IFRlc3RQYXJ0aWFsTWl4aW5EaWN0aW9uYXJ5LmlkbAorV2ViRE9NVGVzdE1peGluRGljdGlvbmFy
eS5oOiBUZXN0UGFydGlhbE1peGluRGljdGlvbmFyeS5pZGwKK1Rlc3RQYXJ0aWFsTWl4aW5EaWN0
aW9uYXJ5LmlkbDoKIEpTVGVzdE1peGluSW50ZXJmYWNlLmg6IFRlc3RQYXJ0aWFsTWl4aW5JbnRl
cmZhY2UuaWRsCiBET01UZXN0TWl4aW5JbnRlcmZhY2UuaDogVGVzdFBhcnRpYWxNaXhpbkludGVy
ZmFjZS5pZGwKIFdlYkRPTVRlc3RNaXhpbkludGVyZmFjZS5oOiBUZXN0UGFydGlhbE1peGluSW50
ZXJmYWNlLmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Rlc3REaWN0aW9uYXJ5LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0RGljdGlvbmFyeS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjZiNDFiNDZkNzg0ZDM0MDgyNjA3
YWQ5ODU2OGU5OWVjMjc3YjQwZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RGljdGlvbmFyeS5pZGwKQEAgLTAsMCArMSw0MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4g
KCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJv
bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIFRoaXMgSURM
IGZpbGUgaXMgZm9yIHRlc3RpbmcgdGhlIGJpbmRpbmdzIGNvZGUgZ2VuZXJhdG9yIGFuZCBmb3Ig
dHJhY2tpbmcKKy8vIGNoYW5nZXMgaW4gaXRzIG91dHB1dC4KKworWworICAgIENvbmRpdGlvbmFs
PUNvbmRpdGlvbjF8Q29uZGl0aW9uMiwKKyAgICBFeHBvcnRNYWNybz1XRUJDT1JFX0VYUE9SVCwK
KyAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKK10gZGljdGlvbmFyeSBUZXN0RGljdGlvbmFyeSB7
CisgICAgZG91YmxlIHByb3BlcnR5OworICAgIFtDb25kaXRpb25hbD1Db25kaXRpb24xMV0gZG91
YmxlIGNvbmRpdGlvbmFsUHJvcGVydHk7CisgICAgW0VuYWJsZWRCeVNldHRpbmc9VGVzdFNldHRp
bmddIGRvdWJsZSBzZXR0aW5nUHJvcGVydHk7Cit9OworCitUZXN0RGljdGlvbmFyeSBpbmNsdWRl
cyBUZXN0TWl4aW5EaWN0aW9uYXJ5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Rlc3RNaXhpbkRpY3Rpb25hcnkuaWRsIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RNaXhpbkRpY3Rpb25hcnkuaWRsCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjhlMzM4OGRhOGQyNWVjOTY3NmVhN2I5YTZmNTEzNTA4MWMyZmE0NzIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE1peGluRGljdGlv
bmFyeS5pZGwKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtc3RyQXJnLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMu
ICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMg
b2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFc3RyQXJnLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gVGhpcyBJREwgZmlsZSBpcyBmb3IgdGVzdGlu
ZyB0aGUgYmluZGluZ3MgY29kZSBnZW5lcmF0b3IgYW5kIGZvciB0cmFja2luZworLy8gY2hhbmdl
cyBpbiBpdHMgb3V0cHV0LgorCitbCisgICAgQ29uZGl0aW9uYWw9Q29uZGl0aW9uMjJ8Q29uZGl0
aW9uMjMsCitdIGRpY3Rpb25hcnkgbWl4aW4gVGVzdE1peGluRGljdGlvbmFyeSB7CisgICAgZG91
YmxlIG1peGluUHJvcGVydHk7CisgICAgW0NvbmRpdGlvbmFsPUNvbmRpdGlvbjExXSBkb3VibGUg
bWl4aW5Db25kaXRpb25hbFByb3BlcnR5OworICAgIFtFbmFibGVkQnlTZXR0aW5nPVRlc3RTZXR0
aW5nXSBkb3VibGUgbWl4aW5TZXR0aW5nUHJvcGVydHk7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RQYXJ0aWFsTWl4aW5EaWN0aW9uYXJ5
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0UGFydGlhbE1p
eGluRGljdGlvbmFyeS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWUzOTMyMTQ3MTViMjk0NTZjMjRiNmU0OGYw
YjM3ZTRkYWZhZWE1ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0UGFydGlhbE1peGluRGljdGlvbmFyeS5pZGwKQEAgLTAsMCArMSwz
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3JtLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxl
IEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAg
ICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIFRo
aXMgSURMIGZpbGUgaXMgZm9yIHRlc3RpbmcgdGhlIGJpbmRpbmdzIGNvZGUgZ2VuZXJhdG9yIGFu
ZCBmb3IgdHJhY2tpbmcKKy8vIGNoYW5nZXMgaW4gaXRzIG91dHB1dC4KKworWworICAgIENvbmRp
dGlvbmFsPUNvbmRpdGlvbjMzLAorXSBwYXJ0aWFsIGRpY3Rpb25hcnkgbWl4aW4gVGVzdE1peGlu
RGljdGlvbmFyeSB7CisgICAgZG91YmxlIHBhcnRpYWxNaXhpblByb3BlcnR5OworICAgIFtDb25k
aXRpb25hbD1Db25kaXRpb240NF0gZG91YmxlIHBhcnRpYWxNaXhpbkNvbmRpdGlvbmFsUHJvcGVy
dHk7CisgICAgW0VuYWJsZWRCeVNldHRpbmc9VGVzdFNldHRpbmcyXSBkb3VibGUgcGFydGlhbE1p
eGluU2V0dGluZ1Byb3BlcnR5OworfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423985</attachid>
            <date>2021-03-22 21:07:41 -0700</date>
            <delta_ts>2021-03-27 07:46:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223621-20210322220740.patch</filename>
            <type>text/plain</type>
            <size>90429</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0MmNmZjU1NjlhNmI5NDhlN2Y4MWJhZjg5M2Q4M2NiMGFhOWM1YWU0Li5m
NGQwNjRiNDBlYjJhOTQ1MDI5MzE3MWM0MzFiNzU0MjQ2ZjUyMDI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTA2IEBACisyMDIxLTAzLTIyICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNv
bT4KKworICAgICAgICBbUGF5bWVudCBSZXF1ZXN0XSBtb3ZlIGFkZGVkIGBvYmplY3QgZGF0YWAg
dG8gYEFwcGxlUGF5TW9kaWZpZXJgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjM2MjEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc1NzIwODc5Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBgb2Jq
ZWN0IGRhdGFgIGluIGBQYXltZW50RGV0YWlsc01vZGlmaWVyYCBoYXMgYSBzaWJsaW5nIHByb3Bl
cnR5IGByZXF1aXJlZCBET01TdHJpbmcgc3VwcG9ydGVkTWV0aG9kc2AKKyAgICAgICAgd2hpY2gg
YWN0cyBhcyBhICJndWFyZCIgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHN0cnVjdHVyZSBvZiBgZGF0
YWAgaXMgb25seSBsaW1pdGVkIHRvIHRoYXQgYHN1cHBvcnRlZE1ldGhvZHNgCisgICAgICAgIG1l
YW5pbmcgdGhhdCB0aGVyZSdzIG5vIGNvbmNlcm4gb3ZlciBuYW1pbmcgY29sbGlzaW9ucyBiZXR3
ZWVuIHR3byBkaWZmZXJlbnQgYHN1cHBvcnRlZE1ldGhvZHNgLiBBcyBzdWNoLAorICAgICAgICB0
aGUgYG9iamVjdCBkYXRhYCBhZGRlZCB0byBgUGF5bWVudEl0ZW1gIGFuZCBgUGF5bWVudERldGFp
bHNCYXNlYCBhbmQgYFBheW1lbnRTaGlwcGluZ09wdGlvbmAgc2hvdWxkIHJlYWxseQorICAgICAg
ICBiZSBwYXJ0IG9mIGBBcHBsZVBheU1vZGlmaWVyYCAod2hpY2ggaXMgd2hhdCB0aGUgYG9iamVj
dCBkYXRhYCBpbiBgUGF5bWVudERldGFpbHNNb2RpZmllcmAgaXMgcGFyc2VkIGludG8pLgorCisg
ICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheURldGFpbHNVcGRhdGVEYXRhLmlkbDoK
KyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5RGV0YWlsc1VwZGF0ZUJhc2UuaWRs
OgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5lSXRlbURhdGEuaWRsOgor
ICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5lSXRlbS5pZGw6CisgICAgICAg
ICogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nTWV0aG9kRGF0YS5pZGw6CisgICAg
ICAgICogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nTWV0aG9kLmlkbDoKKyAgICAg
ICAgKiBNb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5TW9kaWZpZXIuaWRs
OgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlNb2Rp
Zmllci5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQ
YXlQYXltZW50SGFuZGxlci5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJl
cXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252
ZXJ0QW5kVmFsaWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6bWVyZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGVQYXlQYXltZW50SGFuZGxlcjo6c2hvdyk6CisgICAgICAgIChXZWJDb3JlOjpB
cHBsZVBheVBheW1lbnRIYW5kbGVyOjpjb21wdXRlU2hpcHBpbmdNZXRob2RzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OmNvbXB1dGVUb3RhbEFuZExp
bmVJdGVtcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjp2YWxpZGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpmaXJzdEFwcGxpY2FibGVNb2RpZmllciBj
b25zdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlQYXltZW50SGFuZGxlcjo6
c2hpcHBpbmdBZGRyZXNzVXBkYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVBheW1l
bnRIYW5kbGVyOjpzaGlwcGluZ09wdGlvblVwZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGVQYXlQYXltZW50SGFuZGxlcjo6cGF5bWVudE1ldGhvZFVwZGF0ZWQpOgorICAgICAgICBNYWtl
IHRoZSB2YXJpb3VzIGBBcHBsZVBheSpEYXRhYCBpbnRvIGBkaWN0aW9uYXJ5IG1peGluYCBzbyB0
aGF0IHRoZXkgY2FuIGJlIHVzZWQgZm9yIGJvdGgKKyAgICAgICAgdGhlIFczQyBQYXltZW50IFJl
cXVlc3QgQVBJIGBBcHBsZVBheU1vZGlmaWVyYCAod2hpY2ggaXMgdXNlZCB0byBwYXJzZSB0aGUg
YG9iamVjdCBkYXRhYCBvbgorICAgICAgICBgUGF5bWVudERldGlsc01vZGlmaWVyYCkgYW5kIHRo
ZSBBcHBsZSBQYXkgSlMgYEFwcGxlUGF5KmAuIFRoaXMgYWxsb3dzIGZvciBuZXcgcHJvcGVydGll
cworICAgICAgICB0byBvbmx5IGhhdmUgdG8gYmUgYWRkZWQgaW4gb25lIHBsYWNlLCBhdm9pZGlu
ZyBjb2RlIGR1cGxpY2F0aW9uIGFuZCBlbnN1cmluZyB0aGF0IGJvdGggdGhlCisgICAgICAgIFcz
QyBQYXltZW50IFJlcXVlc3QgQVBJIGFuZCBBcHBsZSBQYXkgSlMgaGF2ZSB0aGUgc2FtZSBmZWF0
dXJlcyAoYWxiZWl0IGluIGRpZmZlcmVudCBwbGFjZXMpLgorCisgICAgICAgICogTW9kdWxlcy9w
YXltZW50cmVxdWVzdC9QYXltZW50RGV0YWlsc0Jhc2UuaWRsOgorICAgICAgICAqIE1vZHVsZXMv
cGF5bWVudHJlcXVlc3QvUGF5bWVudERldGFpbHNCYXNlLmg6CisgICAgICAgICogTW9kdWxlcy9w
YXltZW50cmVxdWVzdC9QYXltZW50SXRlbS5pZGw6CisgICAgICAgICogTW9kdWxlcy9wYXltZW50
cmVxdWVzdC9QYXltZW50SXRlbS5oOgorICAgICAgICAqIE1vZHVsZXMvcGF5bWVudHJlcXVlc3Qv
UGF5bWVudFNoaXBwaW5nT3B0aW9uLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3BheW1lbnRyZXF1
ZXN0L1BheW1lbnRTaGlwcGluZ09wdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvcGF5bWVudHJl
cXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tBbmRDYW5v
bmljYWxpemVQYXltZW50SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpjaGVja0FuZENhbm9uaWNh
bGl6ZVRvdGFsKToKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrQW5kQ2Fub25pY2FsaXplRGV0YWls
cyk6CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpzZXR0bGVEZXRhaWxzUHJvbWlzZSk6CisgICAgICAg
IFJlbW92ZSB0aGUgSURMIGBvYmplY3QgZGF0YTtgIGFuZCBhc3NvY2lhdGVkIG1lbWJlcnMvbG9n
aWMgbm93IHRoYXQgdGhlIHBhcnNlZCBkYXRhIGlzIGFsbAorICAgICAgICBwYXJ0IG9mIGBBcHBs
ZVBheU1vZGlmaWVyYC4gVGhlc2Ugb2JqZWN0cyBhcmUgbm93IGJhY2sgdG8gYmVpbmcgc3BlYyBj
b21wbGlhbnQuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5w
bDoKKyAgICAgICAgKGdldFBhcnRpYWxOYW1lc0Zyb21JREwpOgorICAgICAgICAoZ2V0SW5jbHVk
ZXNGcm9tSURMKTogQWRkZWQuCisgICAgICAgIChnZXRVbmRlZmluZWRCYXNlRGljdGlvbmFyaWVz
RnJvbUlETCk6CisgICAgICAgIChnZXRJbmNsdWRlZEludGVyZmFjZXNGcm9tSURMKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbToKKyAgICAgICAgKHBh
cnNlRGVmaW5pdGlvbik6CisgICAgICAgIChwYXJzZUNhbGxiYWNrT3JJbnRlcmZhY2VPckludGVy
ZmFjZU1peGluKTogQWRkZWQvCisgICAgICAgIChwYXJzZUludGVyZmFjZU9ySW50ZXJmYWNlTWl4
aW4pOiBBZGRlZC4KKyAgICAgICAgKHBhcnNlSW50ZXJmYWNlTWl4aW4pOiBBZGRlZC4KKyAgICAg
ICAgKHBhcnNlSW50ZXJmYWNlTWl4aW5NZW1iZXJzKTogQWRkZWQuCisgICAgICAgIChwYXJzZUlu
dGVyZmFjZU1peGluTWVtYmVyKTogQWRkZWQuCisgICAgICAgIChwYXJzZVBhcnRpYWxEZWZpbml0
aW9uKToKKyAgICAgICAgKHBhcnNlUGFydGlhbEludGVyZmFjZU9yUGFydGlhbEludGVyZmFjZU1p
eGluKTogQWRkZWQuCisgICAgICAgIChwYXJzZVBhcnRpYWxEaWN0aW9uYXJ5T3JQYXJ0aWFsRGlj
dGlvbmFyeU1peGluKTogQWRkZWQuCisgICAgICAgIChwYXJzZURpY3Rpb25hcnlPckRpY3Rpb25h
cnlNaXhpbik6IEFkZGVkLgorICAgICAgICAocGFyc2VEaWN0aW9uYXJ5TWl4aW4pOiBBZGRlZC4K
KyAgICAgICAgKHBhcnNlRGljdGlvbmFyeSk6CisgICAgICAgIChwYXJzZUluY2x1ZGVzU3RhdGVt
ZW50KToKKyAgICAgICAgKHBhcnNlQ2FsbGJhY2tPckludGVyZmFjZU9yTWl4aW4pOiBEZWxldGVk
LgorICAgICAgICAocGFyc2VJbnRlcmZhY2VPck1peGluKTogRGVsZXRlZC4KKyAgICAgICAgKHBh
cnNlTWl4aW4pOiBEZWxldGVkLgorICAgICAgICAocGFyc2VNaXhpbk1lbWJlcnMpOiBEZWxldGVk
LgorICAgICAgICAocGFyc2VNaXhpbk1lbWJlcik6IERlbGV0ZWQuCisgICAgICAgIChwYXJzZVBh
cnRpYWxJbnRlcmZhY2VPclBhcnRpYWxNaXhpbik6IERlbGV0ZWQuCisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtOgorICAgICAgICAoUHJvY2Vzc0RpY3Rpb25hcmll
cyk6CisgICAgICAgIChJc1ZhbGlkU3VwcGxlbWVudGFsRGljdGlvbmFyeSk6CisgICAgICAgIChQ
cm9jZXNzSW50ZXJmYWNlU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzKToKKyAgICAgICAgKFByb2Nl
c3NEaWN0aW9uYXJ5U3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzKToKKyAgICAgICAgQWRkIHN1cHBv
cnQgZm9yIGBkaWN0aW9uYXJ5IG1peGluYCBhbmQgYHBhcnRpYWwgZGljdGlvbmFyeSBtaXhpbmAu
IFNpbmNlIGBkaWN0aW9uYXJ5YCBhcmUKKyAgICAgICAgYmFzaWNhbGx5IGp1c3QgYSBwbGFpbiBK
UyBgb2JqZWN0YCB3aXRoIG5vIHNwZWNpYWwgcHJvdG90eXBlL2luaGVyaXRhbmNlLCBpdCBtYWtl
cyBzZW5zZQorICAgICAgICB0byBhbGxvdyBmb3IgbXVsdGlwbGUgaW5oZXJpdGFuY2UgaW4gdGhl
IGZvcm0gb2YgYG1peGluYCAoanVzdCBsaWtlIGZvciBgaW50ZXJmYWNlYCkuIFNlZQorICAgICAg
ICBhYm92ZSBmb3IgYW4gZXhhbXBsZSBvZiBob3cgdGhpcyBpcyB1c2VkLiBOb3RlIHRoYXQgYGRp
Y3Rpb25hcnkgbWl4aW5gIGlzIG5vdCBvZmZpY2lhbGx5CisgICAgICAgIHN1cHBvcnRlZCBieSBX
ZWIgSURMLCBidXQgaXQgc2VlbWVkIHNpbXBsZXIgKGFuZCBtb3JlIHJlYXNvbmFibGUvZmFtaWxp
YXIpIHRvIGFkZCBzdXBwb3J0CisgICAgICAgIGZvciBpdCBpbnN0ZWFkIG9mIHNvbWV0aGluZyBs
aWtlIGEgY3VzdG9tL25vbnN0YW5kYXJkIGV4dGVuZGVkIGF0dHJpYnV0ZS4KKworICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RGljdGlvbmFyeS5pZGw6IEFkZGVkLgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REaWN0aW9uYXJ5Lmg6IEFkZGVkLgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REaWN0aW9uYXJ5LmNwcDog
QWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RNaXhpbkRpY3Rpb25h
cnkuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TWl4aW5EaWN0aW9uYXJ5Lmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RNaXhpbkRpY3Rpb25hcnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVGVzdFBhcnRpYWxNaXhpbkRpY3Rpb25hcnkuaWRsOiBBZGRlZC4KKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGFydGlhbE1peGluRGljdGlv
bmFyeS5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
UGFydGlhbE1peGluRGljdGlvbmFyeS5jcHA6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwOgorCiAyMDIxLTAzLTIyICBS
b2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgRW5hYmxlIGFiaWxpdHkgdG8g
cHJldmVudCBzY3JvbGxpbmcgaW4gRWxlbWVudC5mb2N1cygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5RGV0YWlsc1VwZGF0ZUJhc2UuaWRsIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheURldGFpbHNVcGRhdGVCYXNl
LmlkbAppbmRleCA2MTVlODZkZWZjMjJkMjllM2FiOWEwNGRlZDY5NjdhODhiMWQ1ZmYzLi4zNjQ5
YmJiYzkzYTVhZmY2ODY2NmJmYWVjOWYwM2VlOWZlM2Y4NmNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5RGV0YWlsc1VwZGF0ZUJhc2UuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlEZXRhaWxzVXBkYXRl
QmFzZS5pZGwKQEAgLTI5LDMgKzI5LDUgQEAKICAgICByZXF1aXJlZCBBcHBsZVBheUxpbmVJdGVt
IG5ld1RvdGFsOwogICAgIHNlcXVlbmNlPEFwcGxlUGF5TGluZUl0ZW0+IG5ld0xpbmVJdGVtczsK
IH07CisKK0FwcGxlUGF5RGV0YWlsc1VwZGF0ZUJhc2UgaW5jbHVkZXMgQXBwbGVQYXlEZXRhaWxz
VXBkYXRlRGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
QXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEuaWRsCmluZGV4IDY3MTg4MTQyMDUzMjJm
MWYzZTI5NDJkM2I5NTJhNDMyNWYzNjQ3OGEuLjAyNjAwMzVjZGRkZTk2MTYzNzhkNGZjMTgxMzlh
ODUwMDQ2Njg4M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
QXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheURldGFpbHNVcGRhdGVEYXRhLmlkbApAQCAtMjUsNSArMjUsNSBA
QAogCiBbCiAgICAgQ29uZGl0aW9uYWw9QVBQTEVfUEFZLAotXSBkaWN0aW9uYXJ5IEFwcGxlUGF5
RGV0YWlsc1VwZGF0ZURhdGEgeworXSBkaWN0aW9uYXJ5IG1peGluIEFwcGxlUGF5RGV0YWlsc1Vw
ZGF0ZURhdGEgewogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvQXBwbGVQYXlMaW5lSXRlbS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5TGluZUl0ZW0uaWRsCmluZGV4IGE0MmI3NzI0YmU4ZjY4Nzg1NWQ0NjA5NjNmZGI4
MWE0YmQ3MTlhOGMuLjA3MDUzMTcwYzdjYWU3YmExMWM4OGZmMDY2YTlhNDM5NzYxYTgzMTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5lSXRl
bS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxpbmVJ
dGVtLmlkbApAQCAtMzQsOCArMzQsMTAgQEAKICAgICBDb25kaXRpb25hbD1BUFBMRV9QQVksCiAg
ICAgRXhwb3J0TWFjcm89V0VCQ09SRV9FWFBPUlQsCiAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3Qs
Ci1dIGRpY3Rpb25hcnkgQXBwbGVQYXlMaW5lSXRlbSA6IEFwcGxlUGF5TGluZUl0ZW1EYXRhIHsK
K10gZGljdGlvbmFyeSBBcHBsZVBheUxpbmVJdGVtIHsKICAgICBBcHBsZVBheUxpbmVJdGVtVHlw
ZSB0eXBlID0gImZpbmFsIjsKICAgICBET01TdHJpbmcgbGFiZWw7CiAgICAgRE9NU3RyaW5nIGFt
b3VudDsKIH07CisKK0FwcGxlUGF5TGluZUl0ZW0gaW5jbHVkZXMgQXBwbGVQYXlMaW5lSXRlbURh
dGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5
TGluZUl0ZW1EYXRhLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlMaW5lSXRlbURhdGEuaWRsCmluZGV4IDNkNGViN2QyMTNhZTA1NTJlZDliZjc0Y2ZkOTU4NGQx
MTY2MzZlNDMuLmY0MDY3ODgzYmQzYzNiY2E5ZTUxYjg5YmI1ZDQwNjMwY2I3ZWFjMjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5lSXRlbURh
dGEuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5l
SXRlbURhdGEuaWRsCkBAIC0yNSw2ICsyNSw1IEBACiAKIFsKICAgICBDb25kaXRpb25hbD1BUFBM
RV9QQVksCi0gICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCi1dIGRpY3Rpb25hcnkgQXBwbGVQYXlM
aW5lSXRlbURhdGEgeworXSBkaWN0aW9uYXJ5IG1peGluIEFwcGxlUGF5TGluZUl0ZW1EYXRhIHsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5
U2hpcHBpbmdNZXRob2QuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheVNoaXBwaW5nTWV0aG9kLmlkbAppbmRleCBlMGYyYTI0MWJjYTUyZjZlNDBlYjhiYzg3YmZi
ZjUwZDFmNjllZTM5Li5lODA2MjA4MjE2YTM0NDFhZmE1Y2MzNzY1N2RkZmNhYmQzYzBjMWUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBp
bmdNZXRob2QuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlTaGlwcGluZ01ldGhvZC5pZGwKQEAgLTI3LDkgKzI3LDExIEBACiAgICAgQ29uZGl0aW9uYWw9
QVBQTEVfUEFZLAogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAogICAgIEpTR2VuZXJh
dGVUb0pTT2JqZWN0LAotXSBkaWN0aW9uYXJ5IEFwcGxlUGF5U2hpcHBpbmdNZXRob2QgOiBBcHBs
ZVBheVNoaXBwaW5nTWV0aG9kRGF0YSB7CitdIGRpY3Rpb25hcnkgQXBwbGVQYXlTaGlwcGluZ01l
dGhvZCB7CiAgICAgcmVxdWlyZWQgRE9NU3RyaW5nIGxhYmVsOwogICAgIHJlcXVpcmVkIERPTVN0
cmluZyBkZXRhaWw7CiAgICAgcmVxdWlyZWQgRE9NU3RyaW5nIGFtb3VudDsKICAgICByZXF1aXJl
ZCBET01TdHJpbmcgaWRlbnRpZmllcjsKIH07CisKK0FwcGxlUGF5U2hpcHBpbmdNZXRob2QgaW5j
bHVkZXMgQXBwbGVQYXlTaGlwcGluZ01ldGhvZERhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdNZXRob2REYXRhLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ01ldGhvZERhdGEu
aWRsCmluZGV4IGMwMTVmOTk0OTBmMGVhNzg5OTBlYmFlOTgzYzRjYzdlMWNkMGQ3ZTguLjk1Yjkz
ODBhN2U2ZTk5Njc0YjExMDE0MGZkYzYzMzkyYWNjZmFiYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ01ldGhvZERhdGEuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ01ldGhv
ZERhdGEuaWRsCkBAIC0yNSw3ICsyNSw1IEBACiAKIFsKICAgICBDb25kaXRpb25hbD1BUFBMRV9Q
QVksCi0gICAgRXhwb3J0TWFjcm89V0VCQ09SRV9FWFBPUlQsCi0gICAgSlNHZW5lcmF0ZVRvSlNP
YmplY3QsCi1dIGRpY3Rpb25hcnkgQXBwbGVQYXlTaGlwcGluZ01ldGhvZERhdGEgeworXSBkaWN0
aW9uYXJ5IG1peGluIEFwcGxlUGF5U2hpcHBpbmdNZXRob2REYXRhIHsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5
TW9kaWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVl
c3QvQXBwbGVQYXlNb2RpZmllci5oCmluZGV4IGNkZmE3N2UwZTc3YzU4MWI4YjU2ZTAyZDMxYTZm
NDBjMTViZmYyNjguLmExNDRhYmRmOTJmYjc4MDE3ODI5MjMxZTU1ZGRhMDViYjRhYTFmNDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3Qv
QXBwbGVQYXlNb2RpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
cGF5bWVudHJlcXVlc3QvQXBwbGVQYXlNb2RpZmllci5oCkBAIC0yNywxMiArMjcsMTYgQEAKIAog
I2lmIEVOQUJMRShBUFBMRV9QQVkpICYmIEVOQUJMRShQQVlNRU5UX1JFUVVFU1QpCiAKKyNpbmNs
dWRlICJBcHBsZVBheURldGFpbHNVcGRhdGVEYXRhLmgiCisjaW5jbHVkZSAiQXBwbGVQYXlMaW5l
SXRlbURhdGEuaCIKICNpbmNsdWRlICJBcHBsZVBheVBheW1lbnRNZXRob2RUeXBlLmgiCisjaW5j
bHVkZSAiQXBwbGVQYXlTaGlwcGluZ01ldGhvZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXN0cnVjdCBBcHBsZVBheU1vZGlmaWVyIHsKLSAgICBBcHBsZVBheVBheW1lbnRNZXRob2RUeXBl
IHBheW1lbnRNZXRob2RUeXBlOworc3RydWN0IEFwcGxlUGF5TW9kaWZpZXIgZmluYWwgOiBwdWJs
aWMgQXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YSwgcHVibGljIEFwcGxlUGF5TGluZUl0ZW1EYXRh
IHsKKyAgICBPcHRpb25hbDxBcHBsZVBheVBheW1lbnRNZXRob2RUeXBlPiBwYXltZW50TWV0aG9k
VHlwZTsKKyAgICBWZWN0b3I8QXBwbGVQYXlTaGlwcGluZ01ldGhvZD4gYWRkaXRpb25hbFNoaXBw
aW5nT3B0aW9uczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlNb2Rp
Zmllci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0
L0FwcGxlUGF5TW9kaWZpZXIuaWRsCmluZGV4IDA2Nzg5NDIzMWFlYmNlODE1OTBiZjBmZWFlMDc0
ZjI3ODhkM2M4MjIuLmIwMzVmOThmYTI2MjNiOGIxN2Y3NWEyMGQwOGRkNDg0MTRhZDBjZmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3Qv
QXBwbGVQYXlNb2RpZmllci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9wYXltZW50cmVxdWVzdC9BcHBsZVBheU1vZGlmaWVyLmlkbApAQCAtMjYsNSArMjYsOSBAQAog
WwogICAgIENvbmRpdGlvbmFsPUFQUExFX1BBWSZQQVlNRU5UX1JFUVVFU1QsCiBdIGRpY3Rpb25h
cnkgQXBwbGVQYXlNb2RpZmllciB7Ci0gICAgcmVxdWlyZWQgQXBwbGVQYXlQYXltZW50TWV0aG9k
VHlwZSBwYXltZW50TWV0aG9kVHlwZTsKKyAgICBBcHBsZVBheVBheW1lbnRNZXRob2RUeXBlIHBh
eW1lbnRNZXRob2RUeXBlOworICAgIHNlcXVlbmNlPEFwcGxlUGF5U2hpcHBpbmdNZXRob2Q+IGFk
ZGl0aW9uYWxTaGlwcGluZ09wdGlvbnM7CiB9OworCitBcHBsZVBheU1vZGlmaWVyIGluY2x1ZGVz
IEFwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGE7CitBcHBsZVBheU1vZGlmaWVyIGluY2x1ZGVzIEFw
cGxlUGF5TGluZUl0ZW1EYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50
SGFuZGxlci5jcHAKaW5kZXggNzMwZGM1OGI0OTYxZDdkOWI0MTU0Njc1ZWQ3ZmNjODFkNzZjMTMy
OS4uODMzNGFjYzdkYmM0NjJiMWI4OGRiNzA3YWQ4ZWMxMzcyMWQyNmY5YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBh
eW1lbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3Bh
eW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwCkBAIC02MSw2ICs2MSw3IEBA
CiAjaW5jbHVkZSAiUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMuaCIKICNpbmNsdWRlICJQYXlt
ZW50Q29udGFjdC5oIgogI2luY2x1ZGUgIlBheW1lbnRDb29yZGluYXRvci5oIgorI2luY2x1ZGUg
IlBheW1lbnREZXRhaWxzTW9kaWZpZXIuaCIKICNpbmNsdWRlICJQYXltZW50TWVyY2hhbnRTZXNz
aW9uLmgiCiAjaW5jbHVkZSAiUGF5bWVudE1ldGhvZC5oIgogI2luY2x1ZGUgIlBheW1lbnRSZXF1
ZXN0VXRpbGl0aWVzLmgiCkBAIC0xNDMsMTEgKzE0NCw3IEBAIHN0YXRpYyBFeGNlcHRpb25Pcjx2
b2lkPiB2YWxpZGF0ZShjb25zdCBQYXltZW50Q3VycmVuY3lBbW91bnQmIGFtb3VudCwgY29uc3Qg
U3RyCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotI2lmICFFTkFCTEUoQVBQTEVfUEFZX0xJTkVfSVRF
TV9EQVRBKQotc3RhdGljIHZvaWQgbWVyZ2UoQXBwbGVQYXlMaW5lSXRlbSYsIEFwcGxlUGF5TGlu
ZUl0ZW1EYXRhJiYpIHsgfQotI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfTElORV9JVEVNX0RB
VEEpCi0KLXN0YXRpYyBFeGNlcHRpb25PcjxBcHBsZVBheUxpbmVJdGVtPiBjb252ZXJ0QW5kVmFs
aWRhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgUGF5bWVudEl0ZW0m
IGl0ZW0sIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRDdXJyZW5jeSkKK3N0YXRpYyBFeGNlcHRpb25P
cjxBcHBsZVBheUxpbmVJdGVtPiBjb252ZXJ0QW5kVmFsaWRhdGUoY29uc3QgUGF5bWVudEl0ZW0m
IGl0ZW0sIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRDdXJyZW5jeSkKIHsKICAgICBhdXRvIGV4Y2Vw
dGlvbiA9IHZhbGlkYXRlKGl0ZW0uYW1vdW50LCBleHBlY3RlZEN1cnJlbmN5KTsKICAgICBpZiAo
ZXhjZXB0aW9uLmhhc0V4Y2VwdGlvbigpKQpAQCAtMTU4LDMzICsxNTUsMTUgQEAgc3RhdGljIEV4
Y2VwdGlvbk9yPEFwcGxlUGF5TGluZUl0ZW0+IGNvbnZlcnRBbmRWYWxpZGF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JgogICAgIGxpbmVJdGVtLmFtb3VudCA9IGl0ZW0uYW1vdW50LnZhbHVlOwog
ICAgIGxpbmVJdGVtLnR5cGUgPSBpdGVtLnBlbmRpbmcgPyBBcHBsZVBheUxpbmVJdGVtOjpUeXBl
OjpQZW5kaW5nIDogQXBwbGVQYXlMaW5lSXRlbTo6VHlwZTo6RmluYWw7CiAgICAgbGluZUl0ZW0u
bGFiZWwgPSBpdGVtLmxhYmVsOwotCi0gICAgaWYgKCFpdGVtLnNlcmlhbGl6ZWREYXRhLmlzRW1w
dHkoKSkgewotICAgICAgICBhdXRvJiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gKmNvbnRleHQuZ2xv
YmFsT2JqZWN0KCk7Ci0gICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGxl
eGljYWxHbG9iYWxPYmplY3Qudm0oKSk7Ci0gICAgICAgIEpTQzo6SlNWYWx1ZSBkYXRhOwotICAg
ICAgICB7Ci0gICAgICAgICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKLSAgICAgICAgICAgIGRhdGEgPSBKU09OUGFyc2UoJmxleGljYWxHbG9iYWxPYmpl
Y3QsIGl0ZW0uc2VyaWFsaXplZERhdGEpOwotICAgICAgICAgICAgaWYgKHNjb3BlLmV4Y2VwdGlv
bigpKQotICAgICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlv
bkVycm9yIH07Ci0gICAgICAgIH0KLQotICAgICAgICBhdXRvIGFwcGxlUGF5TGluZUl0ZW1EYXRh
ID0gY29udmVydERpY3Rpb25hcnk8QXBwbGVQYXlMaW5lSXRlbURhdGE+KGxleGljYWxHbG9iYWxP
YmplY3QsIFdURk1vdmUoZGF0YSkpOwotICAgICAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpCi0g
ICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9Owot
ICAgICAgICBtZXJnZShsaW5lSXRlbSwgV1RGTW92ZShhcHBsZVBheUxpbmVJdGVtRGF0YSkpOwot
ICAgIH0KLQogICAgIHJldHVybiB7IFdURk1vdmUobGluZUl0ZW0pIH07CiB9CiAKLXN0YXRpYyBF
eGNlcHRpb25PcjxWZWN0b3I8QXBwbGVQYXlMaW5lSXRlbT4+IGNvbnZlcnRBbmRWYWxpZGF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBWZWN0b3I8UGF5bWVudEl0ZW0+
JiBsaW5lSXRlbXMsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRDdXJyZW5jeSkKK3N0YXRpYyBFeGNl
cHRpb25PcjxWZWN0b3I8QXBwbGVQYXlMaW5lSXRlbT4+IGNvbnZlcnRBbmRWYWxpZGF0ZShjb25z
dCBWZWN0b3I8UGF5bWVudEl0ZW0+JiBsaW5lSXRlbXMsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRD
dXJyZW5jeSkKIHsKICAgICBWZWN0b3I8QXBwbGVQYXlMaW5lSXRlbT4gcmVzdWx0OwogICAgIHJl
c3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxpbmVJdGVtcy5zaXplKCkpOwogICAgIGZvciAo
YXV0byYgbGluZUl0ZW0gOiBsaW5lSXRlbXMpIHsKLSAgICAgICAgYXV0byBjb252ZXJ0ZWRMaW5l
SXRlbSA9IGNvbnZlcnRBbmRWYWxpZGF0ZShjb250ZXh0LCBsaW5lSXRlbSwgZXhwZWN0ZWRDdXJy
ZW5jeSk7CisgICAgICAgIGF1dG8gY29udmVydGVkTGluZUl0ZW0gPSBjb252ZXJ0QW5kVmFsaWRh
dGUobGluZUl0ZW0sIGV4cGVjdGVkQ3VycmVuY3kpOwogICAgICAgICBpZiAoY29udmVydGVkTGlu
ZUl0ZW0uaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gY29udmVydGVkTGluZUl0
ZW0ucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgICAgICByZXN1bHQudW5jaGVja2VkQXBwZW5kKGNv
bnZlcnRlZExpbmVJdGVtLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKQEAgLTIwNywxMSArMTg2LDcg
QEAgc3RhdGljIEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ1R5cGUgY29u
dmVydChQYXltZW50U2hpcHBpbmdUeXBlIHQKICAgICByZXR1cm4gQXBwbGVQYXlTZXNzaW9uUGF5
bWVudFJlcXVlc3Q6OlNoaXBwaW5nVHlwZTo6U2hpcHBpbmc7CiB9CiAKLSNpZiAhRU5BQkxFKEFQ
UExFX1BBWV9TSElQUElOR19NRVRIT0RfREFUQSkKLXN0YXRpYyB2b2lkIG1lcmdlKEFwcGxlUGF5
U2hpcHBpbmdNZXRob2QmLCBBcHBsZVBheVNoaXBwaW5nTWV0aG9kRGF0YSYmKSB7IH0KLSNlbmRp
ZgotCi1zdGF0aWMgRXhjZXB0aW9uT3I8QXBwbGVQYXlTaGlwcGluZ01ldGhvZD4gY29udmVydEFu
ZFZhbGlkYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFBheW1lbnRT
aGlwcGluZ09wdGlvbiYgc2hpcHBpbmdPcHRpb24sIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRDdXJy
ZW5jeSkKK3N0YXRpYyBFeGNlcHRpb25PcjxBcHBsZVBheVNoaXBwaW5nTWV0aG9kPiBjb252ZXJ0
QW5kVmFsaWRhdGUoY29uc3QgUGF5bWVudFNoaXBwaW5nT3B0aW9uJiBzaGlwcGluZ09wdGlvbiwg
Y29uc3QgU3RyaW5nJiBleHBlY3RlZEN1cnJlbmN5KQogewogICAgIGF1dG8gZXhjZXB0aW9uID0g
dmFsaWRhdGUoc2hpcHBpbmdPcHRpb24uYW1vdW50LCBleHBlY3RlZEN1cnJlbmN5KTsKICAgICBp
ZiAoZXhjZXB0aW9uLmhhc0V4Y2VwdGlvbigpKQpAQCAtMjIxLDU3ICsxOTYsOSBAQCBzdGF0aWMg
RXhjZXB0aW9uT3I8QXBwbGVQYXlTaGlwcGluZ01ldGhvZD4gY29udmVydEFuZFZhbGlkYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbgogICAgIHJlc3VsdC5hbW91bnQgPSBzaGlwcGluZ09wdGlvbi5hbW91
bnQudmFsdWU7CiAgICAgcmVzdWx0LmxhYmVsID0gc2hpcHBpbmdPcHRpb24ubGFiZWw7CiAgICAg
cmVzdWx0LmlkZW50aWZpZXIgPSBzaGlwcGluZ09wdGlvbi5pZDsKLQotICAgIGlmICghc2hpcHBp
bmdPcHRpb24uc2VyaWFsaXplZERhdGEuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGF1dG8mIGxleGlj
YWxHbG9iYWxPYmplY3QgPSAqY29udGV4dC5nbG9iYWxPYmplY3QoKTsKLSAgICAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpKTsKLSAg
ICAgICAgSlNDOjpKU1ZhbHVlIGRhdGE7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEpTQzo6SlNM
b2NrSG9sZGVyIGxvY2soJmxleGljYWxHbG9iYWxPYmplY3QpOwotICAgICAgICAgICAgZGF0YSA9
IEpTT05QYXJzZSgmbGV4aWNhbEdsb2JhbE9iamVjdCwgc2hpcHBpbmdPcHRpb24uc2VyaWFsaXpl
ZERhdGEpOwotICAgICAgICAgICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKQotICAgICAgICAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH07Ci0gICAgICAg
IH0KLQotICAgICAgICBhdXRvIGFwcGxlUGF5U2hpcHBpbmdNZXRob2REYXRhID0gY29udmVydERp
Y3Rpb25hcnk8QXBwbGVQYXlTaGlwcGluZ01ldGhvZERhdGE+KGxleGljYWxHbG9iYWxPYmplY3Qs
IFdURk1vdmUoZGF0YSkpOwotICAgICAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpCi0gICAgICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9OwotICAgICAg
ICBtZXJnZShyZXN1bHQsIFdURk1vdmUoYXBwbGVQYXlTaGlwcGluZ01ldGhvZERhdGEpKTsKLSAg
ICB9Ci0KICAgICByZXR1cm4geyBXVEZNb3ZlKHJlc3VsdCkgfTsKIH0KIAotI2lmICFFTkFCTEUo
QVBQTEVfUEFZX1BBWU1FTlRfREVUQUlMU19EQVRBKQotc3RhdGljIEV4Y2VwdGlvbk9yPHZvaWQ+
IHZhbGlkYXRlKGNvbnN0IEFwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEmKSB7IHJldHVybiB7IH07
IH0KLSNlbmRpZgotCi1zdGF0aWMgRXhjZXB0aW9uT3I8QXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0
YT4gY29udmVydEFuZFZhbGlkYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNv
bnN0IFBheW1lbnREZXRhaWxzQmFzZSYgZGV0YWlscykKLXsKLSAgICBBcHBsZVBheURldGFpbHNV
cGRhdGVEYXRhIHJlc3VsdDsKLSAgICBpZiAoZGV0YWlscy5zZXJpYWxpemVkRGF0YS5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0KLSAgICBhdXRvJiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0ID0gKmNvbnRleHQuZ2xvYmFsT2JqZWN0KCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpKTsKLSAgICBKU0M6OkpTVmFsdWUg
ZGF0YTsKLSAgICB7Ci0gICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soJmxleGljYWxHbG9i
YWxPYmplY3QpOwotICAgICAgICBkYXRhID0gSlNPTlBhcnNlKCZsZXhpY2FsR2xvYmFsT2JqZWN0
LCBkZXRhaWxzLnNlcmlhbGl6ZWREYXRhKTsKLSAgICAgICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigp
KQotICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3Ig
fTsKLSAgICB9Ci0KLSAgICByZXN1bHQgPSBjb252ZXJ0RGljdGlvbmFyeTxBcHBsZVBheURldGFp
bHNVcGRhdGVEYXRhPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGRhdGEpKTsKLSAgICBp
ZiAoc2NvcGUuZXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBFeGlzdGlu
Z0V4Y2VwdGlvbkVycm9yIH07Ci0gICAgYXV0byBleGNlcHRpb24gPSB2YWxpZGF0ZShyZXN1bHQp
OwotICAgIGlmIChleGNlcHRpb24uaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBleGNl
cHRpb24ucmVsZWFzZUV4Y2VwdGlvbigpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogRXhj
ZXB0aW9uT3I8dm9pZD4gQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6Y29udmVydERhdGEoSlNDOjpK
U1ZhbHVlIGRhdGEpCiB7CiAgICAgYXV0byByZXF1ZXN0T3JFeGNlcHRpb24gPSBjb252ZXJ0QW5k
VmFsaWRhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgZGF0YSk7CkBAIC0zMDAsOCArMjI3
LDggQEAgc3RhdGljIHZvaWQgbWVyZ2VQYXltZW50T3B0aW9ucyhjb25zdCBQYXltZW50T3B0aW9u
cyYgb3B0aW9ucywgQXBwbGVQYXlTZXNzaW9uUGEKIH0KIAogI2lmICFFTkFCTEUoQVBQTEVfUEFZ
X1BBWU1FTlRfREVUQUlMU19EQVRBKQotc3RhdGljIHZvaWQgbWVyZ2UoQXBwbGVQYXlTZXNzaW9u
UGF5bWVudFJlcXVlc3QmLCBBcHBsZVBheURldGFpbHNVcGRhdGVEYXRhJiYpIHsgfQotI2VuZGlm
IC8vIEVOQUJMRShBUFBMRV9QQVlfUEFZTUVOVF9ERVRBSUxTX0RBVEEpCitzdGF0aWMgdm9pZCBt
ZXJnZShBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYsIEFwcGxlUGF5TW9kaWZpZXImJikg
eyB9CisjZW5kaWYgLy8gIUVOQUJMRShBUFBMRV9QQVlfUEFZTUVOVF9ERVRBSUxTX0RBVEEpCiAK
IEV4Y2VwdGlvbk9yPHZvaWQ+IEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OnNob3coRG9jdW1lbnQm
IGRvY3VtZW50KQogewpAQCAtMzE3LDEyICsyNDQsMTIgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXBw
bGVQYXlQYXltZW50SGFuZGxlcjo6c2hvdyhEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgU3RyaW5n
IGV4cGVjdGVkQ3VycmVuY3kgPSBkZXRhaWxzLnRvdGFsLmFtb3VudC5jdXJyZW5jeTsKICAgICBy
ZXF1ZXN0LnNldEN1cnJlbmN5Q29kZShleHBlY3RlZEN1cnJlbmN5KTsKIAotICAgIGF1dG8gdG90
YWwgPSBjb252ZXJ0QW5kVmFsaWRhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgZGV0YWls
cy50b3RhbCwgZXhwZWN0ZWRDdXJyZW5jeSk7CisgICAgYXV0byB0b3RhbCA9IGNvbnZlcnRBbmRW
YWxpZGF0ZShkZXRhaWxzLnRvdGFsLCBleHBlY3RlZEN1cnJlbmN5KTsKICAgICBBU1NFUlQoIXRv
dGFsLmhhc0V4Y2VwdGlvbigpKTsKICAgICByZXF1ZXN0LnNldFRvdGFsKHRvdGFsLnJlbGVhc2VS
ZXR1cm5WYWx1ZSgpKTsKIAogICAgIGlmIChkZXRhaWxzLmRpc3BsYXlJdGVtcykgewotICAgICAg
ICBhdXRvIGNvbnZlcnRlZExpbmVJdGVtcyA9IGNvbnZlcnRBbmRWYWxpZGF0ZSgqc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCAqZGV0YWlscy5kaXNwbGF5SXRlbXMsIGV4cGVjdGVkQ3VycmVuY3kp
OworICAgICAgICBhdXRvIGNvbnZlcnRlZExpbmVJdGVtcyA9IGNvbnZlcnRBbmRWYWxpZGF0ZSgq
ZGV0YWlscy5kaXNwbGF5SXRlbXMsIGV4cGVjdGVkQ3VycmVuY3kpOwogICAgICAgICBpZiAoY29u
dmVydGVkTGluZUl0ZW1zLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIGNvbnZl
cnRlZExpbmVJdGVtcy5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAgIHJlcXVlc3Quc2V0TGlu
ZUl0ZW1zKGNvbnZlcnRlZExpbmVJdGVtcy5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CkBAIC0zMzUs
MTAgKzI2MiwxNiBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpz
aG93KERvY3VtZW50JiBkb2N1bWVudCkKICAgICAgICAgcmV0dXJuIHNoaXBwaW5nTWV0aG9kcy5y
ZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgcmVxdWVzdC5zZXRTaGlwcGluZ01ldGhvZHMoc2hpcHBp
bmdNZXRob2RzLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKIAotICAgIGF1dG8gYXBwbGVQYXlEZXRh
aWxzVXBkYXRlRGF0YSA9IGNvbnZlcnRBbmRWYWxpZGF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLCBtX3BheW1lbnRSZXF1ZXN0LT5wYXltZW50RGV0YWlscygpKTsKLSAgICBpZiAoYXBwbGVQ
YXlEZXRhaWxzVXBkYXRlRGF0YS5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIGFwcGxl
UGF5RGV0YWlsc1VwZGF0ZURhdGEucmVsZWFzZUV4Y2VwdGlvbigpOwotICAgIG1lcmdlKHJlcXVl
c3QsIGFwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEucmVsZWFzZVJldHVyblZhbHVlKCkpOworICAg
IGF1dG8gbW9kaWZpZXJFeGNlcHRpb24gPSBmaXJzdEFwcGxpY2FibGVNb2RpZmllcigpOworICAg
IGlmIChtb2RpZmllckV4Y2VwdGlvbi5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIG1v
ZGlmaWVyRXhjZXB0aW9uLnJlbGVhc2VFeGNlcHRpb24oKTsKKyAgICBpZiAoYXV0byBtb2RpZmll
ckRhdGEgPSBtb2RpZmllckV4Y2VwdGlvbi5yZWxlYXNlUmV0dXJuVmFsdWUoKSkgeworICAgICAg
ICBhdXRvJiBbbW9kaWZpZXIsIGFwcGxlUGF5TW9kaWZpZXJdID0gKm1vZGlmaWVyRGF0YTsKKwor
ICAgICAgICBVTlVTRURfUEFSQU0obW9kaWZpZXIpOworCisgICAgICAgIG1lcmdlKHJlcXVlc3Qs
IFdURk1vdmUoYXBwbGVQYXlNb2RpZmllcikpOworICAgIH0KIAogICAgIGF1dG8gZXhjZXB0aW9u
ID0gUGF5bWVudFJlcXVlc3RWYWxpZGF0b3I6OnZhbGlkYXRlKHJlcXVlc3QpOwogICAgIGlmIChl
eGNlcHRpb24uaGFzRXhjZXB0aW9uKCkpCkBAIC0zNjAsNyArMjkzLDcgQEAgdm9pZCBBcHBsZVBh
eVBheW1lbnRIYW5kbGVyOjpjYW5NYWtlUGF5bWVudChEb2N1bWVudCYgZG9jdW1lbnQsIEZ1bmN0
aW9uPHZvaWQoYm8KICAgICBjb21wbGV0aW9uSGFuZGxlcihwYXltZW50Q29vcmRpbmF0b3IoKS5j
YW5NYWtlUGF5bWVudHMoZG9jdW1lbnQpKTsKIH0KIAotRXhjZXB0aW9uT3I8VmVjdG9yPEFwcGxl
UGF5U2hpcHBpbmdNZXRob2Q+PiBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpjb21wdXRlU2hpcHBp
bmdNZXRob2RzKCkKK0V4Y2VwdGlvbk9yPFZlY3RvcjxBcHBsZVBheVNoaXBwaW5nTWV0aG9kPj4g
QXBwbGVQYXlQYXltZW50SGFuZGxlcjo6Y29tcHV0ZVNoaXBwaW5nTWV0aG9kcygpIGNvbnN0CiB7
CiAgICAgYXV0byYgZGV0YWlscyA9IG1fcGF5bWVudFJlcXVlc3QtPnBheW1lbnREZXRhaWxzKCk7
CiAKQEAgLTM3MCw4MCArMzAzLDY5IEBAIEV4Y2VwdGlvbk9yPFZlY3RvcjxBcHBsZVBheVNoaXBw
aW5nTWV0aG9kPj4gQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6Y29tcHV0ZVNoaXBwCiAKICAgICAg
ICAgc2hpcHBpbmdPcHRpb25zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZGV0YWlscy5zaGlwcGlu
Z09wdGlvbnMtPnNpemUoKSk7CiAgICAgICAgIGZvciAoYXV0byYgc2hpcHBpbmdPcHRpb24gOiAq
ZGV0YWlscy5zaGlwcGluZ09wdGlvbnMpIHsKLSAgICAgICAgICAgIGF1dG8gc2hpcHBpbmdNZXRo
b2QgPSBjb252ZXJ0QW5kVmFsaWRhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgc2hpcHBp
bmdPcHRpb24sIGN1cnJlbmN5KTsKKyAgICAgICAgICAgIGF1dG8gc2hpcHBpbmdNZXRob2QgPSBj
b252ZXJ0QW5kVmFsaWRhdGUoc2hpcHBpbmdPcHRpb24sIGN1cnJlbmN5KTsKICAgICAgICAgICAg
IGlmIChzaGlwcGluZ01ldGhvZC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gc2hpcHBpbmdNZXRob2QucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgICAgICAgICAgc2hpcHBp
bmdPcHRpb25zLnVuY2hlY2tlZEFwcGVuZChzaGlwcGluZ01ldGhvZC5yZWxlYXNlUmV0dXJuVmFs
dWUoKSk7CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBhdXRvIG1vZGlmaWVyRXhjZXB0aW9uID0g
Zmlyc3RBcHBsaWNhYmxlTW9kaWZpZXIoKTsKKyAgICBpZiAobW9kaWZpZXJFeGNlcHRpb24uaGFz
RXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBtb2RpZmllckV4Y2VwdGlvbi5yZWxlYXNlRXhj
ZXB0aW9uKCk7CisgICAgaWYgKGF1dG8gbW9kaWZpZXJEYXRhID0gbW9kaWZpZXJFeGNlcHRpb24u
cmVsZWFzZVJldHVyblZhbHVlKCkpIHsKKyAgICAgICAgYXV0byYgW21vZGlmaWVyLCBhcHBsZVBh
eU1vZGlmaWVyXSA9ICptb2RpZmllckRhdGE7CisKKyAgICAgICAgVU5VU0VEX1BBUkFNKG1vZGlm
aWVyKTsKKworICAgICAgICBzaGlwcGluZ09wdGlvbnMuYXBwZW5kVmVjdG9yKFdURk1vdmUoYXBw
bGVQYXlNb2RpZmllci5hZGRpdGlvbmFsU2hpcHBpbmdPcHRpb25zKSk7CisgICAgfQorCiAgICAg
cmV0dXJuIFdURk1vdmUoc2hpcHBpbmdPcHRpb25zKTsKIH0KIAorCisjaWYgIUVOQUJMRShBUFBM
RV9QQVlfTElORV9JVEVNX0RBVEEpCitzdGF0aWMgdm9pZCBtZXJnZShBcHBsZVBheUxpbmVJdGVt
JiwgQXBwbGVQYXlNb2RpZmllciYmKSB7IH0KKyNlbmRpZiAvLyAhRU5BQkxFKEFQUExFX1BBWV9M
SU5FX0lURU1fREFUQSkKKwogRXhjZXB0aW9uT3I8c3RkOjp0dXBsZTxBcHBsZVBheUxpbmVJdGVt
LCBWZWN0b3I8QXBwbGVQYXlMaW5lSXRlbT4+PiBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpjb21w
dXRlVG90YWxBbmRMaW5lSXRlbXMoKSBjb25zdAogewogICAgIGF1dG8mIGRldGFpbHMgPSBtX3Bh
eW1lbnRSZXF1ZXN0LT5wYXltZW50RGV0YWlscygpOwotICAgIFN0cmluZyBjdXJyZW5jeSA9IGRl
dGFpbHMudG90YWwuYW1vdW50LmN1cnJlbmN5OworICAgIGF1dG8mIGN1cnJlbmN5ID0gZGV0YWls
cy50b3RhbC5hbW91bnQuY3VycmVuY3k7CiAKLSAgICBhdXRvIGNvbnZlcnRlZFRvdGFsID0gY29u
dmVydEFuZFZhbGlkYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGRldGFpbHMudG90YWws
IGN1cnJlbmN5KTsKKyAgICBhdXRvIGNvbnZlcnRlZFRvdGFsID0gY29udmVydEFuZFZhbGlkYXRl
KGRldGFpbHMudG90YWwsIGN1cnJlbmN5KTsKICAgICBpZiAoY29udmVydGVkVG90YWwuaGFzRXhj
ZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBjb252ZXJ0ZWRUb3RhbC5yZWxlYXNlRXhjZXB0aW9u
KCk7CiAgICAgYXV0byB0b3RhbCA9IGNvbnZlcnRlZFRvdGFsLnJlbGVhc2VSZXR1cm5WYWx1ZSgp
OwogCiAgICAgVmVjdG9yPEFwcGxlUGF5TGluZUl0ZW0+IGxpbmVJdGVtczsKICAgICBpZiAoZGV0
YWlscy5kaXNwbGF5SXRlbXMpIHsKLSAgICAgICAgYXV0byBjb252ZXJ0ZWRMaW5lSXRlbXMgPSBj
b252ZXJ0QW5kVmFsaWRhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKmRldGFpbHMuZGlz
cGxheUl0ZW1zLCBjdXJyZW5jeSk7CisgICAgICAgIGF1dG8gY29udmVydGVkTGluZUl0ZW1zID0g
Y29udmVydEFuZFZhbGlkYXRlKCpkZXRhaWxzLmRpc3BsYXlJdGVtcywgY3VycmVuY3kpOwogICAg
ICAgICBpZiAoY29udmVydGVkTGluZUl0ZW1zLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAg
cmV0dXJuIGNvbnZlcnRlZExpbmVJdGVtcy5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAgIGxp
bmVJdGVtcyA9IGNvbnZlcnRlZExpbmVJdGVtcy5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKICAgICB9
CiAKLSAgICBpZiAoIW1fc2VsZWN0ZWRQYXltZW50TWV0aG9kVHlwZSkKLSAgICAgICAgcmV0dXJu
IHt7IFdURk1vdmUodG90YWwpLCBXVEZNb3ZlKGxpbmVJdGVtcykgfX07CisgICAgYXV0byBtb2Rp
ZmllckV4Y2VwdGlvbiA9IGZpcnN0QXBwbGljYWJsZU1vZGlmaWVyKCk7CisgICAgaWYgKG1vZGlm
aWVyRXhjZXB0aW9uLmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gbW9kaWZpZXJFeGNl
cHRpb24ucmVsZWFzZUV4Y2VwdGlvbigpOworICAgIGlmIChhdXRvIG1vZGlmaWVyRGF0YSA9IG1v
ZGlmaWVyRXhjZXB0aW9uLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKSB7CisgICAgICAgIGF1dG8mIFtt
b2RpZmllciwgYXBwbGVQYXlNb2RpZmllcl0gPSAqbW9kaWZpZXJEYXRhOwogCi0gICAgaWYgKGRl
dGFpbHMubW9kaWZpZXJzKSB7Ci0gICAgICAgIGF1dG8mIHNlcmlhbGl6ZWRNb2RpZmllckRhdGEg
PSBtX3BheW1lbnRSZXF1ZXN0LT5zZXJpYWxpemVkTW9kaWZpZXJEYXRhKCk7Ci0gICAgICAgIEFT
U0VSVChkZXRhaWxzLm1vZGlmaWVycy0+c2l6ZSgpID09IHNlcmlhbGl6ZWRNb2RpZmllckRhdGEu
c2l6ZSgpKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkZXRhaWxzLm1vZGlmaWVy
cy0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGF1dG8mIG1vZGlmaWVyID0gZGV0YWlscy5t
b2RpZmllcnMtPmF0KGkpOwotCi0gICAgICAgICAgICBhdXRvIGNvbnZlcnRlZElkZW50aWZpZXIg
PSBjb252ZXJ0QW5kVmFsaWRhdGVQYXltZW50TWV0aG9kSWRlbnRpZmllcihtb2RpZmllci5zdXBw
b3J0ZWRNZXRob2RzKTsKLSAgICAgICAgICAgIGlmICghY29udmVydGVkSWRlbnRpZmllciB8fCAh
aGFuZGxlc0lkZW50aWZpZXIoKmNvbnZlcnRlZElkZW50aWZpZXIpKQotICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotCi0gICAgICAgICAgICBpZiAoc2VyaWFsaXplZE1vZGlmaWVyRGF0YVtpXS5p
c0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIGF1dG8m
IGxleGljYWxHbG9iYWxPYmplY3QgPSAqZG9jdW1lbnQoKS5nbG9iYWxPYmplY3QoKTsKLSAgICAg
ICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGxleGljYWxHbG9iYWxPYmpl
Y3Qudm0oKSk7Ci0gICAgICAgICAgICBKU0M6OkpTVmFsdWUgZGF0YTsKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBhdXRvIGxvY2sgPSBKU0M6OkpTTG9ja0hvbGRlciB7ICZsZXhpY2Fs
R2xvYmFsT2JqZWN0IH07Ci0gICAgICAgICAgICAgICAgZGF0YSA9IEpTT05QYXJzZSgmbGV4aWNh
bEdsb2JhbE9iamVjdCwgc2VyaWFsaXplZE1vZGlmaWVyRGF0YVtpXSk7Ci0gICAgICAgICAgICAg
ICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9OwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICBhdXRvIGFwcGxlUGF5TW9kaWZpZXIgPSBjb252ZXJ0RGljdGlvbmFyeTxBcHBsZVBh
eU1vZGlmaWVyPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGRhdGEpKTsKLSAgICAgICAg
ICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9OwotCi0gICAgICAgICAgICBpZiAoYXBwbGVQ
YXlNb2RpZmllci5wYXltZW50TWV0aG9kVHlwZSAhPSAqbV9zZWxlY3RlZFBheW1lbnRNZXRob2RU
eXBlKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICBpZiAobW9kaWZp
ZXIudG90YWwpIHsKLSAgICAgICAgICAgICAgICBhdXRvIHRvdGFsT3ZlcnJpZGUgPSBjb252ZXJ0
QW5kVmFsaWRhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKm1vZGlmaWVyLnRvdGFsLCBj
dXJyZW5jeSk7Ci0gICAgICAgICAgICAgICAgaWYgKHRvdGFsT3ZlcnJpZGUuaGFzRXhjZXB0aW9u
KCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0b3RhbE92ZXJyaWRlLnJlbGVhc2VFeGNl
cHRpb24oKTsKLSAgICAgICAgICAgICAgICB0b3RhbCA9IHRvdGFsT3ZlcnJpZGUucmVsZWFzZVJl
dHVyblZhbHVlKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGF1dG8gYWRkaXRpb25h
bERpc3BsYXlJdGVtcyA9IGNvbnZlcnRBbmRWYWxpZGF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLCBtb2RpZmllci5hZGRpdGlvbmFsRGlzcGxheUl0ZW1zLCBjdXJyZW5jeSk7Ci0gICAgICAg
ICAgICBpZiAoYWRkaXRpb25hbERpc3BsYXlJdGVtcy5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gYWRkaXRpb25hbERpc3BsYXlJdGVtcy5yZWxlYXNlRXhjZXB0aW9uKCk7
Ci0gICAgICAgICAgICBsaW5lSXRlbXMuYXBwZW5kVmVjdG9yKGFkZGl0aW9uYWxEaXNwbGF5SXRl
bXMucmVsZWFzZVJldHVyblZhbHVlKCkpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlm
IChtb2RpZmllci50b3RhbCkgeworICAgICAgICAgICAgYXV0byB0b3RhbE92ZXJyaWRlID0gY29u
dmVydEFuZFZhbGlkYXRlKCptb2RpZmllci50b3RhbCwgY3VycmVuY3kpOworICAgICAgICAgICAg
aWYgKHRvdGFsT3ZlcnJpZGUuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IHRvdGFsT3ZlcnJpZGUucmVsZWFzZUV4Y2VwdGlvbigpOworICAgICAgICAgICAgdG90YWwgPSB0
b3RhbE92ZXJyaWRlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwogICAgICAgICB9CisKKyAgICAgICAg
YXV0byBhZGRpdGlvbmFsRGlzcGxheUl0ZW1zID0gY29udmVydEFuZFZhbGlkYXRlKG1vZGlmaWVy
LmFkZGl0aW9uYWxEaXNwbGF5SXRlbXMsIGN1cnJlbmN5KTsKKyAgICAgICAgaWYgKGFkZGl0aW9u
YWxEaXNwbGF5SXRlbXMuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gYWRkaXRp
b25hbERpc3BsYXlJdGVtcy5yZWxlYXNlRXhjZXB0aW9uKCk7CisgICAgICAgIGxpbmVJdGVtcy5h
cHBlbmRWZWN0b3IoYWRkaXRpb25hbERpc3BsYXlJdGVtcy5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7
CisKKyAgICAgICAgbWVyZ2UodG90YWwsIFdURk1vdmUoYXBwbGVQYXlNb2RpZmllcikpOwogICAg
IH0KIAogICAgIHJldHVybiB7eyBXVEZNb3ZlKHRvdGFsKSwgV1RGTW92ZShsaW5lSXRlbXMpIH19
OwpAQCAtNTM5LDYgKzQ2MSw1NiBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBcHBsZVBheVBheW1lbnRI
YW5kbGVyOjpjb21wdXRlUGF5bWVudE1ldGhvZEVycm9ycyhKU0M6OkpTT2JqZQogICAgIHJldHVy
biB7IH07CiB9CiAKKyNpZiAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykKK3N0YXRpYyBFeGNlcHRp
b25Pcjx2b2lkPiB2YWxpZGF0ZShjb25zdCBBcHBsZVBheU1vZGlmaWVyJikgeyByZXR1cm4geyB9
OyB9CisjZW5kaWYKKworRXhjZXB0aW9uT3I8T3B0aW9uYWw8c3RkOjp0dXBsZTxQYXltZW50RGV0
YWlsc01vZGlmaWVyLCBBcHBsZVBheU1vZGlmaWVyPj4+IEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6
OmZpcnN0QXBwbGljYWJsZU1vZGlmaWVyKCkgY29uc3QKK3sKKyAgICBhdXRvJiBkZXRhaWxzID0g
bV9wYXltZW50UmVxdWVzdC0+cGF5bWVudERldGFpbHMoKTsKKyAgICBpZiAoIWRldGFpbHMubW9k
aWZpZXJzKQorICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQgfTsKKworICAgIGF1dG8mIGxl
eGljYWxHbG9iYWxPYmplY3QgPSAqZG9jdW1lbnQoKS5nbG9iYWxPYmplY3QoKTsKKworICAgIGF1
dG8mIHNlcmlhbGl6ZWRNb2RpZmllckRhdGEgPSBtX3BheW1lbnRSZXF1ZXN0LT5zZXJpYWxpemVk
TW9kaWZpZXJEYXRhKCk7CisgICAgQVNTRVJUKGRldGFpbHMubW9kaWZpZXJzLT5zaXplKCkgPT0g
c2VyaWFsaXplZE1vZGlmaWVyRGF0YS5zaXplKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgZGV0YWlscy5tb2RpZmllcnMtPnNpemUoKTsgKytpKSB7CisgICAgICAgIGF1dG8mIG1vZGlm
aWVyID0gZGV0YWlscy5tb2RpZmllcnMtPmF0KGkpOworCisgICAgICAgIGF1dG8gY29udmVydGVk
SWRlbnRpZmllciA9IGNvbnZlcnRBbmRWYWxpZGF0ZVBheW1lbnRNZXRob2RJZGVudGlmaWVyKG1v
ZGlmaWVyLnN1cHBvcnRlZE1ldGhvZHMpOworICAgICAgICBpZiAoIWNvbnZlcnRlZElkZW50aWZp
ZXIgfHwgIWhhbmRsZXNJZGVudGlmaWVyKCpjb252ZXJ0ZWRJZGVudGlmaWVyKSkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChzZXJpYWxpemVkTW9kaWZpZXJEYXRhW2ldLmlz
RW1wdHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSk7CisgICAgICAgIEpT
Qzo6SlNWYWx1ZSBkYXRhOworICAgICAgICB7CisgICAgICAgICAgICBKU0M6OkpTTG9ja0hvbGRl
ciBsb2NrKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAgIGRhdGEgPSBKU09OUGFy
c2UoJmxleGljYWxHbG9iYWxPYmplY3QsIHNlcmlhbGl6ZWRNb2RpZmllckRhdGFbaV0pOworICAg
ICAgICAgICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIHJldHVybiBF
eGNlcHRpb24oRXhpc3RpbmdFeGNlcHRpb25FcnJvcik7CisgICAgICAgIH0KKworICAgICAgICBh
dXRvIGFwcGxlUGF5TW9kaWZpZXIgPSBjb252ZXJ0RGljdGlvbmFyeTxBcHBsZVBheU1vZGlmaWVy
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAgaWYgKHNjb3Bl
LmV4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbihFeGlzdGluZ0V4Y2Vw
dGlvbkVycm9yKTsKKworICAgICAgICBhdXRvIHZhbGlkYXRlQXBwbGVQYXlNb2RpZmllclJlc3Vs
dCA9IHZhbGlkYXRlKGFwcGxlUGF5TW9kaWZpZXIpOworICAgICAgICBpZiAodmFsaWRhdGVBcHBs
ZVBheU1vZGlmaWVyUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIHZh
bGlkYXRlQXBwbGVQYXlNb2RpZmllclJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisKKyAgICAg
ICAgaWYgKGFwcGxlUGF5TW9kaWZpZXIucGF5bWVudE1ldGhvZFR5cGUgJiYgKmFwcGxlUGF5TW9k
aWZpZXIucGF5bWVudE1ldGhvZFR5cGUgIT0gbV9zZWxlY3RlZFBheW1lbnRNZXRob2RUeXBlKQor
ICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgcmV0dXJuIHsgeyB7IG1vZGlmaWVyLCBX
VEZNb3ZlKGFwcGxlUGF5TW9kaWZpZXIpIH0gfSB9OworICAgIH0KKworICAgIHJldHVybiB7IFdU
Rjo6bnVsbG9wdCB9OworfQorCiBFeGNlcHRpb25Pcjx2b2lkPiBBcHBsZVBheVBheW1lbnRIYW5k
bGVyOjpkZXRhaWxzVXBkYXRlZChQYXltZW50UmVxdWVzdDo6VXBkYXRlUmVhc29uIHJlYXNvbiwg
U3RyaW5nJiYgZXJyb3IsIEFkZHJlc3NFcnJvcnMmJiBhZGRyZXNzRXJyb3JzLCBQYXllckVycm9y
RmllbGRzJiYgcGF5ZXJFcnJvcnMsIEpTQzo6SlNPYmplY3QqIHBheW1lbnRNZXRob2RFcnJvcnMp
CiB7CiAgICAgdXNpbmcgUmVhc29uID0gUGF5bWVudFJlcXVlc3Q6OlVwZGF0ZVJlYXNvbjsKQEAg
LTU3NSw4ICs1NDcsOCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBcHBsZVBheVBheW1lbnRIYW5kbGVy
OjptZXJjaGFudFZhbGlkYXRpb25Db21wbGV0ZWQoSlNDOjpKU1ZhbAogfQogCiAjaWYgIUVOQUJM
RShBUFBMRV9QQVlfUEFZTUVOVF9ERVRBSUxTX0RBVEEpCi1zdGF0aWMgdm9pZCBtZXJnZShBcHBs
ZVBheURldGFpbHNVcGRhdGVCYXNlJiwgQXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YSYmKSB7IH0K
LSNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZX1BBWU1FTlRfREVUQUlMU19EQVRBKQorc3RhdGlj
IHZvaWQgbWVyZ2UoQXBwbGVQYXlEZXRhaWxzVXBkYXRlQmFzZSYsIEFwcGxlUGF5TW9kaWZpZXIm
JikgeyB9CisjZW5kaWYgLy8gIUVOQUJMRShBUFBMRV9QQVlfUEFZTUVOVF9ERVRBSUxTX0RBVEEp
CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OnNoaXBwaW5nQWRk
cmVzc1VwZGF0ZWQoVmVjdG9yPFJlZlB0cjxBcHBsZVBheUVycm9yPj4mJiBlcnJvcnMpCiB7CkBA
IC01OTYsMTAgKzU2OCwxNiBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBcHBsZVBheVBheW1lbnRIYW5k
bGVyOjpzaGlwcGluZ0FkZHJlc3NVcGRhdGVkKFZlY3RvcjxSZWZQdHI8QQogICAgICAgICByZXR1
cm4gbmV3VG90YWxBbmRMaW5lSXRlbXMucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgIHN0ZDo6dGll
KHVwZGF0ZS5uZXdUb3RhbCwgdXBkYXRlLm5ld0xpbmVJdGVtcykgPSBuZXdUb3RhbEFuZExpbmVJ
dGVtcy5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKIAotICAgIGF1dG8gYXBwbGVQYXlEZXRhaWxzVXBk
YXRlRGF0YSA9IGNvbnZlcnRBbmRWYWxpZGF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBt
X3BheW1lbnRSZXF1ZXN0LT5wYXltZW50RGV0YWlscygpKTsKLSAgICBpZiAoYXBwbGVQYXlEZXRh
aWxzVXBkYXRlRGF0YS5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIGFwcGxlUGF5RGV0
YWlsc1VwZGF0ZURhdGEucmVsZWFzZUV4Y2VwdGlvbigpOwotICAgIG1lcmdlKHVwZGF0ZSwgYXBw
bGVQYXlEZXRhaWxzVXBkYXRlRGF0YS5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CisgICAgYXV0byBt
b2RpZmllckV4Y2VwdGlvbiA9IGZpcnN0QXBwbGljYWJsZU1vZGlmaWVyKCk7CisgICAgaWYgKG1v
ZGlmaWVyRXhjZXB0aW9uLmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gbW9kaWZpZXJF
eGNlcHRpb24ucmVsZWFzZUV4Y2VwdGlvbigpOworICAgIGlmIChhdXRvIG1vZGlmaWVyRGF0YSA9
IG1vZGlmaWVyRXhjZXB0aW9uLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKSB7CisgICAgICAgIGF1dG8m
IFttb2RpZmllciwgYXBwbGVQYXlNb2RpZmllcl0gPSAqbW9kaWZpZXJEYXRhOworCisgICAgICAg
IFVOVVNFRF9QQVJBTShtb2RpZmllcik7CisKKyAgICAgICAgbWVyZ2UodXBkYXRlLCBXVEZNb3Zl
KGFwcGxlUGF5TW9kaWZpZXIpKTsKKyAgICB9CiAKICAgICBwYXltZW50Q29vcmRpbmF0b3IoKS5j
b21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihXVEZNb3ZlKHVwZGF0ZSkpOwogICAgIHJl
dHVybiB7IH07CkBAIC02MTcsMTAgKzU5NSwxNiBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBcHBsZVBh
eVBheW1lbnRIYW5kbGVyOjpzaGlwcGluZ09wdGlvblVwZGF0ZWQoKQogICAgICAgICByZXR1cm4g
bmV3VG90YWxBbmRMaW5lSXRlbXMucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgIHN0ZDo6dGllKHVw
ZGF0ZS5uZXdUb3RhbCwgdXBkYXRlLm5ld0xpbmVJdGVtcykgPSBuZXdUb3RhbEFuZExpbmVJdGVt
cy5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKIAotICAgIGF1dG8gYXBwbGVQYXlEZXRhaWxzVXBkYXRl
RGF0YSA9IGNvbnZlcnRBbmRWYWxpZGF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBtX3Bh
eW1lbnRSZXF1ZXN0LT5wYXltZW50RGV0YWlscygpKTsKLSAgICBpZiAoYXBwbGVQYXlEZXRhaWxz
VXBkYXRlRGF0YS5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIGFwcGxlUGF5RGV0YWls
c1VwZGF0ZURhdGEucmVsZWFzZUV4Y2VwdGlvbigpOwotICAgIG1lcmdlKHVwZGF0ZSwgYXBwbGVQ
YXlEZXRhaWxzVXBkYXRlRGF0YS5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CisgICAgYXV0byBtb2Rp
ZmllckV4Y2VwdGlvbiA9IGZpcnN0QXBwbGljYWJsZU1vZGlmaWVyKCk7CisgICAgaWYgKG1vZGlm
aWVyRXhjZXB0aW9uLmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gbW9kaWZpZXJFeGNl
cHRpb24ucmVsZWFzZUV4Y2VwdGlvbigpOworICAgIGlmIChhdXRvIG1vZGlmaWVyRGF0YSA9IG1v
ZGlmaWVyRXhjZXB0aW9uLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKSB7CisgICAgICAgIGF1dG8mIFtt
b2RpZmllciwgYXBwbGVQYXlNb2RpZmllcl0gPSAqbW9kaWZpZXJEYXRhOworCisgICAgICAgIFVO
VVNFRF9QQVJBTShtb2RpZmllcik7CisKKyAgICAgICAgbWVyZ2UodXBkYXRlLCBXVEZNb3ZlKGFw
cGxlUGF5TW9kaWZpZXIpKTsKKyAgICB9CiAKICAgICBwYXltZW50Q29vcmRpbmF0b3IoKS5jb21w
bGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKFdURk1vdmUodXBkYXRlKSk7CiAgICAgcmV0dXJu
IHsgfTsKQEAgLTY0NSwxMCArNjI5LDE2IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEFwcGxlUGF5UGF5
bWVudEhhbmRsZXI6OnBheW1lbnRNZXRob2RVcGRhdGVkKFZlY3RvcjxSZWZQdHI8QXBwCiAgICAg
ICAgICAgICByZXR1cm4gbmV3VG90YWxBbmRMaW5lSXRlbXMucmVsZWFzZUV4Y2VwdGlvbigpOwog
ICAgICAgICBzdGQ6OnRpZSh1cGRhdGUubmV3VG90YWwsIHVwZGF0ZS5uZXdMaW5lSXRlbXMpID0g
bmV3VG90YWxBbmRMaW5lSXRlbXMucmVsZWFzZVJldHVyblZhbHVlKCk7CiAKLSAgICAgICAgYXV0
byBhcHBsZVBheURldGFpbHNVcGRhdGVEYXRhID0gY29udmVydEFuZFZhbGlkYXRlKCpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksIG1fcGF5bWVudFJlcXVlc3QtPnBheW1lbnREZXRhaWxzKCkpOwot
ICAgICAgICBpZiAoYXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YS5oYXNFeGNlcHRpb24oKSkKLSAg
ICAgICAgICAgIHJldHVybiBhcHBsZVBheURldGFpbHNVcGRhdGVEYXRhLnJlbGVhc2VFeGNlcHRp
b24oKTsKLSAgICAgICAgbWVyZ2UodXBkYXRlLCBhcHBsZVBheURldGFpbHNVcGRhdGVEYXRhLnJl
bGVhc2VSZXR1cm5WYWx1ZSgpKTsKKyAgICAgICAgYXV0byBtb2RpZmllckV4Y2VwdGlvbiA9IGZp
cnN0QXBwbGljYWJsZU1vZGlmaWVyKCk7CisgICAgICAgIGlmIChtb2RpZmllckV4Y2VwdGlvbi5o
YXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBtb2RpZmllckV4Y2VwdGlvbi5yZWxl
YXNlRXhjZXB0aW9uKCk7CisgICAgICAgIGlmIChhdXRvIG1vZGlmaWVyRGF0YSA9IG1vZGlmaWVy
RXhjZXB0aW9uLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKSB7CisgICAgICAgICAgICBhdXRvJiBbbW9k
aWZpZXIsIGFwcGxlUGF5TW9kaWZpZXJdID0gKm1vZGlmaWVyRGF0YTsKKworICAgICAgICAgICAg
VU5VU0VEX1BBUkFNKG1vZGlmaWVyKTsKKworICAgICAgICAgICAgbWVyZ2UodXBkYXRlLCBXVEZN
b3ZlKGFwcGxlUGF5TW9kaWZpZXIpKTsKKyAgICAgICAgfQogCiAgICAgICAgIHBheW1lbnRDb29y
ZGluYXRvcigpLmNvbXBsZXRlUGF5bWVudE1ldGhvZE1vZGVDaGFuZ2UoV1RGTW92ZSh1cGRhdGUp
KTsKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTY2NywxMCArNjU3LDE2IEBAIEV4Y2VwdGlvbk9y
PHZvaWQ+IEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OnBheW1lbnRNZXRob2RVcGRhdGVkKFZlY3Rv
cjxSZWZQdHI8QXBwCiAgICAgICAgIHJldHVybiBuZXdUb3RhbEFuZExpbmVJdGVtcy5yZWxlYXNl
RXhjZXB0aW9uKCk7CiAgICAgc3RkOjp0aWUodXBkYXRlLm5ld1RvdGFsLCB1cGRhdGUubmV3TGlu
ZUl0ZW1zKSA9IG5ld1RvdGFsQW5kTGluZUl0ZW1zLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwogCi0g
ICAgYXV0byBhcHBsZVBheURldGFpbHNVcGRhdGVEYXRhID0gY29udmVydEFuZFZhbGlkYXRlKCpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG1fcGF5bWVudFJlcXVlc3QtPnBheW1lbnREZXRhaWxz
KCkpOwotICAgIGlmIChhcHBsZVBheURldGFpbHNVcGRhdGVEYXRhLmhhc0V4Y2VwdGlvbigpKQot
ICAgICAgICByZXR1cm4gYXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YS5yZWxlYXNlRXhjZXB0aW9u
KCk7Ci0gICAgbWVyZ2UodXBkYXRlLCBhcHBsZVBheURldGFpbHNVcGRhdGVEYXRhLnJlbGVhc2VS
ZXR1cm5WYWx1ZSgpKTsKKyAgICBhdXRvIG1vZGlmaWVyRXhjZXB0aW9uID0gZmlyc3RBcHBsaWNh
YmxlTW9kaWZpZXIoKTsKKyAgICBpZiAobW9kaWZpZXJFeGNlcHRpb24uaGFzRXhjZXB0aW9uKCkp
CisgICAgICAgIHJldHVybiBtb2RpZmllckV4Y2VwdGlvbi5yZWxlYXNlRXhjZXB0aW9uKCk7Cisg
ICAgaWYgKGF1dG8gbW9kaWZpZXJEYXRhID0gbW9kaWZpZXJFeGNlcHRpb24ucmVsZWFzZVJldHVy
blZhbHVlKCkpIHsKKyAgICAgICAgYXV0byYgW21vZGlmaWVyLCBhcHBsZVBheU1vZGlmaWVyXSA9
ICptb2RpZmllckRhdGE7CisKKyAgICAgICAgVU5VU0VEX1BBUkFNKG1vZGlmaWVyKTsKKworICAg
ICAgICBtZXJnZSh1cGRhdGUsIFdURk1vdmUoYXBwbGVQYXlNb2RpZmllcikpOworICAgIH0KIAog
ICAgIHBheW1lbnRDb29yZGluYXRvcigpLmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihX
VEZNb3ZlKHVwZGF0ZSkpOwogICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRs
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBw
bGVQYXlQYXltZW50SGFuZGxlci5oCmluZGV4IGY5YTYyY2I2YzBkNTA5YzRiNzg1YzYyMzRhNWVm
OGRhMTZkMjk0OTkuLjgwMGU3N2I5MjRiZmZiMGY5NzE5NDQzNDI0MThlZDA0NmEzY2NhMzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3Qv
QXBwbGVQYXlQYXltZW50SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5oCkBAIC0zMywxMyAr
MzMsMTcgQEAKICNpbmNsdWRlICJQYXltZW50SGFuZGxlci5oIgogI2luY2x1ZGUgIlBheW1lbnRS
ZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUGF5bWVudFNlc3Npb24uaCIKKyNpbmNsdWRlIDx3dGYvRnVu
Y3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvT3B0
aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQXBwbGVQYXlFcnJvcjsKIGNsYXNzIFBheW1lbnRDb29yZGluYXRvcjsKK3N0cnVj
dCBBcHBsZVBheU1vZGlmaWVyOworc3RydWN0IFBheW1lbnREZXRhaWxzTW9kaWZpZXI7CiAKIGNs
YXNzIEFwcGxlUGF5UGF5bWVudEhhbmRsZXIgZmluYWwgOiBwdWJsaWMgUGF5bWVudEhhbmRsZXIs
IHB1YmxpYyBQYXltZW50U2Vzc2lvbiwgcHJpdmF0ZSBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZl
ciB7CiBwdWJsaWM6CkBAIC01NCwxMyArNTgsMTQgQEAgcHJpdmF0ZToKICAgICBEb2N1bWVudCYg
ZG9jdW1lbnQoKSBjb25zdDsKICAgICBQYXltZW50Q29vcmRpbmF0b3ImIHBheW1lbnRDb29yZGlu
YXRvcigpIGNvbnN0OwogCi0gICAgRXhjZXB0aW9uT3I8VmVjdG9yPEFwcGxlUGF5U2hpcHBpbmdN
ZXRob2Q+PiBjb21wdXRlU2hpcHBpbmdNZXRob2RzKCk7CisgICAgRXhjZXB0aW9uT3I8VmVjdG9y
PEFwcGxlUGF5U2hpcHBpbmdNZXRob2Q+PiBjb21wdXRlU2hpcHBpbmdNZXRob2RzKCkgY29uc3Q7
CiAgICAgRXhjZXB0aW9uT3I8c3RkOjp0dXBsZTxBcHBsZVBheUxpbmVJdGVtLCBWZWN0b3I8QXBw
bGVQYXlMaW5lSXRlbT4+PiBjb21wdXRlVG90YWxBbmRMaW5lSXRlbXMoKSBjb25zdDsKICAgICBW
ZWN0b3I8UmVmUHRyPEFwcGxlUGF5RXJyb3I+PiBjb21wdXRlRXJyb3JzKFN0cmluZyYmIGVycm9y
LCBBZGRyZXNzRXJyb3JzJiYsIFBheWVyRXJyb3JGaWVsZHMmJiwgSlNDOjpKU09iamVjdCogcGF5
bWVudE1ldGhvZEVycm9ycykgY29uc3Q7CiAgICAgVmVjdG9yPFJlZlB0cjxBcHBsZVBheUVycm9y
Pj4gY29tcHV0ZUVycm9ycyhKU0M6OkpTT2JqZWN0KiBwYXltZW50TWV0aG9kRXJyb3JzKSBjb25z
dDsKICAgICB2b2lkIGNvbXB1dGVBZGRyZXNzRXJyb3JzKFN0cmluZyYmIGVycm9yLCBBZGRyZXNz
RXJyb3JzJiYsIFZlY3RvcjxSZWZQdHI8QXBwbGVQYXlFcnJvcj4+JikgY29uc3Q7CiAgICAgdm9p
ZCBjb21wdXRlUGF5ZXJFcnJvcnMoUGF5ZXJFcnJvckZpZWxkcyYmLCBWZWN0b3I8UmVmUHRyPEFw
cGxlUGF5RXJyb3I+PiYpIGNvbnN0OwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGNvbXB1dGVQYXlt
ZW50TWV0aG9kRXJyb3JzKEpTQzo6SlNPYmplY3QqIHBheW1lbnRNZXRob2RFcnJvcnMsIFZlY3Rv
cjxSZWZQdHI8QXBwbGVQYXlFcnJvcj4+JikgY29uc3Q7CisgICAgRXhjZXB0aW9uT3I8T3B0aW9u
YWw8c3RkOjp0dXBsZTxQYXltZW50RGV0YWlsc01vZGlmaWVyLCBBcHBsZVBheU1vZGlmaWVyPj4+
IGZpcnN0QXBwbGljYWJsZU1vZGlmaWVyKCkgY29uc3Q7CiAKICAgICBFeGNlcHRpb25Pcjx2b2lk
PiBzaGlwcGluZ0FkZHJlc3NVcGRhdGVkKFZlY3RvcjxSZWZQdHI8QXBwbGVQYXlFcnJvcj4+JiYg
ZXJyb3JzKTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzaGlwcGluZ09wdGlvblVwZGF0ZWQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVu
dERldGFpbHNCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1Bh
eW1lbnREZXRhaWxzQmFzZS5oCmluZGV4IDkwZjg3ZDIwNjFlMDZkNTk4YTRjMzM4M2E2M2FjYzgx
YTBhNjBlZDEuLmUxNzNkNjg1YTc5YTZiOTk0YzgzMGFmZTQzYWUzMzY5MTI3NWQwNTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudERldGFp
bHNCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXlt
ZW50RGV0YWlsc0Jhc2UuaApAQCAtMzAsOCArMzAsNiBAQAogI2luY2x1ZGUgIlBheW1lbnREZXRh
aWxzTW9kaWZpZXIuaCIKICNpbmNsdWRlICJQYXltZW50SXRlbS5oIgogI2luY2x1ZGUgIlBheW1l
bnRTaGlwcGluZ09wdGlvbi5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0Lmg+
Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlv
bmFsLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgpAQCAtNDIsMTAgKzQwLDYgQEAgc3RydWN0IFBheW1lbnREZXRhaWxzQmFzZSB7CiAg
ICAgT3B0aW9uYWw8VmVjdG9yPFBheW1lbnRJdGVtPj4gZGlzcGxheUl0ZW1zOwogICAgIE9wdGlv
bmFsPFZlY3RvcjxQYXltZW50U2hpcHBpbmdPcHRpb24+PiBzaGlwcGluZ09wdGlvbnM7CiAgICAg
T3B0aW9uYWw8VmVjdG9yPFBheW1lbnREZXRhaWxzTW9kaWZpZXI+PiBtb2RpZmllcnM7Ci0gICAg
SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4gZGF0YTsKLQotICAgIC8vIE5vdCBmcm9tIHRoZSBJ
REwuIFNldCBieSBgZGF0YWAgd2hlbiB0aGlzIGlzIHZhbGlkYXRlZCBieSBgUGF5bWVudFJlcXVl
c3RgLgotICAgIFN0cmluZyBzZXJpYWxpemVkRGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3Qv
UGF5bWVudERldGFpbHNCYXNlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJl
cXVlc3QvUGF5bWVudERldGFpbHNCYXNlLmlkbAppbmRleCBkODBjNDlkOTIwNTY2MWRlODBhOGU0
NzZjMzA0MTM5MWE1NmQ1Y2RjLi40NDllM2VlOThkMjkxMDdlYzBjZWU2Y2M0NTY4YjMwOGQzNTZm
NWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1Bh
eW1lbnREZXRhaWxzQmFzZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50
cmVxdWVzdC9QYXltZW50RGV0YWlsc0Jhc2UuaWRsCkBAIC0yOSw1ICsyOSw0IEBACiAgICAgc2Vx
dWVuY2U8UGF5bWVudEl0ZW0+IGRpc3BsYXlJdGVtczsKICAgICBzZXF1ZW5jZTxQYXltZW50U2hp
cHBpbmdPcHRpb24+IHNoaXBwaW5nT3B0aW9uczsKICAgICBzZXF1ZW5jZTxQYXltZW50RGV0YWls
c01vZGlmaWVyPiBtb2RpZmllcnM7Ci0gICAgb2JqZWN0IGRhdGE7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50SXRlbS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50SXRlbS5oCmluZGV4IGYx
NWI5ZWFlYWVlNDY0ZTc4OTkxMmM3ZGU2ZjQwYjY3Yjc2YTcyYjMuLmQ1Nzk0NzZmZjQ4MzEyNjVj
M2I3YzNkNjUxNDlkZGMwNTU0YmE2YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudEl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRJdGVtLmgKQEAgLTI4LDggKzI4LDYgQEAKICNpZiBF
TkFCTEUoUEFZTUVOVF9SRVFVRVNUKQogCiAjaW5jbHVkZSAiUGF5bWVudEN1cnJlbmN5QW1vdW50
LmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3QuaD4KLSNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9TdHJvbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsMTAgKzM2LDYgQEAgc3RydWN0IFBheW1lbnRJdGVt
IHsKICAgICBTdHJpbmcgbGFiZWw7CiAgICAgUGF5bWVudEN1cnJlbmN5QW1vdW50IGFtb3VudDsK
ICAgICBib29sIHBlbmRpbmcgeyBmYWxzZSB9OwotICAgIEpTQzo6U3Ryb25nPEpTQzo6SlNPYmpl
Y3Q+IGRhdGE7Ci0KLSAgICAvLyBOb3QgZnJvbSB0aGUgSURMLiBTZXQgYnkgYGRhdGFgIHdoZW4g
dGhpcyBpcyB2YWxpZGF0ZWQgYnkgYFBheW1lbnRSZXF1ZXN0YC4KLSAgICBTdHJpbmcgc2VyaWFs
aXplZERhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRJdGVtLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudEl0ZW0uaWRsCmluZGV4IDFj
MGJjNjZmZTMxNWUyNmFjODViMTkzNzhjYjcwNmMxNTMzZTVlMTIuLmRhMWFlN2YzYTNmNzhiNWMy
NzM1YWM2NWVmYjBhY2RhOTJkYWZlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudEl0ZW0uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudEl0ZW0uaWRsCkBAIC0yOSw1ICsyOSw0IEBACiAg
ICAgcmVxdWlyZWQgRE9NU3RyaW5nIGxhYmVsOwogICAgIHJlcXVpcmVkIFBheW1lbnRDdXJyZW5j
eUFtb3VudCBhbW91bnQ7CiAgICAgYm9vbGVhbiBwZW5kaW5nID0gZmFsc2U7Ci0gICAgb2JqZWN0
IGRhdGE7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVx
dWVzdC9QYXltZW50UmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRy
ZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmNwcAppbmRleCBlZjg1MjZlOWU3ZjFlYTNlYWM5NzQ1Yjgx
MjM2OWM4NThiOWIwNmU1Li5lYmJhODQ3NmM5NWM2NmNkOWJmMGQ3ZTM2OGRiNGU0M2Q0YWQzMDJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1l
bnRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0
L1BheW1lbnRSZXF1ZXN0LmNwcApAQCAtOTksNyArOTksNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8
dm9pZD4gY2hlY2tBbmRDYW5vbmljYWxpemVBbW91bnQoUGF5bWVudEN1cnJlbmN5QW1vdW50JiBh
bW91bgogfQogCiBlbnVtIGNsYXNzIE5lZ2F0aXZlQW1vdW50QWxsb3dlZCB7IFllcywgTm8gfTsK
LXN0YXRpYyBFeGNlcHRpb25Pcjx2b2lkPiBjaGVja0FuZENhbm9uaWNhbGl6ZVBheW1lbnRJdGVt
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFBheW1lbnRJdGVtJiBpdGVtLCBOZWdh
dGl2ZUFtb3VudEFsbG93ZWQgbmVnYXRpdmVBbW91bnRBbGxvd2VkKQorc3RhdGljIEV4Y2VwdGlv
bk9yPHZvaWQ+IGNoZWNrQW5kQ2Fub25pY2FsaXplUGF5bWVudEl0ZW0oUGF5bWVudEl0ZW0mIGl0
ZW0sIE5lZ2F0aXZlQW1vdW50QWxsb3dlZCBuZWdhdGl2ZUFtb3VudEFsbG93ZWQpCiB7CiAgICAg
YXV0byBleGNlcHRpb24gPSBjaGVja0FuZENhbm9uaWNhbGl6ZUFtb3VudChpdGVtLmFtb3VudCk7
CiAgICAgaWYgKGV4Y2VwdGlvbi5oYXNFeGNlcHRpb24oKSkKQEAgLTEwOCwyMiArMTA4LDE0IEBA
IHN0YXRpYyBFeGNlcHRpb25Pcjx2b2lkPiBjaGVja0FuZENhbm9uaWNhbGl6ZVBheW1lbnRJdGVt
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmCiAgICAgaWYgKG5lZ2F0aXZlQW1vdW50QWxsb3dlZCA9
PSBOZWdhdGl2ZUFtb3VudEFsbG93ZWQ6Ok5vICYmIGl0ZW0uYW1vdW50LnZhbHVlWzBdID09ICct
JykKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlRvdGFsIGN1cnJlbmN5
IHZhbHVlcyBjYW5ub3QgYmUgbmVnYXRpdmUuIl9zIH07CiAKLSAgICBpZiAoaXRlbS5kYXRhKSB7
Ci0gICAgICAgIGF1dG8gZGF0YVJlc3VsdCA9IGNoZWNrQW5kQ2Fub25pY2FsaXplRGF0YShjb250
ZXh0LCBpdGVtKTsKLSAgICAgICAgaWYgKGRhdGFSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCi0gICAg
ICAgICAgICByZXR1cm4gZGF0YVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7Ci0KLSAgICAgICAg
aXRlbS5zZXJpYWxpemVkRGF0YSA9IGRhdGFSZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0g
ICAgfQotCiAgICAgcmV0dXJuIHsgfTsKIH0KIAogLy8gSW1wbGVtZW50cyB0aGUgImNoZWNrIGFu
ZCBjYW5vbmljYWxpemUgdG90YWwiIHZhbGlkaXR5IGNoZWNrZXIKIC8vIGh0dHBzOi8vd3d3Lncz
Lm9yZy9UUi9wYXltZW50LXJlcXVlc3QvI2Rmbi1jaGVjay1hbmQtY2Fub25pY2FsaXplLXRvdGFs
Ci1zdGF0aWMgRXhjZXB0aW9uT3I8dm9pZD4gY2hlY2tBbmRDYW5vbmljYWxpemVUb3RhbChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBQYXltZW50SXRlbSYgdG90YWwpCitzdGF0aWMg
RXhjZXB0aW9uT3I8dm9pZD4gY2hlY2tBbmRDYW5vbmljYWxpemVUb3RhbChQYXltZW50SXRlbSYg
dG90YWwpCiB7Ci0gICAgcmV0dXJuIGNoZWNrQW5kQ2Fub25pY2FsaXplUGF5bWVudEl0ZW0oY29u
dGV4dCwgdG90YWwsIE5lZ2F0aXZlQW1vdW50QWxsb3dlZDo6Tm8pOworICAgIHJldHVybiBjaGVj
a0FuZENhbm9uaWNhbGl6ZVBheW1lbnRJdGVtKHRvdGFsLCBOZWdhdGl2ZUFtb3VudEFsbG93ZWQ6
Ok5vKTsKIH0KIAogLy8gSW1wbGVtZW50cyAidmFsaWRhdGUgYSBzdGFuZGFyZGl6ZWQgcGF5bWVu
dCBtZXRob2QgaWRlbnRpZmllciIKQEAgLTIwNiw3ICsxOTgsNyBAQCBzdGF0aWMgRXhjZXB0aW9u
T3I8c3RkOjp0dXBsZTxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+Pj4gY2hlY2tBbmRDYW5vbmljYWxp
emVEZXRhaQogewogICAgIGlmIChkZXRhaWxzLmRpc3BsYXlJdGVtcykgewogICAgICAgICBmb3Ig
KGF1dG8mIGl0ZW0gOiAqZGV0YWlscy5kaXNwbGF5SXRlbXMpIHsKLSAgICAgICAgICAgIGF1dG8g
cGF5bWVudEl0ZW1SZXN1bHQgPSBjaGVja0FuZENhbm9uaWNhbGl6ZVBheW1lbnRJdGVtKGNvbnRl
eHQsIGl0ZW0sIE5lZ2F0aXZlQW1vdW50QWxsb3dlZDo6WWVzKTsKKyAgICAgICAgICAgIGF1dG8g
cGF5bWVudEl0ZW1SZXN1bHQgPSBjaGVja0FuZENhbm9uaWNhbGl6ZVBheW1lbnRJdGVtKGl0ZW0s
IE5lZ2F0aXZlQW1vdW50QWxsb3dlZDo6WWVzKTsKICAgICAgICAgICAgIGlmIChwYXltZW50SXRl
bVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcGF5bWVudEl0
ZW1SZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgICAgICB9CkBAIC0yMzMsMTQgKzIyNSw2
IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnR1cGxlPFN0cmluZywgVmVjdG9yPFN0cmluZz4+
PiBjaGVja0FuZENhbm9uaWNhbGl6ZURldGFpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQu
YWRkQ29uc29sZU1lc3NhZ2UoSlNDOjpNZXNzYWdlU291cmNlOjpQYXltZW50UmVxdWVzdCwgSlND
OjpNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJXZWJLaXQgY3VycmVudGx5IHVzZXMgdGhlIGZpcnN0
IHNoaXBwaW5nIG9wdGlvbiBldmVuIGlmIG90aGVyIHNoaXBwaW5nIG9wdGlvbnMgYXJlIG1hcmtl
ZCBhcyBzZWxlY3RlZC4iX3MpOwogICAgICAgICAgICAgICAgICAgICBkaWRMb2cgPSB0cnVlOwog
ICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmIChzaGlwcGluZ09wdGlvbi5k
YXRhKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gZGF0YVJlc3VsdCA9IGNoZWNrQW5kQ2Fu
b25pY2FsaXplRGF0YShjb250ZXh0LCBzaGlwcGluZ09wdGlvbik7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChkYXRhUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGRhdGFSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwotCi0gICAgICAgICAgICAg
ICAgICAgIHNoaXBwaW5nT3B0aW9uLnNlcmlhbGl6ZWREYXRhID0gZGF0YVJlc3VsdC5yZWxlYXNl
UmV0dXJuVmFsdWUoKTsKLSAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0gZWxzZSBpZiAoaXNVcGRhdGUgPT0gSXNVcGRhdGU6Ok5vKQogICAgICAgICAgICAgZGV0YWls
cy5zaGlwcGluZ09wdGlvbnMgPSB7IHsgfSB9OwpAQCAtMjU4LDEzICsyNDIsMTMgQEAgc3RhdGlj
IEV4Y2VwdGlvbk9yPHN0ZDo6dHVwbGU8U3RyaW5nLCBWZWN0b3I8U3RyaW5nPj4+IGNoZWNrQW5k
Q2Fub25pY2FsaXplRGV0YWkKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKG1vZGlm
aWVyLnRvdGFsKSB7Ci0gICAgICAgICAgICAgICAgYXV0byB0b3RhbFJlc3VsdCA9IGNoZWNrQW5k
Q2Fub25pY2FsaXplVG90YWwoY29udGV4dCwgKm1vZGlmaWVyLnRvdGFsKTsKKyAgICAgICAgICAg
ICAgICBhdXRvIHRvdGFsUmVzdWx0ID0gY2hlY2tBbmRDYW5vbmljYWxpemVUb3RhbCgqbW9kaWZp
ZXIudG90YWwpOwogICAgICAgICAgICAgICAgIGlmICh0b3RhbFJlc3VsdC5oYXNFeGNlcHRpb24o
KSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsUmVzdWx0LnJlbGVhc2VFeGNlcHRp
b24oKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZm9yIChhdXRvJiBpdGVtIDogbW9k
aWZpZXIuYWRkaXRpb25hbERpc3BsYXlJdGVtcykgewotICAgICAgICAgICAgICAgIGF1dG8gcGF5
bWVudEl0ZW1SZXN1bHQgPSBjaGVja0FuZENhbm9uaWNhbGl6ZVBheW1lbnRJdGVtKGNvbnRleHQs
IGl0ZW0sIE5lZ2F0aXZlQW1vdW50QWxsb3dlZDo6WWVzKTsKKyAgICAgICAgICAgICAgICBhdXRv
IHBheW1lbnRJdGVtUmVzdWx0ID0gY2hlY2tBbmRDYW5vbmljYWxpemVQYXltZW50SXRlbShpdGVt
LCBOZWdhdGl2ZUFtb3VudEFsbG93ZWQ6Olllcyk7CiAgICAgICAgICAgICAgICAgaWYgKHBheW1l
bnRJdGVtUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
cGF5bWVudEl0ZW1SZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgICAgICAgICAgfQpAQCAt
MjgyLDE0ICsyNjYsNiBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp0dXBsZTxTdHJpbmcsIFZl
Y3RvcjxTdHJpbmc+Pj4gY2hlY2tBbmRDYW5vbmljYWxpemVEZXRhaQogICAgIH0gZWxzZSBpZiAo
aXNVcGRhdGUgPT0gSXNVcGRhdGU6Ok5vKQogICAgICAgICBkZXRhaWxzLm1vZGlmaWVycyA9IHsg
eyB9IH07CiAKLSAgICBpZiAoZGV0YWlscy5kYXRhKSB7Ci0gICAgICAgIGF1dG8gZGF0YVJlc3Vs
dCA9IGNoZWNrQW5kQ2Fub25pY2FsaXplRGF0YShjb250ZXh0LCBkZXRhaWxzKTsKLSAgICAgICAg
aWYgKGRhdGFSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4gZGF0YVJl
c3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7Ci0KLSAgICAgICAgZGV0YWlscy5zZXJpYWxpemVkRGF0
YSA9IGRhdGFSZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0gICAgfQotCiAgICAgcmV0dXJu
IHN0ZDo6bWFrZV90dXBsZShXVEZNb3ZlKHNlbGVjdGVkU2hpcHBpbmdPcHRpb24pLCBXVEZNb3Zl
KHNlcmlhbGl6ZWRNb2RpZmllckRhdGEpKTsKIH0KIApAQCAtMzUzLDcgKzMyOSw3IEBAIEV4Y2Vw
dGlvbk9yPFJlZjxQYXltZW50UmVxdWVzdD4+IFBheW1lbnRSZXF1ZXN0OjpjcmVhdGUoRG9jdW1l
bnQmIGRvY3VtZW50LCBWZWN0CiAgICAgICAgIHNlcmlhbGl6ZWRNZXRob2REYXRhLnVuY2hlY2tl
ZEFwcGVuZCh7IFdURk1vdmUoKmlkZW50aWZpZXIpLCBXVEZNb3ZlKHNlcmlhbGl6ZWREYXRhKSB9
KTsKICAgICB9CiAKLSAgICBhdXRvIHRvdGFsUmVzdWx0ID0gY2hlY2tBbmRDYW5vbmljYWxpemVU
b3RhbChkb2N1bWVudCwgZGV0YWlscy50b3RhbCk7CisgICAgYXV0byB0b3RhbFJlc3VsdCA9IGNo
ZWNrQW5kQ2Fub25pY2FsaXplVG90YWwoZGV0YWlscy50b3RhbCk7CiAgICAgaWYgKHRvdGFsUmVz
dWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gdG90YWxSZXN1bHQucmVsZWFzZUV4
Y2VwdGlvbigpOwogCkBAIC02NjQsNyArNjQwLDcgQEAgdm9pZCBQYXltZW50UmVxdWVzdDo6c2V0
dGxlRGV0YWlsc1Byb21pc2UoVXBkYXRlUmVhc29uIHJlYXNvbikKICAgICB9CiAKICAgICBpZiAo
ZGV0YWlsc1VwZGF0ZS50b3RhbCkgewotICAgICAgICBhdXRvIHRvdGFsUmVzdWx0ID0gY2hlY2tB
bmRDYW5vbmljYWxpemVUb3RhbChjb250ZXh0LCAqZGV0YWlsc1VwZGF0ZS50b3RhbCk7CisgICAg
ICAgIGF1dG8gdG90YWxSZXN1bHQgPSBjaGVja0FuZENhbm9uaWNhbGl6ZVRvdGFsKCpkZXRhaWxz
VXBkYXRlLnRvdGFsKTsKICAgICAgICAgaWYgKHRvdGFsUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7
CiAgICAgICAgICAgICBhYm9ydFdpdGhFeGNlcHRpb24odG90YWxSZXN1bHQucmVsZWFzZUV4Y2Vw
dGlvbigpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTY5MSw4ICs2NjcsNiBAQCB2b2lkIFBh
eW1lbnRSZXF1ZXN0OjpzZXR0bGVEZXRhaWxzUHJvbWlzZShVcGRhdGVSZWFzb24gcmVhc29uKQog
ICAgICAgICBtX2RldGFpbHMubW9kaWZpZXJzID0gV1RGTW92ZSgqZGV0YWlsc1VwZGF0ZS5tb2Rp
ZmllcnMpOwogICAgICAgICBtX3NlcmlhbGl6ZWRNb2RpZmllckRhdGEgPSBXVEZNb3ZlKHN0ZDo6
Z2V0PDE+KHNoaXBwaW5nT3B0aW9uQW5kTW9kaWZpZXJEYXRhKSk7CiAgICAgfQotICAgIGlmICgh
ZGV0YWlsc1VwZGF0ZS5zZXJpYWxpemVkRGF0YS5pc0VtcHR5KCkpCi0gICAgICAgIG1fZGV0YWls
cy5zZXJpYWxpemVkRGF0YSA9IFdURk1vdmUoZGV0YWlsc1VwZGF0ZS5zZXJpYWxpemVkRGF0YSk7
CiAKICAgICBhdXRvIHJlc3VsdCA9IGFjdGl2ZVBheW1lbnRIYW5kbGVyKCktPmRldGFpbHNVcGRh
dGVkKHJlYXNvbiwgV1RGTW92ZShkZXRhaWxzVXBkYXRlLmVycm9yKSwgV1RGTW92ZShkZXRhaWxz
VXBkYXRlLnNoaXBwaW5nQWRkcmVzc0Vycm9ycyksIFdURk1vdmUoZGV0YWlsc1VwZGF0ZS5wYXll
ckVycm9ycyksIGRldGFpbHNVcGRhdGUucGF5bWVudE1ldGhvZEVycm9ycy5nZXQoKSk7CiAgICAg
aWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50U2hpcHBpbmdPcHRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFNoaXBwaW5nT3B0aW9uLmgKaW5k
ZXggZjliYzU2OTQzNzY2ODQ1OGE3ZmE1MDY2Njc1NjIyNWUxNzM4ZjU2OC4uMmRkZDUxYmE1ZGFi
ZjI1MjcxMTUzMGNiYTBjNDdkNzQ2ODNiYzZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50U2hpcHBpbmdPcHRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRTaGlwcGluZ09wdGlvbi5o
CkBAIC0yOCw4ICsyOCw2IEBACiAjaWYgRU5BQkxFKFBBWU1FTlRfUkVRVUVTVCkKIAogI2luY2x1
ZGUgIlBheW1lbnRDdXJyZW5jeUFtb3VudC5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
T2JqZWN0Lmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM5LDEwICsz
Nyw2IEBAIHN0cnVjdCBQYXltZW50U2hpcHBpbmdPcHRpb24gewogICAgIFN0cmluZyBsYWJlbDsK
ICAgICBQYXltZW50Q3VycmVuY3lBbW91bnQgYW1vdW50OwogICAgIGJvb2wgc2VsZWN0ZWQgeyBm
YWxzZSB9OwotICAgIEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+IGRhdGE7Ci0KLSAgICAvLyBO
b3QgZnJvbSB0aGUgSURMLiBTZXQgYnkgYGRhdGFgIHdoZW4gdGhpcyBpcyB2YWxpZGF0ZWQgYnkg
YFBheW1lbnRSZXF1ZXN0YC4KLSAgICBTdHJpbmcgc2VyaWFsaXplZERhdGE7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Bh
eW1lbnRyZXF1ZXN0L1BheW1lbnRTaGlwcGluZ09wdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRTaGlwcGluZ09wdGlvbi5pZGwKaW5kZXggOGVl
YzZmNjMyYWVlOTUyZTA2ZTk1MGJiMzUxNjljNDcyYzRiMzdjMS4uMGY2ODliOGY0ZjE0ZDM4YzAz
M2EzMWQxZjA4ZmExNGFmYzcxZTkxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wYXltZW50cmVxdWVzdC9QYXltZW50U2hpcHBpbmdPcHRpb24uaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFNoaXBwaW5nT3B0aW9uLmlkbApA
QCAtMzAsNSArMzAsNCBAQAogICAgIHJlcXVpcmVkIERPTVN0cmluZyBsYWJlbDsKICAgICByZXF1
aXJlZCBQYXltZW50Q3VycmVuY3lBbW91bnQgYW1vdW50OwogICAgIGJvb2xlYW4gc2VsZWN0ZWQg
PSBmYWxzZTsKLSAgICBvYmplY3QgZGF0YTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KaW5kZXggMmNhMjQyMDQxNTEzNTU1ZGNiMThj
MTc3NTcxYzA3OWVmMDViZmQ2Ny4uZWNmMGJkZjNkMDgwM2VkNDMwOTg3ZmEwMDMyMTJlYWUwN2I4
YWE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvci5wbQpAQCAtMjkxLDcgKzI5MSw3IEBAIHN1YiBQcm9jZXNzRGljdGlvbmFyaWVzCiAgICAg
ICAgIGRpZSAiTXVsdGlwbGUgZGljdGlvbmFyaWVzIHBlciBkb2N1bWVudCBhcmUgb25seSBzdXBw
b3J0ZWQgaWYgb25lIG1hdGNoZXMgdGhlIGZpbGVuYW1lIiB1bmxlc3MgJGRpY3Rpb25hcnk7CiAg
ICAgfQogCi0gICAgaWYgKCRkaWN0aW9uYXJ5LT5pc1BhcnRpYWwpIHsKKyAgICBpZiAoJGRpY3Rp
b25hcnktPmlzTWl4aW4gfHwgJGRpY3Rpb25hcnktPmlzUGFydGlhbCkgewogICAgICAgICAkb2Jq
ZWN0LT5HZW5lcmF0ZUVtcHR5SGVhZGVyQW5kQ3BwKCR1c2VEb2N1bWVudCwgJGNvZGVHZW5lcmF0
b3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzYzLDkgKzM2MywxMCBAQCBzdWIgSXNW
YWxpZFN1cHBsZW1lbnRhbEludGVyZmFjZQogCiBzdWIgSXNWYWxpZFN1cHBsZW1lbnRhbERpY3Rp
b25hcnkKIHsKLSAgICBteSAoJG9iamVjdCwgJHN1cHBsZW1lbnRhbERpY3Rpb25hcnksICR0YXJn
ZXREaWN0aW9uYXJ5KSA9IEBfOworICAgIG15ICgkb2JqZWN0LCAkc3VwcGxlbWVudGFsRGljdGlv
bmFyeSwgJHRhcmdldERpY3Rpb25hcnksICRpbmNsdWRlc01hcCkgPSBAXzsKIAogICAgIHJldHVy
biAxIGlmICRzdXBwbGVtZW50YWxEaWN0aW9uYXJ5LT5pc1BhcnRpYWwgJiYgJHN1cHBsZW1lbnRh
bERpY3Rpb25hcnktPnR5cGUtPm5hbWUgZXEgJHRhcmdldERpY3Rpb25hcnktPnR5cGUtPm5hbWU7
CisgICAgcmV0dXJuIDEgaWYgJHN1cHBsZW1lbnRhbERpY3Rpb25hcnktPmlzTWl4aW4gJiYgJGlu
Y2x1ZGVzTWFwLT57JHN1cHBsZW1lbnRhbERpY3Rpb25hcnktPnR5cGUtPm5hbWV9OwogICAgIHJl
dHVybiAwOwogfQogCkBAIC0zODIsNyArMzgzLDcgQEAgc3ViIFByb2Nlc3NJbnRlcmZhY2VTdXBw
bGVtZW50YWxEZXBlbmRlbmNpZXMKICAgICAjIGlzIGFydGlmaWNpYWwgYW5kIHdlIGNvdWxkIGFk
ZCBzdXBwb3J0IGZvciBpbmNsdWRlcyBzdGF0ZW1lbnRzIGVsc2V3aGVyZS4KICAgICBteSAlaW5j
bHVkZXNNYXAgPSAoKTsKICAgICBmb3JlYWNoIG15ICRpbmNsdWRlIChAeyR0YXJnZXREb2N1bWVu
dC0+aW5jbHVkZXN9KSB7Ci0gICAgICAgIGlmICgkaW5jbHVkZS0+aW50ZXJmYWNlSWRlbnRpZmll
ciBlcSAkdGFyZ2V0SW50ZXJmYWNlLT50eXBlLT5uYW1lKSB7CisgICAgICAgIGlmICgkaW5jbHVk
ZS0+dGFyZ2V0SWRlbnRpZmllciBlcSAkdGFyZ2V0SW50ZXJmYWNlLT50eXBlLT5uYW1lKSB7CiAg
ICAgICAgICAgICB1bmxlc3MgKGdyZXAgeyBmaWxlcGFyc2UoJF8sICIuaWRsIikgZXEgJGluY2x1
ZGUtPm1peGluSWRlbnRpZmllciB9IEB7JHN1cHBsZW1lbnRhbERlcGVuZGVuY2llcy0+eyR0YXJn
ZXRGaWxlTmFtZX19KSB7CiAgICAgICAgICAgICAgICAgZGllICJpbmNsdWRlZCBpbnRlcmZhY2Ug
bWl4aW4gIiAuICRpbmNsdWRlLT5taXhpbklkZW50aWZpZXIgLiAiIG5vdCBpbiBzdXBwbGVtZW50
YWwgZGVwZW5kZW5jaWVzLiIKICAgICAgICAgICAgIH0KQEAgLTQ2Miw2ICs0NjMsMjEgQEAgc3Vi
IFByb2Nlc3NEaWN0aW9uYXJ5U3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzCiAgICAgcmV0dXJuIHVu
bGVzcyAkc3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzOwogCiAgICAgbXkgJHRhcmdldEZpbGVOYW1l
ID0gZmlsZXBhcnNlKCR0YXJnZXREb2N1bWVudC0+ZmlsZU5hbWUpOworCisgICAgIyBGSVhNRTog
Q3VycmVudGx5LCB3ZSByZXF1aXJlIGFsbCB0aGUgaW5jbHVkZXMgc3RhdGVtZW50cyB0byBiZSBp
biB0aGUKKyAgICAjIHNhbWUgZmlsZSBhcyB0aGUgZGljdGlvbmFyeSB0aGV5IGFyZSBiZWluZyBt
aXhlZCBpbnRvLCBidXQgdGhhdCByZXN0cmljdGlvbgorICAgICMgaXMgYXJ0aWZpY2lhbCBhbmQg
d2UgY291bGQgYWRkIHN1cHBvcnQgZm9yIGluY2x1ZGVzIHN0YXRlbWVudHMgZWxzZXdoZXJlLgor
ICAgIG15ICVpbmNsdWRlc01hcCA9ICgpOworICAgIGZvcmVhY2ggbXkgJGluY2x1ZGUgKEB7JHRh
cmdldERvY3VtZW50LT5pbmNsdWRlc30pIHsKKyAgICAgICAgaWYgKCRpbmNsdWRlLT50YXJnZXRJ
ZGVudGlmaWVyIGVxICR0YXJnZXREaWN0aW9uYXJ5LT50eXBlLT5uYW1lKSB7CisgICAgICAgICAg
ICB1bmxlc3MgKGdyZXAgeyBmaWxlcGFyc2UoJF8sICIuaWRsIikgZXEgJGluY2x1ZGUtPm1peGlu
SWRlbnRpZmllciB9IEB7JHN1cHBsZW1lbnRhbERlcGVuZGVuY2llcy0+eyR0YXJnZXRGaWxlTmFt
ZX19KSB7CisgICAgICAgICAgICAgICAgZGllICJpbmNsdWRlZCBkaWN0aW9uYXJ5IG1peGluICIg
LiAkaW5jbHVkZS0+bWl4aW5JZGVudGlmaWVyIC4gIiBub3QgaW4gc3VwcGxlbWVudGFsIGRlcGVu
ZGVuY2llcy4iCisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICRpbmNsdWRlc01hcHskaW5j
bHVkZS0+bWl4aW5JZGVudGlmaWVyfSA9ICRpbmNsdWRlOworICAgICAgICB9CisgICAgfQorCiAg
ICAgZm9yZWFjaCBteSAkaWRsRmlsZSAoQHskc3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzLT57JHRh
cmdldEZpbGVOYW1lfX0pIHsKICAgICAgICAgbmV4dCBpZiBmaWxlcGFyc2UoJGlkbEZpbGUpIGVx
ICR0YXJnZXRGaWxlTmFtZTsKIApAQCAtNDcwLDExICs0ODYsMjIgQEAgc3ViIFByb2Nlc3NEaWN0
aW9uYXJ5U3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzCiAgICAgICAgIG15ICRkb2N1bWVudCA9ICRw
YXJzZXItPlBhcnNlKCRpZGxGaWxlLCAkZGVmaW5lcywgJHByZXByb2Nlc3NvciwgJGlkbEF0dHJp
YnV0ZXMpOwogCiAgICAgICAgIGZvcmVhY2ggbXkgJGRpY3Rpb25hcnkgKEB7JGRvY3VtZW50LT5k
aWN0aW9uYXJpZXN9KSB7Ci0gICAgICAgICAgICBuZXh0IHVubGVzcyAkb2JqZWN0LT5Jc1ZhbGlk
U3VwcGxlbWVudGFsRGljdGlvbmFyeSgkZGljdGlvbmFyeSwgJHRhcmdldERpY3Rpb25hcnkpOwor
ICAgICAgICAgICAgbmV4dCB1bmxlc3MgJG9iamVjdC0+SXNWYWxpZFN1cHBsZW1lbnRhbERpY3Rp
b25hcnkoJGRpY3Rpb25hcnksICR0YXJnZXREaWN0aW9uYXJ5LCBcJWluY2x1ZGVzTWFwKTsKKwor
ICAgICAgICAgICAgaWYgKCRkaWN0aW9uYXJ5LT5pc01peGluICYmICEkZGljdGlvbmFyeS0+aXNQ
YXJ0aWFsKSB7CisgICAgICAgICAgICAgICAgIyBSZWN1cnNpdmVseSBwcm9jZXNzIGFueSBzdXBw
bGVtZW50YWwgZGVwZW5kZW5jaWVzIGZvciBlYWNoIHZhbGlkIG1peGluLiBUaGlzCisgICAgICAg
ICAgICAgICAgIyBhbGxvd3MgcGFydGlhbCBkaWN0aW9uYXJ5IG1peGlucyB0byBiZSBtZXJnZWQg
aW50byB0aGUgbWl4aW4uCisgICAgICAgICAgICAgICAgJG9iamVjdC0+UHJvY2Vzc0RpY3Rpb25h
cnlTdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMoJGRpY3Rpb25hcnksICRkb2N1bWVudCk7CisgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgICMgU3VwcG9ydCBmb3IgbWVtYmVycyBvZiBwYXJ0aWFs
IGRpY3Rpb25hcmllcy4KICAgICAgICAgICAgIGZvcmVhY2ggbXkgJG1lbWJlciAoQHskZGljdGlv
bmFyeS0+bWVtYmVyc30pIHsKLSAgICAgICAgICAgICAgICBuZXh0IHVubGVzcyBzaG91bGRQcm9w
ZXJ0eUJlRXhwb3NlZCgkbWVtYmVyLCAkdGFyZ2V0RGljdGlvbmFyeSk7CisgICAgICAgICAgICAg
ICAgbmV4dCB1bmxlc3MgJHRhcmdldERpY3Rpb25hcnktPmlzTWl4aW4gfHwgc2hvdWxkUHJvcGVy
dHlCZUV4cG9zZWQoJG1lbWJlciwgJHRhcmdldERpY3Rpb25hcnkpOworCisgICAgICAgICAgICAg
ICAgaWYgKCRkaWN0aW9uYXJ5LT5pc01peGluICYmICEkZGljdGlvbmFyeS0+aXNQYXJ0aWFsKSB7
CisgICAgICAgICAgICAgICAgICAgICMgQWRkIGluY2x1ZGVzIHN0YXRlbWVudCBzcGVjaWZpYyBl
eHRlbmRlZCBhdHRyaWJ1dGVzIHRvIGVhY2ggb3BlcmF0aW9uLgorICAgICAgICAgICAgICAgICAg
ICAkb2JqZWN0LT5NZXJnZUV4dGVuZGVkQXR0cmlidXRlc0Zyb21TdXBwbGVtZW50YWwoJGluY2x1
ZGVzTWFweyRkaWN0aW9uYXJ5LT50eXBlLT5uYW1lfS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLCAkbWVt
YmVyLCAiZGljdGlvbmFyeS1tZW1iZXIiKTsKKyAgICAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgICAgICAjIEFkZCBpbnRlcmZhY2Utd2lkZSBleHRlbmRlZCBhdHRyaWJ1dGVzIHRvIGVhY2gg
bWVtYmVyLgogICAgICAgICAgICAgICAgICRvYmplY3QtPk1lcmdlRXh0ZW5kZWRBdHRyaWJ1dGVz
RnJvbVN1cHBsZW1lbnRhbCgkZGljdGlvbmFyeS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLCAkbWVtYmVy
LCAiZGljdGlvbmFyeS1tZW1iZXIiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9JRExQYXJzZXIucG0KaW5kZXggYzQwMTc0ZjFlMWQxMWVlODc2ZTRlZDcyNjU0NDFjNjI4NTlm
MzNmOC4uNTk3YTlmODEyMjg2NzAxNTZjZjNlZGUyNzdmYTY0ZTU4Y2NlMjMxMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KQEAgLTE3Miw2ICsxNzIs
NyBAQCBzdHJ1Y3QoIElETERpY3Rpb25hcnkgPT4gewogICAgIHR5cGUgPT4gJ0lETFR5cGUnLAog
ICAgIHBhcmVudFR5cGUgPT4gJ0lETFR5cGUnLAogICAgIG1lbWJlcnMgPT4gJ0AnLCAjIExpc3Qg
b2YgJ0lETERpY3Rpb25hcnlNZW1iZXInCisgICAgaXNNaXhpbiA9PiAnJCcsICMgVXNlZCBmb3Ig
bWl4aW4gZGljdGlvbmFyaWVzCiAgICAgaXNQYXJ0aWFsID0+ICckJywgIyBVc2VkIGZvciBwYXJ0
aWFsIGRpY3Rpb25hcmllcwogICAgIGV4dGVuZGVkQXR0cmlidXRlcyA9PiAnJScsCiB9KTsKQEAg
LTE5NCw3ICsxOTUsNyBAQCBzdHJ1Y3QoIElETE5hbWVzcGFjZSA9PiB7CiAKICMgaHR0cHM6Ly9o
ZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jaW5jbHVkZXMtc3RhdGVtZW50CiBzdHJ1Y3QoIElETElu
Y2x1ZGVzU3RhdGVtZW50ID0+IHsKLSAgICBpbnRlcmZhY2VJZGVudGlmaWVyID0+ICckJywKKyAg
ICB0YXJnZXRJZGVudGlmaWVyID0+ICckJywKICAgICBtaXhpbklkZW50aWZpZXIgPT4gJyQnLAog
ICAgIGV4dGVuZGVkQXR0cmlidXRlcyA9PiAnJScsCiB9KTsKQEAgLTc0Nyw3ICs3NDgsNyBAQCBz
dWIgcGFyc2VEZWZpbml0aW9uCiAKICAgICBteSAkbmV4dCA9ICRzZWxmLT5uZXh0VG9rZW4oKTsK
ICAgICBpZiAoJG5leHQtPnZhbHVlKCkgPX4gLyRuZXh0Q2FsbGJhY2tPckludGVyZmFjZS8pIHsK
LSAgICAgICAgcmV0dXJuICRzZWxmLT5wYXJzZUNhbGxiYWNrT3JJbnRlcmZhY2VPck1peGluKCRl
eHRlbmRlZEF0dHJpYnV0ZUxpc3QpOworICAgICAgICByZXR1cm4gJHNlbGYtPnBhcnNlQ2FsbGJh
Y2tPckludGVyZmFjZU9ySW50ZXJmYWNlTWl4aW4oJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7CiAg
ICAgfQogICAgIGlmICgkbmV4dC0+dmFsdWUoKSBlcSAibmFtZXNwYWNlIikgewogICAgICAgICBy
ZXR1cm4gJHNlbGYtPnBhcnNlTmFtZXNwYWNlKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwpAQCAt
NzU2LDcgKzc1Nyw3IEBAIHN1YiBwYXJzZURlZmluaXRpb24KICAgICAgICAgcmV0dXJuICRzZWxm
LT5wYXJzZVBhcnRpYWwoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7CiAgICAgfQogICAgIGlmICgk
bmV4dC0+dmFsdWUoKSBlcSAiZGljdGlvbmFyeSIpIHsKLSAgICAgICAgcmV0dXJuICRzZWxmLT5w
YXJzZURpY3Rpb25hcnkoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7CisgICAgICAgIHJldHVybiAk
c2VsZi0+cGFyc2VEaWN0aW9uYXJ5T3JEaWN0aW9uYXJ5TWl4aW4oJGV4dGVuZGVkQXR0cmlidXRl
TGlzdCk7CiAgICAgfQogICAgIGlmICgkbmV4dC0+dmFsdWUoKSBlcSAiZW51bSIpIHsKICAgICAg
ICAgcmV0dXJuICRzZWxmLT5wYXJzZUVudW0oJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7CkBAIC03
NzAsNyArNzcxLDcgQEAgc3ViIHBhcnNlRGVmaW5pdGlvbgogICAgICRzZWxmLT5hc3NlcnRVbmV4
cGVjdGVkVG9rZW4oJG5leHQtPnZhbHVlKCksIF9fTElORV9fKTsKIH0KIAotc3ViIHBhcnNlQ2Fs
bGJhY2tPckludGVyZmFjZU9yTWl4aW4KK3N1YiBwYXJzZUNhbGxiYWNrT3JJbnRlcmZhY2VPcklu
dGVyZmFjZU1peGluCiB7CiAgICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgICBteSAkZXh0ZW5kZWRB
dHRyaWJ1dGVMaXN0ID0gc2hpZnQ7CkBAIC03ODIsNyArNzgzLDcgQEAgc3ViIHBhcnNlQ2FsbGJh
Y2tPckludGVyZmFjZU9yTWl4aW4KICAgICB9CiAgICAgaWYgKCRuZXh0LT52YWx1ZSgpIGVxICJp
bnRlcmZhY2UiKSB7CiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRU
b2tlbigpLCAiaW50ZXJmYWNlIiwgX19MSU5FX18pOwotICAgICAgICByZXR1cm4gJHNlbGYtPnBh
cnNlSW50ZXJmYWNlT3JNaXhpbigkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKKyAgICAgICAgcmV0
dXJuICRzZWxmLT5wYXJzZUludGVyZmFjZU9ySW50ZXJmYWNlTWl4aW4oJGV4dGVuZGVkQXR0cmli
dXRlTGlzdCk7CiAgICAgfQogICAgICRzZWxmLT5hc3NlcnRVbmV4cGVjdGVkVG9rZW4oJG5leHQt
PnZhbHVlKCksIF9fTElORV9fKTsKIH0KQEAgLTgwMywxNCArODA0LDE0IEBAIHN1YiBwYXJzZUNh
bGxiYWNrUmVzdE9ySW50ZXJmYWNlCiAgICAgJHNlbGYtPmFzc2VydFVuZXhwZWN0ZWRUb2tlbigk
bmV4dC0+dmFsdWUoKSwgX19MSU5FX18pOwogfQogCi1zdWIgcGFyc2VJbnRlcmZhY2VPck1peGlu
CitzdWIgcGFyc2VJbnRlcmZhY2VPckludGVyZmFjZU1peGluCiB7CiAgICAgbXkgJHNlbGYgPSBz
aGlmdDsKICAgICBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0ID0gc2hpZnQ7CiAKICAgICBteSAk
bmV4dCA9ICRzZWxmLT5uZXh0VG9rZW4oKTsKICAgICBpZiAoJG5leHQtPnZhbHVlKCkgZXEgIm1p
eGluIikgewotICAgICAgICByZXR1cm4gJHNlbGYtPnBhcnNlTWl4aW4oJGV4dGVuZGVkQXR0cmli
dXRlTGlzdCk7CisgICAgICAgIHJldHVybiAkc2VsZi0+cGFyc2VJbnRlcmZhY2VNaXhpbigkZXh0
ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKICAgICB9CiAgICAgaWYgKCRuZXh0LT50eXBlKCkgPT0gSWRl
bnRpZmllclRva2VuKSB7CiAgICAgICAgIHJldHVybiAkc2VsZi0+cGFyc2VJbnRlcmZhY2UoJGV4
dGVuZGVkQXR0cmlidXRlTGlzdCk7CkBAIC05MjIsNyArOTIzLDcgQEAgc3ViIHBhcnNlQ2FsbGJh
Y2tJbnRlcmZhY2VNZW1iZXIKICAgICAkc2VsZi0+YXNzZXJ0VW5leHBlY3RlZFRva2VuKCRuZXh0
LT52YWx1ZSgpLCBfX0xJTkVfXyk7CiB9CiAKLXN1YiBwYXJzZU1peGluCitzdWIgcGFyc2VJbnRl
cmZhY2VNaXhpbgogewogICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICAgbXkgJGV4dGVuZGVkQXR0
cmlidXRlTGlzdCA9IHNoaWZ0OwpAQCAtOTQxLDcgKzk0Miw3IEBAIHN1YiBwYXJzZU1peGluCiAg
ICAgICAgICRpbnRlcmZhY2VNaXhpbi0+dHlwZShtYWtlU2ltcGxlVHlwZSgkbmFtZSkpOwogCiAg
ICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAieyIsIF9f
TElORV9fKTsKLSAgICAgICAgbXkgJGludGVyZmFjZU1peGluTWVtYmVycyA9ICRzZWxmLT5wYXJz
ZU1peGluTWVtYmVycygpOworICAgICAgICBteSAkaW50ZXJmYWNlTWl4aW5NZW1iZXJzID0gJHNl
bGYtPnBhcnNlSW50ZXJmYWNlTWl4aW5NZW1iZXJzKCk7CiAgICAgICAgICRzZWxmLT5hc3NlcnRU
b2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAifSIsIF9fTElORV9fKTsKICAgICAgICAgJHNl
bGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCksICI7IiwgX19MSU5FX18pOwog
ICAgICAgICBhcHBseU1lbWJlckxpc3QoJGludGVyZmFjZU1peGluLCAkaW50ZXJmYWNlTWl4aW5N
ZW1iZXJzKTsKQEAgLTk1NCw3ICs5NTUsNyBAQCBzdWIgcGFyc2VNaXhpbgogICAgICRzZWxmLT5h
c3NlcnRVbmV4cGVjdGVkVG9rZW4oJG5leHQtPnZhbHVlKCksIF9fTElORV9fKTsKIH0KIAotc3Vi
IHBhcnNlTWl4aW5NZW1iZXJzCitzdWIgcGFyc2VJbnRlcmZhY2VNaXhpbk1lbWJlcnMKIHsKICAg
ICBteSAkc2VsZiA9IHNoaWZ0OwogICAgIG15IEBtaXhpbk1lbWJlcnMgPSAoKTsKQEAgLTk2NSw3
ICs5NjYsNyBAQCBzdWIgcGFyc2VNaXhpbk1lbWJlcnMKICAgICAgICAgbXkgJG1peGluTWVtYmVy
OwogCiAgICAgICAgIGlmICgkbmV4dC0+dHlwZSgpID09IElkZW50aWZpZXJUb2tlbiB8fCAkbmV4
dC0+dmFsdWUoKSA9fiAvJG5leHRNaXhpbk1lbWJlcnNfMS8pIHsKLSAgICAgICAgICAgICRtaXhp
bk1lbWJlciA9ICRzZWxmLT5wYXJzZU1peGluTWVtYmVyKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3Qp
OworICAgICAgICAgICAgJG1peGluTWVtYmVyID0gJHNlbGYtPnBhcnNlSW50ZXJmYWNlTWl4aW5N
ZW1iZXIoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBsYXN0OwogICAgICAgICB9CkBAIC05NzYsNyArOTc3LDcgQEAgc3ViIHBhcnNlTWl4aW5N
ZW1iZXJzCiAgICAgcmV0dXJuIFxAbWl4aW5NZW1iZXJzOwogfQogCi1zdWIgcGFyc2VNaXhpbk1l
bWJlcgorc3ViIHBhcnNlSW50ZXJmYWNlTWl4aW5NZW1iZXIKIHsKICAgICBteSAkc2VsZiA9IHNo
aWZ0OwogICAgIG15ICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QgPSBzaGlmdDsKQEAgLTExMDYsMTEg
KzExMDcsMTAgQEAgc3ViIHBhcnNlUGFydGlhbERlZmluaXRpb24KICAgICBteSAkbmV4dCA9ICRz
ZWxmLT5uZXh0VG9rZW4oKTsKICAgICBpZiAoJG5leHQtPnZhbHVlKCkgZXEgImludGVyZmFjZSIp
IHsKICAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCksICJp
bnRlcmZhY2UiLCBfX0xJTkVfXyk7Ci0gICAgICAgIHJldHVybiAkc2VsZi0+cGFyc2VQYXJ0aWFs
SW50ZXJmYWNlT3JQYXJ0aWFsTWl4aW4oJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7CisgICAgICAg
IHJldHVybiAkc2VsZi0+cGFyc2VQYXJ0aWFsSW50ZXJmYWNlT3JQYXJ0aWFsSW50ZXJmYWNlTWl4
aW4oJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7CiAgICAgfQogICAgIGlmICgkbmV4dC0+dmFsdWUo
KSBlcSAiZGljdGlvbmFyeSIpIHsKLSAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNl
bGYtPmdldFRva2VuKCksICJkaWN0aW9uYXJ5IiwgX19MSU5FX18pOwotICAgICAgICByZXR1cm4g
JHNlbGYtPnBhcnNlUGFydGlhbERpY3Rpb25hcnkoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7Cisg
ICAgICAgIHJldHVybiAkc2VsZi0+cGFyc2VQYXJ0aWFsRGljdGlvbmFyeU9yUGFydGlhbERpY3Rp
b25hcnlNaXhpbigkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKICAgICB9CiAgICAgaWYgKCRuZXh0
LT52YWx1ZSgpIGVxICJuYW1lc3BhY2UiKSB7CiAgICAgICAgIG15ICRuYW1lc3BhY2UgPSAkc2Vs
Zi0+cGFyc2VOYW1lc3BhY2UoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7CkBAIC0xMTIwLDE0ICsx
MTIwLDE0IEBAIHN1YiBwYXJzZVBhcnRpYWxEZWZpbml0aW9uCiAgICAgJHNlbGYtPmFzc2VydFVu
ZXhwZWN0ZWRUb2tlbigkbmV4dC0+dmFsdWUoKSwgX19MSU5FX18pOwogfQogCi1zdWIgcGFyc2VQ
YXJ0aWFsSW50ZXJmYWNlT3JQYXJ0aWFsTWl4aW4KK3N1YiBwYXJzZVBhcnRpYWxJbnRlcmZhY2VP
clBhcnRpYWxJbnRlcmZhY2VNaXhpbgogewogICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICAgbXkg
JGV4dGVuZGVkQXR0cmlidXRlTGlzdCA9IHNoaWZ0OwogCiAgICAgbXkgJG5leHQgPSAkc2VsZi0+
bmV4dFRva2VuKCk7CiAgICAgaWYgKCRuZXh0LT52YWx1ZSgpIGVxICJtaXhpbiIpIHsKLSAgICAg
ICAgbXkgJG1peGluID0gJHNlbGYtPnBhcnNlTWl4aW4oJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7
CisgICAgICAgIG15ICRtaXhpbiA9ICRzZWxmLT5wYXJzZUludGVyZmFjZU1peGluKCRleHRlbmRl
ZEF0dHJpYnV0ZUxpc3QpOwogICAgICAgICAkbWl4aW4tPmlzUGFydGlhbCgxKTsKICAgICAgICAg
cmV0dXJuICRtaXhpbjsKICAgICB9CkBAIC0xMjcxLDYgKzEyNzEsMjUgQEAgc3ViIHBhcnNlSW50
ZXJmYWNlTWVtYmVyCiAgICAgJHNlbGYtPmFzc2VydFVuZXhwZWN0ZWRUb2tlbigkbmV4dC0+dmFs
dWUoKSwgX19MSU5FX18pOwogfQogCitzdWIgcGFyc2VQYXJ0aWFsRGljdGlvbmFyeU9yUGFydGlh
bERpY3Rpb25hcnlNaXhpbgoreworICAgIG15ICRzZWxmID0gc2hpZnQ7CisgICAgbXkgJGV4dGVu
ZGVkQXR0cmlidXRlTGlzdCA9IHNoaWZ0OworCisgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUo
JHNlbGYtPmdldFRva2VuKCksICJkaWN0aW9uYXJ5IiwgX19MSU5FX18pOworCisgICAgbXkgJG5l
eHQgPSAkc2VsZi0+bmV4dFRva2VuKCk7CisgICAgaWYgKCRuZXh0LT52YWx1ZSgpIGVxICJtaXhp
biIpIHsKKyAgICAgICAgbXkgJG1peGluID0gJHNlbGYtPnBhcnNlRGljdGlvbmFyeU1peGluKCRl
eHRlbmRlZEF0dHJpYnV0ZUxpc3QpOworICAgICAgICAkbWl4aW4tPmlzUGFydGlhbCgxKTsKKyAg
ICAgICAgcmV0dXJuICRtaXhpbjsKKyAgICB9CisgICAgaWYgKCRuZXh0LT50eXBlKCkgPT0gSWRl
bnRpZmllclRva2VuKSB7CisgICAgICAgIHJldHVybiAkc2VsZi0+cGFyc2VQYXJ0aWFsRGljdGlv
bmFyeSgkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKKyAgICB9CisgICAgJHNlbGYtPmFzc2VydFVu
ZXhwZWN0ZWRUb2tlbigkbmV4dC0+dmFsdWUoKSwgX19MSU5FX18pOworfQorCiBzdWIgcGFyc2VQ
YXJ0aWFsRGljdGlvbmFyeQogewogICAgIG15ICRzZWxmID0gc2hpZnQ7CkBAIC0xMjk5LDE1ICsx
MzE4LDYxIEBAIHN1YiBwYXJzZVBhcnRpYWxEaWN0aW9uYXJ5CiAgICAgJHNlbGYtPmFzc2VydFVu
ZXhwZWN0ZWRUb2tlbigkbmV4dC0+dmFsdWUoKSwgX19MSU5FX18pOwogfQogCitzdWIgcGFyc2VE
aWN0aW9uYXJ5T3JEaWN0aW9uYXJ5TWl4aW4KK3sKKyAgICBteSAkc2VsZiA9IHNoaWZ0OworICAg
IG15ICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QgPSBzaGlmdDsKKworICAgICRzZWxmLT5hc3NlcnRU
b2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAiZGljdGlvbmFyeSIsIF9fTElORV9fKTsKKwor
ICAgIG15ICRuZXh0ID0gJHNlbGYtPm5leHRUb2tlbigpOworICAgIGlmICgkbmV4dC0+dmFsdWUo
KSBlcSAibWl4aW4iKSB7CisgICAgICAgIHJldHVybiAkc2VsZi0+cGFyc2VEaWN0aW9uYXJ5TWl4
aW4oJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7CisgICAgfQorICAgIGlmICgkbmV4dC0+dHlwZSgp
ID09IElkZW50aWZpZXJUb2tlbikgeworICAgICAgICByZXR1cm4gJHNlbGYtPnBhcnNlRGljdGlv
bmFyeSgkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKKyAgICB9CisgICAgJHNlbGYtPmFzc2VydFVu
ZXhwZWN0ZWRUb2tlbigkbmV4dC0+dmFsdWUoKSwgX19MSU5FX18pOworfQorCitzdWIgcGFyc2VE
aWN0aW9uYXJ5TWl4aW4KK3sKKyAgICBteSAkc2VsZiA9IHNoaWZ0OworICAgIG15ICRleHRlbmRl
ZEF0dHJpYnV0ZUxpc3QgPSBzaGlmdDsKKworICAgIG15ICRuZXh0ID0gJHNlbGYtPm5leHRUb2tl
bigpOworICAgIGlmICgkbmV4dC0+dmFsdWUoKSBlcSAibWl4aW4iKSB7CisgICAgICAgICRzZWxm
LT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAibWl4aW4iLCBfX0xJTkVfXyk7
CisKKyAgICAgICAgbXkgJGRpY3Rpb25hcnkgPSBJRExEaWN0aW9uYXJ5LT5uZXcoKTsKKyAgICAg
ICAgJGRpY3Rpb25hcnktPmlzTWl4aW4oMSk7CisKKyAgICAgICAgJHNlbGYtPmFzc2VydEV4dGVu
ZGVkQXR0cmlidXRlc1ZhbGlkRm9yQ29udGV4dCgkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LCAiZGlj
dGlvbmFyeSIpOworICAgICAgICAkZGljdGlvbmFyeS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRl
bmRlZEF0dHJpYnV0ZUxpc3QpOworCisgICAgICAgIG15ICRuYW1lVG9rZW4gPSAkc2VsZi0+Z2V0
VG9rZW4oKTsKKyAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVHlwZSgkbmFtZVRva2VuLCBJZGVu
dGlmaWVyVG9rZW4pOworCisgICAgICAgIG15ICRuYW1lID0gJG5hbWVUb2tlbi0+dmFsdWUoKTsK
KyAgICAgICAgJGRpY3Rpb25hcnktPnR5cGUobWFrZVNpbXBsZVR5cGUoJG5hbWUpKTsKKworICAg
ICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgInsiLCBfX0xJ
TkVfXyk7CisgICAgICAgICRkaWN0aW9uYXJ5LT5tZW1iZXJzKCRzZWxmLT5wYXJzZURpY3Rpb25h
cnlNZW1iZXJzKCkpOworICAgICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0
VG9rZW4oKSwgIn0iLCBfX0xJTkVfXyk7CisgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVl
KCRzZWxmLT5nZXRUb2tlbigpLCAiOyIsIF9fTElORV9fKTsKKworICAgICAgICByZXR1cm4gJGRp
Y3Rpb25hcnk7CisgICAgfQorICAgICRzZWxmLT5hc3NlcnRVbmV4cGVjdGVkVG9rZW4oJG5leHQt
PnZhbHVlKCksIF9fTElORV9fKTsKK30KKwogc3ViIHBhcnNlRGljdGlvbmFyeQogewogICAgIG15
ICRzZWxmID0gc2hpZnQ7CiAgICAgbXkgJGV4dGVuZGVkQXR0cmlidXRlTGlzdCA9IHNoaWZ0Owog
CiAgICAgbXkgJG5leHQgPSAkc2VsZi0+bmV4dFRva2VuKCk7Ci0gICAgaWYgKCRuZXh0LT52YWx1
ZSgpIGVxICJkaWN0aW9uYXJ5IikgewotICAgICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1ZSgk
c2VsZi0+Z2V0VG9rZW4oKSwgImRpY3Rpb25hcnkiLCBfX0xJTkVfXyk7Ci0KKyAgICBpZiAoJG5l
eHQtPnR5cGUoKSA9PSBJZGVudGlmaWVyVG9rZW4pIHsKICAgICAgICAgbXkgJGRpY3Rpb25hcnkg
PSBJRExEaWN0aW9uYXJ5LT5uZXcoKTsKIAogICAgICAgICAkc2VsZi0+YXNzZXJ0RXh0ZW5kZWRB
dHRyaWJ1dGVzVmFsaWRGb3JDb250ZXh0KCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QsICJkaWN0aW9u
YXJ5Iik7CkBAIC0xNTYyLDggKzE2MjcsOCBAQCBzdWIgcGFyc2VJbmNsdWRlc1N0YXRlbWVudAog
ICAgIGlmICgkbmV4dC0+dHlwZSgpID09IElkZW50aWZpZXJUb2tlbikgewogICAgICAgICBteSAk
aW5jbHVkZXNTdGF0ZW1lbnQgPSBJRExJbmNsdWRlc1N0YXRlbWVudC0+bmV3KCk7CiAgICAgCi0g
ICAgICAgIG15ICRpbnRlcmZhY2VJZGVudGlmaWVyID0gJHNlbGYtPnBhcnNlTmFtZSgpOwotICAg
ICAgICAkaW5jbHVkZXNTdGF0ZW1lbnQtPmludGVyZmFjZUlkZW50aWZpZXIoJGludGVyZmFjZUlk
ZW50aWZpZXIpOworICAgICAgICBteSAkdGFyZ2V0SWRlbnRpZmllciA9ICRzZWxmLT5wYXJzZU5h
bWUoKTsKKyAgICAgICAgJGluY2x1ZGVzU3RhdGVtZW50LT50YXJnZXRJZGVudGlmaWVyKCR0YXJn
ZXRJZGVudGlmaWVyKTsKIAogICAgICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+
Z2V0VG9rZW4oKSwgImluY2x1ZGVzIiwgX19MSU5FX18pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsCmluZGV4IGQwMzNlZDYwNjE3
ZGE0MzJhNTM0MTExNTRkMTJkMDY1ZDQ4MDg0YTcuLjhlM2FhOTYzOWYwZDIyZjBlZDRmNTYxODAz
MGEwOTdlY2Y3NmM1NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvcHJlcHJvY2Vzcy1pZGxzLnBsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvcHJlcHJvY2Vzcy1pZGxzLnBsCkBAIC0xODgsMTYgKzE4OCwxMiBAQCBmb3JlYWNoIG15ICRp
ZGxGaWxlTmFtZSAoc29ydCBrZXlzICVpZGxGaWxlTmFtZUhhc2gpIHsKICAgICAgICAgJGRpY3Rp
b25hcnlEZXBlbmRlbmNpZXN7JGlkbEZpbGUtPnByaW1hcnlEZWNsYXJhdGlvbk5hbWV9ID0gKGpv
aW4oIi5pZGwgIiwgQHskYmFzZURpY3Rpb25hcmllc30pIC4gIi5pZGwiKTsKICAgICB9CiAKLSAg
ICAjIFNraXAgaWYgdGhlIElETCBmaWxlIGRvZXMgbm90IGNvbnRhaW4gYW4gaW50ZXJmYWNlIG9y
IGEgY2FsbGJhY2sgaW50ZXJmYWNlLgotICAgICMgVGhlIElETCBtYXkgY29udGFpbiBhIGRpY3Rp
b25hcnkuCi0gICAgbmV4dCB1bmxlc3MgY29udGFpbnNJbnRlcmZhY2VPckNhbGxiYWNrSW50ZXJm
YWNlRnJvbUlETCgkaWRsRmlsZSk7Ci0KICAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICRpZGxGaWxl
LT5wcmltYXJ5RGVjbGFyYXRpb25OYW1lOwogICAgICMgSGFuZGxlIGluY2x1ZGUgc3RhdGVtZW50
cy4KLSAgICBteSAkaW5jbHVkZWRJbnRlcmZhY2VzID0gZ2V0SW5jbHVkZWRJbnRlcmZhY2VzRnJv
bUlETCgkaWRsRmlsZSwgJGludGVyZmFjZU5hbWUpOwotICAgIGZvcmVhY2ggbXkgJGluY2x1ZGVk
SW50ZXJmYWNlIChAeyRpbmNsdWRlZEludGVyZmFjZXN9KSB7Ci0gICAgICAgIG15ICRpbmNsdWRl
ZElkbEZpbGVQYXRoID0gJGludGVyZmFjZU5hbWVUb0lkbEZpbGVQYXRoeyRpbmNsdWRlZEludGVy
ZmFjZX07Ci0gICAgICAgIGRpZSAiQ291bGQgbm90IGZpbmQgYSB0aGUgSURMIGZpbGUgd2hlcmUg
dGhlIGZvbGxvd2luZyBpbmNsdWRlZCBpbnRlcmZhY2UgaXMgZGVmaW5lZDogJGluY2x1ZGVkSW50
ZXJmYWNlIiB1bmxlc3MgJGluY2x1ZGVkSWRsRmlsZVBhdGg7CisgICAgbXkgJGluY2x1ZGVzID0g
Z2V0SW5jbHVkZXNGcm9tSURMKCRpZGxGaWxlLCAkaW50ZXJmYWNlTmFtZSk7CisgICAgZm9yZWFj
aCBteSAkaW5jbHVkZSAoQHskaW5jbHVkZXN9KSB7CisgICAgICAgIG15ICRpbmNsdWRlZElkbEZp
bGVQYXRoID0gJGludGVyZmFjZU5hbWVUb0lkbEZpbGVQYXRoeyRpbmNsdWRlfTsKKyAgICAgICAg
ZGllICJDb3VsZCBub3QgZmluZCB0aGUgSURMIGZpbGUgd2hlcmUgJGluY2x1ZGUgaXMgZGVmaW5l
ZCIgdW5sZXNzICRpbmNsdWRlZElkbEZpbGVQYXRoOwogICAgICAgICBpZiAoJHN1cHBsZW1lbnRh
bERlcGVuZGVuY2llc3skaW5jbHVkZWRJZGxGaWxlUGF0aH0pIHsKICAgICAgICAgICAgIHB1c2go
QHskc3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzeyRpbmNsdWRlZElkbEZpbGVQYXRofX0sICRpbnRl
cmZhY2VOYW1lKTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTIwNSw2ICsyMDEsMTAgQEAgZm9yZWFj
aCBteSAkaWRsRmlsZU5hbWUgKHNvcnQga2V5cyAlaWRsRmlsZU5hbWVIYXNoKSB7CiAgICAgICAg
IH0KICAgICB9CiAKKyAgICAjIFNraXAgaWYgdGhlIElETCBmaWxlIGRvZXMgbm90IGNvbnRhaW4g
YW4gaW50ZXJmYWNlIG9yIGEgY2FsbGJhY2sgaW50ZXJmYWNlLgorICAgICMgVGhlIElETCBtYXkg
Y29udGFpbiBhIGRpY3Rpb25hcnkuCisgICAgbmV4dCB1bmxlc3MgY29udGFpbnNJbnRlcmZhY2VP
ckNhbGxiYWNrSW50ZXJmYWNlRnJvbUlETCgkaWRsRmlsZSk7CisKICAgICBuZXh0IGlmIGlzTWl4
aW5JbnRlcmZhY2VGcm9tSURMKCRpZGxGaWxlKTsKIAogICAgIG15ICRpc0NhbGxiYWNrSW50ZXJm
YWNlID0gaXNDYWxsYmFja0ludGVyZmFjZUZyb21JREwoJGlkbEZpbGUpOwpAQCAtNDg5LDEzICs0
ODksMTMgQEAgc3ViIGdldFBhcnRpYWxOYW1lc0Zyb21JREwKICAgICBteSAkZmlsZUNvbnRlbnRz
ID0gJGlkbEZpbGUtPmZpbGVDb250ZW50czsKIAogICAgIG15IEBwYXJ0aWFsTmFtZXMgPSAoKTsK
LSAgICB3aGlsZSAoJGZpbGVDb250ZW50cyA9fiAvcGFydGlhbFxzK2ludGVyZmFjZVxzK21peGlu
XHMrKFx3KykvbWcpIHsKKyAgICB3aGlsZSAoJGZpbGVDb250ZW50cyA9fiAvcGFydGlhbFxzKyg/
OmludGVyZmFjZXxkaWN0aW9uYXJ5KVxzK21peGluXHMrKFx3KykvbWcpIHsKICAgICAgICAgcHVz
aChAcGFydGlhbE5hbWVzLCAkMSk7CiAgICAgfQogCiAgICAgJGZpbGVDb250ZW50cyA9ICRpZGxG
aWxlLT5maWxlQ29udGVudHM7Ci0gICAgd2hpbGUgKCRmaWxlQ29udGVudHMgPX4gL3BhcnRpYWxc
cysoaW50ZXJmYWNlfGRpY3Rpb25hcnl8bmFtZXNwYWNlKVxzKyhcdyspL21nKSB7Ci0gICAgICAg
IHB1c2goQHBhcnRpYWxOYW1lcywgJDIpIGlmICQyIG5lICJtaXhpbiI7CisgICAgd2hpbGUgKCRm
aWxlQ29udGVudHMgPX4gL3BhcnRpYWxccysoPzppbnRlcmZhY2V8ZGljdGlvbmFyeXxuYW1lc3Bh
Y2UpXHMrKFx3KykvbWcpIHsKKyAgICAgICAgcHVzaChAcGFydGlhbE5hbWVzLCAkMSkgaWYgJDEg
bmUgIm1peGluIjsKICAgICB9CiAgICAgCiAgICAgaWYgKCR2YWxpZGF0ZUFnYWluc3RQYXJzZXIp
IHsKQEAgLTUyOCw0MCArNTI4LDQwIEBAIHN1YiBnZXRQYXJ0aWFsTmFtZXNGcm9tSURMCiAKICMg
aWRlbnRpZmllci1BIGluY2x1ZGVzIGlkZW50aWZpZXItQjsKICMgaHR0cHM6Ly9oZXljYW0uZ2l0
aHViLmlvL3dlYmlkbC8jaW5jbHVkZXMtc3RhdGVtZW50Ci1zdWIgZ2V0SW5jbHVkZWRJbnRlcmZh
Y2VzRnJvbUlETAorc3ViIGdldEluY2x1ZGVzRnJvbUlETAogewogICAgIG15ICRpZGxGaWxlID0g
c2hpZnQ7Ci0gICAgbXkgJGludGVyZmFjZU5hbWUgPSBzaGlmdDsKKyAgICBteSAkaWRlbnRpZmll
ciA9IHNoaWZ0OwogCiAgICAgbXkgJGZpbGVDb250ZW50cyA9ICRpZGxGaWxlLT5maWxlQ29udGVu
dHM7CiAKLSAgICBteSBAaW5jbHVkZWRJbnRlcmZhY2VzID0gKCk7CisgICAgbXkgQGluY2x1ZGVz
ID0gKCk7CiAgICAgd2hpbGUgKCRmaWxlQ29udGVudHMgPX4gL1xiKFx3KylccytpbmNsdWRlc1xz
KyhcdyspXHMqOy9tZykgewotICAgICAgICBkaWUgIklkZW50aWZpZXIgb24gdGhlIGxlZnQgb2Yg
dGhlICdpbmNsdWRlcycgc3RhdGVtZW50IHNob3VsZCBiZSAkaW50ZXJmYWNlTmFtZSBpbiAkaW50
ZXJmYWNlTmFtZS5pZGwsIGJ1dCBmb3VuZCAkMSIgaWYgJDEgbmUgJGludGVyZmFjZU5hbWU7Ci0g
ICAgICAgIHB1c2goQGluY2x1ZGVkSW50ZXJmYWNlcywgJDIpOworICAgICAgICBkaWUgIklkZW50
aWZpZXIgb24gdGhlIGxlZnQgb2YgdGhlICdpbmNsdWRlcycgc3RhdGVtZW50IHNob3VsZCBiZSAk
aWRlbnRpZmllciBpbiAkaWRlbnRpZmllci5pZGwsIGJ1dCBmb3VuZCAkMSIgaWYgJDEgbmUgJGlk
ZW50aWZpZXI7CisgICAgICAgIHB1c2goQGluY2x1ZGVzLCAkMik7CiAgICAgfQogCiAgICAgaWYg
KCR2YWxpZGF0ZUFnYWluc3RQYXJzZXIpIHsKLSAgICAgICAgcHJpbnQgIlZhbGlkYXRpbmcgZ2V0
SW5jbHVkZWRJbnRlcmZhY2VzRnJvbUlETCBmb3IgIiAuICRpZGxGaWxlLT5maWxlTmFtZSAuICIg
YWdhaW5zdCB2YWxpZGF0aW9uIHBhcnNlci5cbiIgaWYgJHZlcmJvc2U7CisgICAgICAgIHByaW50
ICJWYWxpZGF0aW5nIGdldEluY2x1ZGVzRnJvbUlETCBmb3IgIiAuICRpZGxGaWxlLT5maWxlTmFt
ZSAuICIgYWdhaW5zdCB2YWxpZGF0aW9uIHBhcnNlci5cbiIgaWYgJHZlcmJvc2U7CiAKLSAgICAg
ICAgbXkgQGluY2x1ZGVkSW50ZXJmYWNlc0Zyb21QYXJzZWREb2N1bWVudCA9ICgpOworICAgICAg
ICBteSBAaW5jbHVkZXNGcm9tUGFyc2VkRG9jdW1lbnQgPSAoKTsKICAgICAgICAgZm9yZWFjaCBt
eSAkaW5jbHVkZSAoQHskaWRsRmlsZS0+cGFyc2VkRG9jdW1lbnQtPmluY2x1ZGVzfSkgewotICAg
ICAgICAgICAgcHVzaChAaW5jbHVkZWRJbnRlcmZhY2VzRnJvbVBhcnNlZERvY3VtZW50LCAkaW5j
bHVkZS0+bWl4aW5JZGVudGlmaWVyKTsKKyAgICAgICAgICAgIHB1c2goQGluY2x1ZGVzRnJvbVBh
cnNlZERvY3VtZW50LCAkaW5jbHVkZS0+bWl4aW5JZGVudGlmaWVyKTsKICAgICAgICAgfQogCi0g
ICAgICAgIG15IEBzb3J0ZWRJbmNsdWRlZEludGVyZmFjZXMgPSBzb3J0IEBpbmNsdWRlZEludGVy
ZmFjZXM7Ci0gICAgICAgIG15IEBzb3J0ZWRJbmNsdWRlZEludGVyZmFjZXNGcm9tUGFyc2VkRG9j
dW1lbnQgPSBzb3J0IEBpbmNsdWRlZEludGVyZmFjZXNGcm9tUGFyc2VkRG9jdW1lbnQ7CisgICAg
ICAgIG15IEBzb3J0ZWRJbmNsdWRlcyA9IHNvcnQgQGluY2x1ZGVzOworICAgICAgICBteSBAc29y
dGVkSW5jbHVkZXNGcm9tUGFyc2VkRG9jdW1lbnQgPSBzb3J0IEBpbmNsdWRlc0Zyb21QYXJzZWRE
b2N1bWVudDsKIAogICAgICAgICBsb2NhbCAkRGF0YTo6RHVtcGVyOjpUZXJzZSA9IDE7CiAgICAg
ICAgIGxvY2FsICREYXRhOjpEdW1wZXI6OkluZGVudCA9IDA7CiAKLSAgICAgICAgdW5sZXNzIChs
aXN0c0FyZUlkZW50aWNhbChcQHNvcnRlZEluY2x1ZGVkSW50ZXJmYWNlcywgXEBzb3J0ZWRJbmNs
dWRlZEludGVyZmFjZXNGcm9tUGFyc2VkRG9jdW1lbnQpKSB7Ci0gICAgICAgICAgICBkaWUgIkZB
SUxVUkU6IEluY2x1ZGVkIGludGVyZmFjZXMgZnJvbSByZWd1bGFyIGV4cHJlc3Npb24gYmFzZWQg
cGFyc2VyICgiIC4gRHVtcGVyKEBzb3J0ZWRJbmNsdWRlZEludGVyZmFjZXMpIC4gIikgZG9uJ3Qg
bWF0Y2ggdGhvc2UgZnJvbSB2YWxpZGF0aW9uIHBhcnNlciAoIiAuIER1bXBlcihAc29ydGVkSW5j
bHVkZWRJbnRlcmZhY2VzRnJvbVBhcnNlZERvY3VtZW50KSAuICIpIFsiIC4gJGlkbEZpbGUtPmZp
bGVOYW1lIC4gIl0iOworICAgICAgICB1bmxlc3MgKGxpc3RzQXJlSWRlbnRpY2FsKFxAc29ydGVk
SW5jbHVkZXMsIFxAc29ydGVkSW5jbHVkZXNGcm9tUGFyc2VkRG9jdW1lbnQpKSB7CisgICAgICAg
ICAgICBkaWUgIkZBSUxVUkU6IEluY2x1ZGVzIGZyb20gcmVndWxhciBleHByZXNzaW9uIGJhc2Vk
IHBhcnNlciAoIiAuIER1bXBlcihAc29ydGVkSW5jbHVkZXMpIC4gIikgZG9uJ3QgbWF0Y2ggdGhv
c2UgZnJvbSB2YWxpZGF0aW9uIHBhcnNlciAoIiAuIER1bXBlcihAc29ydGVkSW5jbHVkZXNGcm9t
UGFyc2VkRG9jdW1lbnQpIC4gIikgWyIgLiAkaWRsRmlsZS0+ZmlsZU5hbWUgLiAiXSI7CiAgICAg
ICAgIH0KLSAgICAgICAgcHJpbnQgIlNVQ0NFU1MhIEluY2x1ZGVkIGludGVyZmFjZXMgZnJvbSBy
ZWd1bGFyIGV4cHJlc3Npb24gYmFzZWQgcGFyc2VyICgiIC4gRHVtcGVyKEBzb3J0ZWRJbmNsdWRl
ZEludGVyZmFjZXMpIC4gIikgbWF0Y2ggdGhvc2UgZnJvbSB2YWxpZGF0aW9uIHBhcnNlciAoIiAu
IER1bXBlcihAc29ydGVkSW5jbHVkZWRJbnRlcmZhY2VzRnJvbVBhcnNlZERvY3VtZW50KSAuICIp
LlxuIiBpZiAkdmVyYm9zZTsKKyAgICAgICAgcHJpbnQgIlNVQ0NFU1MhIEluY2x1ZGVzIGZyb20g
cmVndWxhciBleHByZXNzaW9uIGJhc2VkIHBhcnNlciAoIiAuIER1bXBlcihAc29ydGVkSW5jbHVk
ZXMpIC4gIikgbWF0Y2ggdGhvc2UgZnJvbSB2YWxpZGF0aW9uIHBhcnNlciAoIiAuIER1bXBlcihA
c29ydGVkSW5jbHVkZXNGcm9tUGFyc2VkRG9jdW1lbnQpIC4gIikuXG4iIGlmICR2ZXJib3NlOwog
ICAgIH0KIAotICAgIHJldHVybiBcQGluY2x1ZGVkSW50ZXJmYWNlcworICAgIHJldHVybiBcQGlu
Y2x1ZGVzCiB9CiAKIHN1YiBpc0NhbGxiYWNrSW50ZXJmYWNlRnJvbUlETApAQCAtNzU2LDEzICs3
NTYsMTMgQEAgc3ViIGdldFVuZGVmaW5lZEJhc2VEaWN0aW9uYXJpZXNGcm9tSURMCiAgICAgbXkg
JGZpbGVDb250ZW50cyA9ICRpZGxGaWxlLT5maWxlQ29udGVudHM7CiAKICAgICBteSBAZGljdGlv
bmFyeU5hbWVzID0gKCk7Ci0gICAgd2hpbGUgKCRmaWxlQ29udGVudHMgPX4gL1xzKmRpY3Rpb25h
cnlccysoXHcrKVxzKi9tZykgeworICAgIHdoaWxlICgkZmlsZUNvbnRlbnRzID1+IC9ccypkaWN0
aW9uYXJ5XHMrKD86bWl4aW5ccyspPyhcdyspXHMqL21nKSB7CiAgICAgICAgIHB1c2goQGRpY3Rp
b25hcnlOYW1lcywgJDEpCiAgICAgfQogCiAgICAgJGZpbGVDb250ZW50cyA9ICRpZGxGaWxlLT5m
aWxlQ29udGVudHM7CiAgICAgbXkgQGJhc2VEaWN0aW9uYXJpZXMgPSAoKTsKLSAgICB3aGlsZSAo
JGZpbGVDb250ZW50cyA9fiAvXHMqZGljdGlvbmFyeVxzKyhcdyspXHMrOlxzKyhcdyspXHMqL21n
KSB7CisgICAgd2hpbGUgKCRmaWxlQ29udGVudHMgPX4gL1xzKmRpY3Rpb25hcnlccysoPzptaXhp
blxzKyk/KFx3Kylccys6XHMrKFx3KylccyovbWcpIHsKICAgICAgICAgbmV4dCBpZiAoZ3JlcCB7
ICRfIGVxICQyIH0gQGRpY3Rpb25hcnlOYW1lcyk7CiAgICAgICAgIG5leHQgaWYgKGdyZXAgeyAk
XyBlcSAkMiB9IEBiYXNlRGljdGlvbmFyaWVzKTsKICAgICAgICAgcHVzaChAYmFzZURpY3Rpb25h
cmllcywgJDIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdERpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdERpY3Rpb25hcnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0MDU0MWYwNzIx
YTBmMGM5MGU4YzA0MDE5ZTBhMzYxMWMyYTg4MjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGljdGlvbmFyeS5jcHAKQEAg
LTAsMCArMSwyMzUgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBv
cGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkg
Z2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQorCisj
aW5jbHVkZSAiSlNUZXN0RGljdGlvbmFyeS5oIgorCisjaW5jbHVkZSAiSlNET01Db252ZXJ0TnVt
YmVycy5oIgorI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMu
aD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PYmplY3RDb25zdHJ1Y3Rvci5oPgorCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKKyNpZiBFTkFCTEUoQ29u
ZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCisKK3RlbXBsYXRlPD4gVGVzdERpY3Rpb25h
cnkgY29udmVydERpY3Rpb25hcnk8VGVzdERpY3Rpb25hcnk+KEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIFZNJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIGJvb2wgaXNOdWxsT3JVbmRlZmluZWQgPSB2YWx1ZS5pc1Vu
ZGVmaW5lZE9yTnVsbCgpOworICAgIGF1dG8qIG9iamVjdCA9IGlzTnVsbE9yVW5kZWZpbmVkID8g
bnVsbHB0ciA6IHZhbHVlLmdldE9iamVjdCgpOworICAgIGlmIChVTkxJS0VMWSghaXNOdWxsT3JV
bmRlZmluZWQgJiYgIW9iamVjdCkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJmxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKyAg
ICBUZXN0RGljdGlvbmFyeSByZXN1bHQ7CisjaWYgRU5BQkxFKENvbmRpdGlvbjExKQorICAgIEpT
VmFsdWUgY29uZGl0aW9uYWxQcm9wZXJ0eVZhbHVlOworICAgIGlmIChpc051bGxPclVuZGVmaW5l
ZCkKKyAgICAgICAgY29uZGl0aW9uYWxQcm9wZXJ0eVZhbHVlID0ganNVbmRlZmluZWQoKTsKKyAg
ICBlbHNlIHsKKyAgICAgICAgY29uZGl0aW9uYWxQcm9wZXJ0eVZhbHVlID0gb2JqZWN0LT5nZXQo
JmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjb25kaXRp
b25hbFByb3BlcnR5IikpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IHsgfSk7CisgICAgfQorICAgIGlmICghY29uZGl0aW9uYWxQcm9wZXJ0eVZhbHVlLmlzVW5kZWZp
bmVkKCkpIHsKKyAgICAgICAgcmVzdWx0LmNvbmRpdGlvbmFsUHJvcGVydHkgPSBjb252ZXJ0PElE
TERvdWJsZT4obGV4aWNhbEdsb2JhbE9iamVjdCwgY29uZGl0aW9uYWxQcm9wZXJ0eVZhbHVlKTsK
KyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0KKyNl
bmRpZgorI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorICAg
IEpTVmFsdWUgbWl4aW5Db25kaXRpb25hbFByb3BlcnR5VmFsdWU7CisgICAgaWYgKGlzTnVsbE9y
VW5kZWZpbmVkKQorICAgICAgICBtaXhpbkNvbmRpdGlvbmFsUHJvcGVydHlWYWx1ZSA9IGpzVW5k
ZWZpbmVkKCk7CisgICAgZWxzZSB7CisgICAgICAgIG1peGluQ29uZGl0aW9uYWxQcm9wZXJ0eVZh
bHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJtaXhpbkNvbmRpdGlvbmFsUHJvcGVydHkiKSk7CisgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisgICAgaWYgKCFtaXhpbkNvbmRp
dGlvbmFsUHJvcGVydHlWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIHJlc3VsdC5taXhp
bkNvbmRpdGlvbmFsUHJvcGVydHkgPSBjb252ZXJ0PElETERvdWJsZT4obGV4aWNhbEdsb2JhbE9i
amVjdCwgbWl4aW5Db25kaXRpb25hbFByb3BlcnR5VmFsdWUpOworICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfQorI2VuZGlmCisjaWYgRU5BQkxFKENv
bmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCisgICAgSlNWYWx1ZSBtaXhpblByb3Bl
cnR5VmFsdWU7CisgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQorICAgICAgICBtaXhpblByb3Bl
cnR5VmFsdWUgPSBqc1VuZGVmaW5lZCgpOworICAgIGVsc2UgeworICAgICAgICBtaXhpblByb3Bl
cnR5VmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgIm1peGluUHJvcGVydHkiKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisgICAgaWYgKCFtaXhpblByb3BlcnR5VmFs
dWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICByZXN1bHQubWl4aW5Qcm9wZXJ0eSA9IGNvbnZl
cnQ8SURMRG91YmxlPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBtaXhpblByb3BlcnR5VmFsdWUpOwor
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfQorI2Vu
ZGlmCisjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCisgICAg
SlNWYWx1ZSBtaXhpblNldHRpbmdQcm9wZXJ0eVZhbHVlOworICAgIGlmIChpc051bGxPclVuZGVm
aW5lZCkKKyAgICAgICAgbWl4aW5TZXR0aW5nUHJvcGVydHlWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7
CisgICAgZWxzZSB7CisgICAgICAgIG1peGluU2V0dGluZ1Byb3BlcnR5VmFsdWUgPSBvYmplY3Qt
PmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1p
eGluU2V0dGluZ1Byb3BlcnR5IikpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIHsgfSk7CisgICAgfQorICAgIGlmICghbWl4aW5TZXR0aW5nUHJvcGVydHlWYWx1ZS5p
c1VuZGVmaW5lZCgpKSB7CisgICAgICAgIHJlc3VsdC5taXhpblNldHRpbmdQcm9wZXJ0eSA9IGNv
bnZlcnQ8SURMRG91YmxlPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBtaXhpblNldHRpbmdQcm9wZXJ0
eVZhbHVlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwor
ICAgIH0KKyNlbmRpZgorI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlv
bjIzKQorICAgIEpTVmFsdWUgcGFydGlhbE1peGluQ29uZGl0aW9uYWxQcm9wZXJ0eVZhbHVlOwor
ICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKKyAgICAgICAgcGFydGlhbE1peGluQ29uZGl0aW9u
YWxQcm9wZXJ0eVZhbHVlID0ganNVbmRlZmluZWQoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgcGFy
dGlhbE1peGluQ29uZGl0aW9uYWxQcm9wZXJ0eVZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxH
bG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsTWl4aW5Db25k
aXRpb25hbFByb3BlcnR5IikpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIHsgfSk7CisgICAgfQorICAgIGlmICghcGFydGlhbE1peGluQ29uZGl0aW9uYWxQcm9wZXJ0
eVZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgcmVzdWx0LnBhcnRpYWxNaXhpbkNvbmRp
dGlvbmFsUHJvcGVydHkgPSBjb252ZXJ0PElETERvdWJsZT4obGV4aWNhbEdsb2JhbE9iamVjdCwg
cGFydGlhbE1peGluQ29uZGl0aW9uYWxQcm9wZXJ0eVZhbHVlKTsKKyAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0KKyNlbmRpZgorI2lmIEVOQUJMRShD
b25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorICAgIEpTVmFsdWUgcGFydGlhbE1p
eGluUHJvcGVydHlWYWx1ZTsKKyAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCisgICAgICAgIHBh
cnRpYWxNaXhpblByb3BlcnR5VmFsdWUgPSBqc1VuZGVmaW5lZCgpOworICAgIGVsc2UgeworICAg
ICAgICBwYXJ0aWFsTWl4aW5Qcm9wZXJ0eVZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9i
YWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsTWl4aW5Qcm9wZXJ0
eSIpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAg
IH0KKyAgICBpZiAoIXBhcnRpYWxNaXhpblByb3BlcnR5VmFsdWUuaXNVbmRlZmluZWQoKSkgewor
ICAgICAgICByZXN1bHQucGFydGlhbE1peGluUHJvcGVydHkgPSBjb252ZXJ0PElETERvdWJsZT4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgcGFydGlhbE1peGluUHJvcGVydHlWYWx1ZSk7CisgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisjZW5kaWYKKyNp
ZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKKyAgICBKU1ZhbHVl
IHBhcnRpYWxNaXhpblNldHRpbmdQcm9wZXJ0eVZhbHVlOworICAgIGlmIChpc051bGxPclVuZGVm
aW5lZCkKKyAgICAgICAgcGFydGlhbE1peGluU2V0dGluZ1Byb3BlcnR5VmFsdWUgPSBqc1VuZGVm
aW5lZCgpOworICAgIGVsc2UgeworICAgICAgICBwYXJ0aWFsTWl4aW5TZXR0aW5nUHJvcGVydHlW
YWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAicGFydGlhbE1peGluU2V0dGluZ1Byb3BlcnR5IikpOworICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfQorICAgIGlmICghcGFydGlh
bE1peGluU2V0dGluZ1Byb3BlcnR5VmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICByZXN1
bHQucGFydGlhbE1peGluU2V0dGluZ1Byb3BlcnR5ID0gY29udmVydDxJRExEb3VibGU+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHBhcnRpYWxNaXhpblNldHRpbmdQcm9wZXJ0eVZhbHVlKTsKKyAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0KKyNlbmRpZgor
ICAgIEpTVmFsdWUgcHJvcGVydHlWYWx1ZTsKKyAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCisg
ICAgICAgIHByb3BlcnR5VmFsdWUgPSBqc1VuZGVmaW5lZCgpOworICAgIGVsc2UgeworICAgICAg
ICBwcm9wZXJ0eVZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJwcm9wZXJ0eSIpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0KKyAgICBpZiAoIXByb3BlcnR5VmFsdWUu
aXNVbmRlZmluZWQoKSkgeworICAgICAgICByZXN1bHQucHJvcGVydHkgPSBjb252ZXJ0PElETERv
dWJsZT4obGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlWYWx1ZSk7CisgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisgICAgSlNWYWx1ZSBzZXR0
aW5nUHJvcGVydHlWYWx1ZTsKKyAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCisgICAgICAgIHNl
dHRpbmdQcm9wZXJ0eVZhbHVlID0ganNVbmRlZmluZWQoKTsKKyAgICBlbHNlIHsKKyAgICAgICAg
c2V0dGluZ1Byb3BlcnR5VmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNldHRpbmdQcm9wZXJ0eSIpKTsKKyAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0KKyAgICBpZiAoIXNl
dHRpbmdQcm9wZXJ0eVZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgcmVzdWx0LnNldHRp
bmdQcm9wZXJ0eSA9IGNvbnZlcnQ8SURMRG91YmxlPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzZXR0
aW5nUHJvcGVydHlWYWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgeyB9KTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworSlNDOjpKU09iamVjdCog
Y29udmVydERpY3Rpb25hcnlUb0pTKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIGNvbnN0IFRlc3REaWN0aW9u
YXJ5JiBkaWN0aW9uYXJ5KQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CisKKyAgICBhdXRvIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KCZs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qub2JqZWN0UHJvdG90eXBlKCkpOworCisj
aWYgRU5BQkxFKENvbmRpdGlvbjExKQorICAgIGlmICghSURMRG91YmxlOjppc051bGxWYWx1ZShk
aWN0aW9uYXJ5LmNvbmRpdGlvbmFsUHJvcGVydHkpKSB7CisgICAgICAgIGF1dG8gY29uZGl0aW9u
YWxQcm9wZXJ0eVZhbHVlID0gdG9KUzxJRExEb3VibGU+KElETERvdWJsZTo6ZXh0cmFjdFZhbHVl
RnJvbU51bGxhYmxlKGRpY3Rpb25hcnkuY29uZGl0aW9uYWxQcm9wZXJ0eSkpOworICAgICAgICBy
ZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY29u
ZGl0aW9uYWxQcm9wZXJ0eSIpLCBjb25kaXRpb25hbFByb3BlcnR5VmFsdWUpOworICAgIH0KKyNl
bmRpZgorI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorICAg
IGlmICghSURMRG91YmxlOjppc051bGxWYWx1ZShkaWN0aW9uYXJ5Lm1peGluQ29uZGl0aW9uYWxQ
cm9wZXJ0eSkpIHsKKyAgICAgICAgYXV0byBtaXhpbkNvbmRpdGlvbmFsUHJvcGVydHlWYWx1ZSA9
IHRvSlM8SURMRG91YmxlPihJRExEb3VibGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0
aW9uYXJ5Lm1peGluQ29uZGl0aW9uYWxQcm9wZXJ0eSkpOworICAgICAgICByZXN1bHQtPnB1dERp
cmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWl4aW5Db25kaXRpb25h
bFByb3BlcnR5IiksIG1peGluQ29uZGl0aW9uYWxQcm9wZXJ0eVZhbHVlKTsKKyAgICB9CisjZW5k
aWYKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKKyAgICBp
ZiAoIUlETERvdWJsZTo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5taXhpblByb3BlcnR5KSkgewor
ICAgICAgICBhdXRvIG1peGluUHJvcGVydHlWYWx1ZSA9IHRvSlM8SURMRG91YmxlPihJRExEb3Vi
bGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5Lm1peGluUHJvcGVydHkpKTsK
KyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgIm1peGluUHJvcGVydHkiKSwgbWl4aW5Qcm9wZXJ0eVZhbHVlKTsKKyAgICB9CisjZW5k
aWYKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKKyAgICBp
ZiAoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+c2V0dGluZ3NWYWx1ZXMoKS50ZXN0U2V0dGluZ0VuYWJsZWQpIHsKKyAg
ICAgICAgaWYgKCFJRExEb3VibGU6OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkubWl4aW5TZXR0aW5n
UHJvcGVydHkpKSB7CisgICAgICAgICAgICBhdXRvIG1peGluU2V0dGluZ1Byb3BlcnR5VmFsdWUg
PSB0b0pTPElETERvdWJsZT4oSURMRG91YmxlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGlj
dGlvbmFyeS5taXhpblNldHRpbmdQcm9wZXJ0eSkpOworICAgICAgICAgICAgcmVzdWx0LT5wdXRE
aXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1peGluU2V0dGluZ1By
b3BlcnR5IiksIG1peGluU2V0dGluZ1Byb3BlcnR5VmFsdWUpOworICAgICAgICB9CisgICAgfQor
I2VuZGlmCisjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCisg
ICAgaWYgKCFJRExEb3VibGU6OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkucGFydGlhbE1peGluQ29u
ZGl0aW9uYWxQcm9wZXJ0eSkpIHsKKyAgICAgICAgYXV0byBwYXJ0aWFsTWl4aW5Db25kaXRpb25h
bFByb3BlcnR5VmFsdWUgPSB0b0pTPElETERvdWJsZT4oSURMRG91YmxlOjpleHRyYWN0VmFsdWVG
cm9tTnVsbGFibGUoZGljdGlvbmFyeS5wYXJ0aWFsTWl4aW5Db25kaXRpb25hbFByb3BlcnR5KSk7
CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJwYXJ0aWFsTWl4aW5Db25kaXRpb25hbFByb3BlcnR5IiksIHBhcnRpYWxNaXhpbkNv
bmRpdGlvbmFsUHJvcGVydHlWYWx1ZSk7CisgICAgfQorI2VuZGlmCisjaWYgRU5BQkxFKENvbmRp
dGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCisgICAgaWYgKCFJRExEb3VibGU6OmlzTnVs
bFZhbHVlKGRpY3Rpb25hcnkucGFydGlhbE1peGluUHJvcGVydHkpKSB7CisgICAgICAgIGF1dG8g
cGFydGlhbE1peGluUHJvcGVydHlWYWx1ZSA9IHRvSlM8SURMRG91YmxlPihJRExEb3VibGU6OmV4
dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LnBhcnRpYWxNaXhpblByb3BlcnR5KSk7
CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJwYXJ0aWFsTWl4aW5Qcm9wZXJ0eSIpLCBwYXJ0aWFsTWl4aW5Qcm9wZXJ0eVZhbHVl
KTsKKyAgICB9CisjZW5kaWYKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25k
aXRpb24yMykKKyAgICBpZiAoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmdsb2JhbE9iamVj
dCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGluZ3NWYWx1ZXMoKS50ZXN0U2V0dGlu
ZzJFbmFibGVkKSB7CisgICAgICAgIGlmICghSURMRG91YmxlOjppc051bGxWYWx1ZShkaWN0aW9u
YXJ5LnBhcnRpYWxNaXhpblNldHRpbmdQcm9wZXJ0eSkpIHsKKyAgICAgICAgICAgIGF1dG8gcGFy
dGlhbE1peGluU2V0dGluZ1Byb3BlcnR5VmFsdWUgPSB0b0pTPElETERvdWJsZT4oSURMRG91Ymxl
OjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5wYXJ0aWFsTWl4aW5TZXR0aW5n
UHJvcGVydHkpKTsKKyAgICAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsTWl4aW5TZXR0aW5nUHJvcGVydHkiKSwgcGFy
dGlhbE1peGluU2V0dGluZ1Byb3BlcnR5VmFsdWUpOworICAgICAgICB9CisgICAgfQorI2VuZGlm
CisgICAgaWYgKCFJRExEb3VibGU6OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkucHJvcGVydHkpKSB7
CisgICAgICAgIGF1dG8gcHJvcGVydHlWYWx1ZSA9IHRvSlM8SURMRG91YmxlPihJRExEb3VibGU6
OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LnByb3BlcnR5KSk7CisgICAgICAg
IHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJw
cm9wZXJ0eSIpLCBwcm9wZXJ0eVZhbHVlKTsKKyAgICB9CisgICAgaWYgKGpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KCZnbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNl
dHRpbmdzVmFsdWVzKCkudGVzdFNldHRpbmdFbmFibGVkKSB7CisgICAgICAgIGlmICghSURMRG91
YmxlOjppc051bGxWYWx1ZShkaWN0aW9uYXJ5LnNldHRpbmdQcm9wZXJ0eSkpIHsKKyAgICAgICAg
ICAgIGF1dG8gc2V0dGluZ1Byb3BlcnR5VmFsdWUgPSB0b0pTPElETERvdWJsZT4oSURMRG91Ymxl
OjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5zZXR0aW5nUHJvcGVydHkpKTsK
KyAgICAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJzZXR0aW5nUHJvcGVydHkiKSwgc2V0dGluZ1Byb3BlcnR5VmFsdWUpOworICAg
ICAgICB9CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKKyNlbmRpZgorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxF
KENvbmRpdGlvbjIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RGljdGlvbmFyeS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdERpY3Rpb25hcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNzlmYzI4OGM5NjM3
ZWJiZTkwMTJiOTAwZDMwZWIzZmRhOTE2YzNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERpY3Rpb25hcnkuaApAQCAtMCww
ICsxLDM2IEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBz
b3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVy
YXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisg
ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAg
ICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQorCisjaW5jbHVkZSAiSlNE
T01Db252ZXJ0RGljdGlvbmFyeS5oIgorI2luY2x1ZGUgIlRlc3REaWN0aW9uYXJ5LmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8PiBXRUJDT1JFX0VYUE9SVCBUZXN0RGljdGlv
bmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0RGljdGlvbmFyeT4oSlNDOjpKU0dsb2JhbE9iamVj
dCYsIEpTQzo6SlNWYWx1ZSk7CisKK1dFQkNPUkVfRVhQT1JUIEpTQzo6SlNPYmplY3QqIGNvbnZl
cnREaWN0aW9uYXJ5VG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNET01HbG9iYWxPYmplY3Qm
LCBjb25zdCBUZXN0RGljdGlvbmFyeSYpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWl4aW5E
aWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RNaXhpbkRpY3Rpb25hcnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1ODEyN2FiYzNhMzIyZjkzNTQy
ZTg1NTJiMTRmZjQ3NmE2ZmMzNzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWl4aW5EaWN0aW9uYXJ5LmNwcApAQCAtMCww
ICsxLDUgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCB0byBpbmZvcm0gYnVpbGQg
c2NyaXB0cyB0aGF0IEpTVGVzdE1peGluRGljdGlvbmFyeS5oIGFuZAorICAgIEpTVGVzdE1peGlu
RGljdGlvbmFyeS5jcHAgd2VyZSBjcmVhdGVkIGZvciBUZXN0TWl4aW5EaWN0aW9uYXJ5LmlkbCwg
YW5kIHByZXZlbnQgdGhlIGJ1aWxkCisgICAgc2NyaXB0cyBmcm9tIHRyeWluZyB0byByZWdlbmVy
YXRlIEpTVGVzdE1peGluRGljdGlvbmFyeS5oIGFuZCBKU1Rlc3RNaXhpbkRpY3Rpb25hcnkuY3Bw
IG9uIGV2ZXJ5IGJ1aWxkLgorKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNaXhpbkRpY3Rpb25hcnkuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNaXhpbkRpY3Rpb25hcnkuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yNTgxMjdhYmMzYTMyMmY5MzU0MmU4NTUyYjE0ZmY0NzZhNmZjMzc2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1p
eGluRGljdGlvbmFyeS5oCkBAIC0wLDAgKzEsNSBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgZ2Vu
ZXJhdGVkIHRvIGluZm9ybSBidWlsZCBzY3JpcHRzIHRoYXQgSlNUZXN0TWl4aW5EaWN0aW9uYXJ5
LmggYW5kCisgICAgSlNUZXN0TWl4aW5EaWN0aW9uYXJ5LmNwcCB3ZXJlIGNyZWF0ZWQgZm9yIFRl
c3RNaXhpbkRpY3Rpb25hcnkuaWRsLCBhbmQgcHJldmVudCB0aGUgYnVpbGQKKyAgICBzY3JpcHRz
IGZyb20gdHJ5aW5nIHRvIHJlZ2VuZXJhdGUgSlNUZXN0TWl4aW5EaWN0aW9uYXJ5LmggYW5kIEpT
VGVzdE1peGluRGljdGlvbmFyeS5jcHAgb24gZXZlcnkgYnVpbGQuCisqLwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBhcnRpYWxNaXhp
bkRpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFBhcnRpYWxNaXhpbkRpY3Rpb25hcnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkNTJmMWZjOWEx
YWE5NGMxN2E4YTI4ZjE4OGJmNWE4NzA0MDM4ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGFydGlhbE1peGluRGljdGlv
bmFyeS5jcHAKQEAgLTAsMCArMSw1IEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQg
dG8gaW5mb3JtIGJ1aWxkIHNjcmlwdHMgdGhhdCBKU1Rlc3RQYXJ0aWFsTWl4aW5EaWN0aW9uYXJ5
LmggYW5kCisgICAgSlNUZXN0UGFydGlhbE1peGluRGljdGlvbmFyeS5jcHAgd2VyZSBjcmVhdGVk
IGZvciBUZXN0UGFydGlhbE1peGluRGljdGlvbmFyeS5pZGwsIGFuZCBwcmV2ZW50IHRoZSBidWls
ZAorICAgIHNjcmlwdHMgZnJvbSB0cnlpbmcgdG8gcmVnZW5lcmF0ZSBKU1Rlc3RQYXJ0aWFsTWl4
aW5EaWN0aW9uYXJ5LmggYW5kIEpTVGVzdFBhcnRpYWxNaXhpbkRpY3Rpb25hcnkuY3BwIG9uIGV2
ZXJ5IGJ1aWxkLgorKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RQYXJ0aWFsTWl4aW5EaWN0aW9uYXJ5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGFydGlhbE1peGluRGljdGlvbmFyeS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmJkNTJmMWZjOWExYWE5NGMxN2E4YTI4ZjE4OGJmNWE4NzA0MDM4ZmQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0UGFydGlhbE1peGluRGljdGlvbmFyeS5oCkBAIC0wLDAgKzEsNSBAQAorLyoKKyAgICBU
aGlzIGZpbGUgaXMgZ2VuZXJhdGVkIHRvIGluZm9ybSBidWlsZCBzY3JpcHRzIHRoYXQgSlNUZXN0
UGFydGlhbE1peGluRGljdGlvbmFyeS5oIGFuZAorICAgIEpTVGVzdFBhcnRpYWxNaXhpbkRpY3Rp
b25hcnkuY3BwIHdlcmUgY3JlYXRlZCBmb3IgVGVzdFBhcnRpYWxNaXhpbkRpY3Rpb25hcnkuaWRs
LCBhbmQgcHJldmVudCB0aGUgYnVpbGQKKyAgICBzY3JpcHRzIGZyb20gdHJ5aW5nIHRvIHJlZ2Vu
ZXJhdGUgSlNUZXN0UGFydGlhbE1peGluRGljdGlvbmFyeS5oIGFuZCBKU1Rlc3RQYXJ0aWFsTWl4
aW5EaWN0aW9uYXJ5LmNwcCBvbiBldmVyeSBidWlsZC4KKyovCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzLmRl
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBl
bmRlbmNpZXMuZGVwCmluZGV4IGE2ZjBjYmJjNjhhMWNlOTg0ZGFjOTAwZmVjNjRjODIxMmJkNDIz
NDMuLmViOWVlMzI2ZDE2OWEzMGQ0ZmYwM2YyMGY0ZWFlNWU4ZDdjY2E0NDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBlbmRl
bmNpZXMuZGVwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBw
bGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwCkBAIC04Miw2ICs4MiwxMCBAQCBXZWJET01UZXN0RGVy
aXZlZERpY3Rpb25hcnkuaDoKIEpTVGVzdERlcml2ZWREaWN0aW9uYXJ5Mi5oOiAKIERPTVRlc3RE
ZXJpdmVkRGljdGlvbmFyeTIuaDogCiBXZWJET01UZXN0RGVyaXZlZERpY3Rpb25hcnkyLmg6IAor
SlNUZXN0RGljdGlvbmFyeS5oOiBUZXN0TWl4aW5EaWN0aW9uYXJ5LmlkbAorRE9NVGVzdERpY3Rp
b25hcnkuaDogVGVzdE1peGluRGljdGlvbmFyeS5pZGwKK1dlYkRPTVRlc3REaWN0aW9uYXJ5Lmg6
IFRlc3RNaXhpbkRpY3Rpb25hcnkuaWRsCitUZXN0TWl4aW5EaWN0aW9uYXJ5LmlkbDoKIEpTVGVz
dERpY3Rpb25hcnlXaXRoT25seUNvbmRpdGlvbmFsTWVtYmVycy5oOiAKIERPTVRlc3REaWN0aW9u
YXJ5V2l0aE9ubHlDb25kaXRpb25hbE1lbWJlcnMuaDogCiBXZWJET01UZXN0RGljdGlvbmFyeVdp
dGhPbmx5Q29uZGl0aW9uYWxNZW1iZXJzLmg6IApAQCAtMTU5LDYgKzE2MywxMCBAQCBXZWJET01U
ZXN0TWFwTGlrZS5oOgogSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5oOiAK
IERPTVRlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmg6IAogV2ViRE9NVGVzdE1h
cExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuaDogCitKU1Rlc3RNaXhpbkRpY3Rpb25hcnku
aDogVGVzdFBhcnRpYWxNaXhpbkRpY3Rpb25hcnkuaWRsCitET01UZXN0TWl4aW5EaWN0aW9uYXJ5
Lmg6IFRlc3RQYXJ0aWFsTWl4aW5EaWN0aW9uYXJ5LmlkbAorV2ViRE9NVGVzdE1peGluRGljdGlv
bmFyeS5oOiBUZXN0UGFydGlhbE1peGluRGljdGlvbmFyeS5pZGwKK1Rlc3RQYXJ0aWFsTWl4aW5E
aWN0aW9uYXJ5LmlkbDoKIEpTVGVzdE1peGluSW50ZXJmYWNlLmg6IFRlc3RQYXJ0aWFsTWl4aW5J
bnRlcmZhY2UuaWRsCiBET01UZXN0TWl4aW5JbnRlcmZhY2UuaDogVGVzdFBhcnRpYWxNaXhpbklu
dGVyZmFjZS5pZGwKIFdlYkRPTVRlc3RNaXhpbkludGVyZmFjZS5oOiBUZXN0UGFydGlhbE1peGlu
SW50ZXJmYWNlLmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3REaWN0aW9uYXJ5LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0RGljdGlvbmFyeS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjZiNDFiNDZkNzg0ZDM0MDgy
NjA3YWQ5ODU2OGU5OWVjMjc3YjQwZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RGljdGlvbmFyeS5pZGwKQEAgLTAsMCArMSw0MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3JtLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIElu
Yy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIFRoaXMg
SURMIGZpbGUgaXMgZm9yIHRlc3RpbmcgdGhlIGJpbmRpbmdzIGNvZGUgZ2VuZXJhdG9yIGFuZCBm
b3IgdHJhY2tpbmcKKy8vIGNoYW5nZXMgaW4gaXRzIG91dHB1dC4KKworWworICAgIENvbmRpdGlv
bmFsPUNvbmRpdGlvbjF8Q29uZGl0aW9uMiwKKyAgICBFeHBvcnRNYWNybz1XRUJDT1JFX0VYUE9S
VCwKKyAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKK10gZGljdGlvbmFyeSBUZXN0RGljdGlvbmFy
eSB7CisgICAgZG91YmxlIHByb3BlcnR5OworICAgIFtDb25kaXRpb25hbD1Db25kaXRpb24xMV0g
ZG91YmxlIGNvbmRpdGlvbmFsUHJvcGVydHk7CisgICAgW0VuYWJsZWRCeVNldHRpbmc9VGVzdFNl
dHRpbmddIGRvdWJsZSBzZXR0aW5nUHJvcGVydHk7Cit9OworCitUZXN0RGljdGlvbmFyeSBpbmNs
dWRlcyBUZXN0TWl4aW5EaWN0aW9uYXJ5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RNaXhpbkRpY3Rpb25hcnkuaWRsIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RNaXhpbkRpY3Rpb25hcnkuaWRsCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjhlMzM4OGRhOGQyNWVjOTY3NmVhN2I5YTZmNTEzNTA4MWMyZmE0NzIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE1peGluRGlj
dGlvbmFyeS5pZGwKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtc3RyQXJnLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
IDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFt
ZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFc3RyQXJnLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gVGhpcyBJREwgZmlsZSBpcyBmb3IgdGVz
dGluZyB0aGUgYmluZGluZ3MgY29kZSBnZW5lcmF0b3IgYW5kIGZvciB0cmFja2luZworLy8gY2hh
bmdlcyBpbiBpdHMgb3V0cHV0LgorCitbCisgICAgQ29uZGl0aW9uYWw9Q29uZGl0aW9uMjJ8Q29u
ZGl0aW9uMjMsCitdIGRpY3Rpb25hcnkgbWl4aW4gVGVzdE1peGluRGljdGlvbmFyeSB7CisgICAg
ZG91YmxlIG1peGluUHJvcGVydHk7CisgICAgW0NvbmRpdGlvbmFsPUNvbmRpdGlvbjExXSBkb3Vi
bGUgbWl4aW5Db25kaXRpb25hbFByb3BlcnR5OworICAgIFtFbmFibGVkQnlTZXR0aW5nPVRlc3RT
ZXR0aW5nXSBkb3VibGUgbWl4aW5TZXR0aW5nUHJvcGVydHk7Cit9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RQYXJ0aWFsTWl4aW5EaWN0aW9u
YXJ5LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0UGFydGlh
bE1peGluRGljdGlvbmFyeS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWUzOTMyMTQ3MTViMjk0NTZjMjRiNmU0
OGYwYjM3ZTRkYWZhZWE1ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9UZXN0UGFydGlhbE1peGluRGljdGlvbmFyeS5pZGwKQEAgLTAsMCAr
MSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3JtLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisg
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8v
IFRoaXMgSURMIGZpbGUgaXMgZm9yIHRlc3RpbmcgdGhlIGJpbmRpbmdzIGNvZGUgZ2VuZXJhdG9y
IGFuZCBmb3IgdHJhY2tpbmcKKy8vIGNoYW5nZXMgaW4gaXRzIG91dHB1dC4KKworWworICAgIENv
bmRpdGlvbmFsPUNvbmRpdGlvbjMzLAorXSBwYXJ0aWFsIGRpY3Rpb25hcnkgbWl4aW4gVGVzdE1p
eGluRGljdGlvbmFyeSB7CisgICAgZG91YmxlIHBhcnRpYWxNaXhpblByb3BlcnR5OworICAgIFtD
b25kaXRpb25hbD1Db25kaXRpb240NF0gZG91YmxlIHBhcnRpYWxNaXhpbkNvbmRpdGlvbmFsUHJv
cGVydHk7CisgICAgW0VuYWJsZWRCeVNldHRpbmc9VGVzdFNldHRpbmcyXSBkb3VibGUgcGFydGlh
bE1peGluU2V0dGluZ1Byb3BlcnR5OworfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424454</attachid>
            <date>2021-03-27 07:46:20 -0700</date>
            <delta_ts>2021-03-29 12:17:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223621-20210327084619.patch</filename>
            <type>text/plain</type>
            <size>41048</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxMDM4MjM0MGNmZTg2ZTk0Mjk1N2JjNWQ1NjQzMmE2NWU2MWE3MjZhLi4x
MTgxOTlkOGYwZDRhN2MxOWNhMzNiYmMzYWE5OGIyMDdmMzJkNDgyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTcgQEAKKzIwMjEtMDMtMjIgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFtQYXltZW50IFJlcXVlc3RdIG1vdmUgYWRkZWQgYG9iamVjdCBkYXRhYCB0
byBgQXBwbGVQYXlNb2RpZmllcmAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyMzYyMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzU3MjA4Nzk+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGBvYmpl
Y3QgZGF0YWAgaW4gYFBheW1lbnREZXRhaWxzTW9kaWZpZXJgIGhhcyBhIHNpYmxpbmcgcHJvcGVy
dHkgYHJlcXVpcmVkIERPTVN0cmluZyBzdXBwb3J0ZWRNZXRob2RzYAorICAgICAgICB3aGljaCBh
Y3RzIGFzIGEgImd1YXJkIiB0byBtYWtlIHN1cmUgdGhhdCB0aGUgc3RydWN0dXJlIG9mIGBkYXRh
YCBpcyBvbmx5IGxpbWl0ZWQgdG8gdGhhdCBgc3VwcG9ydGVkTWV0aG9kc2AKKyAgICAgICAgbWVh
bmluZyB0aGF0IHRoZXJlJ3Mgbm8gY29uY2VybiBvdmVyIG5hbWluZyBjb2xsaXNpb25zIGJldHdl
ZW4gdHdvIGRpZmZlcmVudCBgc3VwcG9ydGVkTWV0aG9kc2AuIEFzIHN1Y2gsCisgICAgICAgIHRo
ZSBgb2JqZWN0IGRhdGFgIGFkZGVkIHRvIGBQYXltZW50SXRlbWAgYW5kIGBQYXltZW50RGV0YWls
c0Jhc2VgIGFuZCBgUGF5bWVudFNoaXBwaW5nT3B0aW9uYCBzaG91bGQgcmVhbGx5CisgICAgICAg
IGJlIHBhcnQgb2YgYEFwcGxlUGF5TW9kaWZpZXJgICh3aGljaCBpcyB3aGF0IHRoZSBgb2JqZWN0
IGRhdGFgIGluIGBQYXltZW50RGV0YWlsc01vZGlmaWVyYCBpcyBwYXJzZWQgaW50bykuCisKKyAg
ICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5TW9kaWZpZXIu
aWRsOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlN
b2RpZmllci5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBw
bGVQYXlQYXltZW50SGFuZGxlci5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvcGF5bWVu
dHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
b252ZXJ0QW5kVmFsaWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6bWVyZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbGVQYXlQYXltZW50SGFuZGxlcjo6c2hvdyk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpjb21wdXRlU2hpcHBpbmdNZXRob2RzIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OmNvbXB1dGVUb3RhbEFu
ZExpbmVJdGVtcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjp2YWxpZGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpmaXJzdEFwcGxpY2FibGVNb2RpZmll
ciBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlQYXltZW50SGFuZGxl
cjo6c2hpcHBpbmdBZGRyZXNzVXBkYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVBh
eW1lbnRIYW5kbGVyOjpzaGlwcGluZ09wdGlvblVwZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbGVQYXlQYXltZW50SGFuZGxlcjo6cGF5bWVudE1ldGhvZFVwZGF0ZWQpOgorICAgICAgICBJ
bnN0ZWFkIG9mIHZhbGlkYXRpbmcgYW5kIG1lcmdpbmcgZGF0YSBmcm9tIHRoZSB2YXJpb3VzIGBB
cHBsZVBheSpEYXRhYCBvYmplY3RzLCBnZXQgdGhlCisgICAgICAgIGZpcnN0IGFwcGxpY2FibGUg
YEFwcGxlUGF5TW9kaWZpZXJgIGZyb20gdGhlIGxpc3Qgb2YgYFBheW1lbnREZXRhaWxzTW9kaWZp
ZXJgIGFuZCB1c2UgdGhhdAorICAgICAgICBmb3IgdmFsaWRhdGlvbiBhbmQgZGF0YSBtZXJnaW5n
IChzaW5jZSwgYXMgZXhwbGFpbmVkIGFib3ZlLCBpdCBub3cgY29udGFpbnMgdGhlIGRhdGEpLgor
CisgICAgICAgICogTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50RGV0YWlsc0Jhc2UuaWRs
OgorICAgICAgICAqIE1vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudERldGFpbHNCYXNlLmg6
CisgICAgICAgICogTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50SXRlbS5pZGw6CisgICAg
ICAgICogTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50SXRlbS5oOgorICAgICAgICAqIE1v
ZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFNoaXBwaW5nT3B0aW9uLmlkbDoKKyAgICAgICAg
KiBNb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRTaGlwcGluZ09wdGlvbi5oOgorICAgICAg
ICAqIE1vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y2hlY2tBbmRDYW5vbmljYWxpemVQYXltZW50SXRlbSk6CisgICAgICAgIChXZWJD
b3JlOjpjaGVja0FuZENhbm9uaWNhbGl6ZVRvdGFsKToKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNr
QW5kQ2Fub25pY2FsaXplRGV0YWlscyk6CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50UmVxdWVz
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpzZXR0bGVEZXRh
aWxzUHJvbWlzZSk6CisgICAgICAgIFJlbW92ZSB0aGUgSURMIGBvYmplY3QgZGF0YTtgIGFuZCBh
c3NvY2lhdGVkIG1lbWJlcnMvbG9naWMgbm93IHRoYXQgdGhlIHBhcnNlZCBkYXRhIGlzIGFsbAor
ICAgICAgICBwYXJ0IG9mIGBBcHBsZVBheU1vZGlmaWVyYC4gVGhlc2Ugb2JqZWN0cyBhcmUgbm93
IGJhY2sgdG8gYmVpbmcgc3BlYyBjb21wbGlhbnQuCisKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxl
cGF5L0FwcGxlUGF5RGV0YWlsc1VwZGF0ZUJhc2UuaWRsOgorICAgICAgICBEcml2ZS1ieTogQWRk
IG1pc3NpbmcgaW5oZXJpdGFuY2UgdG8gYEFwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGFgLgorCisg
ICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxpbmVJdGVtRGF0YS5pZGw6CisgICAg
ICAgICogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nTWV0aG9kRGF0YS5pZGw6Cisg
ICAgICAgIERyaXZlLWJ5OiBSZW1vdmUgdW5uZWNlc3NhcnkgYXR0cmlidXRlcy4KKwogMjAyMS0w
My0yNiAgVGltIE5ndXllbiAgPG50aW1AYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgdGhlIG9i
amVjdC1wb3NpdGlvbiBDU1MgcHJvcGVydHkgYW5pbWF0YWJsZS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlEZXRhaWxzVXBkYXRlQmFzZS5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5RGV0YWlsc1VwZGF0ZUJh
c2UuaWRsCmluZGV4IDYxNWU4NmRlZmMyMmQyOWUzYWI5YTA0ZGVkNjk2N2E4OGIxZDVmZjMuLmU0
N2Q2YzhiYTkxMmMwNDZkMzQ5NWViMTA1NmQxZDBlODI3MTk3MzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlEZXRhaWxzVXBkYXRlQmFzZS5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheURldGFpbHNVcGRh
dGVCYXNlLmlkbApAQCAtMjUsNyArMjUsNyBAQAogCiBbCiAgICAgQ29uZGl0aW9uYWw9QVBQTEVf
UEFZLAotXSBkaWN0aW9uYXJ5IEFwcGxlUGF5RGV0YWlsc1VwZGF0ZUJhc2UgeworXSBkaWN0aW9u
YXJ5IEFwcGxlUGF5RGV0YWlsc1VwZGF0ZUJhc2UgOiBBcHBsZVBheURldGFpbHNVcGRhdGVEYXRh
IHsKICAgICByZXF1aXJlZCBBcHBsZVBheUxpbmVJdGVtIG5ld1RvdGFsOwogICAgIHNlcXVlbmNl
PEFwcGxlUGF5TGluZUl0ZW0+IG5ld0xpbmVJdGVtczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5TGluZUl0ZW1EYXRhLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5lSXRlbURhdGEuaWRsCmluZGV4
IDNkNGViN2QyMTNhZTA1NTJlZDliZjc0Y2ZkOTU4NGQxMTY2MzZlNDMuLjg5NGQxMTI0Y2ZiYTEy
MzhkOTY2ZTcyMzQ1NDYzNmNhOGNmOWQ4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5lSXRlbURhdGEuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5lSXRlbURhdGEuaWRsCkBAIC0yNSw2ICsy
NSw1IEBACiAKIFsKICAgICBDb25kaXRpb25hbD1BUFBMRV9QQVksCi0gICAgSlNHZW5lcmF0ZVRv
SlNPYmplY3QsCiBdIGRpY3Rpb25hcnkgQXBwbGVQYXlMaW5lSXRlbURhdGEgewogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ01l
dGhvZERhdGEuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNo
aXBwaW5nTWV0aG9kRGF0YS5pZGwKaW5kZXggYzAxNWY5OTQ5MGYwZWE3ODk5MGViYWU5ODNjNGNj
N2UxY2QwZDdlOC4uZWNkNmU1MmE5Y2FlZmQ2YjliNzQzYWY2MGMyYWVmZjJlNDQzODExZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5n
TWV0aG9kRGF0YS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheVNoaXBwaW5nTWV0aG9kRGF0YS5pZGwKQEAgLTI1LDcgKzI1LDUgQEAKIAogWwogICAgIENv
bmRpdGlvbmFsPUFQUExFX1BBWSwKLSAgICBFeHBvcnRNYWNybz1XRUJDT1JFX0VYUE9SVCwKLSAg
ICBKU0dlbmVyYXRlVG9KU09iamVjdCwKIF0gZGljdGlvbmFyeSBBcHBsZVBheVNoaXBwaW5nTWV0
aG9kRGF0YSB7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9wYXltZW50cmVxdWVzdC9BcHBsZVBheU1vZGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5TW9kaWZpZXIuaAppbmRleCBjZGZh
NzdlMGU3N2M1ODFiOGI1NmUwMmQzMWE2ZjQwYzE1YmZmMjY4Li5hMTQ0YWJkZjkyZmI3ODAxNzgy
OTIzMWU1NWRkYTA1YmI0YWExZjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5TW9kaWZpZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5TW9kaWZpZXIu
aApAQCAtMjcsMTIgKzI3LDE2IEBACiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKSAmJiBFTkFCTEUo
UEFZTUVOVF9SRVFVRVNUKQogCisjaW5jbHVkZSAiQXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YS5o
IgorI2luY2x1ZGUgIkFwcGxlUGF5TGluZUl0ZW1EYXRhLmgiCiAjaW5jbHVkZSAiQXBwbGVQYXlQ
YXltZW50TWV0aG9kVHlwZS5oIgorI2luY2x1ZGUgIkFwcGxlUGF5U2hpcHBpbmdNZXRob2QuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdHJ1Y3QgQXBwbGVQYXlNb2RpZmllciB7Ci0gICAg
QXBwbGVQYXlQYXltZW50TWV0aG9kVHlwZSBwYXltZW50TWV0aG9kVHlwZTsKK3N0cnVjdCBBcHBs
ZVBheU1vZGlmaWVyIGZpbmFsIDogcHVibGljIEFwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEsIHB1
YmxpYyBBcHBsZVBheUxpbmVJdGVtRGF0YSB7CisgICAgT3B0aW9uYWw8QXBwbGVQYXlQYXltZW50
TWV0aG9kVHlwZT4gcGF5bWVudE1ldGhvZFR5cGU7CisgICAgVmVjdG9yPEFwcGxlUGF5U2hpcHBp
bmdNZXRob2Q+IGFkZGl0aW9uYWxTaGlwcGluZ09wdGlvbnM7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3Bh
eW1lbnRyZXF1ZXN0L0FwcGxlUGF5TW9kaWZpZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheU1vZGlmaWVyLmlkbAppbmRleCAwNjc4
OTQyMzFhZWJjZTgxNTkwYmYwZmVhZTA3NGYyNzg4ZDNjODIyLi41YjAxNDM1NDEzODY5Njg0ZDc3
NDIxY2YzMTE3YmMxYzgzZDM0NTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5TW9kaWZpZXIuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlNb2RpZmll
ci5pZGwKQEAgLTI2LDUgKzI2LDYgQEAKIFsKICAgICBDb25kaXRpb25hbD1BUFBMRV9QQVkmUEFZ
TUVOVF9SRVFVRVNULAogXSBkaWN0aW9uYXJ5IEFwcGxlUGF5TW9kaWZpZXIgewotICAgIHJlcXVp
cmVkIEFwcGxlUGF5UGF5bWVudE1ldGhvZFR5cGUgcGF5bWVudE1ldGhvZFR5cGU7CisgICAgQXBw
bGVQYXlQYXltZW50TWV0aG9kVHlwZSBwYXltZW50TWV0aG9kVHlwZTsKKyAgICBzZXF1ZW5jZTxB
cHBsZVBheVNoaXBwaW5nTWV0aG9kPiBhZGRpdGlvbmFsU2hpcHBpbmdPcHRpb25zOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3Qv
QXBwbGVQYXlQYXltZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwCmluZGV4IDczMGRj
NThiNDk2MWQ3ZDliNDE1NDY3NWVkN2ZjYzgxZDc2YzEzMjkuLjgzMzRhY2M3ZGJjNDYyYjFiODhk
YjcwN2FkOGVjMTM3MjFkMjZmOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBh
eW1lbnRIYW5kbGVyLmNwcApAQCAtNjEsNiArNjEsNyBAQAogI2luY2x1ZGUgIlBheW1lbnRBdXRo
b3JpemF0aW9uU3RhdHVzLmgiCiAjaW5jbHVkZSAiUGF5bWVudENvbnRhY3QuaCIKICNpbmNsdWRl
ICJQYXltZW50Q29vcmRpbmF0b3IuaCIKKyNpbmNsdWRlICJQYXltZW50RGV0YWlsc01vZGlmaWVy
LmgiCiAjaW5jbHVkZSAiUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5oIgogI2luY2x1ZGUgIlBheW1l
bnRNZXRob2QuaCIKICNpbmNsdWRlICJQYXltZW50UmVxdWVzdFV0aWxpdGllcy5oIgpAQCAtMTQz
LDExICsxNDQsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8dm9pZD4gdmFsaWRhdGUoY29uc3QgUGF5
bWVudEN1cnJlbmN5QW1vdW50JiBhbW91bnQsIGNvbnN0IFN0cgogICAgIHJldHVybiB7IH07CiB9
CiAKLSNpZiAhRU5BQkxFKEFQUExFX1BBWV9MSU5FX0lURU1fREFUQSkKLXN0YXRpYyB2b2lkIG1l
cmdlKEFwcGxlUGF5TGluZUl0ZW0mLCBBcHBsZVBheUxpbmVJdGVtRGF0YSYmKSB7IH0KLSNlbmRp
ZiAvLyBFTkFCTEUoQVBQTEVfUEFZX0xJTkVfSVRFTV9EQVRBKQotCi1zdGF0aWMgRXhjZXB0aW9u
T3I8QXBwbGVQYXlMaW5lSXRlbT4gY29udmVydEFuZFZhbGlkYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIGNvbnN0IFBheW1lbnRJdGVtJiBpdGVtLCBjb25zdCBTdHJpbmcmIGV4
cGVjdGVkQ3VycmVuY3kpCitzdGF0aWMgRXhjZXB0aW9uT3I8QXBwbGVQYXlMaW5lSXRlbT4gY29u
dmVydEFuZFZhbGlkYXRlKGNvbnN0IFBheW1lbnRJdGVtJiBpdGVtLCBjb25zdCBTdHJpbmcmIGV4
cGVjdGVkQ3VycmVuY3kpCiB7CiAgICAgYXV0byBleGNlcHRpb24gPSB2YWxpZGF0ZShpdGVtLmFt
b3VudCwgZXhwZWN0ZWRDdXJyZW5jeSk7CiAgICAgaWYgKGV4Y2VwdGlvbi5oYXNFeGNlcHRpb24o
KSkKQEAgLTE1OCwzMyArMTU1LDE1IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxBcHBsZVBheUxpbmVJ
dGVtPiBjb252ZXJ0QW5kVmFsaWRhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYKICAgICBsaW5l
SXRlbS5hbW91bnQgPSBpdGVtLmFtb3VudC52YWx1ZTsKICAgICBsaW5lSXRlbS50eXBlID0gaXRl
bS5wZW5kaW5nID8gQXBwbGVQYXlMaW5lSXRlbTo6VHlwZTo6UGVuZGluZyA6IEFwcGxlUGF5TGlu
ZUl0ZW06OlR5cGU6OkZpbmFsOwogICAgIGxpbmVJdGVtLmxhYmVsID0gaXRlbS5sYWJlbDsKLQot
ICAgIGlmICghaXRlbS5zZXJpYWxpemVkRGF0YS5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byYg
bGV4aWNhbEdsb2JhbE9iamVjdCA9ICpjb250ZXh0Lmdsb2JhbE9iamVjdCgpOwotICAgICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCkp
OwotICAgICAgICBKU0M6OkpTVmFsdWUgZGF0YTsKLSAgICAgICAgewotICAgICAgICAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9jaygmbGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgICAgICAgICBk
YXRhID0gSlNPTlBhcnNlKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBpdGVtLnNlcmlhbGl6ZWREYXRh
KTsKLSAgICAgICAgICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9OwotICAgICAgICB9Ci0K
LSAgICAgICAgYXV0byBhcHBsZVBheUxpbmVJdGVtRGF0YSA9IGNvbnZlcnREaWN0aW9uYXJ5PEFw
cGxlUGF5TGluZUl0ZW1EYXRhPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGRhdGEpKTsK
LSAgICAgICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKQotICAgICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfTsKLSAgICAgICAgbWVyZ2UobGluZUl0ZW0s
IFdURk1vdmUoYXBwbGVQYXlMaW5lSXRlbURhdGEpKTsKLSAgICB9Ci0KICAgICByZXR1cm4geyBX
VEZNb3ZlKGxpbmVJdGVtKSB9OwogfQogCi1zdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPEFwcGxl
UGF5TGluZUl0ZW0+PiBjb252ZXJ0QW5kVmFsaWRhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgVmVjdG9yPFBheW1lbnRJdGVtPiYgbGluZUl0ZW1zLCBjb25zdCBTdHJp
bmcmIGV4cGVjdGVkQ3VycmVuY3kpCitzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPEFwcGxlUGF5
TGluZUl0ZW0+PiBjb252ZXJ0QW5kVmFsaWRhdGUoY29uc3QgVmVjdG9yPFBheW1lbnRJdGVtPiYg
bGluZUl0ZW1zLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkQ3VycmVuY3kpCiB7CiAgICAgVmVjdG9y
PEFwcGxlUGF5TGluZUl0ZW0+IHJlc3VsdDsKICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShsaW5lSXRlbXMuc2l6ZSgpKTsKICAgICBmb3IgKGF1dG8mIGxpbmVJdGVtIDogbGluZUl0
ZW1zKSB7Ci0gICAgICAgIGF1dG8gY29udmVydGVkTGluZUl0ZW0gPSBjb252ZXJ0QW5kVmFsaWRh
dGUoY29udGV4dCwgbGluZUl0ZW0sIGV4cGVjdGVkQ3VycmVuY3kpOworICAgICAgICBhdXRvIGNv
bnZlcnRlZExpbmVJdGVtID0gY29udmVydEFuZFZhbGlkYXRlKGxpbmVJdGVtLCBleHBlY3RlZEN1
cnJlbmN5KTsKICAgICAgICAgaWYgKGNvbnZlcnRlZExpbmVJdGVtLmhhc0V4Y2VwdGlvbigpKQog
ICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlZExpbmVJdGVtLnJlbGVhc2VFeGNlcHRpb24oKTsK
ICAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZChjb252ZXJ0ZWRMaW5lSXRlbS5yZWxlYXNl
UmV0dXJuVmFsdWUoKSk7CkBAIC0yMDcsMTEgKzE4Niw3IEBAIHN0YXRpYyBBcHBsZVBheVNlc3Np
b25QYXltZW50UmVxdWVzdDo6U2hpcHBpbmdUeXBlIGNvbnZlcnQoUGF5bWVudFNoaXBwaW5nVHlw
ZSB0CiAgICAgcmV0dXJuIEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ1R5
cGU6OlNoaXBwaW5nOwogfQogCi0jaWYgIUVOQUJMRShBUFBMRV9QQVlfU0hJUFBJTkdfTUVUSE9E
X0RBVEEpCi1zdGF0aWMgdm9pZCBtZXJnZShBcHBsZVBheVNoaXBwaW5nTWV0aG9kJiwgQXBwbGVQ
YXlTaGlwcGluZ01ldGhvZERhdGEmJikgeyB9Ci0jZW5kaWYKLQotc3RhdGljIEV4Y2VwdGlvbk9y
PEFwcGxlUGF5U2hpcHBpbmdNZXRob2Q+IGNvbnZlcnRBbmRWYWxpZGF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBQYXltZW50U2hpcHBpbmdPcHRpb24mIHNoaXBwaW5n
T3B0aW9uLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkQ3VycmVuY3kpCitzdGF0aWMgRXhjZXB0aW9u
T3I8QXBwbGVQYXlTaGlwcGluZ01ldGhvZD4gY29udmVydEFuZFZhbGlkYXRlKGNvbnN0IFBheW1l
bnRTaGlwcGluZ09wdGlvbiYgc2hpcHBpbmdPcHRpb24sIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRD
dXJyZW5jeSkKIHsKICAgICBhdXRvIGV4Y2VwdGlvbiA9IHZhbGlkYXRlKHNoaXBwaW5nT3B0aW9u
LmFtb3VudCwgZXhwZWN0ZWRDdXJyZW5jeSk7CiAgICAgaWYgKGV4Y2VwdGlvbi5oYXNFeGNlcHRp
b24oKSkKQEAgLTIyMSw1NyArMTk2LDkgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPEFwcGxlUGF5U2hp
cHBpbmdNZXRob2Q+IGNvbnZlcnRBbmRWYWxpZGF0ZShTY3JpcHRFeGVjdXRpb25Db24KICAgICBy
ZXN1bHQuYW1vdW50ID0gc2hpcHBpbmdPcHRpb24uYW1vdW50LnZhbHVlOwogICAgIHJlc3VsdC5s
YWJlbCA9IHNoaXBwaW5nT3B0aW9uLmxhYmVsOwogICAgIHJlc3VsdC5pZGVudGlmaWVyID0gc2hp
cHBpbmdPcHRpb24uaWQ7Ci0KLSAgICBpZiAoIXNoaXBwaW5nT3B0aW9uLnNlcmlhbGl6ZWREYXRh
LmlzRW1wdHkoKSkgewotICAgICAgICBhdXRvJiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gKmNvbnRl
eHQuZ2xvYmFsT2JqZWN0KCk7Ci0gICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSk7Ci0gICAgICAgIEpTQzo6SlNWYWx1ZSBkYXRh
OwotICAgICAgICB7Ci0gICAgICAgICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKLSAgICAgICAgICAgIGRhdGEgPSBKU09OUGFyc2UoJmxleGljYWxHbG9i
YWxPYmplY3QsIHNoaXBwaW5nT3B0aW9uLnNlcmlhbGl6ZWREYXRhKTsKLSAgICAgICAgICAgIGlm
IChzY29wZS5leGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
RXhpc3RpbmdFeGNlcHRpb25FcnJvciB9OwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byBhcHBs
ZVBheVNoaXBwaW5nTWV0aG9kRGF0YSA9IGNvbnZlcnREaWN0aW9uYXJ5PEFwcGxlUGF5U2hpcHBp
bmdNZXRob2REYXRhPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGRhdGEpKTsKLSAgICAg
ICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKQotICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfTsKLSAgICAgICAgbWVyZ2UocmVzdWx0LCBXVEZNb3Zl
KGFwcGxlUGF5U2hpcHBpbmdNZXRob2REYXRhKSk7Ci0gICAgfQotCiAgICAgcmV0dXJuIHsgV1RG
TW92ZShyZXN1bHQpIH07CiB9CiAKLSNpZiAhRU5BQkxFKEFQUExFX1BBWV9QQVlNRU5UX0RFVEFJ
TFNfREFUQSkKLXN0YXRpYyBFeGNlcHRpb25Pcjx2b2lkPiB2YWxpZGF0ZShjb25zdCBBcHBsZVBh
eURldGFpbHNVcGRhdGVEYXRhJikgeyByZXR1cm4geyB9OyB9Ci0jZW5kaWYKLQotc3RhdGljIEV4
Y2VwdGlvbk9yPEFwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGE+IGNvbnZlcnRBbmRWYWxpZGF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBQYXltZW50RGV0YWlsc0Jhc2Um
IGRldGFpbHMpCi17Ci0gICAgQXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YSByZXN1bHQ7Ci0gICAg
aWYgKGRldGFpbHMuc2VyaWFsaXplZERhdGEuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gcmVz
dWx0OwotCi0gICAgYXV0byYgbGV4aWNhbEdsb2JhbE9iamVjdCA9ICpjb250ZXh0Lmdsb2JhbE9i
amVjdCgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGxleGljYWxHbG9i
YWxPYmplY3Qudm0oKSk7Ci0gICAgSlNDOjpKU1ZhbHVlIGRhdGE7Ci0gICAgewotICAgICAgICBK
U0M6OkpTTG9ja0hvbGRlciBsb2NrKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICAgICAgZGF0
YSA9IEpTT05QYXJzZSgmbGV4aWNhbEdsb2JhbE9iamVjdCwgZGV0YWlscy5zZXJpYWxpemVkRGF0
YSk7Ci0gICAgICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkKLSAgICAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH07Ci0gICAgfQotCi0gICAgcmVzdWx0
ID0gY29udmVydERpY3Rpb25hcnk8QXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YT4obGV4aWNhbEds
b2JhbE9iamVjdCwgV1RGTW92ZShkYXRhKSk7Ci0gICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKQot
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9OwotICAg
IGF1dG8gZXhjZXB0aW9uID0gdmFsaWRhdGUocmVzdWx0KTsKLSAgICBpZiAoZXhjZXB0aW9uLmhh
c0V4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gZXhjZXB0aW9uLnJlbGVhc2VFeGNlcHRpb24o
KTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KIEV4Y2VwdGlvbk9yPHZvaWQ+IEFwcGxlUGF5
UGF5bWVudEhhbmRsZXI6OmNvbnZlcnREYXRhKEpTQzo6SlNWYWx1ZSBkYXRhKQogewogICAgIGF1
dG8gcmVxdWVzdE9yRXhjZXB0aW9uID0gY29udmVydEFuZFZhbGlkYXRlKCpzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCksIGRhdGEpOwpAQCAtMzAwLDggKzIyNyw4IEBAIHN0YXRpYyB2b2lkIG1lcmdl
UGF5bWVudE9wdGlvbnMoY29uc3QgUGF5bWVudE9wdGlvbnMmIG9wdGlvbnMsIEFwcGxlUGF5U2Vz
c2lvblBhCiB9CiAKICNpZiAhRU5BQkxFKEFQUExFX1BBWV9QQVlNRU5UX0RFVEFJTFNfREFUQSkK
LXN0YXRpYyB2b2lkIG1lcmdlKEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiwgQXBwbGVQ
YXlEZXRhaWxzVXBkYXRlRGF0YSYmKSB7IH0KLSNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZX1BB
WU1FTlRfREVUQUlMU19EQVRBKQorc3RhdGljIHZvaWQgbWVyZ2UoQXBwbGVQYXlTZXNzaW9uUGF5
bWVudFJlcXVlc3QmLCBBcHBsZVBheU1vZGlmaWVyJiYpIHsgfQorI2VuZGlmIC8vICFFTkFCTEUo
QVBQTEVfUEFZX1BBWU1FTlRfREVUQUlMU19EQVRBKQogCiBFeGNlcHRpb25Pcjx2b2lkPiBBcHBs
ZVBheVBheW1lbnRIYW5kbGVyOjpzaG93KERvY3VtZW50JiBkb2N1bWVudCkKIHsKQEAgLTMxNywx
MiArMjQ0LDEyIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OnNo
b3coRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIFN0cmluZyBleHBlY3RlZEN1cnJlbmN5ID0gZGV0
YWlscy50b3RhbC5hbW91bnQuY3VycmVuY3k7CiAgICAgcmVxdWVzdC5zZXRDdXJyZW5jeUNvZGUo
ZXhwZWN0ZWRDdXJyZW5jeSk7CiAKLSAgICBhdXRvIHRvdGFsID0gY29udmVydEFuZFZhbGlkYXRl
KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGRldGFpbHMudG90YWwsIGV4cGVjdGVkQ3VycmVu
Y3kpOworICAgIGF1dG8gdG90YWwgPSBjb252ZXJ0QW5kVmFsaWRhdGUoZGV0YWlscy50b3RhbCwg
ZXhwZWN0ZWRDdXJyZW5jeSk7CiAgICAgQVNTRVJUKCF0b3RhbC5oYXNFeGNlcHRpb24oKSk7CiAg
ICAgcmVxdWVzdC5zZXRUb3RhbCh0b3RhbC5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CiAKICAgICBp
ZiAoZGV0YWlscy5kaXNwbGF5SXRlbXMpIHsKLSAgICAgICAgYXV0byBjb252ZXJ0ZWRMaW5lSXRl
bXMgPSBjb252ZXJ0QW5kVmFsaWRhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKmRldGFp
bHMuZGlzcGxheUl0ZW1zLCBleHBlY3RlZEN1cnJlbmN5KTsKKyAgICAgICAgYXV0byBjb252ZXJ0
ZWRMaW5lSXRlbXMgPSBjb252ZXJ0QW5kVmFsaWRhdGUoKmRldGFpbHMuZGlzcGxheUl0ZW1zLCBl
eHBlY3RlZEN1cnJlbmN5KTsKICAgICAgICAgaWYgKGNvbnZlcnRlZExpbmVJdGVtcy5oYXNFeGNl
cHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZWRMaW5lSXRlbXMucmVsZWFzZUV4
Y2VwdGlvbigpOwogICAgICAgICByZXF1ZXN0LnNldExpbmVJdGVtcyhjb252ZXJ0ZWRMaW5lSXRl
bXMucmVsZWFzZVJldHVyblZhbHVlKCkpOwpAQCAtMzM1LDEwICsyNjIsMTYgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6c2hvdyhEb2N1bWVudCYgZG9jdW1lbnQp
CiAgICAgICAgIHJldHVybiBzaGlwcGluZ01ldGhvZHMucmVsZWFzZUV4Y2VwdGlvbigpOwogICAg
IHJlcXVlc3Quc2V0U2hpcHBpbmdNZXRob2RzKHNoaXBwaW5nTWV0aG9kcy5yZWxlYXNlUmV0dXJu
VmFsdWUoKSk7CiAKLSAgICBhdXRvIGFwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEgPSBjb252ZXJ0
QW5kVmFsaWRhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbV9wYXltZW50UmVxdWVzdC0+
cGF5bWVudERldGFpbHMoKSk7Ci0gICAgaWYgKGFwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEuaGFz
RXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBhcHBsZVBheURldGFpbHNVcGRhdGVEYXRhLnJl
bGVhc2VFeGNlcHRpb24oKTsKLSAgICBtZXJnZShyZXF1ZXN0LCBhcHBsZVBheURldGFpbHNVcGRh
dGVEYXRhLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKKyAgICBhdXRvIG1vZGlmaWVyRXhjZXB0aW9u
ID0gZmlyc3RBcHBsaWNhYmxlTW9kaWZpZXIoKTsKKyAgICBpZiAobW9kaWZpZXJFeGNlcHRpb24u
aGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBtb2RpZmllckV4Y2VwdGlvbi5yZWxlYXNl
RXhjZXB0aW9uKCk7CisgICAgaWYgKGF1dG8gbW9kaWZpZXJEYXRhID0gbW9kaWZpZXJFeGNlcHRp
b24ucmVsZWFzZVJldHVyblZhbHVlKCkpIHsKKyAgICAgICAgYXV0byYgW21vZGlmaWVyLCBhcHBs
ZVBheU1vZGlmaWVyXSA9ICptb2RpZmllckRhdGE7CisKKyAgICAgICAgVU5VU0VEX1BBUkFNKG1v
ZGlmaWVyKTsKKworICAgICAgICBtZXJnZShyZXF1ZXN0LCBXVEZNb3ZlKGFwcGxlUGF5TW9kaWZp
ZXIpKTsKKyAgICB9CiAKICAgICBhdXRvIGV4Y2VwdGlvbiA9IFBheW1lbnRSZXF1ZXN0VmFsaWRh
dG9yOjp2YWxpZGF0ZShyZXF1ZXN0KTsKICAgICBpZiAoZXhjZXB0aW9uLmhhc0V4Y2VwdGlvbigp
KQpAQCAtMzYwLDcgKzI5Myw3IEBAIHZvaWQgQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6Y2FuTWFr
ZVBheW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50LCBGdW5jdGlvbjx2b2lkKGJvCiAgICAgY29tcGxl
dGlvbkhhbmRsZXIocGF5bWVudENvb3JkaW5hdG9yKCkuY2FuTWFrZVBheW1lbnRzKGRvY3VtZW50
KSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFZlY3RvcjxBcHBsZVBheVNoaXBwaW5nTWV0aG9kPj4gQXBw
bGVQYXlQYXltZW50SGFuZGxlcjo6Y29tcHV0ZVNoaXBwaW5nTWV0aG9kcygpCitFeGNlcHRpb25P
cjxWZWN0b3I8QXBwbGVQYXlTaGlwcGluZ01ldGhvZD4+IEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6
OmNvbXB1dGVTaGlwcGluZ01ldGhvZHMoKSBjb25zdAogewogICAgIGF1dG8mIGRldGFpbHMgPSBt
X3BheW1lbnRSZXF1ZXN0LT5wYXltZW50RGV0YWlscygpOwogCkBAIC0zNzAsODAgKzMwMyw2OSBA
QCBFeGNlcHRpb25PcjxWZWN0b3I8QXBwbGVQYXlTaGlwcGluZ01ldGhvZD4+IEFwcGxlUGF5UGF5
bWVudEhhbmRsZXI6OmNvbXB1dGVTaGlwcAogCiAgICAgICAgIHNoaXBwaW5nT3B0aW9ucy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KGRldGFpbHMuc2hpcHBpbmdPcHRpb25zLT5zaXplKCkpOwogICAg
ICAgICBmb3IgKGF1dG8mIHNoaXBwaW5nT3B0aW9uIDogKmRldGFpbHMuc2hpcHBpbmdPcHRpb25z
KSB7Ci0gICAgICAgICAgICBhdXRvIHNoaXBwaW5nTWV0aG9kID0gY29udmVydEFuZFZhbGlkYXRl
KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHNoaXBwaW5nT3B0aW9uLCBjdXJyZW5jeSk7Cisg
ICAgICAgICAgICBhdXRvIHNoaXBwaW5nTWV0aG9kID0gY29udmVydEFuZFZhbGlkYXRlKHNoaXBw
aW5nT3B0aW9uLCBjdXJyZW5jeSk7CiAgICAgICAgICAgICBpZiAoc2hpcHBpbmdNZXRob2QuaGFz
RXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHNoaXBwaW5nTWV0aG9kLnJlbGVh
c2VFeGNlcHRpb24oKTsKICAgICAgICAgICAgIHNoaXBwaW5nT3B0aW9ucy51bmNoZWNrZWRBcHBl
bmQoc2hpcHBpbmdNZXRob2QucmVsZWFzZVJldHVyblZhbHVlKCkpOwogICAgICAgICB9CiAgICAg
fQogCisgICAgYXV0byBtb2RpZmllckV4Y2VwdGlvbiA9IGZpcnN0QXBwbGljYWJsZU1vZGlmaWVy
KCk7CisgICAgaWYgKG1vZGlmaWVyRXhjZXB0aW9uLmhhc0V4Y2VwdGlvbigpKQorICAgICAgICBy
ZXR1cm4gbW9kaWZpZXJFeGNlcHRpb24ucmVsZWFzZUV4Y2VwdGlvbigpOworICAgIGlmIChhdXRv
IG1vZGlmaWVyRGF0YSA9IG1vZGlmaWVyRXhjZXB0aW9uLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKSB7
CisgICAgICAgIGF1dG8mIFttb2RpZmllciwgYXBwbGVQYXlNb2RpZmllcl0gPSAqbW9kaWZpZXJE
YXRhOworCisgICAgICAgIFVOVVNFRF9QQVJBTShtb2RpZmllcik7CisKKyAgICAgICAgc2hpcHBp
bmdPcHRpb25zLmFwcGVuZFZlY3RvcihXVEZNb3ZlKGFwcGxlUGF5TW9kaWZpZXIuYWRkaXRpb25h
bFNoaXBwaW5nT3B0aW9ucykpOworICAgIH0KKwogICAgIHJldHVybiBXVEZNb3ZlKHNoaXBwaW5n
T3B0aW9ucyk7CiB9CiAKKworI2lmICFFTkFCTEUoQVBQTEVfUEFZX0xJTkVfSVRFTV9EQVRBKQor
c3RhdGljIHZvaWQgbWVyZ2UoQXBwbGVQYXlMaW5lSXRlbSYsIEFwcGxlUGF5TW9kaWZpZXImJikg
eyB9CisjZW5kaWYgLy8gIUVOQUJMRShBUFBMRV9QQVlfTElORV9JVEVNX0RBVEEpCisKIEV4Y2Vw
dGlvbk9yPHN0ZDo6dHVwbGU8QXBwbGVQYXlMaW5lSXRlbSwgVmVjdG9yPEFwcGxlUGF5TGluZUl0
ZW0+Pj4gQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6Y29tcHV0ZVRvdGFsQW5kTGluZUl0ZW1zKCkg
Y29uc3QKIHsKICAgICBhdXRvJiBkZXRhaWxzID0gbV9wYXltZW50UmVxdWVzdC0+cGF5bWVudERl
dGFpbHMoKTsKLSAgICBTdHJpbmcgY3VycmVuY3kgPSBkZXRhaWxzLnRvdGFsLmFtb3VudC5jdXJy
ZW5jeTsKKyAgICBhdXRvJiBjdXJyZW5jeSA9IGRldGFpbHMudG90YWwuYW1vdW50LmN1cnJlbmN5
OwogCi0gICAgYXV0byBjb252ZXJ0ZWRUb3RhbCA9IGNvbnZlcnRBbmRWYWxpZGF0ZSgqc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCBkZXRhaWxzLnRvdGFsLCBjdXJyZW5jeSk7CisgICAgYXV0byBj
b252ZXJ0ZWRUb3RhbCA9IGNvbnZlcnRBbmRWYWxpZGF0ZShkZXRhaWxzLnRvdGFsLCBjdXJyZW5j
eSk7CiAgICAgaWYgKGNvbnZlcnRlZFRvdGFsLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4gY29udmVydGVkVG90YWwucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgIGF1dG8gdG90YWwgPSBj
b252ZXJ0ZWRUb3RhbC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKIAogICAgIFZlY3RvcjxBcHBsZVBh
eUxpbmVJdGVtPiBsaW5lSXRlbXM7CiAgICAgaWYgKGRldGFpbHMuZGlzcGxheUl0ZW1zKSB7Ci0g
ICAgICAgIGF1dG8gY29udmVydGVkTGluZUl0ZW1zID0gY29udmVydEFuZFZhbGlkYXRlKCpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksICpkZXRhaWxzLmRpc3BsYXlJdGVtcywgY3VycmVuY3kpOwor
ICAgICAgICBhdXRvIGNvbnZlcnRlZExpbmVJdGVtcyA9IGNvbnZlcnRBbmRWYWxpZGF0ZSgqZGV0
YWlscy5kaXNwbGF5SXRlbXMsIGN1cnJlbmN5KTsKICAgICAgICAgaWYgKGNvbnZlcnRlZExpbmVJ
dGVtcy5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZWRMaW5lSXRl
bXMucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgICAgICBsaW5lSXRlbXMgPSBjb252ZXJ0ZWRMaW5l
SXRlbXMucmVsZWFzZVJldHVyblZhbHVlKCk7CiAgICAgfQogCi0gICAgaWYgKCFtX3NlbGVjdGVk
UGF5bWVudE1ldGhvZFR5cGUpCi0gICAgICAgIHJldHVybiB7eyBXVEZNb3ZlKHRvdGFsKSwgV1RG
TW92ZShsaW5lSXRlbXMpIH19OworICAgIGF1dG8gbW9kaWZpZXJFeGNlcHRpb24gPSBmaXJzdEFw
cGxpY2FibGVNb2RpZmllcigpOworICAgIGlmIChtb2RpZmllckV4Y2VwdGlvbi5oYXNFeGNlcHRp
b24oKSkKKyAgICAgICAgcmV0dXJuIG1vZGlmaWVyRXhjZXB0aW9uLnJlbGVhc2VFeGNlcHRpb24o
KTsKKyAgICBpZiAoYXV0byBtb2RpZmllckRhdGEgPSBtb2RpZmllckV4Y2VwdGlvbi5yZWxlYXNl
UmV0dXJuVmFsdWUoKSkgeworICAgICAgICBhdXRvJiBbbW9kaWZpZXIsIGFwcGxlUGF5TW9kaWZp
ZXJdID0gKm1vZGlmaWVyRGF0YTsKIAotICAgIGlmIChkZXRhaWxzLm1vZGlmaWVycykgewotICAg
ICAgICBhdXRvJiBzZXJpYWxpemVkTW9kaWZpZXJEYXRhID0gbV9wYXltZW50UmVxdWVzdC0+c2Vy
aWFsaXplZE1vZGlmaWVyRGF0YSgpOwotICAgICAgICBBU1NFUlQoZGV0YWlscy5tb2RpZmllcnMt
PnNpemUoKSA9PSBzZXJpYWxpemVkTW9kaWZpZXJEYXRhLnNpemUoKSk7Ci0gICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgZGV0YWlscy5tb2RpZmllcnMtPnNpemUoKTsgKytpKSB7Ci0gICAg
ICAgICAgICBhdXRvJiBtb2RpZmllciA9IGRldGFpbHMubW9kaWZpZXJzLT5hdChpKTsKLQotICAg
ICAgICAgICAgYXV0byBjb252ZXJ0ZWRJZGVudGlmaWVyID0gY29udmVydEFuZFZhbGlkYXRlUGF5
bWVudE1ldGhvZElkZW50aWZpZXIobW9kaWZpZXIuc3VwcG9ydGVkTWV0aG9kcyk7Ci0gICAgICAg
ICAgICBpZiAoIWNvbnZlcnRlZElkZW50aWZpZXIgfHwgIWhhbmRsZXNJZGVudGlmaWVyKCpjb252
ZXJ0ZWRJZGVudGlmaWVyKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAg
ICAgaWYgKHNlcmlhbGl6ZWRNb2RpZmllckRhdGFbaV0uaXNFbXB0eSgpKQotICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICBhdXRvJiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0g
KmRvY3VtZW50KCkuZ2xvYmFsT2JqZWN0KCk7Ci0gICAgICAgICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRShsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCkpOwotICAgICAgICAgICAg
SlNDOjpKU1ZhbHVlIGRhdGE7Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYXV0byBs
b2NrID0gSlNDOjpKU0xvY2tIb2xkZXIgeyAmbGV4aWNhbEdsb2JhbE9iamVjdCB9OwotICAgICAg
ICAgICAgICAgIGRhdGEgPSBKU09OUGFyc2UoJmxleGljYWxHbG9iYWxPYmplY3QsIHNlcmlhbGl6
ZWRNb2RpZmllckRhdGFbaV0pOwotICAgICAgICAgICAgICAgIGlmIChzY29wZS5leGNlcHRpb24o
KSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0
aW9uRXJyb3IgfTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYXV0byBhcHBsZVBheU1v
ZGlmaWVyID0gY29udmVydERpY3Rpb25hcnk8QXBwbGVQYXlNb2RpZmllcj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgV1RGTW92ZShkYXRhKSk7Ci0gICAgICAgICAgICBpZiAoc2NvcGUuZXhjZXB0aW9u
KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9u
RXJyb3IgfTsKLQotICAgICAgICAgICAgaWYgKGFwcGxlUGF5TW9kaWZpZXIucGF5bWVudE1ldGhv
ZFR5cGUgIT0gKm1fc2VsZWN0ZWRQYXltZW50TWV0aG9kVHlwZSkKLSAgICAgICAgICAgICAgICBj
b250aW51ZTsKLQotICAgICAgICAgICAgaWYgKG1vZGlmaWVyLnRvdGFsKSB7Ci0gICAgICAgICAg
ICAgICAgYXV0byB0b3RhbE92ZXJyaWRlID0gY29udmVydEFuZFZhbGlkYXRlKCpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksICptb2RpZmllci50b3RhbCwgY3VycmVuY3kpOwotICAgICAgICAgICAg
ICAgIGlmICh0b3RhbE92ZXJyaWRlLmhhc0V4Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdG90YWxPdmVycmlkZS5yZWxlYXNlRXhjZXB0aW9uKCk7Ci0gICAgICAgICAgICAg
ICAgdG90YWwgPSB0b3RhbE92ZXJyaWRlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICBhdXRvIGFkZGl0aW9uYWxEaXNwbGF5SXRlbXMgPSBjb252ZXJ0
QW5kVmFsaWRhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbW9kaWZpZXIuYWRkaXRpb25h
bERpc3BsYXlJdGVtcywgY3VycmVuY3kpOwotICAgICAgICAgICAgaWYgKGFkZGl0aW9uYWxEaXNw
bGF5SXRlbXMuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGFkZGl0aW9u
YWxEaXNwbGF5SXRlbXMucmVsZWFzZUV4Y2VwdGlvbigpOwotICAgICAgICAgICAgbGluZUl0ZW1z
LmFwcGVuZFZlY3RvcihhZGRpdGlvbmFsRGlzcGxheUl0ZW1zLnJlbGVhc2VSZXR1cm5WYWx1ZSgp
KTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAobW9kaWZpZXIudG90YWwpIHsKKyAg
ICAgICAgICAgIGF1dG8gdG90YWxPdmVycmlkZSA9IGNvbnZlcnRBbmRWYWxpZGF0ZSgqbW9kaWZp
ZXIudG90YWwsIGN1cnJlbmN5KTsKKyAgICAgICAgICAgIGlmICh0b3RhbE92ZXJyaWRlLmhhc0V4
Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIHJldHVybiB0b3RhbE92ZXJyaWRlLnJlbGVhc2VF
eGNlcHRpb24oKTsKKyAgICAgICAgICAgIHRvdGFsID0gdG90YWxPdmVycmlkZS5yZWxlYXNlUmV0
dXJuVmFsdWUoKTsKICAgICAgICAgfQorCisgICAgICAgIGF1dG8gYWRkaXRpb25hbERpc3BsYXlJ
dGVtcyA9IGNvbnZlcnRBbmRWYWxpZGF0ZShtb2RpZmllci5hZGRpdGlvbmFsRGlzcGxheUl0ZW1z
LCBjdXJyZW5jeSk7CisgICAgICAgIGlmIChhZGRpdGlvbmFsRGlzcGxheUl0ZW1zLmhhc0V4Y2Vw
dGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIGFkZGl0aW9uYWxEaXNwbGF5SXRlbXMucmVsZWFz
ZUV4Y2VwdGlvbigpOworICAgICAgICBsaW5lSXRlbXMuYXBwZW5kVmVjdG9yKGFkZGl0aW9uYWxE
aXNwbGF5SXRlbXMucmVsZWFzZVJldHVyblZhbHVlKCkpOworCisgICAgICAgIG1lcmdlKHRvdGFs
LCBXVEZNb3ZlKGFwcGxlUGF5TW9kaWZpZXIpKTsKICAgICB9CiAKICAgICByZXR1cm4ge3sgV1RG
TW92ZSh0b3RhbCksIFdURk1vdmUobGluZUl0ZW1zKSB9fTsKQEAgLTUzOSw2ICs0NjEsNTYgQEAg
RXhjZXB0aW9uT3I8dm9pZD4gQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6Y29tcHV0ZVBheW1lbnRN
ZXRob2RFcnJvcnMoSlNDOjpKU09iamUKICAgICByZXR1cm4geyB9OwogfQogCisjaWYgIVVTRShB
UFBMRV9JTlRFUk5BTF9TREspCitzdGF0aWMgRXhjZXB0aW9uT3I8dm9pZD4gdmFsaWRhdGUoY29u
c3QgQXBwbGVQYXlNb2RpZmllciYpIHsgcmV0dXJuIHsgfTsgfQorI2VuZGlmCisKK0V4Y2VwdGlv
bk9yPE9wdGlvbmFsPHN0ZDo6dHVwbGU8UGF5bWVudERldGFpbHNNb2RpZmllciwgQXBwbGVQYXlN
b2RpZmllcj4+PiBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpmaXJzdEFwcGxpY2FibGVNb2RpZmll
cigpIGNvbnN0Cit7CisgICAgYXV0byYgZGV0YWlscyA9IG1fcGF5bWVudFJlcXVlc3QtPnBheW1l
bnREZXRhaWxzKCk7CisgICAgaWYgKCFkZXRhaWxzLm1vZGlmaWVycykKKyAgICAgICAgcmV0dXJu
IHsgV1RGOjpudWxsb3B0IH07CisKKyAgICBhdXRvJiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gKmRv
Y3VtZW50KCkuZ2xvYmFsT2JqZWN0KCk7CisKKyAgICBhdXRvJiBzZXJpYWxpemVkTW9kaWZpZXJE
YXRhID0gbV9wYXltZW50UmVxdWVzdC0+c2VyaWFsaXplZE1vZGlmaWVyRGF0YSgpOworICAgIEFT
U0VSVChkZXRhaWxzLm1vZGlmaWVycy0+c2l6ZSgpID09IHNlcmlhbGl6ZWRNb2RpZmllckRhdGEu
c2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRldGFpbHMubW9kaWZpZXJzLT5z
aXplKCk7ICsraSkgeworICAgICAgICBhdXRvJiBtb2RpZmllciA9IGRldGFpbHMubW9kaWZpZXJz
LT5hdChpKTsKKworICAgICAgICBhdXRvIGNvbnZlcnRlZElkZW50aWZpZXIgPSBjb252ZXJ0QW5k
VmFsaWRhdGVQYXltZW50TWV0aG9kSWRlbnRpZmllcihtb2RpZmllci5zdXBwb3J0ZWRNZXRob2Rz
KTsKKyAgICAgICAgaWYgKCFjb252ZXJ0ZWRJZGVudGlmaWVyIHx8ICFoYW5kbGVzSWRlbnRpZmll
cigqY29udmVydGVkSWRlbnRpZmllcikpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAg
ICBpZiAoc2VyaWFsaXplZE1vZGlmaWVyRGF0YVtpXS5pc0VtcHR5KCkpCisgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShsZXhp
Y2FsR2xvYmFsT2JqZWN0LnZtKCkpOworICAgICAgICBKU0M6OkpTVmFsdWUgZGF0YTsKKyAgICAg
ICAgeworICAgICAgICAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jaygmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CisgICAgICAgICAgICBkYXRhID0gSlNPTlBhcnNlKCZsZXhpY2FsR2xvYmFsT2JqZWN0
LCBzZXJpYWxpemVkTW9kaWZpZXJEYXRhW2ldKTsKKyAgICAgICAgICAgIGlmIChzY29wZS5leGNl
cHRpb24oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uKEV4aXN0aW5nRXhjZXB0
aW9uRXJyb3IpOworICAgICAgICB9CisKKyAgICAgICAgYXV0byBhcHBsZVBheU1vZGlmaWVyID0g
Y29udmVydERpY3Rpb25hcnk8QXBwbGVQYXlNb2RpZmllcj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
V1RGTW92ZShkYXRhKSk7CisgICAgICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkKKyAgICAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24oRXhpc3RpbmdFeGNlcHRpb25FcnJvcik7CisKKyAgICAgICAg
YXV0byB2YWxpZGF0ZUFwcGxlUGF5TW9kaWZpZXJSZXN1bHQgPSB2YWxpZGF0ZShhcHBsZVBheU1v
ZGlmaWVyKTsKKyAgICAgICAgaWYgKHZhbGlkYXRlQXBwbGVQYXlNb2RpZmllclJlc3VsdC5oYXNF
eGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZUFwcGxlUGF5TW9kaWZpZXJS
ZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAgICAgIGlmIChhcHBsZVBheU1vZGlmaWVy
LnBheW1lbnRNZXRob2RUeXBlICYmICphcHBsZVBheU1vZGlmaWVyLnBheW1lbnRNZXRob2RUeXBl
ICE9IG1fc2VsZWN0ZWRQYXltZW50TWV0aG9kVHlwZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgIHJldHVybiB7IHsgeyBtb2RpZmllciwgV1RGTW92ZShhcHBsZVBheU1vZGlmaWVy
KSB9IH0gfTsKKyAgICB9CisKKyAgICByZXR1cm4geyBXVEY6Om51bGxvcHQgfTsKK30KKwogRXhj
ZXB0aW9uT3I8dm9pZD4gQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6ZGV0YWlsc1VwZGF0ZWQoUGF5
bWVudFJlcXVlc3Q6OlVwZGF0ZVJlYXNvbiByZWFzb24sIFN0cmluZyYmIGVycm9yLCBBZGRyZXNz
RXJyb3JzJiYgYWRkcmVzc0Vycm9ycywgUGF5ZXJFcnJvckZpZWxkcyYmIHBheWVyRXJyb3JzLCBK
U0M6OkpTT2JqZWN0KiBwYXltZW50TWV0aG9kRXJyb3JzKQogewogICAgIHVzaW5nIFJlYXNvbiA9
IFBheW1lbnRSZXF1ZXN0OjpVcGRhdGVSZWFzb247CkBAIC01NzUsOCArNTQ3LDggQEAgRXhjZXB0
aW9uT3I8dm9pZD4gQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6bWVyY2hhbnRWYWxpZGF0aW9uQ29t
cGxldGVkKEpTQzo6SlNWYWwKIH0KIAogI2lmICFFTkFCTEUoQVBQTEVfUEFZX1BBWU1FTlRfREVU
QUlMU19EQVRBKQotc3RhdGljIHZvaWQgbWVyZ2UoQXBwbGVQYXlEZXRhaWxzVXBkYXRlQmFzZSYs
IEFwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEmJikgeyB9Ci0jZW5kaWYgLy8gRU5BQkxFKEFQUExF
X1BBWV9QQVlNRU5UX0RFVEFJTFNfREFUQSkKK3N0YXRpYyB2b2lkIG1lcmdlKEFwcGxlUGF5RGV0
YWlsc1VwZGF0ZUJhc2UmLCBBcHBsZVBheU1vZGlmaWVyJiYpIHsgfQorI2VuZGlmIC8vICFFTkFC
TEUoQVBQTEVfUEFZX1BBWU1FTlRfREVUQUlMU19EQVRBKQogCiBFeGNlcHRpb25Pcjx2b2lkPiBB
cHBsZVBheVBheW1lbnRIYW5kbGVyOjpzaGlwcGluZ0FkZHJlc3NVcGRhdGVkKFZlY3RvcjxSZWZQ
dHI8QXBwbGVQYXlFcnJvcj4+JiYgZXJyb3JzKQogewpAQCAtNTk2LDEwICs1NjgsMTYgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6c2hpcHBpbmdBZGRyZXNzVXBk
YXRlZChWZWN0b3I8UmVmUHRyPEEKICAgICAgICAgcmV0dXJuIG5ld1RvdGFsQW5kTGluZUl0ZW1z
LnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICBzdGQ6OnRpZSh1cGRhdGUubmV3VG90YWwsIHVwZGF0
ZS5uZXdMaW5lSXRlbXMpID0gbmV3VG90YWxBbmRMaW5lSXRlbXMucmVsZWFzZVJldHVyblZhbHVl
KCk7CiAKLSAgICBhdXRvIGFwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEgPSBjb252ZXJ0QW5kVmFs
aWRhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbV9wYXltZW50UmVxdWVzdC0+cGF5bWVu
dERldGFpbHMoKSk7Ci0gICAgaWYgKGFwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEuaGFzRXhjZXB0
aW9uKCkpCi0gICAgICAgIHJldHVybiBhcHBsZVBheURldGFpbHNVcGRhdGVEYXRhLnJlbGVhc2VF
eGNlcHRpb24oKTsKLSAgICBtZXJnZSh1cGRhdGUsIGFwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEu
cmVsZWFzZVJldHVyblZhbHVlKCkpOworICAgIGF1dG8gbW9kaWZpZXJFeGNlcHRpb24gPSBmaXJz
dEFwcGxpY2FibGVNb2RpZmllcigpOworICAgIGlmIChtb2RpZmllckV4Y2VwdGlvbi5oYXNFeGNl
cHRpb24oKSkKKyAgICAgICAgcmV0dXJuIG1vZGlmaWVyRXhjZXB0aW9uLnJlbGVhc2VFeGNlcHRp
b24oKTsKKyAgICBpZiAoYXV0byBtb2RpZmllckRhdGEgPSBtb2RpZmllckV4Y2VwdGlvbi5yZWxl
YXNlUmV0dXJuVmFsdWUoKSkgeworICAgICAgICBhdXRvJiBbbW9kaWZpZXIsIGFwcGxlUGF5TW9k
aWZpZXJdID0gKm1vZGlmaWVyRGF0YTsKKworICAgICAgICBVTlVTRURfUEFSQU0obW9kaWZpZXIp
OworCisgICAgICAgIG1lcmdlKHVwZGF0ZSwgV1RGTW92ZShhcHBsZVBheU1vZGlmaWVyKSk7Cisg
ICAgfQogCiAgICAgcGF5bWVudENvb3JkaW5hdG9yKCkuY29tcGxldGVTaGlwcGluZ0NvbnRhY3RT
ZWxlY3Rpb24oV1RGTW92ZSh1cGRhdGUpKTsKICAgICByZXR1cm4geyB9OwpAQCAtNjE3LDEwICs1
OTUsMTYgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6c2hpcHBp
bmdPcHRpb25VcGRhdGVkKCkKICAgICAgICAgcmV0dXJuIG5ld1RvdGFsQW5kTGluZUl0ZW1zLnJl
bGVhc2VFeGNlcHRpb24oKTsKICAgICBzdGQ6OnRpZSh1cGRhdGUubmV3VG90YWwsIHVwZGF0ZS5u
ZXdMaW5lSXRlbXMpID0gbmV3VG90YWxBbmRMaW5lSXRlbXMucmVsZWFzZVJldHVyblZhbHVlKCk7
CiAKLSAgICBhdXRvIGFwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEgPSBjb252ZXJ0QW5kVmFsaWRh
dGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbV9wYXltZW50UmVxdWVzdC0+cGF5bWVudERl
dGFpbHMoKSk7Ci0gICAgaWYgKGFwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEuaGFzRXhjZXB0aW9u
KCkpCi0gICAgICAgIHJldHVybiBhcHBsZVBheURldGFpbHNVcGRhdGVEYXRhLnJlbGVhc2VFeGNl
cHRpb24oKTsKLSAgICBtZXJnZSh1cGRhdGUsIGFwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEucmVs
ZWFzZVJldHVyblZhbHVlKCkpOworICAgIGF1dG8gbW9kaWZpZXJFeGNlcHRpb24gPSBmaXJzdEFw
cGxpY2FibGVNb2RpZmllcigpOworICAgIGlmIChtb2RpZmllckV4Y2VwdGlvbi5oYXNFeGNlcHRp
b24oKSkKKyAgICAgICAgcmV0dXJuIG1vZGlmaWVyRXhjZXB0aW9uLnJlbGVhc2VFeGNlcHRpb24o
KTsKKyAgICBpZiAoYXV0byBtb2RpZmllckRhdGEgPSBtb2RpZmllckV4Y2VwdGlvbi5yZWxlYXNl
UmV0dXJuVmFsdWUoKSkgeworICAgICAgICBhdXRvJiBbbW9kaWZpZXIsIGFwcGxlUGF5TW9kaWZp
ZXJdID0gKm1vZGlmaWVyRGF0YTsKKworICAgICAgICBVTlVTRURfUEFSQU0obW9kaWZpZXIpOwor
CisgICAgICAgIG1lcmdlKHVwZGF0ZSwgV1RGTW92ZShhcHBsZVBheU1vZGlmaWVyKSk7CisgICAg
fQogCiAgICAgcGF5bWVudENvb3JkaW5hdG9yKCkuY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVj
dGlvbihXVEZNb3ZlKHVwZGF0ZSkpOwogICAgIHJldHVybiB7IH07CkBAIC02NDUsMTAgKzYyOSwx
NiBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpwYXltZW50TWV0
aG9kVXBkYXRlZChWZWN0b3I8UmVmUHRyPEFwcAogICAgICAgICAgICAgcmV0dXJuIG5ld1RvdGFs
QW5kTGluZUl0ZW1zLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgc3RkOjp0aWUodXBkYXRl
Lm5ld1RvdGFsLCB1cGRhdGUubmV3TGluZUl0ZW1zKSA9IG5ld1RvdGFsQW5kTGluZUl0ZW1zLnJl
bGVhc2VSZXR1cm5WYWx1ZSgpOwogCi0gICAgICAgIGF1dG8gYXBwbGVQYXlEZXRhaWxzVXBkYXRl
RGF0YSA9IGNvbnZlcnRBbmRWYWxpZGF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBtX3Bh
eW1lbnRSZXF1ZXN0LT5wYXltZW50RGV0YWlscygpKTsKLSAgICAgICAgaWYgKGFwcGxlUGF5RGV0
YWlsc1VwZGF0ZURhdGEuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4gYXBwbGVQ
YXlEZXRhaWxzVXBkYXRlRGF0YS5yZWxlYXNlRXhjZXB0aW9uKCk7Ci0gICAgICAgIG1lcmdlKHVw
ZGF0ZSwgYXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YS5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7Cisg
ICAgICAgIGF1dG8gbW9kaWZpZXJFeGNlcHRpb24gPSBmaXJzdEFwcGxpY2FibGVNb2RpZmllcigp
OworICAgICAgICBpZiAobW9kaWZpZXJFeGNlcHRpb24uaGFzRXhjZXB0aW9uKCkpCisgICAgICAg
ICAgICByZXR1cm4gbW9kaWZpZXJFeGNlcHRpb24ucmVsZWFzZUV4Y2VwdGlvbigpOworICAgICAg
ICBpZiAoYXV0byBtb2RpZmllckRhdGEgPSBtb2RpZmllckV4Y2VwdGlvbi5yZWxlYXNlUmV0dXJu
VmFsdWUoKSkgeworICAgICAgICAgICAgYXV0byYgW21vZGlmaWVyLCBhcHBsZVBheU1vZGlmaWVy
XSA9ICptb2RpZmllckRhdGE7CisKKyAgICAgICAgICAgIFVOVVNFRF9QQVJBTShtb2RpZmllcik7
CisKKyAgICAgICAgICAgIG1lcmdlKHVwZGF0ZSwgV1RGTW92ZShhcHBsZVBheU1vZGlmaWVyKSk7
CisgICAgICAgIH0KIAogICAgICAgICBwYXltZW50Q29vcmRpbmF0b3IoKS5jb21wbGV0ZVBheW1l
bnRNZXRob2RNb2RlQ2hhbmdlKFdURk1vdmUodXBkYXRlKSk7CiAgICAgICAgIHJldHVybiB7IH07
CkBAIC02NjcsMTAgKzY1NywxNiBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBcHBsZVBheVBheW1lbnRI
YW5kbGVyOjpwYXltZW50TWV0aG9kVXBkYXRlZChWZWN0b3I8UmVmUHRyPEFwcAogICAgICAgICBy
ZXR1cm4gbmV3VG90YWxBbmRMaW5lSXRlbXMucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgIHN0ZDo6
dGllKHVwZGF0ZS5uZXdUb3RhbCwgdXBkYXRlLm5ld0xpbmVJdGVtcykgPSBuZXdUb3RhbEFuZExp
bmVJdGVtcy5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKIAotICAgIGF1dG8gYXBwbGVQYXlEZXRhaWxz
VXBkYXRlRGF0YSA9IGNvbnZlcnRBbmRWYWxpZGF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCBtX3BheW1lbnRSZXF1ZXN0LT5wYXltZW50RGV0YWlscygpKTsKLSAgICBpZiAoYXBwbGVQYXlE
ZXRhaWxzVXBkYXRlRGF0YS5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIGFwcGxlUGF5
RGV0YWlsc1VwZGF0ZURhdGEucmVsZWFzZUV4Y2VwdGlvbigpOwotICAgIG1lcmdlKHVwZGF0ZSwg
YXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YS5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CisgICAgYXV0
byBtb2RpZmllckV4Y2VwdGlvbiA9IGZpcnN0QXBwbGljYWJsZU1vZGlmaWVyKCk7CisgICAgaWYg
KG1vZGlmaWVyRXhjZXB0aW9uLmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gbW9kaWZp
ZXJFeGNlcHRpb24ucmVsZWFzZUV4Y2VwdGlvbigpOworICAgIGlmIChhdXRvIG1vZGlmaWVyRGF0
YSA9IG1vZGlmaWVyRXhjZXB0aW9uLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKSB7CisgICAgICAgIGF1
dG8mIFttb2RpZmllciwgYXBwbGVQYXlNb2RpZmllcl0gPSAqbW9kaWZpZXJEYXRhOworCisgICAg
ICAgIFVOVVNFRF9QQVJBTShtb2RpZmllcik7CisKKyAgICAgICAgbWVyZ2UodXBkYXRlLCBXVEZN
b3ZlKGFwcGxlUGF5TW9kaWZpZXIpKTsKKyAgICB9CiAKICAgICBwYXltZW50Q29vcmRpbmF0b3Io
KS5jb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oV1RGTW92ZSh1cGRhdGUpKTsKICAgICBy
ZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9w
YXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuaApp
bmRleCBmOWE2MmNiNmMwZDUwOWM0Yjc4NWM2MjM0YTVlZjhkYTE2ZDI5NDk5Li44MDBlNzdiOTI0
YmZmYjBmOTcxOTQ0MzQyNDE4ZWQwNDZhM2NjYTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0Fw
cGxlUGF5UGF5bWVudEhhbmRsZXIuaApAQCAtMzMsMTMgKzMzLDE3IEBACiAjaW5jbHVkZSAiUGF5
bWVudEhhbmRsZXIuaCIKICNpbmNsdWRlICJQYXltZW50UmVxdWVzdC5oIgogI2luY2x1ZGUgIlBh
eW1lbnRTZXNzaW9uLmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFwcGxlUGF5RXJyb3I7
CiBjbGFzcyBQYXltZW50Q29vcmRpbmF0b3I7CitzdHJ1Y3QgQXBwbGVQYXlNb2RpZmllcjsKK3N0
cnVjdCBQYXltZW50RGV0YWlsc01vZGlmaWVyOwogCiBjbGFzcyBBcHBsZVBheVBheW1lbnRIYW5k
bGVyIGZpbmFsIDogcHVibGljIFBheW1lbnRIYW5kbGVyLCBwdWJsaWMgUGF5bWVudFNlc3Npb24s
IHByaXZhdGUgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgpAQCAtNTQsMTMg
KzU4LDE0IEBAIHByaXZhdGU6CiAgICAgRG9jdW1lbnQmIGRvY3VtZW50KCkgY29uc3Q7CiAgICAg
UGF5bWVudENvb3JkaW5hdG9yJiBwYXltZW50Q29vcmRpbmF0b3IoKSBjb25zdDsKIAotICAgIEV4
Y2VwdGlvbk9yPFZlY3RvcjxBcHBsZVBheVNoaXBwaW5nTWV0aG9kPj4gY29tcHV0ZVNoaXBwaW5n
TWV0aG9kcygpOworICAgIEV4Y2VwdGlvbk9yPFZlY3RvcjxBcHBsZVBheVNoaXBwaW5nTWV0aG9k
Pj4gY29tcHV0ZVNoaXBwaW5nTWV0aG9kcygpIGNvbnN0OwogICAgIEV4Y2VwdGlvbk9yPHN0ZDo6
dHVwbGU8QXBwbGVQYXlMaW5lSXRlbSwgVmVjdG9yPEFwcGxlUGF5TGluZUl0ZW0+Pj4gY29tcHV0
ZVRvdGFsQW5kTGluZUl0ZW1zKCkgY29uc3Q7CiAgICAgVmVjdG9yPFJlZlB0cjxBcHBsZVBheUVy
cm9yPj4gY29tcHV0ZUVycm9ycyhTdHJpbmcmJiBlcnJvciwgQWRkcmVzc0Vycm9ycyYmLCBQYXll
ckVycm9yRmllbGRzJiYsIEpTQzo6SlNPYmplY3QqIHBheW1lbnRNZXRob2RFcnJvcnMpIGNvbnN0
OwogICAgIFZlY3RvcjxSZWZQdHI8QXBwbGVQYXlFcnJvcj4+IGNvbXB1dGVFcnJvcnMoSlNDOjpK
U09iamVjdCogcGF5bWVudE1ldGhvZEVycm9ycykgY29uc3Q7CiAgICAgdm9pZCBjb21wdXRlQWRk
cmVzc0Vycm9ycyhTdHJpbmcmJiBlcnJvciwgQWRkcmVzc0Vycm9ycyYmLCBWZWN0b3I8UmVmUHRy
PEFwcGxlUGF5RXJyb3I+PiYpIGNvbnN0OwogICAgIHZvaWQgY29tcHV0ZVBheWVyRXJyb3JzKFBh
eWVyRXJyb3JGaWVsZHMmJiwgVmVjdG9yPFJlZlB0cjxBcHBsZVBheUVycm9yPj4mKSBjb25zdDsK
ICAgICBFeGNlcHRpb25Pcjx2b2lkPiBjb21wdXRlUGF5bWVudE1ldGhvZEVycm9ycyhKU0M6OkpT
T2JqZWN0KiBwYXltZW50TWV0aG9kRXJyb3JzLCBWZWN0b3I8UmVmUHRyPEFwcGxlUGF5RXJyb3I+
PiYpIGNvbnN0OworICAgIEV4Y2VwdGlvbk9yPE9wdGlvbmFsPHN0ZDo6dHVwbGU8UGF5bWVudERl
dGFpbHNNb2RpZmllciwgQXBwbGVQYXlNb2RpZmllcj4+PiBmaXJzdEFwcGxpY2FibGVNb2RpZmll
cigpIGNvbnN0OwogCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2hpcHBpbmdBZGRyZXNzVXBkYXRl
ZChWZWN0b3I8UmVmUHRyPEFwcGxlUGF5RXJyb3I+PiYmIGVycm9ycyk7CiAgICAgRXhjZXB0aW9u
T3I8dm9pZD4gc2hpcHBpbmdPcHRpb25VcGRhdGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnREZXRhaWxzQmFzZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50RGV0YWlsc0Jhc2UuaAppbmRl
eCA5MGY4N2QyMDYxZTA2ZDU5OGE0YzMzODNhNjNhY2M4MWEwYTYwZWQxLi5lMTczZDY4NWE3OWE2
Yjk5NGM4MzBhZmU0M2FlMzM2OTEyNzVkMDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnREZXRhaWxzQmFzZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudERldGFpbHNCYXNlLmgKQEAgLTMw
LDggKzMwLDYgQEAKICNpbmNsdWRlICJQYXltZW50RGV0YWlsc01vZGlmaWVyLmgiCiAjaW5jbHVk
ZSAiUGF5bWVudEl0ZW0uaCIKICNpbmNsdWRlICJQYXltZW50U2hpcHBpbmdPcHRpb24uaCIKLSNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdC5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL1N0cm9uZy5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQyLDEwICs0MCw2
IEBAIHN0cnVjdCBQYXltZW50RGV0YWlsc0Jhc2UgewogICAgIE9wdGlvbmFsPFZlY3RvcjxQYXlt
ZW50SXRlbT4+IGRpc3BsYXlJdGVtczsKICAgICBPcHRpb25hbDxWZWN0b3I8UGF5bWVudFNoaXBw
aW5nT3B0aW9uPj4gc2hpcHBpbmdPcHRpb25zOwogICAgIE9wdGlvbmFsPFZlY3RvcjxQYXltZW50
RGV0YWlsc01vZGlmaWVyPj4gbW9kaWZpZXJzOwotICAgIEpTQzo6U3Ryb25nPEpTQzo6SlNPYmpl
Y3Q+IGRhdGE7Ci0KLSAgICAvLyBOb3QgZnJvbSB0aGUgSURMLiBTZXQgYnkgYGRhdGFgIHdoZW4g
dGhpcyBpcyB2YWxpZGF0ZWQgYnkgYFBheW1lbnRSZXF1ZXN0YC4KLSAgICBTdHJpbmcgc2VyaWFs
aXplZERhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnREZXRhaWxzQmFzZS5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnREZXRhaWxzQmFz
ZS5pZGwKaW5kZXggZDgwYzQ5ZDkyMDU2NjFkZTgwYThlNDc2YzMwNDEzOTFhNTZkNWNkYy4uNDQ5
ZTNlZTk4ZDI5MTA3ZWMwY2VlNmNjNDU2OGIzMDhkMzU2ZjVkZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50RGV0YWlsc0Jhc2UuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudERldGFpbHNC
YXNlLmlkbApAQCAtMjksNSArMjksNCBAQAogICAgIHNlcXVlbmNlPFBheW1lbnRJdGVtPiBkaXNw
bGF5SXRlbXM7CiAgICAgc2VxdWVuY2U8UGF5bWVudFNoaXBwaW5nT3B0aW9uPiBzaGlwcGluZ09w
dGlvbnM7CiAgICAgc2VxdWVuY2U8UGF5bWVudERldGFpbHNNb2RpZmllcj4gbW9kaWZpZXJzOwot
ICAgIG9iamVjdCBkYXRhOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
cGF5bWVudHJlcXVlc3QvUGF5bWVudEl0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5
bWVudHJlcXVlc3QvUGF5bWVudEl0ZW0uaAppbmRleCBmMTViOWVhZWFlZTQ2NGU3ODk5MTJjN2Rl
NmY0MGI2N2I3NmE3MmIzLi5kNTc5NDc2ZmY0ODMxMjY1YzNiN2MzZDY1MTQ5ZGRjMDU1NGJhNmJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1l
bnRJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXlt
ZW50SXRlbS5oCkBAIC0yOCw4ICsyOCw2IEBACiAjaWYgRU5BQkxFKFBBWU1FTlRfUkVRVUVTVCkK
IAogI2luY2x1ZGUgIlBheW1lbnRDdXJyZW5jeUFtb3VudC5oIgotI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTT2JqZWN0Lmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTM4LDEwICszNiw2IEBAIHN0cnVjdCBQYXltZW50SXRlbSB7CiAgICAgU3RyaW5nIGxhYmVsOwog
ICAgIFBheW1lbnRDdXJyZW5jeUFtb3VudCBhbW91bnQ7CiAgICAgYm9vbCBwZW5kaW5nIHsgZmFs
c2UgfTsKLSAgICBKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0PiBkYXRhOwotCi0gICAgLy8gTm90
IGZyb20gdGhlIElETC4gU2V0IGJ5IGBkYXRhYCB3aGVuIHRoaXMgaXMgdmFsaWRhdGVkIGJ5IGBQ
YXltZW50UmVxdWVzdGAuCi0gICAgU3RyaW5nIHNlcmlhbGl6ZWREYXRhOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXlt
ZW50cmVxdWVzdC9QYXltZW50SXRlbS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1l
bnRyZXF1ZXN0L1BheW1lbnRJdGVtLmlkbAppbmRleCAxYzBiYzY2ZmUzMTVlMjZhYzg1YjE5Mzc4
Y2I3MDZjMTUzM2U1ZTEyLi5kYTFhZTdmM2EzZjc4YjVjMjczNWFjNjVlZmIwYWNkYTkyZGFmZTM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1l
bnRJdGVtLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1Bh
eW1lbnRJdGVtLmlkbApAQCAtMjksNSArMjksNCBAQAogICAgIHJlcXVpcmVkIERPTVN0cmluZyBs
YWJlbDsKICAgICByZXF1aXJlZCBQYXltZW50Q3VycmVuY3lBbW91bnQgYW1vdW50OwogICAgIGJv
b2xlYW4gcGVuZGluZyA9IGZhbHNlOwotICAgIG9iamVjdCBkYXRhOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5j
cHAKaW5kZXggZWY4NTI2ZTllN2YxZWEzZWFjOTc0NWI4MTIzNjljODU4YjliMDZlNS4uZWJiYTg0
NzZjOTVjNjZjZDliZjBkN2UzNjhkYjRlNDNkNGFkMzAyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHAKQEAg
LTk5LDcgKzk5LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHZvaWQ+IGNoZWNrQW5kQ2Fub25pY2Fs
aXplQW1vdW50KFBheW1lbnRDdXJyZW5jeUFtb3VudCYgYW1vdW4KIH0KIAogZW51bSBjbGFzcyBO
ZWdhdGl2ZUFtb3VudEFsbG93ZWQgeyBZZXMsIE5vIH07Ci1zdGF0aWMgRXhjZXB0aW9uT3I8dm9p
ZD4gY2hlY2tBbmRDYW5vbmljYWxpemVQYXltZW50SXRlbShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBQYXltZW50SXRlbSYgaXRlbSwgTmVnYXRpdmVBbW91bnRBbGxvd2VkIG5lZ2F0
aXZlQW1vdW50QWxsb3dlZCkKK3N0YXRpYyBFeGNlcHRpb25Pcjx2b2lkPiBjaGVja0FuZENhbm9u
aWNhbGl6ZVBheW1lbnRJdGVtKFBheW1lbnRJdGVtJiBpdGVtLCBOZWdhdGl2ZUFtb3VudEFsbG93
ZWQgbmVnYXRpdmVBbW91bnRBbGxvd2VkKQogewogICAgIGF1dG8gZXhjZXB0aW9uID0gY2hlY2tB
bmRDYW5vbmljYWxpemVBbW91bnQoaXRlbS5hbW91bnQpOwogICAgIGlmIChleGNlcHRpb24uaGFz
RXhjZXB0aW9uKCkpCkBAIC0xMDgsMjIgKzEwOCwxNCBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8dm9p
ZD4gY2hlY2tBbmRDYW5vbmljYWxpemVQYXltZW50SXRlbShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JgogICAgIGlmIChuZWdhdGl2ZUFtb3VudEFsbG93ZWQgPT0gTmVnYXRpdmVBbW91bnRBbGxvd2Vk
OjpObyAmJiBpdGVtLmFtb3VudC52YWx1ZVswXSA9PSAnLScpCiAgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBUeXBlRXJyb3IsICJUb3RhbCBjdXJyZW5jeSB2YWx1ZXMgY2Fubm90IGJlIG5lZ2F0
aXZlLiJfcyB9OwogCi0gICAgaWYgKGl0ZW0uZGF0YSkgewotICAgICAgICBhdXRvIGRhdGFSZXN1
bHQgPSBjaGVja0FuZENhbm9uaWNhbGl6ZURhdGEoY29udGV4dCwgaXRlbSk7Ci0gICAgICAgIGlm
IChkYXRhUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQotICAgICAgICAgICAgcmV0dXJuIGRhdGFSZXN1
bHQucmVsZWFzZUV4Y2VwdGlvbigpOwotCi0gICAgICAgIGl0ZW0uc2VyaWFsaXplZERhdGEgPSBk
YXRhUmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgIH0KLQogICAgIHJldHVybiB7IH07
CiB9CiAKIC8vIEltcGxlbWVudHMgdGhlICJjaGVjayBhbmQgY2Fub25pY2FsaXplIHRvdGFsIiB2
YWxpZGl0eSBjaGVja2VyCiAvLyBodHRwczovL3d3dy53My5vcmcvVFIvcGF5bWVudC1yZXF1ZXN0
LyNkZm4tY2hlY2stYW5kLWNhbm9uaWNhbGl6ZS10b3RhbAotc3RhdGljIEV4Y2VwdGlvbk9yPHZv
aWQ+IGNoZWNrQW5kQ2Fub25pY2FsaXplVG90YWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgUGF5bWVudEl0ZW0mIHRvdGFsKQorc3RhdGljIEV4Y2VwdGlvbk9yPHZvaWQ+IGNoZWNr
QW5kQ2Fub25pY2FsaXplVG90YWwoUGF5bWVudEl0ZW0mIHRvdGFsKQogewotICAgIHJldHVybiBj
aGVja0FuZENhbm9uaWNhbGl6ZVBheW1lbnRJdGVtKGNvbnRleHQsIHRvdGFsLCBOZWdhdGl2ZUFt
b3VudEFsbG93ZWQ6Ok5vKTsKKyAgICByZXR1cm4gY2hlY2tBbmRDYW5vbmljYWxpemVQYXltZW50
SXRlbSh0b3RhbCwgTmVnYXRpdmVBbW91bnRBbGxvd2VkOjpObyk7CiB9CiAKIC8vIEltcGxlbWVu
dHMgInZhbGlkYXRlIGEgc3RhbmRhcmRpemVkIHBheW1lbnQgbWV0aG9kIGlkZW50aWZpZXIiCkBA
IC0yMDYsNyArMTk4LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dHVwbGU8U3RyaW5nLCBW
ZWN0b3I8U3RyaW5nPj4+IGNoZWNrQW5kQ2Fub25pY2FsaXplRGV0YWkKIHsKICAgICBpZiAoZGV0
YWlscy5kaXNwbGF5SXRlbXMpIHsKICAgICAgICAgZm9yIChhdXRvJiBpdGVtIDogKmRldGFpbHMu
ZGlzcGxheUl0ZW1zKSB7Ci0gICAgICAgICAgICBhdXRvIHBheW1lbnRJdGVtUmVzdWx0ID0gY2hl
Y2tBbmRDYW5vbmljYWxpemVQYXltZW50SXRlbShjb250ZXh0LCBpdGVtLCBOZWdhdGl2ZUFtb3Vu
dEFsbG93ZWQ6Olllcyk7CisgICAgICAgICAgICBhdXRvIHBheW1lbnRJdGVtUmVzdWx0ID0gY2hl
Y2tBbmRDYW5vbmljYWxpemVQYXltZW50SXRlbShpdGVtLCBOZWdhdGl2ZUFtb3VudEFsbG93ZWQ6
Olllcyk7CiAgICAgICAgICAgICBpZiAocGF5bWVudEl0ZW1SZXN1bHQuaGFzRXhjZXB0aW9uKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHBheW1lbnRJdGVtUmVzdWx0LnJlbGVhc2VFeGNlcHRp
b24oKTsKICAgICAgICAgfQpAQCAtMjMzLDE0ICsyMjUsNiBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8
c3RkOjp0dXBsZTxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+Pj4gY2hlY2tBbmRDYW5vbmljYWxpemVE
ZXRhaQogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmFkZENvbnNvbGVNZXNzYWdlKEpTQzo6
TWVzc2FnZVNvdXJjZTo6UGF5bWVudFJlcXVlc3QsIEpTQzo6TWVzc2FnZUxldmVsOjpXYXJuaW5n
LCAiV2ViS2l0IGN1cnJlbnRseSB1c2VzIHRoZSBmaXJzdCBzaGlwcGluZyBvcHRpb24gZXZlbiBp
ZiBvdGhlciBzaGlwcGluZyBvcHRpb25zIGFyZSBtYXJrZWQgYXMgc2VsZWN0ZWQuIl9zKTsKICAg
ICAgICAgICAgICAgICAgICAgZGlkTG9nID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgICAgICBpZiAoc2hpcHBpbmdPcHRpb24uZGF0YSkgewotICAgICAgICAgICAgICAg
ICAgICBhdXRvIGRhdGFSZXN1bHQgPSBjaGVja0FuZENhbm9uaWNhbGl6ZURhdGEoY29udGV4dCwg
c2hpcHBpbmdPcHRpb24pOwotICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YVJlc3VsdC5oYXNF
eGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhUmVzdWx0LnJl
bGVhc2VFeGNlcHRpb24oKTsKLQotICAgICAgICAgICAgICAgICAgICBzaGlwcGluZ09wdGlvbi5z
ZXJpYWxpemVkRGF0YSA9IGRhdGFSZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0gICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKGlzVXBkYXRlID09
IElzVXBkYXRlOjpObykKICAgICAgICAgICAgIGRldGFpbHMuc2hpcHBpbmdPcHRpb25zID0geyB7
IH0gfTsKQEAgLTI1OCwxMyArMjQyLDEzIEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnR1cGxl
PFN0cmluZywgVmVjdG9yPFN0cmluZz4+PiBjaGVja0FuZENhbm9uaWNhbGl6ZURldGFpCiAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChtb2RpZmllci50b3RhbCkgewotICAgICAgICAg
ICAgICAgIGF1dG8gdG90YWxSZXN1bHQgPSBjaGVja0FuZENhbm9uaWNhbGl6ZVRvdGFsKGNvbnRl
eHQsICptb2RpZmllci50b3RhbCk7CisgICAgICAgICAgICAgICAgYXV0byB0b3RhbFJlc3VsdCA9
IGNoZWNrQW5kQ2Fub25pY2FsaXplVG90YWwoKm1vZGlmaWVyLnRvdGFsKTsKICAgICAgICAgICAg
ICAgICBpZiAodG90YWxSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiB0b3RhbFJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIGZvciAoYXV0byYgaXRlbSA6IG1vZGlmaWVyLmFkZGl0aW9uYWxEaXNwbGF5
SXRlbXMpIHsKLSAgICAgICAgICAgICAgICBhdXRvIHBheW1lbnRJdGVtUmVzdWx0ID0gY2hlY2tB
bmRDYW5vbmljYWxpemVQYXltZW50SXRlbShjb250ZXh0LCBpdGVtLCBOZWdhdGl2ZUFtb3VudEFs
bG93ZWQ6Olllcyk7CisgICAgICAgICAgICAgICAgYXV0byBwYXltZW50SXRlbVJlc3VsdCA9IGNo
ZWNrQW5kQ2Fub25pY2FsaXplUGF5bWVudEl0ZW0oaXRlbSwgTmVnYXRpdmVBbW91bnRBbGxvd2Vk
OjpZZXMpOwogICAgICAgICAgICAgICAgIGlmIChwYXltZW50SXRlbVJlc3VsdC5oYXNFeGNlcHRp
b24oKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBheW1lbnRJdGVtUmVzdWx0LnJlbGVh
c2VFeGNlcHRpb24oKTsKICAgICAgICAgICAgIH0KQEAgLTI4MiwxNCArMjY2LDYgQEAgc3RhdGlj
IEV4Y2VwdGlvbk9yPHN0ZDo6dHVwbGU8U3RyaW5nLCBWZWN0b3I8U3RyaW5nPj4+IGNoZWNrQW5k
Q2Fub25pY2FsaXplRGV0YWkKICAgICB9IGVsc2UgaWYgKGlzVXBkYXRlID09IElzVXBkYXRlOjpO
bykKICAgICAgICAgZGV0YWlscy5tb2RpZmllcnMgPSB7IHsgfSB9OwogCi0gICAgaWYgKGRldGFp
bHMuZGF0YSkgewotICAgICAgICBhdXRvIGRhdGFSZXN1bHQgPSBjaGVja0FuZENhbm9uaWNhbGl6
ZURhdGEoY29udGV4dCwgZGV0YWlscyk7Ci0gICAgICAgIGlmIChkYXRhUmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKQotICAgICAgICAgICAgcmV0dXJuIGRhdGFSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigp
OwotCi0gICAgICAgIGRldGFpbHMuc2VyaWFsaXplZERhdGEgPSBkYXRhUmVzdWx0LnJlbGVhc2VS
ZXR1cm5WYWx1ZSgpOwotICAgIH0KLQogICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoV1RGTW92
ZShzZWxlY3RlZFNoaXBwaW5nT3B0aW9uKSwgV1RGTW92ZShzZXJpYWxpemVkTW9kaWZpZXJEYXRh
KSk7CiB9CiAKQEAgLTM1Myw3ICszMjksNyBAQCBFeGNlcHRpb25PcjxSZWY8UGF5bWVudFJlcXVl
c3Q+PiBQYXltZW50UmVxdWVzdDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgVmVjdAogICAg
ICAgICBzZXJpYWxpemVkTWV0aG9kRGF0YS51bmNoZWNrZWRBcHBlbmQoeyBXVEZNb3ZlKCppZGVu
dGlmaWVyKSwgV1RGTW92ZShzZXJpYWxpemVkRGF0YSkgfSk7CiAgICAgfQogCi0gICAgYXV0byB0
b3RhbFJlc3VsdCA9IGNoZWNrQW5kQ2Fub25pY2FsaXplVG90YWwoZG9jdW1lbnQsIGRldGFpbHMu
dG90YWwpOworICAgIGF1dG8gdG90YWxSZXN1bHQgPSBjaGVja0FuZENhbm9uaWNhbGl6ZVRvdGFs
KGRldGFpbHMudG90YWwpOwogICAgIGlmICh0b3RhbFJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAg
ICAgICAgcmV0dXJuIHRvdGFsUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKIApAQCAtNjY0LDcg
KzY0MCw3IEBAIHZvaWQgUGF5bWVudFJlcXVlc3Q6OnNldHRsZURldGFpbHNQcm9taXNlKFVwZGF0
ZVJlYXNvbiByZWFzb24pCiAgICAgfQogCiAgICAgaWYgKGRldGFpbHNVcGRhdGUudG90YWwpIHsK
LSAgICAgICAgYXV0byB0b3RhbFJlc3VsdCA9IGNoZWNrQW5kQ2Fub25pY2FsaXplVG90YWwoY29u
dGV4dCwgKmRldGFpbHNVcGRhdGUudG90YWwpOworICAgICAgICBhdXRvIHRvdGFsUmVzdWx0ID0g
Y2hlY2tBbmRDYW5vbmljYWxpemVUb3RhbCgqZGV0YWlsc1VwZGF0ZS50b3RhbCk7CiAgICAgICAg
IGlmICh0b3RhbFJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgYWJvcnRXaXRo
RXhjZXB0aW9uKHRvdGFsUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC02OTEsOCArNjY3LDYgQEAgdm9pZCBQYXltZW50UmVxdWVzdDo6c2V0dGxlRGV0
YWlsc1Byb21pc2UoVXBkYXRlUmVhc29uIHJlYXNvbikKICAgICAgICAgbV9kZXRhaWxzLm1vZGlm
aWVycyA9IFdURk1vdmUoKmRldGFpbHNVcGRhdGUubW9kaWZpZXJzKTsKICAgICAgICAgbV9zZXJp
YWxpemVkTW9kaWZpZXJEYXRhID0gV1RGTW92ZShzdGQ6OmdldDwxPihzaGlwcGluZ09wdGlvbkFu
ZE1vZGlmaWVyRGF0YSkpOwogICAgIH0KLSAgICBpZiAoIWRldGFpbHNVcGRhdGUuc2VyaWFsaXpl
ZERhdGEuaXNFbXB0eSgpKQotICAgICAgICBtX2RldGFpbHMuc2VyaWFsaXplZERhdGEgPSBXVEZN
b3ZlKGRldGFpbHNVcGRhdGUuc2VyaWFsaXplZERhdGEpOwogCiAgICAgYXV0byByZXN1bHQgPSBh
Y3RpdmVQYXltZW50SGFuZGxlcigpLT5kZXRhaWxzVXBkYXRlZChyZWFzb24sIFdURk1vdmUoZGV0
YWlsc1VwZGF0ZS5lcnJvciksIFdURk1vdmUoZGV0YWlsc1VwZGF0ZS5zaGlwcGluZ0FkZHJlc3NF
cnJvcnMpLCBXVEZNb3ZlKGRldGFpbHNVcGRhdGUucGF5ZXJFcnJvcnMpLCBkZXRhaWxzVXBkYXRl
LnBheW1lbnRNZXRob2RFcnJvcnMuZ2V0KCkpOwogICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9u
KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3Qv
UGF5bWVudFNoaXBwaW5nT3B0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRy
ZXF1ZXN0L1BheW1lbnRTaGlwcGluZ09wdGlvbi5oCmluZGV4IGY5YmM1Njk0Mzc2Njg0NThhN2Zh
NTA2NjY3NTYyMjVlMTczOGY1NjguLjJkZGQ1MWJhNWRhYmYyNTI3MTE1MzBjYmEwYzQ3ZDc0Njgz
YmM2YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3Qv
UGF5bWVudFNoaXBwaW5nT3B0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXlt
ZW50cmVxdWVzdC9QYXltZW50U2hpcHBpbmdPcHRpb24uaApAQCAtMjgsOCArMjgsNiBAQAogI2lm
IEVOQUJMRShQQVlNRU5UX1JFUVVFU1QpCiAKICNpbmNsdWRlICJQYXltZW50Q3VycmVuY3lBbW91
bnQuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdC5oPgotI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1N0cm9uZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOSwxMCArMzcsNiBAQCBzdHJ1Y3QgUGF5bWVudFNo
aXBwaW5nT3B0aW9uIHsKICAgICBTdHJpbmcgbGFiZWw7CiAgICAgUGF5bWVudEN1cnJlbmN5QW1v
dW50IGFtb3VudDsKICAgICBib29sIHNlbGVjdGVkIHsgZmFsc2UgfTsKLSAgICBKU0M6OlN0cm9u
ZzxKU0M6OkpTT2JqZWN0PiBkYXRhOwotCi0gICAgLy8gTm90IGZyb20gdGhlIElETC4gU2V0IGJ5
IGBkYXRhYCB3aGVuIHRoaXMgaXMgdmFsaWRhdGVkIGJ5IGBQYXltZW50UmVxdWVzdGAuCi0gICAg
U3RyaW5nIHNlcmlhbGl6ZWREYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50U2hp
cHBpbmdPcHRpb24uaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9Q
YXltZW50U2hpcHBpbmdPcHRpb24uaWRsCmluZGV4IDhlZWM2ZjYzMmFlZTk1MmUwNmU5NTBiYjM1
MTY5YzQ3MmM0YjM3YzEuLjBmNjg5YjhmNGYxNGQzOGMwMzNhMzFkMWYwOGZhMTRhZmM3MWU5MWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVu
dFNoaXBwaW5nT3B0aW9uLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRy
ZXF1ZXN0L1BheW1lbnRTaGlwcGluZ09wdGlvbi5pZGwKQEAgLTMwLDUgKzMwLDQgQEAKICAgICBy
ZXF1aXJlZCBET01TdHJpbmcgbGFiZWw7CiAgICAgcmVxdWlyZWQgUGF5bWVudEN1cnJlbmN5QW1v
dW50IGFtb3VudDsKICAgICBib29sZWFuIHNlbGVjdGVkID0gZmFsc2U7Ci0gICAgb2JqZWN0IGRh
dGE7CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424562</attachid>
            <date>2021-03-29 12:17:03 -0700</date>
            <delta_ts>2021-03-29 13:01:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223621-20210329131702.patch</filename>
            <type>text/plain</type>
            <size>40452</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxMDM4MjM0MGNmZTg2ZTk0Mjk1N2JjNWQ1NjQzMmE2NWU2MWE3MjZhLi40
ODllNTE4M2Y4NGE5MjZjZTZjMjMxZjQ3Y2FhOWY5ZjBlMWU3ZDRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTcgQEAKKzIwMjEtMDMtMjkgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFtQYXltZW50IFJlcXVlc3RdIG1vdmUgYWRkZWQgYG9iamVjdCBkYXRhYCB0
byBgQXBwbGVQYXlNb2RpZmllcmAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyMzYyMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzU3MjA4Nzk+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgV2Vuc29uIEhzaWVoLgorCisgICAgICAgIFRoZSBgb2JqZWN0
IGRhdGFgIGluIGBQYXltZW50RGV0YWlsc01vZGlmaWVyYCBoYXMgYSBzaWJsaW5nIHByb3BlcnR5
IGByZXF1aXJlZCBET01TdHJpbmcgc3VwcG9ydGVkTWV0aG9kc2AKKyAgICAgICAgd2hpY2ggYWN0
cyBhcyBhICJndWFyZCIgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHN0cnVjdHVyZSBvZiBgZGF0YWAg
aXMgb25seSBsaW1pdGVkIHRvIHRoYXQgYHN1cHBvcnRlZE1ldGhvZHNgCisgICAgICAgIG1lYW5p
bmcgdGhhdCB0aGVyZSdzIG5vIGNvbmNlcm4gb3ZlciBuYW1pbmcgY29sbGlzaW9ucyBiZXR3ZWVu
IHR3byBkaWZmZXJlbnQgYHN1cHBvcnRlZE1ldGhvZHNgLiBBcyBzdWNoLAorICAgICAgICB0aGUg
YG9iamVjdCBkYXRhYCBhZGRlZCB0byBgUGF5bWVudEl0ZW1gIGFuZCBgUGF5bWVudERldGFpbHNC
YXNlYCBhbmQgYFBheW1lbnRTaGlwcGluZ09wdGlvbmAgc2hvdWxkIHJlYWxseQorICAgICAgICBi
ZSBwYXJ0IG9mIGBBcHBsZVBheU1vZGlmaWVyYCAod2hpY2ggaXMgd2hhdCB0aGUgYG9iamVjdCBk
YXRhYCBpbiBgUGF5bWVudERldGFpbHNNb2RpZmllcmAgaXMgcGFyc2VkIGludG8pLgorCisgICAg
ICAgICogTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheU1vZGlmaWVyLmlk
bDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5TW9k
aWZpZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxl
UGF5UGF5bWVudEhhbmRsZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRy
ZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29u
dmVydEFuZFZhbGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Om1lcmdlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OnNob3cpOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbGVQYXlQYXltZW50SGFuZGxlcjo6Y29tcHV0ZVNoaXBwaW5nTWV0aG9kcyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpjb21wdXRlVG90YWxBbmRM
aW5lSXRlbXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6dmFsaWRhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbGVQYXlQYXltZW50SGFuZGxlcjo6Zmlyc3RBcHBsaWNhYmxlTW9kaWZpZXIg
Y29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudEhhbmRsZXI6
OnNoaXBwaW5nQWRkcmVzc1VwZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlQYXlt
ZW50SGFuZGxlcjo6c2hpcHBpbmdPcHRpb25VcGRhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxlUGF5UGF5bWVudEhhbmRsZXI6OnBheW1lbnRNZXRob2RVcGRhdGVkKToKKyAgICAgICAgSW5z
dGVhZCBvZiB2YWxpZGF0aW5nIGFuZCBtZXJnaW5nIGRhdGEgZnJvbSB0aGUgdmFyaW91cyBgQXBw
bGVQYXkqRGF0YWAgb2JqZWN0cywgZ2V0IHRoZQorICAgICAgICBmaXJzdCBhcHBsaWNhYmxlIGBB
cHBsZVBheU1vZGlmaWVyYCBmcm9tIHRoZSBsaXN0IG9mIGBQYXltZW50RGV0YWlsc01vZGlmaWVy
YCBhbmQgdXNlIHRoYXQKKyAgICAgICAgZm9yIHZhbGlkYXRpb24gYW5kIGRhdGEgbWVyZ2luZyAo
c2luY2UsIGFzIGV4cGxhaW5lZCBhYm92ZSwgaXQgbm93IGNvbnRhaW5zIHRoZSBkYXRhKS4KKwor
ICAgICAgICAqIE1vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudERldGFpbHNCYXNlLmlkbDoK
KyAgICAgICAgKiBNb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnREZXRhaWxzQmFzZS5oOgor
ICAgICAgICAqIE1vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudEl0ZW0uaWRsOgorICAgICAg
ICAqIE1vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudEl0ZW0uaDoKKyAgICAgICAgKiBNb2R1
bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRTaGlwcGluZ09wdGlvbi5pZGw6CisgICAgICAgICog
TW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50U2hpcHBpbmdPcHRpb24uaDoKKyAgICAgICAg
KiBNb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNoZWNrQW5kQ2Fub25pY2FsaXplUGF5bWVudEl0ZW0pOgorICAgICAgICAoV2ViQ29y
ZTo6Y2hlY2tBbmRDYW5vbmljYWxpemVUb3RhbCk6CisgICAgICAgIChXZWJDb3JlOjpjaGVja0Fu
ZENhbm9uaWNhbGl6ZURldGFpbHMpOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6c2V0dGxlRGV0YWls
c1Byb21pc2UpOgorICAgICAgICBSZW1vdmUgdGhlIElETCBgb2JqZWN0IGRhdGE7YCBhbmQgYXNz
b2NpYXRlZCBtZW1iZXJzL2xvZ2ljIG5vdyB0aGF0IHRoZSBwYXJzZWQgZGF0YSBpcyBhbGwKKyAg
ICAgICAgcGFydCBvZiBgQXBwbGVQYXlNb2RpZmllcmAuIFRoZXNlIG9iamVjdHMgYXJlIG5vdyBi
YWNrIHRvIGJlaW5nIHNwZWMgY29tcGxpYW50LgorCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheURldGFpbHNVcGRhdGVCYXNlLmlkbDoKKyAgICAgICAgRHJpdmUtYnk6IEFkZCBt
aXNzaW5nIGluaGVyaXRhbmNlIHRvIGBBcHBsZVBheURldGFpbHNVcGRhdGVEYXRhYC4KKworICAg
ICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5lSXRlbURhdGEuaWRsOgorICAgICAg
ICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ01ldGhvZERhdGEuaWRsOgorICAg
ICAgICBEcml2ZS1ieTogUmVtb3ZlIHVubmVjZXNzYXJ5IGF0dHJpYnV0ZXMuCisKIDIwMjEtMDMt
MjYgIFRpbSBOZ3V5ZW4gIDxudGltQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIHRoZSBvYmpl
Y3QtcG9zaXRpb24gQ1NTIHByb3BlcnR5IGFuaW1hdGFibGUuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5RGV0YWlsc1VwZGF0ZUJhc2UuaWRsIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheURldGFpbHNVcGRhdGVCYXNl
LmlkbAppbmRleCA2MTVlODZkZWZjMjJkMjllM2FiOWEwNGRlZDY5NjdhODhiMWQ1ZmYzLi5lNDdk
NmM4YmE5MTJjMDQ2ZDM0OTVlYjEwNTZkMWQwZTgyNzE5NzM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5RGV0YWlsc1VwZGF0ZUJhc2UuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlEZXRhaWxzVXBkYXRl
QmFzZS5pZGwKQEAgLTI1LDcgKzI1LDcgQEAKIAogWwogICAgIENvbmRpdGlvbmFsPUFQUExFX1BB
WSwKLV0gZGljdGlvbmFyeSBBcHBsZVBheURldGFpbHNVcGRhdGVCYXNlIHsKK10gZGljdGlvbmFy
eSBBcHBsZVBheURldGFpbHNVcGRhdGVCYXNlIDogQXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YSB7
CiAgICAgcmVxdWlyZWQgQXBwbGVQYXlMaW5lSXRlbSBuZXdUb3RhbDsKICAgICBzZXF1ZW5jZTxB
cHBsZVBheUxpbmVJdGVtPiBuZXdMaW5lSXRlbXM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxpbmVJdGVtRGF0YS5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5TGluZUl0ZW1EYXRhLmlkbAppbmRleCAz
ZDRlYjdkMjEzYWUwNTUyZWQ5YmY3NGNmZDk1ODRkMTE2NjM2ZTQzLi44OTRkMTEyNGNmYmExMjM4
ZDk2NmU3MjM0NTQ2MzZjYThjZjlkODkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5TGluZUl0ZW1EYXRhLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5TGluZUl0ZW1EYXRhLmlkbApAQCAtMjUsNiArMjUs
NSBAQAogCiBbCiAgICAgQ29uZGl0aW9uYWw9QVBQTEVfUEFZLAotICAgIEpTR2VuZXJhdGVUb0pT
T2JqZWN0LAogXSBkaWN0aW9uYXJ5IEFwcGxlUGF5TGluZUl0ZW1EYXRhIHsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdNZXRo
b2REYXRhLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlw
cGluZ01ldGhvZERhdGEuaWRsCmluZGV4IGMwMTVmOTk0OTBmMGVhNzg5OTBlYmFlOTgzYzRjYzdl
MWNkMGQ3ZTguLmVjZDZlNTJhOWNhZWZkNmI5Yjc0M2FmNjBjMmFlZmYyZTQ0MzgxMWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ01l
dGhvZERhdGEuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlTaGlwcGluZ01ldGhvZERhdGEuaWRsCkBAIC0yNSw3ICsyNSw1IEBACiAKIFsKICAgICBDb25k
aXRpb25hbD1BUFBMRV9QQVksCi0gICAgRXhwb3J0TWFjcm89V0VCQ09SRV9FWFBPUlQsCi0gICAg
SlNHZW5lcmF0ZVRvSlNPYmplY3QsCiBdIGRpY3Rpb25hcnkgQXBwbGVQYXlTaGlwcGluZ01ldGhv
ZERhdGEgewogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
cGF5bWVudHJlcXVlc3QvQXBwbGVQYXlNb2RpZmllci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheU1vZGlmaWVyLmgKaW5kZXggY2RmYTc3
ZTBlNzdjNTgxYjhiNTZlMDJkMzFhNmY0MGMxNWJmZjI2OC4uYTE0NGFiZGY5MmZiNzgwMTc4Mjky
MzFlNTVkZGEwNWJiNGFhMWY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheU1vZGlmaWVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheU1vZGlmaWVyLmgK
QEAgLTI3LDEyICsyNywxNiBAQAogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkgJiYgRU5BQkxFKFBB
WU1FTlRfUkVRVUVTVCkKIAorI2luY2x1ZGUgIkFwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEuaCIK
KyNpbmNsdWRlICJBcHBsZVBheUxpbmVJdGVtRGF0YS5oIgogI2luY2x1ZGUgIkFwcGxlUGF5UGF5
bWVudE1ldGhvZFR5cGUuaCIKKyNpbmNsdWRlICJBcHBsZVBheVNoaXBwaW5nTWV0aG9kLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RydWN0IEFwcGxlUGF5TW9kaWZpZXIgewotICAgIEFw
cGxlUGF5UGF5bWVudE1ldGhvZFR5cGUgcGF5bWVudE1ldGhvZFR5cGU7CitzdHJ1Y3QgQXBwbGVQ
YXlNb2RpZmllciBmaW5hbCA6IHB1YmxpYyBBcHBsZVBheURldGFpbHNVcGRhdGVEYXRhLCBwdWJs
aWMgQXBwbGVQYXlMaW5lSXRlbURhdGEgeworICAgIE9wdGlvbmFsPEFwcGxlUGF5UGF5bWVudE1l
dGhvZFR5cGU+IHBheW1lbnRNZXRob2RUeXBlOworICAgIFZlY3RvcjxBcHBsZVBheVNoaXBwaW5n
TWV0aG9kPiBhZGRpdGlvbmFsU2hpcHBpbmdPcHRpb25zOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXlt
ZW50cmVxdWVzdC9BcHBsZVBheU1vZGlmaWVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlNb2RpZmllci5pZGwKaW5kZXggMDY3ODk0
MjMxYWViY2U4MTU5MGJmMGZlYWUwNzRmMjc4OGQzYzgyMi4uNWIwMTQzNTQxMzg2OTY4NGQ3NzQy
MWNmMzExN2JjMWM4M2QzNDU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheU1vZGlmaWVyLmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5TW9kaWZpZXIu
aWRsCkBAIC0yNiw1ICsyNiw2IEBACiBbCiAgICAgQ29uZGl0aW9uYWw9QVBQTEVfUEFZJlBBWU1F
TlRfUkVRVUVTVCwKIF0gZGljdGlvbmFyeSBBcHBsZVBheU1vZGlmaWVyIHsKLSAgICByZXF1aXJl
ZCBBcHBsZVBheVBheW1lbnRNZXRob2RUeXBlIHBheW1lbnRNZXRob2RUeXBlOworICAgIEFwcGxl
UGF5UGF5bWVudE1ldGhvZFR5cGUgcGF5bWVudE1ldGhvZFR5cGU7CisgICAgc2VxdWVuY2U8QXBw
bGVQYXlTaGlwcGluZ01ldGhvZD4gYWRkaXRpb25hbFNoaXBwaW5nT3B0aW9uczsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0Fw
cGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmNwcAppbmRleCA3MzBkYzU4
YjQ5NjFkN2Q5YjQxNTQ2NzVlZDdmY2M4MWQ3NmMxMzI5Li5kNGQxZTA0Y2VkMzVjOWUyNTg1NDdm
MzQyYTc3MTk3NTlhZGIxODk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXlt
ZW50SGFuZGxlci5jcHAKQEAgLTYxLDYgKzYxLDcgQEAKICNpbmNsdWRlICJQYXltZW50QXV0aG9y
aXphdGlvblN0YXR1cy5oIgogI2luY2x1ZGUgIlBheW1lbnRDb250YWN0LmgiCiAjaW5jbHVkZSAi
UGF5bWVudENvb3JkaW5hdG9yLmgiCisjaW5jbHVkZSAiUGF5bWVudERldGFpbHNNb2RpZmllci5o
IgogI2luY2x1ZGUgIlBheW1lbnRNZXJjaGFudFNlc3Npb24uaCIKICNpbmNsdWRlICJQYXltZW50
TWV0aG9kLmgiCiAjaW5jbHVkZSAiUGF5bWVudFJlcXVlc3RVdGlsaXRpZXMuaCIKQEAgLTE0Mywx
MSArMTQ0LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHZvaWQ+IHZhbGlkYXRlKGNvbnN0IFBheW1l
bnRDdXJyZW5jeUFtb3VudCYgYW1vdW50LCBjb25zdCBTdHIKICAgICByZXR1cm4geyB9OwogfQog
Ci0jaWYgIUVOQUJMRShBUFBMRV9QQVlfTElORV9JVEVNX0RBVEEpCi1zdGF0aWMgdm9pZCBtZXJn
ZShBcHBsZVBheUxpbmVJdGVtJiwgQXBwbGVQYXlMaW5lSXRlbURhdGEmJikgeyB9Ci0jZW5kaWYg
Ly8gRU5BQkxFKEFQUExFX1BBWV9MSU5FX0lURU1fREFUQSkKLQotc3RhdGljIEV4Y2VwdGlvbk9y
PEFwcGxlUGF5TGluZUl0ZW0+IGNvbnZlcnRBbmRWYWxpZGF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBjb25zdCBQYXltZW50SXRlbSYgaXRlbSwgY29uc3QgU3RyaW5nJiBleHBl
Y3RlZEN1cnJlbmN5KQorc3RhdGljIEV4Y2VwdGlvbk9yPEFwcGxlUGF5TGluZUl0ZW0+IGNvbnZl
cnRBbmRWYWxpZGF0ZShjb25zdCBQYXltZW50SXRlbSYgaXRlbSwgY29uc3QgU3RyaW5nJiBleHBl
Y3RlZEN1cnJlbmN5KQogewogICAgIGF1dG8gZXhjZXB0aW9uID0gdmFsaWRhdGUoaXRlbS5hbW91
bnQsIGV4cGVjdGVkQ3VycmVuY3kpOwogICAgIGlmIChleGNlcHRpb24uaGFzRXhjZXB0aW9uKCkp
CkBAIC0xNTgsMzMgKzE1NSwxNSBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8QXBwbGVQYXlMaW5lSXRl
bT4gY29udmVydEFuZFZhbGlkYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmCiAgICAgbGluZUl0
ZW0uYW1vdW50ID0gaXRlbS5hbW91bnQudmFsdWU7CiAgICAgbGluZUl0ZW0udHlwZSA9IGl0ZW0u
cGVuZGluZyA/IEFwcGxlUGF5TGluZUl0ZW06OlR5cGU6OlBlbmRpbmcgOiBBcHBsZVBheUxpbmVJ
dGVtOjpUeXBlOjpGaW5hbDsKICAgICBsaW5lSXRlbS5sYWJlbCA9IGl0ZW0ubGFiZWw7Ci0KLSAg
ICBpZiAoIWl0ZW0uc2VyaWFsaXplZERhdGEuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGF1dG8mIGxl
eGljYWxHbG9iYWxPYmplY3QgPSAqY29udGV4dC5nbG9iYWxPYmplY3QoKTsKLSAgICAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpKTsK
LSAgICAgICAgSlNDOjpKU1ZhbHVlIGRhdGE7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEpTQzo6
SlNMb2NrSG9sZGVyIGxvY2soJmxleGljYWxHbG9iYWxPYmplY3QpOwotICAgICAgICAgICAgZGF0
YSA9IEpTT05QYXJzZSgmbGV4aWNhbEdsb2JhbE9iamVjdCwgaXRlbS5zZXJpYWxpemVkRGF0YSk7
Ci0gICAgICAgICAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfTsKLSAgICAgICAgfQotCi0g
ICAgICAgIGF1dG8gYXBwbGVQYXlMaW5lSXRlbURhdGEgPSBjb252ZXJ0RGljdGlvbmFyeTxBcHBs
ZVBheUxpbmVJdGVtRGF0YT4obGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShkYXRhKSk7Ci0g
ICAgICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkKLSAgICAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH07Ci0gICAgICAgIG1lcmdlKGxpbmVJdGVtLCBX
VEZNb3ZlKGFwcGxlUGF5TGluZUl0ZW1EYXRhKSk7Ci0gICAgfQotCiAgICAgcmV0dXJuIHsgV1RG
TW92ZShsaW5lSXRlbSkgfTsKIH0KIAotc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3RvcjxBcHBsZVBh
eUxpbmVJdGVtPj4gY29udmVydEFuZFZhbGlkYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIGNvbnN0IFZlY3RvcjxQYXltZW50SXRlbT4mIGxpbmVJdGVtcywgY29uc3QgU3RyaW5n
JiBleHBlY3RlZEN1cnJlbmN5KQorc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3RvcjxBcHBsZVBheUxp
bmVJdGVtPj4gY29udmVydEFuZFZhbGlkYXRlKGNvbnN0IFZlY3RvcjxQYXltZW50SXRlbT4mIGxp
bmVJdGVtcywgY29uc3QgU3RyaW5nJiBleHBlY3RlZEN1cnJlbmN5KQogewogICAgIFZlY3RvcjxB
cHBsZVBheUxpbmVJdGVtPiByZXN1bHQ7CiAgICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkobGluZUl0ZW1zLnNpemUoKSk7CiAgICAgZm9yIChhdXRvJiBsaW5lSXRlbSA6IGxpbmVJdGVt
cykgewotICAgICAgICBhdXRvIGNvbnZlcnRlZExpbmVJdGVtID0gY29udmVydEFuZFZhbGlkYXRl
KGNvbnRleHQsIGxpbmVJdGVtLCBleHBlY3RlZEN1cnJlbmN5KTsKKyAgICAgICAgYXV0byBjb252
ZXJ0ZWRMaW5lSXRlbSA9IGNvbnZlcnRBbmRWYWxpZGF0ZShsaW5lSXRlbSwgZXhwZWN0ZWRDdXJy
ZW5jeSk7CiAgICAgICAgIGlmIChjb252ZXJ0ZWRMaW5lSXRlbS5oYXNFeGNlcHRpb24oKSkKICAg
ICAgICAgICAgIHJldHVybiBjb252ZXJ0ZWRMaW5lSXRlbS5yZWxlYXNlRXhjZXB0aW9uKCk7CiAg
ICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoY29udmVydGVkTGluZUl0ZW0ucmVsZWFzZVJl
dHVyblZhbHVlKCkpOwpAQCAtMjA3LDExICsxODYsNyBAQCBzdGF0aWMgQXBwbGVQYXlTZXNzaW9u
UGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nVHlwZSBjb252ZXJ0KFBheW1lbnRTaGlwcGluZ1R5cGUg
dAogICAgIHJldHVybiBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6U2hpcHBpbmdUeXBl
OjpTaGlwcGluZzsKIH0KIAotI2lmICFFTkFCTEUoQVBQTEVfUEFZX1NISVBQSU5HX01FVEhPRF9E
QVRBKQotc3RhdGljIHZvaWQgbWVyZ2UoQXBwbGVQYXlTaGlwcGluZ01ldGhvZCYsIEFwcGxlUGF5
U2hpcHBpbmdNZXRob2REYXRhJiYpIHsgfQotI2VuZGlmCi0KLXN0YXRpYyBFeGNlcHRpb25PcjxB
cHBsZVBheVNoaXBwaW5nTWV0aG9kPiBjb252ZXJ0QW5kVmFsaWRhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgY29uc3QgUGF5bWVudFNoaXBwaW5nT3B0aW9uJiBzaGlwcGluZ09w
dGlvbiwgY29uc3QgU3RyaW5nJiBleHBlY3RlZEN1cnJlbmN5KQorc3RhdGljIEV4Y2VwdGlvbk9y
PEFwcGxlUGF5U2hpcHBpbmdNZXRob2Q+IGNvbnZlcnRBbmRWYWxpZGF0ZShjb25zdCBQYXltZW50
U2hpcHBpbmdPcHRpb24mIHNoaXBwaW5nT3B0aW9uLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkQ3Vy
cmVuY3kpCiB7CiAgICAgYXV0byBleGNlcHRpb24gPSB2YWxpZGF0ZShzaGlwcGluZ09wdGlvbi5h
bW91bnQsIGV4cGVjdGVkQ3VycmVuY3kpOwogICAgIGlmIChleGNlcHRpb24uaGFzRXhjZXB0aW9u
KCkpCkBAIC0yMjEsNTcgKzE5Niw5IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxBcHBsZVBheVNoaXBw
aW5nTWV0aG9kPiBjb252ZXJ0QW5kVmFsaWRhdGUoU2NyaXB0RXhlY3V0aW9uQ29uCiAgICAgcmVz
dWx0LmFtb3VudCA9IHNoaXBwaW5nT3B0aW9uLmFtb3VudC52YWx1ZTsKICAgICByZXN1bHQubGFi
ZWwgPSBzaGlwcGluZ09wdGlvbi5sYWJlbDsKICAgICByZXN1bHQuaWRlbnRpZmllciA9IHNoaXBw
aW5nT3B0aW9uLmlkOwotCi0gICAgaWYgKCFzaGlwcGluZ09wdGlvbi5zZXJpYWxpemVkRGF0YS5p
c0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byYgbGV4aWNhbEdsb2JhbE9iamVjdCA9ICpjb250ZXh0
Lmdsb2JhbE9iamVjdCgpOwotICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RShsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCkpOwotICAgICAgICBKU0M6OkpTVmFsdWUgZGF0YTsK
LSAgICAgICAgewotICAgICAgICAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jaygmbGV4aWNhbEds
b2JhbE9iamVjdCk7Ci0gICAgICAgICAgICBkYXRhID0gSlNPTlBhcnNlKCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBzaGlwcGluZ09wdGlvbi5zZXJpYWxpemVkRGF0YSk7Ci0gICAgICAgICAgICBpZiAo
c2NvcGUuZXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEV4
aXN0aW5nRXhjZXB0aW9uRXJyb3IgfTsKLSAgICAgICAgfQotCi0gICAgICAgIGF1dG8gYXBwbGVQ
YXlTaGlwcGluZ01ldGhvZERhdGEgPSBjb252ZXJ0RGljdGlvbmFyeTxBcHBsZVBheVNoaXBwaW5n
TWV0aG9kRGF0YT4obGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShkYXRhKSk7Ci0gICAgICAg
IGlmIChzY29wZS5leGNlcHRpb24oKSkKLSAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBF
eGlzdGluZ0V4Y2VwdGlvbkVycm9yIH07Ci0gICAgICAgIG1lcmdlKHJlc3VsdCwgV1RGTW92ZShh
cHBsZVBheVNoaXBwaW5nTWV0aG9kRGF0YSkpOwotICAgIH0KLQogICAgIHJldHVybiB7IFdURk1v
dmUocmVzdWx0KSB9OwogfQogCi0jaWYgIUVOQUJMRShBUFBMRV9QQVlfUEFZTUVOVF9ERVRBSUxT
X0RBVEEpCi1zdGF0aWMgRXhjZXB0aW9uT3I8dm9pZD4gdmFsaWRhdGUoY29uc3QgQXBwbGVQYXlE
ZXRhaWxzVXBkYXRlRGF0YSYpIHsgcmV0dXJuIHsgfTsgfQotI2VuZGlmCi0KLXN0YXRpYyBFeGNl
cHRpb25PcjxBcHBsZVBheURldGFpbHNVcGRhdGVEYXRhPiBjb252ZXJ0QW5kVmFsaWRhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgUGF5bWVudERldGFpbHNCYXNlJiBk
ZXRhaWxzKQotewotICAgIEFwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEgcmVzdWx0OwotICAgIGlm
IChkZXRhaWxzLnNlcmlhbGl6ZWREYXRhLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKLQotICAgIGF1dG8mIGxleGljYWxHbG9iYWxPYmplY3QgPSAqY29udGV4dC5nbG9iYWxPYmpl
Y3QoKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShsZXhpY2FsR2xvYmFs
T2JqZWN0LnZtKCkpOwotICAgIEpTQzo6SlNWYWx1ZSBkYXRhOwotICAgIHsKLSAgICAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9jaygmbGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgICAgIGRhdGEg
PSBKU09OUGFyc2UoJmxleGljYWxHbG9iYWxPYmplY3QsIGRldGFpbHMuc2VyaWFsaXplZERhdGEp
OwotICAgICAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9OwotICAgIH0KLQotICAgIHJlc3VsdCA9
IGNvbnZlcnREaWN0aW9uYXJ5PEFwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGE+KGxleGljYWxHbG9i
YWxPYmplY3QsIFdURk1vdmUoZGF0YSkpOwotICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkKLSAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfTsKLSAgICBh
dXRvIGV4Y2VwdGlvbiA9IHZhbGlkYXRlKHJlc3VsdCk7Ci0gICAgaWYgKGV4Y2VwdGlvbi5oYXNF
eGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbi5yZWxlYXNlRXhjZXB0aW9uKCk7
Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiBFeGNlcHRpb25Pcjx2b2lkPiBBcHBsZVBheVBh
eW1lbnRIYW5kbGVyOjpjb252ZXJ0RGF0YShKU0M6OkpTVmFsdWUgZGF0YSkKIHsKICAgICBhdXRv
IHJlcXVlc3RPckV4Y2VwdGlvbiA9IGNvbnZlcnRBbmRWYWxpZGF0ZSgqc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLCBkYXRhKTsKQEAgLTMwMCw4ICsyMjcsOCBAQCBzdGF0aWMgdm9pZCBtZXJnZVBh
eW1lbnRPcHRpb25zKGNvbnN0IFBheW1lbnRPcHRpb25zJiBvcHRpb25zLCBBcHBsZVBheVNlc3Np
b25QYQogfQogCiAjaWYgIUVOQUJMRShBUFBMRV9QQVlfUEFZTUVOVF9ERVRBSUxTX0RBVEEpCi1z
dGF0aWMgdm9pZCBtZXJnZShBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYsIEFwcGxlUGF5
RGV0YWlsc1VwZGF0ZURhdGEmJikgeyB9Ci0jZW5kaWYgLy8gRU5BQkxFKEFQUExFX1BBWV9QQVlN
RU5UX0RFVEFJTFNfREFUQSkKK3N0YXRpYyB2b2lkIG1lcmdlKEFwcGxlUGF5U2Vzc2lvblBheW1l
bnRSZXF1ZXN0JiwgQXBwbGVQYXlNb2RpZmllciYmKSB7IH0KKyNlbmRpZiAvLyAhRU5BQkxFKEFQ
UExFX1BBWV9QQVlNRU5UX0RFVEFJTFNfREFUQSkKIAogRXhjZXB0aW9uT3I8dm9pZD4gQXBwbGVQ
YXlQYXltZW50SGFuZGxlcjo6c2hvdyhEb2N1bWVudCYgZG9jdW1lbnQpCiB7CkBAIC0zMTcsMTIg
KzI0NCwxMiBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpzaG93
KERvY3VtZW50JiBkb2N1bWVudCkKICAgICBTdHJpbmcgZXhwZWN0ZWRDdXJyZW5jeSA9IGRldGFp
bHMudG90YWwuYW1vdW50LmN1cnJlbmN5OwogICAgIHJlcXVlc3Quc2V0Q3VycmVuY3lDb2RlKGV4
cGVjdGVkQ3VycmVuY3kpOwogCi0gICAgYXV0byB0b3RhbCA9IGNvbnZlcnRBbmRWYWxpZGF0ZSgq
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBkZXRhaWxzLnRvdGFsLCBleHBlY3RlZEN1cnJlbmN5
KTsKKyAgICBhdXRvIHRvdGFsID0gY29udmVydEFuZFZhbGlkYXRlKGRldGFpbHMudG90YWwsIGV4
cGVjdGVkQ3VycmVuY3kpOwogICAgIEFTU0VSVCghdG90YWwuaGFzRXhjZXB0aW9uKCkpOwogICAg
IHJlcXVlc3Quc2V0VG90YWwodG90YWwucmVsZWFzZVJldHVyblZhbHVlKCkpOwogCiAgICAgaWYg
KGRldGFpbHMuZGlzcGxheUl0ZW1zKSB7Ci0gICAgICAgIGF1dG8gY29udmVydGVkTGluZUl0ZW1z
ID0gY29udmVydEFuZFZhbGlkYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICpkZXRhaWxz
LmRpc3BsYXlJdGVtcywgZXhwZWN0ZWRDdXJyZW5jeSk7CisgICAgICAgIGF1dG8gY29udmVydGVk
TGluZUl0ZW1zID0gY29udmVydEFuZFZhbGlkYXRlKCpkZXRhaWxzLmRpc3BsYXlJdGVtcywgZXhw
ZWN0ZWRDdXJyZW5jeSk7CiAgICAgICAgIGlmIChjb252ZXJ0ZWRMaW5lSXRlbXMuaGFzRXhjZXB0
aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gY29udmVydGVkTGluZUl0ZW1zLnJlbGVhc2VFeGNl
cHRpb24oKTsKICAgICAgICAgcmVxdWVzdC5zZXRMaW5lSXRlbXMoY29udmVydGVkTGluZUl0ZW1z
LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKQEAgLTMzNSwxMCArMjYyLDExIEBAIEV4Y2VwdGlvbk9y
PHZvaWQ+IEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OnNob3coRG9jdW1lbnQmIGRvY3VtZW50KQog
ICAgICAgICByZXR1cm4gc2hpcHBpbmdNZXRob2RzLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICBy
ZXF1ZXN0LnNldFNoaXBwaW5nTWV0aG9kcyhzaGlwcGluZ01ldGhvZHMucmVsZWFzZVJldHVyblZh
bHVlKCkpOwogCi0gICAgYXV0byBhcHBsZVBheURldGFpbHNVcGRhdGVEYXRhID0gY29udmVydEFu
ZFZhbGlkYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG1fcGF5bWVudFJlcXVlc3QtPnBh
eW1lbnREZXRhaWxzKCkpOwotICAgIGlmIChhcHBsZVBheURldGFpbHNVcGRhdGVEYXRhLmhhc0V4
Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gYXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YS5yZWxl
YXNlRXhjZXB0aW9uKCk7Ci0gICAgbWVyZ2UocmVxdWVzdCwgYXBwbGVQYXlEZXRhaWxzVXBkYXRl
RGF0YS5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CisgICAgYXV0byBtb2RpZmllckV4Y2VwdGlvbiA9
IGZpcnN0QXBwbGljYWJsZU1vZGlmaWVyKCk7CisgICAgaWYgKG1vZGlmaWVyRXhjZXB0aW9uLmhh
c0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gbW9kaWZpZXJFeGNlcHRpb24ucmVsZWFzZUV4
Y2VwdGlvbigpOworICAgIGlmIChhdXRvIG1vZGlmaWVyRGF0YSA9IG1vZGlmaWVyRXhjZXB0aW9u
LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKQorICAgICAgICBtZXJnZShyZXF1ZXN0LCBXVEZNb3ZlKHN0
ZDo6Z2V0PDE+KCptb2RpZmllckRhdGEpKSk7CiAKICAgICBhdXRvIGV4Y2VwdGlvbiA9IFBheW1l
bnRSZXF1ZXN0VmFsaWRhdG9yOjp2YWxpZGF0ZShyZXF1ZXN0KTsKICAgICBpZiAoZXhjZXB0aW9u
Lmhhc0V4Y2VwdGlvbigpKQpAQCAtMzYwLDcgKzI4OCw3IEBAIHZvaWQgQXBwbGVQYXlQYXltZW50
SGFuZGxlcjo6Y2FuTWFrZVBheW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50LCBGdW5jdGlvbjx2b2lk
KGJvCiAgICAgY29tcGxldGlvbkhhbmRsZXIocGF5bWVudENvb3JkaW5hdG9yKCkuY2FuTWFrZVBh
eW1lbnRzKGRvY3VtZW50KSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFZlY3RvcjxBcHBsZVBheVNoaXBw
aW5nTWV0aG9kPj4gQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6Y29tcHV0ZVNoaXBwaW5nTWV0aG9k
cygpCitFeGNlcHRpb25PcjxWZWN0b3I8QXBwbGVQYXlTaGlwcGluZ01ldGhvZD4+IEFwcGxlUGF5
UGF5bWVudEhhbmRsZXI6OmNvbXB1dGVTaGlwcGluZ01ldGhvZHMoKSBjb25zdAogewogICAgIGF1
dG8mIGRldGFpbHMgPSBtX3BheW1lbnRSZXF1ZXN0LT5wYXltZW50RGV0YWlscygpOwogCkBAIC0z
NzAsODAgKzI5OCw2NCBAQCBFeGNlcHRpb25PcjxWZWN0b3I8QXBwbGVQYXlTaGlwcGluZ01ldGhv
ZD4+IEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OmNvbXB1dGVTaGlwcAogCiAgICAgICAgIHNoaXBw
aW5nT3B0aW9ucy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGRldGFpbHMuc2hpcHBpbmdPcHRpb25z
LT5zaXplKCkpOwogICAgICAgICBmb3IgKGF1dG8mIHNoaXBwaW5nT3B0aW9uIDogKmRldGFpbHMu
c2hpcHBpbmdPcHRpb25zKSB7Ci0gICAgICAgICAgICBhdXRvIHNoaXBwaW5nTWV0aG9kID0gY29u
dmVydEFuZFZhbGlkYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHNoaXBwaW5nT3B0aW9u
LCBjdXJyZW5jeSk7CisgICAgICAgICAgICBhdXRvIHNoaXBwaW5nTWV0aG9kID0gY29udmVydEFu
ZFZhbGlkYXRlKHNoaXBwaW5nT3B0aW9uLCBjdXJyZW5jeSk7CiAgICAgICAgICAgICBpZiAoc2hp
cHBpbmdNZXRob2QuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHNoaXBw
aW5nTWV0aG9kLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgICAgIHNoaXBwaW5nT3B0aW9u
cy51bmNoZWNrZWRBcHBlbmQoc2hpcHBpbmdNZXRob2QucmVsZWFzZVJldHVyblZhbHVlKCkpOwog
ICAgICAgICB9CiAgICAgfQogCisgICAgYXV0byBtb2RpZmllckV4Y2VwdGlvbiA9IGZpcnN0QXBw
bGljYWJsZU1vZGlmaWVyKCk7CisgICAgaWYgKG1vZGlmaWVyRXhjZXB0aW9uLmhhc0V4Y2VwdGlv
bigpKQorICAgICAgICByZXR1cm4gbW9kaWZpZXJFeGNlcHRpb24ucmVsZWFzZUV4Y2VwdGlvbigp
OworICAgIGlmIChhdXRvIG1vZGlmaWVyRGF0YSA9IG1vZGlmaWVyRXhjZXB0aW9uLnJlbGVhc2VS
ZXR1cm5WYWx1ZSgpKQorICAgICAgICBzaGlwcGluZ09wdGlvbnMuYXBwZW5kVmVjdG9yKFdURk1v
dmUoc3RkOjpnZXQ8MT4oKm1vZGlmaWVyRGF0YSkuYWRkaXRpb25hbFNoaXBwaW5nT3B0aW9ucykp
OworCiAgICAgcmV0dXJuIFdURk1vdmUoc2hpcHBpbmdPcHRpb25zKTsKIH0KIAorCisjaWYgIUVO
QUJMRShBUFBMRV9QQVlfTElORV9JVEVNX0RBVEEpCitzdGF0aWMgdm9pZCBtZXJnZShBcHBsZVBh
eUxpbmVJdGVtJiwgQXBwbGVQYXlNb2RpZmllciYmKSB7IH0KKyNlbmRpZiAvLyAhRU5BQkxFKEFQ
UExFX1BBWV9MSU5FX0lURU1fREFUQSkKKwogRXhjZXB0aW9uT3I8c3RkOjp0dXBsZTxBcHBsZVBh
eUxpbmVJdGVtLCBWZWN0b3I8QXBwbGVQYXlMaW5lSXRlbT4+PiBBcHBsZVBheVBheW1lbnRIYW5k
bGVyOjpjb21wdXRlVG90YWxBbmRMaW5lSXRlbXMoKSBjb25zdAogewogICAgIGF1dG8mIGRldGFp
bHMgPSBtX3BheW1lbnRSZXF1ZXN0LT5wYXltZW50RGV0YWlscygpOwotICAgIFN0cmluZyBjdXJy
ZW5jeSA9IGRldGFpbHMudG90YWwuYW1vdW50LmN1cnJlbmN5OworICAgIGF1dG8mIGN1cnJlbmN5
ID0gZGV0YWlscy50b3RhbC5hbW91bnQuY3VycmVuY3k7CiAKLSAgICBhdXRvIGNvbnZlcnRlZFRv
dGFsID0gY29udmVydEFuZFZhbGlkYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGRldGFp
bHMudG90YWwsIGN1cnJlbmN5KTsKKyAgICBhdXRvIGNvbnZlcnRlZFRvdGFsID0gY29udmVydEFu
ZFZhbGlkYXRlKGRldGFpbHMudG90YWwsIGN1cnJlbmN5KTsKICAgICBpZiAoY29udmVydGVkVG90
YWwuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBjb252ZXJ0ZWRUb3RhbC5yZWxlYXNl
RXhjZXB0aW9uKCk7CiAgICAgYXV0byB0b3RhbCA9IGNvbnZlcnRlZFRvdGFsLnJlbGVhc2VSZXR1
cm5WYWx1ZSgpOwogCiAgICAgVmVjdG9yPEFwcGxlUGF5TGluZUl0ZW0+IGxpbmVJdGVtczsKICAg
ICBpZiAoZGV0YWlscy5kaXNwbGF5SXRlbXMpIHsKLSAgICAgICAgYXV0byBjb252ZXJ0ZWRMaW5l
SXRlbXMgPSBjb252ZXJ0QW5kVmFsaWRhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKmRl
dGFpbHMuZGlzcGxheUl0ZW1zLCBjdXJyZW5jeSk7CisgICAgICAgIGF1dG8gY29udmVydGVkTGlu
ZUl0ZW1zID0gY29udmVydEFuZFZhbGlkYXRlKCpkZXRhaWxzLmRpc3BsYXlJdGVtcywgY3VycmVu
Y3kpOwogICAgICAgICBpZiAoY29udmVydGVkTGluZUl0ZW1zLmhhc0V4Y2VwdGlvbigpKQogICAg
ICAgICAgICAgcmV0dXJuIGNvbnZlcnRlZExpbmVJdGVtcy5yZWxlYXNlRXhjZXB0aW9uKCk7CiAg
ICAgICAgIGxpbmVJdGVtcyA9IGNvbnZlcnRlZExpbmVJdGVtcy5yZWxlYXNlUmV0dXJuVmFsdWUo
KTsKICAgICB9CiAKLSAgICBpZiAoIW1fc2VsZWN0ZWRQYXltZW50TWV0aG9kVHlwZSkKLSAgICAg
ICAgcmV0dXJuIHt7IFdURk1vdmUodG90YWwpLCBXVEZNb3ZlKGxpbmVJdGVtcykgfX07CisgICAg
YXV0byBtb2RpZmllckV4Y2VwdGlvbiA9IGZpcnN0QXBwbGljYWJsZU1vZGlmaWVyKCk7CisgICAg
aWYgKG1vZGlmaWVyRXhjZXB0aW9uLmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gbW9k
aWZpZXJFeGNlcHRpb24ucmVsZWFzZUV4Y2VwdGlvbigpOworICAgIGlmIChhdXRvIG1vZGlmaWVy
RGF0YSA9IG1vZGlmaWVyRXhjZXB0aW9uLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKSB7CisgICAgICAg
IGF1dG8mIFttb2RpZmllciwgYXBwbGVQYXlNb2RpZmllcl0gPSAqbW9kaWZpZXJEYXRhOwogCi0g
ICAgaWYgKGRldGFpbHMubW9kaWZpZXJzKSB7Ci0gICAgICAgIGF1dG8mIHNlcmlhbGl6ZWRNb2Rp
ZmllckRhdGEgPSBtX3BheW1lbnRSZXF1ZXN0LT5zZXJpYWxpemVkTW9kaWZpZXJEYXRhKCk7Ci0g
ICAgICAgIEFTU0VSVChkZXRhaWxzLm1vZGlmaWVycy0+c2l6ZSgpID09IHNlcmlhbGl6ZWRNb2Rp
ZmllckRhdGEuc2l6ZSgpKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkZXRhaWxz
Lm1vZGlmaWVycy0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGF1dG8mIG1vZGlmaWVyID0g
ZGV0YWlscy5tb2RpZmllcnMtPmF0KGkpOwotCi0gICAgICAgICAgICBhdXRvIGNvbnZlcnRlZElk
ZW50aWZpZXIgPSBjb252ZXJ0QW5kVmFsaWRhdGVQYXltZW50TWV0aG9kSWRlbnRpZmllcihtb2Rp
Zmllci5zdXBwb3J0ZWRNZXRob2RzKTsKLSAgICAgICAgICAgIGlmICghY29udmVydGVkSWRlbnRp
ZmllciB8fCAhaGFuZGxlc0lkZW50aWZpZXIoKmNvbnZlcnRlZElkZW50aWZpZXIpKQotICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICBpZiAoc2VyaWFsaXplZE1vZGlmaWVy
RGF0YVtpXS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAg
ICAgIGF1dG8mIGxleGljYWxHbG9iYWxPYmplY3QgPSAqZG9jdW1lbnQoKS5nbG9iYWxPYmplY3Qo
KTsKLSAgICAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGxleGljYWxH
bG9iYWxPYmplY3Qudm0oKSk7Ci0gICAgICAgICAgICBKU0M6OkpTVmFsdWUgZGF0YTsKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBhdXRvIGxvY2sgPSBKU0M6OkpTTG9ja0hvbGRlciB7
ICZsZXhpY2FsR2xvYmFsT2JqZWN0IH07Ci0gICAgICAgICAgICAgICAgZGF0YSA9IEpTT05QYXJz
ZSgmbGV4aWNhbEdsb2JhbE9iamVjdCwgc2VyaWFsaXplZE1vZGlmaWVyRGF0YVtpXSk7Ci0gICAg
ICAgICAgICAgICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9OwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICBhdXRvIGFwcGxlUGF5TW9kaWZpZXIgPSBjb252ZXJ0RGljdGlvbmFy
eTxBcHBsZVBheU1vZGlmaWVyPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGRhdGEpKTsK
LSAgICAgICAgICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9OwotCi0gICAgICAgICAgICBp
ZiAoYXBwbGVQYXlNb2RpZmllci5wYXltZW50TWV0aG9kVHlwZSAhPSAqbV9zZWxlY3RlZFBheW1l
bnRNZXRob2RUeXBlKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICBp
ZiAobW9kaWZpZXIudG90YWwpIHsKLSAgICAgICAgICAgICAgICBhdXRvIHRvdGFsT3ZlcnJpZGUg
PSBjb252ZXJ0QW5kVmFsaWRhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKm1vZGlmaWVy
LnRvdGFsLCBjdXJyZW5jeSk7Ci0gICAgICAgICAgICAgICAgaWYgKHRvdGFsT3ZlcnJpZGUuaGFz
RXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0b3RhbE92ZXJyaWRlLnJl
bGVhc2VFeGNlcHRpb24oKTsKLSAgICAgICAgICAgICAgICB0b3RhbCA9IHRvdGFsT3ZlcnJpZGUu
cmVsZWFzZVJldHVyblZhbHVlKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGF1dG8g
YWRkaXRpb25hbERpc3BsYXlJdGVtcyA9IGNvbnZlcnRBbmRWYWxpZGF0ZSgqc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLCBtb2RpZmllci5hZGRpdGlvbmFsRGlzcGxheUl0ZW1zLCBjdXJyZW5jeSk7
Ci0gICAgICAgICAgICBpZiAoYWRkaXRpb25hbERpc3BsYXlJdGVtcy5oYXNFeGNlcHRpb24oKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gYWRkaXRpb25hbERpc3BsYXlJdGVtcy5yZWxlYXNlRXhj
ZXB0aW9uKCk7Ci0gICAgICAgICAgICBsaW5lSXRlbXMuYXBwZW5kVmVjdG9yKGFkZGl0aW9uYWxE
aXNwbGF5SXRlbXMucmVsZWFzZVJldHVyblZhbHVlKCkpOwotICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGlmIChtb2RpZmllci50b3RhbCkgeworICAgICAgICAgICAgYXV0byB0b3RhbE92ZXJy
aWRlID0gY29udmVydEFuZFZhbGlkYXRlKCptb2RpZmllci50b3RhbCwgY3VycmVuY3kpOworICAg
ICAgICAgICAgaWYgKHRvdGFsT3ZlcnJpZGUuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRvdGFsT3ZlcnJpZGUucmVsZWFzZUV4Y2VwdGlvbigpOworICAgICAgICAgICAg
dG90YWwgPSB0b3RhbE92ZXJyaWRlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwogICAgICAgICB9CisK
KyAgICAgICAgYXV0byBhZGRpdGlvbmFsRGlzcGxheUl0ZW1zID0gY29udmVydEFuZFZhbGlkYXRl
KG1vZGlmaWVyLmFkZGl0aW9uYWxEaXNwbGF5SXRlbXMsIGN1cnJlbmN5KTsKKyAgICAgICAgaWYg
KGFkZGl0aW9uYWxEaXNwbGF5SXRlbXMuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1
cm4gYWRkaXRpb25hbERpc3BsYXlJdGVtcy5yZWxlYXNlRXhjZXB0aW9uKCk7CisgICAgICAgIGxp
bmVJdGVtcy5hcHBlbmRWZWN0b3IoYWRkaXRpb25hbERpc3BsYXlJdGVtcy5yZWxlYXNlUmV0dXJu
VmFsdWUoKSk7CisKKyAgICAgICAgbWVyZ2UodG90YWwsIFdURk1vdmUoYXBwbGVQYXlNb2RpZmll
cikpOwogICAgIH0KIAogICAgIHJldHVybiB7eyBXVEZNb3ZlKHRvdGFsKSwgV1RGTW92ZShsaW5l
SXRlbXMpIH19OwpAQCAtNTM5LDYgKzQ1MSw1NiBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBcHBsZVBh
eVBheW1lbnRIYW5kbGVyOjpjb21wdXRlUGF5bWVudE1ldGhvZEVycm9ycyhKU0M6OkpTT2JqZQog
ICAgIHJldHVybiB7IH07CiB9CiAKKyNpZiAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykKK3N0YXRp
YyBFeGNlcHRpb25Pcjx2b2lkPiB2YWxpZGF0ZShjb25zdCBBcHBsZVBheU1vZGlmaWVyJikgeyBy
ZXR1cm4geyB9OyB9CisjZW5kaWYKKworRXhjZXB0aW9uT3I8T3B0aW9uYWw8c3RkOjp0dXBsZTxQ
YXltZW50RGV0YWlsc01vZGlmaWVyLCBBcHBsZVBheU1vZGlmaWVyPj4+IEFwcGxlUGF5UGF5bWVu
dEhhbmRsZXI6OmZpcnN0QXBwbGljYWJsZU1vZGlmaWVyKCkgY29uc3QKK3sKKyAgICBhdXRvJiBk
ZXRhaWxzID0gbV9wYXltZW50UmVxdWVzdC0+cGF5bWVudERldGFpbHMoKTsKKyAgICBpZiAoIWRl
dGFpbHMubW9kaWZpZXJzKQorICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQgfTsKKworICAg
IGF1dG8mIGxleGljYWxHbG9iYWxPYmplY3QgPSAqZG9jdW1lbnQoKS5nbG9iYWxPYmplY3QoKTsK
KworICAgIGF1dG8mIHNlcmlhbGl6ZWRNb2RpZmllckRhdGEgPSBtX3BheW1lbnRSZXF1ZXN0LT5z
ZXJpYWxpemVkTW9kaWZpZXJEYXRhKCk7CisgICAgQVNTRVJUKGRldGFpbHMubW9kaWZpZXJzLT5z
aXplKCkgPT0gc2VyaWFsaXplZE1vZGlmaWVyRGF0YS5zaXplKCkpOworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgZGV0YWlscy5tb2RpZmllcnMtPnNpemUoKTsgKytpKSB7CisgICAgICAgIGF1
dG8mIG1vZGlmaWVyID0gZGV0YWlscy5tb2RpZmllcnMtPmF0KGkpOworCisgICAgICAgIGF1dG8g
Y29udmVydGVkSWRlbnRpZmllciA9IGNvbnZlcnRBbmRWYWxpZGF0ZVBheW1lbnRNZXRob2RJZGVu
dGlmaWVyKG1vZGlmaWVyLnN1cHBvcnRlZE1ldGhvZHMpOworICAgICAgICBpZiAoIWNvbnZlcnRl
ZElkZW50aWZpZXIgfHwgIWhhbmRsZXNJZGVudGlmaWVyKCpjb252ZXJ0ZWRJZGVudGlmaWVyKSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChzZXJpYWxpemVkTW9kaWZpZXJE
YXRhW2ldLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSk7Cisg
ICAgICAgIEpTQzo6SlNWYWx1ZSBkYXRhOworICAgICAgICB7CisgICAgICAgICAgICBKU0M6OkpT
TG9ja0hvbGRlciBsb2NrKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAgIGRhdGEg
PSBKU09OUGFyc2UoJmxleGljYWxHbG9iYWxPYmplY3QsIHNlcmlhbGl6ZWRNb2RpZmllckRhdGFb
aV0pOworICAgICAgICAgICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAg
IHJldHVybiBFeGNlcHRpb24oRXhpc3RpbmdFeGNlcHRpb25FcnJvcik7CisgICAgICAgIH0KKwor
ICAgICAgICBhdXRvIGFwcGxlUGF5TW9kaWZpZXIgPSBjb252ZXJ0RGljdGlvbmFyeTxBcHBsZVBh
eU1vZGlmaWVyPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAg
aWYgKHNjb3BlLmV4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbihFeGlz
dGluZ0V4Y2VwdGlvbkVycm9yKTsKKworICAgICAgICBhdXRvIHZhbGlkYXRlQXBwbGVQYXlNb2Rp
ZmllclJlc3VsdCA9IHZhbGlkYXRlKGFwcGxlUGF5TW9kaWZpZXIpOworICAgICAgICBpZiAodmFs
aWRhdGVBcHBsZVBheU1vZGlmaWVyUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAg
cmV0dXJuIHZhbGlkYXRlQXBwbGVQYXlNb2RpZmllclJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7
CisKKyAgICAgICAgaWYgKGFwcGxlUGF5TW9kaWZpZXIucGF5bWVudE1ldGhvZFR5cGUgJiYgKmFw
cGxlUGF5TW9kaWZpZXIucGF5bWVudE1ldGhvZFR5cGUgIT0gbV9zZWxlY3RlZFBheW1lbnRNZXRo
b2RUeXBlKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgcmV0dXJuIHsgeyB7IG1v
ZGlmaWVyLCBXVEZNb3ZlKGFwcGxlUGF5TW9kaWZpZXIpIH0gfSB9OworICAgIH0KKworICAgIHJl
dHVybiB7IFdURjo6bnVsbG9wdCB9OworfQorCiBFeGNlcHRpb25Pcjx2b2lkPiBBcHBsZVBheVBh
eW1lbnRIYW5kbGVyOjpkZXRhaWxzVXBkYXRlZChQYXltZW50UmVxdWVzdDo6VXBkYXRlUmVhc29u
IHJlYXNvbiwgU3RyaW5nJiYgZXJyb3IsIEFkZHJlc3NFcnJvcnMmJiBhZGRyZXNzRXJyb3JzLCBQ
YXllckVycm9yRmllbGRzJiYgcGF5ZXJFcnJvcnMsIEpTQzo6SlNPYmplY3QqIHBheW1lbnRNZXRo
b2RFcnJvcnMpCiB7CiAgICAgdXNpbmcgUmVhc29uID0gUGF5bWVudFJlcXVlc3Q6OlVwZGF0ZVJl
YXNvbjsKQEAgLTU3NSw4ICs1MzcsOCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBcHBsZVBheVBheW1l
bnRIYW5kbGVyOjptZXJjaGFudFZhbGlkYXRpb25Db21wbGV0ZWQoSlNDOjpKU1ZhbAogfQogCiAj
aWYgIUVOQUJMRShBUFBMRV9QQVlfUEFZTUVOVF9ERVRBSUxTX0RBVEEpCi1zdGF0aWMgdm9pZCBt
ZXJnZShBcHBsZVBheURldGFpbHNVcGRhdGVCYXNlJiwgQXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0
YSYmKSB7IH0KLSNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZX1BBWU1FTlRfREVUQUlMU19EQVRB
KQorc3RhdGljIHZvaWQgbWVyZ2UoQXBwbGVQYXlEZXRhaWxzVXBkYXRlQmFzZSYsIEFwcGxlUGF5
TW9kaWZpZXImJikgeyB9CisjZW5kaWYgLy8gIUVOQUJMRShBUFBMRV9QQVlfUEFZTUVOVF9ERVRB
SUxTX0RBVEEpCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OnNo
aXBwaW5nQWRkcmVzc1VwZGF0ZWQoVmVjdG9yPFJlZlB0cjxBcHBsZVBheUVycm9yPj4mJiBlcnJv
cnMpCiB7CkBAIC01OTYsMTAgKzU1OCwxMSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBcHBsZVBheVBh
eW1lbnRIYW5kbGVyOjpzaGlwcGluZ0FkZHJlc3NVcGRhdGVkKFZlY3RvcjxSZWZQdHI8QQogICAg
ICAgICByZXR1cm4gbmV3VG90YWxBbmRMaW5lSXRlbXMucmVsZWFzZUV4Y2VwdGlvbigpOwogICAg
IHN0ZDo6dGllKHVwZGF0ZS5uZXdUb3RhbCwgdXBkYXRlLm5ld0xpbmVJdGVtcykgPSBuZXdUb3Rh
bEFuZExpbmVJdGVtcy5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKIAotICAgIGF1dG8gYXBwbGVQYXlE
ZXRhaWxzVXBkYXRlRGF0YSA9IGNvbnZlcnRBbmRWYWxpZGF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCBtX3BheW1lbnRSZXF1ZXN0LT5wYXltZW50RGV0YWlscygpKTsKLSAgICBpZiAoYXBw
bGVQYXlEZXRhaWxzVXBkYXRlRGF0YS5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIGFw
cGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEucmVsZWFzZUV4Y2VwdGlvbigpOwotICAgIG1lcmdlKHVw
ZGF0ZSwgYXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YS5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7Cisg
ICAgYXV0byBtb2RpZmllckV4Y2VwdGlvbiA9IGZpcnN0QXBwbGljYWJsZU1vZGlmaWVyKCk7Cisg
ICAgaWYgKG1vZGlmaWVyRXhjZXB0aW9uLmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4g
bW9kaWZpZXJFeGNlcHRpb24ucmVsZWFzZUV4Y2VwdGlvbigpOworICAgIGlmIChhdXRvIG1vZGlm
aWVyRGF0YSA9IG1vZGlmaWVyRXhjZXB0aW9uLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKQorICAgICAg
ICBtZXJnZSh1cGRhdGUsIFdURk1vdmUoc3RkOjpnZXQ8MT4oKm1vZGlmaWVyRGF0YSkpKTsKIAog
ICAgIHBheW1lbnRDb29yZGluYXRvcigpLmNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9u
KFdURk1vdmUodXBkYXRlKSk7CiAgICAgcmV0dXJuIHsgfTsKQEAgLTYxNywxMCArNTgwLDExIEBA
IEV4Y2VwdGlvbk9yPHZvaWQ+IEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OnNoaXBwaW5nT3B0aW9u
VXBkYXRlZCgpCiAgICAgICAgIHJldHVybiBuZXdUb3RhbEFuZExpbmVJdGVtcy5yZWxlYXNlRXhj
ZXB0aW9uKCk7CiAgICAgc3RkOjp0aWUodXBkYXRlLm5ld1RvdGFsLCB1cGRhdGUubmV3TGluZUl0
ZW1zKSA9IG5ld1RvdGFsQW5kTGluZUl0ZW1zLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwogCi0gICAg
YXV0byBhcHBsZVBheURldGFpbHNVcGRhdGVEYXRhID0gY29udmVydEFuZFZhbGlkYXRlKCpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksIG1fcGF5bWVudFJlcXVlc3QtPnBheW1lbnREZXRhaWxzKCkp
OwotICAgIGlmIChhcHBsZVBheURldGFpbHNVcGRhdGVEYXRhLmhhc0V4Y2VwdGlvbigpKQotICAg
ICAgICByZXR1cm4gYXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YS5yZWxlYXNlRXhjZXB0aW9uKCk7
Ci0gICAgbWVyZ2UodXBkYXRlLCBhcHBsZVBheURldGFpbHNVcGRhdGVEYXRhLnJlbGVhc2VSZXR1
cm5WYWx1ZSgpKTsKKyAgICBhdXRvIG1vZGlmaWVyRXhjZXB0aW9uID0gZmlyc3RBcHBsaWNhYmxl
TW9kaWZpZXIoKTsKKyAgICBpZiAobW9kaWZpZXJFeGNlcHRpb24uaGFzRXhjZXB0aW9uKCkpCisg
ICAgICAgIHJldHVybiBtb2RpZmllckV4Y2VwdGlvbi5yZWxlYXNlRXhjZXB0aW9uKCk7CisgICAg
aWYgKGF1dG8gbW9kaWZpZXJEYXRhID0gbW9kaWZpZXJFeGNlcHRpb24ucmVsZWFzZVJldHVyblZh
bHVlKCkpCisgICAgICAgIG1lcmdlKHVwZGF0ZSwgV1RGTW92ZShzdGQ6OmdldDwxPigqbW9kaWZp
ZXJEYXRhKSkpOwogCiAgICAgcGF5bWVudENvb3JkaW5hdG9yKCkuY29tcGxldGVTaGlwcGluZ01l
dGhvZFNlbGVjdGlvbihXVEZNb3ZlKHVwZGF0ZSkpOwogICAgIHJldHVybiB7IH07CkBAIC02NDUs
MTAgKzYwOSwxMSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpw
YXltZW50TWV0aG9kVXBkYXRlZChWZWN0b3I8UmVmUHRyPEFwcAogICAgICAgICAgICAgcmV0dXJu
IG5ld1RvdGFsQW5kTGluZUl0ZW1zLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgc3RkOjp0
aWUodXBkYXRlLm5ld1RvdGFsLCB1cGRhdGUubmV3TGluZUl0ZW1zKSA9IG5ld1RvdGFsQW5kTGlu
ZUl0ZW1zLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwogCi0gICAgICAgIGF1dG8gYXBwbGVQYXlEZXRh
aWxzVXBkYXRlRGF0YSA9IGNvbnZlcnRBbmRWYWxpZGF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLCBtX3BheW1lbnRSZXF1ZXN0LT5wYXltZW50RGV0YWlscygpKTsKLSAgICAgICAgaWYgKGFw
cGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICByZXR1
cm4gYXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YS5yZWxlYXNlRXhjZXB0aW9uKCk7Ci0gICAgICAg
IG1lcmdlKHVwZGF0ZSwgYXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YS5yZWxlYXNlUmV0dXJuVmFs
dWUoKSk7CisgICAgICAgIGF1dG8gbW9kaWZpZXJFeGNlcHRpb24gPSBmaXJzdEFwcGxpY2FibGVN
b2RpZmllcigpOworICAgICAgICBpZiAobW9kaWZpZXJFeGNlcHRpb24uaGFzRXhjZXB0aW9uKCkp
CisgICAgICAgICAgICByZXR1cm4gbW9kaWZpZXJFeGNlcHRpb24ucmVsZWFzZUV4Y2VwdGlvbigp
OworICAgICAgICBpZiAoYXV0byBtb2RpZmllckRhdGEgPSBtb2RpZmllckV4Y2VwdGlvbi5yZWxl
YXNlUmV0dXJuVmFsdWUoKSkKKyAgICAgICAgICAgIG1lcmdlKHVwZGF0ZSwgV1RGTW92ZShzdGQ6
OmdldDwxPigqbW9kaWZpZXJEYXRhKSkpOwogCiAgICAgICAgIHBheW1lbnRDb29yZGluYXRvcigp
LmNvbXBsZXRlUGF5bWVudE1ldGhvZE1vZGVDaGFuZ2UoV1RGTW92ZSh1cGRhdGUpKTsKICAgICAg
ICAgcmV0dXJuIHsgfTsKQEAgLTY2NywxMCArNjMyLDExIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEFw
cGxlUGF5UGF5bWVudEhhbmRsZXI6OnBheW1lbnRNZXRob2RVcGRhdGVkKFZlY3RvcjxSZWZQdHI8
QXBwCiAgICAgICAgIHJldHVybiBuZXdUb3RhbEFuZExpbmVJdGVtcy5yZWxlYXNlRXhjZXB0aW9u
KCk7CiAgICAgc3RkOjp0aWUodXBkYXRlLm5ld1RvdGFsLCB1cGRhdGUubmV3TGluZUl0ZW1zKSA9
IG5ld1RvdGFsQW5kTGluZUl0ZW1zLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwogCi0gICAgYXV0byBh
cHBsZVBheURldGFpbHNVcGRhdGVEYXRhID0gY29udmVydEFuZFZhbGlkYXRlKCpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksIG1fcGF5bWVudFJlcXVlc3QtPnBheW1lbnREZXRhaWxzKCkpOwotICAg
IGlmIChhcHBsZVBheURldGFpbHNVcGRhdGVEYXRhLmhhc0V4Y2VwdGlvbigpKQotICAgICAgICBy
ZXR1cm4gYXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YS5yZWxlYXNlRXhjZXB0aW9uKCk7Ci0gICAg
bWVyZ2UodXBkYXRlLCBhcHBsZVBheURldGFpbHNVcGRhdGVEYXRhLnJlbGVhc2VSZXR1cm5WYWx1
ZSgpKTsKKyAgICBhdXRvIG1vZGlmaWVyRXhjZXB0aW9uID0gZmlyc3RBcHBsaWNhYmxlTW9kaWZp
ZXIoKTsKKyAgICBpZiAobW9kaWZpZXJFeGNlcHRpb24uaGFzRXhjZXB0aW9uKCkpCisgICAgICAg
IHJldHVybiBtb2RpZmllckV4Y2VwdGlvbi5yZWxlYXNlRXhjZXB0aW9uKCk7CisgICAgaWYgKGF1
dG8gbW9kaWZpZXJEYXRhID0gbW9kaWZpZXJFeGNlcHRpb24ucmVsZWFzZVJldHVyblZhbHVlKCkp
CisgICAgICAgIG1lcmdlKHVwZGF0ZSwgV1RGTW92ZShzdGQ6OmdldDwxPigqbW9kaWZpZXJEYXRh
KSkpOwogCiAgICAgcGF5bWVudENvb3JkaW5hdG9yKCkuY29tcGxldGVQYXltZW50TWV0aG9kU2Vs
ZWN0aW9uKFdURk1vdmUodXBkYXRlKSk7CiAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXlt
ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVx
dWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmgKaW5kZXggZjlhNjJjYjZjMGQ1MDljNGI3ODVj
NjIzNGE1ZWY4ZGExNmQyOTQ5OS4uODAwZTc3YjkyNGJmZmIwZjk3MTk0NDM0MjQxOGVkMDQ2YTNj
Y2EzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50
cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmgKQEAg
LTMzLDEzICszMywxNyBAQAogI2luY2x1ZGUgIlBheW1lbnRIYW5kbGVyLmgiCiAjaW5jbHVkZSAi
UGF5bWVudFJlcXVlc3QuaCIKICNpbmNsdWRlICJQYXltZW50U2Vzc2lvbi5oIgorI2luY2x1ZGUg
PHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUg
PHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBBcHBsZVBheUVycm9yOwogY2xhc3MgUGF5bWVudENvb3JkaW5hdG9y
Oworc3RydWN0IEFwcGxlUGF5TW9kaWZpZXI7CitzdHJ1Y3QgUGF5bWVudERldGFpbHNNb2RpZmll
cjsKIAogY2xhc3MgQXBwbGVQYXlQYXltZW50SGFuZGxlciBmaW5hbCA6IHB1YmxpYyBQYXltZW50
SGFuZGxlciwgcHVibGljIFBheW1lbnRTZXNzaW9uLCBwcml2YXRlIENvbnRleHREZXN0cnVjdGlv
bk9ic2VydmVyIHsKIHB1YmxpYzoKQEAgLTU0LDEzICs1OCwxNCBAQCBwcml2YXRlOgogICAgIERv
Y3VtZW50JiBkb2N1bWVudCgpIGNvbnN0OwogICAgIFBheW1lbnRDb29yZGluYXRvciYgcGF5bWVu
dENvb3JkaW5hdG9yKCkgY29uc3Q7CiAKLSAgICBFeGNlcHRpb25PcjxWZWN0b3I8QXBwbGVQYXlT
aGlwcGluZ01ldGhvZD4+IGNvbXB1dGVTaGlwcGluZ01ldGhvZHMoKTsKKyAgICBFeGNlcHRpb25P
cjxWZWN0b3I8QXBwbGVQYXlTaGlwcGluZ01ldGhvZD4+IGNvbXB1dGVTaGlwcGluZ01ldGhvZHMo
KSBjb25zdDsKICAgICBFeGNlcHRpb25PcjxzdGQ6OnR1cGxlPEFwcGxlUGF5TGluZUl0ZW0sIFZl
Y3RvcjxBcHBsZVBheUxpbmVJdGVtPj4+IGNvbXB1dGVUb3RhbEFuZExpbmVJdGVtcygpIGNvbnN0
OwogICAgIFZlY3RvcjxSZWZQdHI8QXBwbGVQYXlFcnJvcj4+IGNvbXB1dGVFcnJvcnMoU3RyaW5n
JiYgZXJyb3IsIEFkZHJlc3NFcnJvcnMmJiwgUGF5ZXJFcnJvckZpZWxkcyYmLCBKU0M6OkpTT2Jq
ZWN0KiBwYXltZW50TWV0aG9kRXJyb3JzKSBjb25zdDsKICAgICBWZWN0b3I8UmVmUHRyPEFwcGxl
UGF5RXJyb3I+PiBjb21wdXRlRXJyb3JzKEpTQzo6SlNPYmplY3QqIHBheW1lbnRNZXRob2RFcnJv
cnMpIGNvbnN0OwogICAgIHZvaWQgY29tcHV0ZUFkZHJlc3NFcnJvcnMoU3RyaW5nJiYgZXJyb3Is
IEFkZHJlc3NFcnJvcnMmJiwgVmVjdG9yPFJlZlB0cjxBcHBsZVBheUVycm9yPj4mKSBjb25zdDsK
ICAgICB2b2lkIGNvbXB1dGVQYXllckVycm9ycyhQYXllckVycm9yRmllbGRzJiYsIFZlY3RvcjxS
ZWZQdHI8QXBwbGVQYXlFcnJvcj4+JikgY29uc3Q7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gY29t
cHV0ZVBheW1lbnRNZXRob2RFcnJvcnMoSlNDOjpKU09iamVjdCogcGF5bWVudE1ldGhvZEVycm9y
cywgVmVjdG9yPFJlZlB0cjxBcHBsZVBheUVycm9yPj4mKSBjb25zdDsKKyAgICBFeGNlcHRpb25P
cjxPcHRpb25hbDxzdGQ6OnR1cGxlPFBheW1lbnREZXRhaWxzTW9kaWZpZXIsIEFwcGxlUGF5TW9k
aWZpZXI+Pj4gZmlyc3RBcHBsaWNhYmxlTW9kaWZpZXIoKSBjb25zdDsKIAogICAgIEV4Y2VwdGlv
bk9yPHZvaWQ+IHNoaXBwaW5nQWRkcmVzc1VwZGF0ZWQoVmVjdG9yPFJlZlB0cjxBcHBsZVBheUVy
cm9yPj4mJiBlcnJvcnMpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNoaXBwaW5nT3B0aW9uVXBk
YXRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVz
dC9QYXltZW50RGV0YWlsc0Jhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJl
cXVlc3QvUGF5bWVudERldGFpbHNCYXNlLmgKaW5kZXggOTBmODdkMjA2MWUwNmQ1OThhNGMzMzgz
YTYzYWNjODFhMGE2MGVkMS4uZTE3M2Q2ODVhNzlhNmI5OTRjODMwYWZlNDNhZTMzNjkxMjc1ZDA1
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXlt
ZW50RGV0YWlsc0Jhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1
ZXN0L1BheW1lbnREZXRhaWxzQmFzZS5oCkBAIC0zMCw4ICszMCw2IEBACiAjaW5jbHVkZSAiUGF5
bWVudERldGFpbHNNb2RpZmllci5oIgogI2luY2x1ZGUgIlBheW1lbnRJdGVtLmgiCiAjaW5jbHVk
ZSAiUGF5bWVudFNoaXBwaW5nT3B0aW9uLmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNP
YmplY3QuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmcuaD4KICNpbmNsdWRlIDx3
dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CkBAIC00MiwxMCArNDAsNiBAQCBzdHJ1Y3QgUGF5bWVudERldGFpbHNC
YXNlIHsKICAgICBPcHRpb25hbDxWZWN0b3I8UGF5bWVudEl0ZW0+PiBkaXNwbGF5SXRlbXM7CiAg
ICAgT3B0aW9uYWw8VmVjdG9yPFBheW1lbnRTaGlwcGluZ09wdGlvbj4+IHNoaXBwaW5nT3B0aW9u
czsKICAgICBPcHRpb25hbDxWZWN0b3I8UGF5bWVudERldGFpbHNNb2RpZmllcj4+IG1vZGlmaWVy
czsKLSAgICBKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0PiBkYXRhOwotCi0gICAgLy8gTm90IGZy
b20gdGhlIElETC4gU2V0IGJ5IGBkYXRhYCB3aGVuIHRoaXMgaXMgdmFsaWRhdGVkIGJ5IGBQYXlt
ZW50UmVxdWVzdGAuCi0gICAgU3RyaW5nIHNlcmlhbGl6ZWREYXRhOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50
cmVxdWVzdC9QYXltZW50RGV0YWlsc0Jhc2UuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9w
YXltZW50cmVxdWVzdC9QYXltZW50RGV0YWlsc0Jhc2UuaWRsCmluZGV4IGQ4MGM0OWQ5MjA1NjYx
ZGU4MGE4ZTQ3NmMzMDQxMzkxYTU2ZDVjZGMuLjQ0OWUzZWU5OGQyOTEwN2VjMGNlZTZjYzQ1Njhi
MzA4ZDM1NmY1ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJl
cXVlc3QvUGF5bWVudERldGFpbHNCYXNlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3BheW1lbnRyZXF1ZXN0L1BheW1lbnREZXRhaWxzQmFzZS5pZGwKQEAgLTI5LDUgKzI5LDQgQEAK
ICAgICBzZXF1ZW5jZTxQYXltZW50SXRlbT4gZGlzcGxheUl0ZW1zOwogICAgIHNlcXVlbmNlPFBh
eW1lbnRTaGlwcGluZ09wdGlvbj4gc2hpcHBpbmdPcHRpb25zOwogICAgIHNlcXVlbmNlPFBheW1l
bnREZXRhaWxzTW9kaWZpZXI+IG1vZGlmaWVyczsKLSAgICBvYmplY3QgZGF0YTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRJdGVt
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRJdGVtLmgK
aW5kZXggZjE1YjllYWVhZWU0NjRlNzg5OTEyYzdkZTZmNDBiNjdiNzZhNzJiMy4uZDU3OTQ3NmZm
NDgzMTI2NWMzYjdjM2Q2NTE0OWRkYzA1NTRiYTZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudEl0ZW0uaApAQCAtMjgsOCArMjgsNiBA
QAogI2lmIEVOQUJMRShQQVlNRU5UX1JFUVVFU1QpCiAKICNpbmNsdWRlICJQYXltZW50Q3VycmVu
Y3lBbW91bnQuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdC5oPgotI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCwxMCArMzYsNiBAQCBzdHJ1Y3QgUGF5
bWVudEl0ZW0gewogICAgIFN0cmluZyBsYWJlbDsKICAgICBQYXltZW50Q3VycmVuY3lBbW91bnQg
YW1vdW50OwogICAgIGJvb2wgcGVuZGluZyB7IGZhbHNlIH07Ci0gICAgSlNDOjpTdHJvbmc8SlND
OjpKU09iamVjdD4gZGF0YTsKLQotICAgIC8vIE5vdCBmcm9tIHRoZSBJREwuIFNldCBieSBgZGF0
YWAgd2hlbiB0aGlzIGlzIHZhbGlkYXRlZCBieSBgUGF5bWVudFJlcXVlc3RgLgotICAgIFN0cmlu
ZyBzZXJpYWxpemVkRGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudEl0ZW0uaWRs
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50SXRlbS5pZGwK
aW5kZXggMWMwYmM2NmZlMzE1ZTI2YWM4NWIxOTM3OGNiNzA2YzE1MzNlNWUxMi4uZGExYWU3ZjNh
M2Y3OGI1YzI3MzVhYzY1ZWZiMGFjZGE5MmRhZmUzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50SXRlbS5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50SXRlbS5pZGwKQEAgLTI5LDUgKzI5
LDQgQEAKICAgICByZXF1aXJlZCBET01TdHJpbmcgbGFiZWw7CiAgICAgcmVxdWlyZWQgUGF5bWVu
dEN1cnJlbmN5QW1vdW50IGFtb3VudDsKICAgICBib29sZWFuIHBlbmRpbmcgPSBmYWxzZTsKLSAg
ICBvYmplY3QgZGF0YTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Bh
eW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
cGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwCmluZGV4IGVmODUyNmU5ZTdmMWVhM2Vh
Yzk3NDViODEyMzY5Yzg1OGI5YjA2ZTUuLmViYmE4NDc2Yzk1YzY2Y2Q5YmYwZDdlMzY4ZGI0ZTQz
ZDRhZDMwMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVl
c3QvUGF5bWVudFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVu
dHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwCkBAIC05OSw3ICs5OSw3IEBAIHN0YXRpYyBFeGNl
cHRpb25Pcjx2b2lkPiBjaGVja0FuZENhbm9uaWNhbGl6ZUFtb3VudChQYXltZW50Q3VycmVuY3lB
bW91bnQmIGFtb3VuCiB9CiAKIGVudW0gY2xhc3MgTmVnYXRpdmVBbW91bnRBbGxvd2VkIHsgWWVz
LCBObyB9Owotc3RhdGljIEV4Y2VwdGlvbk9yPHZvaWQ+IGNoZWNrQW5kQ2Fub25pY2FsaXplUGF5
bWVudEl0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUGF5bWVudEl0ZW0mIGl0
ZW0sIE5lZ2F0aXZlQW1vdW50QWxsb3dlZCBuZWdhdGl2ZUFtb3VudEFsbG93ZWQpCitzdGF0aWMg
RXhjZXB0aW9uT3I8dm9pZD4gY2hlY2tBbmRDYW5vbmljYWxpemVQYXltZW50SXRlbShQYXltZW50
SXRlbSYgaXRlbSwgTmVnYXRpdmVBbW91bnRBbGxvd2VkIG5lZ2F0aXZlQW1vdW50QWxsb3dlZCkK
IHsKICAgICBhdXRvIGV4Y2VwdGlvbiA9IGNoZWNrQW5kQ2Fub25pY2FsaXplQW1vdW50KGl0ZW0u
YW1vdW50KTsKICAgICBpZiAoZXhjZXB0aW9uLmhhc0V4Y2VwdGlvbigpKQpAQCAtMTA4LDIyICsx
MDgsMTQgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHZvaWQ+IGNoZWNrQW5kQ2Fub25pY2FsaXplUGF5
bWVudEl0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYKICAgICBpZiAobmVnYXRpdmVBbW91bnRB
bGxvd2VkID09IE5lZ2F0aXZlQW1vdW50QWxsb3dlZDo6Tm8gJiYgaXRlbS5hbW91bnQudmFsdWVb
MF0gPT0gJy0nKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiVG90YWwg
Y3VycmVuY3kgdmFsdWVzIGNhbm5vdCBiZSBuZWdhdGl2ZS4iX3MgfTsKIAotICAgIGlmIChpdGVt
LmRhdGEpIHsKLSAgICAgICAgYXV0byBkYXRhUmVzdWx0ID0gY2hlY2tBbmRDYW5vbmljYWxpemVE
YXRhKGNvbnRleHQsIGl0ZW0pOwotICAgICAgICBpZiAoZGF0YVJlc3VsdC5oYXNFeGNlcHRpb24o
KSkKLSAgICAgICAgICAgIHJldHVybiBkYXRhUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKLQot
ICAgICAgICBpdGVtLnNlcmlhbGl6ZWREYXRhID0gZGF0YVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFs
dWUoKTsKLSAgICB9Ci0KICAgICByZXR1cm4geyB9OwogfQogCiAvLyBJbXBsZW1lbnRzIHRoZSAi
Y2hlY2sgYW5kIGNhbm9uaWNhbGl6ZSB0b3RhbCIgdmFsaWRpdHkgY2hlY2tlcgogLy8gaHR0cHM6
Ly93d3cudzMub3JnL1RSL3BheW1lbnQtcmVxdWVzdC8jZGZuLWNoZWNrLWFuZC1jYW5vbmljYWxp
emUtdG90YWwKLXN0YXRpYyBFeGNlcHRpb25Pcjx2b2lkPiBjaGVja0FuZENhbm9uaWNhbGl6ZVRv
dGFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFBheW1lbnRJdGVtJiB0b3RhbCkK
K3N0YXRpYyBFeGNlcHRpb25Pcjx2b2lkPiBjaGVja0FuZENhbm9uaWNhbGl6ZVRvdGFsKFBheW1l
bnRJdGVtJiB0b3RhbCkKIHsKLSAgICByZXR1cm4gY2hlY2tBbmRDYW5vbmljYWxpemVQYXltZW50
SXRlbShjb250ZXh0LCB0b3RhbCwgTmVnYXRpdmVBbW91bnRBbGxvd2VkOjpObyk7CisgICAgcmV0
dXJuIGNoZWNrQW5kQ2Fub25pY2FsaXplUGF5bWVudEl0ZW0odG90YWwsIE5lZ2F0aXZlQW1vdW50
QWxsb3dlZDo6Tm8pOwogfQogCiAvLyBJbXBsZW1lbnRzICJ2YWxpZGF0ZSBhIHN0YW5kYXJkaXpl
ZCBwYXltZW50IG1ldGhvZCBpZGVudGlmaWVyIgpAQCAtMjA2LDcgKzE5OCw3IEBAIHN0YXRpYyBF
eGNlcHRpb25PcjxzdGQ6OnR1cGxlPFN0cmluZywgVmVjdG9yPFN0cmluZz4+PiBjaGVja0FuZENh
bm9uaWNhbGl6ZURldGFpCiB7CiAgICAgaWYgKGRldGFpbHMuZGlzcGxheUl0ZW1zKSB7CiAgICAg
ICAgIGZvciAoYXV0byYgaXRlbSA6ICpkZXRhaWxzLmRpc3BsYXlJdGVtcykgewotICAgICAgICAg
ICAgYXV0byBwYXltZW50SXRlbVJlc3VsdCA9IGNoZWNrQW5kQ2Fub25pY2FsaXplUGF5bWVudEl0
ZW0oY29udGV4dCwgaXRlbSwgTmVnYXRpdmVBbW91bnRBbGxvd2VkOjpZZXMpOworICAgICAgICAg
ICAgYXV0byBwYXltZW50SXRlbVJlc3VsdCA9IGNoZWNrQW5kQ2Fub25pY2FsaXplUGF5bWVudEl0
ZW0oaXRlbSwgTmVnYXRpdmVBbW91bnRBbGxvd2VkOjpZZXMpOwogICAgICAgICAgICAgaWYgKHBh
eW1lbnRJdGVtUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybiBw
YXltZW50SXRlbVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAgIH0KQEAgLTIzMywx
NCArMjI1LDYgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dHVwbGU8U3RyaW5nLCBWZWN0b3I8
U3RyaW5nPj4+IGNoZWNrQW5kQ2Fub25pY2FsaXplRGV0YWkKICAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC5hZGRDb25zb2xlTWVzc2FnZShKU0M6Ok1lc3NhZ2VTb3VyY2U6OlBheW1lbnRSZXF1
ZXN0LCBKU0M6Ok1lc3NhZ2VMZXZlbDo6V2FybmluZywgIldlYktpdCBjdXJyZW50bHkgdXNlcyB0
aGUgZmlyc3Qgc2hpcHBpbmcgb3B0aW9uIGV2ZW4gaWYgb3RoZXIgc2hpcHBpbmcgb3B0aW9ucyBh
cmUgbWFya2VkIGFzIHNlbGVjdGVkLiJfcyk7CiAgICAgICAgICAgICAgICAgICAgIGRpZExvZyA9
IHRydWU7CiAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKHNoaXBwaW5n
T3B0aW9uLmRhdGEpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBkYXRhUmVzdWx0ID0gY2hl
Y2tBbmRDYW5vbmljYWxpemVEYXRhKGNvbnRleHQsIHNoaXBwaW5nT3B0aW9uKTsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKGRhdGFSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZGF0YVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7Ci0KLSAgICAg
ICAgICAgICAgICAgICAgc2hpcHBpbmdPcHRpb24uc2VyaWFsaXplZERhdGEgPSBkYXRhUmVzdWx0
LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
ICAgICAgICAgfSBlbHNlIGlmIChpc1VwZGF0ZSA9PSBJc1VwZGF0ZTo6Tm8pCiAgICAgICAgICAg
ICBkZXRhaWxzLnNoaXBwaW5nT3B0aW9ucyA9IHsgeyB9IH07CkBAIC0yNTgsMTMgKzI0MiwxMyBA
QCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp0dXBsZTxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+Pj4g
Y2hlY2tBbmRDYW5vbmljYWxpemVEZXRhaQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBp
ZiAobW9kaWZpZXIudG90YWwpIHsKLSAgICAgICAgICAgICAgICBhdXRvIHRvdGFsUmVzdWx0ID0g
Y2hlY2tBbmRDYW5vbmljYWxpemVUb3RhbChjb250ZXh0LCAqbW9kaWZpZXIudG90YWwpOworICAg
ICAgICAgICAgICAgIGF1dG8gdG90YWxSZXN1bHQgPSBjaGVja0FuZENhbm9uaWNhbGl6ZVRvdGFs
KCptb2RpZmllci50b3RhbCk7CiAgICAgICAgICAgICAgICAgaWYgKHRvdGFsUmVzdWx0Lmhhc0V4
Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG90YWxSZXN1bHQucmVsZWFz
ZUV4Y2VwdGlvbigpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmb3IgKGF1dG8mIGl0
ZW0gOiBtb2RpZmllci5hZGRpdGlvbmFsRGlzcGxheUl0ZW1zKSB7Ci0gICAgICAgICAgICAgICAg
YXV0byBwYXltZW50SXRlbVJlc3VsdCA9IGNoZWNrQW5kQ2Fub25pY2FsaXplUGF5bWVudEl0ZW0o
Y29udGV4dCwgaXRlbSwgTmVnYXRpdmVBbW91bnRBbGxvd2VkOjpZZXMpOworICAgICAgICAgICAg
ICAgIGF1dG8gcGF5bWVudEl0ZW1SZXN1bHQgPSBjaGVja0FuZENhbm9uaWNhbGl6ZVBheW1lbnRJ
dGVtKGl0ZW0sIE5lZ2F0aXZlQW1vdW50QWxsb3dlZDo6WWVzKTsKICAgICAgICAgICAgICAgICBp
ZiAocGF5bWVudEl0ZW1SZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBwYXltZW50SXRlbVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAgICAg
ICB9CkBAIC0yODIsMTQgKzI2Niw2IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnR1cGxlPFN0
cmluZywgVmVjdG9yPFN0cmluZz4+PiBjaGVja0FuZENhbm9uaWNhbGl6ZURldGFpCiAgICAgfSBl
bHNlIGlmIChpc1VwZGF0ZSA9PSBJc1VwZGF0ZTo6Tm8pCiAgICAgICAgIGRldGFpbHMubW9kaWZp
ZXJzID0geyB7IH0gfTsKIAotICAgIGlmIChkZXRhaWxzLmRhdGEpIHsKLSAgICAgICAgYXV0byBk
YXRhUmVzdWx0ID0gY2hlY2tBbmRDYW5vbmljYWxpemVEYXRhKGNvbnRleHQsIGRldGFpbHMpOwot
ICAgICAgICBpZiAoZGF0YVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgICAgIHJldHVy
biBkYXRhUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKLQotICAgICAgICBkZXRhaWxzLnNlcmlh
bGl6ZWREYXRhID0gZGF0YVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICB9Ci0KICAg
ICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKFdURk1vdmUoc2VsZWN0ZWRTaGlwcGluZ09wdGlvbiks
IFdURk1vdmUoc2VyaWFsaXplZE1vZGlmaWVyRGF0YSkpOwogfQogCkBAIC0zNTMsNyArMzI5LDcg
QEAgRXhjZXB0aW9uT3I8UmVmPFBheW1lbnRSZXF1ZXN0Pj4gUGF5bWVudFJlcXVlc3Q6OmNyZWF0
ZShEb2N1bWVudCYgZG9jdW1lbnQsIFZlY3QKICAgICAgICAgc2VyaWFsaXplZE1ldGhvZERhdGEu
dW5jaGVja2VkQXBwZW5kKHsgV1RGTW92ZSgqaWRlbnRpZmllciksIFdURk1vdmUoc2VyaWFsaXpl
ZERhdGEpIH0pOwogICAgIH0KIAotICAgIGF1dG8gdG90YWxSZXN1bHQgPSBjaGVja0FuZENhbm9u
aWNhbGl6ZVRvdGFsKGRvY3VtZW50LCBkZXRhaWxzLnRvdGFsKTsKKyAgICBhdXRvIHRvdGFsUmVz
dWx0ID0gY2hlY2tBbmRDYW5vbmljYWxpemVUb3RhbChkZXRhaWxzLnRvdGFsKTsKICAgICBpZiAo
dG90YWxSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiB0b3RhbFJlc3VsdC5y
ZWxlYXNlRXhjZXB0aW9uKCk7CiAKQEAgLTY2NCw3ICs2NDAsNyBAQCB2b2lkIFBheW1lbnRSZXF1
ZXN0OjpzZXR0bGVEZXRhaWxzUHJvbWlzZShVcGRhdGVSZWFzb24gcmVhc29uKQogICAgIH0KIAog
ICAgIGlmIChkZXRhaWxzVXBkYXRlLnRvdGFsKSB7Ci0gICAgICAgIGF1dG8gdG90YWxSZXN1bHQg
PSBjaGVja0FuZENhbm9uaWNhbGl6ZVRvdGFsKGNvbnRleHQsICpkZXRhaWxzVXBkYXRlLnRvdGFs
KTsKKyAgICAgICAgYXV0byB0b3RhbFJlc3VsdCA9IGNoZWNrQW5kQ2Fub25pY2FsaXplVG90YWwo
KmRldGFpbHNVcGRhdGUudG90YWwpOwogICAgICAgICBpZiAodG90YWxSZXN1bHQuaGFzRXhjZXB0
aW9uKCkpIHsKICAgICAgICAgICAgIGFib3J0V2l0aEV4Y2VwdGlvbih0b3RhbFJlc3VsdC5yZWxl
YXNlRXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNjkxLDggKzY2Nyw2IEBA
IHZvaWQgUGF5bWVudFJlcXVlc3Q6OnNldHRsZURldGFpbHNQcm9taXNlKFVwZGF0ZVJlYXNvbiBy
ZWFzb24pCiAgICAgICAgIG1fZGV0YWlscy5tb2RpZmllcnMgPSBXVEZNb3ZlKCpkZXRhaWxzVXBk
YXRlLm1vZGlmaWVycyk7CiAgICAgICAgIG1fc2VyaWFsaXplZE1vZGlmaWVyRGF0YSA9IFdURk1v
dmUoc3RkOjpnZXQ8MT4oc2hpcHBpbmdPcHRpb25BbmRNb2RpZmllckRhdGEpKTsKICAgICB9Ci0g
ICAgaWYgKCFkZXRhaWxzVXBkYXRlLnNlcmlhbGl6ZWREYXRhLmlzRW1wdHkoKSkKLSAgICAgICAg
bV9kZXRhaWxzLnNlcmlhbGl6ZWREYXRhID0gV1RGTW92ZShkZXRhaWxzVXBkYXRlLnNlcmlhbGl6
ZWREYXRhKTsKIAogICAgIGF1dG8gcmVzdWx0ID0gYWN0aXZlUGF5bWVudEhhbmRsZXIoKS0+ZGV0
YWlsc1VwZGF0ZWQocmVhc29uLCBXVEZNb3ZlKGRldGFpbHNVcGRhdGUuZXJyb3IpLCBXVEZNb3Zl
KGRldGFpbHNVcGRhdGUuc2hpcHBpbmdBZGRyZXNzRXJyb3JzKSwgV1RGTW92ZShkZXRhaWxzVXBk
YXRlLnBheWVyRXJyb3JzKSwgZGV0YWlsc1VwZGF0ZS5wYXltZW50TWV0aG9kRXJyb3JzLmdldCgp
KTsKICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRTaGlwcGluZ09wdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50U2hpcHBpbmdPcHRp
b24uaAppbmRleCBmOWJjNTY5NDM3NjY4NDU4YTdmYTUwNjY2NzU2MjI1ZTE3MzhmNTY4Li4yZGRk
NTFiYTVkYWJmMjUyNzExNTMwY2JhMGM0N2Q3NDY4M2JjNmMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRTaGlwcGluZ09wdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFNoaXBwaW5n
T3B0aW9uLmgKQEAgLTI4LDggKzI4LDYgQEAKICNpZiBFTkFCTEUoUEFZTUVOVF9SRVFVRVNUKQog
CiAjaW5jbHVkZSAiUGF5bWVudEN1cnJlbmN5QW1vdW50LmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNPYmplY3QuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmcuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
MzksMTAgKzM3LDYgQEAgc3RydWN0IFBheW1lbnRTaGlwcGluZ09wdGlvbiB7CiAgICAgU3RyaW5n
IGxhYmVsOwogICAgIFBheW1lbnRDdXJyZW5jeUFtb3VudCBhbW91bnQ7CiAgICAgYm9vbCBzZWxl
Y3RlZCB7IGZhbHNlIH07Ci0gICAgSlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4gZGF0YTsKLQot
ICAgIC8vIE5vdCBmcm9tIHRoZSBJREwuIFNldCBieSBgZGF0YWAgd2hlbiB0aGlzIGlzIHZhbGlk
YXRlZCBieSBgUGF5bWVudFJlcXVlc3RgLgotICAgIFN0cmluZyBzZXJpYWxpemVkRGF0YTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFNoaXBwaW5nT3B0aW9uLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFNoaXBwaW5nT3B0aW9uLmlkbApp
bmRleCA4ZWVjNmY2MzJhZWU5NTJlMDZlOTUwYmIzNTE2OWM0NzJjNGIzN2MxLi4wZjY4OWI4ZjRm
MTRkMzhjMDMzYTMxZDFmMDhmYTE0YWZjNzFlOTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRTaGlwcGluZ09wdGlvbi5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50U2hpcHBpbmdPcHRp
b24uaWRsCkBAIC0zMCw1ICszMCw0IEBACiAgICAgcmVxdWlyZWQgRE9NU3RyaW5nIGxhYmVsOwog
ICAgIHJlcXVpcmVkIFBheW1lbnRDdXJyZW5jeUFtb3VudCBhbW91bnQ7CiAgICAgYm9vbGVhbiBz
ZWxlY3RlZCA9IGZhbHNlOwotICAgIG9iamVjdCBkYXRhOwogfTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>