<?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>178609</bug_id>
          
          <creation_ts>2017-10-20 16:52:41 -0700</creation_ts>
          <short_desc>[Payment Request] Resolve PaymentRequest.show()&apos;s accept promise when a payment is authorized</short_desc>
          <delta_ts>2017-10-23 14:57:07 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>174796</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Andy Estes">aestes</reporter>
          <assigned_to name="Andy Estes">aestes</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1362918</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-10-20 16:52:41 -0700</bug_when>
    <thetext>[Payment Request] Resolve PaymentRequest.show()&apos;s accept promise when a payment is authorized</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362921</commentid>
    <comment_count>1</comment_count>
      <attachid>324468</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-10-20 17:00:38 -0700</bug_when>
    <thetext>Created attachment 324468
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362925</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-10-20 17:03:07 -0700</bug_when>
    <thetext>Attachment 324468 did not pass style-queue:


ERROR: Source/WebCore/Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:74:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 41 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363303</commentid>
    <comment_count>3</comment_count>
      <attachid>324468</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-10-23 09:49:00 -0700</bug_when>
    <thetext>Comment on attachment 324468
Patch

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

&gt; Source/WebCore/Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:287
&gt; +    auto address = PaymentAddress::create();
&gt; +    address-&gt;setCountry(contact.countryCode);

Could we make a constructor that takes these values so if we add one later we won&apos;t forget to add setters in all the necessary places?

&gt; Source/WebCore/Modules/paymentrequest/PaymentAddress.h:38
&gt; +    static Ref&lt;PaymentAddress&gt; create()

Yeah, let&apos;s add a meaningful constructor instead of a bunch of setters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363361</commentid>
    <comment_count>4</comment_count>
      <attachid>324576</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-10-23 12:29:38 -0700</bug_when>
    <thetext>Created attachment 324576
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363363</commentid>
    <comment_count>5</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-10-23 12:30:31 -0700</bug_when>
    <thetext>rdar://problem/33542813</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363364</commentid>
    <comment_count>6</comment_count>
      <attachid>324576</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-23 12:33:14 -0700</bug_when>
    <thetext>Comment on attachment 324576
Patch

Rejecting attachment 324576 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 324576, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
 file LayoutTests/http/tests/paymentrequest/payment-response-payerName-attribute.https.html
patching file LayoutTests/http/tests/paymentrequest/payment-response-payerPhone-attribute.https-expected.txt
patching file LayoutTests/http/tests/paymentrequest/payment-response-payerPhone-attribute.https.html
patching file LayoutTests/http/tests/paymentrequest/resources/helpers.js

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.webkit.org/results/4960745</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363378</commentid>
    <comment_count>7</comment_count>
      <attachid>324582</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-10-23 13:24:11 -0700</bug_when>
    <thetext>Created attachment 324582
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363386</commentid>
    <comment_count>8</comment_count>
      <attachid>324582</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-23 14:00:50 -0700</bug_when>
    <thetext>Comment on attachment 324582
Patch

Clearing flags on attachment: 324582

Committed r223855: &lt;https://trac.webkit.org/changeset/223855&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363387</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-23 14:00:52 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324468</attachid>
            <date>2017-10-20 17:00:38 -0700</date>
            <delta_ts>2017-10-23 12:29:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178609-20171020170038.patch</filename>
            <type>text/plain</type>
            <size>93739</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzNzk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjAyMzJlNjA0Zjk2MGIz
Mjg0YzdlNjcxMjYzOTQ3NDM0ZmIzYWU1Yi4uZGVkNGYxNDhkM2RlZWQxYTFkNTc1NzgwODc1OGM5
MzE1ZDEwMzFlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDE3LTEwLTIwICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbUGF5bWVudCBSZXF1ZXN0XSBS
ZXNvbHZlIFBheW1lbnRSZXF1ZXN0LnNob3coKSdzIGFjY2VwdCBwcm9taXNlIHdoZW4gYSBwYXlt
ZW50IGlzIGF1dGhvcml6ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3ODYwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyB0aGUgbG9naWMgZm9yIHJlc29sdmluZyBQ
YXltZW50UmVxdWVzdC5zaG93KCkncyBhY2NlcHQgcHJvbWlzZSB3aGVuCisgICAgICAgIHRoZSB1
c2VyIGF1dGhvcml6ZXMgYSBwYXltZW50LCBhbmQgaW1wbGVtZW50cyBQYXltZW50UmVzcG9uc2Uu
Y29tcGxldGUoKS4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9w
YXltZW50LWFkZHJlc3MtYXR0cmlidXRlcy1hbmQtdG9KU09OLW1ldGhvZC5odHRwcy5odG1sCisg
ICAgICAgICAgICAgICBodHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2Ut
Y29tcGxldGUtbWV0aG9kLmh0dHBzLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvcGF5
bWVudHJlcXVlc3QvcGF5bWVudC1yZXNwb25zZS1tZXRob2ROYW1lLWF0dHJpYnV0ZS5odHRwcy5o
dG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVz
cG9uc2UtcGF5ZXJFbWFpbC1hdHRyaWJ1dGUuaHR0cHMuaHRtbAorICAgICAgICAgICAgICAgaHR0
cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLXBheWVyTmFtZS1hdHRyaWJ1
dGUuaHR0cHMuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9w
YXltZW50LXJlc3BvbnNlLXBheWVyUGhvbmUtYXR0cmlidXRlLmh0dHBzLmh0bWwKKworICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheVBheW1lbnRDb250YWN0Lmg6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
Lmg6CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50OjpQYXltZW50KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlBheW1lbnQ6OnBrUGF5bWVudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
ICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29udGFjdC5oOgorICAgICAgICAoV2ViQ29yZTo6
UGF5bWVudENvbnRhY3Q6OlBheW1lbnRDb250YWN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlBheW1lbnRDb250YWN0Ojpwa0NvbnRhY3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IE1vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudENvbnRhY3RDb2NvYS5tbToKKyAgICAgICAg
KFdlYkNvcmU6OmNvbnZlcnQpOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJl
cXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
ZVBheVBheW1lbnRIYW5kbGVyOjpoYXNBY3RpdmVTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OkFwcGxlUGF5UGF5bWVudEhhbmRsZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbGVQYXlQYXltZW50SGFuZGxlcjo6ZG9jdW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbGVQYXlQYXltZW50SGFuZGxlcjo6cGF5bWVudENvb3JkaW5hdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OmNvbnZlcnREYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OnNob3cpOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbGVQYXlQYXltZW50SGFuZGxlcjo6aGlkZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpjYW5NYWtlUGF5bWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpjb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3Jl
Ojpjb252ZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OmRp
ZEF1dGhvcml6ZVBheW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlQYXltZW50SGFu
ZGxlcjo6ZGlkU2VsZWN0U2hpcHBpbmdNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGVQ
YXlQYXltZW50SGFuZGxlcjo6ZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0KToKKyAgICAgICAgKiBN
b2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuaDoK
KyAgICAgICAgKiBNb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRBZGRyZXNzLmg6CisgICAg
ICAgICogTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50QWRkcmVzcy5pZGw6CisgICAgICAg
ICogTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50SGFuZGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQYXltZW50SGFuZGxlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3BheW1l
bnRyZXF1ZXN0L1BheW1lbnRIYW5kbGVyLmg6CisgICAgICAgICogTW9kdWxlcy9wYXltZW50cmVx
dWVzdC9QYXltZW50UmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50UmVxdWVz
dDo6c2hvdyk6CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6c3RvcCk6CisgICAg
ICAgIChXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6Y2FuTWFrZVBheW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OmNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OnNoaXBwaW5nQWRkcmVz
c0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OnNoaXBwaW5nT3B0
aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6YWNjZXB0KToK
KyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0Ojpjb21wbGV0ZSk6CisgICAgICAgICog
TW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5oOgorICAgICAgICAqIE1vZHVs
ZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBheW1lbnRSZXNwb25zZTo6UGF5bWVudFJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
eW1lbnRSZXNwb25zZTo6Y29tcGxldGUpOgorICAgICAgICAqIE1vZHVsZXMvcGF5bWVudHJlcXVl
c3QvUGF5bWVudFJlc3BvbnNlLmg6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkludGVybmFsczo6SW50ZXJuYWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFs
czo6bW9ja1BheW1lbnRDb29yZGluYXRvciBjb25zdCk6CisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisgICAgICAgICogdGVz
dGluZy9Nb2NrUGF5bWVudC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Bh
eW1lbnRyZXF1ZXN0L1BheW1lbnRSZXNwb25zZS5jcHAuCisgICAgICAgICogdGVzdGluZy9Nb2Nr
UGF5bWVudEFkZHJlc3MuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXlt
ZW50cmVxdWVzdC9QYXltZW50UmVzcG9uc2UuY3BwLgorICAgICAgICAqIHRlc3RpbmcvTW9ja1Bh
eW1lbnRBZGRyZXNzLmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXlt
ZW50cmVxdWVzdC9QYXltZW50UmVzcG9uc2UuY3BwLgorICAgICAgICAqIHRlc3RpbmcvTW9ja1Bh
eW1lbnRDb250YWN0Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVu
dHJlcXVlc3QvUGF5bWVudFJlc3BvbnNlLmNwcC4KKyAgICAgICAgKiB0ZXN0aW5nL01vY2tQYXlt
ZW50Q29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1BheW1lbnRDb29yZGlu
YXRvcjo6Y2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja1BheW1lbnRDb29yZGluYXRvcjo6b3BlblBheW1lbnRTZXR1cCk6CisgICAgICAgIChXZWJD
b3JlOjpkaXNwYXRjaElmU2hvd2luZyk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUGF5bWVudENv
b3JkaW5hdG9yOjpzaG93UGF5bWVudFVJKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tQYXltZW50
Q29vcmRpbmF0b3I6OmNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlUGF5bWVudFNlc3Npb24pOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja1BheW1lbnRDb29yZGluYXRvcjo6YWJvcnRQYXltZW50U2Vzc2lv
bik6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUGF5bWVudENvb3JkaW5hdG9yOjpjYW5jZWxQYXlt
ZW50U2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUGF5bWVudENvb3JkaW5hdG9yOjpw
YXltZW50Q29vcmRpbmF0b3JEZXN0cm95ZWQpOgorICAgICAgICAqIHRlc3RpbmcvTW9ja1BheW1l
bnRDb29yZGluYXRvci5oOgorICAgICAgICAqIHRlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRv
ci5pZGw6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3Qv
UGF5bWVudFJlc3BvbnNlLmNwcC4KKwogMjAxNy0xMC0yMCAgS2VpdGggTWlsbGVyICA8a2VpdGhf
bWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBmaXggd2luZG93cyBidWls
ZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGYxNWU5MjNhOGRhOGM0OTJmMjkz
OGExYzU2NTY3MDhjMmNiNjA5ZGUuLmIyMGM3MGJjYjNmOGFhMDFmNTA2MjA0NmY0ZThjMTc5MTJm
YjgyYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysr
IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtOTA4LDYgKzkwOCw4IEBA
IEpTX0JJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL3Rlc3RpbmcvTW9ja0NETUZhY3Rv
cnkuaWRsIFwKICAgICAkKFdlYkNvcmUpL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
cy5pZGwgXAogICAgICQoV2ViQ29yZSkvdGVzdGluZy9Nb2NrUGFnZU92ZXJsYXkuaWRsIFwKKyAg
ICAkKFdlYkNvcmUpL3Rlc3RpbmcvTW9ja1BheW1lbnRBZGRyZXNzLmlkbCBcCisgICAgJChXZWJD
b3JlKS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3IuaWRsIFwKICAgICAkKFdlYkNvcmUp
L3Rlc3RpbmcvVHlwZUNvbnZlcnNpb25zLmlkbCBcCiAgICAgJChXZWJDb3JlKS93b3JrZXJzL0Fi
c3RyYWN0V29ya2VyLmlkbCBcCiAgICAgJChXZWJDb3JlKS93b3JrZXJzL0RlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlLmlkbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5UGF5bWVudENvbnRhY3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlQYXltZW50Q29udGFjdC5oCmluZGV4IGViNmUyOGZjZjQ3NjVlZWQy
YjI3YzUyNDY1ZDdiMDFiOGEyMWUwM2IuLmRiYTk5ZmY4ZTA0MDM0OWQ5NDJhNDM4NDkyODVjZTRj
N2U1NjczNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlQYXltZW50Q29udGFjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvQXBwbGVQYXlQYXltZW50Q29udGFjdC5oCkBAIC0zOCw4ICszOCwxMCBAQCBzdHJ1Y3QgQXBw
bGVQYXlQYXltZW50Q29udGFjdCB7CiAgICAgU3RyaW5nIGVtYWlsQWRkcmVzczsKICAgICBTdHJp
bmcgZ2l2ZW5OYW1lOwogICAgIFN0cmluZyBmYW1pbHlOYW1lOworICAgIFN0cmluZyBsb2NhbGl6
ZWROYW1lOwogICAgIFN0cmluZyBwaG9uZXRpY0dpdmVuTmFtZTsKICAgICBTdHJpbmcgcGhvbmV0
aWNGYW1pbHlOYW1lOworICAgIFN0cmluZyBsb2NhbGl6ZWRQaG9uZXRpY05hbWU7CiAgICAgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gYWRkcmVzc0xpbmVzOwogICAgIFN0cmluZyBzdWJM
b2NhbGl0eTsKICAgICBTdHJpbmcgbG9jYWxpdHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvUGF5bWVudC5oCmluZGV4IDczZmYyYjlkZmZiMGY3ZmVmN2M0OWVmY2IwOWEyNmFiMTBi
YzhiZjEuLmM5MDU0ZDczZmQzMTAxNTg2YzE5YzQwYzg3NzY1MmM0ODI0YTkxNDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudC5oCkBAIC0zNSw3ICszNSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEFwcGxlUGF5UGF5bWVudDsKIAotY2xhc3MgUGF5
bWVudCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBQYXltZW50IHsKIHB1YmxpYzoKICAgICBQYXlt
ZW50KCkgPSBkZWZhdWx0OwogCkBAIC00NCw3ICs0NCw5IEBAIHB1YmxpYzoKICAgICB7CiAgICAg
fQogCi0gICAgQXBwbGVQYXlQYXltZW50IHRvQXBwbGVQYXlQYXltZW50KCkgY29uc3Q7CisgICAg
dmlydHVhbCB+UGF5bWVudCgpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgQXBwbGVQYXlQYXlt
ZW50IHRvQXBwbGVQYXlQYXltZW50KCkgY29uc3Q7CiAKICAgICBQS1BheW1lbnQgKnBrUGF5bWVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fcGtQYXltZW50LmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvbnRhY3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvbnRhY3QuaAppbmRleCAwZTdkNjEyN2Zh
NjJiNmQxMDRjMzkzYWM1NzVmMjZlM2NiYWE1MzNmLi5lYzAxMGFjZjk3ZmMyZDdhZjNmZDU5ZDU5
ZWU1M2ZlODBjY2RhOTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L1BheW1lbnRDb250YWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9QYXltZW50Q29udGFjdC5oCkBAIC0zNiwxNiArMzYsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdHJ1Y3QgQXBwbGVQYXlQYXltZW50Q29udGFjdDsKIAotY2xhc3MgUGF5bWVudENvbnRh
Y3QgeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgUGF5bWVudENvbnRhY3QgewogcHVibGljOgogICAg
IFBheW1lbnRDb250YWN0KCkgPSBkZWZhdWx0OwogICAgIGV4cGxpY2l0IFBheW1lbnRDb250YWN0
KFBLQ29udGFjdCAqcGtDb250YWN0KQogICAgICAgICA6IG1fcGtDb250YWN0KHBrQ29udGFjdCkK
ICAgICB7CiAgICAgfQorICAgIHZpcnR1YWwgflBheW1lbnRDb250YWN0KCkgPSBkZWZhdWx0Owog
CiAgICAgc3RhdGljIFBheW1lbnRDb250YWN0IGZyb21BcHBsZVBheVBheW1lbnRDb250YWN0KHVu
c2lnbmVkIHZlcnNpb24sIGNvbnN0IEFwcGxlUGF5UGF5bWVudENvbnRhY3QmKTsKLSAgICBBcHBs
ZVBheVBheW1lbnRDb250YWN0IHRvQXBwbGVQYXlQYXltZW50Q29udGFjdCgpIGNvbnN0OworICAg
IHZpcnR1YWwgQXBwbGVQYXlQYXltZW50Q29udGFjdCB0b0FwcGxlUGF5UGF5bWVudENvbnRhY3Qo
KSBjb25zdDsKIAogICAgIFBLQ29udGFjdCAqcGtDb250YWN0KCkgY29uc3QgeyByZXR1cm4gbV9w
a0NvbnRhY3QuZ2V0KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9jb2NvYS9QYXltZW50Q29udGFjdENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29udGFjdENvY29hLm1tCmluZGV4IDA3YmJlY2Vi
ZDNmMGE0ZTNiY2NiMDhmYTllNGFkMDAzYTYwZjNlZmUuLjBkODIyNDkwMzIwOTEyNzUyMDQ3NzFi
OWMyNWVjMTU3MGRmYjM0YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvY29jb2EvUGF5bWVudENvbnRhY3RDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb250YWN0Q29jb2EubW0KQEAgLTE4OSwxMCAr
MTg5LDEyIEBAIHN0YXRpYyBBcHBsZVBheVBheW1lbnRDb250YWN0IGNvbnZlcnQoUEtDb250YWN0
ICpjb250YWN0KQogICAgIE5TUGVyc29uTmFtZUNvbXBvbmVudHMgKm5hbWUgPSBjb250YWN0Lm5h
bWU7CiAgICAgcmVzdWx0LmdpdmVuTmFtZSA9IG5hbWUuZ2l2ZW5OYW1lOwogICAgIHJlc3VsdC5m
YW1pbHlOYW1lID0gbmFtZS5mYW1pbHlOYW1lOworICAgIHJlc3VsdC5sb2NhbGl6ZWROYW1lID0g
W05TUGVyc29uTmFtZUNvbXBvbmVudHNGb3JtYXR0ZXIgbG9jYWxpemVkU3RyaW5nRnJvbVBlcnNv
bk5hbWVDb21wb25lbnRzOm5hbWUgc3R5bGU6TlNQZXJzb25OYW1lQ29tcG9uZW50c0Zvcm1hdHRl
clN0eWxlRGVmYXVsdCBvcHRpb25zOjBdOwogCiAgICAgTlNQZXJzb25OYW1lQ29tcG9uZW50cyAq
cGhvbmV0aWNOYW1lID0gbmFtZS5waG9uZXRpY1JlcHJlc2VudGF0aW9uOwogICAgIHJlc3VsdC5w
aG9uZXRpY0dpdmVuTmFtZSA9IHBob25ldGljTmFtZS5naXZlbk5hbWU7CiAgICAgcmVzdWx0LnBo
b25ldGljRmFtaWx5TmFtZSA9IHBob25ldGljTmFtZS5mYW1pbHlOYW1lOworICAgIHJlc3VsdC5s
b2NhbGl6ZWRQaG9uZXRpY05hbWUgPSBbTlNQZXJzb25OYW1lQ29tcG9uZW50c0Zvcm1hdHRlciBs
b2NhbGl6ZWRTdHJpbmdGcm9tUGVyc29uTmFtZUNvbXBvbmVudHM6bmFtZSBzdHlsZTpOU1BlcnNv
bk5hbWVDb21wb25lbnRzRm9ybWF0dGVyU3R5bGVEZWZhdWx0IG9wdGlvbnM6TlNQZXJzb25OYW1l
Q29tcG9uZW50c0Zvcm1hdHRlclBob25ldGljXTsKIAogICAgIENOUG9zdGFsQWRkcmVzcyAqcG9z
dGFsQWRkcmVzcyA9IGNvbnRhY3QucG9zdGFsQWRkcmVzczsKICAgICBpZiAocG9zdGFsQWRkcmVz
cy5zdHJlZXQubGVuZ3RoKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRI
YW5kbGVyLmNwcAppbmRleCAxYjg5ZGUwMDdjMDkzY2Y3NDk2OTU1YTQ3NjAwOGVmN2YyZDkwOWU1
Li42NDUxNGE3ZWY5NWE3NTFlY2QyNjIzMWRiYTIyZGJlMTQzM2JmOTZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5
bWVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5
bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5jcHAKQEAgLTMxLDE2ICszMSwyMSBA
QAogI2luY2x1ZGUgIkFwcGxlUGF5Q29udGFjdEZpZWxkLmgiCiAjaW5jbHVkZSAiQXBwbGVQYXlN
ZXJjaGFudENhcGFiaWxpdHkuaCIKICNpbmNsdWRlICJBcHBsZVBheU1lcmNoYW50VmFsaWRhdGlv
bkV2ZW50LmgiCisjaW5jbHVkZSAiQXBwbGVQYXlQYXltZW50LmgiCiAjaW5jbHVkZSAiQXBwbGVQ
YXlTZXNzaW9uUGF5bWVudFJlcXVlc3QuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1
ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJKU0FwcGxlUGF5UGF5bWVudC5oIgogI2luY2x1
ZGUgIkpTQXBwbGVQYXlSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiTGlua0ljb25Db2xsZWN0b3IuaCIK
ICNpbmNsdWRlICJNYWluRnJhbWUuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGF5
bWVudC5oIgorI2luY2x1ZGUgIlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLmgiCiAjaW5jbHVk
ZSAiUGF5bWVudENvbnRhY3QuaCIKICNpbmNsdWRlICJQYXltZW50Q29vcmRpbmF0b3IuaCIKICNp
bmNsdWRlICJQYXltZW50UmVxdWVzdFZhbGlkYXRvci5oIgorI2luY2x1ZGUgIlBheW1lbnRSZXNw
b25zZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTYxLDEyICs2NiwyNSBAQCBzdGF0aWMgaW5saW5lIFBheW1lbnRDb29yZGluYXRvciYgcGF5bWVu
dENvb3JkaW5hdG9yKERvY3VtZW50JiBkb2N1bWVudCkKIAogYm9vbCBBcHBsZVBheVBheW1lbnRI
YW5kbGVyOjpoYXNBY3RpdmVTZXNzaW9uKERvY3VtZW50JiBkb2N1bWVudCkKIHsKLSAgICByZXR1
cm4gcGF5bWVudENvb3JkaW5hdG9yKGRvY3VtZW50KS5oYXNBY3RpdmVTZXNzaW9uKCk7CisgICAg
cmV0dXJuIFdlYkNvcmU6OnBheW1lbnRDb29yZGluYXRvcihkb2N1bWVudCkuaGFzQWN0aXZlU2Vz
c2lvbigpOwogfQogCi1BcHBsZVBheVBheW1lbnRIYW5kbGVyOjpBcHBsZVBheVBheW1lbnRIYW5k
bGVyKFBheW1lbnRSZXF1ZXN0JiBwYXltZW50UmVxdWVzdCkKLSAgICA6IG1fcGF5bWVudFJlcXVl
c3QgeyBwYXltZW50UmVxdWVzdCB9CitBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpBcHBsZVBheVBh
eW1lbnRIYW5kbGVyKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgUGF5bWVudFJlcXVlc3Q6Ok1l
dGhvZElkZW50aWZpZXImIGlkZW50aWZpZXIsIFBheW1lbnRSZXF1ZXN0JiBwYXltZW50UmVxdWVz
dCkKKyAgICA6IFdlYkNvcmU6OkNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsgJmRvY3VtZW50
IH0KKyAgICAsIG1faWRlbnRpZmllciB7IGlkZW50aWZpZXIgfQorICAgICwgbV9wYXltZW50UmVx
dWVzdCB7IHBheW1lbnRSZXF1ZXN0IH0KIHsKKyAgICBBU1NFUlQoaGFuZGxlc0lkZW50aWZpZXIo
bV9pZGVudGlmaWVyKSk7Cit9CisKK0RvY3VtZW50JiBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpk
b2N1bWVudCgpCit7CisgICAgcmV0dXJuIGRvd25jYXN0PERvY3VtZW50Pigqc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKTsKK30KKworUGF5bWVudENvb3JkaW5hdG9yJiBBcHBsZVBheVBheW1lbnRI
YW5kbGVyOjpwYXltZW50Q29vcmRpbmF0b3IoKQoreworICAgIHJldHVybiBXZWJDb3JlOjpwYXlt
ZW50Q29vcmRpbmF0b3IoZG9jdW1lbnQoKSk7CiB9CiAKIHN0YXRpYyBFeGNlcHRpb25Pcjx2b2lk
PiB2YWxpZGF0ZShjb25zdCBQYXltZW50Q3VycmVuY3lBbW91bnQmIGFtb3VudCwgY29uc3QgU3Ry
aW5nJiBleHBlY3RlZEN1cnJlbmN5KQpAQCAtMTQwLDEwICsxNTgsMTEgQEAgc3RhdGljIEV4Y2Vw
dGlvbk9yPEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZD4gY29u
dmVydEFuZFZhbGkKICAgICByZXR1cm4geyBXVEZNb3ZlKHJlc3VsdCkgfTsKIH0KIAotRXhjZXB0
aW9uT3I8dm9pZD4gQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6Y29udmVydERhdGEoSlNDOjpFeGVj
U3RhdGUmIGV4ZWNTdGF0ZSwgSlNDOjpKU1ZhbHVlJiYgZGF0YSkKK0V4Y2VwdGlvbk9yPHZvaWQ+
IEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OmNvbnZlcnREYXRhKEpTQzo6SlNWYWx1ZSYmIGRhdGEp
CiB7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjU3RhdGUu
dm0oKSk7Ci0gICAgYXV0byBhcHBsZVBheVJlcXVlc3QgPSBjb252ZXJ0RGljdGlvbmFyeTxBcHBs
ZVBheVJlcXVlc3Q+KGV4ZWNTdGF0ZSwgV1RGTW92ZShkYXRhKSk7CisgICAgYXV0byYgY29udGV4
dCA9ICpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRShjb250ZXh0LnZtKCkpOworICAgIGF1dG8gYXBwbGVQYXlSZXF1ZXN0
ID0gY29udmVydERpY3Rpb25hcnk8QXBwbGVQYXlSZXF1ZXN0PigqY29udGV4dC5leGVjU3RhdGUo
KSwgV1RGTW92ZShkYXRhKSk7CiAgICAgaWYgKHRocm93U2NvcGUuZXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH07CiAKQEAgLTE1
MSw3ICsxNzAsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpj
b252ZXJ0RGF0YShKU0M6OkV4ZWNTdGF0ZSYgZXhlY1N0YXRlLAogICAgIHJldHVybiB7IH07CiB9
CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OnNob3coRG9jdW1l
bnQmIGRvY3VtZW50KQorRXhjZXB0aW9uT3I8dm9pZD4gQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6
c2hvdygpCiB7CiAgICAgYXV0byB2YWxpZGF0ZWRSZXF1ZXN0ID0gY29udmVydEFuZFZhbGlkYXRl
KG1fYXBwbGVQYXlSZXF1ZXN0LT52ZXJzaW9uLCAqbV9hcHBsZVBheVJlcXVlc3QpOwogICAgIGlm
ICh2YWxpZGF0ZWRSZXF1ZXN0Lmhhc0V4Y2VwdGlvbigpKQpAQCAtMjAzLDE2ICsyMjIsMTYgQEAg
RXhjZXB0aW9uT3I8dm9pZD4gQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6c2hvdyhEb2N1bWVudCYg
ZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiBleGNlcHRpb24ucmVsZWFzZUV4Y2VwdGlvbigpOwog
CiAgICAgVmVjdG9yPFVSTD4gbGlua0ljb25VUkxzOwotICAgIGZvciAoYXV0byYgaWNvbiA6IExp
bmtJY29uQ29sbGVjdG9yIHsgZG9jdW1lbnQgfS5pY29uc09mVHlwZXMoeyBMaW5rSWNvblR5cGU6
OlRvdWNoSWNvbiwgTGlua0ljb25UeXBlOjpUb3VjaFByZWNvbXBvc2VkSWNvbiB9KSkKKyAgICBm
b3IgKGF1dG8mIGljb24gOiBMaW5rSWNvbkNvbGxlY3RvciB7IGRvY3VtZW50KCkgfS5pY29uc09m
VHlwZXMoeyBMaW5rSWNvblR5cGU6OlRvdWNoSWNvbiwgTGlua0ljb25UeXBlOjpUb3VjaFByZWNv
bXBvc2VkSWNvbiB9KSkKICAgICAgICAgbGlua0ljb25VUkxzLmFwcGVuZChpY29uLnVybCk7CiAK
LSAgICBwYXltZW50Q29vcmRpbmF0b3IoZG9jdW1lbnQpLmJlZ2luUGF5bWVudFNlc3Npb24oKnRo
aXMsIGRvY3VtZW50LnVybCgpLCBsaW5rSWNvblVSTHMsIHJlcXVlc3QpOworICAgIHBheW1lbnRD
b29yZGluYXRvcigpLmJlZ2luUGF5bWVudFNlc3Npb24oKnRoaXMsIGRvY3VtZW50KCkudXJsKCks
IGxpbmtJY29uVVJMcywgcmVxdWVzdCk7CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBBcHBs
ZVBheVBheW1lbnRIYW5kbGVyOjpoaWRlKERvY3VtZW50JiBkb2N1bWVudCkKK3ZvaWQgQXBwbGVQ
YXlQYXltZW50SGFuZGxlcjo6aGlkZSgpCiB7Ci0gICAgcGF5bWVudENvb3JkaW5hdG9yKGRvY3Vt
ZW50KS5hYm9ydFBheW1lbnRTZXNzaW9uKCk7CisgICAgcGF5bWVudENvb3JkaW5hdG9yKCkuYWJv
cnRQYXltZW50U2Vzc2lvbigpOwogfQogCiBzdGF0aWMgYm9vbCBzaG91bGREaXNjbG9zZUFwcGxl
UGF5Q2FwYWJpbGl0eShEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC0yMjQsMTQgKzI0MywzNiBAQCBz
dGF0aWMgYm9vbCBzaG91bGREaXNjbG9zZUFwcGxlUGF5Q2FwYWJpbGl0eShEb2N1bWVudCYgZG9j
dW1lbnQpCiAgICAgcmV0dXJuIGRvY3VtZW50LnNldHRpbmdzKCkuYXBwbGVQYXlDYXBhYmlsaXR5
RGlzY2xvc3VyZUFsbG93ZWQoKTsKIH0KIAotdm9pZCBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpj
YW5NYWtlUGF5bWVudChEb2N1bWVudCYgZG9jdW1lbnQsIFdURjo6RnVuY3Rpb248dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6Y2Fu
TWFrZVBheW1lbnQoV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewotICAgIGlmICghc2hvdWxkRGlzY2xvc2VBcHBsZVBheUNhcGFiaWxpdHkoZG9jdW1lbnQp
KSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHBheW1lbnRDb29yZGluYXRvcihkb2N1bWVu
dCkuY2FuTWFrZVBheW1lbnRzKCkpOworICAgIGlmICghc2hvdWxkRGlzY2xvc2VBcHBsZVBheUNh
cGFiaWxpdHkoZG9jdW1lbnQoKSkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocGF5bWVu
dENvb3JkaW5hdG9yKCkuY2FuTWFrZVBheW1lbnRzKCkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgcGF5bWVudENvb3JkaW5hdG9yKGRvY3VtZW50KS5jYW5NYWtlUGF5bWVudHNXaXRo
QWN0aXZlQ2FyZChtX2FwcGxlUGF5UmVxdWVzdC0+bWVyY2hhbnRJZGVudGlmaWVyLCBkb2N1bWVu
dC5kb21haW4oKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIHBheW1lbnRDb29y
ZGluYXRvcigpLmNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKG1fYXBwbGVQYXlSZXF1ZXN0
LT5tZXJjaGFudElkZW50aWZpZXIsIGRvY3VtZW50KCkuZG9tYWluKCksIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpjb21wbGV0
ZShzdGQ6Om9wdGlvbmFsPFBheW1lbnRDb21wbGV0ZT4mJiByZXN1bHQpCit7CisgICAgaWYgKCFy
ZXN1bHQpIHsKKyAgICAgICAgcGF5bWVudENvb3JkaW5hdG9yKCkuY29tcGxldGVQYXltZW50U2Vz
c2lvbihzdGQ6Om51bGxvcHQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUGF5bWVu
dEF1dGhvcml6YXRpb25SZXN1bHQgYXV0aG9yaXphdGlvblJlc3VsdDsKKyAgICBzd2l0Y2ggKCpy
ZXN1bHQpIHsKKyAgICBjYXNlIFBheW1lbnRDb21wbGV0ZTo6RmFpbDoKKyAgICBjYXNlIFBheW1l
bnRDb21wbGV0ZTo6VW5rbm93bjoKKyAgICAgICAgYXV0aG9yaXphdGlvblJlc3VsdC5zdGF0dXMg
PSBQYXltZW50QXV0aG9yaXphdGlvblN0YXR1czo6RmFpbHVyZTsKKyAgICAgICAgYXV0aG9yaXph
dGlvblJlc3VsdC5lcnJvcnMuYXBwZW5kKHsgUGF5bWVudEVycm9yOjpDb2RlOjpVbmtub3duLCB7
IH0sIHN0ZDo6bnVsbG9wdCB9KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQYXltZW50Q29t
cGxldGU6OlN1Y2Nlc3M6CisgICAgICAgIGF1dGhvcml6YXRpb25SZXN1bHQuc3RhdHVzID0gUGF5
bWVudEF1dGhvcml6YXRpb25TdGF0dXM6OlN1Y2Nlc3M7CisgICAgICAgIGJyZWFrOworICAgIH0K
KworICAgIHBheW1lbnRDb29yZGluYXRvcigpLmNvbXBsZXRlUGF5bWVudFNlc3Npb24oV1RGTW92
ZShhdXRob3JpemF0aW9uUmVzdWx0KSk7CiB9CiAKIHZvaWQgQXBwbGVQYXlQYXltZW50SGFuZGxl
cjo6dmFsaWRhdGVNZXJjaGFudChjb25zdCBVUkwmIHZhbGlkYXRpb25VUkwpCkBAIC0yNDAsNiAr
MjgxLDQwIEBAIHZvaWQgQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6dmFsaWRhdGVNZXJjaGFudChj
b25zdCBVUkwmIHZhbGlkYXRpb25VUkwpCiAgICAgICAgIG1fcGF5bWVudFJlcXVlc3QtPmRpc3Bh
dGNoRXZlbnQoQXBwbGVQYXlNZXJjaGFudFZhbGlkYXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5hcHBsZXBheXZhbGlkYXRlbWVyY2hhbnRFdmVudCwgdmFsaWRhdGlvblVSTCkuZ2V0KCkp
OwogfQogCitzdGF0aWMgUmVmPFBheW1lbnRBZGRyZXNzPiBjb252ZXJ0KGNvbnN0IEFwcGxlUGF5
UGF5bWVudENvbnRhY3QmIGNvbnRhY3QpCit7CisgICAgYXV0byBhZGRyZXNzID0gUGF5bWVudEFk
ZHJlc3M6OmNyZWF0ZSgpOworICAgIGFkZHJlc3MtPnNldENvdW50cnkoY29udGFjdC5jb3VudHJ5
Q29kZSk7CisgICAgaWYgKGNvbnRhY3QuYWRkcmVzc0xpbmVzKQorICAgICAgICBhZGRyZXNzLT5z
ZXRBZGRyZXNzTGluZSgqY29udGFjdC5hZGRyZXNzTGluZXMpOworICAgIGFkZHJlc3MtPnNldFJl
Z2lvbihjb250YWN0LmFkbWluaXN0cmF0aXZlQXJlYSk7CisgICAgYWRkcmVzcy0+c2V0Q2l0eShj
b250YWN0LmxvY2FsaXR5KTsKKyAgICBhZGRyZXNzLT5zZXREZXBlbmRlbnRMb2NhbGl0eShjb250
YWN0LnN1YkxvY2FsaXR5KTsKKyAgICBhZGRyZXNzLT5zZXRQb3N0YWxDb2RlKGNvbnRhY3QucG9z
dGFsQ29kZSk7CisgICAgYWRkcmVzcy0+c2V0UmVjaXBpZW50KGNvbnRhY3QubG9jYWxpemVkTmFt
ZSk7CisgICAgYWRkcmVzcy0+c2V0UGhvbmUoY29udGFjdC5waG9uZU51bWJlcik7CisgICAgcmV0
dXJuIGFkZHJlc3M7Cit9CisKK3ZvaWQgQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6ZGlkQXV0aG9y
aXplUGF5bWVudChjb25zdCBQYXltZW50JiBwYXltZW50KQoreworICAgIGF1dG8gYXBwbGVQYXlQ
YXltZW50ID0gcGF5bWVudC50b0FwcGxlUGF5UGF5bWVudCgpOworICAgIGF1dG8mIGV4ZWNTdGF0
ZSA9ICpkb2N1bWVudCgpLmV4ZWNTdGF0ZSgpOworICAgIGF1dG8gZGV0YWlscyA9IEpTQzo6U3Ry
b25nPEpTQzo6SlNPYmplY3Q+IHsgZXhlY1N0YXRlLnZtKCksIGFzT2JqZWN0KHRvSlM8SURMRGlj
dGlvbmFyeTxBcHBsZVBheVBheW1lbnQ+PihleGVjU3RhdGUsICpKU0M6OmpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGV4ZWNTdGF0ZS5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBhcHBsZVBheVBh
eW1lbnQpKSB9OworICAgIGNvbnN0IGF1dG8mIHNoaXBwaW5nQ29udGFjdCA9IGFwcGxlUGF5UGF5
bWVudC5zaGlwcGluZ0NvbnRhY3QudmFsdWVfb3IoQXBwbGVQYXlQYXltZW50Q29udGFjdCgpKTsK
KyAgICBtX3BheW1lbnRSZXF1ZXN0LT5hY2NlcHQoV1RGOjpnZXQ8VVJMPihtX2lkZW50aWZpZXIp
LnN0cmluZygpLCBXVEZNb3ZlKGRldGFpbHMpLCBjb252ZXJ0KHNoaXBwaW5nQ29udGFjdCksIHNo
aXBwaW5nQ29udGFjdC5sb2NhbGl6ZWROYW1lLCBzaGlwcGluZ0NvbnRhY3QuZW1haWxBZGRyZXNz
LCBzaGlwcGluZ0NvbnRhY3QucGhvbmVOdW1iZXIpOworfQorCit2b2lkIEFwcGxlUGF5UGF5bWVu
dEhhbmRsZXI6OmRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kKGNvbnN0IEFwcGxlUGF5U2Vzc2lvblBh
eW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZCYgc2hpcHBpbmdNZXRob2QpCit7CisgICAgbV9w
YXltZW50UmVxdWVzdC0+c2hpcHBpbmdPcHRpb25DaGFuZ2VkKHNoaXBwaW5nTWV0aG9kLmlkZW50
aWZpZXIpOworfQorCit2b2lkIEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OmRpZFNlbGVjdFNoaXBw
aW5nQ29udGFjdChjb25zdCBQYXltZW50Q29udGFjdCYgc2hpcHBpbmdDb250YWN0KQoreworICAg
IG1fcGF5bWVudFJlcXVlc3QtPnNoaXBwaW5nQWRkcmVzc0NoYW5nZWQoY29udmVydChzaGlwcGlu
Z0NvbnRhY3QudG9BcHBsZVBheVBheW1lbnRDb250YWN0KCkpKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEFQUExFX1BBWSkgJiYgRU5BQkxFKFBBWU1F
TlRfUkVRVUVTVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
cGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmgK
aW5kZXggN2Y3MTllYmE0MDJkMDNlZjAyMmVlZTdhM2M2NDk2ZDE0MGRjYTIxOS4uNTVlNjdlNmY3
OGU5ZjM5OTU0MWYwMWQ2MjNlNTZiYmM5OTU5NjdlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9B
cHBsZVBheVBheW1lbnRIYW5kbGVyLmgKQEAgLTI4LDM4ICsyOCw0NSBAQAogI2lmIEVOQUJMRShB
UFBMRV9QQVkpICYmIEVOQUJMRShQQVlNRU5UX1JFUVVFU1QpCiAKICNpbmNsdWRlICJBcHBsZVBh
eVJlcXVlc3QuaCIKKyNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgogI2lu
Y2x1ZGUgIlBheW1lbnRIYW5kbGVyLmgiCisjaW5jbHVkZSAiUGF5bWVudFJlcXVlc3QuaCIKICNp
bmNsdWRlICJQYXltZW50U2Vzc2lvbi5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgog
I2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBQYXlt
ZW50UmVxdWVzdDsKK2NsYXNzIFBheW1lbnRDb29yZGluYXRvcjsKIAotY2xhc3MgQXBwbGVQYXlQ
YXltZW50SGFuZGxlciBmaW5hbCA6IHB1YmxpYyBQYXltZW50SGFuZGxlciwgcHVibGljIFBheW1l
bnRTZXNzaW9uIHsKK2NsYXNzIEFwcGxlUGF5UGF5bWVudEhhbmRsZXIgZmluYWwgOiBwdWJsaWMg
UGF5bWVudEhhbmRsZXIsIHB1YmxpYyBQYXltZW50U2Vzc2lvbiwgcHJpdmF0ZSBDb250ZXh0RGVz
dHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaGFuZGxlc0lkZW50
aWZpZXIoY29uc3QgUGF5bWVudFJlcXVlc3Q6Ok1ldGhvZElkZW50aWZpZXImKTsKICAgICBzdGF0
aWMgYm9vbCBoYXNBY3RpdmVTZXNzaW9uKERvY3VtZW50Jik7CiAKIHByaXZhdGU6CiAgICAgZnJp
ZW5kIGNsYXNzIFBheW1lbnRIYW5kbGVyOwotICAgIGV4cGxpY2l0IEFwcGxlUGF5UGF5bWVudEhh
bmRsZXIoUGF5bWVudFJlcXVlc3QmKTsKKyAgICBleHBsaWNpdCBBcHBsZVBheVBheW1lbnRIYW5k
bGVyKERvY3VtZW50JiwgY29uc3QgUGF5bWVudFJlcXVlc3Q6Ok1ldGhvZElkZW50aWZpZXImLCBQ
YXltZW50UmVxdWVzdCYpOworCisgICAgRG9jdW1lbnQmIGRvY3VtZW50KCk7CisgICAgUGF5bWVu
dENvb3JkaW5hdG9yJiBwYXltZW50Q29vcmRpbmF0b3IoKTsKIAogICAgIC8vIFBheW1lbnRIYW5k
bGVyCi0gICAgRXhjZXB0aW9uT3I8dm9pZD4gY29udmVydERhdGEoSlNDOjpFeGVjU3RhdGUmLCBK
U0M6OkpTVmFsdWUmJikgZmluYWw7Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gc2hvdyhEb2N1bWVu
dCYpIGZpbmFsOwotICAgIHZvaWQgaGlkZShEb2N1bWVudCYpIGZpbmFsOwotICAgIHZvaWQgY2Fu
TWFrZVBheW1lbnQoRG9jdW1lbnQmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpIGZpbmFsOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGNvbnZlcnREYXRhKEpT
Qzo6SlNWYWx1ZSYmKSBmaW5hbDsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBzaG93KCkgZmluYWw7
CisgICAgdm9pZCBoaWRlKCkgZmluYWw7CisgICAgdm9pZCBjYW5NYWtlUGF5bWVudChXVEY6OkZ1
bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsOworICAgIHZvaWQg
Y29tcGxldGUoc3RkOjpvcHRpb25hbDxQYXltZW50Q29tcGxldGU+JiYpIGZpbmFsOwogCiAgICAg
Ly8gUGF5bWVudFNlc3Npb24KICAgICB2b2lkIHZhbGlkYXRlTWVyY2hhbnQoY29uc3QgVVJMJikg
ZmluYWw7Ci0gICAgdm9pZCBkaWRBdXRob3JpemVQYXltZW50KGNvbnN0IFBheW1lbnQmKSBmaW5h
bCB7IH0KLSAgICB2b2lkIGRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kKGNvbnN0IEFwcGxlUGF5U2Vz
c2lvblBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZCYpIGZpbmFsIHsgfQotICAgIHZvaWQg
ZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0KGNvbnN0IFBheW1lbnRDb250YWN0JikgZmluYWwgeyB9
CisgICAgdm9pZCBkaWRBdXRob3JpemVQYXltZW50KGNvbnN0IFBheW1lbnQmKSBmaW5hbDsKKyAg
ICB2b2lkIGRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kKGNvbnN0IEFwcGxlUGF5U2Vzc2lvblBheW1l
bnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZCYpIGZpbmFsOworICAgIHZvaWQgZGlkU2VsZWN0U2hp
cHBpbmdDb250YWN0KGNvbnN0IFBheW1lbnRDb250YWN0JikgZmluYWw7CiAgICAgdm9pZCBkaWRT
ZWxlY3RQYXltZW50TWV0aG9kKGNvbnN0IFBheW1lbnRNZXRob2QmKSBmaW5hbCB7IH0KICAgICB2
b2lkIGRpZENhbmNlbFBheW1lbnRTZXNzaW9uKCkgZmluYWwgeyB9CiAKKyAgICBQYXltZW50UmVx
dWVzdDo6TWV0aG9kSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgUmVmPFBheW1lbnRSZXF1
ZXN0PiBtX3BheW1lbnRSZXF1ZXN0OwogICAgIHN0ZDo6b3B0aW9uYWw8QXBwbGVQYXlSZXF1ZXN0
PiBtX2FwcGxlUGF5UmVxdWVzdDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRBZGRyZXNzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRBZGRyZXNzLmgKaW5kZXggNDJjNzc0NWIxOTY0YjBi
NTMzNzU2ZWI2ZDA0N2M4MTQ2NTdiNGMzMS4uMDkzMmYwZmNhZmY0Y2UzMTUyYjVlYjEwZDA3NjFm
MjAyNDNjMjdlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVx
dWVzdC9QYXltZW50QWRkcmVzcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVu
dHJlcXVlc3QvUGF5bWVudEFkZHJlc3MuaApAQCAtMzUsMTkgKzM1LDQ3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgUGF5bWVudEFkZHJlc3MgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRl
ZDxQYXltZW50QWRkcmVzcz4gewogcHVibGljOgorICAgIHN0YXRpYyBSZWY8UGF5bWVudEFkZHJl
c3M+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQYXltZW50
QWRkcmVzcygpKTsKKyAgICB9CisKICAgICBjb25zdCBTdHJpbmcmIGNvdW50cnkoKSBjb25zdCB7
IHJldHVybiBtX2NvdW50cnk7IH0KKyAgICB2b2lkIHNldENvdW50cnkoY29uc3QgU3RyaW5nJiBj
b3VudHJ5KSB7IG1fY291bnRyeSA9IGNvdW50cnk7IH0KKwogICAgIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBhZGRyZXNzTGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWRkcmVzc0xpbmU7IH0KKyAgICB2
b2lkIHNldEFkZHJlc3NMaW5lKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhZGRyZXNzTGluZSkgeyBt
X2FkZHJlc3NMaW5lID0gYWRkcmVzc0xpbmU7IH0KKwogICAgIGNvbnN0IFN0cmluZyYgcmVnaW9u
KCkgY29uc3QgeyByZXR1cm4gbV9yZWdpb247IH0KKyAgICB2b2lkIHNldFJlZ2lvbihjb25zdCBT
dHJpbmcmIHJlZ2lvbikgeyBtX3JlZ2lvbiA9IHJlZ2lvbjsgfQorCiAgICAgY29uc3QgU3RyaW5n
JiBjaXR5KCkgY29uc3QgeyByZXR1cm4gbV9jaXR5OyB9CisgICAgdm9pZCBzZXRDaXR5KGNvbnN0
IFN0cmluZyYgY2l0eSkgeyBtX2NpdHkgPSBjaXR5OyB9CisKICAgICBjb25zdCBTdHJpbmcmIGRl
cGVuZGVudExvY2FsaXR5KCkgY29uc3QgeyByZXR1cm4gbV9kZXBlbmRlbnRMb2NhbGl0eTsgfQor
ICAgIHZvaWQgc2V0RGVwZW5kZW50TG9jYWxpdHkoY29uc3QgU3RyaW5nJiBkZXBlbmRlbnRMb2Nh
bGl0eSkgeyBtX2RlcGVuZGVudExvY2FsaXR5ID0gZGVwZW5kZW50TG9jYWxpdHk7IH0KKwogICAg
IGNvbnN0IFN0cmluZyYgcG9zdGFsQ29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9zdGFsQ29kZTsg
fQorICAgIHZvaWQgc2V0UG9zdGFsQ29kZShjb25zdCBTdHJpbmcmIHBvc3RhbENvZGUpIHsgbV9w
b3N0YWxDb2RlID0gcG9zdGFsQ29kZTsgfQorCiAgICAgY29uc3QgU3RyaW5nJiBzb3J0aW5nQ29k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc29ydGluZ0NvZGU7IH0KKyAgICB2b2lkIHNldFNvcnRpbmdD
b2RlKGNvbnN0IFN0cmluZyYgc29ydGluZ0NvZGUpIHsgbV9zb3J0aW5nQ29kZSA9IHNvcnRpbmdD
b2RlOyB9CisKICAgICBjb25zdCBTdHJpbmcmIGxhbmd1YWdlQ29kZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbGFuZ3VhZ2VDb2RlOyB9CisgICAgdm9pZCBzZXRMYW5ndWFnZUNvZGUoY29uc3QgU3RyaW5n
JiBsYW5ndWFnZUNvZGUpIHsgbV9sYW5ndWFnZUNvZGUgPSBsYW5ndWFnZUNvZGU7IH0KKwogICAg
IGNvbnN0IFN0cmluZyYgb3JnYW5pemF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9vcmdhbml6YXRp
b247IH0KKyAgICB2b2lkIHNldE9yZ2FuaXphdGlvbihjb25zdCBTdHJpbmcmIG9yZ2FuaXphdGlv
bikgeyBtX29yZ2FuaXphdGlvbiA9IG9yZ2FuaXphdGlvbjsgfQorCiAgICAgY29uc3QgU3RyaW5n
JiByZWNpcGllbnQoKSBjb25zdCB7IHJldHVybiBtX3JlY2lwaWVudDsgfQorICAgIHZvaWQgc2V0
UmVjaXBpZW50KGNvbnN0IFN0cmluZyYgcmVjaXBpZW50KSB7IG1fcmVjaXBpZW50ID0gcmVjaXBp
ZW50OyB9CisKICAgICBjb25zdCBTdHJpbmcmIHBob25lKCkgY29uc3QgeyByZXR1cm4gbV9waG9u
ZTsgfQorICAgIHZvaWQgc2V0UGhvbmUoY29uc3QgU3RyaW5nJiBwaG9uZSkgeyBtX3Bob25lID0g
cGhvbmU7IH0KIAogcHJpdmF0ZToKKyAgICBQYXltZW50QWRkcmVzcygpID0gZGVmYXVsdDsKKwog
ICAgIFN0cmluZyBtX2NvdW50cnk7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9hZGRyZXNzTGluZTsK
ICAgICBTdHJpbmcgbV9yZWdpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3BheW1lbnRyZXF1ZXN0L1BheW1lbnRBZGRyZXNzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudEFkZHJlc3MuaWRsCmluZGV4IDcyMTE2ZmNlODBjZmE4
YjFmYzU1OTNmOWM4NWRmM2EzNTA4OGM0MTMuLmUyNmI3NTdkOTM0NzQ0N2YyNDNmMGFlZjMwMDcx
NTg4NzU2MTdiYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJl
cXVlc3QvUGF5bWVudEFkZHJlc3MuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5
bWVudHJlcXVlc3QvUGF5bWVudEFkZHJlc3MuaWRsCkBAIC0yNiw2ICsyNiw3IEBACiBbCiAgICAg
Q29uZGl0aW9uYWw9UEFZTUVOVF9SRVFVRVNULAogICAgIEVuYWJsZWRCeVNldHRpbmc9UGF5bWVu
dFJlcXVlc3QsCisgICAgRXhwb3NlZD1XaW5kb3csCiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZU
YWJsZSwKICAgICBTZWN1cmVDb250ZXh0CiBdIGludGVyZmFjZSBQYXltZW50QWRkcmVzcyB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRI
YW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVu
dEhhbmRsZXIuY3BwCmluZGV4IGU3ZWNkMTQzNjJiMDFmMTg5ZjU0NmYwOGEyZTgzYWYxMjkzNTJh
MTEuLmYzNjU1NzU2MzhhNWI0NDc5Nzg4OTg4N2I1NzRiYTA5Mzc3MmQ0YWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudEhhbmRsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudEhhbmRs
ZXIuY3BwCkBAIC0zNCwxMiArMzQsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQ
dHI8UGF5bWVudEhhbmRsZXI+IFBheW1lbnRIYW5kbGVyOjpjcmVhdGUoUGF5bWVudFJlcXVlc3Qm
IHBheW1lbnRSZXF1ZXN0LCBjb25zdCBQYXltZW50UmVxdWVzdDo6TWV0aG9kSWRlbnRpZmllciYg
aWRlbnRpZmllcikKK1JlZlB0cjxQYXltZW50SGFuZGxlcj4gUGF5bWVudEhhbmRsZXI6OmNyZWF0
ZShEb2N1bWVudCYgZG9jdW1lbnQsIFBheW1lbnRSZXF1ZXN0JiBwYXltZW50UmVxdWVzdCwgY29u
c3QgUGF5bWVudFJlcXVlc3Q6Ok1ldGhvZElkZW50aWZpZXImIGlkZW50aWZpZXIpCiB7CiAjaWYg
RU5BQkxFKEFQUExFX1BBWSkKICAgICBpZiAoQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6aGFuZGxl
c0lkZW50aWZpZXIoaWRlbnRpZmllcikpCi0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXBw
bGVQYXlQYXltZW50SGFuZGxlcihwYXltZW50UmVxdWVzdCkpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEFwcGxlUGF5UGF5bWVudEhhbmRsZXIoZG9jdW1lbnQsIGlkZW50aWZpZXIsIHBh
eW1lbnRSZXF1ZXN0KSk7CiAjZWxzZQorICAgIFVOVVNFRF9QQVJBTShkb2N1bWVudCk7CiAgICAg
VU5VU0VEX1BBUkFNKHBheW1lbnRSZXF1ZXN0KTsKICAgICBVTlVTRURfUEFSQU0oaWRlbnRpZmll
cik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJl
cXVlc3QvUGF5bWVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJl
cXVlc3QvUGF5bWVudEhhbmRsZXIuaAppbmRleCA0NDg3NjA3MGQ5ZTM1NTM4NjkxZTNkZjM2NTJl
NGEwYjUyMWYwNGRjLi44MjcyMDI2NTM3Y2U5ZWJiZjlkN2FlNjcyNzA1NWE3OWFjNzY0YzVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRI
YW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXlt
ZW50SGFuZGxlci5oCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+
CiAKIG5hbWVzcGFjZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOwogY2xhc3MgSlNWYWx1ZTsKIH0K
IApAQCAtNDIsMTMgKzQxLDE0IEBAIGNsYXNzIERvY3VtZW50OwogCiBjbGFzcyBQYXltZW50SGFu
ZGxlciA6IHB1YmxpYyB2aXJ0dWFsIFBheW1lbnRTZXNzaW9uQmFzZSB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZlB0cjxQYXltZW50SGFuZGxlcj4gY3JlYXRlKFBheW1lbnRSZXF1ZXN0JiwgY29u
c3QgUGF5bWVudFJlcXVlc3Q6Ok1ldGhvZElkZW50aWZpZXImKTsKKyAgICBzdGF0aWMgUmVmUHRy
PFBheW1lbnRIYW5kbGVyPiBjcmVhdGUoRG9jdW1lbnQmLCBQYXltZW50UmVxdWVzdCYsIGNvbnN0
IFBheW1lbnRSZXF1ZXN0OjpNZXRob2RJZGVudGlmaWVyJik7CiAgICAgc3RhdGljIGJvb2wgaGFz
QWN0aXZlU2Vzc2lvbihEb2N1bWVudCYpOwogCi0gICAgdmlydHVhbCBFeGNlcHRpb25Pcjx2b2lk
PiBjb252ZXJ0RGF0YShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSYmKSA9IDA7Ci0gICAg
dmlydHVhbCBFeGNlcHRpb25Pcjx2b2lkPiBzaG93KERvY3VtZW50JikgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBoaWRlKERvY3VtZW50JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjYW5NYWtlUGF5
bWVudChEb2N1bWVudCYsIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikgPSAwOworICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8dm9pZD4gY29udmVydERhdGEoSlND
OjpKU1ZhbHVlJiYpID0gMDsKKyAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9yPHZvaWQ+IHNob3coKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGhpZGUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNhbk1h
a2VQYXltZW50KFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBjb21wbGV0ZShzdGQ6Om9wdGlvbmFsPFBheW1lbnRDb21w
bGV0ZT4mJikgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmNw
cAppbmRleCBiZmVjZjVmYTc1Njc1YzM3YjJkZWQzNjliNjdkNjUyYzUzNDQ5ZWRhLi44YTViYWJk
MDU0NDk3M2M2NzcwMDlmZDdiNmFkY2YzNzJkN2QwYjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmNwcApAQCAt
MzAsMTIgKzMwLDE0IEBACiAKICNpbmNsdWRlICJBcHBsZVBheVBheW1lbnRIYW5kbGVyLmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJKU1BheW1lbnRSZXNwb25zZS5oIgogI2lu
Y2x1ZGUgIlBheW1lbnRBZGRyZXNzLmgiCiAjaW5jbHVkZSAiUGF5bWVudEN1cnJlbmN5QW1vdW50
LmgiCiAjaW5jbHVkZSAiUGF5bWVudERldGFpbHNJbml0LmgiCiAjaW5jbHVkZSAiUGF5bWVudEhh
bmRsZXIuaCIKICNpbmNsdWRlICJQYXltZW50TWV0aG9kRGF0YS5oIgogI2luY2x1ZGUgIlBheW1l
bnRPcHRpb25zLmgiCisjaW5jbHVkZSAiUGF5bWVudFJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT05PYmplY3QuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9UaHJvd1Njb3BlLmg+CkBAIC0zNzYsMTEgKzM3OCwx
MSBAQCB2b2lkIFBheW1lbnRSZXF1ZXN0OjpzaG93KERvY3VtZW50JiBkb2N1bWVudCwgU2hvd1By
b21pc2UmJiBwcm9taXNlKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAg
ICAgYXV0byBoYW5kbGVyID0gUGF5bWVudEhhbmRsZXI6OmNyZWF0ZSgqdGhpcywgcGF5bWVudE1l
dGhvZC5pZGVudGlmaWVyKTsKKyAgICAgICAgYXV0byBoYW5kbGVyID0gUGF5bWVudEhhbmRsZXI6
OmNyZWF0ZShkb2N1bWVudCwgKnRoaXMsIHBheW1lbnRNZXRob2QuaWRlbnRpZmllcik7CiAgICAg
ICAgIGlmICghaGFuZGxlcikKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGF1dG8g
cmVzdWx0ID0gaGFuZGxlci0+Y29udmVydERhdGEoKmRvY3VtZW50LmV4ZWNTdGF0ZSgpLCBkYXRh
LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSBoYW5kbGVyLT5j
b252ZXJ0RGF0YShkYXRhLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKICAgICAgICAgaWYgKHJlc3Vs
dC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgbV9zaG93UHJvbWlzZS0+cmVqZWN0KHJl
c3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzk1LDcg
KzM5Nyw3IEBAIHZvaWQgUGF5bWVudFJlcXVlc3Q6OnNob3coRG9jdW1lbnQmIGRvY3VtZW50LCBT
aG93UHJvbWlzZSYmIHByb21pc2UpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRv
IGV4Y2VwdGlvbiA9IHNlbGVjdGVkUGF5bWVudEhhbmRsZXItPnNob3coZG9jdW1lbnQpOworICAg
IGF1dG8gZXhjZXB0aW9uID0gc2VsZWN0ZWRQYXltZW50SGFuZGxlci0+c2hvdygpOwogICAgIGlm
IChleGNlcHRpb24uaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgbV9zaG93UHJvbWlzZS0+cmVq
ZWN0KGV4Y2VwdGlvbi5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAgICByZXR1cm47CkBAIC00
MTMsNyArNDE1LDcgQEAgdm9pZCBQYXltZW50UmVxdWVzdDo6c3RvcCgpCiAKICAgICBpZiAoYXV0
byBwYXltZW50SGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UobV9hY3RpdmVQYXltZW50SGFuZGxlciwg
bnVsbHB0cikpIHsKICAgICAgICAgdW5zZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7Ci0gICAgICAg
IHBheW1lbnRIYW5kbGVyLT5oaWRlKGRvd25jYXN0PERvY3VtZW50Pigqc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKSk7CisgICAgICAgIHBheW1lbnRIYW5kbGVyLT5oaWRlKCk7CiAgICAgfQogCiAg
ICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkludGVyYWN0aXZlKTsKQEAgLTQ0NSwxNSArNDQ3
LDE1IEBAIHZvaWQgUGF5bWVudFJlcXVlc3Q6OmNhbk1ha2VQYXltZW50KERvY3VtZW50JiBkb2N1
bWVudCwgQ2FuTWFrZVBheW1lbnRQcm9taXNlJiYKICAgICAgICAgaWYgKGRhdGEuaGFzRXhjZXB0
aW9uKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRvIGhhbmRsZXIgPSBQ
YXltZW50SGFuZGxlcjo6Y3JlYXRlKCp0aGlzLCBwYXltZW50TWV0aG9kLmlkZW50aWZpZXIpOwor
ICAgICAgICBhdXRvIGhhbmRsZXIgPSBQYXltZW50SGFuZGxlcjo6Y3JlYXRlKGRvY3VtZW50LCAq
dGhpcywgcGF5bWVudE1ldGhvZC5pZGVudGlmaWVyKTsKICAgICAgICAgaWYgKCFoYW5kbGVyKQog
ICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBleGNlcHRpb24gPSBoYW5kbGVy
LT5jb252ZXJ0RGF0YSgqZG9jdW1lbnQuZXhlY1N0YXRlKCksIGRhdGEucmVsZWFzZVJldHVyblZh
bHVlKCkpOworICAgICAgICBhdXRvIGV4Y2VwdGlvbiA9IGhhbmRsZXItPmNvbnZlcnREYXRhKGRh
dGEucmVsZWFzZVJldHVyblZhbHVlKCkpOwogICAgICAgICBpZiAoZXhjZXB0aW9uLmhhc0V4Y2Vw
dGlvbigpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaGFuZGxlci0+Y2FuTWFr
ZVBheW1lbnQoZG9jdW1lbnQsIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oYm9vbCBjYW5N
YWtlUGF5bWVudCkgbXV0YWJsZSB7CisgICAgICAgIGhhbmRsZXItPmNhbk1ha2VQYXltZW50KFtw
cm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oYm9vbCBjYW5NYWtlUGF5bWVudCkgbXV0YWJsZSB7
CiAgICAgICAgICAgICBwcm9taXNlLnJlc29sdmUoY2FuTWFrZVBheW1lbnQpOwogICAgICAgICB9
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDc4LDE0ICs0ODAsNjEgQEAgYm9vbCBQYXltZW50UmVx
dWVzdDo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0CiB7CiAgICAgc3dp
dGNoIChtX3N0YXRlKSB7CiAgICAgY2FzZSBTdGF0ZTo6Q3JlYXRlZDoKLSAgICBjYXNlIFN0YXRl
OjpDbG9zZWQ6CiAgICAgICAgIEFTU0VSVCghbV9hY3RpdmVQYXltZW50SGFuZGxlcik7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIGNhc2UgU3RhdGU6OkludGVyYWN0aXZlOgorICAgIGNhc2Ug
U3RhdGU6OkNsb3NlZDoKICAgICAgICAgcmV0dXJuICFtX2FjdGl2ZVBheW1lbnRIYW5kbGVyOwog
ICAgIH0KIH0KIAordm9pZCBQYXltZW50UmVxdWVzdDo6c2hpcHBpbmdBZGRyZXNzQ2hhbmdlZChS
ZWY8UGF5bWVudEFkZHJlc3M+JiYgc2hpcHBpbmdBZGRyZXNzKQoreworICAgIEFTU0VSVChtX3N0
YXRlID09IFN0YXRlOjpJbnRlcmFjdGl2ZSk7CisgICAgbV9zaGlwcGluZ0FkZHJlc3MgPSBXVEZN
b3ZlKHNoaXBwaW5nQWRkcmVzcyk7CisgICAgLy8gRklYTUU6IHJ1biB0aGUgUGF5bWVudFJlcXVl
c3QgdXBkYXRlZCBhbGdvcml0aG0uCit9CisKK3ZvaWQgUGF5bWVudFJlcXVlc3Q6OnNoaXBwaW5n
T3B0aW9uQ2hhbmdlZChjb25zdCBTdHJpbmcmIHNoaXBwaW5nT3B0aW9uKQoreworICAgIEFTU0VS
VChtX3N0YXRlID09IFN0YXRlOjpJbnRlcmFjdGl2ZSk7CisgICAgbV9zaGlwcGluZ09wdGlvbiA9
IHNoaXBwaW5nT3B0aW9uOworICAgIC8vIEZJWE1FOiBydW4gdGhlIFBheW1lbnRSZXF1ZXN0IHVw
ZGF0ZWQgYWxnb3JpdGhtLgorfQorCit2b2lkIFBheW1lbnRSZXF1ZXN0OjphY2NlcHQoY29uc3Qg
U3RyaW5nJiBtZXRob2ROYW1lLCBKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0PiYmIGRldGFpbHMs
IFJlZjxQYXltZW50QWRkcmVzcz4mJiBzaGlwcGluZ0FkZHJlc3MsIGNvbnN0IFN0cmluZyYgcGF5
ZXJOYW1lLCBjb25zdCBTdHJpbmcmIHBheWVyRW1haWwsIGNvbnN0IFN0cmluZyYgcGF5ZXJQaG9u
ZSkKK3sKKyAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6SW50ZXJhY3RpdmUpOworCisgICAg
YXV0byByZXNwb25zZSA9IFBheW1lbnRSZXNwb25zZTo6Y3JlYXRlKCp0aGlzKTsKKyAgICByZXNw
b25zZS0+c2V0UmVxdWVzdElkKG1fZGV0YWlscy5pZCk7CisgICAgcmVzcG9uc2UtPnNldE1ldGhv
ZE5hbWUobWV0aG9kTmFtZSk7CisgICAgcmVzcG9uc2UtPnNldERldGFpbHMoV1RGTW92ZShkZXRh
aWxzKSk7CisKKyAgICBpZiAobV9vcHRpb25zLnJlcXVlc3RTaGlwcGluZykgeworICAgICAgICBy
ZXNwb25zZS0+c2V0U2hpcHBpbmdBZGRyZXNzKHNoaXBwaW5nQWRkcmVzcy5wdHIoKSk7CisgICAg
ICAgIHJlc3BvbnNlLT5zZXRTaGlwcGluZ09wdGlvbihtX3NoaXBwaW5nT3B0aW9uKTsKKyAgICB9
CisKKyAgICBpZiAobV9vcHRpb25zLnJlcXVlc3RQYXllck5hbWUpCisgICAgICAgIHJlc3BvbnNl
LT5zZXRQYXllck5hbWUocGF5ZXJOYW1lKTsKKworICAgIGlmIChtX29wdGlvbnMucmVxdWVzdFBh
eWVyRW1haWwpCisgICAgICAgIHJlc3BvbnNlLT5zZXRQYXllckVtYWlsKHBheWVyRW1haWwpOwor
CisgICAgaWYgKG1fb3B0aW9ucy5yZXF1ZXN0UGF5ZXJQaG9uZSkKKyAgICAgICAgcmVzcG9uc2Ut
PnNldFBheWVyUGhvbmUocGF5ZXJQaG9uZSk7CisKKyAgICBtX3Nob3dQcm9taXNlLT5yZXNvbHZl
KHJlc3BvbnNlLmdldCgpKTsKKyAgICBtX3N0YXRlID0gU3RhdGU6OkNsb3NlZDsKK30KKwordm9p
ZCBQYXltZW50UmVxdWVzdDo6Y29tcGxldGUoc3RkOjpvcHRpb25hbDxQYXltZW50Q29tcGxldGU+
JiYgcmVzdWx0KQoreworICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQpOworICAg
IHN0ZDo6ZXhjaGFuZ2UobV9hY3RpdmVQYXltZW50SGFuZGxlciwgbnVsbHB0ciktPmNvbXBsZXRl
KFdURk1vdmUocmVzdWx0KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIEVOQUJMRShQQVlNRU5UX1JFUVVFU1QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmgKaW5kZXggYTg5MTg1YmNjN2Zl
YzZiZWI0NmE0NjcxYzY3YTlhYTdiOTQ2ZjYzNy4uYThkYTRkMTk2MzNiZmI2NDY5ZjBkMThmZGIy
NjNjOWQ1MjJhODFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50
cmVxdWVzdC9QYXltZW50UmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5
bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBEb2N1
bWVudDsKIGNsYXNzIFBheW1lbnRBZGRyZXNzOwogY2xhc3MgUGF5bWVudEhhbmRsZXI7CiBjbGFz
cyBQYXltZW50UmVzcG9uc2U7CitlbnVtIGNsYXNzIFBheW1lbnRDb21wbGV0ZTsKIGVudW0gY2xh
c3MgUGF5bWVudFNoaXBwaW5nVHlwZTsKIHN0cnVjdCBQYXltZW50TWV0aG9kRGF0YTsKIApAQCAt
NjYsNiArNjcsMTEgQEAgcHVibGljOgogICAgIGNvbnN0IFBheW1lbnRPcHRpb25zJiBwYXltZW50
T3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9uczsgfQogICAgIGNvbnN0IFBheW1lbnRE
ZXRhaWxzSW5pdCYgcGF5bWVudERldGFpbHMoKSBjb25zdCB7IHJldHVybiBtX2RldGFpbHM7IH0K
IAorICAgIHZvaWQgc2hpcHBpbmdBZGRyZXNzQ2hhbmdlZChSZWY8UGF5bWVudEFkZHJlc3M+JiYp
OworICAgIHZvaWQgc2hpcHBpbmdPcHRpb25DaGFuZ2VkKGNvbnN0IFN0cmluZyYgc2hpcHBpbmdP
cHRpb24pOworICAgIHZvaWQgYWNjZXB0KGNvbnN0IFN0cmluZyYgbWV0aG9kTmFtZSwgSlNDOjpT
dHJvbmc8SlNDOjpKU09iamVjdD4mJiBkZXRhaWxzLCBSZWY8UGF5bWVudEFkZHJlc3M+JiYgc2hp
cHBpbmdBZGRyZXNzLCBjb25zdCBTdHJpbmcmIHBheWVyTmFtZSwgY29uc3QgU3RyaW5nJiBwYXll
ckVtYWlsLCBjb25zdCBTdHJpbmcmIHBheWVyUGhvbmUpOworICAgIHZvaWQgY29tcGxldGUoc3Rk
OjpvcHRpb25hbDxQYXltZW50Q29tcGxldGU+JiYpOworCiAgICAgdXNpbmcgTWV0aG9kSWRlbnRp
ZmllciA9IFZhcmlhbnQ8U3RyaW5nLCBVUkw+OwogICAgIHVzaW5nIFJlZkNvdW50ZWQ8UGF5bWVu
dFJlcXVlc3Q+OjpyZWY7CiAgICAgdXNpbmcgUmVmQ291bnRlZDxQYXltZW50UmVxdWVzdD46OmRl
cmVmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9Q
YXltZW50UmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVz
dC9QYXltZW50UmVzcG9uc2UuY3BwCmluZGV4IDcwMmFiYzQwZTY4MjFiYjMyMDI0YTBjMWFkNzlh
YTEwZjAxMjcyNjEuLjJhZWFlZGYwYjU4OGI2Mzg2NmQxZjE5ZDk1NTEwNTcxNjU3NDIwMzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJl
c3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1Bh
eW1lbnRSZXNwb25zZS5jcHAKQEAgLTI4LDEzICsyOCwyOCBAQAogCiAjaWYgRU5BQkxFKFBBWU1F
TlRfUkVRVUVTVCkKIAorI2luY2x1ZGUgIlBheW1lbnRSZXF1ZXN0LmgiCiAjaW5jbHVkZSA8d3Rm
L1J1bkxvb3AuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIFBheW1lbnRSZXNwb25z
ZTo6Y29tcGxldGUoc3RkOjpvcHRpb25hbDxQYXltZW50Q29tcGxldGU+JiYsIERPTVByb21pc2VE
ZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCitQYXltZW50UmVzcG9uc2U6OlBheW1lbnRSZXNwb25z
ZShQYXltZW50UmVxdWVzdCYgcmVxdWVzdCkKKyAgICA6IG1fcmVxdWVzdCB7IHJlcXVlc3QgfQog
ewotICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCBBU0NJ
SUxpdGVyYWwoIk5vdCBpbXBsZW1lbnRlZCIpIH0pOworfQorCitQYXltZW50UmVzcG9uc2U6On5Q
YXltZW50UmVzcG9uc2UoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgUGF5bWVudFJlc3BvbnNlOjpjb21w
bGV0ZShzdGQ6Om9wdGlvbmFsPFBheW1lbnRDb21wbGV0ZT4mJiByZXN1bHQsIERPTVByb21pc2VE
ZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCit7CisgICAgaWYgKG1fY29tcGxldGVDYWxsZWQpIHsK
KyAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2NvbXBsZXRlQ2FsbGVkID0gdHJ1ZTsK
KyAgICBtX3JlcXVlc3QtPmNvbXBsZXRlKFdURk1vdmUocmVzdWx0KSk7CisgICAgcHJvbWlzZS5y
ZXNvbHZlKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlc3BvbnNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXNwb25zZS5oCmluZGV4
IDJmMDI5ZTFjYWUwMTNkZmNjODI3MmI2ODhkMDM2OWU5ZTgyOWFhM2YuLmQwMzNhNzYyNTU4NDEy
MjNhYWEyZjQwNzZiYzJhMjRjMDU1ZTBlN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVzcG9uc2UuaApAQCAtMzIsMjEgKzMy
LDQ5IEBACiAjaW5jbHVkZSAiUGF5bWVudENvbXBsZXRlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKKyAgICAKK2NsYXNzIERvY3VtZW50OworY2xhc3MgUGF5bWVudFJlcXVlc3Q7CiAKIGNsYXNz
IFBheW1lbnRSZXNwb25zZSBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFBheW1lbnRSZXNwb25z
ZT4gewogcHVibGljOgorICAgIHN0YXRpYyBSZWY8UGF5bWVudFJlc3BvbnNlPiBjcmVhdGUoUGF5
bWVudFJlcXVlc3QmIHJlcXVlc3QpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBQYXltZW50UmVzcG9uc2UocmVxdWVzdCkpOworICAgIH0KKworICAgIH5QYXltZW50UmVzcG9u
c2UoKTsKKwogICAgIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKCkgY29uc3QgeyByZXR1cm4gbV9y
ZXF1ZXN0SWQ7IH0KKyAgICB2b2lkIHNldFJlcXVlc3RJZChjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCkgeyBtX3JlcXVlc3RJZCA9IHJlcXVlc3RJZDsgfQorCiAgICAgY29uc3QgU3RyaW5nJiBtZXRo
b2ROYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tZXRob2ROYW1lOyB9CisgICAgdm9pZCBzZXRNZXRo
b2ROYW1lKGNvbnN0IFN0cmluZyYgbWV0aG9kTmFtZSkgeyBtX21ldGhvZE5hbWUgPSBtZXRob2RO
YW1lOyB9CisKICAgICBjb25zdCBKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0PiYgZGV0YWlscygp
IGNvbnN0IHsgcmV0dXJuIG1fZGV0YWlsczsgfQorICAgIHZvaWQgc2V0RGV0YWlscyhKU0M6OlN0
cm9uZzxKU0M6OkpTT2JqZWN0PiYmIGRldGFpbHMpIHsgbV9kZXRhaWxzID0gV1RGTW92ZShkZXRh
aWxzKTsgfQorCiAgICAgUGF5bWVudEFkZHJlc3MqIHNoaXBwaW5nQWRkcmVzcygpIGNvbnN0IHsg
cmV0dXJuIG1fc2hpcHBpbmdBZGRyZXNzLmdldCgpOyB9CisgICAgdm9pZCBzZXRTaGlwcGluZ0Fk
ZHJlc3MoUGF5bWVudEFkZHJlc3MqIHNoaXBwaW5nQWRkcmVzcykgeyBtX3NoaXBwaW5nQWRkcmVz
cyA9IHNoaXBwaW5nQWRkcmVzczsgfQorCiAgICAgY29uc3QgU3RyaW5nJiBzaGlwcGluZ09wdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fc2hpcHBpbmdPcHRpb247IH0KKyAgICB2b2lkIHNldFNoaXBw
aW5nT3B0aW9uKGNvbnN0IFN0cmluZyYgc2hpcHBpbmdPcHRpb24pIHsgbV9zaGlwcGluZ09wdGlv
biA9IHNoaXBwaW5nT3B0aW9uOyB9CisKICAgICBjb25zdCBTdHJpbmcmIHBheWVyTmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcGF5ZXJOYW1lOyB9CisgICAgdm9pZCBzZXRQYXllck5hbWUoY29uc3Qg
U3RyaW5nJiBwYXllck5hbWUpIHsgbV9wYXllck5hbWUgPSBwYXllck5hbWU7IH0KKwogICAgIGNv
bnN0IFN0cmluZyYgcGF5ZXJFbWFpbCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF5ZXJFbWFpbDsgfQor
ICAgIHZvaWQgc2V0UGF5ZXJFbWFpbChjb25zdCBTdHJpbmcmIHBheWVyRW1haWwpIHsgbV9wYXll
ckVtYWlsID0gcGF5ZXJFbWFpbDsgfQorCiAgICAgY29uc3QgU3RyaW5nJiBwYXllclBob25lKCkg
Y29uc3QgeyByZXR1cm4gbV9wYXllclBob25lOyB9CisgICAgdm9pZCBzZXRQYXllclBob25lKGNv
bnN0IFN0cmluZyYgcGF5ZXJQaG9uZSkgeyBtX3BheWVyUGhvbmUgPSBwYXllclBob25lOyB9CiAK
ICAgICB2b2lkIGNvbXBsZXRlKHN0ZDo6b3B0aW9uYWw8UGF5bWVudENvbXBsZXRlPiYmLCBET01Q
cm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAKIHByaXZhdGU6CisgICAgZXhwbGljaXQgUGF5bWVu
dFJlc3BvbnNlKFBheW1lbnRSZXF1ZXN0Jik7CisKKyAgICBSZWY8UGF5bWVudFJlcXVlc3Q+IG1f
cmVxdWVzdDsKICAgICBTdHJpbmcgbV9yZXF1ZXN0SWQ7CiAgICAgU3RyaW5nIG1fbWV0aG9kTmFt
ZTsKICAgICBKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0PiBtX2RldGFpbHM7CkBAIC01NSw2ICs4
Myw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fcGF5ZXJOYW1lOwogICAgIFN0cmluZyBtX3Bh
eWVyRW1haWw7CiAgICAgU3RyaW5nIG1fcGF5ZXJQaG9uZTsKKyAgICBib29sIG1fY29tcGxldGVD
YWxsZWQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDQ0MmRk
MGE2ZWRhYmU0YTZmYTY2Y2FiMmJiODdjYzU4MTdmZDJjYzMuLjhmZjk5NzU1ZDgwNDU5OGVlNzUz
MzhlYzkwN2QzNTFkNjI4ZmExM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQwNjYsNiArNDA2NiwxMiBAQAogCQlBMTQwNjE4
QzFFMkVDQTBBMDAzMkIzNEUgLyogTW9ja1ByZXZpZXdMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDA2MThBMUUyRUNBMEEwMDMy
QjM0RSAvKiBNb2NrUHJldmlld0xvYWRlckNsaWVudC5oICovOyB9OwogCQlBMTQwOTBGQjFBQTUx
RTFEMDA5MTE5MUEgLyogQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTQwOTBGQTFBQTUxRTFE
MDA5MTE5MUEgLyogQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW0gKi87IH07CiAJ
CUExNDA5MEZEMUFBNTFFNDgwMDkxMTkxQSAvKiBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDA5MEZD
MUFBNTFFNDgwMDkxMTkxQSAvKiBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBMTQ2RDMxQTFGOTlC
Q0Y4MDBEMjkxOTYgLyogSlNNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDZEMzE5MUY5OUJDQkIwMEQyOTE5
NiAvKiBKU01vY2tQYXltZW50Q29vcmRpbmF0b3IuY3BwICovOyB9OworCQlBMTQ2RDMxQjFGOTlC
Q0ZCMDBEMjkxOTYgLyogSlNNb2NrUGF5bWVudENvb3JkaW5hdG9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTQ2RDMxODFGOTlCQ0JBMDBEMjkxOTYg
LyogSlNNb2NrUGF5bWVudENvb3JkaW5hdG9yLmggKi87IH07CisJCUExNDZEMzIxMUY5OUNCMUEw
MEQyOTE5NiAvKiBNb2NrUGF5bWVudEFkZHJlc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDZEMzFDMUY5OUM5QzIwMEQyOTE5NiAvKiBNb2NrUGF5
bWVudEFkZHJlc3MuaCAqLzsgfTsKKwkJQTE0NkQzMjIxRjk5RDBFQzAwRDI5MTk2IC8qIEpTTW9j
a1BheW1lbnRBZGRyZXNzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEExNDZEMzIwMUY5OUNBM0UwMEQyOTE5NiAvKiBKU01vY2tQYXltZW50QWRkcmVz
cy5jcHAgKi87IH07CisJCUExNDZEMzIzMUY5OUQwRUYwMEQyOTE5NiAvKiBKU01vY2tQYXltZW50
QWRkcmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTE0NkQzMUYxRjk5Q0EzRDAwRDI5MTk2IC8qIEpTTW9ja1BheW1lbnRBZGRyZXNzLmggKi87IH07
CisJCUExNDZEMzI1MUY5OUQ2OTgwMEQyOTE5NiAvKiBNb2NrUGF5bWVudENvbnRhY3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDZEMzI0MUY5OUQ2
OTgwMEQyOTE5NiAvKiBNb2NrUGF5bWVudENvbnRhY3QuaCAqLzsgfTsKIAkJQTE0ODMyQjAxODdG
NjE4RDAwREE2M0E2IC8qIFdBS0FwcEtpdFN0dWJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTQ4MzI4QzE4N0Y1MDg3MDBEQTYzQTYgLyogV0FLQXBw
S2l0U3R1YnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlBMTQ4MzJCMTE4N0Y2MUUxMDBEQTYzQTYgLyogV0FLQXBwS2l0U3R1YnMubSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDgzMjhEMTg3RjUwODcw
MERBNjNBNiAvKiBXQUtBcHBLaXRTdHVicy5tICovOyB9OwogCQlBMTQ4MzJCMjE4N0Y2MUVEMDBE
QTYzQTYgLyogV0FLQ2xpcFZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEExNDgzMjhFMTg3RjUwODcwMERBNjNBNiAvKiBXQUtDbGlwVmlldy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00MTAwLDYg
KzQxMDYsNyBAQAogCQlBMTQ5Nzg2RTFBQkFGMzM4MDBDRUY3RTQgLyogQ29udGVudEZpbHRlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTQ5Nzg2
QzFBQkFGMzM4MDBDRUY3RTQgLyogQ29udGVudEZpbHRlci5jcHAgKi87IH07CiAJCUExNDk3ODZG
MUFCQUYzMzgwMENFRjdFNCAvKiBDb250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTQ5Nzg2RDFBQkFGMzM4MDBDRUY3RTQgLyogQ29u
dGVudEZpbHRlci5oICovOyB9OwogCQlBMTQ5Nzg3MTFBQkFGM0E1MDBDRUY3RTQgLyogUGxhdGZv
cm1Db250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMTQ5Nzg3MDFBQkFGM0E1MDBDRUY3RTQgLyogUGxhdGZvcm1Db250ZW50RmlsdGVy
LmggKi87IH07CisJCUExNEJCMEEwMUY5ODEzQjgwMDYwNUEzNSAvKiBNb2NrUGF5bWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0QkIwOUUxRjk4
MTNCODAwNjA1QTM1IC8qIE1vY2tQYXltZW50LmggKi87IH07CiAJCUExNUQ3NTE1MUU2OEY3QzQw
MEEzNUZCQyAvKiBCbG9iQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTE1RDc1MTIxRTY4RjdCMTAwQTM1RkJDIC8qIEJsb2JDYWxsYmFj
ay5jcHAgKi87IH07CiAJCUExNUQ3NTE2MUU2OEY3QzgwMEEzNUZCQyAvKiBCbG9iQ2FsbGJhY2su
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNUQ3NTEz
MUU2OEY3QjEwMEEzNUZCQyAvKiBCbG9iQ2FsbGJhY2suaCAqLzsgfTsKIAkJQTE1RDc1MUIxRTY4
RjhBMzAwQTM1RkJDIC8qIEpTQmxvYkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTVENzUxODFFNjhGODM2MDBBMzVGQkMgLyogSlNCbG9i
Q2FsbGJhY2suaCAqLzsgfTsKQEAgLTEyMzU1LDYgKzEyMzYyLDE0IEBACiAJCUExNDA2MThBMUUy
RUNBMEEwMDMyQjM0RSAvKiBNb2NrUHJldmlld0xvYWRlckNsaWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrUHJldmlld0xvYWRlckNsaWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBMTQwOTBGQTFBQTUxRTFEMDA5MTE5MUEgLyogQ29udGVudEZp
bHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE0MDkwRkMxQUE1MUU0ODAwOTExOTFBIC8qIENvbnRlbnRG
aWx0ZXJVbmJsb2NrSGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTE0NkQzMTYxRjk5QjUzRDAwRDI5MTk2IC8qIE1vY2tQYXltZW50Q29vcmRpbmF0b3IuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IE1vY2tQYXltZW50Q29vcmRpbmF0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBMTQ2RDMxODFGOTlCQ0JBMDBEMjkxOTYgLyogSlNNb2NrUGF5bWVudENvb3JkaW5h
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9ja1BheW1lbnRDb29y
ZGluYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTQ2RDMxOTFGOTlCQ0JC
MDBEMjkxOTYgLyogSlNNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9ja1BheW1lbnRDb29yZGluYXRvci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExNDZEMzFDMUY5OUM5QzIwMEQyOTE5NiAvKiBNb2Nr
UGF5bWVudEFkZHJlc3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja1BheW1lbnRBZGRyZXNzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExNDZEMzFFMUY5OUM5QzIwMEQyOTE5NiAvKiBN
b2NrUGF5bWVudEFkZHJlc3MuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1vY2tQYXltZW50QWRkcmVzcy5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExNDZEMzFGMUY5OUNBM0QwMEQyOTE5NiAvKiBKU01v
Y2tQYXltZW50QWRkcmVzcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01v
Y2tQYXltZW50QWRkcmVzcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTQ2RDMy
MDFGOTlDQTNFMDBEMjkxOTYgLyogSlNNb2NrUGF5bWVudEFkZHJlc3MuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNb2NrUGF5bWVudEFkZHJlc3MuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTQ2RDMyNDFGOTlENjk4MDBEMjkxOTYgLyogTW9j
a1BheW1lbnRDb250YWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tQYXltZW50Q29udGFjdC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTQ4MzI4QzE4N0Y1MDg3MDBEQTYzQTYgLyog
V0FLQXBwS2l0U3R1YnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0FLQXBw
S2l0U3R1YnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE0ODMyOEQxODdGNTA4
NzAwREE2M0E2IC8qIFdBS0FwcEtpdFN0dWJzLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2Jq
YzsgcGF0aCA9IFdBS0FwcEtpdFN0dWJzLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUExNDgzMjhFMTg3RjUwODcwMERBNjNBNiAvKiBXQUtDbGlwVmlldy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXQUtDbGlwVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTIzODksNiArMTI0MDQsNyBAQAogCQlBMTQ5Nzg2QzFBQkFGMzM4MDBDRUY3RTQg
LyogQ29udGVudEZpbHRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBDb250ZW50RmlsdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE0OTc4
NkQxQUJBRjMzODAwQ0VGN0U0IC8qIENvbnRlbnRGaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ29udGVudEZpbHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBMTQ5Nzg3MDFBQkFGM0E1MDBDRUY3RTQgLyogUGxhdGZvcm1Db250ZW50RmlsdGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtQ29udGVudEZpbHRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTRCQjA5RTFGOTgxM0I4MDA2MDVBMzUg
LyogTW9ja1BheW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja1BheW1lbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE1RDc1MTIxRTY4RjdCMTAwQTM1RkJDIC8qIEJsb2JDYWxs
YmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCbG9iQ2FsbGJh
Y2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTVENzUxMzFFNjhGN0IxMDBB
MzVGQkMgLyogQmxvYkNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEJsb2JDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTVENzUxNDFF
NjhGN0IxMDBBMzVGQkMgLyogQmxvYkNhbGxiYWNrLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBCbG9iQ2FsbGJhY2suaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc2ODks
OCArMTc3MDUsMTMgQEAKIAkJCQkyRDZGM0U4QzFDMUVDQjFDMDA2MURCRDQgLyogTW9ja1BhZ2VP
dmVybGF5LmlkbCAqLywKIAkJCQkyREFBRTMyQzE5RENBRjYwMDBFMDAyRDIgLyogTW9ja1BhZ2VP
dmVybGF5Q2xpZW50LmNwcCAqLywKIAkJCQkyREFBRTMyRDE5RENBRjYwMDBFMDAyRDIgLyogTW9j
a1BhZ2VPdmVybGF5Q2xpZW50LmggKi8sCisJCQkJQTE0QkIwOUUxRjk4MTNCODAwNjA1QTM1IC8q
IE1vY2tQYXltZW50LmggKi8sCisJCQkJQTE0NkQzMUMxRjk5QzlDMjAwRDI5MTk2IC8qIE1vY2tQ
YXltZW50QWRkcmVzcy5oICovLAorCQkJCUExNDZEMzFFMUY5OUM5QzIwMEQyOTE5NiAvKiBNb2Nr
UGF5bWVudEFkZHJlc3MuaWRsICovLAorCQkJCUExNDZEMzI0MUY5OUQ2OTgwMEQyOTE5NiAvKiBN
b2NrUGF5bWVudENvbnRhY3QuaCAqLywKIAkJCQlBMUFGRURFNTFGOEJGRjZEMDA4NzAxM0YgLyog
TW9ja1BheW1lbnRDb29yZGluYXRvci5jcHAgKi8sCiAJCQkJQTFBRkVERTQxRjhCRkY2RDAwODcw
MTNGIC8qIE1vY2tQYXltZW50Q29vcmRpbmF0b3IuaCAqLywKKwkJCQlBMTQ2RDMxNjFGOTlCNTNE
MDBEMjkxOTYgLyogTW9ja1BheW1lbnRDb29yZGluYXRvci5pZGwgKi8sCiAJCQkJQTE0MDYxODkx
RTJFQ0EwQTAwMzJCMzRFIC8qIE1vY2tQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcCAqLywKIAkJCQlB
MTQwNjE4QTFFMkVDQTBBMDAzMkIzNEUgLyogTW9ja1ByZXZpZXdMb2FkZXJDbGllbnQuaCAqLywK
IAkJCQlFQjA4MUNEODE2OTYwODQ0MDA1NTM3MzAgLyogVHlwZUNvbnZlcnNpb25zLmggKi8sCkBA
IC0xNzcyMSw2ICsxNzc0MiwxMCBAQAogCQkJCUExOUFFQTFFMUFBQTgwNkUwMEI1MkIyNSAvKiBK
U01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCAqLywKIAkJCQkyRDZGM0U5MjFDMUY4NTU1MDA2
MURCRDQgLyogSlNNb2NrUGFnZU92ZXJsYXkuY3BwICovLAogCQkJCTJENkYzRTkzMUMxRjg1NTUw
MDYxREJENCAvKiBKU01vY2tQYWdlT3ZlcmxheS5oICovLAorCQkJCUExNDZEMzIwMUY5OUNBM0Uw
MEQyOTE5NiAvKiBKU01vY2tQYXltZW50QWRkcmVzcy5jcHAgKi8sCisJCQkJQTE0NkQzMUYxRjk5
Q0EzRDAwRDI5MTk2IC8qIEpTTW9ja1BheW1lbnRBZGRyZXNzLmggKi8sCisJCQkJQTE0NkQzMTkx
Rjk5QkNCQjAwRDI5MTk2IC8qIEpTTW9ja1BheW1lbnRDb29yZGluYXRvci5jcHAgKi8sCisJCQkJ
QTE0NkQzMTgxRjk5QkNCQTAwRDI5MTk2IC8qIEpTTW9ja1BheW1lbnRDb29yZGluYXRvci5oICov
LAogCQkJCUVCRjUxMjFBMTY5NjQ5NkMwMDU2QkQyNSAvKiBKU1R5cGVDb252ZXJzaW9ucy5jcHAg
Ki8sCiAJCQkJRUJGNTEyMUIxNjk2NDk2QzAwNTZCRDI1IC8qIEpTVHlwZUNvbnZlcnNpb25zLmgg
Ki8sCiAJCQkpOwpAQCAtMjY4MjAsNiArMjY4NDUsOCBAQAogCQkJCTUzOEVDOTMzMUY5OUI5Rjcw
MDREMjJBOCAvKiBKU01vY2tDRE1GYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTlBRUEy
MTFBQUE4MDg2MDBCNTJCMjUgLyogSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MzhFQzkzNDFGOTlCOUY3MDA0RDIyQTggLyogSlNNb2NrUGFnZU92ZXJs
YXkuaCBpbiBIZWFkZXJzICovLAorCQkJCUExNDZEMzIzMUY5OUQwRUYwMEQyOTE5NiAvKiBKU01v
Y2tQYXltZW50QWRkcmVzcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTE0NkQzMUIxRjk5QkNGQjAw
RDI5MTk2IC8qIEpTTW9ja1BheW1lbnRDb29yZGluYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RUJGNTEyMUQxNjk2NDk2QzAwNTZCRDI1IC8qIEpTVHlwZUNvbnZlcnNpb25zLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDREMyNkI0MTE2MEE4Q0NFMDAyNjc1N0IgLyogTGVnYWN5TW9ja0NETS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTFCRjZCODMxQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50
RmlsdGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTI2ODI5LDYgKzI2ODU2LDkgQEAKIAkJCQk0MTU3
RUJGQjFFM0FCNjdGMDBBQzlGRTkgLyogTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQkyRDZGM0U5MTFDMUVDQjJGMDA2MURCRDQgLyogTW9ja1BhZ2VPdmVy
bGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDk3RjA0ODE5REQ0MTQwMDAxRUU5QzMgLyogTW9j
a1BhZ2VPdmVybGF5Q2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlBMTRCQjBBMDFGOTgxM0I4
MDA2MDVBMzUgLyogTW9ja1BheW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUExNDZEMzIxMUY5
OUNCMUEwMEQyOTE5NiAvKiBNb2NrUGF5bWVudEFkZHJlc3MuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUExNDZEMzI1MUY5OUQ2OTgwMEQyOTE5NiAvKiBNb2NrUGF5bWVudENvbnRhY3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUExQUZFREU2MUY4QkZGNkQwMDg3MDEzRiAvKiBNb2NrUGF5bWVudENvb3Jk
aW5hdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTQwNjE4QzFFMkVDQTBBMDAzMkIzNEUgLyog
TW9ja1ByZXZpZXdMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUFBNUYzQjhEMTZD
QzMzRDEwMDQ1NUVCMCAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jay5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yODA0Myw2ICsyODA3Myw3IEBACiAJCQkJNDY3MzAyMDIxQzRFRkU3ODAwQkNC
MzU3IC8qIElnbm9yZU9wZW5zRHVyaW5nVW5sb2FkQ291bnRJbmNyZW1lbnRlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjI3NTM1NzAwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1NUEzMzZGOTFEODIxRTNDMDAyMkM0QzcgLyogSW1hZ2VCYWNraW5nU3RvcmUu
aCBpbiBIZWFkZXJzICovLAorCQkJCTMxODE1QTMxMUY5QTZDOEYwMEZDQkY4OSAvKiBJbWFnZUJp
dG1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M3OTAzQjMxRjg2Rjk1QzAwNDYzQTcwIC8qIElt
YWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJBMTBCOTIw
QjM4MThCRDAwMDk5QUE0IC8qIEltYWdlQnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyMkJE
OUY3RjEzNTM2MjVDMDA5QkQxMDIgLyogSW1hZ2VCdWZmZXJEYXRhLmggaW4gSGVhZGVycyAqLywK
QEAgLTMwMjg3LDcgKzMwMzE4LDYgQEAKIAkJCQkwRjU0RENFNjE4ODEwNTFEMDAzRUVEQkIgLyog
VGV4dEF1dG9TaXppbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQzNEQTM0MEQwMDZDMUQwMEVG
NkYyNiAvKiBUZXh0Qm91bmRhcmllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcxNTFCRDgxMkYx
NTU4RjAwNUEwRjY0IC8qIFRleHRDaGVja2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQkz
MTgxNUEzMTFGOUE2QzhGMDBGQ0JGODkgLyogSW1hZ2VCaXRtYXAuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE3N0QwMDEyMTMzQjBBRUIwMEQ2NjU4QyAvKiBUZXh0Q2hlY2tpbmcuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3REJGOERFMTI3NjkxOUMwMDZCNjAwOCAvKiBUZXh0Q2hlY2tpbmdIZWxwZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUIyQzNEQTNBMEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Q29k
ZWMuaCBpbiBIZWFkZXJzICovLApAQCAtMzEwNDQsNiArMzEwNzQsOCBAQAogCQkJCUNERjRCNzMy
MUUwM0QwNjAwMEUyMzVBMiAvKiBKU01vY2tDRE1GYWN0b3J5LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUExOUFFQTIyMUFBQTgwOEEwMEI1MkIyNSAvKiBKU01vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ0MTUwREUxQzFGODY4QzAwMEEzQkEyIC8qIEpT
TW9ja1BhZ2VPdmVybGF5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUExNDZEMzIyMUY5OUQwRUMw
MEQyOTE5NiAvKiBKU01vY2tQYXltZW50QWRkcmVzcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlB
MTQ2RDMxQTFGOTlCQ0Y4MDBEMjkxOTYgLyogSlNNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUVCRjUxMjFDMTY5NjQ5NkMwMDU2QkQyNSAvKiBKU1R5cGVDb252
ZXJzaW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREMyNkI0MDE2MEE4Q0M2MDAyNjc1N0Ig
LyogTGVnYWN5TW9ja0NETS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREY0QjczMTFFMDNEMDA3
MDBFMjM1QTIgLyogTW9ja0NETUZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMjc4OCw3
ICszMjgyMCw2IEBACiAJCQkJNTE0Qzc2NTAwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNlRXJy
b3JNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTRDNzY3ODBDRTkyM0ExMDA3RUYzQ0QgLyog
UmVzb3VyY2VIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0VFNjg0NkMxMkQyNkUzODAw
RTc5NDE1IC8qIFJlc291cmNlSGFuZGxlQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTMy
MDQyMDIxRjlBOUYxMDAwQjgxQjJBIC8qIFVzZXJBZ2VudFNjcmlwdHNEYXRhLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTI2RkFFNENDMTg1MkUzQTUwMDRDOEM0NiAvKiBSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI2QzE1Q0Y2MTg1
N0UxNUQwMEYxNUMwMyAvKiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0
aE9wZXJhdGlvblF1ZXVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQkEwMDMxMTZGQjkyQUMw
MEJBN0EzNSAvKiBSZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMz
NTExLDYgKzMzNTQyLDcgQEAKIAkJCQk1RDU5NzVCNzE5NjM2MzdCMDBEMDA4NzggLyogVXNlckFn
ZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMjYyNTVGMDAxODg3OERGRjAwMDZFMUZEIC8qIFVz
ZXJBZ2VudElPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTI2MjU1RjA0MTg4NzhFMTEwMDA2RTFG
RCAvKiBVc2VyQWdlbnRNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQk1MzIwNDIwMjFGOUE5RjEw
MDBCODFCMkEgLyogVXNlckFnZW50U2NyaXB0c0RhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUFFNzlENDIxODhEQjYxRjAwMjIzOUMyIC8qIFVzZXJDb250ZW50Q29udHJvbGxlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3QzNGMDFDMjFDOEU1QUMyMDBBREQ5NjIgLyogVXNlckNvbnRlbnRQ
cm92aWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0FDRjNCQzEwNzI5MjFBMDBDMEM4QTMg
LyogVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDg3YzA1NjE3OGU4ZDY0NjNkYjRlNzhmZjE1Y2VhMGFk
MTI0ZGM3MzMuLjZiOWNjYWZlYzliMGU1NzNjZDhjZWQ1MzY0M2M0NWE1ODRhNmJmZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTUxMyw4ICs1MTMsMTEgQEAgSW50ZXJu
YWxzOjpJbnRlcm5hbHMoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIHNldENvbnNvbGVNZXNzYWdl
TGlzdGVuZXIobnVsbHB0cik7CiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQotICAgIGlmIChhdXRv
IGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkKLSAgICAgICAgZnJhbWUtPm1haW5GcmFtZSgpLnNl
dFBheW1lbnRDb29yZGluYXRvcihzdGQ6Om1ha2VfdW5pcXVlPFBheW1lbnRDb29yZGluYXRvcj4o
Km5ldyBNb2NrUGF5bWVudENvb3JkaW5hdG9yKGZyYW1lLT5tYWluRnJhbWUoKSkpKTsKKyAgICBh
dXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCk7CisgICAgaWYgKGZyYW1lICYmIGZyYW1lLT5p
c01haW5GcmFtZSgpKSB7CisgICAgICAgIG1fbW9ja1BheW1lbnRDb29yZGluYXRvciA9IG5ldyBN
b2NrUGF5bWVudENvb3JkaW5hdG9yKGZyYW1lLT5tYWluRnJhbWUoKSk7CisgICAgICAgIGZyYW1l
LT5tYWluRnJhbWUoKS5zZXRQYXltZW50Q29vcmRpbmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxQYXlt
ZW50Q29vcmRpbmF0b3I+KCptX21vY2tQYXltZW50Q29vcmRpbmF0b3IpKTsKKyAgICB9CiAjZW5k
aWYKIH0KIApAQCAtNDI0NSw0ICs0MjQ4LDExIEBAIFJlZjxFeHRlbmRhYmxlRXZlbnQ+IEludGVy
bmFsczo6Y3JlYXRlVHJ1c3RlZEV4dGVuZGFibGVFdmVudCgpCiB9CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShBUFBMRV9QQVkpCitNb2NrUGF5bWVudENvb3JkaW5hdG9yJiBJbnRlcm5hbHM6Om1vY2tQ
YXltZW50Q29vcmRpbmF0b3IoKSBjb25zdAoreworICAgIHJldHVybiAqbV9tb2NrUGF5bWVudENv
b3JkaW5hdG9yOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDE3YjhjNjgxNTczZDQ3MmJjZjU1ZTM2M2QyZmUwNDg2
MjQ3ZTllOWIuLmFhZTc2NGNlZDM3NDY0OWY4NzRmNzA5ZGFjZDMwMTQ1NDBhZGRlYTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtNzIsNiArNzIsNyBAQCBjbGFzcyBNZW1vcnlJ
bmZvOwogY2xhc3MgTW9ja0NETUZhY3Rvcnk7CiBjbGFzcyBNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzOwogY2xhc3MgTW9ja1BhZ2VPdmVybGF5OworY2xhc3MgTW9ja1BheW1lbnRDb29yZGluYXRv
cjsKIGNsYXNzIE5vZGVMaXN0OwogY2xhc3MgUGFnZTsKIGNsYXNzIFJhbmdlOwpAQCAtNjE2LDYg
KzYxNywxMCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIGJvb2wgaGFzU2VydmljZVdvcmtlclJl
Z2lzdGVyZWRGb3JPcmlnaW4oY29uc3QgU3RyaW5nJik7CisgICAgICAgIAorI2lmIEVOQUJMRShB
UFBMRV9QQVkpCisgICAgTW9ja1BheW1lbnRDb29yZGluYXRvciYgbW9ja1BheW1lbnRDb29yZGlu
YXRvcigpIGNvbnN0OworI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgSW50ZXJuYWxz
KERvY3VtZW50Jik7CkBAIC02MzgsNiArNjQzLDEwIEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8SW5zcGVjdG9yU3R1YkZyb250ZW5kPiBtX2luc3BlY3RvckZyb250ZW5kOwogICAg
IFJlZlB0cjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb247
CisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZKQorICAgIE1vY2tQYXltZW50Q29vcmRpbmF0b3IqIG1f
bW9ja1BheW1lbnRDb29yZGluYXRvciB7IG51bGxwdHIgfTsKKyNlbmRpZgogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGRl
ODdhZTlkYTA3ZjMxOTI2ZDM3NjIwNjc0NjIyZTQwMmUyMTU4MDQuLjQ5ZjJlZGRkMGEzMDMyYmEw
NDJhMDVkNzFiN2I4ZjFhOTRkMGY1MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwKQEAgLTU2MCw0ICs1NjAsNiBAQCBlbnVtIEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yIHsKICAg
ICBbQ29uZGl0aW9uYWw9U0VSVklDRV9XT1JLRVJdIEV4dGVuZGFibGVFdmVudCBjcmVhdGVUcnVz
dGVkRXh0ZW5kYWJsZUV2ZW50KCk7CiAKICAgICBib29sZWFuIGhhc1NlcnZpY2VXb3JrZXJSZWdp
c3RlcmVkRm9yT3JpZ2luKERPTVN0cmluZyBvcmlnaW4pOworCisgICAgW0NvbmRpdGlvbmFsPUFQ
UExFX1BBWV0gcmVhZG9ubHkgYXR0cmlidXRlIE1vY2tQYXltZW50Q29vcmRpbmF0b3IgbW9ja1Bh
eW1lbnRDb29yZGluYXRvcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tQYXltZW50LmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZTk1MzlmYjJkYzZlMDlhMjNiNTk3MzI5NzM0ODM3ZTllODVmNTdmMAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnQuaApAQCAtMCww
ICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVBQTEVf
UEFZKQorCisjaW5jbHVkZSAiQXBwbGVQYXlQYXltZW50LmgiCisjaW5jbHVkZSAiUGF5bWVudC5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1vY2tQYXltZW50IGZpbmFsIDogcHVi
bGljIFBheW1lbnQgeworcHVibGljOgorICAgIGV4cGxpY2l0IE1vY2tQYXltZW50KEFwcGxlUGF5
UGF5bWVudCYmIGFwcGxlUGF5UGF5bWVudCkKKyAgICAgICAgOiBtX2FwcGxlUGF5UGF5bWVudCB7
IFdURk1vdmUoYXBwbGVQYXlQYXltZW50KSB9CisgICAgeworICAgIH0KKworICAgIEFwcGxlUGF5
UGF5bWVudCB0b0FwcGxlUGF5UGF5bWVudCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXBwbGVQ
YXlQYXltZW50OyB9CisKK3ByaXZhdGU6CisgICAgQXBwbGVQYXlQYXltZW50IG1fYXBwbGVQYXlQ
YXltZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KEFQUExFX1BBWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1l
bnRBZGRyZXNzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50QWRkcmVzcy5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmIxMjNjZjVhZjYwNzhhYzk0YTE3Zjk2OGIxMjhmZTY0OTFjODQ3MjUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50QWRkcmVz
cy5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShBUFBMRV9QQVkpCisKKyNpbmNsdWRlICJBcHBsZVBheVBheW1lbnRDb250YWN0LmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IE1vY2tQYXltZW50QWRkcmVzcyA6IEFwcGxl
UGF5UGF5bWVudENvbnRhY3QgeworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKEFQUExFX1BBWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja1BheW1lbnRBZGRyZXNzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1Bh
eW1lbnRBZGRyZXNzLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMGIyZTFiYjRmZjFjNjkyMGY4Y2Q2ODY1NmFj
YzQ4MzE1MWYwYzcxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrUGF5bWVudEFkZHJlc3MuaWRsCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisg
ICAgQ29uZGl0aW9uYWw9QVBQTEVfUEFZCitdIGRpY3Rpb25hcnkgTW9ja1BheW1lbnRBZGRyZXNz
IHsKKyAgICBET01TdHJpbmcgY291bnRyeUNvZGU7CisgICAgRnJvemVuQXJyYXk8RE9NU3RyaW5n
PiBhZGRyZXNzTGluZXM7CisgICAgRE9NU3RyaW5nIGFkbWluaXN0cmF0aXZlQXJlYTsKKyAgICBE
T01TdHJpbmcgbG9jYWxpdHk7CisgICAgRE9NU3RyaW5nIHN1YkxvY2FsaXR5OworICAgIERPTVN0
cmluZyBwb3N0YWxDb2RlOworICAgIERPTVN0cmluZyBsb2NhbGl6ZWROYW1lOworICAgIERPTVN0
cmluZyBwaG9uZU51bWJlcjsKKyAgICBET01TdHJpbmcgZW1haWxBZGRyZXNzOworfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb250YWN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29udGFjdC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI1Mjlk
NDRiMmYzNTJhY2JjYjgyZjllYjA5NDNlZTE4NzhlZDYwNDUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29udGFjdC5oCkBAIC0wLDAgKzEsNTAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBUFBMRV9QQVkpCisK
KyNpbmNsdWRlICJBcHBsZVBheVBheW1lbnRDb250YWN0LmgiCisjaW5jbHVkZSAiUGF5bWVudENv
bnRhY3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNb2NrUGF5bWVudENvbnRh
Y3QgZmluYWwgOiBwdWJsaWMgUGF5bWVudENvbnRhY3QgeworcHVibGljOgorICAgIGV4cGxpY2l0
IE1vY2tQYXltZW50Q29udGFjdChBcHBsZVBheVBheW1lbnRDb250YWN0JiYgYXBwbGVQYXlQYXlt
ZW50Q29udGFjdCkKKyAgICAgICAgOiBtX2FwcGxlUGF5UGF5bWVudENvbnRhY3QgeyBXVEZNb3Zl
KGFwcGxlUGF5UGF5bWVudENvbnRhY3QpIH0KKyAgICB7CisgICAgfQorCisgICAgQXBwbGVQYXlQ
YXltZW50Q29udGFjdCB0b0FwcGxlUGF5UGF5bWVudENvbnRhY3QoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX2FwcGxlUGF5UGF5bWVudENvbnRhY3Q7IH0KKworcHJpdmF0ZToKKyAgICBBcHBsZVBh
eVBheW1lbnRDb250YWN0IG1fYXBwbGVQYXlQYXltZW50Q29udGFjdDsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcAppbmRleCA5Nzk0
YjI4ZGM5NDMyYWVhMWI4NGE0OWE0N2QxNDE4MzUwZTMxNDFhLi44MGE4ZGM1YjA4NmZjYzE2YjYz
MGU2ZDhmMmZlM2Q2MWJiYWM4ZDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tQYXltZW50Q29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja1BheW1lbnRDb29yZGluYXRvci5jcHAKQEAgLTI5LDYgKzI5LDggQEAKICNpZiBFTkFCTEUo
QVBQTEVfUEFZKQogCiAjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCisjaW5jbHVkZSAiTW9ja1BheW1l
bnQuaCIKKyNpbmNsdWRlICJNb2NrUGF5bWVudENvbnRhY3QuaCIKICNpbmNsdWRlICJQYXltZW50
Q29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5o
PgpAQCAtNTgsMzAgKzYwLDc1IEBAIGJvb2wgTW9ja1BheW1lbnRDb29yZGluYXRvcjo6Y2FuTWFr
ZVBheW1lbnRzKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBNb2NrUGF5bWVudENvb3Jk
aW5hdG9yOjpjYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIE1vY2tQYXltZW50Q29vcmRpbmF0b3I6OmNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVD
YXJkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIHsKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgTW9ja1BheW1lbnRD
b29yZGluYXRvcjo6b3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
LCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE1v
Y2tQYXltZW50Q29vcmRpbmF0b3I6Om9wZW5QYXltZW50U2V0dXAoY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgRnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKCkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVl
KTsKICAgICB9KTsKIH0KIAorc3RhdGljIHVpbnQ2NF90IHNob3dDb3VudDsKK3N0YXRpYyB1aW50
NjRfdCBoaWRlQ291bnQ7CisKK3N0YXRpYyB2b2lkIGRpc3BhdGNoSWZTaG93aW5nKHVpbnQ2NF90
IGN1cnJlbnRTaG93Q291bnQsIEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKK3sKKyAgICBB
U1NFUlQoc2hvd0NvdW50ID4gaGlkZUNvdW50KTsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goW2N1cnJlbnRTaG93Q291bnQsIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbildKCkgewor
ICAgICAgICBpZiAoc2hvd0NvdW50ID4gaGlkZUNvdW50ICYmIHNob3dDb3VudCA9PSBjdXJyZW50
U2hvd0NvdW50KQorICAgICAgICAgICAgZnVuY3Rpb24oKTsKKyAgICB9KTsKK30KKwogYm9vbCBN
b2NrUGF5bWVudENvb3JkaW5hdG9yOjpzaG93UGF5bWVudFVJKGNvbnN0IFVSTCYsIGNvbnN0IFZl
Y3RvcjxVUkw+JiwgY29uc3QgQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmKQogewotICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbbWFpbkZyYW1lID0gbWFrZVJlZihtX21haW5GcmFt
ZSldKCkgeworICAgIEFTU0VSVChzaG93Q291bnQgPT0gaGlkZUNvdW50KTsKKyAgICArK3Nob3dD
b3VudDsKKyAgICBkaXNwYXRjaElmU2hvd2luZyhzaG93Q291bnQsIFttYWluRnJhbWUgPSBtYWtl
UmVmKG1fbWFpbkZyYW1lKV0oKSB7CiAgICAgICAgIG1haW5GcmFtZS0+cGF5bWVudENvb3JkaW5h
dG9yKCkudmFsaWRhdGVNZXJjaGFudCh7IFVSTCgpLCBBU0NJSUxpdGVyYWwoImh0dHBzOi8vd2Vi
a2l0Lm9yZy8iKSB9KTsKICAgICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBNb2Nr
UGF5bWVudENvb3JkaW5hdG9yOjpjb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihjb25zdCBQYXlt
ZW50TWVyY2hhbnRTZXNzaW9uJikKK3sKKyAgICBkaXNwYXRjaElmU2hvd2luZyhzaG93Q291bnQs
IFttYWluRnJhbWUgPSBtYWtlUmVmKG1fbWFpbkZyYW1lKSwgc2hpcHBpbmdBZGRyZXNzID0gbV9z
aGlwcGluZ0FkZHJlc3NdKCkgeworICAgICAgICBBcHBsZVBheVBheW1lbnRDb250YWN0IGNvbnRh
Y3QgPSBzaGlwcGluZ0FkZHJlc3M7CisgICAgICAgIG1haW5GcmFtZS0+cGF5bWVudENvb3JkaW5h
dG9yKCkuZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0KE1vY2tQYXltZW50Q29udGFjdCB7IFdURk1v
dmUoY29udGFjdCkgfSk7CisKKyAgICAgICAgQXBwbGVQYXlQYXltZW50IHBheW1lbnQ7CisgICAg
ICAgIHBheW1lbnQuc2hpcHBpbmdDb250YWN0ID0gc2hpcHBpbmdBZGRyZXNzOworICAgICAgICBt
YWluRnJhbWUtPnBheW1lbnRDb29yZGluYXRvcigpLmRpZEF1dGhvcml6ZVBheW1lbnQoTW9ja1Bh
eW1lbnQgeyBXVEZNb3ZlKHBheW1lbnQpIH0pOworICAgIH0pOworfQorCit2b2lkIE1vY2tQYXlt
ZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlUGF5bWVudFNlc3Npb24oc3RkOjpvcHRpb25hbDxQYXlt
ZW50QXV0aG9yaXphdGlvblJlc3VsdD4mJikKK3sKKyAgICArK2hpZGVDb3VudDsKKyAgICBBU1NF
UlQoc2hvd0NvdW50ID09IGhpZGVDb3VudCk7Cit9CisKK3ZvaWQgTW9ja1BheW1lbnRDb29yZGlu
YXRvcjo6YWJvcnRQYXltZW50U2Vzc2lvbigpCit7CisgICAgKytoaWRlQ291bnQ7CisgICAgQVNT
RVJUKHNob3dDb3VudCA9PSBoaWRlQ291bnQpOworfQorCit2b2lkIE1vY2tQYXltZW50Q29vcmRp
bmF0b3I6OmNhbmNlbFBheW1lbnRTZXNzaW9uKCkKK3sKKyAgICArK2hpZGVDb3VudDsKKyAgICBB
U1NFUlQoc2hvd0NvdW50ID09IGhpZGVDb3VudCk7Cit9CisKIHZvaWQgTW9ja1BheW1lbnRDb29y
ZGluYXRvcjo6cGF5bWVudENvb3JkaW5hdG9yRGVzdHJveWVkKCkKIHsKKyAgICBBU1NFUlQoc2hv
d0NvdW50ID09IGhpZGVDb3VudCk7CiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5oIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmgKaW5kZXggMjJiZTliM2E4
MmIzYzZlZDI5MzhhMzVkZTc2NjUwMzNjNmNhNjE1OC4uNjllOGNkOTkxOTExNzQzMTJhMTYwODI1
N2JjNGVhZDk5YTA0MjRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
UGF5bWVudENvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5
bWVudENvb3JkaW5hdG9yLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShBUFBMRV9Q
QVkpCiAKKyNpbmNsdWRlICJNb2NrUGF5bWVudEFkZHJlc3MuaCIKICNpbmNsdWRlICJQYXltZW50
Q29vcmRpbmF0b3JDbGllbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzcsMjIgKzM4
LDI4IEBAIGNsYXNzIE1vY2tQYXltZW50Q29vcmRpbmF0b3IgZmluYWwgOiBwdWJsaWMgUGF5bWVu
dENvb3JkaW5hdG9yQ2xpZW50IHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBNb2NrUGF5bWVudENv
b3JkaW5hdG9yKE1haW5GcmFtZSYpOwogCisgICAgdm9pZCBzZXRTaGlwcGluZ0FkZHJlc3MoTW9j
a1BheW1lbnRBZGRyZXNzJiYgc2hpcHBpbmdBZGRyZXNzKSB7IG1fc2hpcHBpbmdBZGRyZXNzID0g
V1RGTW92ZShzaGlwcGluZ0FkZHJlc3MpOyB9CisKKyAgICB2b2lkIHJlZigpIGNvbnN0IHsgfQor
ICAgIHZvaWQgZGVyZWYoKSBjb25zdCB7IH0KKwogcHJpdmF0ZToKICAgICBib29sIHN1cHBvcnRz
VmVyc2lvbih1bnNpZ25lZCkgZmluYWw7CiAgICAgYm9vbCBjYW5NYWtlUGF5bWVudHMoKSBmaW5h
bDsKICAgICB2b2lkIGNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYsIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBv
cGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFdURjo6RnVuY3Rp
b248dm9pZChib29sKT4mJik7CiAgICAgYm9vbCBzaG93UGF5bWVudFVJKGNvbnN0IFVSTCYsIGNv
bnN0IFZlY3RvcjxVUkw+JiwgY29uc3QgQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmKSBm
aW5hbDsKLSAgICB2b2lkIGNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKGNvbnN0IFBheW1lbnRN
ZXJjaGFudFNlc3Npb24mKSBmaW5hbCB7IH0KKyAgICB2b2lkIGNvbXBsZXRlTWVyY2hhbnRWYWxp
ZGF0aW9uKGNvbnN0IFBheW1lbnRNZXJjaGFudFNlc3Npb24mKSBmaW5hbDsKICAgICB2b2lkIGNv
bXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oc3RkOjpvcHRpb25hbDxTaGlwcGluZ01ldGhv
ZFVwZGF0ZT4mJikgZmluYWwgeyB9CiAgICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNl
bGVjdGlvbihzdGQ6Om9wdGlvbmFsPFNoaXBwaW5nQ29udGFjdFVwZGF0ZT4mJikgZmluYWwgeyB9
CiAgICAgdm9pZCBjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oc3RkOjpvcHRpb25hbDxQ
YXltZW50TWV0aG9kVXBkYXRlPiYmKSBmaW5hbCB7IH0KLSAgICB2b2lkIGNvbXBsZXRlUGF5bWVu
dFNlc3Npb24oc3RkOjpvcHRpb25hbDxQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4mJikgZmlu
YWwgeyB9Ci0gICAgdm9pZCBhYm9ydFBheW1lbnRTZXNzaW9uKCkgZmluYWwgeyB9Ci0gICAgdm9p
ZCBjYW5jZWxQYXltZW50U2Vzc2lvbigpIGZpbmFsIHsgfQorICAgIHZvaWQgY29tcGxldGVQYXlt
ZW50U2Vzc2lvbihzdGQ6Om9wdGlvbmFsPFBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0PiYmKSBm
aW5hbDsKKyAgICB2b2lkIGFib3J0UGF5bWVudFNlc3Npb24oKSBmaW5hbDsKKyAgICB2b2lkIGNh
bmNlbFBheW1lbnRTZXNzaW9uKCkgZmluYWw7CiAgICAgdm9pZCBwYXltZW50Q29vcmRpbmF0b3JE
ZXN0cm95ZWQoKSBmaW5hbDsKIAogICAgIE1haW5GcmFtZSYgbV9tYWluRnJhbWU7CisgICAgTW9j
a1BheW1lbnRBZGRyZXNzIG1fc2hpcHBpbmdBZGRyZXNzOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENv
b3JkaW5hdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGlu
YXRvci5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZTViYTMwOWFkNmU4NTg2ZjBiYjE4NDJjMWJmZjY1N2E5MTg1
NmI5NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1l
bnRDb29yZGluYXRvci5pZGwKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBD
b25kaXRpb25hbD1BUFBMRV9QQVksCisgICAgTm9JbnRlcmZhY2VPYmplY3QsCitdIGludGVyZmFj
ZSBNb2NrUGF5bWVudENvb3JkaW5hdG9yIHsKKyAgICB2b2lkIHNldFNoaXBwaW5nQWRkcmVzcyhN
b2NrUGF5bWVudEFkZHJlc3Mgc2hpcHBpbmdBZGRyZXNzKTsKK307CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMDljYmVjNjVh
OTA0NGIzNjc3NzFlNDgxMmE3NzJmMTAyNDcxN2UxMi4uZWM2NmEwYWJlYjE3Zjc4NTkzOTMyZDdi
NzAwZGNmMjA5MjU2Y2FhOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE3LTEwLTIwICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbUGF5bWVudCBSZXF1ZXN0XSBS
ZXNvbHZlIFBheW1lbnRSZXF1ZXN0LnNob3coKSdzIGFjY2VwdCBwcm9taXNlIHdoZW4gYSBwYXlt
ZW50IGlzIGF1dGhvcml6ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3ODYwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LWFkZHJlc3MtYXR0
cmlidXRlcy1hbmQtdG9KU09OLW1ldGhvZC5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1hZGRyZXNzLWF0dHJpYnV0
ZXMtYW5kLXRvSlNPTi1tZXRob2QuaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLWNvbXBsZXRlLW1ldGhvZC5odHRw
cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcGF5bWVudHJlcXVl
c3QvcGF5bWVudC1yZXNwb25zZS1jb21wbGV0ZS1tZXRob2QuaHR0cHMuaHRtbDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLW1ldGhv
ZE5hbWUtYXR0cmlidXRlLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLW1ldGhvZE5hbWUtYXR0cmli
dXRlLmh0dHBzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcGF5bWVudHJlcXVl
c3QvcGF5bWVudC1yZXNwb25zZS1wYXllckVtYWlsLWF0dHJpYnV0ZS5odHRwcy1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1y
ZXNwb25zZS1wYXllckVtYWlsLWF0dHJpYnV0ZS5odHRwcy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtcGF5ZXJOYW1lLWF0
dHJpYnV0ZS5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
cGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXNwb25zZS1wYXllck5hbWUtYXR0cmlidXRlLmh0dHBz
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVu
dC1yZXNwb25zZS1wYXllclBob25lLWF0dHJpYnV0ZS5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXNwb25zZS1w
YXllclBob25lLWF0dHJpYnV0ZS5odHRwcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL3BheW1lbnRyZXF1ZXN0L3Jlc291cmNlcy9oZWxwZXJzLmpzOiBBZGRlZC4KKyAgICAgICAg
KHRlc3QpOgorICAgICAgICAoYXN5bmMuZ2V0UGF5bWVudFJlc3BvbnNlKToKKyAgICAgICAgKGFz
eW5jLmdldFBheW1lbnRSZXF1ZXN0UmVzcG9uc2UpOgorICAgICAgICAoYXN5bmMucnVuVGVzdCk6
CisKIDIwMTctMTAtMjAgIE1hdHQgTGV3aXMgIDxqbGV3aXMzQGFwcGxlLmNvbT4KIAogICAgICAg
ICBNYXJrZWQgcGx1Z2lucy9qcy1mcm9tLWRlc3Ryb3kuaHRtbCBhcyBmbGFreS4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1hZGRyZXNz
LWF0dHJpYnV0ZXMtYW5kLXRvSlNPTi1tZXRob2QuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LWFkZHJlc3MtYXR0cmlidXRl
cy1hbmQtdG9KU09OLW1ldGhvZC5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzI4N2Ew
ODg5MzczNjY1Yzc4MTM2MmJmNmQ3NDM4NDE0NmQzNzliMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1hZGRyZXNzLWF0dHJp
YnV0ZXMtYW5kLXRvSlNPTi1tZXRob2QuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBA
QAorSWYgdGhlIHJlcXVlc3RTaGlwcGluZyBtZW1iZXIgaXMgdHJ1ZSwgdGhlbiBzaGlwcGluZ0Fk
ZHJlc3MncyBQYXltZW50QWRkcmVzcyBtdXN0IG1hdGNoIHRoZSBleHBlY3RlZCB2YWx1ZXMuCisK
K1BBU1MgQ2FuIGNvbnN0cnVjdCBhIHBheW1lbnQgcmVxdWVzdCAoc21va2UgdGVzdCkuIAorUEFT
UyBJZiB0aGUgcmVxdWVzdFNoaXBwaW5nIG1lbWJlciBpcyB0cnVlLCB0aGVuIHNoaXBwaW5nQWRk
cmVzcydzIFBheW1lbnRBZGRyZXNzIG11c3QgbWF0Y2ggdGhlIGV4cGVjdGVkIHZhbHVlcy4gCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVu
dC1hZGRyZXNzLWF0dHJpYnV0ZXMtYW5kLXRvSlNPTi1tZXRob2QuaHR0cHMuaHRtbCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1hZGRyZXNzLWF0dHJpYnV0
ZXMtYW5kLXRvSlNPTi1tZXRob2QuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNWYwODBiNzNhMjM0
OGRhMDU4ZTVmZTUzZWZhZTg0NzAyYmNlOTI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LWFkZHJlc3MtYXR0cmlidXRlcy1h
bmQtdG9KU09OLW1ldGhvZC5odHRwcy5odG1sCkBAIC0wLDAgKzEsOTAgQEAKKzwhZG9jdHlwZSBo
dG1sPgorPG1ldGEgY2hhcnNldD0idXRmOCI+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBz
Oi8vd3d3LnczLm9yZy9UUi9wYXltZW50LXJlcXVlc3QvI3BheW1lbnRhZGRyZXNzLWludGVyZmFj
ZSI+Cis8dGl0bGU+CisgIFBheW1lbnRSZXNwb25zZS5wcm90b3R5cGUuc2hpcHBpbmdBZGRyZXNz
Cis8L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9oZWxwZXJzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+Citjb25zdCBvcHRpb25zID0geyByZXF1ZXN0U2hpcHBpbmc6IHRydWUgfTsKK2Z1bmN0aW9u
IHJ1blRlc3QoYnV0dG9uLCBleHBlY3RlZCA9IHt9KSB7CisgIGJ1dHRvbi5kaXNhYmxlZCA9IHRy
dWU7CisgIHByb21pc2VfdGVzdChhc3luYyAoKSA9PiB7CisgICAgY29uc3QgeyByZXNwb25zZSB9
ID0gYXdhaXQgZ2V0UGF5bWVudFJlcXVlc3RSZXNwb25zZShvcHRpb25zKTsKKyAgICBhd2FpdCBy
ZXNwb25zZS5jb21wbGV0ZSgpOworICAgIGFzc2VydF9pZGxfYXR0cmlidXRlKHJlc3BvbnNlLCAi
c2hpcHBpbmdBZGRyZXNzIik7CisgICAgY29uc3QgeyBzaGlwcGluZ0FkZHJlc3M6IGFkZHIgfSA9
IHJlc3BvbnNlOworICAgIGFzc2VydF90cnVlKAorICAgICAgYWRkciBpbnN0YW5jZW9mIFBheW1l
bnRBZGRyZXNzLAorICAgICAgIkV4cGVjdCBpbnN0YW5jZSBvZiBQYXltZW50QWRkcmVzcyIKKyAg
ICApOworICAgIC8vIEFuIFtJU08zMTY2XSBhbHBoYS0yIGNvZGUuIFRoZSBjYW5vbmljYWwgZm9y
bSBpcyB1cHBlciBjYXNlLgorICAgIGNvbnN0IHsgY291bnRyeSB9ID0gYWRkcjsKKyAgICBhc3Nl
cnRfZXF1YWxzKGNvdW50cnkubGVuZ3RoLCAyLCAiRXhwZWN0ZWQgbGVuZ3RoIGlzIDIiKTsKKyAg
ICBhc3NlcnRfdHJ1ZSgvXltBLVpdezJ9JC8udGVzdChjb3VudHJ5KSwgIkNhbm9uaWNhbCBmb3Jt
IGlzIHVwcGVyIGNhc2UiKTsKKyAgICBhc3NlcnRfdHJ1ZSgKKyAgICAgIGFkZHIuYWRkcmVzc0xp
bmUgaW5zdGFuY2VvZiBBcnJheSwKKyAgICAgICJFeHBlY3RlZCBhZGRyZXNzTGluZSB0byBiZSBh
biBhcnJheSIKKyAgICApOworICAgIGFzc2VydF90aHJvd3MoCisgICAgICBuZXcgVHlwZUVycm9y
KCksCisgICAgICAoKSA9PiB7CisgICAgICAgIGFkZHIuYWRkcmVzc0xpbmUucHVzaCgidGhpcyBt
dXN0IHRocm93Iik7CisgICAgICB9LAorICAgICAgIkFycmF5IG11c3QgYmUgZnJvemVuIgorICAg
ICk7CisgICAgZm9yIChsZXQgW2F0dHIsIGV4cGVjdGVkVmFsdWVdIG9mIE9iamVjdC5lbnRyaWVz
KGV4cGVjdGVkKSkgeworICAgICAgYXNzZXJ0X2lkbF9hdHRyaWJ1dGUoYWRkciwgYXR0cik7Cisg
ICAgICBjb25zdCBtc2cgPSBgRXhwZWN0ZWQgcGF5bWVudEFkZHJlc3MuJHthdHRyfSB0byBlcXVh
bCAke2V4cGVjdGVkVmFsdWV9LmA7CisgICAgICAvLy50b1N0cmluZygpIGZsYXR0ZW5zIGFycmF5
IGFkZHJlc3NMaW5lLAorICAgICAgLy8udG9Mb3dlckNhc2UoKSBiZWNhdXNlIGNhc2UgY2FuJ3Qg
YmUgZW5mb3JjZWQgZm9yIHNvbWUgYXR0cmlidXRlcworICAgICAgY29uc3QgYWN0dWFsVmFsdWUg
PSBhZGRyW2F0dHJdLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKTsKKyAgICAgIGV4cGVjdGVkVmFs
dWUgPSBleHBlY3RlZFZhbHVlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKTsKKyAgICAgIGFzc2Vy
dF9lcXVhbHMoYWN0dWFsVmFsdWUsIGV4cGVjdGVkVmFsdWUsIG1zZyk7CisgICAgfQorICAgIC8v
IENoZWNrIHRvSlNPTiByZXN1bHQKKyAgICBmb3IgKGxldCBbcHJvcCwganNvblZhbHVlXSBvZiBP
YmplY3QuZW50cmllcyhhZGRyLnRvSlNPTigpKSkgeworICAgICAgY29uc3QgYWN0dWFsVmFsdWUg
PSBqc29uVmFsdWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpOworICAgICAgY29uc3QgZXhwZWN0
ZWRWYWx1ZSA9IGV4cGVjdGVkW3Byb3BdLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKTsKKyAgICAg
IGNvbnN0IG1zZyA9IGBFeHBlY3RlZCBKU09OICR7cHJvcH0gdG8gYmUgJHtleHBlY3RlZFZhbHVl
fWA7CisgICAgICBhc3NlcnRfZXF1YWxzKGFjdHVhbFZhbHVlLCBleHBlY3RlZFZhbHVlLCBtc2cp
OworICAgIH0KKyAgfSwgYnV0dG9uLnRleHRDb250ZW50LnRyaW0oKSk7CisgIGRvbmUoKTsKK30K
Kzwvc2NyaXB0PgorPG9sPgorICA8bGk+CisgICAgPGJ1dHRvbiBpZD0iYnV0dG9uIj4KKyAgICAg
IElmIHRoZSByZXF1ZXN0U2hpcHBpbmcgbWVtYmVyIGlzIHRydWUsIHRoZW4gc2hpcHBpbmdBZGRy
ZXNzJ3MgUGF5bWVudEFkZHJlc3MgbXVzdCBtYXRjaCB0aGUgZXhwZWN0ZWQgdmFsdWVzLgorICAg
IDwvYnV0dG9uPgorICA8L2xpPgorPC9vbD4KKzxzY3JpcHQ+CisgICAgY29uc3QgYWRkcmVzcyA9
IHsKKyAgICAgICAgY291bnRyeUNvZGU6ICdBRicsCisgICAgICAgIGFkZHJlc3NMaW5lczogWycx
IHdwdCBzdHJlZXQnXSwKKyAgICAgICAgbG9jYWxpdHk6ICdLYWJ1bCcsCisgICAgICAgIHBvc3Rh
bENvZGU6ICcxMDAxJywKKyAgICAgICAgbG9jYWxpemVkTmFtZTogJ3dlYiBwbGF0Zm9ybSB0ZXN0
JywKKyAgICAgICAgcGhvbmVOdW1iZXI6ICcrOTM1NTU1NTU1NTUnLAorICAgIH07CisgICAgaW50
ZXJuYWxzLm1vY2tQYXltZW50Q29vcmRpbmF0b3Iuc2V0U2hpcHBpbmdBZGRyZXNzKGFkZHJlc3Mp
OworCisgICAgY29uc3QgZXhwZWN0ZWRBZGRyZXNzID0geworICAgICAgICBjb3VudHJ5OiBhZGRy
ZXNzLmNvdW50cnlDb2RlLAorICAgICAgICBhZGRyZXNzTGluZTogYWRkcmVzcy5hZGRyZXNzTGlu
ZXMsCisgICAgICAgIHJlZ2lvbjogJycsCisgICAgICAgIGNpdHk6IGFkZHJlc3MubG9jYWxpdHks
CisgICAgICAgIGRlcGVuZGVudExvY2FsaXR5OiAnJywKKyAgICAgICAgcG9zdGFsQ29kZTogYWRk
cmVzcy5wb3N0YWxDb2RlLAorICAgICAgICBzb3J0aW5nQ29kZTogJycsCisgICAgICAgIGxhbmd1
YWdlQ29kZTogJycsCisgICAgICAgIG9yZ2FuaXphdGlvbjogJycsCisgICAgICAgIHJlY2lwaWVu
dDogYWRkcmVzcy5sb2NhbGl6ZWROYW1lLAorICAgICAgICBwaG9uZTogYWRkcmVzcy5waG9uZU51
bWJlciwKKyAgICB9OworICAgIHJ1blRlc3QoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJ1dHRv
biIpLCBleHBlY3RlZEFkZHJlc3MpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtY29tcGxldGUtbWV0
aG9kLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJl
cXVlc3QvcGF5bWVudC1yZXNwb25zZS1jb21wbGV0ZS1tZXRob2QuaHR0cHMtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjc5MDY5MWU0NGY4MWUzMzU3NzYxNmIwZjBhNThmMzQwMDRjZGI0ODQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3Bh
eW1lbnQtcmVzcG9uc2UtY29tcGxldGUtbWV0aG9kLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDEzIEBACivinIUgSWYgdGhlIHZhbHVlIG9mIHRoZSBpbnRlcm5hbCBzbG90IFtbY29tcGxl
dGVDYWxsZWRdXSBpcyB0cnVlLCByZWplY3QgcHJvbWlzZSB3aXRoIGFuICJJbnZhbGlkU3RhdGVF
cnJvciIgRE9NRXhjZXB0aW9uLgor4pyFIFBhc3Npbmcgbm8gYXJndW1lbnQgZGVmYXVsdHMgdG8g
InVua25vd24iLCBldmVudHVhbGx5IGNsb3NpbmcgdGhlIHNoZWV0IGFuZCBkb2Vzbid0IHRocm93
Lgor4pyFIFBhc3NpbmcgInN1Y2Nlc3MiIGV2ZW50dWFsbHkgY2xvc2VzIHRoZSBzaGVldCBhbmQg
ZG9lc24ndCB0aHJvdy4KK+KchSBQYXNzaW5nICJmYWlsIiBldmVudHVhbGx5IGNsb3NlcyB0aGUg
c2hlZXQgYW5kIGRvZXNuJ3QgdGhyb3cuCisKK1BBU1MgQ2FuIGNvbnN0cnVjdCBhIHBheW1lbnQg
cmVxdWVzdCAoc21va2UgdGVzdCkuIAorUEFTUyBJZiB0aGUgdmFsdWUgb2YgdGhlIGludGVybmFs
IHNsb3QgW1tjb21wbGV0ZUNhbGxlZF1dIGlzIHRydWUsCisgICAgICByZWplY3QgcHJvbWlzZSB3
aXRoIGFuICJJbnZhbGlkU3RhdGVFcnJvciIgRE9NRXhjZXB0aW9uLiAKK1BBU1MgUGFzc2luZyBu
byBhcmd1bWVudCBkZWZhdWx0cyB0byAidW5rbm93biIsCisgICAgICBldmVudHVhbGx5IGNsb3Np
bmcgdGhlIHNoZWV0IGFuZCBkb2Vzbid0IHRocm93LiAKK1BBU1MgUGFzc2luZyAic3VjY2VzcyIg
ZXZlbnR1YWxseSBjbG9zZXMgdGhlIHNoZWV0IGFuZCBkb2Vzbid0IHRocm93LiAKK1BBU1MgUGFz
c2luZyAiZmFpbCIgZXZlbnR1YWxseSBjbG9zZXMgdGhlIHNoZWV0IGFuZCBkb2Vzbid0IHRocm93
LiAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9w
YXltZW50LXJlc3BvbnNlLWNvbXBsZXRlLW1ldGhvZC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLWNvbXBsZXRlLW1ldGhv
ZC5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmZDY4MjdhMDczMzQ5M2NhN2E5NjM1NGE0NmZhM2Fh
ZmFhYjdhZDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1l
bnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtY29tcGxldGUtbWV0aG9kLmh0dHBzLmh0bWwKQEAg
LTAsMCArMSw3OSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGY4Ij4KKzxs
aW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3BheW1lbnQtcmVxdWVz
dC8jZG9tLXBheW1lbnRyZXNwb25zZS1jb21wbGV0ZSgpIj4KKzx0aXRsZT4KKyAgUGF5bWVudFJl
c3BvbnNlLnByb3RvdHlwZS5jb21wbGV0ZSgpIG1ldGhvZAorPC90aXRsZT4KKzxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvaGVscGVycy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorYXN5bmMgZnVuY3Rpb24gcnVu
VGVzdCh7IGNvbXBsZXRlV2l0aDogcmVzdWx0IH0sIGJ1dHRvbikgeworICBidXR0b24uZGlzYWJs
ZWQgPSB0cnVlOworICBjb25zdCB7IHJlc3BvbnNlLCByZXF1ZXN0IH0gPSBhd2FpdCBnZXRQYXlt
ZW50UmVxdWVzdFJlc3BvbnNlKCk7CisgIHByb21pc2VfdGVzdChhc3luYyAoKSA9PiB7CisgICAg
dHJ5IHsKKyAgICAgIC8vIFdlIC5jb21wbGV0ZSgpIGFzIG5vcm1hbCwgdXNpbmcgdGhlIHBhc3Nl
ZCB0ZXN0IHZhbHVlCisgICAgICBjb25zdCBwcm9taXNlID0gcmVzcG9uc2UuY29tcGxldGUocmVz
dWx0KTsKKyAgICAgIGFzc2VydF90cnVlKHByb21pc2UgaW5zdGFuY2VvZiBQcm9taXNlLCAicmV0
dXJucyBhIHByb21pc2UiKTsKKyAgICAgIGNvbnN0IHJldHVybmVkVmFsdWUgPSBhd2FpdCBwcm9t
aXNlOworICAgICAgYXNzZXJ0X2VxdWFscygKKyAgICAgICAgcmV0dXJuZWRWYWx1ZSwKKyAgICAg
ICAgdW5kZWZpbmVkLAorICAgICAgICAiUmV0dXJuZWQgdmFsdWUgbXVzdCBhbHdheXMgYmUgdW5k
ZWZpbmVkIgorICAgICAgKTsKKyAgICAgIC8vIFdlIG5vdyBjYWxsIC5jb21wbGV0ZSgpIGFnYWlu
LCB0byBmb3JjZSBhbiBleGNlcHRpb24KKyAgICAgIC8vIGJlY2F1c2UgW1tjb21wbGV0ZUNhbGxl
ZF1dIGlzIHRydWUuCisgICAgICB0cnkgeworICAgICAgICBhd2FpdCByZXNwb25zZS5jb21wbGV0
ZShyZXN1bHQpOworICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCJFeHBlY3RlZCBJbnZhbGlkU3Rh
dGVFcnJvciB0byBiZSB0aHJvd24iKTsKKyAgICAgIH0gY2F0Y2ggKGVycikgeworICAgICAgICBh
c3NlcnRfZXF1YWxzKAorICAgICAgICAgIGVyci5jb2RlLAorICAgICAgICAgIERPTUV4Y2VwdGlv
bi5JTlZBTElEX1NUQVRFX0VSUiwKKyAgICAgICAgICAiTXVzdCB0aHJvdyBhbiBJbnZhbGlkU3Rh
dGVFcnJvciIKKyAgICAgICAgKTsKKyAgICAgIH0KKyAgICAgIGJ1dHRvbi5pbm5lckhUTUwgPSBg
4pyFICAke2J1dHRvbi50ZXh0Q29udGVudH1gOworICAgIH0gY2F0Y2ggKGVycikgeworICAgICAg
YnV0dG9uLmlubmVySFRNTCA9IGDinYwgICR7YnV0dG9uLnRleHRDb250ZW50fWA7CisgICAgICBh
c3NlcnRfdW5yZWFjaGVkKCJVbmV4cGVjdGVkIGV4Y2VwdGlvbjogIiArIGVyci5tZXNzYWdlKTsK
KyAgICB9CisgIH0sIGJ1dHRvbi50ZXh0Q29udGVudC50cmltKCkpOworfQorPC9zY3JpcHQ+Cis8
b2w+CisgIDxsaT4KKyAgICA8YnV0dG9uIGlkPSJidXR0b24xIj4KKyAgICAgIElmIHRoZSB2YWx1
ZSBvZiB0aGUgaW50ZXJuYWwgc2xvdCBbW2NvbXBsZXRlQ2FsbGVkXV0gaXMgdHJ1ZSwKKyAgICAg
IHJlamVjdCBwcm9taXNlIHdpdGggYW4gIkludmFsaWRTdGF0ZUVycm9yIiBET01FeGNlcHRpb24u
CisgICAgPC9idXR0b24+CisgIDwvbGk+CisgIDxsaT4KKyAgICA8YnV0dG9uIGlkPSJidXR0b24y
Ij4KKyAgICAgIFBhc3Npbmcgbm8gYXJndW1lbnQgZGVmYXVsdHMgdG8gInVua25vd24iLAorICAg
ICAgZXZlbnR1YWxseSBjbG9zaW5nIHRoZSBzaGVldCBhbmQgZG9lc24ndCB0aHJvdy4KKyAgICA8
L2J1dHRvbj4KKyAgPC9saT4KKyAgPGxpPgorICAgIDxidXR0b24gaWQ9ImJ1dHRvbjMiPgorICAg
ICAgUGFzc2luZyAic3VjY2VzcyIgZXZlbnR1YWxseSBjbG9zZXMgdGhlIHNoZWV0IGFuZCBkb2Vz
bid0IHRocm93LgorICAgIDwvYnV0dG9uPgorICA8L2xpPgorICA8bGk+CisgICAgPGJ1dHRvbiBp
ZD0iYnV0dG9uNCI+CisgICAgICBQYXNzaW5nICJmYWlsIiBldmVudHVhbGx5IGNsb3NlcyB0aGUg
c2hlZXQgYW5kIGRvZXNuJ3QgdGhyb3cuCisgICAgPC9idXR0b24+CisgIDwvbGk+Cis8L29sPgor
PHNjcmlwdD4KKyAgICBhc3luYyBmdW5jdGlvbiBydW5UZXN0cygpCisgICAgeworICAgICAgICBh
d2FpdCBydW5UZXN0KHtjb21wbGV0ZVdpdGg6ICJzdWNjZXNzIn0sIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJidXR0b24xIikpOworICAgICAgICBhd2FpdCBydW5UZXN0KHtjb21wbGV0ZVdpdGg6
ICJ1bmtub3duIn0sIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJidXR0b24yIikpOworICAgICAg
ICBhd2FpdCBydW5UZXN0KHtjb21wbGV0ZVdpdGg6ICJzdWNjZXNzIn0sIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJidXR0b24zIikpOworICAgICAgICBhd2FpdCBydW5UZXN0KHtjb21wbGV0ZVdp
dGg6ICJmYWlsIn0sIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJidXR0b240IikpOworICAgICAg
ICBkb25lKCk7CisgICAgfQorICAgIHJ1blRlc3RzKCk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXNwb25zZS1t
ZXRob2ROYW1lLWF0dHJpYnV0ZS5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtbWV0aG9kTmFtZS1hdHRyaWJ1
dGUuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIzNWM4NDhjYTg4YjQ4Mzg5NzdjYmY4
ZDRkNjFjNjQ2ZDhhMjNiNmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtbWV0aG9kTmFtZS1hdHRyaWJ1dGUu
aHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorRXhwZWN0IHRoZSBwYXltZW50IG1l
dGhvZCBpZGVudGlmaWVyIHRvIGJlICdodHRwczovL2FwcGxlLmNvbS9hcHBsZS1wYXknLgorCitQ
QVNTIENhbiBjb25zdHJ1Y3QgYSBwYXltZW50IHJlcXVlc3QgKHNtb2tlIHRlc3QpLiAKK1BBU1Mg
RXhwZWN0IHRoZSBwYXltZW50IG1ldGhvZCBpZGVudGlmaWVyIHRvIGJlICdodHRwczovL2FwcGxl
LmNvbS9hcHBsZS1wYXknLiAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9w
YXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLW1ldGhvZE5hbWUtYXR0cmlidXRlLmh0dHBz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVz
cG9uc2UtbWV0aG9kTmFtZS1hdHRyaWJ1dGUuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45N2U4OWE2
MDkyNzA0NzY0ZjBhMDIzY2RjODFlN2Y2NTZkYTNmNTU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLW1ldGhv
ZE5hbWUtYXR0cmlidXRlLmh0dHBzLmh0bWwKQEAgLTAsMCArMSwxOSBAQAorPCFkb2N0eXBlIGh0
bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGY4Ij4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6
Ly93M2MuZ2l0aHViLmlvL3BheW1lbnQtcmVxdWVzdC8jZG9tLXBheW1lbnRyZXNwb25zZS1tZXRo
b2RuYW1lIj4KKzx0aXRsZT4KKyAgUGF5bWVudFJlc3BvbnNlLnByb3RvdHlwZS5tZXRob2ROYW1l
IGF0dHJpYnV0ZQorPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaGVscGVycy5qcyI+PC9zY3Jp
cHQ+Cis8b2w+CisgIDxsaT4KKyAgICA8YnV0dG9uIGlkPSJidXR0b24iPgorICAgICAgRXhwZWN0
IHRoZSBwYXltZW50IG1ldGhvZCBpZGVudGlmaWVyIHRvIGJlICdodHRwczovL2FwcGxlLmNvbS9h
cHBsZS1wYXknLgorICAgIDwvYnV0dG9uPgorICA8L2xpPgorPC9vbD4KKzxzY3JpcHQ+CisgICAg
cnVuVGVzdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnV0dG9uIiksIHt9LCB7IG1ldGhvZE5h
bWU6ICdodHRwczovL2FwcGxlLmNvbS9hcHBsZS1wYXknIH0pLnRoZW4oZG9uZSk7Cis8L3Njcmlw
dD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5
bWVudC1yZXNwb25zZS1wYXllckVtYWlsLWF0dHJpYnV0ZS5odHRwcy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtcGF5
ZXJFbWFpbC1hdHRyaWJ1dGUuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1Mzk2NDU2
YTJlMzQxOWY3NDdlNWY2ZjJiZDJlMTMwZjFjMTU3MmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtcGF5ZXJF
bWFpbC1hdHRyaWJ1dGUuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK3BheWVy
RW1haWwgYXR0cmlidXRlIGlzIG51bGwgd2hlbiBvcHRpb25zIHVuZGVmaW5lZC4KK3BheWVyRW1h
aWwgYXR0cmlidXRlIGlzIG51bGwgd2hlbiByZXF1ZXN0UGF5ZXJFbWFpbCBpcyB1bmRlZmluZWQu
CitwYXllckVtYWlsIGF0dHJpYnV0ZSBpcyBudWxsIHdoZW4gcmVxdWVzdFBheWVyRW1haWwgaXMg
ZmFsc2UuCitwYXllckVtYWlsIGF0dHJpYnV0ZSBpcyAnd3B0QHczLm9yZycgd2hlbiByZXF1ZXN0
UGF5ZXJFbWFpbCBpcyB0cnVlLgorcGF5ZXJFbWFpbCBhdHRyaWJ1dGUgaXMgJ3dwdEB3My5vcmcn
IHdoZW4gcmVxdWVzdFBheWVyRW1haWwgaXMgdHJ1dGh5LgorCitQQVNTIENhbiBjb25zdHJ1Y3Qg
YSBwYXltZW50IHJlcXVlc3QgKHNtb2tlIHRlc3QpLiAKK1BBU1MgcGF5ZXJFbWFpbCBhdHRyaWJ1
dGUgaXMgbnVsbCB3aGVuIG9wdGlvbnMgdW5kZWZpbmVkLiAKK1BBU1MgcGF5ZXJFbWFpbCBhdHRy
aWJ1dGUgaXMgbnVsbCB3aGVuIHJlcXVlc3RQYXllckVtYWlsIGlzIHVuZGVmaW5lZC4gCitQQVNT
IHBheWVyRW1haWwgYXR0cmlidXRlIGlzIG51bGwgd2hlbiByZXF1ZXN0UGF5ZXJFbWFpbCBpcyBm
YWxzZS4gCitQQVNTIHBheWVyRW1haWwgYXR0cmlidXRlIGlzICd3cHRAdzMub3JnJyB3aGVuIHJl
cXVlc3RQYXllckVtYWlsIGlzIHRydWUuIAorUEFTUyBwYXllckVtYWlsIGF0dHJpYnV0ZSBpcyAn
d3B0QHczLm9yZycgd2hlbiByZXF1ZXN0UGF5ZXJFbWFpbCBpcyB0cnV0aHkuIAorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9u
c2UtcGF5ZXJFbWFpbC1hdHRyaWJ1dGUuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXNwb25zZS1wYXllckVtYWlsLWF0dHJpYnV0ZS5o
dHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzZmI5MzUyZjlhMmE3ZGNhNjZjMGJmYmE5MjI2NzNmMmYw
ZDkwNWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRy
ZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtcGF5ZXJFbWFpbC1hdHRyaWJ1dGUuaHR0cHMuaHRtbApA
QCAtMCwwICsxLDUwIEBACis8IWRvY3R5cGUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0ZjgiPgor
PGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL3czYy5naXRodWIuaW8vcGF5bWVudC1yZXF1
ZXN0LyNkb20tcGF5bWVudHJlc3BvbnNlLXBheWVyZW1haWwiPgorPHRpdGxlPgorICBQYXltZW50
UmVzcG9uc2UucHJvdG90eXBlLnBheWVyRW1haWwgYXR0cmlidXRlCis8L3RpdGxlPgorPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9oZWxwZXJzLmpzIj48L3NjcmlwdD4KKzxvbD4KKyAgPGxpPgorICAgIDxidXR0
b24gaWQ9ImJ1dHRvbjEiPgorICAgICAgcGF5ZXJFbWFpbCBhdHRyaWJ1dGUgaXMgbnVsbCB3aGVu
IG9wdGlvbnMgdW5kZWZpbmVkLgorICAgIDwvYnV0dG9uPgorICA8L2xpPgorICA8bGk+CisgICAg
PGJ1dHRvbiBpZD0iYnV0dG9uMiI+CisgICAgICBwYXllckVtYWlsIGF0dHJpYnV0ZSBpcyBudWxs
IHdoZW4gcmVxdWVzdFBheWVyRW1haWwgaXMgdW5kZWZpbmVkLgorICAgIDwvYnV0dG9uPgorICA8
L2xpPgorICA8bGk+CisgICAgPGJ1dHRvbiBpZD0iYnV0dG9uMyI+CisgICAgICBwYXllckVtYWls
IGF0dHJpYnV0ZSBpcyBudWxsIHdoZW4gcmVxdWVzdFBheWVyRW1haWwgaXMgZmFsc2UuCisgICAg
PC9idXR0b24+CisgIDwvbGk+CisgIDxsaT4KKyAgICA8YnV0dG9uIGlkPSJidXR0b240Ij4KKyAg
ICAgIHBheWVyRW1haWwgYXR0cmlidXRlIGlzICd3cHRAdzMub3JnJyB3aGVuIHJlcXVlc3RQYXll
ckVtYWlsIGlzIHRydWUuCisgICAgPC9idXR0b24+CisgIDwvbGk+CisgIDxsaT4KKyAgICA8YnV0
dG9uIGlkPSJidXR0b241Ij4KKyAgICAgIHBheWVyRW1haWwgYXR0cmlidXRlIGlzICd3cHRAdzMu
b3JnJyB3aGVuIHJlcXVlc3RQYXllckVtYWlsIGlzIHRydXRoeS4KKyAgICA8L2J1dHRvbj4KKyAg
PC9saT4KKzwvb2w+Cis8c2NyaXB0PgorICAgIGludGVybmFscy5tb2NrUGF5bWVudENvb3JkaW5h
dG9yLnNldFNoaXBwaW5nQWRkcmVzcyh7IGVtYWlsQWRkcmVzczogJ3dwdEB3My5vcmcnIH0pOwor
CisgICAgYXN5bmMgZnVuY3Rpb24gcnVuVGVzdHMoKQorICAgIHsKKyAgICAgICAgYXdhaXQgcnVu
VGVzdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnV0dG9uMSIpLCB1bmRlZmluZWQsIHsgcGF5
ZXJFbWFpbDogbnVsbCB9KTsKKyAgICAgICAgYXdhaXQgcnVuVGVzdChkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiYnV0dG9uMiIpLCB7IHJlcXVlc3RQYXllckVtYWlsOiB1bmRlZmluZWQgfSwgeyBw
YXllckVtYWlsOiBudWxsIH0pOworICAgICAgICBhd2FpdCBydW5UZXN0KGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJidXR0b24zIiksIHsgcmVxdWVzdFBheWVyRW1haWw6IGZhbHNlIH0sIHsgcGF5
ZXJFbWFpbDogbnVsbCB9KTsKKyAgICAgICAgYXdhaXQgcnVuVGVzdChkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiYnV0dG9uNCIpLCB7IHJlcXVlc3RQYXllckVtYWlsOiB0cnVlIH0sIHsgcGF5ZXJF
bWFpbDogJ3dwdEB3My5vcmcnIH0pOworICAgICAgICBhd2FpdCBydW5UZXN0KGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJidXR0b241IiksIHsgcmVxdWVzdFBheWVyRW1haWw6ICd5ZXAnIH0sIHsg
cGF5ZXJFbWFpbDogJ3dwdEB3My5vcmcnIH0pOworICAgICAgICBkb25lKCk7CisgICAgfQorICAg
IHJ1blRlc3RzKCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVz
cG9uc2UtcGF5ZXJOYW1lLWF0dHJpYnV0ZS5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtcGF5ZXJOYW1lLWF0
dHJpYnV0ZS5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTcyZmE2ZDdiN2RiYjcxNmZl
MGE2YWFkOTdhOWE3NDJjMGQwZWEyNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXNwb25zZS1wYXllck5hbWUtYXR0cmli
dXRlLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitwYXllck5hbWUgYXR0cmli
dXRlIGlzIG51bGwgd2hlbiBvcHRpb24gaXMgdW5kZWZpbmVkLgorcGF5ZXJOYW1lIGF0dHJpYnV0
ZSBpcyBudWxsIHdoZW4gcmVxdWVzdFBheWVyTmFtZSBpcyB1bmRlZmluZWQuCitwYXllck5hbWUg
YXR0cmlidXRlIGlzIG51bGwgd2hlbiByZXF1ZXN0UGF5ZXJOYW1lIGlzIGZhbHNlLgorcGF5ZXJO
YW1lIGF0dHJpYnV0ZSBpcyAnd2ViIHBsYXRmb3JtIHRlc3QnIHdoZW4gcmVxdWVzdFBheWVyTmFt
ZSBpcyB0cnVlLgorcGF5ZXJOYW1lIGF0dHJpYnV0ZSBpcyAnd2ViIHBsYXRmb3JtIHRlc3QnIHdo
ZW4gcmVxdWVzdFBheWVyTmFtZSBpcyB0cnV0aHkuCisKK1BBU1MgQ2FuIGNvbnN0cnVjdCBhIHBh
eW1lbnQgcmVxdWVzdCAoc21va2UgdGVzdCkuIAorUEFTUyBwYXllck5hbWUgYXR0cmlidXRlIGlz
IG51bGwgd2hlbiBvcHRpb24gaXMgdW5kZWZpbmVkLiAKK1BBU1MgcGF5ZXJOYW1lIGF0dHJpYnV0
ZSBpcyBudWxsIHdoZW4gcmVxdWVzdFBheWVyTmFtZSBpcyB1bmRlZmluZWQuIAorUEFTUyBwYXll
ck5hbWUgYXR0cmlidXRlIGlzIG51bGwgd2hlbiByZXF1ZXN0UGF5ZXJOYW1lIGlzIGZhbHNlLiAK
K1BBU1MgcGF5ZXJOYW1lIGF0dHJpYnV0ZSBpcyAnd2ViIHBsYXRmb3JtIHRlc3QnIHdoZW4gcmVx
dWVzdFBheWVyTmFtZSBpcyB0cnVlLiAKK1BBU1MgcGF5ZXJOYW1lIGF0dHJpYnV0ZSBpcyAnd2Vi
IHBsYXRmb3JtIHRlc3QnIHdoZW4gcmVxdWVzdFBheWVyTmFtZSBpcyB0cnV0aHkuIAorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVz
cG9uc2UtcGF5ZXJOYW1lLWF0dHJpYnV0ZS5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLXBheWVyTmFtZS1hdHRyaWJ1dGUu
aHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNzIzYjJkYTZjMWE5NmFhMDk4NGRlNDYzZGFhZjg5MmZl
NjFlNzIzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50
cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLXBheWVyTmFtZS1hdHRyaWJ1dGUuaHR0cHMuaHRtbApA
QCAtMCwwICsxLDUwIEBACis8IWRvY3R5cGUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0ZjgiPgor
PGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL3czYy5naXRodWIuaW8vcGF5bWVudC1yZXF1
ZXN0LyNkb20tcGF5bWVudHJlc3BvbnNlLXBheWVybmFtZSI+Cis8dGl0bGU+CisgIFBheW1lbnRS
ZXNwb25zZS5wcm90b3R5cGUucGF5ZXJOYW1lIGF0dHJpYnV0ZQorPC90aXRsZT4KKzxzY3JpcHQg
c3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvaGVscGVycy5qcyI+PC9zY3JpcHQ+Cis8b2w+CisgIDxsaT4KKyAgICA8YnV0dG9u
IGlkPSJidXR0b24xIj4KKyAgICAgIHBheWVyTmFtZSBhdHRyaWJ1dGUgaXMgbnVsbCB3aGVuIG9w
dGlvbiBpcyB1bmRlZmluZWQuCisgICAgPC9idXR0b24+CisgIDwvbGk+CisgIDxsaT4KKyAgICA8
YnV0dG9uIGlkPSJidXR0b24yIj4KKyAgICAgIHBheWVyTmFtZSBhdHRyaWJ1dGUgaXMgbnVsbCB3
aGVuIHJlcXVlc3RQYXllck5hbWUgaXMgdW5kZWZpbmVkLgorICAgIDwvYnV0dG9uPgorICA8L2xp
PgorICA8bGk+CisgICAgPGJ1dHRvbiBpZD0iYnV0dG9uMyI+CisgICAgICBwYXllck5hbWUgYXR0
cmlidXRlIGlzIG51bGwgd2hlbiByZXF1ZXN0UGF5ZXJOYW1lIGlzIGZhbHNlLgorICAgIDwvYnV0
dG9uPgorICA8L2xpPgorICA8bGk+CisgICAgPGJ1dHRvbiBpZD0iYnV0dG9uNCI+CisgICAgICBw
YXllck5hbWUgYXR0cmlidXRlIGlzICd3ZWIgcGxhdGZvcm0gdGVzdCcgd2hlbiByZXF1ZXN0UGF5
ZXJOYW1lIGlzIHRydWUuCisgICAgPC9idXR0b24+CisgIDwvbGk+CisgIDxsaT4KKyAgICA8YnV0
dG9uIGlkPSJidXR0b241Ij4KKyAgICAgIHBheWVyTmFtZSBhdHRyaWJ1dGUgaXMgJ3dlYiBwbGF0
Zm9ybSB0ZXN0JyB3aGVuIHJlcXVlc3RQYXllck5hbWUgaXMgdHJ1dGh5LgorICAgIDwvYnV0dG9u
PgorICA8L2xpPgorPC9vbD4KKzxzY3JpcHQ+CisgICAgaW50ZXJuYWxzLm1vY2tQYXltZW50Q29v
cmRpbmF0b3Iuc2V0U2hpcHBpbmdBZGRyZXNzKHsgbG9jYWxpemVkTmFtZTogJ3dlYiBwbGF0Zm9y
bSB0ZXN0JyB9KTsKKyAgICAKKyAgICBhc3luYyBmdW5jdGlvbiBydW5UZXN0cygpCisgICAgewor
ICAgICAgICBhd2FpdCBydW5UZXN0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJidXR0b24xIiks
IHVuZGVmaW5lZCwgeyBwYXllck5hbWU6IG51bGwgfSk7CisgICAgICAgIGF3YWl0IHJ1blRlc3Qo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJ1dHRvbjIiKSwgeyByZXF1ZXN0UGF5ZXJOYW1lOiB1
bmRlZmluZWQgfSwgeyBwYXllck5hbWU6IG51bGwgfSk7CisgICAgICAgIGF3YWl0IHJ1blRlc3Qo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJ1dHRvbjMiKSwgeyByZXF1ZXN0UGF5ZXJOYW1lOiBm
YWxzZSB9LCB7IHBheWVyTmFtZTogbnVsbCB9KTsKKyAgICAgICAgYXdhaXQgcnVuVGVzdChkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiYnV0dG9uNCIpLCB7IHJlcXVlc3RQYXllck5hbWU6IHRydWUg
fSwgeyBwYXllck5hbWU6ICd3ZWIgcGxhdGZvcm0gdGVzdCcgfSk7CisgICAgICAgIGF3YWl0IHJ1
blRlc3QoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJ1dHRvbjUiKSwgeyByZXF1ZXN0UGF5ZXJO
YW1lOiAneWVwJyB9LCB7IHBheWVyTmFtZTogJ3dlYiBwbGF0Zm9ybSB0ZXN0JyB9KTsKKyAgICAg
ICAgZG9uZSgpOworICAgIH0KKyAgICBydW5UZXN0cygpOworPC9zY3JpcHQ+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXlt
ZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLXBheWVyUGhvbmUtYXR0cmlidXRlLmh0dHBzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVu
dC1yZXNwb25zZS1wYXllclBob25lLWF0dHJpYnV0ZS5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYzg3ZjcyYzg0OTllY2JmYzQzYTZlOWRjMDQ3ODkzMGI3MDJlM2FiYQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1y
ZXNwb25zZS1wYXllclBob25lLWF0dHJpYnV0ZS5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxMyBAQAorcGF5ZXJQaG9uZSBhdHRyaWJ1dGUgaXMgbnVsbCB3aGVuIG9wdGlvbnMgaXMgdW5k
ZWZpbmVkLgorcGF5ZXJQaG9uZSBhdHRyaWJ1dGUgaXMgbnVsbCB3aGVuIHJlcXVlc3RQYXllclBo
b25lIGlzIHVuZGVmaW5lZC4KK3BheWVyUGhvbmUgYXR0cmlidXRlIGlzIG51bGwgd2hlbiByZXF1
ZXN0UGF5ZXJQaG9uZSBpcyBmYWxzZS4KK3BheWVyUGhvbmUgYXR0cmlidXRlIGlzICcrMTIzNDU2
Nzg5MTAnIHdoZW4gcmVxdWVzdFBheWVyUGhvbmUgaXMgdHJ1ZS4KK3BheWVyUGhvbmUgYXR0cmli
dXRlIGlzICcrMTIzNDU2Nzg5MTAnIHdoZW4gcmVxdWVzdFBheWVyUGhvbmUgaXMgdHJ1dGh5Lgor
CitQQVNTIENhbiBjb25zdHJ1Y3QgYSBwYXltZW50IHJlcXVlc3QgKHNtb2tlIHRlc3QpLiAKK1BB
U1MgcGF5ZXJQaG9uZSBhdHRyaWJ1dGUgaXMgbnVsbCB3aGVuIG9wdGlvbnMgaXMgdW5kZWZpbmVk
LiAKK1BBU1MgcGF5ZXJQaG9uZSBhdHRyaWJ1dGUgaXMgbnVsbCB3aGVuIHJlcXVlc3RQYXllclBo
b25lIGlzIHVuZGVmaW5lZC4gCitQQVNTIHBheWVyUGhvbmUgYXR0cmlidXRlIGlzIG51bGwgd2hl
biByZXF1ZXN0UGF5ZXJQaG9uZSBpcyBmYWxzZS4gCitQQVNTIHBheWVyUGhvbmUgYXR0cmlidXRl
IGlzICcrMTIzNDU2Nzg5MTAnIHdoZW4gcmVxdWVzdFBheWVyUGhvbmUgaXMgdHJ1ZS4gCitQQVNT
IHBheWVyUGhvbmUgYXR0cmlidXRlIGlzICcrMTIzNDU2Nzg5MTAnIHdoZW4gcmVxdWVzdFBheWVy
UGhvbmUgaXMgdHJ1dGh5LiAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9w
YXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLXBheWVyUGhvbmUtYXR0cmlidXRlLmh0dHBz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVz
cG9uc2UtcGF5ZXJQaG9uZS1hdHRyaWJ1dGUuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYTQwYzQ4
MjNkYzk1NWQ5NDBjNWYwZGRmZDI2ODgyMTRiNTg4YmFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLXBheWVy
UGhvbmUtYXR0cmlidXRlLmh0dHBzLmh0bWwKQEAgLTAsMCArMSw1MCBAQAorPCFkb2N0eXBlIGh0
bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGY4Ij4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6
Ly93M2MuZ2l0aHViLmlvL3BheW1lbnQtcmVxdWVzdC8jZG9tLXBheW1lbnRyZXNwb25zZS1wYXll
cnBob25lIj4KKzx0aXRsZT4KKyAgUGF5bWVudFJlc3BvbnNlLnByb3RvdHlwZS5wYXllclBob25l
IGF0dHJpYnV0ZQorPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaGVscGVycy5qcyI+PC9zY3Jp
cHQ+Cis8b2w+CisgIDxsaT4KKyAgICA8YnV0dG9uIGlkPSJidXR0b24xIj4KKyAgICAgIHBheWVy
UGhvbmUgYXR0cmlidXRlIGlzIG51bGwgd2hlbiBvcHRpb25zIGlzIHVuZGVmaW5lZC4KKyAgICA8
L2J1dHRvbj4KKyAgPC9saT4KKyAgPGxpPgorICAgIDxidXR0b24gaWQ9ImJ1dHRvbjIiPgorICAg
ICAgcGF5ZXJQaG9uZSBhdHRyaWJ1dGUgaXMgbnVsbCB3aGVuIHJlcXVlc3RQYXllclBob25lIGlz
IHVuZGVmaW5lZC4KKyAgICA8L2J1dHRvbj4KKyAgPC9saT4KKyAgPGxpPgorICAgIDxidXR0b24g
aWQ9ImJ1dHRvbjMiPgorICAgICAgcGF5ZXJQaG9uZSBhdHRyaWJ1dGUgaXMgbnVsbCB3aGVuIHJl
cXVlc3RQYXllclBob25lIGlzIGZhbHNlLgorICAgIDwvYnV0dG9uPgorICA8L2xpPgorICA8bGk+
CisgICAgPGJ1dHRvbiBpZD0iYnV0dG9uNCI+CisgICAgICBwYXllclBob25lIGF0dHJpYnV0ZSBp
cyAnKzEyMzQ1Njc4OTEwJyB3aGVuIHJlcXVlc3RQYXllclBob25lIGlzIHRydWUuCisgICAgPC9i
dXR0b24+CisgIDwvbGk+CisgIDxsaT4KKyAgICA8YnV0dG9uIGlkPSJidXR0b241Ij4KKyAgICAg
IHBheWVyUGhvbmUgYXR0cmlidXRlIGlzICcrMTIzNDU2Nzg5MTAnIHdoZW4gcmVxdWVzdFBheWVy
UGhvbmUgaXMgdHJ1dGh5LgorICAgIDwvYnV0dG9uPgorICA8L2xpPgorPC9vbD4KKzxzY3JpcHQ+
CisgICAgaW50ZXJuYWxzLm1vY2tQYXltZW50Q29vcmRpbmF0b3Iuc2V0U2hpcHBpbmdBZGRyZXNz
KHsgcGhvbmVOdW1iZXI6ICcrMTIzNDU2Nzg5MTAnIH0pOworICAgIAorICAgIGFzeW5jIGZ1bmN0
aW9uIHJ1blRlc3RzKCkKKyAgICB7CisgICAgICAgIGF3YWl0IHJ1blRlc3QoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImJ1dHRvbjEiKSwgdW5kZWZpbmVkLCB7IHBheWVyUGhvbmU6IG51bGwgfSk7
CisgICAgICAgIGF3YWl0IHJ1blRlc3QoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJ1dHRvbjIi
KSwgeyByZXF1ZXN0UGF5ZXJQaG9uZTogdW5kZWZpbmVkIH0sIHsgcGF5ZXJQaG9uZTogbnVsbCB9
KTsKKyAgICAgICAgYXdhaXQgcnVuVGVzdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnV0dG9u
MyIpLCB7IHJlcXVlc3RQYXllclBob25lOiBmYWxzZSB9LCB7IHBheWVyUGhvbmU6IG51bGwgfSk7
CisgICAgICAgIGF3YWl0IHJ1blRlc3QoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJ1dHRvbjQi
KSwgeyByZXF1ZXN0UGF5ZXJQaG9uZTogdHJ1ZSB9LCB7IHBheWVyUGhvbmU6ICcrMTIzNDU2Nzg5
MTAnIH0pOworICAgICAgICBhd2FpdCBydW5UZXN0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJi
dXR0b241IiksIHsgcmVxdWVzdFBheWVyUGhvbmU6ICd5ZXAnIH0sIHsgcGF5ZXJQaG9uZTogJysx
MjM0NTY3ODkxMCcgfSk7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisgICAgcnVuVGVzdHMoKTsK
Kzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVx
dWVzdC9yZXNvdXJjZXMvaGVscGVycy5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVu
dHJlcXVlc3QvcmVzb3VyY2VzL2hlbHBlcnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDEyMmMyOTQ1YzI2MDEw
ZTQyNzVkMDEzZWRlZTNhYTc3MDg2YzhhMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcmVzb3VyY2VzL2hlbHBlcnMuanMKQEAgLTAsMCAr
MSwxNTYgQEAKK3NldHVwKHsgZXhwbGljaXRfZG9uZTogdHJ1ZSwgZXhwbGljaXRfdGltZW91dDog
dHJ1ZSB9KTsKKworY29uc3QgdmFsaWRNZXRob2QgPSBPYmplY3QuZnJlZXplKHsKKyAgc3VwcG9y
dGVkTWV0aG9kczogImh0dHBzOi8vYXBwbGUuY29tL2FwcGxlLXBheSIsCisgIGRhdGE6IHsKKyAg
ICAgIHZlcnNpb246IDIsCisgICAgICBtZXJjaGFudElkZW50aWZpZXI6ICcnLAorICAgICAgbWVy
Y2hhbnRDYXBhYmlsaXRpZXM6IFsnc3VwcG9ydHMzRFMnXSwKKyAgICAgIHN1cHBvcnRlZE5ldHdv
cmtzOiBbJ3Zpc2EnLCAnbWFzdGVyQ2FyZCddLAorICAgICAgY291bnRyeUNvZGU6ICdVUycsCisg
IH0sCit9KTsKKworY29uc3QgdmFsaWRNZXRob2RzID0gT2JqZWN0LmZyZWV6ZShbdmFsaWRNZXRo
b2RdKTsKKworY29uc3QgdmFsaWRBbW91bnQgPSBPYmplY3QuZnJlZXplKHsKKyAgY3VycmVuY3k6
ICJVU0QiLAorICB2YWx1ZTogIjEuMDAiLAorfSk7CisKK2NvbnN0IHZhbGlkVG90YWwgPSBPYmpl
Y3QuZnJlZXplKHsKKyAgbGFiZWw6ICJWYWxpZCB0b3RhbCIsCisgIGFtb3VudDogdmFsaWRBbW91
bnQsCit9KTsKK2NvbnN0IHZhbGlkRGV0YWlscyA9IHsKKyAgdG90YWw6IHZhbGlkVG90YWwsCit9
OworCit0ZXN0KCgpID0+IHsKKyAgdHJ5IHsKKyAgICBuZXcgUGF5bWVudFJlcXVlc3QodmFsaWRN
ZXRob2RzLCB2YWxpZERldGFpbHMpOworICB9IGNhdGNoIChlcnIpIHsKKyAgICBkb25lKCk7Cisg
ICAgdGhyb3cgZXJyOworICB9Cit9LCAiQ2FuIGNvbnN0cnVjdCBhIHBheW1lbnQgcmVxdWVzdCAo
c21va2UgdGVzdCkuIik7CisKKy8qKgorICogUG9wcyB1cCBhIHBheW1lbnQgc2hlZXQsIGFsbG93
aW5nIG9wdGlvbnMgdG8gYmUKKyAqIHBhc3NlZCBpbiBpZiBwYXJ0aWN1bGFyIHZhbHVlcyBhcmUg
bmVlZGVkLgorICoKKyAqIEBwYXJhbSBQYXltZW50T3B0aW9ucyBvcHRpb25zCisgKi8KK2FzeW5j
IGZ1bmN0aW9uIGdldFBheW1lbnRSZXNwb25zZShvcHRpb25zLCBpZCkgeworICBjb25zdCB7IHJl
c3BvbnNlIH0gPSBnZXRQYXltZW50UmVxdWVzdFJlc3BvbnNlKG9wdGlvbnMsIGlkKTsKKyAgcmV0
dXJuIHJlc3BvbnNlOworfQorCisvKioKKyAqIENyZWF0ZXMgYSBwYXltZW50IHJlcXVlc3QgYW5k
IHJlc3BvbnNlIHBhaXIuCisgKiBJdCBhbHNvIHNob3dzIHRoZSBwYXltZW50IHNoZWV0LgorICoK
KyAqIEBwYXJhbSB7UGF5bWVudE9wdGlvbnM/fSBvcHRpb25zCisgKiBAcGFyYW0ge1N0cmluZz99
IGlkCisgKi8KK2FzeW5jIGZ1bmN0aW9uIGdldFBheW1lbnRSZXF1ZXN0UmVzcG9uc2Uob3B0aW9u
cywgaWQpIHsKKyAgY29uc3QgbWV0aG9kcyA9IFt7CisgICAgICBzdXBwb3J0ZWRNZXRob2RzOiAi
aHR0cHM6Ly9hcHBsZS5jb20vYXBwbGUtcGF5IiwKKyAgICAgIGRhdGE6IHsKKyAgICAgICAgICB2
ZXJzaW9uOiAyLAorICAgICAgICAgIG1lcmNoYW50SWRlbnRpZmllcjogJycsCisgICAgICAgICAg
bWVyY2hhbnRDYXBhYmlsaXRpZXM6IFsnc3VwcG9ydHMzRFMnXSwKKyAgICAgICAgICBzdXBwb3J0
ZWROZXR3b3JrczogWyd2aXNhJywgJ21hc3RlckNhcmQnXSwKKyAgICAgICAgICBjb3VudHJ5Q29k
ZTogJ1VTJywKKyAgICAgIH0sCisgIH1dOworICBjb25zdCBkZXRhaWxzID0geworICAgIGlkLAor
ICAgIHRvdGFsOiB7CisgICAgICBsYWJlbDogIlRvdGFsIGR1ZSIsCisgICAgICBhbW91bnQ6IHsg
Y3VycmVuY3k6ICJVU0QiLCB2YWx1ZTogIjEuMCIgfSwKKyAgICB9LAorICAgIHNoaXBwaW5nT3B0
aW9uczogWworICAgICAgeworICAgICAgICBpZDogImZhaWwxIiwKKyAgICAgICAgbGFiZWw6ICJG
YWlsIG9wdGlvbiAxIiwKKyAgICAgICAgYW1vdW50OiB7IGN1cnJlbmN5OiAiVVNEIiwgdmFsdWU6
ICI1LjAwIiB9LAorICAgICAgICBzZWxlY3RlZDogZmFsc2UsCisgICAgICB9LAorICAgICAgewor
ICAgICAgICBpZDogInBhc3MiLAorICAgICAgICBsYWJlbDogIlBhc3Mgb3B0aW9uIiwKKyAgICAg
ICAgYW1vdW50OiB7IGN1cnJlbmN5OiAiVVNEIiwgdmFsdWU6ICI1LjAwIiB9LAorICAgICAgICBz
ZWxlY3RlZDogdHJ1ZSwKKyAgICAgIH0sCisgICAgICB7CisgICAgICAgIGlkOiAiZmFpbDIiLAor
ICAgICAgICBsYWJlbDogIkZhaWwgb3B0aW9uIDIiLAorICAgICAgICBhbW91bnQ6IHsgY3VycmVu
Y3k6ICJVU0QiLCB2YWx1ZTogIjUuMDAiIH0sCisgICAgICAgIHNlbGVjdGVkOiBmYWxzZSwKKyAg
ICAgIH0sCisgICAgXSwKKyAgfTsKKyAgY29uc3QgcmVxdWVzdCA9IG5ldyBQYXltZW50UmVxdWVz
dChtZXRob2RzLCBkZXRhaWxzLCBvcHRpb25zKTsKKyAgcmVxdWVzdC5vbnNoaXBwaW5nYWRkcmVz
c2NoYW5nZSA9IGV2ID0+IGV2LnVwZGF0ZVdpdGgoZGV0YWlscyk7CisgIHJlcXVlc3Qub25zaGlw
cGluZ29wdGlvbmNoYW5nZSA9IGV2ID0+IGV2LnVwZGF0ZVdpdGgoZGV0YWlscyk7CisgIHJlcXVl
c3Qub25hcHBsZXBheXZhbGlkYXRlbWVyY2hhbnQgPSBldiA9PiBldi5jb21wbGV0ZSh7fSk7Cisg
IGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcmVxdWVzdC5zaG93KCk7CisgIHJldHVybiB7IHJlcXVl
c3QsIHJlc3BvbnNlIH07Cit9CisKKy8qKgorICogUnVucyBhIG1hbnVhbCB0ZXN0IGZvciBwYXlt
ZW50CisgKgorICogQHBhcmFtIHtIVE1MQnV0dG9uRWxlbWVudH0gYnV0dG9uIFRoZSBIVE1MIGJ1
dHRvbi4KKyAqIEBwYXJhbSB7UGF5bWVudE9wdGlvbnM/fSBvcHRpb25zLgorICogQHBhcmFtIHtP
YmplY3R9IGV4cGVjdGVkIFdoYXQgcHJvcGVydHkgdmFsdWVzIGFyZSBleHBlY3RlZCB0byBwYXNz
IHRoZSB0ZXN0LgorICogQHBhcmFtIHtTdHJpbmc/fSBpZCBBbmQgaWQgZm9yIHRoZSByZXF1ZXN0
L3Jlc3BvbnNlIHBhaXIuCisgKi8KK2FzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoYnV0dG9uLCBvcHRp
b25zLCBleHBlY3RlZCA9IHt9LCBpZCA9IHVuZGVmaW5lZCkgeworICBidXR0b24uZGlzYWJsZWQg
PSB0cnVlOworICBjb25zdCB7IHJlcXVlc3QsIHJlc3BvbnNlIH0gPSBhd2FpdCBnZXRQYXltZW50
UmVxdWVzdFJlc3BvbnNlKG9wdGlvbnMsIGlkKTsKKyAgYXdhaXQgcmVzcG9uc2UuY29tcGxldGUo
KTsKKyAgdGVzdCgoKSA9PiB7CisgICAgYXNzZXJ0X2lkbF9hdHRyaWJ1dGUoCisgICAgICByZXNw
b25zZSwKKyAgICAgICJyZXF1ZXN0SWQiLAorICAgICAgIkV4cGVjdGVkIHJlcXVlc3RJZCB0byBi
ZSBhbiBJREwgYXR0cmlidXRlLiIKKyAgICApOworICAgIGFzc2VydF9lcXVhbHMocmVzcG9uc2Uu
cmVxdWVzdElkLCByZXF1ZXN0LmlkLCBgRXhwZWN0ZWQgaWRzIHRvIG1hdGNoYCk7CisgICAgZm9y
IChjb25zdCBbYXR0cmlidXRlLCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZXhwZWN0ZWQpKSB7
CisgICAgICBhc3NlcnRfaWRsX2F0dHJpYnV0ZSgKKyAgICAgICAgcmVzcG9uc2UsCisgICAgICAg
IGF0dHJpYnV0ZSwKKyAgICAgICAgYEV4cGVjdGVkICR7YXR0cmlidXRlfSB0byBiZSBhbiBJREwg
YXR0cmlidXRlLmAKKyAgICAgICk7CisgICAgICBhc3NlcnRfZXF1YWxzKAorICAgICAgICByZXNw
b25zZVthdHRyaWJ1dGVdLAorICAgICAgICB2YWx1ZSwKKyAgICAgICAgYEV4cGVjdGVkIHJlc3Bv
bnNlICR7YXR0cmlidXRlfSBhdHRyaWJ1dGUgdG8gYmUgJHt2YWx1ZX1gCisgICAgICApOworICAg
IH0KKyAgICBhc3NlcnRfaWRsX2F0dHJpYnV0ZShyZXNwb25zZSwgImRldGFpbHMiKTsKKyAgICBh
c3NlcnRfZXF1YWxzKHR5cGVvZiByZXNwb25zZS5kZXRhaWxzLCAib2JqZWN0IiwgIkV4cGVjdGVk
IGFuIG9iamVjdCIpOworICAgIC8vIFRlc3RpbmcgdGhhdCB0aGlzIGRvZXMgbm90IHRocm93Ogor
ICAgIHJlc3BvbnNlLnRvSlNPTigpOworICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMucmVxdWVz
dFNoaXBwaW5nKSB7CisgICAgICBhc3NlcnRfZXF1YWxzKAorICAgICAgICByZXNwb25zZS5zaGlw
cGluZ09wdGlvbiwKKyAgICAgICAgInBhc3MiLAorICAgICAgICAicmVxdWVzdC5zaGlwcGluZ09w
dGlvbiBtdXN0IGJlICdwYXNzJyIKKyAgICAgICk7CisgICAgfSBlbHNlIHsKKyAgICAgIGFzc2Vy
dF9lcXVhbHMoCisgICAgICAgIHJlcXVlc3Quc2hpcHBpbmdPcHRpb24sCisgICAgICAgIG51bGws
CisgICAgICAgICJJZiByZXF1ZXN0U2hpcHBpbmcgaXMgZmFsc3ksIHJlcXVlc3Quc2hpcHBpbmdP
cHRpb24gbXVzdCBiZSBudWxsIgorICAgICAgKTsKKyAgICAgIGFzc2VydF9lcXVhbHMoCisgICAg
ICAgIHJlc3BvbnNlLnNoaXBwaW5nT3B0aW9uLAorICAgICAgICBudWxsLAorICAgICAgICAicmVx
dWVzdC5zaGlwcGluZ09wdGlvbiBtdXN0IGJlIG51bGwiCisgICAgICApOworICAgIH0KKyAgfSwg
YnV0dG9uLnRleHRDb250ZW50LnRyaW0oKSk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324576</attachid>
            <date>2017-10-23 12:29:38 -0700</date>
            <delta_ts>2017-10-23 13:24:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178609-20171023122937.patch</filename>
            <type>text/plain</type>
            <size>98298</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzNzk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjAyMzJlNjA0Zjk2MGIz
Mjg0YzdlNjcxMjYzOTQ3NDM0ZmIzYWU1Yi4uM2Q4MDVlNjE4OGY5YTA5YTNkYmRmZjk1NTdjNDA0
YmJkMzk3ODY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDE3LTEwLTIwICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbUGF5bWVudCBSZXF1ZXN0XSBS
ZXNvbHZlIFBheW1lbnRSZXF1ZXN0LnNob3coKSdzIGFjY2VwdCBwcm9taXNlIHdoZW4gYSBwYXlt
ZW50IGlzIGF1dGhvcml6ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3ODYwOQorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4u
CisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIHRoZSBsb2dpYyBmb3IgcmVzb2x2aW5n
IFBheW1lbnRSZXF1ZXN0LnNob3coKSdzIGFjY2VwdCBwcm9taXNlIHdoZW4KKyAgICAgICAgdGhl
IHVzZXIgYXV0aG9yaXplcyBhIHBheW1lbnQsIGFuZCBpbXBsZW1lbnRzIFBheW1lbnRSZXNwb25z
ZS5jb21wbGV0ZSgpLgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0
L3BheW1lbnQtYWRkcmVzcy1hdHRyaWJ1dGVzLWFuZC10b0pTT04tbWV0aG9kLmh0dHBzLmh0bWwK
KyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXNwb25z
ZS1jb21wbGV0ZS1tZXRob2QuaHR0cHMuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9w
YXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLW1ldGhvZE5hbWUtYXR0cmlidXRlLmh0dHBz
Lmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1y
ZXNwb25zZS1wYXllckVtYWlsLWF0dHJpYnV0ZS5odHRwcy5odG1sCisgICAgICAgICAgICAgICBo
dHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtcGF5ZXJOYW1lLWF0dHJp
YnV0ZS5odHRwcy5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0
L3BheW1lbnQtcmVzcG9uc2UtcGF5ZXJQaG9uZS1hdHRyaWJ1dGUuaHR0cHMuaHRtbAorCisgICAg
ICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5UGF5bWVudENvbnRhY3QuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1l
bnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnQ6OlBheW1lbnQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UGF5bWVudDo6cGtQYXltZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb250YWN0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpQYXltZW50Q29udGFjdDo6UGF5bWVudENvbnRhY3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UGF5bWVudENvbnRhY3Q6OnBrQ29udGFjdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
ICogTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29udGFjdENvY29hLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6Y29udmVydCk6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9wYXltZW50
cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxlUGF5UGF5bWVudEhhbmRsZXI6Omhhc0FjdGl2ZVNlc3Npb24pOgorICAgICAgICAoV2ViQ29y
ZTo6QXBwbGVQYXlQYXltZW50SGFuZGxlcjo6QXBwbGVQYXlQYXltZW50SGFuZGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpkb2N1bWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpwYXltZW50Q29vcmRpbmF0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlQYXltZW50SGFuZGxlcjo6Y29udmVydERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlQYXltZW50SGFuZGxlcjo6c2hvdyk6CisgICAgICAg
IChXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpoaWRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OmNhbk1ha2VQYXltZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OmNvbXBsZXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OmNvbnZlcnQpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlQYXltZW50SGFuZGxlcjo6
ZGlkQXV0aG9yaXplUGF5bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRI
YW5kbGVyOjpkaWRTZWxlY3RTaGlwcGluZ01ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
ZVBheVBheW1lbnRIYW5kbGVyOjpkaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3QpOgorICAgICAgICAq
IE1vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5o
OgorICAgICAgICAqIE1vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudEFkZHJlc3MuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRBZGRyZXNzLmlkbDoKKyAgICAg
ICAgKiBNb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRIYW5kbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBheW1lbnRIYW5kbGVyOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvcGF5
bWVudHJlcXVlc3QvUGF5bWVudEhhbmRsZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3BheW1lbnRy
ZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRSZXF1
ZXN0OjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpzdG9wKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpjYW5NYWtlUGF5bWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6c2hpcHBpbmdBZGRy
ZXNzQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6c2hpcHBpbmdP
cHRpb25DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjphY2NlcHQp
OgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OmNvbXBsZXRlKToKKyAgICAgICAg
KiBNb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0Lmg6CisgICAgICAgICogTW9k
dWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGF5bWVudFJlc3BvbnNlOjpQYXltZW50UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6
UGF5bWVudFJlc3BvbnNlOjpjb21wbGV0ZSk6CisgICAgICAgICogTW9kdWxlcy9wYXltZW50cmVx
dWVzdC9QYXltZW50UmVzcG9uc2UuaDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxzOjpJbnRlcm5hbHMpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJu
YWxzOjptb2NrUGF5bWVudENvb3JkaW5hdG9yIGNvbnN0KToKKyAgICAgICAgKiB0ZXN0aW5nL0lu
dGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKyAgICAgICAgKiB0
ZXN0aW5nL01vY2tQYXltZW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
cGF5bWVudHJlcXVlc3QvUGF5bWVudFJlc3BvbnNlLmNwcC4KKyAgICAgICAgKiB0ZXN0aW5nL01v
Y2tQYXltZW50QWRkcmVzcy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Bh
eW1lbnRyZXF1ZXN0L1BheW1lbnRSZXNwb25zZS5jcHAuCisgICAgICAgICogdGVzdGluZy9Nb2Nr
UGF5bWVudEFkZHJlc3MuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Bh
eW1lbnRyZXF1ZXN0L1BheW1lbnRSZXNwb25zZS5jcHAuCisgICAgICAgICogdGVzdGluZy9Nb2Nr
UGF5bWVudENvbnRhY3QuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXlt
ZW50cmVxdWVzdC9QYXltZW50UmVzcG9uc2UuY3BwLgorICAgICAgICAqIHRlc3RpbmcvTW9ja1Bh
eW1lbnRDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUGF5bWVudENvb3Jk
aW5hdG9yOjpjYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZCk6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrUGF5bWVudENvb3JkaW5hdG9yOjpvcGVuUGF5bWVudFNldHVwKToKKyAgICAgICAgKFdl
YkNvcmU6OmRpc3BhdGNoSWZTaG93aW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tQYXltZW50
Q29vcmRpbmF0b3I6OnNob3dQYXltZW50VUkpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1BheW1l
bnRDb29yZGluYXRvcjo6Y29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja1BheW1lbnRDb29yZGluYXRvcjo6Y29tcGxldGVQYXltZW50U2Vzc2lvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrUGF5bWVudENvb3JkaW5hdG9yOjphYm9ydFBheW1lbnRTZXNz
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tQYXltZW50Q29vcmRpbmF0b3I6OmNhbmNlbFBh
eW1lbnRTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tQYXltZW50Q29vcmRpbmF0b3I6
OnBheW1lbnRDb29yZGluYXRvckRlc3Ryb3llZCk6CisgICAgICAgICogdGVzdGluZy9Nb2NrUGF5
bWVudENvb3JkaW5hdG9yLmg6CisgICAgICAgICogdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5h
dG9yLmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVz
dC9QYXltZW50UmVzcG9uc2UuY3BwLgorCiAyMDE3LTEwLTIwICBLZWl0aCBNaWxsZXIgIDxrZWl0
aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCB3aW5kb3dzIGJ1
aWxkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZjE1ZTkyM2E4ZGE4YzQ5MmYy
OTM4YTFjNTY1NjcwOGMyY2I2MDlkZS4uYjIwYzcwYmNiM2Y4YWEwMWY1MDYyMDQ2ZjRlOGMxNzkx
MmZiODJjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC05MDgsNiArOTA4LDgg
QEAgSlNfQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvdGVzdGluZy9Nb2NrQ0RNRmFj
dG9yeS5pZGwgXAogICAgICQoV2ViQ29yZSkvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRp
bmdzLmlkbCBcCiAgICAgJChXZWJDb3JlKS90ZXN0aW5nL01vY2tQYWdlT3ZlcmxheS5pZGwgXAor
ICAgICQoV2ViQ29yZSkvdGVzdGluZy9Nb2NrUGF5bWVudEFkZHJlc3MuaWRsIFwKKyAgICAkKFdl
YkNvcmUpL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5pZGwgXAogICAgICQoV2ViQ29y
ZSkvdGVzdGluZy9UeXBlQ29udmVyc2lvbnMuaWRsIFwKICAgICAkKFdlYkNvcmUpL3dvcmtlcnMv
QWJzdHJhY3RXb3JrZXIuaWRsIFwKICAgICAkKFdlYkNvcmUpL3dvcmtlcnMvRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGUuaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlQYXltZW50Q29udGFjdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRDb250YWN0LmgKaW5kZXggZWI2ZTI4ZmNmNDc2NWVl
ZDJiMjdjNTI0NjVkN2IwMWI4YTIxZTAzYi4uZGJhOTlmZjhlMDQwMzQ5ZDk0MmE0Mzg0OTI4NWNl
NGM3ZTU2NzM1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9B
cHBsZVBheVBheW1lbnRDb250YWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9BcHBsZVBheVBheW1lbnRDb250YWN0LmgKQEAgLTM4LDggKzM4LDEwIEBAIHN0cnVjdCBB
cHBsZVBheVBheW1lbnRDb250YWN0IHsKICAgICBTdHJpbmcgZW1haWxBZGRyZXNzOwogICAgIFN0
cmluZyBnaXZlbk5hbWU7CiAgICAgU3RyaW5nIGZhbWlseU5hbWU7CisgICAgU3RyaW5nIGxvY2Fs
aXplZE5hbWU7CiAgICAgU3RyaW5nIHBob25ldGljR2l2ZW5OYW1lOwogICAgIFN0cmluZyBwaG9u
ZXRpY0ZhbWlseU5hbWU7CisgICAgU3RyaW5nIGxvY2FsaXplZFBob25ldGljTmFtZTsKICAgICBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBhZGRyZXNzTGluZXM7CiAgICAgU3RyaW5nIHN1
YkxvY2FsaXR5OwogICAgIFN0cmluZyBsb2NhbGl0eTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9QYXltZW50LmgKaW5kZXggNzNmZjJiOWRmZmIwZjdmZWY3YzQ5ZWZjYjA5YTI2YWIx
MGJjOGJmMS4uYzkwNTRkNzNmZDMxMDE1ODZjMTljNDBjODc3NjUyYzQ4MjRhOTE0NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50LmgKQEAgLTM1LDcgKzM1LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQXBwbGVQYXlQYXltZW50OwogCi1jbGFzcyBQ
YXltZW50IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIFBheW1lbnQgewogcHVibGljOgogICAgIFBh
eW1lbnQoKSA9IGRlZmF1bHQ7CiAKQEAgLTQ0LDcgKzQ0LDkgQEAgcHVibGljOgogICAgIHsKICAg
ICB9CiAKLSAgICBBcHBsZVBheVBheW1lbnQgdG9BcHBsZVBheVBheW1lbnQoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIH5QYXltZW50KCkgPSBkZWZhdWx0OworCisgICAgdmlydHVhbCBBcHBsZVBheVBh
eW1lbnQgdG9BcHBsZVBheVBheW1lbnQoKSBjb25zdDsKIAogICAgIFBLUGF5bWVudCAqcGtQYXlt
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9wa1BheW1lbnQuZ2V0KCk7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29udGFjdC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29udGFjdC5oCmluZGV4IDBlN2Q2MTI3
ZmE2MmI2ZDEwNGMzOTNhYzU3NWYyNmUzY2JhYTUzM2YuLmVjMDEwYWNmOTdmYzJkN2FmM2ZkNTlk
NTllZTUzZmU4MGNjZGE5MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvUGF5bWVudENvbnRhY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L1BheW1lbnRDb250YWN0LmgKQEAgLTM2LDE2ICszNiwxNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0cnVjdCBBcHBsZVBheVBheW1lbnRDb250YWN0OwogCi1jbGFzcyBQYXltZW50Q29u
dGFjdCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBQYXltZW50Q29udGFjdCB7CiBwdWJsaWM6CiAg
ICAgUGF5bWVudENvbnRhY3QoKSA9IGRlZmF1bHQ7CiAgICAgZXhwbGljaXQgUGF5bWVudENvbnRh
Y3QoUEtDb250YWN0ICpwa0NvbnRhY3QpCiAgICAgICAgIDogbV9wa0NvbnRhY3QocGtDb250YWN0
KQogICAgIHsKICAgICB9CisgICAgdmlydHVhbCB+UGF5bWVudENvbnRhY3QoKSA9IGRlZmF1bHQ7
CiAKICAgICBzdGF0aWMgUGF5bWVudENvbnRhY3QgZnJvbUFwcGxlUGF5UGF5bWVudENvbnRhY3Qo
dW5zaWduZWQgdmVyc2lvbiwgY29uc3QgQXBwbGVQYXlQYXltZW50Q29udGFjdCYpOwotICAgIEFw
cGxlUGF5UGF5bWVudENvbnRhY3QgdG9BcHBsZVBheVBheW1lbnRDb250YWN0KCkgY29uc3Q7Cisg
ICAgdmlydHVhbCBBcHBsZVBheVBheW1lbnRDb250YWN0IHRvQXBwbGVQYXlQYXltZW50Q29udGFj
dCgpIGNvbnN0OwogCiAgICAgUEtDb250YWN0ICpwa0NvbnRhY3QoKSBjb25zdCB7IHJldHVybiBt
X3BrQ29udGFjdC5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb250YWN0Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb250YWN0Q29jb2EubW0KaW5kZXggMDdiYmVj
ZWJkM2YwYTRlM2JjY2IwOGZhOWU0YWQwMDNhNjBmM2VmZS4uMGQ4MjI0OTAzMjA5MTI3NTIwNDc3
MWI5YzI1ZWMxNTcwZGZiMzRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9jb2NvYS9QYXltZW50Q29udGFjdENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudENvbnRhY3RDb2NvYS5tbQpAQCAtMTg5LDEw
ICsxODksMTIgQEAgc3RhdGljIEFwcGxlUGF5UGF5bWVudENvbnRhY3QgY29udmVydChQS0NvbnRh
Y3QgKmNvbnRhY3QpCiAgICAgTlNQZXJzb25OYW1lQ29tcG9uZW50cyAqbmFtZSA9IGNvbnRhY3Qu
bmFtZTsKICAgICByZXN1bHQuZ2l2ZW5OYW1lID0gbmFtZS5naXZlbk5hbWU7CiAgICAgcmVzdWx0
LmZhbWlseU5hbWUgPSBuYW1lLmZhbWlseU5hbWU7CisgICAgcmVzdWx0LmxvY2FsaXplZE5hbWUg
PSBbTlNQZXJzb25OYW1lQ29tcG9uZW50c0Zvcm1hdHRlciBsb2NhbGl6ZWRTdHJpbmdGcm9tUGVy
c29uTmFtZUNvbXBvbmVudHM6bmFtZSBzdHlsZTpOU1BlcnNvbk5hbWVDb21wb25lbnRzRm9ybWF0
dGVyU3R5bGVEZWZhdWx0IG9wdGlvbnM6MF07CiAKICAgICBOU1BlcnNvbk5hbWVDb21wb25lbnRz
ICpwaG9uZXRpY05hbWUgPSBuYW1lLnBob25ldGljUmVwcmVzZW50YXRpb247CiAgICAgcmVzdWx0
LnBob25ldGljR2l2ZW5OYW1lID0gcGhvbmV0aWNOYW1lLmdpdmVuTmFtZTsKICAgICByZXN1bHQu
cGhvbmV0aWNGYW1pbHlOYW1lID0gcGhvbmV0aWNOYW1lLmZhbWlseU5hbWU7CisgICAgcmVzdWx0
LmxvY2FsaXplZFBob25ldGljTmFtZSA9IFtOU1BlcnNvbk5hbWVDb21wb25lbnRzRm9ybWF0dGVy
IGxvY2FsaXplZFN0cmluZ0Zyb21QZXJzb25OYW1lQ29tcG9uZW50czpuYW1lIHN0eWxlOk5TUGVy
c29uTmFtZUNvbXBvbmVudHNGb3JtYXR0ZXJTdHlsZURlZmF1bHQgb3B0aW9uczpOU1BlcnNvbk5h
bWVDb21wb25lbnRzRm9ybWF0dGVyUGhvbmV0aWNdOwogCiAgICAgQ05Qb3N0YWxBZGRyZXNzICpw
b3N0YWxBZGRyZXNzID0gY29udGFjdC5wb3N0YWxBZGRyZXNzOwogICAgIGlmIChwb3N0YWxBZGRy
ZXNzLnN0cmVldC5sZW5ndGgpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVu
dEhhbmRsZXIuY3BwCmluZGV4IDFiODlkZTAwN2MwOTNjZjc0OTY5NTVhNDc2MDA4ZWY3ZjJkOTA5
ZTUuLjhhNjA1YWMzNmNiZTYzNWQ4ZmQzZTNhZjhlODEwZTM0MDliY2I5YTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQ
YXltZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9w
YXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmNwcApAQCAtMzEsMTYgKzMxLDIx
IEBACiAjaW5jbHVkZSAiQXBwbGVQYXlDb250YWN0RmllbGQuaCIKICNpbmNsdWRlICJBcHBsZVBh
eU1lcmNoYW50Q2FwYWJpbGl0eS5oIgogI2luY2x1ZGUgIkFwcGxlUGF5TWVyY2hhbnRWYWxpZGF0
aW9uRXZlbnQuaCIKKyNpbmNsdWRlICJBcHBsZVBheVBheW1lbnQuaCIKICNpbmNsdWRlICJBcHBs
ZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5j
bHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIkpTQXBwbGVQYXlQYXltZW50LmgiCiAjaW5j
bHVkZSAiSlNBcHBsZVBheVJlcXVlc3QuaCIKICNpbmNsdWRlICJMaW5rSWNvbkNvbGxlY3Rvci5o
IgogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQ
YXltZW50LmgiCisjaW5jbHVkZSAiUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMuaCIKICNpbmNs
dWRlICJQYXltZW50Q29udGFjdC5oIgogI2luY2x1ZGUgIlBheW1lbnRDb29yZGluYXRvci5oIgog
I2luY2x1ZGUgIlBheW1lbnRSZXF1ZXN0VmFsaWRhdG9yLmgiCisjaW5jbHVkZSAiUGF5bWVudFJl
c3BvbnNlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNjEsMTIgKzY2LDI1IEBAIHN0YXRpYyBpbmxpbmUgUGF5bWVudENvb3JkaW5hdG9yJiBwYXlt
ZW50Q29vcmRpbmF0b3IoRG9jdW1lbnQmIGRvY3VtZW50KQogCiBib29sIEFwcGxlUGF5UGF5bWVu
dEhhbmRsZXI6Omhhc0FjdGl2ZVNlc3Npb24oRG9jdW1lbnQmIGRvY3VtZW50KQogewotICAgIHJl
dHVybiBwYXltZW50Q29vcmRpbmF0b3IoZG9jdW1lbnQpLmhhc0FjdGl2ZVNlc3Npb24oKTsKKyAg
ICByZXR1cm4gV2ViQ29yZTo6cGF5bWVudENvb3JkaW5hdG9yKGRvY3VtZW50KS5oYXNBY3RpdmVT
ZXNzaW9uKCk7CiB9CiAKLUFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OkFwcGxlUGF5UGF5bWVudEhh
bmRsZXIoUGF5bWVudFJlcXVlc3QmIHBheW1lbnRSZXF1ZXN0KQotICAgIDogbV9wYXltZW50UmVx
dWVzdCB7IHBheW1lbnRSZXF1ZXN0IH0KK0FwcGxlUGF5UGF5bWVudEhhbmRsZXI6OkFwcGxlUGF5
UGF5bWVudEhhbmRsZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBQYXltZW50UmVxdWVzdDo6
TWV0aG9kSWRlbnRpZmllciYgaWRlbnRpZmllciwgUGF5bWVudFJlcXVlc3QmIHBheW1lbnRSZXF1
ZXN0KQorICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgeyAmZG9jdW1lbnQgfQorICAg
ICwgbV9pZGVudGlmaWVyIHsgaWRlbnRpZmllciB9CisgICAgLCBtX3BheW1lbnRSZXF1ZXN0IHsg
cGF5bWVudFJlcXVlc3QgfQogeworICAgIEFTU0VSVChoYW5kbGVzSWRlbnRpZmllcihtX2lkZW50
aWZpZXIpKTsKK30KKworRG9jdW1lbnQmIEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OmRvY3VtZW50
KCkKK3sKKyAgICByZXR1cm4gZG93bmNhc3Q8RG9jdW1lbnQ+KCpzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpOworfQorCitQYXltZW50Q29vcmRpbmF0b3ImIEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6
OnBheW1lbnRDb29yZGluYXRvcigpCit7CisgICAgcmV0dXJuIFdlYkNvcmU6OnBheW1lbnRDb29y
ZGluYXRvcihkb2N1bWVudCgpKTsKIH0KIAogc3RhdGljIEV4Y2VwdGlvbk9yPHZvaWQ+IHZhbGlk
YXRlKGNvbnN0IFBheW1lbnRDdXJyZW5jeUFtb3VudCYgYW1vdW50LCBjb25zdCBTdHJpbmcmIGV4
cGVjdGVkQ3VycmVuY3kpCkBAIC0xNDAsMTAgKzE1OCwxMSBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8
QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kPiBjb252ZXJ0QW5k
VmFsaQogICAgIHJldHVybiB7IFdURk1vdmUocmVzdWx0KSB9OwogfQogCi1FeGNlcHRpb25Pcjx2
b2lkPiBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpjb252ZXJ0RGF0YShKU0M6OkV4ZWNTdGF0ZSYg
ZXhlY1N0YXRlLCBKU0M6OkpTVmFsdWUmJiBkYXRhKQorRXhjZXB0aW9uT3I8dm9pZD4gQXBwbGVQ
YXlQYXltZW50SGFuZGxlcjo6Y29udmVydERhdGEoSlNDOjpKU1ZhbHVlJiYgZGF0YSkKIHsKLSAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWNTdGF0ZS52bSgpKTsK
LSAgICBhdXRvIGFwcGxlUGF5UmVxdWVzdCA9IGNvbnZlcnREaWN0aW9uYXJ5PEFwcGxlUGF5UmVx
dWVzdD4oZXhlY1N0YXRlLCBXVEZNb3ZlKGRhdGEpKTsKKyAgICBhdXRvJiBjb250ZXh0ID0gKnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKGNvbnRleHQudm0oKSk7CisgICAgYXV0byBhcHBsZVBheVJlcXVlc3QgPSBjb252
ZXJ0RGljdGlvbmFyeTxBcHBsZVBheVJlcXVlc3Q+KCpjb250ZXh0LmV4ZWNTdGF0ZSgpLCBXVEZN
b3ZlKGRhdGEpKTsKICAgICBpZiAodGhyb3dTY29wZS5leGNlcHRpb24oKSkKICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfTsKIApAQCAtMTUxLDcgKzE3
MCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OmNvbnZlcnRE
YXRhKEpTQzo6RXhlY1N0YXRlJiBleGVjU3RhdGUsCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotRXhj
ZXB0aW9uT3I8dm9pZD4gQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6c2hvdyhEb2N1bWVudCYgZG9j
dW1lbnQpCitFeGNlcHRpb25Pcjx2b2lkPiBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpzaG93KCkK
IHsKICAgICBhdXRvIHZhbGlkYXRlZFJlcXVlc3QgPSBjb252ZXJ0QW5kVmFsaWRhdGUobV9hcHBs
ZVBheVJlcXVlc3QtPnZlcnNpb24sICptX2FwcGxlUGF5UmVxdWVzdCk7CiAgICAgaWYgKHZhbGlk
YXRlZFJlcXVlc3QuaGFzRXhjZXB0aW9uKCkpCkBAIC0yMDMsMTYgKzIyMiwxNiBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpzaG93KERvY3VtZW50JiBkb2N1bWVu
dCkKICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbi5yZWxlYXNlRXhjZXB0aW9uKCk7CiAKICAgICBW
ZWN0b3I8VVJMPiBsaW5rSWNvblVSTHM7Ci0gICAgZm9yIChhdXRvJiBpY29uIDogTGlua0ljb25D
b2xsZWN0b3IgeyBkb2N1bWVudCB9Lmljb25zT2ZUeXBlcyh7IExpbmtJY29uVHlwZTo6VG91Y2hJ
Y29uLCBMaW5rSWNvblR5cGU6OlRvdWNoUHJlY29tcG9zZWRJY29uIH0pKQorICAgIGZvciAoYXV0
byYgaWNvbiA6IExpbmtJY29uQ29sbGVjdG9yIHsgZG9jdW1lbnQoKSB9Lmljb25zT2ZUeXBlcyh7
IExpbmtJY29uVHlwZTo6VG91Y2hJY29uLCBMaW5rSWNvblR5cGU6OlRvdWNoUHJlY29tcG9zZWRJ
Y29uIH0pKQogICAgICAgICBsaW5rSWNvblVSTHMuYXBwZW5kKGljb24udXJsKTsKIAotICAgIHBh
eW1lbnRDb29yZGluYXRvcihkb2N1bWVudCkuYmVnaW5QYXltZW50U2Vzc2lvbigqdGhpcywgZG9j
dW1lbnQudXJsKCksIGxpbmtJY29uVVJMcywgcmVxdWVzdCk7CisgICAgcGF5bWVudENvb3JkaW5h
dG9yKCkuYmVnaW5QYXltZW50U2Vzc2lvbigqdGhpcywgZG9jdW1lbnQoKS51cmwoKSwgbGlua0lj
b25VUkxzLCByZXF1ZXN0KTsKICAgICByZXR1cm4geyB9OwogfQogCi12b2lkIEFwcGxlUGF5UGF5
bWVudEhhbmRsZXI6OmhpZGUoRG9jdW1lbnQmIGRvY3VtZW50KQordm9pZCBBcHBsZVBheVBheW1l
bnRIYW5kbGVyOjpoaWRlKCkKIHsKLSAgICBwYXltZW50Q29vcmRpbmF0b3IoZG9jdW1lbnQpLmFi
b3J0UGF5bWVudFNlc3Npb24oKTsKKyAgICBwYXltZW50Q29vcmRpbmF0b3IoKS5hYm9ydFBheW1l
bnRTZXNzaW9uKCk7CiB9CiAKIHN0YXRpYyBib29sIHNob3VsZERpc2Nsb3NlQXBwbGVQYXlDYXBh
YmlsaXR5KERvY3VtZW50JiBkb2N1bWVudCkKQEAgLTIyNCwxNCArMjQzLDM2IEBAIHN0YXRpYyBi
b29sIHNob3VsZERpc2Nsb3NlQXBwbGVQYXlDYXBhYmlsaXR5KERvY3VtZW50JiBkb2N1bWVudCkK
ICAgICByZXR1cm4gZG9jdW1lbnQuc2V0dGluZ3MoKS5hcHBsZVBheUNhcGFiaWxpdHlEaXNjbG9z
dXJlQWxsb3dlZCgpOwogfQogCi12b2lkIEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OmNhbk1ha2VQ
YXltZW50KERvY3VtZW50JiBkb2N1bWVudCwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpjYW5NYWtlUGF5
bWVudChGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlm
ICghc2hvdWxkRGlzY2xvc2VBcHBsZVBheUNhcGFiaWxpdHkoZG9jdW1lbnQpKSB7Ci0gICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHBheW1lbnRDb29yZGluYXRvcihkb2N1bWVudCkuY2FuTWFrZVBh
eW1lbnRzKCkpOworICAgIGlmICghc2hvdWxkRGlzY2xvc2VBcHBsZVBheUNhcGFiaWxpdHkoZG9j
dW1lbnQoKSkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocGF5bWVudENvb3JkaW5hdG9y
KCkuY2FuTWFrZVBheW1lbnRzKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcGF5
bWVudENvb3JkaW5hdG9yKGRvY3VtZW50KS5jYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZCht
X2FwcGxlUGF5UmVxdWVzdC0+bWVyY2hhbnRJZGVudGlmaWVyLCBkb2N1bWVudC5kb21haW4oKSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIHBheW1lbnRDb29yZGluYXRvcigpLmNh
bk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKG1fYXBwbGVQYXlSZXF1ZXN0LT5tZXJjaGFudElk
ZW50aWZpZXIsIGRvY3VtZW50KCkuZG9tYWluKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKK30KKwordm9pZCBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpjb21wbGV0ZShzdGQ6Om9wdGlv
bmFsPFBheW1lbnRDb21wbGV0ZT4mJiByZXN1bHQpCit7CisgICAgaWYgKCFyZXN1bHQpIHsKKyAg
ICAgICAgcGF5bWVudENvb3JkaW5hdG9yKCkuY29tcGxldGVQYXltZW50U2Vzc2lvbihzdGQ6Om51
bGxvcHQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUGF5bWVudEF1dGhvcml6YXRp
b25SZXN1bHQgYXV0aG9yaXphdGlvblJlc3VsdDsKKyAgICBzd2l0Y2ggKCpyZXN1bHQpIHsKKyAg
ICBjYXNlIFBheW1lbnRDb21wbGV0ZTo6RmFpbDoKKyAgICBjYXNlIFBheW1lbnRDb21wbGV0ZTo6
VW5rbm93bjoKKyAgICAgICAgYXV0aG9yaXphdGlvblJlc3VsdC5zdGF0dXMgPSBQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1czo6RmFpbHVyZTsKKyAgICAgICAgYXV0aG9yaXphdGlvblJlc3VsdC5l
cnJvcnMuYXBwZW5kKHsgUGF5bWVudEVycm9yOjpDb2RlOjpVbmtub3duLCB7IH0sIHN0ZDo6bnVs
bG9wdCB9KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQYXltZW50Q29tcGxldGU6OlN1Y2Nl
c3M6CisgICAgICAgIGF1dGhvcml6YXRpb25SZXN1bHQuc3RhdHVzID0gUGF5bWVudEF1dGhvcml6
YXRpb25TdGF0dXM6OlN1Y2Nlc3M7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHBheW1l
bnRDb29yZGluYXRvcigpLmNvbXBsZXRlUGF5bWVudFNlc3Npb24oV1RGTW92ZShhdXRob3JpemF0
aW9uUmVzdWx0KSk7CiB9CiAKIHZvaWQgQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6dmFsaWRhdGVN
ZXJjaGFudChjb25zdCBVUkwmIHZhbGlkYXRpb25VUkwpCkBAIC0yNDAsNiArMjgxLDMwIEBAIHZv
aWQgQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6dmFsaWRhdGVNZXJjaGFudChjb25zdCBVUkwmIHZh
bGlkYXRpb25VUkwpCiAgICAgICAgIG1fcGF5bWVudFJlcXVlc3QtPmRpc3BhdGNoRXZlbnQoQXBw
bGVQYXlNZXJjaGFudFZhbGlkYXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5hcHBsZXBh
eXZhbGlkYXRlbWVyY2hhbnRFdmVudCwgdmFsaWRhdGlvblVSTCkuZ2V0KCkpOwogfQogCitzdGF0
aWMgUmVmPFBheW1lbnRBZGRyZXNzPiBjb252ZXJ0KGNvbnN0IEFwcGxlUGF5UGF5bWVudENvbnRh
Y3QmIGNvbnRhY3QpCit7CisgICAgcmV0dXJuIFBheW1lbnRBZGRyZXNzOjpjcmVhdGUoY29udGFj
dC5jb3VudHJ5Q29kZSwgY29udGFjdC5hZGRyZXNzTGluZXMudmFsdWVfb3IoVmVjdG9yPFN0cmlu
Zz4oKSksIGNvbnRhY3QuYWRtaW5pc3RyYXRpdmVBcmVhLCBjb250YWN0LmxvY2FsaXR5LCBjb250
YWN0LnN1YkxvY2FsaXR5LCBjb250YWN0LnBvc3RhbENvZGUsIFN0cmluZygpLCBTdHJpbmcoKSwg
U3RyaW5nKCksIGNvbnRhY3QubG9jYWxpemVkTmFtZSwgY29udGFjdC5waG9uZU51bWJlcik7Cit9
CisKK3ZvaWQgQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6ZGlkQXV0aG9yaXplUGF5bWVudChjb25z
dCBQYXltZW50JiBwYXltZW50KQoreworICAgIGF1dG8gYXBwbGVQYXlQYXltZW50ID0gcGF5bWVu
dC50b0FwcGxlUGF5UGF5bWVudCgpOworICAgIGF1dG8mIGV4ZWNTdGF0ZSA9ICpkb2N1bWVudCgp
LmV4ZWNTdGF0ZSgpOworICAgIGF1dG8gZGV0YWlscyA9IEpTQzo6U3Ryb25nPEpTQzo6SlNPYmpl
Y3Q+IHsgZXhlY1N0YXRlLnZtKCksIGFzT2JqZWN0KHRvSlM8SURMRGljdGlvbmFyeTxBcHBsZVBh
eVBheW1lbnQ+PihleGVjU3RhdGUsICpKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4
ZWNTdGF0ZS5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBhcHBsZVBheVBheW1lbnQpKSB9OworICAg
IGNvbnN0IGF1dG8mIHNoaXBwaW5nQ29udGFjdCA9IGFwcGxlUGF5UGF5bWVudC5zaGlwcGluZ0Nv
bnRhY3QudmFsdWVfb3IoQXBwbGVQYXlQYXltZW50Q29udGFjdCgpKTsKKyAgICBtX3BheW1lbnRS
ZXF1ZXN0LT5hY2NlcHQoV1RGOjpnZXQ8VVJMPihtX2lkZW50aWZpZXIpLnN0cmluZygpLCBXVEZN
b3ZlKGRldGFpbHMpLCBjb252ZXJ0KHNoaXBwaW5nQ29udGFjdCksIHNoaXBwaW5nQ29udGFjdC5s
b2NhbGl6ZWROYW1lLCBzaGlwcGluZ0NvbnRhY3QuZW1haWxBZGRyZXNzLCBzaGlwcGluZ0NvbnRh
Y3QucGhvbmVOdW1iZXIpOworfQorCit2b2lkIEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OmRpZFNl
bGVjdFNoaXBwaW5nTWV0aG9kKGNvbnN0IEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpT
aGlwcGluZ01ldGhvZCYgc2hpcHBpbmdNZXRob2QpCit7CisgICAgbV9wYXltZW50UmVxdWVzdC0+
c2hpcHBpbmdPcHRpb25DaGFuZ2VkKHNoaXBwaW5nTWV0aG9kLmlkZW50aWZpZXIpOworfQorCit2
b2lkIEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OmRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdChjb25z
dCBQYXltZW50Q29udGFjdCYgc2hpcHBpbmdDb250YWN0KQoreworICAgIG1fcGF5bWVudFJlcXVl
c3QtPnNoaXBwaW5nQWRkcmVzc0NoYW5nZWQoY29udmVydChzaGlwcGluZ0NvbnRhY3QudG9BcHBs
ZVBheVBheW1lbnRDb250YWN0KCkpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRU5BQkxFKEFQUExFX1BBWSkgJiYgRU5BQkxFKFBBWU1FTlRfUkVRVUVTVCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3Qv
QXBwbGVQYXlQYXltZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmgKaW5kZXggN2Y3MTllYmE0
MDJkMDNlZjAyMmVlZTdhM2M2NDk2ZDE0MGRjYTIxOS4uNTVlNjdlNmY3OGU5ZjM5OTU0MWYwMWQ2
MjNlNTZiYmM5OTU5NjdlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRI
YW5kbGVyLmgKQEAgLTI4LDM4ICsyOCw0NSBAQAogI2lmIEVOQUJMRShBUFBMRV9QQVkpICYmIEVO
QUJMRShQQVlNRU5UX1JFUVVFU1QpCiAKICNpbmNsdWRlICJBcHBsZVBheVJlcXVlc3QuaCIKKyNp
bmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIlBheW1lbnRI
YW5kbGVyLmgiCisjaW5jbHVkZSAiUGF5bWVudFJlcXVlc3QuaCIKICNpbmNsdWRlICJQYXltZW50
U2Vzc2lvbi5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWYuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBQYXltZW50UmVxdWVzdDsKK2Ns
YXNzIFBheW1lbnRDb29yZGluYXRvcjsKIAotY2xhc3MgQXBwbGVQYXlQYXltZW50SGFuZGxlciBm
aW5hbCA6IHB1YmxpYyBQYXltZW50SGFuZGxlciwgcHVibGljIFBheW1lbnRTZXNzaW9uIHsKK2Ns
YXNzIEFwcGxlUGF5UGF5bWVudEhhbmRsZXIgZmluYWwgOiBwdWJsaWMgUGF5bWVudEhhbmRsZXIs
IHB1YmxpYyBQYXltZW50U2Vzc2lvbiwgcHJpdmF0ZSBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZl
ciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaGFuZGxlc0lkZW50aWZpZXIoY29uc3QgUGF5
bWVudFJlcXVlc3Q6Ok1ldGhvZElkZW50aWZpZXImKTsKICAgICBzdGF0aWMgYm9vbCBoYXNBY3Rp
dmVTZXNzaW9uKERvY3VtZW50Jik7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFBheW1l
bnRIYW5kbGVyOwotICAgIGV4cGxpY2l0IEFwcGxlUGF5UGF5bWVudEhhbmRsZXIoUGF5bWVudFJl
cXVlc3QmKTsKKyAgICBleHBsaWNpdCBBcHBsZVBheVBheW1lbnRIYW5kbGVyKERvY3VtZW50Jiwg
Y29uc3QgUGF5bWVudFJlcXVlc3Q6Ok1ldGhvZElkZW50aWZpZXImLCBQYXltZW50UmVxdWVzdCYp
OworCisgICAgRG9jdW1lbnQmIGRvY3VtZW50KCk7CisgICAgUGF5bWVudENvb3JkaW5hdG9yJiBw
YXltZW50Q29vcmRpbmF0b3IoKTsKIAogICAgIC8vIFBheW1lbnRIYW5kbGVyCi0gICAgRXhjZXB0
aW9uT3I8dm9pZD4gY29udmVydERhdGEoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUmJikg
ZmluYWw7Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gc2hvdyhEb2N1bWVudCYpIGZpbmFsOwotICAg
IHZvaWQgaGlkZShEb2N1bWVudCYpIGZpbmFsOwotICAgIHZvaWQgY2FuTWFrZVBheW1lbnQoRG9j
dW1lbnQmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZp
bmFsOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGNvbnZlcnREYXRhKEpTQzo6SlNWYWx1ZSYmKSBm
aW5hbDsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBzaG93KCkgZmluYWw7CisgICAgdm9pZCBoaWRl
KCkgZmluYWw7CisgICAgdm9pZCBjYW5NYWtlUGF5bWVudChXVEY6OkZ1bmN0aW9uPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsOworICAgIHZvaWQgY29tcGxldGUoc3RkOjpv
cHRpb25hbDxQYXltZW50Q29tcGxldGU+JiYpIGZpbmFsOwogCiAgICAgLy8gUGF5bWVudFNlc3Np
b24KICAgICB2b2lkIHZhbGlkYXRlTWVyY2hhbnQoY29uc3QgVVJMJikgZmluYWw7Ci0gICAgdm9p
ZCBkaWRBdXRob3JpemVQYXltZW50KGNvbnN0IFBheW1lbnQmKSBmaW5hbCB7IH0KLSAgICB2b2lk
IGRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kKGNvbnN0IEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1
ZXN0OjpTaGlwcGluZ01ldGhvZCYpIGZpbmFsIHsgfQotICAgIHZvaWQgZGlkU2VsZWN0U2hpcHBp
bmdDb250YWN0KGNvbnN0IFBheW1lbnRDb250YWN0JikgZmluYWwgeyB9CisgICAgdm9pZCBkaWRB
dXRob3JpemVQYXltZW50KGNvbnN0IFBheW1lbnQmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFNlbGVj
dFNoaXBwaW5nTWV0aG9kKGNvbnN0IEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpTaGlw
cGluZ01ldGhvZCYpIGZpbmFsOworICAgIHZvaWQgZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0KGNv
bnN0IFBheW1lbnRDb250YWN0JikgZmluYWw7CiAgICAgdm9pZCBkaWRTZWxlY3RQYXltZW50TWV0
aG9kKGNvbnN0IFBheW1lbnRNZXRob2QmKSBmaW5hbCB7IH0KICAgICB2b2lkIGRpZENhbmNlbFBh
eW1lbnRTZXNzaW9uKCkgZmluYWwgeyB9CiAKKyAgICBQYXltZW50UmVxdWVzdDo6TWV0aG9kSWRl
bnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgUmVmPFBheW1lbnRSZXF1ZXN0PiBtX3BheW1lbnRS
ZXF1ZXN0OwogICAgIHN0ZDo6b3B0aW9uYWw8QXBwbGVQYXlSZXF1ZXN0PiBtX2FwcGxlUGF5UmVx
dWVzdDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1
ZXN0L1BheW1lbnRBZGRyZXNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJl
cXVlc3QvUGF5bWVudEFkZHJlc3MuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRiZTY4MTdiOWFiODdkOWY2YWZj
OWM5NWM3MWE5YWI5MmVkODYyMDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRBZGRyZXNzLmNwcApAQCAtMCwwICsxLDUwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBheW1lbnRBZGRy
ZXNzLmgiCisKKyNpZiBFTkFCTEUoUEFZTUVOVF9SRVFVRVNUKQorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1BheW1lbnRBZGRyZXNzOjpQYXltZW50QWRkcmVzcyhjb25zdCBTdHJpbmcmIGNvdW50
cnksIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhZGRyZXNzTGluZSwgY29uc3QgU3RyaW5nJiByZWdp
b24sIGNvbnN0IFN0cmluZyYgY2l0eSwgY29uc3QgU3RyaW5nJiBkZXBlbmRlbnRMb2NhbGl0eSwg
Y29uc3QgU3RyaW5nJiBwb3N0YWxDb2RlLCBjb25zdCBTdHJpbmcmIHNvcnRpbmdDb2RlLCBjb25z
dCBTdHJpbmcmIGxhbmd1YWdlQ29kZSwgY29uc3QgU3RyaW5nJiBvcmdhbml6YXRpb24sIGNvbnN0
IFN0cmluZyYgcmVjaXBpZW50LCBjb25zdCBTdHJpbmcmIHBob25lKQorICAgIDogbV9jb3VudHJ5
IHsgY291bnRyeSB9CisgICAgLCBtX2FkZHJlc3NMaW5lIHsgYWRkcmVzc0xpbmUgfQorICAgICwg
bV9yZWdpb24geyByZWdpb24gfQorICAgICwgbV9jaXR5IHsgY2l0eSB9CisgICAgLCBtX2RlcGVu
ZGVudExvY2FsaXR5IHsgZGVwZW5kZW50TG9jYWxpdHkgfQorICAgICwgbV9wb3N0YWxDb2RlIHsg
cG9zdGFsQ29kZSB9CisgICAgLCBtX3NvcnRpbmdDb2RlIHsgc29ydGluZ0NvZGUgfQorICAgICwg
bV9sYW5ndWFnZUNvZGUgeyBsYW5ndWFnZUNvZGUgfQorICAgICwgbV9vcmdhbml6YXRpb24geyBv
cmdhbml6YXRpb24gfQorICAgICwgbV9yZWNpcGllbnQgeyByZWNpcGllbnQgfQorICAgICwgbV9w
aG9uZSB7IHBob25lIH0KK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKFBBWU1FTlRfUkVRVUVTVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudEFkZHJlc3MuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudEFkZHJlc3MuaAppbmRleCA0MmM3NzQ1YjE5NjRi
MGI1MzM3NTZlYjZkMDQ3YzgxNDY1N2I0YzMxLi5jMTNlMjAzZmI5ZGI2YWRkYTVmMWRmOWFkMjgx
ZjY1MWRiNmFkYjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRy
ZXF1ZXN0L1BheW1lbnRBZGRyZXNzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXlt
ZW50cmVxdWVzdC9QYXltZW50QWRkcmVzcy5oCkBAIC0zNSw2ICszNSwxMSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIFBheW1lbnRBZGRyZXNzIGZpbmFsIDogcHVibGljIFJlZkNvdW50
ZWQ8UGF5bWVudEFkZHJlc3M+IHsKIHB1YmxpYzoKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4g
QXJncz4gc3RhdGljIFJlZjxQYXltZW50QWRkcmVzcz4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGF5bWVudEFkZHJlc3Moc3RkOjpm
b3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CisgICAgfQorCiAgICAgY29uc3QgU3RyaW5nJiBjb3Vu
dHJ5KCkgY29uc3QgeyByZXR1cm4gbV9jb3VudHJ5OyB9CiAgICAgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGFkZHJlc3NMaW5lKCkgY29uc3QgeyByZXR1cm4gbV9hZGRyZXNzTGluZTsgfQogICAgIGNv
bnN0IFN0cmluZyYgcmVnaW9uKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpb247IH0KQEAgLTQ4LDYg
KzUzLDggQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgcGhvbmUoKSBjb25zdCB7IHJldHVy
biBtX3Bob25lOyB9CiAKIHByaXZhdGU6CisgICAgUGF5bWVudEFkZHJlc3MoY29uc3QgU3RyaW5n
JiBjb3VudHJ5LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWRkcmVzc0xpbmUsIGNvbnN0IFN0cmlu
ZyYgcmVnaW9uLCBjb25zdCBTdHJpbmcmIGNpdHksIGNvbnN0IFN0cmluZyYgZGVwZW5kZW50TG9j
YWxpdHksIGNvbnN0IFN0cmluZyYgcG9zdGFsQ29kZSwgY29uc3QgU3RyaW5nJiBzb3J0aW5nQ29k
ZSwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZUNvZGUsIGNvbnN0IFN0cmluZyYgb3JnYW5pemF0aW9u
LCBjb25zdCBTdHJpbmcmIHJlY2lwaWVudCwgY29uc3QgU3RyaW5nJiBwaG9uZSk7CisKICAgICBT
dHJpbmcgbV9jb3VudHJ5OwogICAgIFZlY3RvcjxTdHJpbmc+IG1fYWRkcmVzc0xpbmU7CiAgICAg
U3RyaW5nIG1fcmVnaW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXlt
ZW50cmVxdWVzdC9QYXltZW50QWRkcmVzcy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Bh
eW1lbnRyZXF1ZXN0L1BheW1lbnRBZGRyZXNzLmlkbAppbmRleCA3MjExNmZjZTgwY2ZhOGIxZmM1
NTkzZjljODVkZjNhMzUwODhjNDEzLi5lMjZiNzU3ZDkzNDc0NDdmMjQzZjBhZWYzMDA3MTU4ODc1
NjE3YmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0
L1BheW1lbnRBZGRyZXNzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRy
ZXF1ZXN0L1BheW1lbnRBZGRyZXNzLmlkbApAQCAtMjYsNiArMjYsNyBAQAogWwogICAgIENvbmRp
dGlvbmFsPVBBWU1FTlRfUkVRVUVTVCwKICAgICBFbmFibGVkQnlTZXR0aW5nPVBheW1lbnRSZXF1
ZXN0LAorICAgIEV4cG9zZWQ9V2luZG93LAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUs
CiAgICAgU2VjdXJlQ29udGV4dAogXSBpbnRlcmZhY2UgUGF5bWVudEFkZHJlc3MgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50SGFuZGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRIYW5k
bGVyLmNwcAppbmRleCBlN2VjZDE0MzYyYjAxZjE4OWY1NDZmMDhhMmU4M2FmMTI5MzUyYTExLi5m
MzY1NTc1NjM4YTViNDQ3OTc4ODk4ODdiNTc0YmEwOTM3NzJkNGFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRIYW5kbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRIYW5kbGVyLmNw
cApAQCAtMzQsMTIgKzM0LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPFBh
eW1lbnRIYW5kbGVyPiBQYXltZW50SGFuZGxlcjo6Y3JlYXRlKFBheW1lbnRSZXF1ZXN0JiBwYXlt
ZW50UmVxdWVzdCwgY29uc3QgUGF5bWVudFJlcXVlc3Q6Ok1ldGhvZElkZW50aWZpZXImIGlkZW50
aWZpZXIpCitSZWZQdHI8UGF5bWVudEhhbmRsZXI+IFBheW1lbnRIYW5kbGVyOjpjcmVhdGUoRG9j
dW1lbnQmIGRvY3VtZW50LCBQYXltZW50UmVxdWVzdCYgcGF5bWVudFJlcXVlc3QsIGNvbnN0IFBh
eW1lbnRSZXF1ZXN0OjpNZXRob2RJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogewogI2lmIEVOQUJM
RShBUFBMRV9QQVkpCiAgICAgaWYgKEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OmhhbmRsZXNJZGVu
dGlmaWVyKGlkZW50aWZpZXIpKQotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFwcGxlUGF5
UGF5bWVudEhhbmRsZXIocGF5bWVudFJlcXVlc3QpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBBcHBsZVBheVBheW1lbnRIYW5kbGVyKGRvY3VtZW50LCBpZGVudGlmaWVyLCBwYXltZW50
UmVxdWVzdCkpOwogI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZG9jdW1lbnQpOwogICAgIFVOVVNF
RF9QQVJBTShwYXltZW50UmVxdWVzdCk7CiAgICAgVU5VU0VEX1BBUkFNKGlkZW50aWZpZXIpOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0
L1BheW1lbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0
L1BheW1lbnRIYW5kbGVyLmgKaW5kZXggNDQ4NzYwNzBkOWUzNTUzODY5MWUzZGYzNjUyZTRhMGI1
MjFmMDRkYy4uODI3MjAyNjUzN2NlOWViYmY5ZDdhZTY3MjcwNTVhNzlhYzc2NGM1YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50SGFuZGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudEhh
bmRsZXIuaApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogCiBu
YW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsKIGNsYXNzIEpTVmFsdWU7CiB9CiAKQEAg
LTQyLDEzICs0MSwxNCBAQCBjbGFzcyBEb2N1bWVudDsKIAogY2xhc3MgUGF5bWVudEhhbmRsZXIg
OiBwdWJsaWMgdmlydHVhbCBQYXltZW50U2Vzc2lvbkJhc2UgewogcHVibGljOgotICAgIHN0YXRp
YyBSZWZQdHI8UGF5bWVudEhhbmRsZXI+IGNyZWF0ZShQYXltZW50UmVxdWVzdCYsIGNvbnN0IFBh
eW1lbnRSZXF1ZXN0OjpNZXRob2RJZGVudGlmaWVyJik7CisgICAgc3RhdGljIFJlZlB0cjxQYXlt
ZW50SGFuZGxlcj4gY3JlYXRlKERvY3VtZW50JiwgUGF5bWVudFJlcXVlc3QmLCBjb25zdCBQYXlt
ZW50UmVxdWVzdDo6TWV0aG9kSWRlbnRpZmllciYpOwogICAgIHN0YXRpYyBib29sIGhhc0FjdGl2
ZVNlc3Npb24oRG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8dm9pZD4gY29u
dmVydERhdGEoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUmJikgPSAwOwotICAgIHZpcnR1
YWwgRXhjZXB0aW9uT3I8dm9pZD4gc2hvdyhEb2N1bWVudCYpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgaGlkZShEb2N1bWVudCYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2FuTWFrZVBheW1lbnQo
RG9jdW1lbnQmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
ID0gMDsKKyAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9yPHZvaWQ+IGNvbnZlcnREYXRhKEpTQzo6SlNW
YWx1ZSYmKSA9IDA7CisgICAgdmlydHVhbCBFeGNlcHRpb25Pcjx2b2lkPiBzaG93KCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBoaWRlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjYW5NYWtlUGF5
bWVudChXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgY29tcGxldGUoc3RkOjpvcHRpb25hbDxQYXltZW50Q29tcGxldGU+
JiYpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHAKaW5k
ZXggYmZlY2Y1ZmE3NTY3NWMzN2IyZGVkMzY5YjY3ZDY1MmM1MzQ0OWVkYS4uOGE1YmFiZDA1NDQ5
NzNjNjc3MDA5ZmQ3YjZhZGNmMzcyZDdkMGIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHAKQEAgLTMwLDEy
ICszMCwxNCBAQAogCiAjaW5jbHVkZSAiQXBwbGVQYXlQYXltZW50SGFuZGxlci5oIgogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiSlNQYXltZW50UmVzcG9uc2UuaCIKICNpbmNsdWRl
ICJQYXltZW50QWRkcmVzcy5oIgogI2luY2x1ZGUgIlBheW1lbnRDdXJyZW5jeUFtb3VudC5oIgog
I2luY2x1ZGUgIlBheW1lbnREZXRhaWxzSW5pdC5oIgogI2luY2x1ZGUgIlBheW1lbnRIYW5kbGVy
LmgiCiAjaW5jbHVkZSAiUGF5bWVudE1ldGhvZERhdGEuaCIKICNpbmNsdWRlICJQYXltZW50T3B0
aW9ucy5oIgorI2luY2x1ZGUgIlBheW1lbnRSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNjcmlwdENv
bnRyb2xsZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09OT2JqZWN0Lmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvVGhyb3dTY29wZS5oPgpAQCAtMzc2LDExICszNzgsMTEgQEAg
dm9pZCBQYXltZW50UmVxdWVzdDo6c2hvdyhEb2N1bWVudCYgZG9jdW1lbnQsIFNob3dQcm9taXNl
JiYgcHJvbWlzZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGF1
dG8gaGFuZGxlciA9IFBheW1lbnRIYW5kbGVyOjpjcmVhdGUoKnRoaXMsIHBheW1lbnRNZXRob2Qu
aWRlbnRpZmllcik7CisgICAgICAgIGF1dG8gaGFuZGxlciA9IFBheW1lbnRIYW5kbGVyOjpjcmVh
dGUoZG9jdW1lbnQsICp0aGlzLCBwYXltZW50TWV0aG9kLmlkZW50aWZpZXIpOwogICAgICAgICBp
ZiAoIWhhbmRsZXIpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRvIHJlc3Vs
dCA9IGhhbmRsZXItPmNvbnZlcnREYXRhKCpkb2N1bWVudC5leGVjU3RhdGUoKSwgZGF0YS5yZWxl
YXNlUmV0dXJuVmFsdWUoKSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gaGFuZGxlci0+Y29udmVy
dERhdGEoZGF0YS5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CiAgICAgICAgIGlmIChyZXN1bHQuaGFz
RXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAgIG1fc2hvd1Byb21pc2UtPnJlamVjdChyZXN1bHQu
cmVsZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM5NSw3ICszOTcs
NyBAQCB2b2lkIFBheW1lbnRSZXF1ZXN0OjpzaG93KERvY3VtZW50JiBkb2N1bWVudCwgU2hvd1By
b21pc2UmJiBwcm9taXNlKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBleGNl
cHRpb24gPSBzZWxlY3RlZFBheW1lbnRIYW5kbGVyLT5zaG93KGRvY3VtZW50KTsKKyAgICBhdXRv
IGV4Y2VwdGlvbiA9IHNlbGVjdGVkUGF5bWVudEhhbmRsZXItPnNob3coKTsKICAgICBpZiAoZXhj
ZXB0aW9uLmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgIG1fc2hvd1Byb21pc2UtPnJlamVjdChl
eGNlcHRpb24ucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDEzLDcg
KzQxNSw3IEBAIHZvaWQgUGF5bWVudFJlcXVlc3Q6OnN0b3AoKQogCiAgICAgaWYgKGF1dG8gcGF5
bWVudEhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fYWN0aXZlUGF5bWVudEhhbmRsZXIsIG51bGxw
dHIpKSB7CiAgICAgICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwotICAgICAgICBwYXlt
ZW50SGFuZGxlci0+aGlkZShkb3duY2FzdDxEb2N1bWVudD4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSkpOworICAgICAgICBwYXltZW50SGFuZGxlci0+aGlkZSgpOwogICAgIH0KIAogICAgIEFT
U0VSVChtX3N0YXRlID09IFN0YXRlOjpJbnRlcmFjdGl2ZSk7CkBAIC00NDUsMTUgKzQ0NywxNSBA
QCB2b2lkIFBheW1lbnRSZXF1ZXN0OjpjYW5NYWtlUGF5bWVudChEb2N1bWVudCYgZG9jdW1lbnQs
IENhbk1ha2VQYXltZW50UHJvbWlzZSYmCiAgICAgICAgIGlmIChkYXRhLmhhc0V4Y2VwdGlvbigp
KQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBoYW5kbGVyID0gUGF5bWVu
dEhhbmRsZXI6OmNyZWF0ZSgqdGhpcywgcGF5bWVudE1ldGhvZC5pZGVudGlmaWVyKTsKKyAgICAg
ICAgYXV0byBoYW5kbGVyID0gUGF5bWVudEhhbmRsZXI6OmNyZWF0ZShkb2N1bWVudCwgKnRoaXMs
IHBheW1lbnRNZXRob2QuaWRlbnRpZmllcik7CiAgICAgICAgIGlmICghaGFuZGxlcikKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGF1dG8gZXhjZXB0aW9uID0gaGFuZGxlci0+Y29u
dmVydERhdGEoKmRvY3VtZW50LmV4ZWNTdGF0ZSgpLCBkYXRhLnJlbGVhc2VSZXR1cm5WYWx1ZSgp
KTsKKyAgICAgICAgYXV0byBleGNlcHRpb24gPSBoYW5kbGVyLT5jb252ZXJ0RGF0YShkYXRhLnJl
bGVhc2VSZXR1cm5WYWx1ZSgpKTsKICAgICAgICAgaWYgKGV4Y2VwdGlvbi5oYXNFeGNlcHRpb24o
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGhhbmRsZXItPmNhbk1ha2VQYXlt
ZW50KGRvY3VtZW50LCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKGJvb2wgY2FuTWFrZVBh
eW1lbnQpIG11dGFibGUgeworICAgICAgICBoYW5kbGVyLT5jYW5NYWtlUGF5bWVudChbcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSldKGJvb2wgY2FuTWFrZVBheW1lbnQpIG11dGFibGUgewogICAg
ICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKGNhbk1ha2VQYXltZW50KTsKICAgICAgICAgfSk7CiAg
ICAgICAgIHJldHVybjsKQEAgLTQ3OCwxNCArNDgwLDYxIEBAIGJvb2wgUGF5bWVudFJlcXVlc3Q6
OmNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdAogewogICAgIHN3aXRjaCAo
bV9zdGF0ZSkgewogICAgIGNhc2UgU3RhdGU6OkNyZWF0ZWQ6Ci0gICAgY2FzZSBTdGF0ZTo6Q2xv
c2VkOgogICAgICAgICBBU1NFUlQoIW1fYWN0aXZlUGF5bWVudEhhbmRsZXIpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICBjYXNlIFN0YXRlOjpJbnRlcmFjdGl2ZToKKyAgICBjYXNlIFN0YXRl
OjpDbG9zZWQ6CiAgICAgICAgIHJldHVybiAhbV9hY3RpdmVQYXltZW50SGFuZGxlcjsKICAgICB9
CiB9CiAKK3ZvaWQgUGF5bWVudFJlcXVlc3Q6OnNoaXBwaW5nQWRkcmVzc0NoYW5nZWQoUmVmPFBh
eW1lbnRBZGRyZXNzPiYmIHNoaXBwaW5nQWRkcmVzcykKK3sKKyAgICBBU1NFUlQobV9zdGF0ZSA9
PSBTdGF0ZTo6SW50ZXJhY3RpdmUpOworICAgIG1fc2hpcHBpbmdBZGRyZXNzID0gV1RGTW92ZShz
aGlwcGluZ0FkZHJlc3MpOworICAgIC8vIEZJWE1FOiBydW4gdGhlIFBheW1lbnRSZXF1ZXN0IHVw
ZGF0ZWQgYWxnb3JpdGhtLgorfQorCit2b2lkIFBheW1lbnRSZXF1ZXN0OjpzaGlwcGluZ09wdGlv
bkNoYW5nZWQoY29uc3QgU3RyaW5nJiBzaGlwcGluZ09wdGlvbikKK3sKKyAgICBBU1NFUlQobV9z
dGF0ZSA9PSBTdGF0ZTo6SW50ZXJhY3RpdmUpOworICAgIG1fc2hpcHBpbmdPcHRpb24gPSBzaGlw
cGluZ09wdGlvbjsKKyAgICAvLyBGSVhNRTogcnVuIHRoZSBQYXltZW50UmVxdWVzdCB1cGRhdGVk
IGFsZ29yaXRobS4KK30KKwordm9pZCBQYXltZW50UmVxdWVzdDo6YWNjZXB0KGNvbnN0IFN0cmlu
ZyYgbWV0aG9kTmFtZSwgSlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4mJiBkZXRhaWxzLCBSZWY8
UGF5bWVudEFkZHJlc3M+JiYgc2hpcHBpbmdBZGRyZXNzLCBjb25zdCBTdHJpbmcmIHBheWVyTmFt
ZSwgY29uc3QgU3RyaW5nJiBwYXllckVtYWlsLCBjb25zdCBTdHJpbmcmIHBheWVyUGhvbmUpCit7
CisgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkludGVyYWN0aXZlKTsKKworICAgIGF1dG8g
cmVzcG9uc2UgPSBQYXltZW50UmVzcG9uc2U6OmNyZWF0ZSgqdGhpcyk7CisgICAgcmVzcG9uc2Ut
PnNldFJlcXVlc3RJZChtX2RldGFpbHMuaWQpOworICAgIHJlc3BvbnNlLT5zZXRNZXRob2ROYW1l
KG1ldGhvZE5hbWUpOworICAgIHJlc3BvbnNlLT5zZXREZXRhaWxzKFdURk1vdmUoZGV0YWlscykp
OworCisgICAgaWYgKG1fb3B0aW9ucy5yZXF1ZXN0U2hpcHBpbmcpIHsKKyAgICAgICAgcmVzcG9u
c2UtPnNldFNoaXBwaW5nQWRkcmVzcyhzaGlwcGluZ0FkZHJlc3MucHRyKCkpOworICAgICAgICBy
ZXNwb25zZS0+c2V0U2hpcHBpbmdPcHRpb24obV9zaGlwcGluZ09wdGlvbik7CisgICAgfQorCisg
ICAgaWYgKG1fb3B0aW9ucy5yZXF1ZXN0UGF5ZXJOYW1lKQorICAgICAgICByZXNwb25zZS0+c2V0
UGF5ZXJOYW1lKHBheWVyTmFtZSk7CisKKyAgICBpZiAobV9vcHRpb25zLnJlcXVlc3RQYXllckVt
YWlsKQorICAgICAgICByZXNwb25zZS0+c2V0UGF5ZXJFbWFpbChwYXllckVtYWlsKTsKKworICAg
IGlmIChtX29wdGlvbnMucmVxdWVzdFBheWVyUGhvbmUpCisgICAgICAgIHJlc3BvbnNlLT5zZXRQ
YXllclBob25lKHBheWVyUGhvbmUpOworCisgICAgbV9zaG93UHJvbWlzZS0+cmVzb2x2ZShyZXNw
b25zZS5nZXQoKSk7CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpDbG9zZWQ7Cit9CisKK3ZvaWQgUGF5
bWVudFJlcXVlc3Q6OmNvbXBsZXRlKHN0ZDo6b3B0aW9uYWw8UGF5bWVudENvbXBsZXRlPiYmIHJl
c3VsdCkKK3sKKyAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6Q2xvc2VkKTsKKyAgICBzdGQ6
OmV4Y2hhbmdlKG1fYWN0aXZlUGF5bWVudEhhbmRsZXIsIG51bGxwdHIpLT5jb21wbGV0ZShXVEZN
b3ZlKHJlc3VsdCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBF
TkFCTEUoUEFZTUVOVF9SRVFVRVNUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5oCmluZGV4IGE4OTE4NWJjYzdmZWM2YmVi
NDZhNDY3MWM2N2E5YWE3Yjk0NmY2MzcuLmE4ZGE0ZDE5NjMzYmZiNjQ2OWYwZDE4ZmRiMjYzYzlk
NTIyYTgxZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVl
c3QvUGF5bWVudFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRy
ZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmgKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgRG9jdW1lbnQ7
CiBjbGFzcyBQYXltZW50QWRkcmVzczsKIGNsYXNzIFBheW1lbnRIYW5kbGVyOwogY2xhc3MgUGF5
bWVudFJlc3BvbnNlOworZW51bSBjbGFzcyBQYXltZW50Q29tcGxldGU7CiBlbnVtIGNsYXNzIFBh
eW1lbnRTaGlwcGluZ1R5cGU7CiBzdHJ1Y3QgUGF5bWVudE1ldGhvZERhdGE7CiAKQEAgLTY2LDYg
KzY3LDExIEBAIHB1YmxpYzoKICAgICBjb25zdCBQYXltZW50T3B0aW9ucyYgcGF5bWVudE9wdGlv
bnMoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnM7IH0KICAgICBjb25zdCBQYXltZW50RGV0YWls
c0luaXQmIHBheW1lbnREZXRhaWxzKCkgY29uc3QgeyByZXR1cm4gbV9kZXRhaWxzOyB9CiAKKyAg
ICB2b2lkIHNoaXBwaW5nQWRkcmVzc0NoYW5nZWQoUmVmPFBheW1lbnRBZGRyZXNzPiYmKTsKKyAg
ICB2b2lkIHNoaXBwaW5nT3B0aW9uQ2hhbmdlZChjb25zdCBTdHJpbmcmIHNoaXBwaW5nT3B0aW9u
KTsKKyAgICB2b2lkIGFjY2VwdChjb25zdCBTdHJpbmcmIG1ldGhvZE5hbWUsIEpTQzo6U3Ryb25n
PEpTQzo6SlNPYmplY3Q+JiYgZGV0YWlscywgUmVmPFBheW1lbnRBZGRyZXNzPiYmIHNoaXBwaW5n
QWRkcmVzcywgY29uc3QgU3RyaW5nJiBwYXllck5hbWUsIGNvbnN0IFN0cmluZyYgcGF5ZXJFbWFp
bCwgY29uc3QgU3RyaW5nJiBwYXllclBob25lKTsKKyAgICB2b2lkIGNvbXBsZXRlKHN0ZDo6b3B0
aW9uYWw8UGF5bWVudENvbXBsZXRlPiYmKTsKKwogICAgIHVzaW5nIE1ldGhvZElkZW50aWZpZXIg
PSBWYXJpYW50PFN0cmluZywgVVJMPjsKICAgICB1c2luZyBSZWZDb3VudGVkPFBheW1lbnRSZXF1
ZXN0Pjo6cmVmOwogICAgIHVzaW5nIFJlZkNvdW50ZWQ8UGF5bWVudFJlcXVlc3Q+OjpkZXJlZjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVu
dFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5
bWVudFJlc3BvbnNlLmNwcAppbmRleCA3MDJhYmM0MGU2ODIxYmIzMjAyNGEwYzFhZDc5YWExMGYw
MTI3MjYxLi4yYWVhZWRmMGI1ODhiNjM4NjZkMWYxOWQ5NTUxMDU3MTY1NzQyMDM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXNwb25z
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50
UmVzcG9uc2UuY3BwCkBAIC0yOCwxMyArMjgsMjggQEAKIAogI2lmIEVOQUJMRShQQVlNRU5UX1JF
UVVFU1QpCiAKKyNpbmNsdWRlICJQYXltZW50UmVxdWVzdC5oIgogI2luY2x1ZGUgPHd0Zi9SdW5M
b29wLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBQYXltZW50UmVzcG9uc2U6OmNv
bXBsZXRlKHN0ZDo6b3B0aW9uYWw8UGF5bWVudENvbXBsZXRlPiYmLCBET01Qcm9taXNlRGVmZXJy
ZWQ8dm9pZD4mJiBwcm9taXNlKQorUGF5bWVudFJlc3BvbnNlOjpQYXltZW50UmVzcG9uc2UoUGF5
bWVudFJlcXVlc3QmIHJlcXVlc3QpCisgICAgOiBtX3JlcXVlc3QgeyByZXF1ZXN0IH0KIHsKLSAg
ICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgQVNDSUlMaXRl
cmFsKCJOb3QgaW1wbGVtZW50ZWQiKSB9KTsKK30KKworUGF5bWVudFJlc3BvbnNlOjp+UGF5bWVu
dFJlc3BvbnNlKCkgPSBkZWZhdWx0OworCit2b2lkIFBheW1lbnRSZXNwb25zZTo6Y29tcGxldGUo
c3RkOjpvcHRpb25hbDxQYXltZW50Q29tcGxldGU+JiYgcmVzdWx0LCBET01Qcm9taXNlRGVmZXJy
ZWQ8dm9pZD4mJiBwcm9taXNlKQoreworICAgIGlmIChtX2NvbXBsZXRlQ2FsbGVkKSB7CisgICAg
ICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9jb21wbGV0ZUNhbGxlZCA9IHRydWU7CisgICAg
bV9yZXF1ZXN0LT5jb21wbGV0ZShXVEZNb3ZlKHJlc3VsdCkpOworICAgIHByb21pc2UucmVzb2x2
ZSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXNwb25zZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVzcG9uc2UuaAppbmRleCAyZjAy
OWUxY2FlMDEzZGZjYzgyNzJiNjg4ZDAzNjllOWU4MjlhYTNmLi5kMDMzYTc2MjU1ODQxMjIzYWFh
MmY0MDc2YmMyYTI0YzA1NWUwZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlc3BvbnNlLmgKQEAgLTMyLDIxICszMiw0OSBA
QAogI2luY2x1ZGUgIlBheW1lbnRDb21wbGV0ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Cisg
ICAgCitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIFBheW1lbnRSZXF1ZXN0OwogCiBjbGFzcyBQYXlt
ZW50UmVzcG9uc2UgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxQYXltZW50UmVzcG9uc2U+IHsK
IHB1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFBheW1lbnRSZXNwb25zZT4gY3JlYXRlKFBheW1lbnRS
ZXF1ZXN0JiByZXF1ZXN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGF5
bWVudFJlc3BvbnNlKHJlcXVlc3QpKTsKKyAgICB9CisKKyAgICB+UGF5bWVudFJlc3BvbnNlKCk7
CisKICAgICBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVz
dElkOyB9CisgICAgdm9pZCBzZXRSZXF1ZXN0SWQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpIHsg
bV9yZXF1ZXN0SWQgPSByZXF1ZXN0SWQ7IH0KKwogICAgIGNvbnN0IFN0cmluZyYgbWV0aG9kTmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0aG9kTmFtZTsgfQorICAgIHZvaWQgc2V0TWV0aG9kTmFt
ZShjb25zdCBTdHJpbmcmIG1ldGhvZE5hbWUpIHsgbV9tZXRob2ROYW1lID0gbWV0aG9kTmFtZTsg
fQorCiAgICAgY29uc3QgSlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4mIGRldGFpbHMoKSBjb25z
dCB7IHJldHVybiBtX2RldGFpbHM7IH0KKyAgICB2b2lkIHNldERldGFpbHMoSlNDOjpTdHJvbmc8
SlNDOjpKU09iamVjdD4mJiBkZXRhaWxzKSB7IG1fZGV0YWlscyA9IFdURk1vdmUoZGV0YWlscyk7
IH0KKwogICAgIFBheW1lbnRBZGRyZXNzKiBzaGlwcGluZ0FkZHJlc3MoKSBjb25zdCB7IHJldHVy
biBtX3NoaXBwaW5nQWRkcmVzcy5nZXQoKTsgfQorICAgIHZvaWQgc2V0U2hpcHBpbmdBZGRyZXNz
KFBheW1lbnRBZGRyZXNzKiBzaGlwcGluZ0FkZHJlc3MpIHsgbV9zaGlwcGluZ0FkZHJlc3MgPSBz
aGlwcGluZ0FkZHJlc3M7IH0KKwogICAgIGNvbnN0IFN0cmluZyYgc2hpcHBpbmdPcHRpb24oKSBj
b25zdCB7IHJldHVybiBtX3NoaXBwaW5nT3B0aW9uOyB9CisgICAgdm9pZCBzZXRTaGlwcGluZ09w
dGlvbihjb25zdCBTdHJpbmcmIHNoaXBwaW5nT3B0aW9uKSB7IG1fc2hpcHBpbmdPcHRpb24gPSBz
aGlwcGluZ09wdGlvbjsgfQorCiAgICAgY29uc3QgU3RyaW5nJiBwYXllck5hbWUoKSBjb25zdCB7
IHJldHVybiBtX3BheWVyTmFtZTsgfQorICAgIHZvaWQgc2V0UGF5ZXJOYW1lKGNvbnN0IFN0cmlu
ZyYgcGF5ZXJOYW1lKSB7IG1fcGF5ZXJOYW1lID0gcGF5ZXJOYW1lOyB9CisKICAgICBjb25zdCBT
dHJpbmcmIHBheWVyRW1haWwoKSBjb25zdCB7IHJldHVybiBtX3BheWVyRW1haWw7IH0KKyAgICB2
b2lkIHNldFBheWVyRW1haWwoY29uc3QgU3RyaW5nJiBwYXllckVtYWlsKSB7IG1fcGF5ZXJFbWFp
bCA9IHBheWVyRW1haWw7IH0KKwogICAgIGNvbnN0IFN0cmluZyYgcGF5ZXJQaG9uZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcGF5ZXJQaG9uZTsgfQorICAgIHZvaWQgc2V0UGF5ZXJQaG9uZShjb25zdCBT
dHJpbmcmIHBheWVyUGhvbmUpIHsgbV9wYXllclBob25lID0gcGF5ZXJQaG9uZTsgfQogCiAgICAg
dm9pZCBjb21wbGV0ZShzdGQ6Om9wdGlvbmFsPFBheW1lbnRDb21wbGV0ZT4mJiwgRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYpOwogCiBwcml2YXRlOgorICAgIGV4cGxpY2l0IFBheW1lbnRSZXNw
b25zZShQYXltZW50UmVxdWVzdCYpOworCisgICAgUmVmPFBheW1lbnRSZXF1ZXN0PiBtX3JlcXVl
c3Q7CiAgICAgU3RyaW5nIG1fcmVxdWVzdElkOwogICAgIFN0cmluZyBtX21ldGhvZE5hbWU7CiAg
ICAgSlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4gbV9kZXRhaWxzOwpAQCAtNTUsNiArODMsNyBA
QCBwcml2YXRlOgogICAgIFN0cmluZyBtX3BheWVyTmFtZTsKICAgICBTdHJpbmcgbV9wYXllckVt
YWlsOwogICAgIFN0cmluZyBtX3BheWVyUGhvbmU7CisgICAgYm9vbCBtX2NvbXBsZXRlQ2FsbGVk
IHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0NDJkZDBhNmVk
YWJlNGE2ZmE2NmNhYjJiYjg3Y2M1ODE3ZmQyY2MzLi44OTQ3MDg0MTJlNDQ4ZTBlMzhiZWE0NTQ4
Mzc4M2EzNmExZTAwMjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MDY2LDYgKzQwNjYsMTIgQEAKIAkJQTE0MDYxOEMxRTJF
Q0EwQTAwMzJCMzRFIC8qIE1vY2tQcmV2aWV3TG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTQwNjE4QTFFMkVDQTBBMDAzMkIzNEUg
LyogTW9ja1ByZXZpZXdMb2FkZXJDbGllbnQuaCAqLzsgfTsKIAkJQTE0MDkwRkIxQUE1MUUxRDAw
OTExOTFBIC8qIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0MDkwRkExQUE1MUUxRDAwOTEx
OTFBIC8qIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tICovOyB9OwogCQlBMTQw
OTBGRDFBQTUxRTQ4MDA5MTE5MUEgLyogQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTQwOTBGQzFBQTUx
RTQ4MDA5MTE5MUEgLyogQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTE0NkQzMUExRjk5QkNGODAw
RDI5MTk2IC8qIEpTTW9ja1BheW1lbnRDb29yZGluYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTQ2RDMxOTFGOTlCQ0JCMDBEMjkxOTYgLyog
SlNNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCAqLzsgfTsKKwkJQTE0NkQzMUIxRjk5QkNGQjAw
RDI5MTk2IC8qIEpTTW9ja1BheW1lbnRDb29yZGluYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0NkQzMTgxRjk5QkNCQTAwRDI5MTk2IC8qIEpT
TW9ja1BheW1lbnRDb29yZGluYXRvci5oICovOyB9OworCQlBMTQ2RDMyMTFGOTlDQjFBMDBEMjkx
OTYgLyogTW9ja1BheW1lbnRBZGRyZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMTQ2RDMxQzFGOTlDOUMyMDBEMjkxOTYgLyogTW9ja1BheW1lbnRB
ZGRyZXNzLmggKi87IH07CisJCUExNDZEMzIyMUY5OUQwRUMwMEQyOTE5NiAvKiBKU01vY2tQYXlt
ZW50QWRkcmVzcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBMTQ2RDMyMDFGOTlDQTNFMDBEMjkxOTYgLyogSlNNb2NrUGF5bWVudEFkZHJlc3MuY3Bw
ICovOyB9OworCQlBMTQ2RDMyMzFGOTlEMEVGMDBEMjkxOTYgLyogSlNNb2NrUGF5bWVudEFkZHJl
c3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDZE
MzFGMUY5OUNBM0QwMEQyOTE5NiAvKiBKU01vY2tQYXltZW50QWRkcmVzcy5oICovOyB9OworCQlB
MTQ2RDMyNTFGOTlENjk4MDBEMjkxOTYgLyogTW9ja1BheW1lbnRDb250YWN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTQ2RDMyNDFGOTlENjk4MDBE
MjkxOTYgLyogTW9ja1BheW1lbnRDb250YWN0LmggKi87IH07CiAJCUExNDgzMkIwMTg3RjYxOEQw
MERBNjNBNiAvKiBXQUtBcHBLaXRTdHVicy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTE0ODMyOEMxODdGNTA4NzAwREE2M0E2IC8qIFdBS0FwcEtpdFN0
dWJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
QTE0ODMyQjExODdGNjFFMTAwREE2M0E2IC8qIFdBS0FwcEtpdFN0dWJzLm0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTQ4MzI4RDE4N0Y1MDg3MDBEQTYz
QTYgLyogV0FLQXBwS2l0U3R1YnMubSAqLzsgfTsKIAkJQTE0ODMyQjIxODdGNjFFRDAwREE2M0E2
IC8qIFdBS0NsaXBWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMTQ4MzI4RTE4N0Y1MDg3MDBEQTYzQTYgLyogV0FLQ2xpcFZpZXcuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDEwMCw2ICs0MTA2
LDcgQEAKIAkJQTE0OTc4NkUxQUJBRjMzODAwQ0VGN0U0IC8qIENvbnRlbnRGaWx0ZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0OTc4NkMxQUJB
RjMzODAwQ0VGN0U0IC8qIENvbnRlbnRGaWx0ZXIuY3BwICovOyB9OwogCQlBMTQ5Nzg2RjFBQkFG
MzM4MDBDRUY3RTQgLyogQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0OTc4NkQxQUJBRjMzODAwQ0VGN0U0IC8qIENvbnRlbnRG
aWx0ZXIuaCAqLzsgfTsKIAkJQTE0OTc4NzExQUJBRjNBNTAwQ0VGN0U0IC8qIFBsYXRmb3JtQ29u
dGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTE0OTc4NzAxQUJBRjNBNTAwQ0VGN0U0IC8qIFBsYXRmb3JtQ29udGVudEZpbHRlci5oICov
OyB9OworCQlBMTRCQjBBMDFGOTgxM0I4MDA2MDVBMzUgLyogTW9ja1BheW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNEJCMDlFMUY5ODEzQjgw
MDYwNUEzNSAvKiBNb2NrUGF5bWVudC5oICovOyB9OwogCQlBMTVENzUxNTFFNjhGN0M0MDBBMzVG
QkMgLyogQmxvYkNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEExNUQ3NTEyMUU2OEY3QjEwMEEzNUZCQyAvKiBCbG9iQ2FsbGJhY2suY3Bw
ICovOyB9OwogCQlBMTVENzUxNjFFNjhGN0M4MDBBMzVGQkMgLyogQmxvYkNhbGxiYWNrLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTVENzUxMzFFNjhG
N0IxMDBBMzVGQkMgLyogQmxvYkNhbGxiYWNrLmggKi87IH07CiAJCUExNUQ3NTFCMUU2OEY4QTMw
MEEzNUZCQyAvKiBKU0Jsb2JDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTE1RDc1MTgxRTY4RjgzNjAwQTM1RkJDIC8qIEpTQmxvYkNhbGxi
YWNrLmggKi87IH07CkBAIC00MTQ1LDYgKzQxNTIsNyBAQAogCQlBMUNDNTY3QjFGNDYxNEFEMDBB
NDU1NUIgLyogSlNQYXltZW50UmVzcG9uc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEExQ0M1NjY0MUY0NjE0NjcwMEE0NTU1QiAvKiBKU1BheW1lbnRS
ZXNwb25zZS5oICovOyB9OwogCQlBMUNDNTY3RDFGNDYxNEIyMDBBNDU1NUIgLyogSlNQYXltZW50
U2hpcHBpbmdPcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEExQ0M1NjU5MUY0NjE0NUMwMEE0NTU1QiAvKiBKU1BheW1lbnRTaGlwcGluZ09wdGlv
bi5oICovOyB9OwogCQlBMUNDNTY3RjFGNDYxNEI3MDBBNDU1NUIgLyogSlNQYXltZW50U2hpcHBp
bmdUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
MUNDNTY1MDFGNDYxNDUzMDBBNDU1NUIgLyogSlNQYXltZW50U2hpcHBpbmdUeXBlLmggKi87IH07
CisJCUExQ0ZFMDMyMUY5RTcxMjkwMDY1QzM0NSAvKiBQYXltZW50QWRkcmVzcy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUNGRTAzMTFGOUU3MTI5
MDA2NUMzNDUgLyogUGF5bWVudEFkZHJlc3MuY3BwICovOyB9OwogCQlBMURFNzEyRDE4NjEyQUMx
MDA3MzQxOTIgLyogVG91Y2hFdmVudHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTFERTcxMkIxODYxMkFDMTAwNzM0MTkyIC8qIFRvdWNoRXZlbnRz
LmNwcCAqLzsgfTsKIAkJQTFERjVBN0YxRjdFQkQwQjAwNThBNDc3IC8qIEFwcGxlUGF5UmVxdWVz
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFERjVB
N0MxRjdFQkQwQjAwNThBNDc3IC8qIEFwcGxlUGF5UmVxdWVzdC5oICovOyB9OwogCQlBMURGNUE4
NjFGN0VCREYyMDA1OEE0NzcgLyogQXBwbGVQYXlNZXJjaGFudENhcGFiaWxpdHkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExREY1QTgzMUY3RUJERjIw
MDU4QTQ3NyAvKiBBcHBsZVBheU1lcmNoYW50Q2FwYWJpbGl0eS5oICovOyB9OwpAQCAtMTIzNTUs
NiArMTIzNjMsMTQgQEAKIAkJQTE0MDYxOEExRTJFQ0EwQTAwMzJCMzRFIC8qIE1vY2tQcmV2aWV3
TG9hZGVyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tQcmV2
aWV3TG9hZGVyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExNDA5MEZB
MUFBNTFFMUQwMDkxMTkxQSAvKiBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENvbnRlbnRGaWx0ZXJVbmJs
b2NrSGFuZGxlckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTQwOTBG
QzFBQTUxRTQ4MDA5MTE5MUEgLyogQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTQ2RDMxNjFGOTlCNTNEMDBEMjkxOTYg
LyogTW9ja1BheW1lbnRDb29yZGluYXRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTW9ja1BheW1lbnRDb29yZGluYXRv
ci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExNDZEMzE4MUY5OUJDQkEwMEQy
OTE5NiAvKiBKU01vY2tQYXltZW50Q29vcmRpbmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNNb2NrUGF5bWVudENvb3JkaW5hdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUExNDZEMzE5MUY5OUJDQkIwMEQyOTE5NiAvKiBKU01vY2tQYXltZW50Q29v
cmRpbmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNb2Nr
UGF5bWVudENvb3JkaW5hdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE0
NkQzMUMxRjk5QzlDMjAwRDI5MTk2IC8qIE1vY2tQYXltZW50QWRkcmVzcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNb2NrUGF5bWVudEFkZHJlc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTE0NkQzMUUxRjk5QzlDMjAwRDI5MTk2IC8qIE1vY2tQYXltZW50QWRkcmVzcy5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
TW9ja1BheW1lbnRBZGRyZXNzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE0
NkQzMUYxRjk5Q0EzRDAwRDI5MTk2IC8qIEpTTW9ja1BheW1lbnRBZGRyZXNzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9ja1BheW1lbnRBZGRyZXNzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUExNDZEMzIwMUY5OUNBM0UwMEQyOTE5NiAvKiBKU01vY2tQ
YXltZW50QWRkcmVzcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U01vY2tQYXltZW50QWRkcmVzcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEx
NDZEMzI0MUY5OUQ2OTgwMEQyOTE5NiAvKiBNb2NrUGF5bWVudENvbnRhY3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTW9ja1BheW1lbnRDb250YWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUExNDgzMjhDMTg3RjUwODcwMERBNjNBNiAvKiBXQUtBcHBLaXRTdHVicy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXQUtBcHBLaXRTdHVicy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBMTQ4MzI4RDE4N0Y1MDg3MDBEQTYzQTYgLyogV0FLQXBwS2l0U3R1YnMu
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gV0FLQXBwS2l0U3R1YnMubTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE0ODMyOEUxODdGNTA4NzAwREE2M0E2IC8q
IFdBS0NsaXBWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdBS0NsaXBW
aWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjM4OSw2ICsxMjQwNSw3IEBA
CiAJCUExNDk3ODZDMUFCQUYzMzgwMENFRjdFNCAvKiBDb250ZW50RmlsdGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRlbnRGaWx0ZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBMTQ5Nzg2RDFBQkFGMzM4MDBDRUY3RTQgLyogQ29udGVu
dEZpbHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZW50RmlsdGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExNDk3ODcwMUFCQUYzQTUwMENFRjdF
NCAvKiBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUGxhdGZvcm1Db250ZW50RmlsdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUExNEJCMDlFMUY5ODEzQjgwMDYwNUEzNSAvKiBNb2NrUGF5bWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNb2NrUGF5bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTVENzUx
MjFFNjhGN0IxMDBBMzVGQkMgLyogQmxvYkNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEJsb2JDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUExNUQ3NTEzMUU2OEY3QjEwMEEzNUZCQyAvKiBCbG9iQ2FsbGJhY2suaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmxvYkNhbGxiYWNrLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUExNUQ3NTE0MUU2OEY3QjEwMEEzNUZCQyAvKiBCbG9iQ2FsbGJh
Y2suaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEJsb2JDYWxsYmFjay5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjQ1Miw2ICsxMjQ2OSw3IEBACiAJCUExQ0M1NjYzMUY0
NjE0NjYwMEE0NTU1QiAvKiBKU1BheW1lbnRDdXJyZW5jeUFtb3VudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1BheW1lbnRDdXJyZW5jeUFtb3VudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBMUNDNTY2NDFGNDYxNDY3MDBBNDU1NUIgLyogSlNQYXltZW50
UmVzcG9uc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQYXltZW50UmVz
cG9uc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFDQzU2NjUxRjQ2MTQ2ODAw
QTQ1NTVCIC8qIEpTUGF5bWVudEFkZHJlc3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNQYXltZW50QWRkcmVzcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
MUNGRTAzMTFGOUU3MTI5MDA2NUMzNDUgLyogUGF5bWVudEFkZHJlc3MuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUGF5bWVudEFkZHJlc3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBMURFNzEyQjE4NjEyQUMxMDA3MzQxOTIgLyogVG91Y2hFdmVudHMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVG91Y2hFdmVudHMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBMURGNUE3QzFGN0VCRDBCMDA1OEE0NzcgLyogQXBwbGVQYXlSZXF1
ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFwcGxlUGF5UmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBMURGNUE3RTFGN0VCRDBCMDA1OEE0NzcgLyogQXBwbGVQYXlSZXF1ZXN0
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBBcHBsZVBheVJlcXVlc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTc2ODksOCArMTc3MDcsMTMgQEAKIAkJCQkyRDZGM0U4QzFDMUVDQjFDMDA2MURCRDQg
LyogTW9ja1BhZ2VPdmVybGF5LmlkbCAqLywKIAkJCQkyREFBRTMyQzE5RENBRjYwMDBFMDAyRDIg
LyogTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmNwcCAqLywKIAkJCQkyREFBRTMyRDE5RENBRjYwMDBF
MDAyRDIgLyogTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmggKi8sCisJCQkJQTE0QkIwOUUxRjk4MTNC
ODAwNjA1QTM1IC8qIE1vY2tQYXltZW50LmggKi8sCisJCQkJQTE0NkQzMUMxRjk5QzlDMjAwRDI5
MTk2IC8qIE1vY2tQYXltZW50QWRkcmVzcy5oICovLAorCQkJCUExNDZEMzFFMUY5OUM5QzIwMEQy
OTE5NiAvKiBNb2NrUGF5bWVudEFkZHJlc3MuaWRsICovLAorCQkJCUExNDZEMzI0MUY5OUQ2OTgw
MEQyOTE5NiAvKiBNb2NrUGF5bWVudENvbnRhY3QuaCAqLywKIAkJCQlBMUFGRURFNTFGOEJGRjZE
MDA4NzAxM0YgLyogTW9ja1BheW1lbnRDb29yZGluYXRvci5jcHAgKi8sCiAJCQkJQTFBRkVERTQx
RjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQYXltZW50Q29vcmRpbmF0b3IuaCAqLywKKwkJCQlBMTQ2
RDMxNjFGOTlCNTNEMDBEMjkxOTYgLyogTW9ja1BheW1lbnRDb29yZGluYXRvci5pZGwgKi8sCiAJ
CQkJQTE0MDYxODkxRTJFQ0EwQTAwMzJCMzRFIC8qIE1vY2tQcmV2aWV3TG9hZGVyQ2xpZW50LmNw
cCAqLywKIAkJCQlBMTQwNjE4QTFFMkVDQTBBMDAzMkIzNEUgLyogTW9ja1ByZXZpZXdMb2FkZXJD
bGllbnQuaCAqLywKIAkJCQlFQjA4MUNEODE2OTYwODQ0MDA1NTM3MzAgLyogVHlwZUNvbnZlcnNp
b25zLmggKi8sCkBAIC0xNzcyMSw2ICsxNzc0NCwxMCBAQAogCQkJCUExOUFFQTFFMUFBQTgwNkUw
MEI1MkIyNSAvKiBKU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCAqLywKIAkJCQkyRDZGM0U5
MjFDMUY4NTU1MDA2MURCRDQgLyogSlNNb2NrUGFnZU92ZXJsYXkuY3BwICovLAogCQkJCTJENkYz
RTkzMUMxRjg1NTUwMDYxREJENCAvKiBKU01vY2tQYWdlT3ZlcmxheS5oICovLAorCQkJCUExNDZE
MzIwMUY5OUNBM0UwMEQyOTE5NiAvKiBKU01vY2tQYXltZW50QWRkcmVzcy5jcHAgKi8sCisJCQkJ
QTE0NkQzMUYxRjk5Q0EzRDAwRDI5MTk2IC8qIEpTTW9ja1BheW1lbnRBZGRyZXNzLmggKi8sCisJ
CQkJQTE0NkQzMTkxRjk5QkNCQjAwRDI5MTk2IC8qIEpTTW9ja1BheW1lbnRDb29yZGluYXRvci5j
cHAgKi8sCisJCQkJQTE0NkQzMTgxRjk5QkNCQTAwRDI5MTk2IC8qIEpTTW9ja1BheW1lbnRDb29y
ZGluYXRvci5oICovLAogCQkJCUVCRjUxMjFBMTY5NjQ5NkMwMDU2QkQyNSAvKiBKU1R5cGVDb252
ZXJzaW9ucy5jcHAgKi8sCiAJCQkJRUJGNTEyMUIxNjk2NDk2QzAwNTZCRDI1IC8qIEpTVHlwZUNv
bnZlcnNpb25zLmggKi8sCiAJCQkpOwpAQCAtMjE0MDgsNiArMjE0MzUsNyBAQAogCQlBMUY3NkIw
RTFGNDRDMENGMDAxNEMzMTggLyogcGF5bWVudHJlcXVlc3QgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUExQ0ZFMDMxMUY5RTcxMjkwMDY1QzM0NSAvKiBQ
YXltZW50QWRkcmVzcy5jcHAgKi8sCiAJCQkJQTFGNzZCNDAxRjQ0Q0Y3RjAwMTRDMzE4IC8qIFBh
eW1lbnRBZGRyZXNzLmggKi8sCiAJCQkJQTFGNzZCNDIxRjQ0Q0Y3RjAwMTRDMzE4IC8qIFBheW1l
bnRBZGRyZXNzLmlkbCAqLywKIAkJCQlBMUY3NkI1ODFGNDREM0IyMDAxNEMzMTggLyogUGF5bWVu
dENvbXBsZXRlLmggKi8sCkBAIC0yNjgyMCw2ICsyNjg0OCw4IEBACiAJCQkJNTM4RUM5MzMxRjk5
QjlGNzAwNEQyMkE4IC8qIEpTTW9ja0NETUZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUEx
OUFFQTIxMUFBQTgwODYwMEI1MkIyNSAvKiBKU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBp
biBIZWFkZXJzICovLAogCQkJCTUzOEVDOTM0MUY5OUI5RjcwMDREMjJBOCAvKiBKU01vY2tQYWdl
T3ZlcmxheS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTE0NkQzMjMxRjk5RDBFRjAwRDI5MTk2IC8q
IEpTTW9ja1BheW1lbnRBZGRyZXNzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMTQ2RDMxQjFGOTlC
Q0ZCMDBEMjkxOTYgLyogSlNNb2NrUGF5bWVudENvb3JkaW5hdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFQkY1MTIxRDE2OTY0OTZDMDA1NkJEMjUgLyogSlNUeXBlQ29udmVyc2lvbnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNEQzI2QjQxMTYwQThDQ0UwMDI2NzU3QiAvKiBMZWdhY3lNb2NrQ0RN
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUJGNkI4MzFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0Nv
bnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjY4MjksNiArMjY4NTksOSBAQAogCQkJ
CTQxNTdFQkZCMUUzQUI2N0YwMEFDOUZFOSAvKiBNb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCTJENkYzRTkxMUMxRUNCMkYwMDYxREJENCAvKiBNb2NrUGFn
ZU92ZXJsYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEOTdGMDQ4MTlERDQxNDAwMDFFRTlDMyAv
KiBNb2NrUGFnZU92ZXJsYXlDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUExNEJCMEEwMUY5
ODEzQjgwMDYwNUEzNSAvKiBNb2NrUGF5bWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTE0NkQz
MjExRjk5Q0IxQTAwRDI5MTk2IC8qIE1vY2tQYXltZW50QWRkcmVzcy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQTE0NkQzMjUxRjk5RDY5ODAwRDI5MTk2IC8qIE1vY2tQYXltZW50Q29udGFjdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTFBRkVERTYxRjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQYXltZW50
Q29vcmRpbmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUExNDA2MThDMUUyRUNBMEEwMDMyQjM0
RSAvKiBNb2NrUHJldmlld0xvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUE1RjNC
OEQxNkNDMzNEMTAwNDU1RUIwIC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmggaW4g
SGVhZGVycyAqLywKQEAgLTI4MDQzLDYgKzI4MDc2LDcgQEAKIAkJCQk0NjczMDIwMjFDNEVGRTc4
MDBCQ0IzNTcgLyogSWdub3JlT3BlbnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCMjc1MzU3MDBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTU1QTMzNkY5MUQ4MjFFM0MwMDIyQzRDNyAvKiBJbWFnZUJhY2tpbmdT
dG9yZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzE4MTVBMzExRjlBNkM4RjAwRkNCRjg5IC8qIElt
YWdlQml0bWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Qzc5MDNCMzFGODZGOTVDMDA0NjNBNzAg
LyogSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkEx
MEI5MjBCMzgxOEJEMDAwOTlBQTQgLyogSW1hZ2VCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTIyQkQ5RjdGMTM1MzYyNUMwMDlCRDEwMiAvKiBJbWFnZUJ1ZmZlckRhdGEuaCBpbiBIZWFkZXJz
ICovLApAQCAtMzAyODcsNyArMzAzMjEsNiBAQAogCQkJCTBGNTREQ0U2MTg4MTA1MUQwMDNFRURC
QiAvKiBUZXh0QXV0b1NpemluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RBMzQwRDAwNkMx
RDAwRUY2RjI2IC8qIFRleHRCb3VuZGFyaWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzE1MUJE
ODEyRjE1NThGMDA1QTBGNjQgLyogVGV4dENoZWNrZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAot
CQkJCTMxODE1QTMxMUY5QTZDOEYwMEZDQkY4OSAvKiBJbWFnZUJpdG1hcC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTc3RDAwMTIxMzNCMEFFQjAwRDY2NThDIC8qIFRleHRDaGVja2luZy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTdEQkY4REUxMjc2OTE5QzAwNkI2MDA4IC8qIFRleHRDaGVja2luZ0hl
bHBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RBM0EwRDAwNkMxRDAwRUY2RjI2IC8qIFRl
eHRDb2RlYy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTA0NCw2ICszMTA3Nyw4IEBACiAJCQkJQ0RG
NEI3MzIxRTAzRDA2MDAwRTIzNUEyIC8qIEpTTW9ja0NETUZhY3RvcnkuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTE5QUVBMjIxQUFBODA4QTAwQjUyQjI1IC8qIEpTTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDQxNTBERTFDMUY4NjhDMDAwQTNCQTIg
LyogSlNNb2NrUGFnZU92ZXJsYXkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTE0NkQzMjIxRjk5
RDBFQzAwRDI5MTk2IC8qIEpTTW9ja1BheW1lbnRBZGRyZXNzLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUExNDZEMzFBMUY5OUJDRjgwMEQyOTE5NiAvKiBKU01vY2tQYXltZW50Q29vcmRpbmF0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRUJGNTEyMUMxNjk2NDk2QzAwNTZCRDI1IC8qIEpTVHlw
ZUNvbnZlcnNpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQzI2QjQwMTYwQThDQzYwMDI2
NzU3QiAvKiBMZWdhY3lNb2NrQ0RNLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNERjRCNzMxMUUw
M0QwMDcwMEUyMzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMy
NTQ4LDYgKzMyNTgzLDcgQEAKIAkJCQkyRDUwMDJGQjFCNTZENzk5MDAyMEFBRjcgLyogUGF0aFV0
aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEZBNkU1RTBFNENGREVEMDBENUNGNDkg
LyogUGF0dGVybi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODBBMzhGRTBFNTBDQzgyMDBBMjVF
QkMgLyogUGF0dGVybkNHLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUExQ0ZFMDMyMUY5RTcxMjkw
MDY1QzM0NSAvKiBQYXltZW50QWRkcmVzcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQThBNjQ2
QzFEMTlGRjg3MDBEMEUwMEYgLyogUGF5bWVudENvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUE4QTY0NkQxRDE5RkY4NzAwRDBFMDBGIC8qIFBheW1lbnRDb250YWN0Q29jb2EubW0gaW4gU291
cmNlcyAqLywKIAkJCQkxQTU4RTg2RDFEMTlFNDJEMDBDMEVBNzMgLyogUGF5bWVudENvb3JkaW5h
dG9yLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzI3ODgsNyArMzI4MjQsNiBAQAogCQkJCTUxNEM3
NjUwMENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZUVycm9yTWFjLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTE0Qzc2NzgwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlSGFuZGxlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdFRTY4NDZDMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUhhbmRs
ZUNGTmV0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUzMjA0MjAyMUY5QTlGMTAwMEI4MUIyQSAv
KiBVc2VyQWdlbnRTY3JpcHRzRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyNkZBRTRDQzE4
NTJFM0E1MDA0QzhDNDYgLyogUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkyNkMxNUNGNjE4NTdFMTVEMDBGMTVDMDMgLyogUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlFMUJBMDAzMTE2RkI5MkFDMDBCQTdBMzUgLyogUmVzb3VyY2VIYW5k
bGVDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMzUxMSw2ICszMzU0Niw3IEBACiAJCQkJ
NUQ1OTc1QjcxOTYzNjM3QjAwRDAwODc4IC8qIFVzZXJBZ2VudC5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTI2MjU1RjAwMTg4NzhERkYwMDA2RTFGRCAvKiBVc2VyQWdlbnRJT1MubW0gaW4gU291cmNl
cyAqLywKIAkJCQkyNjI1NUYwNDE4ODc4RTExMDAwNkUxRkQgLyogVXNlckFnZW50TWFjLm1tIGlu
IFNvdXJjZXMgKi8sCisJCQkJNTMyMDQyMDIxRjlBOUYxMDAwQjgxQjJBIC8qIFVzZXJBZ2VudFNj
cmlwdHNEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBRTc5RDQyMTg4REI2MUYwMDIyMzlD
MiAvKiBVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0MzRjAx
QzIxQzhFNUFDMjAwQUREOTYyIC8qIFVzZXJDb250ZW50UHJvdmlkZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkNBQ0YzQkMxMDcyOTIxQTAwQzBDOEEzIC8qIFVzZXJDb250ZW50VVJMUGF0dGVy
bi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRl
eCA4N2MwNTYxNzhlOGQ2NDYzZGI0ZTc4ZmYxNWNlYTBhZDEyNGRjNzMzLi42YjljY2FmZWM5YjBl
NTczY2Q4Y2VkNTM2NDNjNDVhNTg0YTZiZmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCkBAIC01MTMsOCArNTEzLDExIEBAIEludGVybmFsczo6SW50ZXJuYWxzKERvY3VtZW50
JiBkb2N1bWVudCkKICAgICBzZXRDb25zb2xlTWVzc2FnZUxpc3RlbmVyKG51bGxwdHIpOwogCiAj
aWYgRU5BQkxFKEFQUExFX1BBWSkKLSAgICBpZiAoYXV0byBmcmFtZSA9IGRvY3VtZW50LmZyYW1l
KCkpCi0gICAgICAgIGZyYW1lLT5tYWluRnJhbWUoKS5zZXRQYXltZW50Q29vcmRpbmF0b3Ioc3Rk
OjptYWtlX3VuaXF1ZTxQYXltZW50Q29vcmRpbmF0b3I+KCpuZXcgTW9ja1BheW1lbnRDb29yZGlu
YXRvcihmcmFtZS0+bWFpbkZyYW1lKCkpKSk7CisgICAgYXV0byogZnJhbWUgPSBkb2N1bWVudC5m
cmFtZSgpOworICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+aXNNYWluRnJhbWUoKSkgeworICAgICAg
ICBtX21vY2tQYXltZW50Q29vcmRpbmF0b3IgPSBuZXcgTW9ja1BheW1lbnRDb29yZGluYXRvcihm
cmFtZS0+bWFpbkZyYW1lKCkpOworICAgICAgICBmcmFtZS0+bWFpbkZyYW1lKCkuc2V0UGF5bWVu
dENvb3JkaW5hdG9yKHN0ZDo6bWFrZV91bmlxdWU8UGF5bWVudENvb3JkaW5hdG9yPigqbV9tb2Nr
UGF5bWVudENvb3JkaW5hdG9yKSk7CisgICAgfQogI2VuZGlmCiB9CiAKQEAgLTQyNDUsNCArNDI0
OCwxMSBAQCBSZWY8RXh0ZW5kYWJsZUV2ZW50PiBJbnRlcm5hbHM6OmNyZWF0ZVRydXN0ZWRFeHRl
bmRhYmxlRXZlbnQoKQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQVBQTEVfUEFZKQorTW9ja1Bh
eW1lbnRDb29yZGluYXRvciYgSW50ZXJuYWxzOjptb2NrUGF5bWVudENvb3JkaW5hdG9yKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gKm1fbW9ja1BheW1lbnRDb29yZGluYXRvcjsKK30KKyNlbmRpZgor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRl
eCAxN2I4YzY4MTU3M2Q0NzJiY2Y1NWUzNjNkMmZlMDQ4NjI0N2U5ZTliLi5hYWU3NjRjZWQzNzQ2
NDlmODc0ZjcwOWRhY2QzMDE0NTQwYWRkZWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmgKQEAgLTcyLDYgKzcyLDcgQEAgY2xhc3MgTWVtb3J5SW5mbzsKIGNsYXNzIE1vY2tDRE1GYWN0
b3J5OwogY2xhc3MgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczsKIGNsYXNzIE1vY2tQYWdlT3Zl
cmxheTsKK2NsYXNzIE1vY2tQYXltZW50Q29vcmRpbmF0b3I7CiBjbGFzcyBOb2RlTGlzdDsKIGNs
YXNzIFBhZ2U7CiBjbGFzcyBSYW5nZTsKQEAgLTYxNiw2ICs2MTcsMTAgQEAgcHVibGljOgogI2Vu
ZGlmCiAKICAgICBib29sIGhhc1NlcnZpY2VXb3JrZXJSZWdpc3RlcmVkRm9yT3JpZ2luKGNvbnN0
IFN0cmluZyYpOworICAgICAgICAKKyNpZiBFTkFCTEUoQVBQTEVfUEFZKQorICAgIE1vY2tQYXlt
ZW50Q29vcmRpbmF0b3ImIG1vY2tQYXltZW50Q29vcmRpbmF0b3IoKSBjb25zdDsKKyNlbmRpZgog
CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEludGVybmFscyhEb2N1bWVudCYpOwpAQCAtNjM4LDYg
KzY0MywxMCBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvclN0dWJG
cm9udGVuZD4gbV9pbnNwZWN0b3JGcm9udGVuZDsKICAgICBSZWZQdHI8Q2FjaGVTdG9yYWdlQ29u
bmVjdGlvbj4gbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uOworCisjaWYgRU5BQkxFKEFQUExFX1BB
WSkKKyAgICBNb2NrUGF5bWVudENvb3JkaW5hdG9yKiBtX21vY2tQYXltZW50Q29vcmRpbmF0b3Ig
eyBudWxscHRyIH07CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBkZTg3YWU5ZGEwN2YzMTkyNmQzNzYyMDY3
NDYyMmU0MDJlMjE1ODA0Li40OWYyZWRkZDBhMzAzMmJhMDQyYTA1ZDcxYjdiOGYxYTk0ZDBmNTFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC01NjAsNCArNTYwLDYgQEAg
ZW51bSBFdmVudFRocm90dGxpbmdCZWhhdmlvciB7CiAgICAgW0NvbmRpdGlvbmFsPVNFUlZJQ0Vf
V09SS0VSXSBFeHRlbmRhYmxlRXZlbnQgY3JlYXRlVHJ1c3RlZEV4dGVuZGFibGVFdmVudCgpOwog
CiAgICAgYm9vbGVhbiBoYXNTZXJ2aWNlV29ya2VyUmVnaXN0ZXJlZEZvck9yaWdpbihET01TdHJp
bmcgb3JpZ2luKTsKKworICAgIFtDb25kaXRpb25hbD1BUFBMRV9QQVldIHJlYWRvbmx5IGF0dHJp
YnV0ZSBNb2NrUGF5bWVudENvb3JkaW5hdG9yIG1vY2tQYXltZW50Q29vcmRpbmF0b3I7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudC5oIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU5NTM5ZmIyZGM2ZTA5
YTIzYjU5NzMyOTczNDgzN2U5ZTg1ZjU3ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tQYXltZW50LmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEFQUExFX1BBWSkKKworI2luY2x1ZGUgIkFwcGxl
UGF5UGF5bWVudC5oIgorI2luY2x1ZGUgIlBheW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBNb2NrUGF5bWVudCBmaW5hbCA6IHB1YmxpYyBQYXltZW50IHsKK3B1YmxpYzoK
KyAgICBleHBsaWNpdCBNb2NrUGF5bWVudChBcHBsZVBheVBheW1lbnQmJiBhcHBsZVBheVBheW1l
bnQpCisgICAgICAgIDogbV9hcHBsZVBheVBheW1lbnQgeyBXVEZNb3ZlKGFwcGxlUGF5UGF5bWVu
dCkgfQorICAgIHsKKyAgICB9CisKKyAgICBBcHBsZVBheVBheW1lbnQgdG9BcHBsZVBheVBheW1l
bnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2FwcGxlUGF5UGF5bWVudDsgfQorCitwcml2YXRl
OgorICAgIEFwcGxlUGF5UGF5bWVudCBtX2FwcGxlUGF5UGF5bWVudDsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50QWRkcmVzcy5oIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudEFkZHJlc3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMTIzY2Y1YWY2
MDc4YWM5NGExN2Y5NjhiMTI4ZmU2NDkxYzg0NzI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudEFkZHJlc3MuaApAQCAtMCwwICsxLDM5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZKQorCisjaW5j
bHVkZSAiQXBwbGVQYXlQYXltZW50Q29udGFjdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3N0cnVjdCBNb2NrUGF5bWVudEFkZHJlc3MgOiBBcHBsZVBheVBheW1lbnRDb250YWN0IHsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50QWRkcmVzcy5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50QWRkcmVzcy5pZGwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMzBiMmUxYmI0ZmYxYzY5MjBmOGNkNjg2NTZhY2M0ODMxNTFmMGM3MQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRBZGRyZXNzLmlkbApA
QCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPUFQUExFX1BB
WQorXSBkaWN0aW9uYXJ5IE1vY2tQYXltZW50QWRkcmVzcyB7CisgICAgRE9NU3RyaW5nIGNvdW50
cnlDb2RlOworICAgIEZyb3plbkFycmF5PERPTVN0cmluZz4gYWRkcmVzc0xpbmVzOworICAgIERP
TVN0cmluZyBhZG1pbmlzdHJhdGl2ZUFyZWE7CisgICAgRE9NU3RyaW5nIGxvY2FsaXR5OworICAg
IERPTVN0cmluZyBzdWJMb2NhbGl0eTsKKyAgICBET01TdHJpbmcgcG9zdGFsQ29kZTsKKyAgICBE
T01TdHJpbmcgbG9jYWxpemVkTmFtZTsKKyAgICBET01TdHJpbmcgcGhvbmVOdW1iZXI7CisgICAg
RE9NU3RyaW5nIGVtYWlsQWRkcmVzczsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tQYXltZW50Q29udGFjdC5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
UGF5bWVudENvbnRhY3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNTI5ZDQ0YjJmMzUyYWNiY2I4MmY5ZWIwOTQz
ZWUxODc4ZWQ2MDQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrUGF5bWVudENvbnRhY3QuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZKQorCisjaW5jbHVkZSAiQXBwbGVQYXlQYXlt
ZW50Q29udGFjdC5oIgorI2luY2x1ZGUgIlBheW1lbnRDb250YWN0LmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgTW9ja1BheW1lbnRDb250YWN0IGZpbmFsIDogcHVibGljIFBheW1l
bnRDb250YWN0IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBNb2NrUGF5bWVudENvbnRhY3QoQXBw
bGVQYXlQYXltZW50Q29udGFjdCYmIGFwcGxlUGF5UGF5bWVudENvbnRhY3QpCisgICAgICAgIDog
bV9hcHBsZVBheVBheW1lbnRDb250YWN0IHsgV1RGTW92ZShhcHBsZVBheVBheW1lbnRDb250YWN0
KSB9CisgICAgeworICAgIH0KKworICAgIEFwcGxlUGF5UGF5bWVudENvbnRhY3QgdG9BcHBsZVBh
eVBheW1lbnRDb250YWN0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hcHBsZVBheVBheW1lbnRD
b250YWN0OyB9CisKK3ByaXZhdGU6CisgICAgQXBwbGVQYXlQYXltZW50Q29udGFjdCBtX2FwcGxl
UGF5UGF5bWVudENvbnRhY3Q7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBFTkFCTEUoQVBQTEVfUEFZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a1BheW1lbnRDb29yZGluYXRvci5jcHAKaW5kZXggOTc5NGIyOGRjOTQzMmFlYTFiODRhNDlhNDdk
MTQxODM1MGUzMTQxYS4uNWY1MThmMDZhODU2OTIzYTg0ZDA3M2UwZjFhZjM5ZTJkNjQ4MDE5YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3Iu
Y3BwCkBAIC0yOSw2ICsyOSw4IEBACiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKIAogI2luY2x1ZGUg
Ik1haW5GcmFtZS5oIgorI2luY2x1ZGUgIk1vY2tQYXltZW50LmgiCisjaW5jbHVkZSAiTW9ja1Bh
eW1lbnRDb250YWN0LmgiCiAjaW5jbHVkZSAiUGF5bWVudENvb3JkaW5hdG9yLmgiCiAjaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTU4LDMwICs2MCw3NSBAQCBi
b29sIE1vY2tQYXltZW50Q29vcmRpbmF0b3I6OmNhbk1ha2VQYXltZW50cygpCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLXZvaWQgTW9ja1BheW1lbnRDb29yZGluYXRvcjo6Y2FuTWFrZVBheW1lbnRz
V2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgV1RGOjpGdW5jdGlv
bjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBNb2NrUGF5bWVudENvb3Jk
aW5hdG9yOjpjYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUp
OwogICAgIH0pOwogfQogCi12b2lkIE1vY2tQYXltZW50Q29vcmRpbmF0b3I6Om9wZW5QYXltZW50
U2V0dXAoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgV1RGOjpGdW5jdGlvbjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBNb2NrUGF5bWVudENvb3JkaW5hdG9yOjpv
cGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIEZ1bmN0aW9uPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgp
IHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CiAgICAgfSk7CiB9CiAKK3N0YXRp
YyB1aW50NjRfdCBzaG93Q291bnQ7CitzdGF0aWMgdWludDY0X3QgaGlkZUNvdW50OworCitzdGF0
aWMgdm9pZCBkaXNwYXRjaElmU2hvd2luZyhGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCit7
CisgICAgQVNTRVJUKHNob3dDb3VudCA+IGhpZGVDb3VudCk7CisgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFtjdXJyZW50U2hvd0NvdW50ID0gc2hvd0NvdW50LCBmdW5jdGlvbiA9IFdURk1v
dmUoZnVuY3Rpb24pXSgpIHsKKyAgICAgICAgaWYgKHNob3dDb3VudCA+IGhpZGVDb3VudCAmJiBz
aG93Q291bnQgPT0gY3VycmVudFNob3dDb3VudCkKKyAgICAgICAgICAgIGZ1bmN0aW9uKCk7Cisg
ICAgfSk7Cit9CisKIGJvb2wgTW9ja1BheW1lbnRDb29yZGluYXRvcjo6c2hvd1BheW1lbnRVSShj
b25zdCBVUkwmLCBjb25zdCBWZWN0b3I8VVJMPiYsIGNvbnN0IEFwcGxlUGF5U2Vzc2lvblBheW1l
bnRSZXF1ZXN0JikKIHsKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW21haW5GcmFtZSA9
IG1ha2VSZWYobV9tYWluRnJhbWUpXSgpIHsKKyAgICBBU1NFUlQoc2hvd0NvdW50ID09IGhpZGVD
b3VudCk7CisgICAgKytzaG93Q291bnQ7CisgICAgZGlzcGF0Y2hJZlNob3dpbmcoW21haW5GcmFt
ZSA9IG1ha2VSZWYobV9tYWluRnJhbWUpXSgpIHsKICAgICAgICAgbWFpbkZyYW1lLT5wYXltZW50
Q29vcmRpbmF0b3IoKS52YWxpZGF0ZU1lcmNoYW50KHsgVVJMKCksIEFTQ0lJTGl0ZXJhbCgiaHR0
cHM6Ly93ZWJraXQub3JnLyIpIH0pOwogICAgIH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCit2
b2lkIE1vY2tQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKGNv
bnN0IFBheW1lbnRNZXJjaGFudFNlc3Npb24mKQoreworICAgIGRpc3BhdGNoSWZTaG93aW5nKFtt
YWluRnJhbWUgPSBtYWtlUmVmKG1fbWFpbkZyYW1lKSwgc2hpcHBpbmdBZGRyZXNzID0gbV9zaGlw
cGluZ0FkZHJlc3NdKCkgeworICAgICAgICBBcHBsZVBheVBheW1lbnRDb250YWN0IGNvbnRhY3Qg
PSBzaGlwcGluZ0FkZHJlc3M7CisgICAgICAgIG1haW5GcmFtZS0+cGF5bWVudENvb3JkaW5hdG9y
KCkuZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0KE1vY2tQYXltZW50Q29udGFjdCB7IFdURk1vdmUo
Y29udGFjdCkgfSk7CisKKyAgICAgICAgQXBwbGVQYXlQYXltZW50IHBheW1lbnQ7CisgICAgICAg
IHBheW1lbnQuc2hpcHBpbmdDb250YWN0ID0gc2hpcHBpbmdBZGRyZXNzOworICAgICAgICBtYWlu
RnJhbWUtPnBheW1lbnRDb29yZGluYXRvcigpLmRpZEF1dGhvcml6ZVBheW1lbnQoTW9ja1BheW1l
bnQgeyBXVEZNb3ZlKHBheW1lbnQpIH0pOworICAgIH0pOworfQorCit2b2lkIE1vY2tQYXltZW50
Q29vcmRpbmF0b3I6OmNvbXBsZXRlUGF5bWVudFNlc3Npb24oc3RkOjpvcHRpb25hbDxQYXltZW50
QXV0aG9yaXphdGlvblJlc3VsdD4mJikKK3sKKyAgICArK2hpZGVDb3VudDsKKyAgICBBU1NFUlQo
c2hvd0NvdW50ID09IGhpZGVDb3VudCk7Cit9CisKK3ZvaWQgTW9ja1BheW1lbnRDb29yZGluYXRv
cjo6YWJvcnRQYXltZW50U2Vzc2lvbigpCit7CisgICAgKytoaWRlQ291bnQ7CisgICAgQVNTRVJU
KHNob3dDb3VudCA9PSBoaWRlQ291bnQpOworfQorCit2b2lkIE1vY2tQYXltZW50Q29vcmRpbmF0
b3I6OmNhbmNlbFBheW1lbnRTZXNzaW9uKCkKK3sKKyAgICArK2hpZGVDb3VudDsKKyAgICBBU1NF
UlQoc2hvd0NvdW50ID09IGhpZGVDb3VudCk7Cit9CisKIHZvaWQgTW9ja1BheW1lbnRDb29yZGlu
YXRvcjo6cGF5bWVudENvb3JkaW5hdG9yRGVzdHJveWVkKCkKIHsKKyAgICBBU1NFUlQoc2hvd0Nv
dW50ID09IGhpZGVDb3VudCk7CiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5oIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmgKaW5kZXggMjJiZTliM2E4MmIz
YzZlZDI5MzhhMzVkZTc2NjUwMzNjNmNhNjE1OC4uNjllOGNkOTkxOTExNzQzMTJhMTYwODI1N2Jj
NGVhZDk5YTA0MjRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5
bWVudENvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVu
dENvb3JkaW5hdG9yLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShBUFBMRV9QQVkp
CiAKKyNpbmNsdWRlICJNb2NrUGF5bWVudEFkZHJlc3MuaCIKICNpbmNsdWRlICJQYXltZW50Q29v
cmRpbmF0b3JDbGllbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzcsMjIgKzM4LDI4
IEBAIGNsYXNzIE1vY2tQYXltZW50Q29vcmRpbmF0b3IgZmluYWwgOiBwdWJsaWMgUGF5bWVudENv
b3JkaW5hdG9yQ2xpZW50IHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBNb2NrUGF5bWVudENvb3Jk
aW5hdG9yKE1haW5GcmFtZSYpOwogCisgICAgdm9pZCBzZXRTaGlwcGluZ0FkZHJlc3MoTW9ja1Bh
eW1lbnRBZGRyZXNzJiYgc2hpcHBpbmdBZGRyZXNzKSB7IG1fc2hpcHBpbmdBZGRyZXNzID0gV1RG
TW92ZShzaGlwcGluZ0FkZHJlc3MpOyB9CisKKyAgICB2b2lkIHJlZigpIGNvbnN0IHsgfQorICAg
IHZvaWQgZGVyZWYoKSBjb25zdCB7IH0KKwogcHJpdmF0ZToKICAgICBib29sIHN1cHBvcnRzVmVy
c2lvbih1bnNpZ25lZCkgZmluYWw7CiAgICAgYm9vbCBjYW5NYWtlUGF5bWVudHMoKSBmaW5hbDsK
ICAgICB2b2lkIGNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBvcGVu
UGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFdURjo6RnVuY3Rpb248
dm9pZChib29sKT4mJik7CiAgICAgYm9vbCBzaG93UGF5bWVudFVJKGNvbnN0IFVSTCYsIGNvbnN0
IFZlY3RvcjxVUkw+JiwgY29uc3QgQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmKSBmaW5h
bDsKLSAgICB2b2lkIGNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKGNvbnN0IFBheW1lbnRNZXJj
aGFudFNlc3Npb24mKSBmaW5hbCB7IH0KKyAgICB2b2lkIGNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0
aW9uKGNvbnN0IFBheW1lbnRNZXJjaGFudFNlc3Npb24mKSBmaW5hbDsKICAgICB2b2lkIGNvbXBs
ZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oc3RkOjpvcHRpb25hbDxTaGlwcGluZ01ldGhvZFVw
ZGF0ZT4mJikgZmluYWwgeyB9CiAgICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVj
dGlvbihzdGQ6Om9wdGlvbmFsPFNoaXBwaW5nQ29udGFjdFVwZGF0ZT4mJikgZmluYWwgeyB9CiAg
ICAgdm9pZCBjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oc3RkOjpvcHRpb25hbDxQYXlt
ZW50TWV0aG9kVXBkYXRlPiYmKSBmaW5hbCB7IH0KLSAgICB2b2lkIGNvbXBsZXRlUGF5bWVudFNl
c3Npb24oc3RkOjpvcHRpb25hbDxQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4mJikgZmluYWwg
eyB9Ci0gICAgdm9pZCBhYm9ydFBheW1lbnRTZXNzaW9uKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBj
YW5jZWxQYXltZW50U2Vzc2lvbigpIGZpbmFsIHsgfQorICAgIHZvaWQgY29tcGxldGVQYXltZW50
U2Vzc2lvbihzdGQ6Om9wdGlvbmFsPFBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0PiYmKSBmaW5h
bDsKKyAgICB2b2lkIGFib3J0UGF5bWVudFNlc3Npb24oKSBmaW5hbDsKKyAgICB2b2lkIGNhbmNl
bFBheW1lbnRTZXNzaW9uKCkgZmluYWw7CiAgICAgdm9pZCBwYXltZW50Q29vcmRpbmF0b3JEZXN0
cm95ZWQoKSBmaW5hbDsKIAogICAgIE1haW5GcmFtZSYgbV9tYWluRnJhbWU7CisgICAgTW9ja1Bh
eW1lbnRBZGRyZXNzIG1fc2hpcHBpbmdBZGRyZXNzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3Jk
aW5hdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRv
ci5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTViYTMwOWFkNmU4NTg2ZjBiYjE4NDJjMWJmZjY1N2E5MTg1NmI5
NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRD
b29yZGluYXRvci5pZGwKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25k
aXRpb25hbD1BUFBMRV9QQVksCisgICAgTm9JbnRlcmZhY2VPYmplY3QsCitdIGludGVyZmFjZSBN
b2NrUGF5bWVudENvb3JkaW5hdG9yIHsKKyAgICB2b2lkIHNldFNoaXBwaW5nQWRkcmVzcyhNb2Nr
UGF5bWVudEFkZHJlc3Mgc2hpcHBpbmdBZGRyZXNzKTsKK307CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMDljYmVjNjVhOTA0
NGIzNjc3NzFlNDgxMmE3NzJmMTAyNDcxN2UxMi4uMWVkMDM5OWFhNDBmZDgxOTg1ZDU3MzAwMTNl
YmNjMTJhMzY4NzIwNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE3LTEwLTIwICBBbmR5IEVz
dGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbUGF5bWVudCBSZXF1ZXN0XSBSZXNv
bHZlIFBheW1lbnRSZXF1ZXN0LnNob3coKSdzIGFjY2VwdCBwcm9taXNlIHdoZW4gYSBwYXltZW50
IGlzIGF1dGhvcml6ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3ODYwOQorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisK
KyAgICAgICAgKiBodHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtYWRkcmVzcy1hdHRy
aWJ1dGVzLWFuZC10b0pTT04tbWV0aG9kLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LWFkZHJlc3MtYXR0cmlidXRl
cy1hbmQtdG9KU09OLW1ldGhvZC5odHRwcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtY29tcGxldGUtbWV0aG9kLmh0dHBz
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9wYXltZW50cmVxdWVz
dC9wYXltZW50LXJlc3BvbnNlLWNvbXBsZXRlLW1ldGhvZC5odHRwcy5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtbWV0aG9k
TmFtZS1hdHRyaWJ1dGUuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtbWV0aG9kTmFtZS1hdHRyaWJ1
dGUuaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9wYXltZW50cmVxdWVz
dC9wYXltZW50LXJlc3BvbnNlLXBheWVyRW1haWwtYXR0cmlidXRlLmh0dHBzLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJl
c3BvbnNlLXBheWVyRW1haWwtYXR0cmlidXRlLmh0dHBzLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXNwb25zZS1wYXllck5hbWUtYXR0
cmlidXRlLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9w
YXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLXBheWVyTmFtZS1hdHRyaWJ1dGUuaHR0cHMu
aHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50
LXJlc3BvbnNlLXBheWVyUGhvbmUtYXR0cmlidXRlLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLXBh
eWVyUGhvbmUtYXR0cmlidXRlLmh0dHBzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvcGF5bWVudHJlcXVlc3QvcmVzb3VyY2VzL2hlbHBlcnMuanM6IEFkZGVkLgorICAgICAgICAo
dGVzdCk6CisgICAgICAgIChhc3luYy5nZXRQYXltZW50UmVzcG9uc2UpOgorICAgICAgICAoYXN5
bmMuZ2V0UGF5bWVudFJlcXVlc3RSZXNwb25zZSk6CisgICAgICAgIChhc3luYy5ydW5UZXN0KToK
KwogMjAxNy0xMC0yMCAgTWF0dCBMZXdpcyAgPGpsZXdpczNAYXBwbGUuY29tPgogCiAgICAgICAg
IE1hcmtlZCBwbHVnaW5zL2pzLWZyb20tZGVzdHJveS5odG1sIGFzIGZsYWt5LgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LWFkZHJlc3Mt
YXR0cmlidXRlcy1hbmQtdG9KU09OLW1ldGhvZC5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtYWRkcmVzcy1hdHRyaWJ1dGVz
LWFuZC10b0pTT04tbWV0aG9kLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMjg3YTA4
ODkzNzM2NjVjNzgxMzYyYmY2ZDc0Mzg0MTQ2ZDM3OWIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LWFkZHJlc3MtYXR0cmli
dXRlcy1hbmQtdG9KU09OLW1ldGhvZC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBA
CitJZiB0aGUgcmVxdWVzdFNoaXBwaW5nIG1lbWJlciBpcyB0cnVlLCB0aGVuIHNoaXBwaW5nQWRk
cmVzcydzIFBheW1lbnRBZGRyZXNzIG11c3QgbWF0Y2ggdGhlIGV4cGVjdGVkIHZhbHVlcy4KKwor
UEFTUyBDYW4gY29uc3RydWN0IGEgcGF5bWVudCByZXF1ZXN0IChzbW9rZSB0ZXN0KS4gCitQQVNT
IElmIHRoZSByZXF1ZXN0U2hpcHBpbmcgbWVtYmVyIGlzIHRydWUsIHRoZW4gc2hpcHBpbmdBZGRy
ZXNzJ3MgUGF5bWVudEFkZHJlc3MgbXVzdCBtYXRjaCB0aGUgZXhwZWN0ZWQgdmFsdWVzLiAKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50
LWFkZHJlc3MtYXR0cmlidXRlcy1hbmQtdG9KU09OLW1ldGhvZC5odHRwcy5odG1sIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LWFkZHJlc3MtYXR0cmlidXRl
cy1hbmQtdG9KU09OLW1ldGhvZC5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1ZjA4MGI3M2EyMzQ4
ZGEwNThlNWZlNTNlZmFlODQ3MDJiY2U5MjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtYWRkcmVzcy1hdHRyaWJ1dGVzLWFu
ZC10b0pTT04tbWV0aG9kLmh0dHBzLmh0bWwKQEAgLTAsMCArMSw5MCBAQAorPCFkb2N0eXBlIGh0
bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGY4Ij4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6
Ly93d3cudzMub3JnL1RSL3BheW1lbnQtcmVxdWVzdC8jcGF5bWVudGFkZHJlc3MtaW50ZXJmYWNl
Ij4KKzx0aXRsZT4KKyAgUGF5bWVudFJlc3BvbnNlLnByb3RvdHlwZS5zaGlwcGluZ0FkZHJlc3MK
KzwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2hlbHBlcnMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dD4KK2NvbnN0IG9wdGlvbnMgPSB7IHJlcXVlc3RTaGlwcGluZzogdHJ1ZSB9OworZnVuY3Rpb24g
cnVuVGVzdChidXR0b24sIGV4cGVjdGVkID0ge30pIHsKKyAgYnV0dG9uLmRpc2FibGVkID0gdHJ1
ZTsKKyAgcHJvbWlzZV90ZXN0KGFzeW5jICgpID0+IHsKKyAgICBjb25zdCB7IHJlc3BvbnNlIH0g
PSBhd2FpdCBnZXRQYXltZW50UmVxdWVzdFJlc3BvbnNlKG9wdGlvbnMpOworICAgIGF3YWl0IHJl
c3BvbnNlLmNvbXBsZXRlKCk7CisgICAgYXNzZXJ0X2lkbF9hdHRyaWJ1dGUocmVzcG9uc2UsICJz
aGlwcGluZ0FkZHJlc3MiKTsKKyAgICBjb25zdCB7IHNoaXBwaW5nQWRkcmVzczogYWRkciB9ID0g
cmVzcG9uc2U7CisgICAgYXNzZXJ0X3RydWUoCisgICAgICBhZGRyIGluc3RhbmNlb2YgUGF5bWVu
dEFkZHJlc3MsCisgICAgICAiRXhwZWN0IGluc3RhbmNlIG9mIFBheW1lbnRBZGRyZXNzIgorICAg
ICk7CisgICAgLy8gQW4gW0lTTzMxNjZdIGFscGhhLTIgY29kZS4gVGhlIGNhbm9uaWNhbCBmb3Jt
IGlzIHVwcGVyIGNhc2UuCisgICAgY29uc3QgeyBjb3VudHJ5IH0gPSBhZGRyOworICAgIGFzc2Vy
dF9lcXVhbHMoY291bnRyeS5sZW5ndGgsIDIsICJFeHBlY3RlZCBsZW5ndGggaXMgMiIpOworICAg
IGFzc2VydF90cnVlKC9eW0EtWl17Mn0kLy50ZXN0KGNvdW50cnkpLCAiQ2Fub25pY2FsIGZvcm0g
aXMgdXBwZXIgY2FzZSIpOworICAgIGFzc2VydF90cnVlKAorICAgICAgYWRkci5hZGRyZXNzTGlu
ZSBpbnN0YW5jZW9mIEFycmF5LAorICAgICAgIkV4cGVjdGVkIGFkZHJlc3NMaW5lIHRvIGJlIGFu
IGFycmF5IgorICAgICk7CisgICAgYXNzZXJ0X3Rocm93cygKKyAgICAgIG5ldyBUeXBlRXJyb3Io
KSwKKyAgICAgICgpID0+IHsKKyAgICAgICAgYWRkci5hZGRyZXNzTGluZS5wdXNoKCJ0aGlzIG11
c3QgdGhyb3ciKTsKKyAgICAgIH0sCisgICAgICAiQXJyYXkgbXVzdCBiZSBmcm96ZW4iCisgICAg
KTsKKyAgICBmb3IgKGxldCBbYXR0ciwgZXhwZWN0ZWRWYWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMo
ZXhwZWN0ZWQpKSB7CisgICAgICBhc3NlcnRfaWRsX2F0dHJpYnV0ZShhZGRyLCBhdHRyKTsKKyAg
ICAgIGNvbnN0IG1zZyA9IGBFeHBlY3RlZCBwYXltZW50QWRkcmVzcy4ke2F0dHJ9IHRvIGVxdWFs
ICR7ZXhwZWN0ZWRWYWx1ZX0uYDsKKyAgICAgIC8vLnRvU3RyaW5nKCkgZmxhdHRlbnMgYXJyYXkg
YWRkcmVzc0xpbmUsCisgICAgICAvLy50b0xvd2VyQ2FzZSgpIGJlY2F1c2UgY2FzZSBjYW4ndCBi
ZSBlbmZvcmNlZCBmb3Igc29tZSBhdHRyaWJ1dGVzCisgICAgICBjb25zdCBhY3R1YWxWYWx1ZSA9
IGFkZHJbYXR0cl0udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpOworICAgICAgZXhwZWN0ZWRWYWx1
ZSA9IGV4cGVjdGVkVmFsdWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpOworICAgICAgYXNzZXJ0
X2VxdWFscyhhY3R1YWxWYWx1ZSwgZXhwZWN0ZWRWYWx1ZSwgbXNnKTsKKyAgICB9CisgICAgLy8g
Q2hlY2sgdG9KU09OIHJlc3VsdAorICAgIGZvciAobGV0IFtwcm9wLCBqc29uVmFsdWVdIG9mIE9i
amVjdC5lbnRyaWVzKGFkZHIudG9KU09OKCkpKSB7CisgICAgICBjb25zdCBhY3R1YWxWYWx1ZSA9
IGpzb25WYWx1ZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk7CisgICAgICBjb25zdCBleHBlY3Rl
ZFZhbHVlID0gZXhwZWN0ZWRbcHJvcF0udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpOworICAgICAg
Y29uc3QgbXNnID0gYEV4cGVjdGVkIEpTT04gJHtwcm9wfSB0byBiZSAke2V4cGVjdGVkVmFsdWV9
YDsKKyAgICAgIGFzc2VydF9lcXVhbHMoYWN0dWFsVmFsdWUsIGV4cGVjdGVkVmFsdWUsIG1zZyk7
CisgICAgfQorICB9LCBidXR0b24udGV4dENvbnRlbnQudHJpbSgpKTsKKyAgZG9uZSgpOworfQor
PC9zY3JpcHQ+Cis8b2w+CisgIDxsaT4KKyAgICA8YnV0dG9uIGlkPSJidXR0b24iPgorICAgICAg
SWYgdGhlIHJlcXVlc3RTaGlwcGluZyBtZW1iZXIgaXMgdHJ1ZSwgdGhlbiBzaGlwcGluZ0FkZHJl
c3MncyBQYXltZW50QWRkcmVzcyBtdXN0IG1hdGNoIHRoZSBleHBlY3RlZCB2YWx1ZXMuCisgICAg
PC9idXR0b24+CisgIDwvbGk+Cis8L29sPgorPHNjcmlwdD4KKyAgICBjb25zdCBhZGRyZXNzID0g
eworICAgICAgICBjb3VudHJ5Q29kZTogJ0FGJywKKyAgICAgICAgYWRkcmVzc0xpbmVzOiBbJzEg
d3B0IHN0cmVldCddLAorICAgICAgICBsb2NhbGl0eTogJ0thYnVsJywKKyAgICAgICAgcG9zdGFs
Q29kZTogJzEwMDEnLAorICAgICAgICBsb2NhbGl6ZWROYW1lOiAnd2ViIHBsYXRmb3JtIHRlc3Qn
LAorICAgICAgICBwaG9uZU51bWJlcjogJys5MzU1NTU1NTU1NScsCisgICAgfTsKKyAgICBpbnRl
cm5hbHMubW9ja1BheW1lbnRDb29yZGluYXRvci5zZXRTaGlwcGluZ0FkZHJlc3MoYWRkcmVzcyk7
CisKKyAgICBjb25zdCBleHBlY3RlZEFkZHJlc3MgPSB7CisgICAgICAgIGNvdW50cnk6IGFkZHJl
c3MuY291bnRyeUNvZGUsCisgICAgICAgIGFkZHJlc3NMaW5lOiBhZGRyZXNzLmFkZHJlc3NMaW5l
cywKKyAgICAgICAgcmVnaW9uOiAnJywKKyAgICAgICAgY2l0eTogYWRkcmVzcy5sb2NhbGl0eSwK
KyAgICAgICAgZGVwZW5kZW50TG9jYWxpdHk6ICcnLAorICAgICAgICBwb3N0YWxDb2RlOiBhZGRy
ZXNzLnBvc3RhbENvZGUsCisgICAgICAgIHNvcnRpbmdDb2RlOiAnJywKKyAgICAgICAgbGFuZ3Vh
Z2VDb2RlOiAnJywKKyAgICAgICAgb3JnYW5pemF0aW9uOiAnJywKKyAgICAgICAgcmVjaXBpZW50
OiBhZGRyZXNzLmxvY2FsaXplZE5hbWUsCisgICAgICAgIHBob25lOiBhZGRyZXNzLnBob25lTnVt
YmVyLAorICAgIH07CisgICAgcnVuVGVzdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnV0dG9u
IiksIGV4cGVjdGVkQWRkcmVzcyk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXNwb25zZS1jb21wbGV0ZS1tZXRo
b2QuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVx
dWVzdC9wYXltZW50LXJlc3BvbnNlLWNvbXBsZXRlLW1ldGhvZC5odHRwcy1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNzkwNjkxZTQ0ZjgxZTMzNTc3NjE2YjBmMGE1OGYzNDAwNGNkYjQ4NAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5
bWVudC1yZXNwb25zZS1jb21wbGV0ZS1tZXRob2QuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTMgQEAKK+KchSBJZiB0aGUgdmFsdWUgb2YgdGhlIGludGVybmFsIHNsb3QgW1tjb21wbGV0
ZUNhbGxlZF1dIGlzIHRydWUsIHJlamVjdCBwcm9taXNlIHdpdGggYW4gIkludmFsaWRTdGF0ZUVy
cm9yIiBET01FeGNlcHRpb24uCivinIUgUGFzc2luZyBubyBhcmd1bWVudCBkZWZhdWx0cyB0byAi
dW5rbm93biIsIGV2ZW50dWFsbHkgY2xvc2luZyB0aGUgc2hlZXQgYW5kIGRvZXNuJ3QgdGhyb3cu
CivinIUgUGFzc2luZyAic3VjY2VzcyIgZXZlbnR1YWxseSBjbG9zZXMgdGhlIHNoZWV0IGFuZCBk
b2Vzbid0IHRocm93Lgor4pyFIFBhc3NpbmcgImZhaWwiIGV2ZW50dWFsbHkgY2xvc2VzIHRoZSBz
aGVldCBhbmQgZG9lc24ndCB0aHJvdy4KKworUEFTUyBDYW4gY29uc3RydWN0IGEgcGF5bWVudCBy
ZXF1ZXN0IChzbW9rZSB0ZXN0KS4gCitQQVNTIElmIHRoZSB2YWx1ZSBvZiB0aGUgaW50ZXJuYWwg
c2xvdCBbW2NvbXBsZXRlQ2FsbGVkXV0gaXMgdHJ1ZSwKKyAgICAgIHJlamVjdCBwcm9taXNlIHdp
dGggYW4gIkludmFsaWRTdGF0ZUVycm9yIiBET01FeGNlcHRpb24uIAorUEFTUyBQYXNzaW5nIG5v
IGFyZ3VtZW50IGRlZmF1bHRzIHRvICJ1bmtub3duIiwKKyAgICAgIGV2ZW50dWFsbHkgY2xvc2lu
ZyB0aGUgc2hlZXQgYW5kIGRvZXNuJ3QgdGhyb3cuIAorUEFTUyBQYXNzaW5nICJzdWNjZXNzIiBl
dmVudHVhbGx5IGNsb3NlcyB0aGUgc2hlZXQgYW5kIGRvZXNuJ3QgdGhyb3cuIAorUEFTUyBQYXNz
aW5nICJmYWlsIiBldmVudHVhbGx5IGNsb3NlcyB0aGUgc2hlZXQgYW5kIGRvZXNuJ3QgdGhyb3cu
IAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3Bh
eW1lbnQtcmVzcG9uc2UtY29tcGxldGUtbWV0aG9kLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtY29tcGxldGUtbWV0aG9k
Lmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWZkNjgyN2EwNzMzNDkzY2E3YTk2MzU0YTQ2ZmEzYWFm
YWFiN2FkMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVu
dHJlcXVlc3QvcGF5bWVudC1yZXNwb25zZS1jb21wbGV0ZS1tZXRob2QuaHR0cHMuaHRtbApAQCAt
MCwwICsxLDc5IEBACis8IWRvY3R5cGUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0ZjgiPgorPGxp
bmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL3czYy5naXRodWIuaW8vcGF5bWVudC1yZXF1ZXN0
LyNkb20tcGF5bWVudHJlc3BvbnNlLWNvbXBsZXRlKCkiPgorPHRpdGxlPgorICBQYXltZW50UmVz
cG9uc2UucHJvdG90eXBlLmNvbXBsZXRlKCkgbWV0aG9kCis8L3RpdGxlPgorPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy9oZWxwZXJzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Cithc3luYyBmdW5jdGlvbiBydW5U
ZXN0KHsgY29tcGxldGVXaXRoOiByZXN1bHQgfSwgYnV0dG9uKSB7CisgIGJ1dHRvbi5kaXNhYmxl
ZCA9IHRydWU7CisgIGNvbnN0IHsgcmVzcG9uc2UsIHJlcXVlc3QgfSA9IGF3YWl0IGdldFBheW1l
bnRSZXF1ZXN0UmVzcG9uc2UoKTsKKyAgcHJvbWlzZV90ZXN0KGFzeW5jICgpID0+IHsKKyAgICB0
cnkgeworICAgICAgLy8gV2UgLmNvbXBsZXRlKCkgYXMgbm9ybWFsLCB1c2luZyB0aGUgcGFzc2Vk
IHRlc3QgdmFsdWUKKyAgICAgIGNvbnN0IHByb21pc2UgPSByZXNwb25zZS5jb21wbGV0ZShyZXN1
bHQpOworICAgICAgYXNzZXJ0X3RydWUocHJvbWlzZSBpbnN0YW5jZW9mIFByb21pc2UsICJyZXR1
cm5zIGEgcHJvbWlzZSIpOworICAgICAgY29uc3QgcmV0dXJuZWRWYWx1ZSA9IGF3YWl0IHByb21p
c2U7CisgICAgICBhc3NlcnRfZXF1YWxzKAorICAgICAgICByZXR1cm5lZFZhbHVlLAorICAgICAg
ICB1bmRlZmluZWQsCisgICAgICAgICJSZXR1cm5lZCB2YWx1ZSBtdXN0IGFsd2F5cyBiZSB1bmRl
ZmluZWQiCisgICAgICApOworICAgICAgLy8gV2Ugbm93IGNhbGwgLmNvbXBsZXRlKCkgYWdhaW4s
IHRvIGZvcmNlIGFuIGV4Y2VwdGlvbgorICAgICAgLy8gYmVjYXVzZSBbW2NvbXBsZXRlQ2FsbGVk
XV0gaXMgdHJ1ZS4KKyAgICAgIHRyeSB7CisgICAgICAgIGF3YWl0IHJlc3BvbnNlLmNvbXBsZXRl
KHJlc3VsdCk7CisgICAgICAgIGFzc2VydF91bnJlYWNoZWQoIkV4cGVjdGVkIEludmFsaWRTdGF0
ZUVycm9yIHRvIGJlIHRocm93biIpOworICAgICAgfSBjYXRjaCAoZXJyKSB7CisgICAgICAgIGFz
c2VydF9lcXVhbHMoCisgICAgICAgICAgZXJyLmNvZGUsCisgICAgICAgICAgRE9NRXhjZXB0aW9u
LklOVkFMSURfU1RBVEVfRVJSLAorICAgICAgICAgICJNdXN0IHRocm93IGFuIEludmFsaWRTdGF0
ZUVycm9yIgorICAgICAgICApOworICAgICAgfQorICAgICAgYnV0dG9uLmlubmVySFRNTCA9IGDi
nIUgICR7YnV0dG9uLnRleHRDb250ZW50fWA7CisgICAgfSBjYXRjaCAoZXJyKSB7CisgICAgICBi
dXR0b24uaW5uZXJIVE1MID0gYOKdjCAgJHtidXR0b24udGV4dENvbnRlbnR9YDsKKyAgICAgIGFz
c2VydF91bnJlYWNoZWQoIlVuZXhwZWN0ZWQgZXhjZXB0aW9uOiAiICsgZXJyLm1lc3NhZ2UpOwor
ICAgIH0KKyAgfSwgYnV0dG9uLnRleHRDb250ZW50LnRyaW0oKSk7Cit9Cis8L3NjcmlwdD4KKzxv
bD4KKyAgPGxpPgorICAgIDxidXR0b24gaWQ9ImJ1dHRvbjEiPgorICAgICAgSWYgdGhlIHZhbHVl
IG9mIHRoZSBpbnRlcm5hbCBzbG90IFtbY29tcGxldGVDYWxsZWRdXSBpcyB0cnVlLAorICAgICAg
cmVqZWN0IHByb21pc2Ugd2l0aCBhbiAiSW52YWxpZFN0YXRlRXJyb3IiIERPTUV4Y2VwdGlvbi4K
KyAgICA8L2J1dHRvbj4KKyAgPC9saT4KKyAgPGxpPgorICAgIDxidXR0b24gaWQ9ImJ1dHRvbjIi
PgorICAgICAgUGFzc2luZyBubyBhcmd1bWVudCBkZWZhdWx0cyB0byAidW5rbm93biIsCisgICAg
ICBldmVudHVhbGx5IGNsb3NpbmcgdGhlIHNoZWV0IGFuZCBkb2Vzbid0IHRocm93LgorICAgIDwv
YnV0dG9uPgorICA8L2xpPgorICA8bGk+CisgICAgPGJ1dHRvbiBpZD0iYnV0dG9uMyI+CisgICAg
ICBQYXNzaW5nICJzdWNjZXNzIiBldmVudHVhbGx5IGNsb3NlcyB0aGUgc2hlZXQgYW5kIGRvZXNu
J3QgdGhyb3cuCisgICAgPC9idXR0b24+CisgIDwvbGk+CisgIDxsaT4KKyAgICA8YnV0dG9uIGlk
PSJidXR0b240Ij4KKyAgICAgIFBhc3NpbmcgImZhaWwiIGV2ZW50dWFsbHkgY2xvc2VzIHRoZSBz
aGVldCBhbmQgZG9lc24ndCB0aHJvdy4KKyAgICA8L2J1dHRvbj4KKyAgPC9saT4KKzwvb2w+Cis8
c2NyaXB0PgorICAgIGFzeW5jIGZ1bmN0aW9uIHJ1blRlc3RzKCkKKyAgICB7CisgICAgICAgIGF3
YWl0IHJ1blRlc3Qoe2NvbXBsZXRlV2l0aDogInN1Y2Nlc3MifSwgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImJ1dHRvbjEiKSk7CisgICAgICAgIGF3YWl0IHJ1blRlc3Qoe2NvbXBsZXRlV2l0aDog
InVua25vd24ifSwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJ1dHRvbjIiKSk7CisgICAgICAg
IGF3YWl0IHJ1blRlc3Qoe2NvbXBsZXRlV2l0aDogInN1Y2Nlc3MifSwgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImJ1dHRvbjMiKSk7CisgICAgICAgIGF3YWl0IHJ1blRlc3Qoe2NvbXBsZXRlV2l0
aDogImZhaWwifSwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJ1dHRvbjQiKSk7CisgICAgICAg
IGRvbmUoKTsKKyAgICB9CisgICAgcnVuVGVzdHMoKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLW1l
dGhvZE5hbWUtYXR0cmlidXRlLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXNwb25zZS1tZXRob2ROYW1lLWF0dHJpYnV0
ZS5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjM1Yzg0OGNhODhiNDgzODk3N2NiZjhk
NGQ2MWM2NDZkOGEyM2I2YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXNwb25zZS1tZXRob2ROYW1lLWF0dHJpYnV0ZS5o
dHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitFeHBlY3QgdGhlIHBheW1lbnQgbWV0
aG9kIGlkZW50aWZpZXIgdG8gYmUgJ2h0dHBzOi8vYXBwbGUuY29tL2FwcGxlLXBheScuCisKK1BB
U1MgQ2FuIGNvbnN0cnVjdCBhIHBheW1lbnQgcmVxdWVzdCAoc21va2UgdGVzdCkuIAorUEFTUyBF
eHBlY3QgdGhlIHBheW1lbnQgbWV0aG9kIGlkZW50aWZpZXIgdG8gYmUgJ2h0dHBzOi8vYXBwbGUu
Y29tL2FwcGxlLXBheScuIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Bh
eW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtbWV0aG9kTmFtZS1hdHRyaWJ1dGUuaHR0cHMu
aHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXNw
b25zZS1tZXRob2ROYW1lLWF0dHJpYnV0ZS5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3ZTg5YTYw
OTI3MDQ3NjRmMGEwMjNjZGM4MWU3ZjY1NmRhM2Y1NTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtbWV0aG9k
TmFtZS1hdHRyaWJ1dGUuaHR0cHMuaHRtbApAQCAtMCwwICsxLDE5IEBACis8IWRvY3R5cGUgaHRt
bD4KKzxtZXRhIGNoYXJzZXQ9InV0ZjgiPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczov
L3czYy5naXRodWIuaW8vcGF5bWVudC1yZXF1ZXN0LyNkb20tcGF5bWVudHJlc3BvbnNlLW1ldGhv
ZG5hbWUiPgorPHRpdGxlPgorICBQYXltZW50UmVzcG9uc2UucHJvdG90eXBlLm1ldGhvZE5hbWUg
YXR0cmlidXRlCis8L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9oZWxwZXJzLmpzIj48L3Njcmlw
dD4KKzxvbD4KKyAgPGxpPgorICAgIDxidXR0b24gaWQ9ImJ1dHRvbiI+CisgICAgICBFeHBlY3Qg
dGhlIHBheW1lbnQgbWV0aG9kIGlkZW50aWZpZXIgdG8gYmUgJ2h0dHBzOi8vYXBwbGUuY29tL2Fw
cGxlLXBheScuCisgICAgPC9idXR0b24+CisgIDwvbGk+Cis8L29sPgorPHNjcmlwdD4KKyAgICBy
dW5UZXN0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJidXR0b24iKSwge30sIHsgbWV0aG9kTmFt
ZTogJ2h0dHBzOi8vYXBwbGUuY29tL2FwcGxlLXBheScgfSkudGhlbihkb25lKTsKKzwvc2NyaXB0
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXlt
ZW50LXJlc3BvbnNlLXBheWVyRW1haWwtYXR0cmlidXRlLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXNwb25zZS1wYXll
ckVtYWlsLWF0dHJpYnV0ZS5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjUzOTY0NTZh
MmUzNDE5Zjc0N2U1ZjZmMmJkMmUxMzBmMWMxNTcyYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXNwb25zZS1wYXllckVt
YWlsLWF0dHJpYnV0ZS5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorcGF5ZXJF
bWFpbCBhdHRyaWJ1dGUgaXMgbnVsbCB3aGVuIG9wdGlvbnMgdW5kZWZpbmVkLgorcGF5ZXJFbWFp
bCBhdHRyaWJ1dGUgaXMgbnVsbCB3aGVuIHJlcXVlc3RQYXllckVtYWlsIGlzIHVuZGVmaW5lZC4K
K3BheWVyRW1haWwgYXR0cmlidXRlIGlzIG51bGwgd2hlbiByZXF1ZXN0UGF5ZXJFbWFpbCBpcyBm
YWxzZS4KK3BheWVyRW1haWwgYXR0cmlidXRlIGlzICd3cHRAdzMub3JnJyB3aGVuIHJlcXVlc3RQ
YXllckVtYWlsIGlzIHRydWUuCitwYXllckVtYWlsIGF0dHJpYnV0ZSBpcyAnd3B0QHczLm9yZycg
d2hlbiByZXF1ZXN0UGF5ZXJFbWFpbCBpcyB0cnV0aHkuCisKK1BBU1MgQ2FuIGNvbnN0cnVjdCBh
IHBheW1lbnQgcmVxdWVzdCAoc21va2UgdGVzdCkuIAorUEFTUyBwYXllckVtYWlsIGF0dHJpYnV0
ZSBpcyBudWxsIHdoZW4gb3B0aW9ucyB1bmRlZmluZWQuIAorUEFTUyBwYXllckVtYWlsIGF0dHJp
YnV0ZSBpcyBudWxsIHdoZW4gcmVxdWVzdFBheWVyRW1haWwgaXMgdW5kZWZpbmVkLiAKK1BBU1Mg
cGF5ZXJFbWFpbCBhdHRyaWJ1dGUgaXMgbnVsbCB3aGVuIHJlcXVlc3RQYXllckVtYWlsIGlzIGZh
bHNlLiAKK1BBU1MgcGF5ZXJFbWFpbCBhdHRyaWJ1dGUgaXMgJ3dwdEB3My5vcmcnIHdoZW4gcmVx
dWVzdFBheWVyRW1haWwgaXMgdHJ1ZS4gCitQQVNTIHBheWVyRW1haWwgYXR0cmlidXRlIGlzICd3
cHRAdzMub3JnJyB3aGVuIHJlcXVlc3RQYXllckVtYWlsIGlzIHRydXRoeS4gCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXNwb25z
ZS1wYXllckVtYWlsLWF0dHJpYnV0ZS5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLXBheWVyRW1haWwtYXR0cmlidXRlLmh0
dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uODNmYjkzNTJmOWEyYTdkY2E2NmMwYmZiYTkyMjY3M2YyZjBk
OTA1ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJl
cXVlc3QvcGF5bWVudC1yZXNwb25zZS1wYXllckVtYWlsLWF0dHJpYnV0ZS5odHRwcy5odG1sCkBA
IC0wLDAgKzEsNTAgQEAKKzwhZG9jdHlwZSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRmOCI+Cis8
bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vdzNjLmdpdGh1Yi5pby9wYXltZW50LXJlcXVl
c3QvI2RvbS1wYXltZW50cmVzcG9uc2UtcGF5ZXJlbWFpbCI+Cis8dGl0bGU+CisgIFBheW1lbnRS
ZXNwb25zZS5wcm90b3R5cGUucGF5ZXJFbWFpbCBhdHRyaWJ1dGUKKzwvdGl0bGU+Cis8c2NyaXB0
IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL2hlbHBlcnMuanMiPjwvc2NyaXB0PgorPG9sPgorICA8bGk+CisgICAgPGJ1dHRv
biBpZD0iYnV0dG9uMSI+CisgICAgICBwYXllckVtYWlsIGF0dHJpYnV0ZSBpcyBudWxsIHdoZW4g
b3B0aW9ucyB1bmRlZmluZWQuCisgICAgPC9idXR0b24+CisgIDwvbGk+CisgIDxsaT4KKyAgICA8
YnV0dG9uIGlkPSJidXR0b24yIj4KKyAgICAgIHBheWVyRW1haWwgYXR0cmlidXRlIGlzIG51bGwg
d2hlbiByZXF1ZXN0UGF5ZXJFbWFpbCBpcyB1bmRlZmluZWQuCisgICAgPC9idXR0b24+CisgIDwv
bGk+CisgIDxsaT4KKyAgICA8YnV0dG9uIGlkPSJidXR0b24zIj4KKyAgICAgIHBheWVyRW1haWwg
YXR0cmlidXRlIGlzIG51bGwgd2hlbiByZXF1ZXN0UGF5ZXJFbWFpbCBpcyBmYWxzZS4KKyAgICA8
L2J1dHRvbj4KKyAgPC9saT4KKyAgPGxpPgorICAgIDxidXR0b24gaWQ9ImJ1dHRvbjQiPgorICAg
ICAgcGF5ZXJFbWFpbCBhdHRyaWJ1dGUgaXMgJ3dwdEB3My5vcmcnIHdoZW4gcmVxdWVzdFBheWVy
RW1haWwgaXMgdHJ1ZS4KKyAgICA8L2J1dHRvbj4KKyAgPC9saT4KKyAgPGxpPgorICAgIDxidXR0
b24gaWQ9ImJ1dHRvbjUiPgorICAgICAgcGF5ZXJFbWFpbCBhdHRyaWJ1dGUgaXMgJ3dwdEB3My5v
cmcnIHdoZW4gcmVxdWVzdFBheWVyRW1haWwgaXMgdHJ1dGh5LgorICAgIDwvYnV0dG9uPgorICA8
L2xpPgorPC9vbD4KKzxzY3JpcHQ+CisgICAgaW50ZXJuYWxzLm1vY2tQYXltZW50Q29vcmRpbmF0
b3Iuc2V0U2hpcHBpbmdBZGRyZXNzKHsgZW1haWxBZGRyZXNzOiAnd3B0QHczLm9yZycgfSk7CisK
KyAgICBhc3luYyBmdW5jdGlvbiBydW5UZXN0cygpCisgICAgeworICAgICAgICBhd2FpdCBydW5U
ZXN0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJidXR0b24xIiksIHVuZGVmaW5lZCwgeyBwYXll
ckVtYWlsOiBudWxsIH0pOworICAgICAgICBhd2FpdCBydW5UZXN0KGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJidXR0b24yIiksIHsgcmVxdWVzdFBheWVyRW1haWw6IHVuZGVmaW5lZCB9LCB7IHBh
eWVyRW1haWw6IG51bGwgfSk7CisgICAgICAgIGF3YWl0IHJ1blRlc3QoZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImJ1dHRvbjMiKSwgeyByZXF1ZXN0UGF5ZXJFbWFpbDogZmFsc2UgfSwgeyBwYXll
ckVtYWlsOiBudWxsIH0pOworICAgICAgICBhd2FpdCBydW5UZXN0KGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJidXR0b240IiksIHsgcmVxdWVzdFBheWVyRW1haWw6IHRydWUgfSwgeyBwYXllckVt
YWlsOiAnd3B0QHczLm9yZycgfSk7CisgICAgICAgIGF3YWl0IHJ1blRlc3QoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImJ1dHRvbjUiKSwgeyByZXF1ZXN0UGF5ZXJFbWFpbDogJ3llcCcgfSwgeyBw
YXllckVtYWlsOiAnd3B0QHczLm9yZycgfSk7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisgICAg
cnVuVGVzdHMoKTsKKzwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXNw
b25zZS1wYXllck5hbWUtYXR0cmlidXRlLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXNwb25zZS1wYXllck5hbWUtYXR0
cmlidXRlLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NzJmYTZkN2I3ZGJiNzE2ZmUw
YTZhYWQ5N2E5YTc0MmMwZDBlYTI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLXBheWVyTmFtZS1hdHRyaWJ1
dGUuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK3BheWVyTmFtZSBhdHRyaWJ1
dGUgaXMgbnVsbCB3aGVuIG9wdGlvbiBpcyB1bmRlZmluZWQuCitwYXllck5hbWUgYXR0cmlidXRl
IGlzIG51bGwgd2hlbiByZXF1ZXN0UGF5ZXJOYW1lIGlzIHVuZGVmaW5lZC4KK3BheWVyTmFtZSBh
dHRyaWJ1dGUgaXMgbnVsbCB3aGVuIHJlcXVlc3RQYXllck5hbWUgaXMgZmFsc2UuCitwYXllck5h
bWUgYXR0cmlidXRlIGlzICd3ZWIgcGxhdGZvcm0gdGVzdCcgd2hlbiByZXF1ZXN0UGF5ZXJOYW1l
IGlzIHRydWUuCitwYXllck5hbWUgYXR0cmlidXRlIGlzICd3ZWIgcGxhdGZvcm0gdGVzdCcgd2hl
biByZXF1ZXN0UGF5ZXJOYW1lIGlzIHRydXRoeS4KKworUEFTUyBDYW4gY29uc3RydWN0IGEgcGF5
bWVudCByZXF1ZXN0IChzbW9rZSB0ZXN0KS4gCitQQVNTIHBheWVyTmFtZSBhdHRyaWJ1dGUgaXMg
bnVsbCB3aGVuIG9wdGlvbiBpcyB1bmRlZmluZWQuIAorUEFTUyBwYXllck5hbWUgYXR0cmlidXRl
IGlzIG51bGwgd2hlbiByZXF1ZXN0UGF5ZXJOYW1lIGlzIHVuZGVmaW5lZC4gCitQQVNTIHBheWVy
TmFtZSBhdHRyaWJ1dGUgaXMgbnVsbCB3aGVuIHJlcXVlc3RQYXllck5hbWUgaXMgZmFsc2UuIAor
UEFTUyBwYXllck5hbWUgYXR0cmlidXRlIGlzICd3ZWIgcGxhdGZvcm0gdGVzdCcgd2hlbiByZXF1
ZXN0UGF5ZXJOYW1lIGlzIHRydWUuIAorUEFTUyBwYXllck5hbWUgYXR0cmlidXRlIGlzICd3ZWIg
cGxhdGZvcm0gdGVzdCcgd2hlbiByZXF1ZXN0UGF5ZXJOYW1lIGlzIHRydXRoeS4gCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXNw
b25zZS1wYXllck5hbWUtYXR0cmlidXRlLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtcGF5ZXJOYW1lLWF0dHJpYnV0ZS5o
dHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3MjNiMmRhNmMxYTk2YWEwOTg0ZGU0NjNkYWFmODkyZmU2
MWU3MjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRy
ZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtcGF5ZXJOYW1lLWF0dHJpYnV0ZS5odHRwcy5odG1sCkBA
IC0wLDAgKzEsNTAgQEAKKzwhZG9jdHlwZSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRmOCI+Cis8
bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vdzNjLmdpdGh1Yi5pby9wYXltZW50LXJlcXVl
c3QvI2RvbS1wYXltZW50cmVzcG9uc2UtcGF5ZXJuYW1lIj4KKzx0aXRsZT4KKyAgUGF5bWVudFJl
c3BvbnNlLnByb3RvdHlwZS5wYXllck5hbWUgYXR0cmlidXRlCis8L3RpdGxlPgorPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9oZWxwZXJzLmpzIj48L3NjcmlwdD4KKzxvbD4KKyAgPGxpPgorICAgIDxidXR0b24g
aWQ9ImJ1dHRvbjEiPgorICAgICAgcGF5ZXJOYW1lIGF0dHJpYnV0ZSBpcyBudWxsIHdoZW4gb3B0
aW9uIGlzIHVuZGVmaW5lZC4KKyAgICA8L2J1dHRvbj4KKyAgPC9saT4KKyAgPGxpPgorICAgIDxi
dXR0b24gaWQ9ImJ1dHRvbjIiPgorICAgICAgcGF5ZXJOYW1lIGF0dHJpYnV0ZSBpcyBudWxsIHdo
ZW4gcmVxdWVzdFBheWVyTmFtZSBpcyB1bmRlZmluZWQuCisgICAgPC9idXR0b24+CisgIDwvbGk+
CisgIDxsaT4KKyAgICA8YnV0dG9uIGlkPSJidXR0b24zIj4KKyAgICAgIHBheWVyTmFtZSBhdHRy
aWJ1dGUgaXMgbnVsbCB3aGVuIHJlcXVlc3RQYXllck5hbWUgaXMgZmFsc2UuCisgICAgPC9idXR0
b24+CisgIDwvbGk+CisgIDxsaT4KKyAgICA8YnV0dG9uIGlkPSJidXR0b240Ij4KKyAgICAgIHBh
eWVyTmFtZSBhdHRyaWJ1dGUgaXMgJ3dlYiBwbGF0Zm9ybSB0ZXN0JyB3aGVuIHJlcXVlc3RQYXll
ck5hbWUgaXMgdHJ1ZS4KKyAgICA8L2J1dHRvbj4KKyAgPC9saT4KKyAgPGxpPgorICAgIDxidXR0
b24gaWQ9ImJ1dHRvbjUiPgorICAgICAgcGF5ZXJOYW1lIGF0dHJpYnV0ZSBpcyAnd2ViIHBsYXRm
b3JtIHRlc3QnIHdoZW4gcmVxdWVzdFBheWVyTmFtZSBpcyB0cnV0aHkuCisgICAgPC9idXR0b24+
CisgIDwvbGk+Cis8L29sPgorPHNjcmlwdD4KKyAgICBpbnRlcm5hbHMubW9ja1BheW1lbnRDb29y
ZGluYXRvci5zZXRTaGlwcGluZ0FkZHJlc3MoeyBsb2NhbGl6ZWROYW1lOiAnd2ViIHBsYXRmb3Jt
IHRlc3QnIH0pOworICAgIAorICAgIGFzeW5jIGZ1bmN0aW9uIHJ1blRlc3RzKCkKKyAgICB7Cisg
ICAgICAgIGF3YWl0IHJ1blRlc3QoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJ1dHRvbjEiKSwg
dW5kZWZpbmVkLCB7IHBheWVyTmFtZTogbnVsbCB9KTsKKyAgICAgICAgYXdhaXQgcnVuVGVzdChk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnV0dG9uMiIpLCB7IHJlcXVlc3RQYXllck5hbWU6IHVu
ZGVmaW5lZCB9LCB7IHBheWVyTmFtZTogbnVsbCB9KTsKKyAgICAgICAgYXdhaXQgcnVuVGVzdChk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnV0dG9uMyIpLCB7IHJlcXVlc3RQYXllck5hbWU6IGZh
bHNlIH0sIHsgcGF5ZXJOYW1lOiBudWxsIH0pOworICAgICAgICBhd2FpdCBydW5UZXN0KGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJidXR0b240IiksIHsgcmVxdWVzdFBheWVyTmFtZTogdHJ1ZSB9
LCB7IHBheWVyTmFtZTogJ3dlYiBwbGF0Zm9ybSB0ZXN0JyB9KTsKKyAgICAgICAgYXdhaXQgcnVu
VGVzdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnV0dG9uNSIpLCB7IHJlcXVlc3RQYXllck5h
bWU6ICd5ZXAnIH0sIHsgcGF5ZXJOYW1lOiAnd2ViIHBsYXRmb3JtIHRlc3QnIH0pOworICAgICAg
ICBkb25lKCk7CisgICAgfQorICAgIHJ1blRlc3RzKCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1l
bnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtcGF5ZXJQaG9uZS1hdHRyaWJ1dGUuaHR0cHMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50
LXJlc3BvbnNlLXBheWVyUGhvbmUtYXR0cmlidXRlLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jODdmNzJjODQ5OWVjYmZjNDNhNmU5ZGMwNDc4OTMwYjcwMmUzYWJhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJl
c3BvbnNlLXBheWVyUGhvbmUtYXR0cmlidXRlLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDEzIEBACitwYXllclBob25lIGF0dHJpYnV0ZSBpcyBudWxsIHdoZW4gb3B0aW9ucyBpcyB1bmRl
ZmluZWQuCitwYXllclBob25lIGF0dHJpYnV0ZSBpcyBudWxsIHdoZW4gcmVxdWVzdFBheWVyUGhv
bmUgaXMgdW5kZWZpbmVkLgorcGF5ZXJQaG9uZSBhdHRyaWJ1dGUgaXMgbnVsbCB3aGVuIHJlcXVl
c3RQYXllclBob25lIGlzIGZhbHNlLgorcGF5ZXJQaG9uZSBhdHRyaWJ1dGUgaXMgJysxMjM0NTY3
ODkxMCcgd2hlbiByZXF1ZXN0UGF5ZXJQaG9uZSBpcyB0cnVlLgorcGF5ZXJQaG9uZSBhdHRyaWJ1
dGUgaXMgJysxMjM0NTY3ODkxMCcgd2hlbiByZXF1ZXN0UGF5ZXJQaG9uZSBpcyB0cnV0aHkuCisK
K1BBU1MgQ2FuIGNvbnN0cnVjdCBhIHBheW1lbnQgcmVxdWVzdCAoc21va2UgdGVzdCkuIAorUEFT
UyBwYXllclBob25lIGF0dHJpYnV0ZSBpcyBudWxsIHdoZW4gb3B0aW9ucyBpcyB1bmRlZmluZWQu
IAorUEFTUyBwYXllclBob25lIGF0dHJpYnV0ZSBpcyBudWxsIHdoZW4gcmVxdWVzdFBheWVyUGhv
bmUgaXMgdW5kZWZpbmVkLiAKK1BBU1MgcGF5ZXJQaG9uZSBhdHRyaWJ1dGUgaXMgbnVsbCB3aGVu
IHJlcXVlc3RQYXllclBob25lIGlzIGZhbHNlLiAKK1BBU1MgcGF5ZXJQaG9uZSBhdHRyaWJ1dGUg
aXMgJysxMjM0NTY3ODkxMCcgd2hlbiByZXF1ZXN0UGF5ZXJQaG9uZSBpcyB0cnVlLiAKK1BBU1Mg
cGF5ZXJQaG9uZSBhdHRyaWJ1dGUgaXMgJysxMjM0NTY3ODkxMCcgd2hlbiByZXF1ZXN0UGF5ZXJQ
aG9uZSBpcyB0cnV0aHkuIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Bh
eW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtcGF5ZXJQaG9uZS1hdHRyaWJ1dGUuaHR0cHMu
aHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXNw
b25zZS1wYXllclBob25lLWF0dHJpYnV0ZS5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhNDBjNDgy
M2RjOTU1ZDk0MGM1ZjBkZGZkMjY4ODIxNGI1ODhiYWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtcGF5ZXJQ
aG9uZS1hdHRyaWJ1dGUuaHR0cHMuaHRtbApAQCAtMCwwICsxLDUwIEBACis8IWRvY3R5cGUgaHRt
bD4KKzxtZXRhIGNoYXJzZXQ9InV0ZjgiPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczov
L3czYy5naXRodWIuaW8vcGF5bWVudC1yZXF1ZXN0LyNkb20tcGF5bWVudHJlc3BvbnNlLXBheWVy
cGhvbmUiPgorPHRpdGxlPgorICBQYXltZW50UmVzcG9uc2UucHJvdG90eXBlLnBheWVyUGhvbmUg
YXR0cmlidXRlCis8L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9oZWxwZXJzLmpzIj48L3Njcmlw
dD4KKzxvbD4KKyAgPGxpPgorICAgIDxidXR0b24gaWQ9ImJ1dHRvbjEiPgorICAgICAgcGF5ZXJQ
aG9uZSBhdHRyaWJ1dGUgaXMgbnVsbCB3aGVuIG9wdGlvbnMgaXMgdW5kZWZpbmVkLgorICAgIDwv
YnV0dG9uPgorICA8L2xpPgorICA8bGk+CisgICAgPGJ1dHRvbiBpZD0iYnV0dG9uMiI+CisgICAg
ICBwYXllclBob25lIGF0dHJpYnV0ZSBpcyBudWxsIHdoZW4gcmVxdWVzdFBheWVyUGhvbmUgaXMg
dW5kZWZpbmVkLgorICAgIDwvYnV0dG9uPgorICA8L2xpPgorICA8bGk+CisgICAgPGJ1dHRvbiBp
ZD0iYnV0dG9uMyI+CisgICAgICBwYXllclBob25lIGF0dHJpYnV0ZSBpcyBudWxsIHdoZW4gcmVx
dWVzdFBheWVyUGhvbmUgaXMgZmFsc2UuCisgICAgPC9idXR0b24+CisgIDwvbGk+CisgIDxsaT4K
KyAgICA8YnV0dG9uIGlkPSJidXR0b240Ij4KKyAgICAgIHBheWVyUGhvbmUgYXR0cmlidXRlIGlz
ICcrMTIzNDU2Nzg5MTAnIHdoZW4gcmVxdWVzdFBheWVyUGhvbmUgaXMgdHJ1ZS4KKyAgICA8L2J1
dHRvbj4KKyAgPC9saT4KKyAgPGxpPgorICAgIDxidXR0b24gaWQ9ImJ1dHRvbjUiPgorICAgICAg
cGF5ZXJQaG9uZSBhdHRyaWJ1dGUgaXMgJysxMjM0NTY3ODkxMCcgd2hlbiByZXF1ZXN0UGF5ZXJQ
aG9uZSBpcyB0cnV0aHkuCisgICAgPC9idXR0b24+CisgIDwvbGk+Cis8L29sPgorPHNjcmlwdD4K
KyAgICBpbnRlcm5hbHMubW9ja1BheW1lbnRDb29yZGluYXRvci5zZXRTaGlwcGluZ0FkZHJlc3Mo
eyBwaG9uZU51bWJlcjogJysxMjM0NTY3ODkxMCcgfSk7CisgICAgCisgICAgYXN5bmMgZnVuY3Rp
b24gcnVuVGVzdHMoKQorICAgIHsKKyAgICAgICAgYXdhaXQgcnVuVGVzdChkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiYnV0dG9uMSIpLCB1bmRlZmluZWQsIHsgcGF5ZXJQaG9uZTogbnVsbCB9KTsK
KyAgICAgICAgYXdhaXQgcnVuVGVzdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnV0dG9uMiIp
LCB7IHJlcXVlc3RQYXllclBob25lOiB1bmRlZmluZWQgfSwgeyBwYXllclBob25lOiBudWxsIH0p
OworICAgICAgICBhd2FpdCBydW5UZXN0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJidXR0b24z
IiksIHsgcmVxdWVzdFBheWVyUGhvbmU6IGZhbHNlIH0sIHsgcGF5ZXJQaG9uZTogbnVsbCB9KTsK
KyAgICAgICAgYXdhaXQgcnVuVGVzdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnV0dG9uNCIp
LCB7IHJlcXVlc3RQYXllclBob25lOiB0cnVlIH0sIHsgcGF5ZXJQaG9uZTogJysxMjM0NTY3ODkx
MCcgfSk7CisgICAgICAgIGF3YWl0IHJ1blRlc3QoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJ1
dHRvbjUiKSwgeyByZXF1ZXN0UGF5ZXJQaG9uZTogJ3llcCcgfSwgeyBwYXllclBob25lOiAnKzEy
MzQ1Njc4OTEwJyB9KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKyAgICBydW5UZXN0cygpOwor
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1
ZXN0L3Jlc291cmNlcy9oZWxwZXJzLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50
cmVxdWVzdC9yZXNvdXJjZXMvaGVscGVycy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMTIyYzI5NDVjMjYwMTBl
NDI3NWQwMTNlZGVlM2FhNzcwODZjOGExCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9yZXNvdXJjZXMvaGVscGVycy5qcwpAQCAtMCwwICsx
LDE1NiBAQAorc2V0dXAoeyBleHBsaWNpdF9kb25lOiB0cnVlLCBleHBsaWNpdF90aW1lb3V0OiB0
cnVlIH0pOworCitjb25zdCB2YWxpZE1ldGhvZCA9IE9iamVjdC5mcmVlemUoeworICBzdXBwb3J0
ZWRNZXRob2RzOiAiaHR0cHM6Ly9hcHBsZS5jb20vYXBwbGUtcGF5IiwKKyAgZGF0YTogeworICAg
ICAgdmVyc2lvbjogMiwKKyAgICAgIG1lcmNoYW50SWRlbnRpZmllcjogJycsCisgICAgICBtZXJj
aGFudENhcGFiaWxpdGllczogWydzdXBwb3J0czNEUyddLAorICAgICAgc3VwcG9ydGVkTmV0d29y
a3M6IFsndmlzYScsICdtYXN0ZXJDYXJkJ10sCisgICAgICBjb3VudHJ5Q29kZTogJ1VTJywKKyAg
fSwKK30pOworCitjb25zdCB2YWxpZE1ldGhvZHMgPSBPYmplY3QuZnJlZXplKFt2YWxpZE1ldGhv
ZF0pOworCitjb25zdCB2YWxpZEFtb3VudCA9IE9iamVjdC5mcmVlemUoeworICBjdXJyZW5jeTog
IlVTRCIsCisgIHZhbHVlOiAiMS4wMCIsCit9KTsKKworY29uc3QgdmFsaWRUb3RhbCA9IE9iamVj
dC5mcmVlemUoeworICBsYWJlbDogIlZhbGlkIHRvdGFsIiwKKyAgYW1vdW50OiB2YWxpZEFtb3Vu
dCwKK30pOworY29uc3QgdmFsaWREZXRhaWxzID0geworICB0b3RhbDogdmFsaWRUb3RhbCwKK307
CisKK3Rlc3QoKCkgPT4geworICB0cnkgeworICAgIG5ldyBQYXltZW50UmVxdWVzdCh2YWxpZE1l
dGhvZHMsIHZhbGlkRGV0YWlscyk7CisgIH0gY2F0Y2ggKGVycikgeworICAgIGRvbmUoKTsKKyAg
ICB0aHJvdyBlcnI7CisgIH0KK30sICJDYW4gY29uc3RydWN0IGEgcGF5bWVudCByZXF1ZXN0IChz
bW9rZSB0ZXN0KS4iKTsKKworLyoqCisgKiBQb3BzIHVwIGEgcGF5bWVudCBzaGVldCwgYWxsb3dp
bmcgb3B0aW9ucyB0byBiZQorICogcGFzc2VkIGluIGlmIHBhcnRpY3VsYXIgdmFsdWVzIGFyZSBu
ZWVkZWQuCisgKgorICogQHBhcmFtIFBheW1lbnRPcHRpb25zIG9wdGlvbnMKKyAqLworYXN5bmMg
ZnVuY3Rpb24gZ2V0UGF5bWVudFJlc3BvbnNlKG9wdGlvbnMsIGlkKSB7CisgIGNvbnN0IHsgcmVz
cG9uc2UgfSA9IGdldFBheW1lbnRSZXF1ZXN0UmVzcG9uc2Uob3B0aW9ucywgaWQpOworICByZXR1
cm4gcmVzcG9uc2U7Cit9CisKKy8qKgorICogQ3JlYXRlcyBhIHBheW1lbnQgcmVxdWVzdCBhbmQg
cmVzcG9uc2UgcGFpci4KKyAqIEl0IGFsc28gc2hvd3MgdGhlIHBheW1lbnQgc2hlZXQuCisgKgor
ICogQHBhcmFtIHtQYXltZW50T3B0aW9ucz99IG9wdGlvbnMKKyAqIEBwYXJhbSB7U3RyaW5nP30g
aWQKKyAqLworYXN5bmMgZnVuY3Rpb24gZ2V0UGF5bWVudFJlcXVlc3RSZXNwb25zZShvcHRpb25z
LCBpZCkgeworICBjb25zdCBtZXRob2RzID0gW3sKKyAgICAgIHN1cHBvcnRlZE1ldGhvZHM6ICJo
dHRwczovL2FwcGxlLmNvbS9hcHBsZS1wYXkiLAorICAgICAgZGF0YTogeworICAgICAgICAgIHZl
cnNpb246IDIsCisgICAgICAgICAgbWVyY2hhbnRJZGVudGlmaWVyOiAnJywKKyAgICAgICAgICBt
ZXJjaGFudENhcGFiaWxpdGllczogWydzdXBwb3J0czNEUyddLAorICAgICAgICAgIHN1cHBvcnRl
ZE5ldHdvcmtzOiBbJ3Zpc2EnLCAnbWFzdGVyQ2FyZCddLAorICAgICAgICAgIGNvdW50cnlDb2Rl
OiAnVVMnLAorICAgICAgfSwKKyAgfV07CisgIGNvbnN0IGRldGFpbHMgPSB7CisgICAgaWQsCisg
ICAgdG90YWw6IHsKKyAgICAgIGxhYmVsOiAiVG90YWwgZHVlIiwKKyAgICAgIGFtb3VudDogeyBj
dXJyZW5jeTogIlVTRCIsIHZhbHVlOiAiMS4wIiB9LAorICAgIH0sCisgICAgc2hpcHBpbmdPcHRp
b25zOiBbCisgICAgICB7CisgICAgICAgIGlkOiAiZmFpbDEiLAorICAgICAgICBsYWJlbDogIkZh
aWwgb3B0aW9uIDEiLAorICAgICAgICBhbW91bnQ6IHsgY3VycmVuY3k6ICJVU0QiLCB2YWx1ZTog
IjUuMDAiIH0sCisgICAgICAgIHNlbGVjdGVkOiBmYWxzZSwKKyAgICAgIH0sCisgICAgICB7Cisg
ICAgICAgIGlkOiAicGFzcyIsCisgICAgICAgIGxhYmVsOiAiUGFzcyBvcHRpb24iLAorICAgICAg
ICBhbW91bnQ6IHsgY3VycmVuY3k6ICJVU0QiLCB2YWx1ZTogIjUuMDAiIH0sCisgICAgICAgIHNl
bGVjdGVkOiB0cnVlLAorICAgICAgfSwKKyAgICAgIHsKKyAgICAgICAgaWQ6ICJmYWlsMiIsCisg
ICAgICAgIGxhYmVsOiAiRmFpbCBvcHRpb24gMiIsCisgICAgICAgIGFtb3VudDogeyBjdXJyZW5j
eTogIlVTRCIsIHZhbHVlOiAiNS4wMCIgfSwKKyAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLAorICAg
ICAgfSwKKyAgICBdLAorICB9OworICBjb25zdCByZXF1ZXN0ID0gbmV3IFBheW1lbnRSZXF1ZXN0
KG1ldGhvZHMsIGRldGFpbHMsIG9wdGlvbnMpOworICByZXF1ZXN0Lm9uc2hpcHBpbmdhZGRyZXNz
Y2hhbmdlID0gZXYgPT4gZXYudXBkYXRlV2l0aChkZXRhaWxzKTsKKyAgcmVxdWVzdC5vbnNoaXBw
aW5nb3B0aW9uY2hhbmdlID0gZXYgPT4gZXYudXBkYXRlV2l0aChkZXRhaWxzKTsKKyAgcmVxdWVz
dC5vbmFwcGxlcGF5dmFsaWRhdGVtZXJjaGFudCA9IGV2ID0+IGV2LmNvbXBsZXRlKHt9KTsKKyAg
Y29uc3QgcmVzcG9uc2UgPSBhd2FpdCByZXF1ZXN0LnNob3coKTsKKyAgcmV0dXJuIHsgcmVxdWVz
dCwgcmVzcG9uc2UgfTsKK30KKworLyoqCisgKiBSdW5zIGEgbWFudWFsIHRlc3QgZm9yIHBheW1l
bnQKKyAqCisgKiBAcGFyYW0ge0hUTUxCdXR0b25FbGVtZW50fSBidXR0b24gVGhlIEhUTUwgYnV0
dG9uLgorICogQHBhcmFtIHtQYXltZW50T3B0aW9ucz99IG9wdGlvbnMuCisgKiBAcGFyYW0ge09i
amVjdH0gZXhwZWN0ZWQgV2hhdCBwcm9wZXJ0eSB2YWx1ZXMgYXJlIGV4cGVjdGVkIHRvIHBhc3Mg
dGhlIHRlc3QuCisgKiBAcGFyYW0ge1N0cmluZz99IGlkIEFuZCBpZCBmb3IgdGhlIHJlcXVlc3Qv
cmVzcG9uc2UgcGFpci4KKyAqLworYXN5bmMgZnVuY3Rpb24gcnVuVGVzdChidXR0b24sIG9wdGlv
bnMsIGV4cGVjdGVkID0ge30sIGlkID0gdW5kZWZpbmVkKSB7CisgIGJ1dHRvbi5kaXNhYmxlZCA9
IHRydWU7CisgIGNvbnN0IHsgcmVxdWVzdCwgcmVzcG9uc2UgfSA9IGF3YWl0IGdldFBheW1lbnRS
ZXF1ZXN0UmVzcG9uc2Uob3B0aW9ucywgaWQpOworICBhd2FpdCByZXNwb25zZS5jb21wbGV0ZSgp
OworICB0ZXN0KCgpID0+IHsKKyAgICBhc3NlcnRfaWRsX2F0dHJpYnV0ZSgKKyAgICAgIHJlc3Bv
bnNlLAorICAgICAgInJlcXVlc3RJZCIsCisgICAgICAiRXhwZWN0ZWQgcmVxdWVzdElkIHRvIGJl
IGFuIElETCBhdHRyaWJ1dGUuIgorICAgICk7CisgICAgYXNzZXJ0X2VxdWFscyhyZXNwb25zZS5y
ZXF1ZXN0SWQsIHJlcXVlc3QuaWQsIGBFeHBlY3RlZCBpZHMgdG8gbWF0Y2hgKTsKKyAgICBmb3Ig
KGNvbnN0IFthdHRyaWJ1dGUsIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhleHBlY3RlZCkpIHsK
KyAgICAgIGFzc2VydF9pZGxfYXR0cmlidXRlKAorICAgICAgICByZXNwb25zZSwKKyAgICAgICAg
YXR0cmlidXRlLAorICAgICAgICBgRXhwZWN0ZWQgJHthdHRyaWJ1dGV9IHRvIGJlIGFuIElETCBh
dHRyaWJ1dGUuYAorICAgICAgKTsKKyAgICAgIGFzc2VydF9lcXVhbHMoCisgICAgICAgIHJlc3Bv
bnNlW2F0dHJpYnV0ZV0sCisgICAgICAgIHZhbHVlLAorICAgICAgICBgRXhwZWN0ZWQgcmVzcG9u
c2UgJHthdHRyaWJ1dGV9IGF0dHJpYnV0ZSB0byBiZSAke3ZhbHVlfWAKKyAgICAgICk7CisgICAg
fQorICAgIGFzc2VydF9pZGxfYXR0cmlidXRlKHJlc3BvbnNlLCAiZGV0YWlscyIpOworICAgIGFz
c2VydF9lcXVhbHModHlwZW9mIHJlc3BvbnNlLmRldGFpbHMsICJvYmplY3QiLCAiRXhwZWN0ZWQg
YW4gb2JqZWN0Iik7CisgICAgLy8gVGVzdGluZyB0aGF0IHRoaXMgZG9lcyBub3QgdGhyb3c6Cisg
ICAgcmVzcG9uc2UudG9KU09OKCk7CisgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5yZXF1ZXN0
U2hpcHBpbmcpIHsKKyAgICAgIGFzc2VydF9lcXVhbHMoCisgICAgICAgIHJlc3BvbnNlLnNoaXBw
aW5nT3B0aW9uLAorICAgICAgICAicGFzcyIsCisgICAgICAgICJyZXF1ZXN0LnNoaXBwaW5nT3B0
aW9uIG11c3QgYmUgJ3Bhc3MnIgorICAgICAgKTsKKyAgICB9IGVsc2UgeworICAgICAgYXNzZXJ0
X2VxdWFscygKKyAgICAgICAgcmVxdWVzdC5zaGlwcGluZ09wdGlvbiwKKyAgICAgICAgbnVsbCwK
KyAgICAgICAgIklmIHJlcXVlc3RTaGlwcGluZyBpcyBmYWxzeSwgcmVxdWVzdC5zaGlwcGluZ09w
dGlvbiBtdXN0IGJlIG51bGwiCisgICAgICApOworICAgICAgYXNzZXJ0X2VxdWFscygKKyAgICAg
ICAgcmVzcG9uc2Uuc2hpcHBpbmdPcHRpb24sCisgICAgICAgIG51bGwsCisgICAgICAgICJyZXF1
ZXN0LnNoaXBwaW5nT3B0aW9uIG11c3QgYmUgbnVsbCIKKyAgICAgICk7CisgICAgfQorICB9LCBi
dXR0b24udGV4dENvbnRlbnQudHJpbSgpKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324582</attachid>
            <date>2017-10-23 13:24:11 -0700</date>
            <delta_ts>2017-10-23 14:00:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178609-20171023132410.patch</filename>
            <type>text/plain</type>
            <size>96781</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzODQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTA4NWIzNDdmNGRiODkw
NmQ4MGMzYzBlMzY0MDc4YjA4MDA5NjM5NS4uNTJkZjM1Mjc4NDBmMDEyNTJkYTBjYjNmMzY2YjRk
ZTY3OWVhNzExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDE3LTEwLTIwICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbUGF5bWVudCBSZXF1ZXN0XSBS
ZXNvbHZlIFBheW1lbnRSZXF1ZXN0LnNob3coKSdzIGFjY2VwdCBwcm9taXNlIHdoZW4gYSBwYXlt
ZW50IGlzIGF1dGhvcml6ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3ODYwOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzM1NDI4MTM+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBUaGlzIHBhdGNo
IGltcGxlbWVudHMgdGhlIGxvZ2ljIGZvciByZXNvbHZpbmcgUGF5bWVudFJlcXVlc3Quc2hvdygp
J3MgYWNjZXB0IHByb21pc2Ugd2hlbgorICAgICAgICB0aGUgdXNlciBhdXRob3JpemVzIGEgcGF5
bWVudCwgYW5kIGltcGxlbWVudHMgUGF5bWVudFJlc3BvbnNlLmNvbXBsZXRlKCkuCisKKyAgICAg
ICAgVGVzdHM6IGh0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1hZGRyZXNzLWF0dHJp
YnV0ZXMtYW5kLXRvSlNPTi1tZXRob2QuaHR0cHMuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90
ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLWNvbXBsZXRlLW1ldGhvZC5odHRw
cy5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQt
cmVzcG9uc2UtbWV0aG9kTmFtZS1hdHRyaWJ1dGUuaHR0cHMuaHRtbAorICAgICAgICAgICAgICAg
aHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLXBheWVyRW1haWwtYXR0
cmlidXRlLmh0dHBzLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvcGF5bWVudHJlcXVl
c3QvcGF5bWVudC1yZXNwb25zZS1wYXllck5hbWUtYXR0cmlidXRlLmh0dHBzLmh0bWwKKyAgICAg
ICAgICAgICAgIGh0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXNwb25zZS1wYXll
clBob25lLWF0dHJpYnV0ZS5odHRwcy5odG1sCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5t
YWtlOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50Q29udGFjdC5o
OgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudC5oOgorICAgICAgICAoV2ViQ29y
ZTo6UGF5bWVudDo6UGF5bWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQYXltZW50
Ojpwa1BheW1lbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkv
UGF5bWVudENvbnRhY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRDb250YWN0OjpQYXlt
ZW50Q29udGFjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQYXltZW50Q29udGFjdDo6
cGtDb250YWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L2Nv
Y29hL1BheW1lbnRDb250YWN0Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0KToK
KyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVu
dEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlQYXltZW50SGFuZGxlcjo6
aGFzQWN0aXZlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRIYW5k
bGVyOjpBcHBsZVBheVBheW1lbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5
UGF5bWVudEhhbmRsZXI6OmRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5UGF5
bWVudEhhbmRsZXI6OnBheW1lbnRDb29yZGluYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
ZVBheVBheW1lbnRIYW5kbGVyOjpjb252ZXJ0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
ZVBheVBheW1lbnRIYW5kbGVyOjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5UGF5
bWVudEhhbmRsZXI6OmhpZGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlQYXltZW50SGFu
ZGxlcjo6Y2FuTWFrZVBheW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlQYXltZW50
SGFuZGxlcjo6Y29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydCk6CisgICAgICAg
IChXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpkaWRBdXRob3JpemVQYXltZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OmRpZFNlbGVjdFNoaXBw
aW5nTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OmRp
ZFNlbGVjdFNoaXBwaW5nQ29udGFjdCk6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9wYXlt
ZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmg6CisgICAgICAgICogTW9kdWxlcy9w
YXltZW50cmVxdWVzdC9QYXltZW50QWRkcmVzcy5oOgorICAgICAgICAqIE1vZHVsZXMvcGF5bWVu
dHJlcXVlc3QvUGF5bWVudEFkZHJlc3MuaWRsOgorICAgICAgICAqIE1vZHVsZXMvcGF5bWVudHJl
cXVlc3QvUGF5bWVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudEhhbmRs
ZXI6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50SGFu
ZGxlci5oOgorICAgICAgICAqIE1vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OnNob3cpOgorICAgICAgICAo
V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVu
dFJlcXVlc3Q6OmNhbk1ha2VQYXltZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRSZXF1
ZXN0OjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpzaGlwcGluZ0FkZHJlc3NDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpzaGlwcGluZ09wdGlvbkNoYW5nZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OmFjY2VwdCk6CisgICAgICAgIChXZWJDb3JlOjpQ
YXltZW50UmVxdWVzdDo6Y29tcGxldGUpOgorICAgICAgICAqIE1vZHVsZXMvcGF5bWVudHJlcXVl
c3QvUGF5bWVudFJlcXVlc3QuaDoKKyAgICAgICAgKiBNb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1Bh
eW1lbnRSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50UmVzcG9uc2U6OlBh
eW1lbnRSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50UmVzcG9uc2U6OmNvbXBs
ZXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXNwb25zZS5o
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Oklu
dGVybmFscyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Om1vY2tQYXltZW50Q29vcmRp
bmF0b3IgY29uc3QpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICog
dGVzdGluZy9JbnRlcm5hbHMuaWRsOgorICAgICAgICAqIHRlc3RpbmcvTW9ja1BheW1lbnQuaDog
QWRkZWQuCisgICAgICAgICogdGVzdGluZy9Nb2NrUGF5bWVudEFkZHJlc3MuaDogQWRkZWQuCisg
ICAgICAgICogdGVzdGluZy9Nb2NrUGF5bWVudEFkZHJlc3MuaWRsOiBBZGRlZC4KKyAgICAgICAg
KiB0ZXN0aW5nL01vY2tQYXltZW50Q29udGFjdC5oOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0aW5n
L01vY2tQYXltZW50Q29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1BheW1l
bnRDb29yZGluYXRvcjo6Y2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQpOgorICAgICAgICAo
V2ViQ29yZTo6TW9ja1BheW1lbnRDb29yZGluYXRvcjo6b3BlblBheW1lbnRTZXR1cCk6CisgICAg
ICAgIChXZWJDb3JlOjpkaXNwYXRjaElmU2hvd2luZyk6CisgICAgICAgIChXZWJDb3JlOjpNb2Nr
UGF5bWVudENvb3JkaW5hdG9yOjpzaG93UGF5bWVudFVJKToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlUGF5bWVudFNlc3Np
b24pOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1BheW1lbnRDb29yZGluYXRvcjo6YWJvcnRQYXlt
ZW50U2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUGF5bWVudENvb3JkaW5hdG9yOjpj
YW5jZWxQYXltZW50U2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUGF5bWVudENvb3Jk
aW5hdG9yOjpwYXltZW50Q29vcmRpbmF0b3JEZXN0cm95ZWQpOgorICAgICAgICAqIHRlc3Rpbmcv
TW9ja1BheW1lbnRDb29yZGluYXRvci5oOgorICAgICAgICAqIHRlc3RpbmcvTW9ja1BheW1lbnRD
b29yZGluYXRvci5pZGw6IEFkZGVkLgorCiAyMDE3LTEwLTIzICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgRHJvcCBjb25mdXNpbmcgRXZlbnQ6OmRpc3BhdGNoZWQo
KSBtZXRob2QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2Ug
Yi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDY1NWI1Yzg3Nzk5OTM0
MjJlZGFhNGI3ODExZDgzMWE1YzMwYjMwMmYuLmU1MzAyY2NjY2MwMTdlNDJlZTllZDVhZWEzMGRl
ZWIzNTZmZTFkNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtOTA4LDYgKzkw
OCw4IEBAIEpTX0JJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL3Rlc3RpbmcvTW9ja0NE
TUZhY3RvcnkuaWRsIFwKICAgICAkKFdlYkNvcmUpL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncy5pZGwgXAogICAgICQoV2ViQ29yZSkvdGVzdGluZy9Nb2NrUGFnZU92ZXJsYXkuaWRs
IFwKKyAgICAkKFdlYkNvcmUpL3Rlc3RpbmcvTW9ja1BheW1lbnRBZGRyZXNzLmlkbCBcCisgICAg
JChXZWJDb3JlKS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3IuaWRsIFwKICAgICAkKFdl
YkNvcmUpL3Rlc3RpbmcvVHlwZUNvbnZlcnNpb25zLmlkbCBcCiAgICAgJChXZWJDb3JlKS93b3Jr
ZXJzL0Fic3RyYWN0V29ya2VyLmlkbCBcCiAgICAgJChXZWJDb3JlKS93b3JrZXJzL0RlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlLmlkbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudENvbnRhY3QuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50Q29udGFjdC5oCmluZGV4IGViNmUyOGZjZjQ3
NjVlZWQyYjI3YzUyNDY1ZDdiMDFiOGEyMWUwM2IuLmRiYTk5ZmY4ZTA0MDM0OWQ5NDJhNDM4NDky
ODVjZTRjN2U1NjczNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvQXBwbGVQYXlQYXltZW50Q29udGFjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlQYXltZW50Q29udGFjdC5oCkBAIC0zOCw4ICszOCwxMCBAQCBzdHJ1
Y3QgQXBwbGVQYXlQYXltZW50Q29udGFjdCB7CiAgICAgU3RyaW5nIGVtYWlsQWRkcmVzczsKICAg
ICBTdHJpbmcgZ2l2ZW5OYW1lOwogICAgIFN0cmluZyBmYW1pbHlOYW1lOworICAgIFN0cmluZyBs
b2NhbGl6ZWROYW1lOwogICAgIFN0cmluZyBwaG9uZXRpY0dpdmVuTmFtZTsKICAgICBTdHJpbmcg
cGhvbmV0aWNGYW1pbHlOYW1lOworICAgIFN0cmluZyBsb2NhbGl6ZWRQaG9uZXRpY05hbWU7CiAg
ICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gYWRkcmVzc0xpbmVzOwogICAgIFN0cmlu
ZyBzdWJMb2NhbGl0eTsKICAgICBTdHJpbmcgbG9jYWxpdHk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvUGF5bWVudC5oCmluZGV4IDczZmYyYjlkZmZiMGY3ZmVmN2M0OWVmY2IwOWEy
NmFiMTBiYzhiZjEuLmM5MDU0ZDczZmQzMTAxNTg2YzE5YzQwYzg3NzY1MmM0ODI0YTkxNDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudC5oCkBAIC0zNSw3ICszNSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEFwcGxlUGF5UGF5bWVudDsKIAotY2xh
c3MgUGF5bWVudCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBQYXltZW50IHsKIHB1YmxpYzoKICAg
ICBQYXltZW50KCkgPSBkZWZhdWx0OwogCkBAIC00NCw3ICs0NCw5IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgfQogCi0gICAgQXBwbGVQYXlQYXltZW50IHRvQXBwbGVQYXlQYXltZW50KCkgY29uc3Q7
CisgICAgdmlydHVhbCB+UGF5bWVudCgpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgQXBwbGVQ
YXlQYXltZW50IHRvQXBwbGVQYXlQYXltZW50KCkgY29uc3Q7CiAKICAgICBQS1BheW1lbnQgKnBr
UGF5bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGtQYXltZW50LmdldCgpOyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvbnRhY3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvbnRhY3QuaAppbmRleCAwZTdk
NjEyN2ZhNjJiNmQxMDRjMzkzYWM1NzVmMjZlM2NiYWE1MzNmLi5lYzAxMGFjZjk3ZmMyZDdhZjNm
ZDU5ZDU5ZWU1M2ZlODBjY2RhOTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L1BheW1lbnRDb250YWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9QYXltZW50Q29udGFjdC5oCkBAIC0zNiwxNiArMzYsMTcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdHJ1Y3QgQXBwbGVQYXlQYXltZW50Q29udGFjdDsKIAotY2xhc3MgUGF5bWVu
dENvbnRhY3QgeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgUGF5bWVudENvbnRhY3QgewogcHVibGlj
OgogICAgIFBheW1lbnRDb250YWN0KCkgPSBkZWZhdWx0OwogICAgIGV4cGxpY2l0IFBheW1lbnRD
b250YWN0KFBLQ29udGFjdCAqcGtDb250YWN0KQogICAgICAgICA6IG1fcGtDb250YWN0KHBrQ29u
dGFjdCkKICAgICB7CiAgICAgfQorICAgIHZpcnR1YWwgflBheW1lbnRDb250YWN0KCkgPSBkZWZh
dWx0OwogCiAgICAgc3RhdGljIFBheW1lbnRDb250YWN0IGZyb21BcHBsZVBheVBheW1lbnRDb250
YWN0KHVuc2lnbmVkIHZlcnNpb24sIGNvbnN0IEFwcGxlUGF5UGF5bWVudENvbnRhY3QmKTsKLSAg
ICBBcHBsZVBheVBheW1lbnRDb250YWN0IHRvQXBwbGVQYXlQYXltZW50Q29udGFjdCgpIGNvbnN0
OworICAgIHZpcnR1YWwgQXBwbGVQYXlQYXltZW50Q29udGFjdCB0b0FwcGxlUGF5UGF5bWVudENv
bnRhY3QoKSBjb25zdDsKIAogICAgIFBLQ29udGFjdCAqcGtDb250YWN0KCkgY29uc3QgeyByZXR1
cm4gbV9wa0NvbnRhY3QuZ2V0KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29udGFjdENvY29hLm1tIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29udGFjdENvY29hLm1tCmluZGV4IDA3
YmJlY2ViZDNmMGE0ZTNiY2NiMDhmYTllNGFkMDAzYTYwZjNlZmUuLjBkODIyNDkwMzIwOTEyNzUy
MDQ3NzFiOWMyNWVjMTU3MGRmYjM0YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudENvbnRhY3RDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb250YWN0Q29jb2EubW0KQEAgLTE4
OSwxMCArMTg5LDEyIEBAIHN0YXRpYyBBcHBsZVBheVBheW1lbnRDb250YWN0IGNvbnZlcnQoUEtD
b250YWN0ICpjb250YWN0KQogICAgIE5TUGVyc29uTmFtZUNvbXBvbmVudHMgKm5hbWUgPSBjb250
YWN0Lm5hbWU7CiAgICAgcmVzdWx0LmdpdmVuTmFtZSA9IG5hbWUuZ2l2ZW5OYW1lOwogICAgIHJl
c3VsdC5mYW1pbHlOYW1lID0gbmFtZS5mYW1pbHlOYW1lOworICAgIHJlc3VsdC5sb2NhbGl6ZWRO
YW1lID0gW05TUGVyc29uTmFtZUNvbXBvbmVudHNGb3JtYXR0ZXIgbG9jYWxpemVkU3RyaW5nRnJv
bVBlcnNvbk5hbWVDb21wb25lbnRzOm5hbWUgc3R5bGU6TlNQZXJzb25OYW1lQ29tcG9uZW50c0Zv
cm1hdHRlclN0eWxlRGVmYXVsdCBvcHRpb25zOjBdOwogCiAgICAgTlNQZXJzb25OYW1lQ29tcG9u
ZW50cyAqcGhvbmV0aWNOYW1lID0gbmFtZS5waG9uZXRpY1JlcHJlc2VudGF0aW9uOwogICAgIHJl
c3VsdC5waG9uZXRpY0dpdmVuTmFtZSA9IHBob25ldGljTmFtZS5naXZlbk5hbWU7CiAgICAgcmVz
dWx0LnBob25ldGljRmFtaWx5TmFtZSA9IHBob25ldGljTmFtZS5mYW1pbHlOYW1lOworICAgIHJl
c3VsdC5sb2NhbGl6ZWRQaG9uZXRpY05hbWUgPSBbTlNQZXJzb25OYW1lQ29tcG9uZW50c0Zvcm1h
dHRlciBsb2NhbGl6ZWRTdHJpbmdGcm9tUGVyc29uTmFtZUNvbXBvbmVudHM6bmFtZSBzdHlsZTpO
U1BlcnNvbk5hbWVDb21wb25lbnRzRm9ybWF0dGVyU3R5bGVEZWZhdWx0IG9wdGlvbnM6TlNQZXJz
b25OYW1lQ29tcG9uZW50c0Zvcm1hdHRlclBob25ldGljXTsKIAogICAgIENOUG9zdGFsQWRkcmVz
cyAqcG9zdGFsQWRkcmVzcyA9IGNvbnRhY3QucG9zdGFsQWRkcmVzczsKICAgICBpZiAocG9zdGFs
QWRkcmVzcy5zdHJlZXQubGVuZ3RoKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBh
eW1lbnRIYW5kbGVyLmNwcAppbmRleCAxYjg5ZGUwMDdjMDkzY2Y3NDk2OTU1YTQ3NjAwOGVmN2Yy
ZDkwOWU1Li44YTYwNWFjMzZjYmU2MzVkOGZkM2UzYWY4ZTgxMGUzNDA5YmNiOWE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxl
UGF5UGF5bWVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5jcHAKQEAgLTMxLDE2ICsz
MSwyMSBAQAogI2luY2x1ZGUgIkFwcGxlUGF5Q29udGFjdEZpZWxkLmgiCiAjaW5jbHVkZSAiQXBw
bGVQYXlNZXJjaGFudENhcGFiaWxpdHkuaCIKICNpbmNsdWRlICJBcHBsZVBheU1lcmNoYW50VmFs
aWRhdGlvbkV2ZW50LmgiCisjaW5jbHVkZSAiQXBwbGVQYXlQYXltZW50LmgiCiAjaW5jbHVkZSAi
QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJKU0FwcGxlUGF5UGF5bWVudC5oIgog
I2luY2x1ZGUgIkpTQXBwbGVQYXlSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiTGlua0ljb25Db2xsZWN0
b3IuaCIKICNpbmNsdWRlICJNYWluRnJhbWUuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVk
ZSAiUGF5bWVudC5oIgorI2luY2x1ZGUgIlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLmgiCiAj
aW5jbHVkZSAiUGF5bWVudENvbnRhY3QuaCIKICNpbmNsdWRlICJQYXltZW50Q29vcmRpbmF0b3Iu
aCIKICNpbmNsdWRlICJQYXltZW50UmVxdWVzdFZhbGlkYXRvci5oIgorI2luY2x1ZGUgIlBheW1l
bnRSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTYxLDEyICs2NiwyNSBAQCBzdGF0aWMgaW5saW5lIFBheW1lbnRDb29yZGluYXRvciYg
cGF5bWVudENvb3JkaW5hdG9yKERvY3VtZW50JiBkb2N1bWVudCkKIAogYm9vbCBBcHBsZVBheVBh
eW1lbnRIYW5kbGVyOjpoYXNBY3RpdmVTZXNzaW9uKERvY3VtZW50JiBkb2N1bWVudCkKIHsKLSAg
ICByZXR1cm4gcGF5bWVudENvb3JkaW5hdG9yKGRvY3VtZW50KS5oYXNBY3RpdmVTZXNzaW9uKCk7
CisgICAgcmV0dXJuIFdlYkNvcmU6OnBheW1lbnRDb29yZGluYXRvcihkb2N1bWVudCkuaGFzQWN0
aXZlU2Vzc2lvbigpOwogfQogCi1BcHBsZVBheVBheW1lbnRIYW5kbGVyOjpBcHBsZVBheVBheW1l
bnRIYW5kbGVyKFBheW1lbnRSZXF1ZXN0JiBwYXltZW50UmVxdWVzdCkKLSAgICA6IG1fcGF5bWVu
dFJlcXVlc3QgeyBwYXltZW50UmVxdWVzdCB9CitBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpBcHBs
ZVBheVBheW1lbnRIYW5kbGVyKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgUGF5bWVudFJlcXVl
c3Q6Ok1ldGhvZElkZW50aWZpZXImIGlkZW50aWZpZXIsIFBheW1lbnRSZXF1ZXN0JiBwYXltZW50
UmVxdWVzdCkKKyAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsgJmRvY3VtZW50IH0K
KyAgICAsIG1faWRlbnRpZmllciB7IGlkZW50aWZpZXIgfQorICAgICwgbV9wYXltZW50UmVxdWVz
dCB7IHBheW1lbnRSZXF1ZXN0IH0KIHsKKyAgICBBU1NFUlQoaGFuZGxlc0lkZW50aWZpZXIobV9p
ZGVudGlmaWVyKSk7Cit9CisKK0RvY3VtZW50JiBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpkb2N1
bWVudCgpCit7CisgICAgcmV0dXJuIGRvd25jYXN0PERvY3VtZW50Pigqc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKTsKK30KKworUGF5bWVudENvb3JkaW5hdG9yJiBBcHBsZVBheVBheW1lbnRIYW5k
bGVyOjpwYXltZW50Q29vcmRpbmF0b3IoKQoreworICAgIHJldHVybiBXZWJDb3JlOjpwYXltZW50
Q29vcmRpbmF0b3IoZG9jdW1lbnQoKSk7CiB9CiAKIHN0YXRpYyBFeGNlcHRpb25Pcjx2b2lkPiB2
YWxpZGF0ZShjb25zdCBQYXltZW50Q3VycmVuY3lBbW91bnQmIGFtb3VudCwgY29uc3QgU3RyaW5n
JiBleHBlY3RlZEN1cnJlbmN5KQpAQCAtMTQwLDEwICsxNTgsMTEgQEAgc3RhdGljIEV4Y2VwdGlv
bk9yPEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZD4gY29udmVy
dEFuZFZhbGkKICAgICByZXR1cm4geyBXVEZNb3ZlKHJlc3VsdCkgfTsKIH0KIAotRXhjZXB0aW9u
T3I8dm9pZD4gQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6Y29udmVydERhdGEoSlNDOjpFeGVjU3Rh
dGUmIGV4ZWNTdGF0ZSwgSlNDOjpKU1ZhbHVlJiYgZGF0YSkKK0V4Y2VwdGlvbk9yPHZvaWQ+IEFw
cGxlUGF5UGF5bWVudEhhbmRsZXI6OmNvbnZlcnREYXRhKEpTQzo6SlNWYWx1ZSYmIGRhdGEpCiB7
Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjU3RhdGUudm0o
KSk7Ci0gICAgYXV0byBhcHBsZVBheVJlcXVlc3QgPSBjb252ZXJ0RGljdGlvbmFyeTxBcHBsZVBh
eVJlcXVlc3Q+KGV4ZWNTdGF0ZSwgV1RGTW92ZShkYXRhKSk7CisgICAgYXV0byYgY29udGV4dCA9
ICpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRShjb250ZXh0LnZtKCkpOworICAgIGF1dG8gYXBwbGVQYXlSZXF1ZXN0ID0g
Y29udmVydERpY3Rpb25hcnk8QXBwbGVQYXlSZXF1ZXN0PigqY29udGV4dC5leGVjU3RhdGUoKSwg
V1RGTW92ZShkYXRhKSk7CiAgICAgaWYgKHRocm93U2NvcGUuZXhjZXB0aW9uKCkpCiAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH07CiAKQEAgLTE1MSw3
ICsxNzAsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpjb252
ZXJ0RGF0YShKU0M6OkV4ZWNTdGF0ZSYgZXhlY1N0YXRlLAogICAgIHJldHVybiB7IH07CiB9CiAK
LUV4Y2VwdGlvbk9yPHZvaWQ+IEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OnNob3coRG9jdW1lbnQm
IGRvY3VtZW50KQorRXhjZXB0aW9uT3I8dm9pZD4gQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6c2hv
dygpCiB7CiAgICAgYXV0byB2YWxpZGF0ZWRSZXF1ZXN0ID0gY29udmVydEFuZFZhbGlkYXRlKG1f
YXBwbGVQYXlSZXF1ZXN0LT52ZXJzaW9uLCAqbV9hcHBsZVBheVJlcXVlc3QpOwogICAgIGlmICh2
YWxpZGF0ZWRSZXF1ZXN0Lmhhc0V4Y2VwdGlvbigpKQpAQCAtMjAzLDE2ICsyMjIsMTYgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6c2hvdyhEb2N1bWVudCYgZG9j
dW1lbnQpCiAgICAgICAgIHJldHVybiBleGNlcHRpb24ucmVsZWFzZUV4Y2VwdGlvbigpOwogCiAg
ICAgVmVjdG9yPFVSTD4gbGlua0ljb25VUkxzOwotICAgIGZvciAoYXV0byYgaWNvbiA6IExpbmtJ
Y29uQ29sbGVjdG9yIHsgZG9jdW1lbnQgfS5pY29uc09mVHlwZXMoeyBMaW5rSWNvblR5cGU6OlRv
dWNoSWNvbiwgTGlua0ljb25UeXBlOjpUb3VjaFByZWNvbXBvc2VkSWNvbiB9KSkKKyAgICBmb3Ig
KGF1dG8mIGljb24gOiBMaW5rSWNvbkNvbGxlY3RvciB7IGRvY3VtZW50KCkgfS5pY29uc09mVHlw
ZXMoeyBMaW5rSWNvblR5cGU6OlRvdWNoSWNvbiwgTGlua0ljb25UeXBlOjpUb3VjaFByZWNvbXBv
c2VkSWNvbiB9KSkKICAgICAgICAgbGlua0ljb25VUkxzLmFwcGVuZChpY29uLnVybCk7CiAKLSAg
ICBwYXltZW50Q29vcmRpbmF0b3IoZG9jdW1lbnQpLmJlZ2luUGF5bWVudFNlc3Npb24oKnRoaXMs
IGRvY3VtZW50LnVybCgpLCBsaW5rSWNvblVSTHMsIHJlcXVlc3QpOworICAgIHBheW1lbnRDb29y
ZGluYXRvcigpLmJlZ2luUGF5bWVudFNlc3Npb24oKnRoaXMsIGRvY3VtZW50KCkudXJsKCksIGxp
bmtJY29uVVJMcywgcmVxdWVzdCk7CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBBcHBsZVBh
eVBheW1lbnRIYW5kbGVyOjpoaWRlKERvY3VtZW50JiBkb2N1bWVudCkKK3ZvaWQgQXBwbGVQYXlQ
YXltZW50SGFuZGxlcjo6aGlkZSgpCiB7Ci0gICAgcGF5bWVudENvb3JkaW5hdG9yKGRvY3VtZW50
KS5hYm9ydFBheW1lbnRTZXNzaW9uKCk7CisgICAgcGF5bWVudENvb3JkaW5hdG9yKCkuYWJvcnRQ
YXltZW50U2Vzc2lvbigpOwogfQogCiBzdGF0aWMgYm9vbCBzaG91bGREaXNjbG9zZUFwcGxlUGF5
Q2FwYWJpbGl0eShEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC0yMjQsMTQgKzI0MywzNiBAQCBzdGF0
aWMgYm9vbCBzaG91bGREaXNjbG9zZUFwcGxlUGF5Q2FwYWJpbGl0eShEb2N1bWVudCYgZG9jdW1l
bnQpCiAgICAgcmV0dXJuIGRvY3VtZW50LnNldHRpbmdzKCkuYXBwbGVQYXlDYXBhYmlsaXR5RGlz
Y2xvc3VyZUFsbG93ZWQoKTsKIH0KIAotdm9pZCBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpjYW5N
YWtlUGF5bWVudChEb2N1bWVudCYgZG9jdW1lbnQsIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6Y2FuTWFr
ZVBheW1lbnQoRnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAg
ICBpZiAoIXNob3VsZERpc2Nsb3NlQXBwbGVQYXlDYXBhYmlsaXR5KGRvY3VtZW50KSkgewotICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihwYXltZW50Q29vcmRpbmF0b3IoZG9jdW1lbnQpLmNhbk1h
a2VQYXltZW50cygpKTsKKyAgICBpZiAoIXNob3VsZERpc2Nsb3NlQXBwbGVQYXlDYXBhYmlsaXR5
KGRvY3VtZW50KCkpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHBheW1lbnRDb29yZGlu
YXRvcigpLmNhbk1ha2VQYXltZW50cygpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IHBheW1lbnRDb29yZGluYXRvcihkb2N1bWVudCkuY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNh
cmQobV9hcHBsZVBheVJlcXVlc3QtPm1lcmNoYW50SWRlbnRpZmllciwgZG9jdW1lbnQuZG9tYWlu
KCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBwYXltZW50Q29vcmRpbmF0b3Io
KS5jYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChtX2FwcGxlUGF5UmVxdWVzdC0+bWVyY2hh
bnRJZGVudGlmaWVyLCBkb2N1bWVudCgpLmRvbWFpbigpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7Cit9CisKK3ZvaWQgQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6Y29tcGxldGUoc3RkOjpv
cHRpb25hbDxQYXltZW50Q29tcGxldGU+JiYgcmVzdWx0KQoreworICAgIGlmICghcmVzdWx0KSB7
CisgICAgICAgIHBheW1lbnRDb29yZGluYXRvcigpLmNvbXBsZXRlUGF5bWVudFNlc3Npb24oc3Rk
OjpudWxsb3B0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFBheW1lbnRBdXRob3Jp
emF0aW9uUmVzdWx0IGF1dGhvcml6YXRpb25SZXN1bHQ7CisgICAgc3dpdGNoICgqcmVzdWx0KSB7
CisgICAgY2FzZSBQYXltZW50Q29tcGxldGU6OkZhaWw6CisgICAgY2FzZSBQYXltZW50Q29tcGxl
dGU6OlVua25vd246CisgICAgICAgIGF1dGhvcml6YXRpb25SZXN1bHQuc3RhdHVzID0gUGF5bWVu
dEF1dGhvcml6YXRpb25TdGF0dXM6OkZhaWx1cmU7CisgICAgICAgIGF1dGhvcml6YXRpb25SZXN1
bHQuZXJyb3JzLmFwcGVuZCh7IFBheW1lbnRFcnJvcjo6Q29kZTo6VW5rbm93biwgeyB9LCBzdGQ6
Om51bGxvcHQgfSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUGF5bWVudENvbXBsZXRlOjpT
dWNjZXNzOgorICAgICAgICBhdXRob3JpemF0aW9uUmVzdWx0LnN0YXR1cyA9IFBheW1lbnRBdXRo
b3JpemF0aW9uU3RhdHVzOjpTdWNjZXNzOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBw
YXltZW50Q29vcmRpbmF0b3IoKS5jb21wbGV0ZVBheW1lbnRTZXNzaW9uKFdURk1vdmUoYXV0aG9y
aXphdGlvblJlc3VsdCkpOwogfQogCiB2b2lkIEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OnZhbGlk
YXRlTWVyY2hhbnQoY29uc3QgVVJMJiB2YWxpZGF0aW9uVVJMKQpAQCAtMjQwLDYgKzI4MSwzMCBA
QCB2b2lkIEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OnZhbGlkYXRlTWVyY2hhbnQoY29uc3QgVVJM
JiB2YWxpZGF0aW9uVVJMKQogICAgICAgICBtX3BheW1lbnRSZXF1ZXN0LT5kaXNwYXRjaEV2ZW50
KEFwcGxlUGF5TWVyY2hhbnRWYWxpZGF0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuYXBw
bGVwYXl2YWxpZGF0ZW1lcmNoYW50RXZlbnQsIHZhbGlkYXRpb25VUkwpLmdldCgpKTsKIH0KIAor
c3RhdGljIFJlZjxQYXltZW50QWRkcmVzcz4gY29udmVydChjb25zdCBBcHBsZVBheVBheW1lbnRD
b250YWN0JiBjb250YWN0KQoreworICAgIHJldHVybiBQYXltZW50QWRkcmVzczo6Y3JlYXRlKGNv
bnRhY3QuY291bnRyeUNvZGUsIGNvbnRhY3QuYWRkcmVzc0xpbmVzLnZhbHVlX29yKFZlY3RvcjxT
dHJpbmc+KCkpLCBjb250YWN0LmFkbWluaXN0cmF0aXZlQXJlYSwgY29udGFjdC5sb2NhbGl0eSwg
Y29udGFjdC5zdWJMb2NhbGl0eSwgY29udGFjdC5wb3N0YWxDb2RlLCBTdHJpbmcoKSwgU3RyaW5n
KCksIFN0cmluZygpLCBjb250YWN0LmxvY2FsaXplZE5hbWUsIGNvbnRhY3QucGhvbmVOdW1iZXIp
OworfQorCit2b2lkIEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OmRpZEF1dGhvcml6ZVBheW1lbnQo
Y29uc3QgUGF5bWVudCYgcGF5bWVudCkKK3sKKyAgICBhdXRvIGFwcGxlUGF5UGF5bWVudCA9IHBh
eW1lbnQudG9BcHBsZVBheVBheW1lbnQoKTsKKyAgICBhdXRvJiBleGVjU3RhdGUgPSAqZG9jdW1l
bnQoKS5leGVjU3RhdGUoKTsKKyAgICBhdXRvIGRldGFpbHMgPSBKU0M6OlN0cm9uZzxKU0M6OkpT
T2JqZWN0PiB7IGV4ZWNTdGF0ZS52bSgpLCBhc09iamVjdCh0b0pTPElETERpY3Rpb25hcnk8QXBw
bGVQYXlQYXltZW50Pj4oZXhlY1N0YXRlLCAqSlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihleGVjU3RhdGUubGV4aWNhbEdsb2JhbE9iamVjdCgpKSwgYXBwbGVQYXlQYXltZW50KSkgfTsK
KyAgICBjb25zdCBhdXRvJiBzaGlwcGluZ0NvbnRhY3QgPSBhcHBsZVBheVBheW1lbnQuc2hpcHBp
bmdDb250YWN0LnZhbHVlX29yKEFwcGxlUGF5UGF5bWVudENvbnRhY3QoKSk7CisgICAgbV9wYXlt
ZW50UmVxdWVzdC0+YWNjZXB0KFdURjo6Z2V0PFVSTD4obV9pZGVudGlmaWVyKS5zdHJpbmcoKSwg
V1RGTW92ZShkZXRhaWxzKSwgY29udmVydChzaGlwcGluZ0NvbnRhY3QpLCBzaGlwcGluZ0NvbnRh
Y3QubG9jYWxpemVkTmFtZSwgc2hpcHBpbmdDb250YWN0LmVtYWlsQWRkcmVzcywgc2hpcHBpbmdD
b250YWN0LnBob25lTnVtYmVyKTsKK30KKwordm9pZCBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpk
aWRTZWxlY3RTaGlwcGluZ01ldGhvZChjb25zdCBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVz
dDo6U2hpcHBpbmdNZXRob2QmIHNoaXBwaW5nTWV0aG9kKQoreworICAgIG1fcGF5bWVudFJlcXVl
c3QtPnNoaXBwaW5nT3B0aW9uQ2hhbmdlZChzaGlwcGluZ01ldGhvZC5pZGVudGlmaWVyKTsKK30K
Kwordm9pZCBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpkaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3Qo
Y29uc3QgUGF5bWVudENvbnRhY3QmIHNoaXBwaW5nQ29udGFjdCkKK3sKKyAgICBtX3BheW1lbnRS
ZXF1ZXN0LT5zaGlwcGluZ0FkZHJlc3NDaGFuZ2VkKGNvbnZlcnQoc2hpcHBpbmdDb250YWN0LnRv
QXBwbGVQYXlQYXltZW50Q29udGFjdCgpKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVkpICYmIEVOQUJMRShQQVlNRU5UX1JFUVVFU1Qp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1
ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5oCmluZGV4IDdmNzE5
ZWJhNDAyZDAzZWYwMjJlZWU3YTNjNjQ5NmQxNDBkY2EyMTkuLjU1ZTY3ZTZmNzhlOWYzOTk1NDFm
MDFkNjIzZTU2YmJjOTk1OTY3ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXlt
ZW50SGFuZGxlci5oCkBAIC0yOCwzOCArMjgsNDUgQEAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKSAm
JiBFTkFCTEUoUEFZTUVOVF9SRVFVRVNUKQogCiAjaW5jbHVkZSAiQXBwbGVQYXlSZXF1ZXN0Lmgi
CisjaW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJQYXlt
ZW50SGFuZGxlci5oIgorI2luY2x1ZGUgIlBheW1lbnRSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUGF5
bWVudFNlc3Npb24uaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3
dGYvUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgUGF5bWVudFJlcXVlc3Q7
CitjbGFzcyBQYXltZW50Q29vcmRpbmF0b3I7CiAKLWNsYXNzIEFwcGxlUGF5UGF5bWVudEhhbmRs
ZXIgZmluYWwgOiBwdWJsaWMgUGF5bWVudEhhbmRsZXIsIHB1YmxpYyBQYXltZW50U2Vzc2lvbiB7
CitjbGFzcyBBcHBsZVBheVBheW1lbnRIYW5kbGVyIGZpbmFsIDogcHVibGljIFBheW1lbnRIYW5k
bGVyLCBwdWJsaWMgUGF5bWVudFNlc3Npb24sIHByaXZhdGUgQ29udGV4dERlc3RydWN0aW9uT2Jz
ZXJ2ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBib29sIGhhbmRsZXNJZGVudGlmaWVyKGNvbnN0
IFBheW1lbnRSZXF1ZXN0OjpNZXRob2RJZGVudGlmaWVyJik7CiAgICAgc3RhdGljIGJvb2wgaGFz
QWN0aXZlU2Vzc2lvbihEb2N1bWVudCYpOwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBQ
YXltZW50SGFuZGxlcjsKLSAgICBleHBsaWNpdCBBcHBsZVBheVBheW1lbnRIYW5kbGVyKFBheW1l
bnRSZXF1ZXN0Jik7CisgICAgZXhwbGljaXQgQXBwbGVQYXlQYXltZW50SGFuZGxlcihEb2N1bWVu
dCYsIGNvbnN0IFBheW1lbnRSZXF1ZXN0OjpNZXRob2RJZGVudGlmaWVyJiwgUGF5bWVudFJlcXVl
c3QmKTsKKworICAgIERvY3VtZW50JiBkb2N1bWVudCgpOworICAgIFBheW1lbnRDb29yZGluYXRv
ciYgcGF5bWVudENvb3JkaW5hdG9yKCk7CiAKICAgICAvLyBQYXltZW50SGFuZGxlcgotICAgIEV4
Y2VwdGlvbk9yPHZvaWQ+IGNvbnZlcnREYXRhKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVl
JiYpIGZpbmFsOwotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNob3coRG9jdW1lbnQmKSBmaW5hbDsK
LSAgICB2b2lkIGhpZGUoRG9jdW1lbnQmKSBmaW5hbDsKLSAgICB2b2lkIGNhbk1ha2VQYXltZW50
KERvY3VtZW50JiwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KSBmaW5hbDsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBjb252ZXJ0RGF0YShKU0M6OkpTVmFsdWUm
JikgZmluYWw7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2hvdygpIGZpbmFsOworICAgIHZvaWQg
aGlkZSgpIGZpbmFsOworICAgIHZvaWQgY2FuTWFrZVBheW1lbnQoV1RGOjpGdW5jdGlvbjx2b2lk
KGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbDsKKyAgICB2b2lkIGNvbXBsZXRlKHN0
ZDo6b3B0aW9uYWw8UGF5bWVudENvbXBsZXRlPiYmKSBmaW5hbDsKIAogICAgIC8vIFBheW1lbnRT
ZXNzaW9uCiAgICAgdm9pZCB2YWxpZGF0ZU1lcmNoYW50KGNvbnN0IFVSTCYpIGZpbmFsOwotICAg
IHZvaWQgZGlkQXV0aG9yaXplUGF5bWVudChjb25zdCBQYXltZW50JikgZmluYWwgeyB9Ci0gICAg
dm9pZCBkaWRTZWxlY3RTaGlwcGluZ01ldGhvZChjb25zdCBBcHBsZVBheVNlc3Npb25QYXltZW50
UmVxdWVzdDo6U2hpcHBpbmdNZXRob2QmKSBmaW5hbCB7IH0KLSAgICB2b2lkIGRpZFNlbGVjdFNo
aXBwaW5nQ29udGFjdChjb25zdCBQYXltZW50Q29udGFjdCYpIGZpbmFsIHsgfQorICAgIHZvaWQg
ZGlkQXV0aG9yaXplUGF5bWVudChjb25zdCBQYXltZW50JikgZmluYWw7CisgICAgdm9pZCBkaWRT
ZWxlY3RTaGlwcGluZ01ldGhvZChjb25zdCBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6
U2hpcHBpbmdNZXRob2QmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFNlbGVjdFNoaXBwaW5nQ29udGFj
dChjb25zdCBQYXltZW50Q29udGFjdCYpIGZpbmFsOwogICAgIHZvaWQgZGlkU2VsZWN0UGF5bWVu
dE1ldGhvZChjb25zdCBQYXltZW50TWV0aG9kJikgZmluYWwgeyB9CiAgICAgdm9pZCBkaWRDYW5j
ZWxQYXltZW50U2Vzc2lvbigpIGZpbmFsIHsgfQogCisgICAgUGF5bWVudFJlcXVlc3Q6Ok1ldGhv
ZElkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIFJlZjxQYXltZW50UmVxdWVzdD4gbV9wYXlt
ZW50UmVxdWVzdDsKICAgICBzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5UmVxdWVzdD4gbV9hcHBsZVBh
eVJlcXVlc3Q7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50
cmVxdWVzdC9QYXltZW50QWRkcmVzcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1l
bnRyZXF1ZXN0L1BheW1lbnRBZGRyZXNzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYmU2ODE3YjlhYjg3ZDlm
NmFmYzljOTVjNzFhOWFiOTJlZDg2MjA5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50QWRkcmVzcy5jcHAKQEAgLTAsMCArMSw1
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQYXltZW50
QWRkcmVzcy5oIgorCisjaWYgRU5BQkxFKFBBWU1FTlRfUkVRVUVTVCkKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitQYXltZW50QWRkcmVzczo6UGF5bWVudEFkZHJlc3MoY29uc3QgU3RyaW5nJiBj
b3VudHJ5LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWRkcmVzc0xpbmUsIGNvbnN0IFN0cmluZyYg
cmVnaW9uLCBjb25zdCBTdHJpbmcmIGNpdHksIGNvbnN0IFN0cmluZyYgZGVwZW5kZW50TG9jYWxp
dHksIGNvbnN0IFN0cmluZyYgcG9zdGFsQ29kZSwgY29uc3QgU3RyaW5nJiBzb3J0aW5nQ29kZSwg
Y29uc3QgU3RyaW5nJiBsYW5ndWFnZUNvZGUsIGNvbnN0IFN0cmluZyYgb3JnYW5pemF0aW9uLCBj
b25zdCBTdHJpbmcmIHJlY2lwaWVudCwgY29uc3QgU3RyaW5nJiBwaG9uZSkKKyAgICA6IG1fY291
bnRyeSB7IGNvdW50cnkgfQorICAgICwgbV9hZGRyZXNzTGluZSB7IGFkZHJlc3NMaW5lIH0KKyAg
ICAsIG1fcmVnaW9uIHsgcmVnaW9uIH0KKyAgICAsIG1fY2l0eSB7IGNpdHkgfQorICAgICwgbV9k
ZXBlbmRlbnRMb2NhbGl0eSB7IGRlcGVuZGVudExvY2FsaXR5IH0KKyAgICAsIG1fcG9zdGFsQ29k
ZSB7IHBvc3RhbENvZGUgfQorICAgICwgbV9zb3J0aW5nQ29kZSB7IHNvcnRpbmdDb2RlIH0KKyAg
ICAsIG1fbGFuZ3VhZ2VDb2RlIHsgbGFuZ3VhZ2VDb2RlIH0KKyAgICAsIG1fb3JnYW5pemF0aW9u
IHsgb3JnYW5pemF0aW9uIH0KKyAgICAsIG1fcmVjaXBpZW50IHsgcmVjaXBpZW50IH0KKyAgICAs
IG1fcGhvbmUgeyBwaG9uZSB9Cit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShQQVlNRU5UX1JFUVVFU1QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRBZGRyZXNzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRBZGRyZXNzLmgKaW5kZXggNDJjNzc0NWIx
OTY0YjBiNTMzNzU2ZWI2ZDA0N2M4MTQ2NTdiNGMzMS4uYzEzZTIwM2ZiOWRiNmFkZGE1ZjFkZjlh
ZDI4MWY2NTFkYjZhZGIwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXlt
ZW50cmVxdWVzdC9QYXltZW50QWRkcmVzcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
cGF5bWVudHJlcXVlc3QvUGF5bWVudEFkZHJlc3MuaApAQCAtMzUsNiArMzUsMTEgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBQYXltZW50QWRkcmVzcyBmaW5hbCA6IHB1YmxpYyBSZWZD
b3VudGVkPFBheW1lbnRBZGRyZXNzPiB7CiBwdWJsaWM6CisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
Li4uIEFyZ3M+IHN0YXRpYyBSZWY8UGF5bWVudEFkZHJlc3M+IGNyZWF0ZShBcmdzJiYuLi4gYXJn
cykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBheW1lbnRBZGRyZXNzKHN0
ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworICAgIH0KKwogICAgIGNvbnN0IFN0cmluZyYg
Y291bnRyeSgpIGNvbnN0IHsgcmV0dXJuIG1fY291bnRyeTsgfQogICAgIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBhZGRyZXNzTGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWRkcmVzc0xpbmU7IH0KICAg
ICBjb25zdCBTdHJpbmcmIHJlZ2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaW9uOyB9CkBAIC00
OCw2ICs1Myw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIHBob25lKCkgY29uc3QgeyBy
ZXR1cm4gbV9waG9uZTsgfQogCiBwcml2YXRlOgorICAgIFBheW1lbnRBZGRyZXNzKGNvbnN0IFN0
cmluZyYgY291bnRyeSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFkZHJlc3NMaW5lLCBjb25zdCBT
dHJpbmcmIHJlZ2lvbiwgY29uc3QgU3RyaW5nJiBjaXR5LCBjb25zdCBTdHJpbmcmIGRlcGVuZGVu
dExvY2FsaXR5LCBjb25zdCBTdHJpbmcmIHBvc3RhbENvZGUsIGNvbnN0IFN0cmluZyYgc29ydGlu
Z0NvZGUsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2VDb2RlLCBjb25zdCBTdHJpbmcmIG9yZ2FuaXph
dGlvbiwgY29uc3QgU3RyaW5nJiByZWNpcGllbnQsIGNvbnN0IFN0cmluZyYgcGhvbmUpOworCiAg
ICAgU3RyaW5nIG1fY291bnRyeTsKICAgICBWZWN0b3I8U3RyaW5nPiBtX2FkZHJlc3NMaW5lOwog
ICAgIFN0cmluZyBtX3JlZ2lvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
cGF5bWVudHJlcXVlc3QvUGF5bWVudEFkZHJlc3MuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wYXltZW50cmVxdWVzdC9QYXltZW50QWRkcmVzcy5pZGwKaW5kZXggNzIxMTZmY2U4MGNmYThi
MWZjNTU5M2Y5Yzg1ZGYzYTM1MDg4YzQxMy4uZTI2Yjc1N2Q5MzQ3NDQ3ZjI0M2YwYWVmMzAwNzE1
ODg3NTYxN2JhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVx
dWVzdC9QYXltZW50QWRkcmVzcy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXlt
ZW50cmVxdWVzdC9QYXltZW50QWRkcmVzcy5pZGwKQEAgLTI2LDYgKzI2LDcgQEAKIFsKICAgICBD
b25kaXRpb25hbD1QQVlNRU5UX1JFUVVFU1QsCiAgICAgRW5hYmxlZEJ5U2V0dGluZz1QYXltZW50
UmVxdWVzdCwKKyAgICBFeHBvc2VkPVdpbmRvdywKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRh
YmxlLAogICAgIFNlY3VyZUNvbnRleHQKIF0gaW50ZXJmYWNlIFBheW1lbnRBZGRyZXNzIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudEhh
bmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50
SGFuZGxlci5jcHAKaW5kZXggZTdlY2QxNDM2MmIwMWYxODlmNTQ2ZjA4YTJlODNhZjEyOTM1MmEx
MS4uZjM2NTU3NTYzOGE1YjQ0Nzk3ODg5ODg3YjU3NGJhMDkzNzcyZDRhYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50SGFuZGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50SGFuZGxl
ci5jcHAKQEAgLTM0LDEyICszNCwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0
cjxQYXltZW50SGFuZGxlcj4gUGF5bWVudEhhbmRsZXI6OmNyZWF0ZShQYXltZW50UmVxdWVzdCYg
cGF5bWVudFJlcXVlc3QsIGNvbnN0IFBheW1lbnRSZXF1ZXN0OjpNZXRob2RJZGVudGlmaWVyJiBp
ZGVudGlmaWVyKQorUmVmUHRyPFBheW1lbnRIYW5kbGVyPiBQYXltZW50SGFuZGxlcjo6Y3JlYXRl
KERvY3VtZW50JiBkb2N1bWVudCwgUGF5bWVudFJlcXVlc3QmIHBheW1lbnRSZXF1ZXN0LCBjb25z
dCBQYXltZW50UmVxdWVzdDo6TWV0aG9kSWRlbnRpZmllciYgaWRlbnRpZmllcikKIHsKICNpZiBF
TkFCTEUoQVBQTEVfUEFZKQogICAgIGlmIChBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpoYW5kbGVz
SWRlbnRpZmllcihpZGVudGlmaWVyKSkKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBcHBs
ZVBheVBheW1lbnRIYW5kbGVyKHBheW1lbnRSZXF1ZXN0KSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgQXBwbGVQYXlQYXltZW50SGFuZGxlcihkb2N1bWVudCwgaWRlbnRpZmllciwgcGF5
bWVudFJlcXVlc3QpKTsKICNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGRvY3VtZW50KTsKICAgICBV
TlVTRURfUEFSQU0ocGF5bWVudFJlcXVlc3QpOwogICAgIFVOVVNFRF9QQVJBTShpZGVudGlmaWVy
KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVx
dWVzdC9QYXltZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVx
dWVzdC9QYXltZW50SGFuZGxlci5oCmluZGV4IDQ0ODc2MDcwZDllMzU1Mzg2OTFlM2RmMzY1MmU0
YTBiNTIxZjA0ZGMuLjgyNzIwMjY1MzdjZTllYmJmOWQ3YWU2NzI3MDU1YTc5YWM3NjRjNWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudEhh
bmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1l
bnRIYW5kbGVyLmgKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4K
IAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBKU1ZhbHVlOwogfQog
CkBAIC00MiwxMyArNDEsMTQgQEAgY2xhc3MgRG9jdW1lbnQ7CiAKIGNsYXNzIFBheW1lbnRIYW5k
bGVyIDogcHVibGljIHZpcnR1YWwgUGF5bWVudFNlc3Npb25CYXNlIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmUHRyPFBheW1lbnRIYW5kbGVyPiBjcmVhdGUoUGF5bWVudFJlcXVlc3QmLCBjb25z
dCBQYXltZW50UmVxdWVzdDo6TWV0aG9kSWRlbnRpZmllciYpOworICAgIHN0YXRpYyBSZWZQdHI8
UGF5bWVudEhhbmRsZXI+IGNyZWF0ZShEb2N1bWVudCYsIFBheW1lbnRSZXF1ZXN0JiwgY29uc3Qg
UGF5bWVudFJlcXVlc3Q6Ok1ldGhvZElkZW50aWZpZXImKTsKICAgICBzdGF0aWMgYm9vbCBoYXNB
Y3RpdmVTZXNzaW9uKERvY3VtZW50Jik7CiAKLSAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9yPHZvaWQ+
IGNvbnZlcnREYXRhKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlJiYpID0gMDsKLSAgICB2
aXJ0dWFsIEV4Y2VwdGlvbk9yPHZvaWQ+IHNob3coRG9jdW1lbnQmKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGhpZGUoRG9jdW1lbnQmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNhbk1ha2VQYXlt
ZW50KERvY3VtZW50JiwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKSA9IDA7CisgICAgdmlydHVhbCBFeGNlcHRpb25Pcjx2b2lkPiBjb252ZXJ0RGF0YShKU0M6
OkpTVmFsdWUmJikgPSAwOworICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8dm9pZD4gc2hvdygpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgaGlkZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuTWFr
ZVBheW1lbnQoV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbXBsZXRlKHN0ZDo6b3B0aW9uYWw8UGF5bWVudENvbXBs
ZXRlPiYmKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3Bw
CmluZGV4IGJmZWNmNWZhNzU2NzVjMzdiMmRlZDM2OWI2N2Q2NTJjNTM0NDllZGEuLjhhNWJhYmQw
NTQ0OTczYzY3NzAwOWZkN2I2YWRjZjM3MmQ3ZDBiMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwCkBAIC0z
MCwxMiArMzAsMTQgQEAKIAogI2luY2x1ZGUgIkFwcGxlUGF5UGF5bWVudEhhbmRsZXIuaCIKICNp
bmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkpTUGF5bWVudFJlc3BvbnNlLmgiCiAjaW5j
bHVkZSAiUGF5bWVudEFkZHJlc3MuaCIKICNpbmNsdWRlICJQYXltZW50Q3VycmVuY3lBbW91bnQu
aCIKICNpbmNsdWRlICJQYXltZW50RGV0YWlsc0luaXQuaCIKICNpbmNsdWRlICJQYXltZW50SGFu
ZGxlci5oIgogI2luY2x1ZGUgIlBheW1lbnRNZXRob2REYXRhLmgiCiAjaW5jbHVkZSAiUGF5bWVu
dE9wdGlvbnMuaCIKKyNpbmNsdWRlICJQYXltZW50UmVzcG9uc2UuaCIKICNpbmNsdWRlICJTY3Jp
cHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPTk9iamVjdC5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Rocm93U2NvcGUuaD4KQEAgLTM3NiwxMSArMzc4LDEx
IEBAIHZvaWQgUGF5bWVudFJlcXVlc3Q6OnNob3coRG9jdW1lbnQmIGRvY3VtZW50LCBTaG93UHJv
bWlzZSYmIHByb21pc2UpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBhdXRvIGhhbmRsZXIgPSBQYXltZW50SGFuZGxlcjo6Y3JlYXRlKCp0aGlzLCBwYXltZW50TWV0
aG9kLmlkZW50aWZpZXIpOworICAgICAgICBhdXRvIGhhbmRsZXIgPSBQYXltZW50SGFuZGxlcjo6
Y3JlYXRlKGRvY3VtZW50LCAqdGhpcywgcGF5bWVudE1ldGhvZC5pZGVudGlmaWVyKTsKICAgICAg
ICAgaWYgKCFoYW5kbGVyKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBy
ZXN1bHQgPSBoYW5kbGVyLT5jb252ZXJ0RGF0YSgqZG9jdW1lbnQuZXhlY1N0YXRlKCksIGRhdGEu
cmVsZWFzZVJldHVyblZhbHVlKCkpOworICAgICAgICBhdXRvIHJlc3VsdCA9IGhhbmRsZXItPmNv
bnZlcnREYXRhKGRhdGEucmVsZWFzZVJldHVyblZhbHVlKCkpOwogICAgICAgICBpZiAocmVzdWx0
Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICBtX3Nob3dQcm9taXNlLT5yZWplY3QocmVz
dWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0zOTUsNyAr
Mzk3LDcgQEAgdm9pZCBQYXltZW50UmVxdWVzdDo6c2hvdyhEb2N1bWVudCYgZG9jdW1lbnQsIFNo
b3dQcm9taXNlJiYgcHJvbWlzZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8g
ZXhjZXB0aW9uID0gc2VsZWN0ZWRQYXltZW50SGFuZGxlci0+c2hvdyhkb2N1bWVudCk7CisgICAg
YXV0byBleGNlcHRpb24gPSBzZWxlY3RlZFBheW1lbnRIYW5kbGVyLT5zaG93KCk7CiAgICAgaWYg
KGV4Y2VwdGlvbi5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICBtX3Nob3dQcm9taXNlLT5yZWpl
Y3QoZXhjZXB0aW9uLnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTQx
Myw3ICs0MTUsNyBAQCB2b2lkIFBheW1lbnRSZXF1ZXN0OjpzdG9wKCkKIAogICAgIGlmIChhdXRv
IHBheW1lbnRIYW5kbGVyID0gc3RkOjpleGNoYW5nZShtX2FjdGl2ZVBheW1lbnRIYW5kbGVyLCBu
dWxscHRyKSkgewogICAgICAgICB1bnNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKLSAgICAgICAg
cGF5bWVudEhhbmRsZXItPmhpZGUoZG93bmNhc3Q8RG9jdW1lbnQ+KCpzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpKTsKKyAgICAgICAgcGF5bWVudEhhbmRsZXItPmhpZGUoKTsKICAgICB9CiAKICAg
ICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6SW50ZXJhY3RpdmUpOwpAQCAtNDQ1LDE1ICs0NDcs
MTUgQEAgdm9pZCBQYXltZW50UmVxdWVzdDo6Y2FuTWFrZVBheW1lbnQoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBDYW5NYWtlUGF5bWVudFByb21pc2UmJgogICAgICAgICBpZiAoZGF0YS5oYXNFeGNlcHRp
b24oKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGF1dG8gaGFuZGxlciA9IFBh
eW1lbnRIYW5kbGVyOjpjcmVhdGUoKnRoaXMsIHBheW1lbnRNZXRob2QuaWRlbnRpZmllcik7Cisg
ICAgICAgIGF1dG8gaGFuZGxlciA9IFBheW1lbnRIYW5kbGVyOjpjcmVhdGUoZG9jdW1lbnQsICp0
aGlzLCBwYXltZW50TWV0aG9kLmlkZW50aWZpZXIpOwogICAgICAgICBpZiAoIWhhbmRsZXIpCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRvIGV4Y2VwdGlvbiA9IGhhbmRsZXIt
PmNvbnZlcnREYXRhKCpkb2N1bWVudC5leGVjU3RhdGUoKSwgZGF0YS5yZWxlYXNlUmV0dXJuVmFs
dWUoKSk7CisgICAgICAgIGF1dG8gZXhjZXB0aW9uID0gaGFuZGxlci0+Y29udmVydERhdGEoZGF0
YS5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CiAgICAgICAgIGlmIChleGNlcHRpb24uaGFzRXhjZXB0
aW9uKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBoYW5kbGVyLT5jYW5NYWtl
UGF5bWVudChkb2N1bWVudCwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShib29sIGNhbk1h
a2VQYXltZW50KSBtdXRhYmxlIHsKKyAgICAgICAgaGFuZGxlci0+Y2FuTWFrZVBheW1lbnQoW3By
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShib29sIGNhbk1ha2VQYXltZW50KSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZShjYW5NYWtlUGF5bWVudCk7CiAgICAgICAgIH0p
OwogICAgICAgICByZXR1cm47CkBAIC00NzgsMTQgKzQ4MCw2MSBAQCBib29sIFBheW1lbnRSZXF1
ZXN0OjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QKIHsKICAgICBzd2l0
Y2ggKG1fc3RhdGUpIHsKICAgICBjYXNlIFN0YXRlOjpDcmVhdGVkOgotICAgIGNhc2UgU3RhdGU6
OkNsb3NlZDoKICAgICAgICAgQVNTRVJUKCFtX2FjdGl2ZVBheW1lbnRIYW5kbGVyKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgY2FzZSBTdGF0ZTo6SW50ZXJhY3RpdmU6CisgICAgY2FzZSBT
dGF0ZTo6Q2xvc2VkOgogICAgICAgICByZXR1cm4gIW1fYWN0aXZlUGF5bWVudEhhbmRsZXI7CiAg
ICAgfQogfQogCit2b2lkIFBheW1lbnRSZXF1ZXN0OjpzaGlwcGluZ0FkZHJlc3NDaGFuZ2VkKFJl
ZjxQYXltZW50QWRkcmVzcz4mJiBzaGlwcGluZ0FkZHJlc3MpCit7CisgICAgQVNTRVJUKG1fc3Rh
dGUgPT0gU3RhdGU6OkludGVyYWN0aXZlKTsKKyAgICBtX3NoaXBwaW5nQWRkcmVzcyA9IFdURk1v
dmUoc2hpcHBpbmdBZGRyZXNzKTsKKyAgICAvLyBGSVhNRTogcnVuIHRoZSBQYXltZW50UmVxdWVz
dCB1cGRhdGVkIGFsZ29yaXRobS4KK30KKwordm9pZCBQYXltZW50UmVxdWVzdDo6c2hpcHBpbmdP
cHRpb25DaGFuZ2VkKGNvbnN0IFN0cmluZyYgc2hpcHBpbmdPcHRpb24pCit7CisgICAgQVNTRVJU
KG1fc3RhdGUgPT0gU3RhdGU6OkludGVyYWN0aXZlKTsKKyAgICBtX3NoaXBwaW5nT3B0aW9uID0g
c2hpcHBpbmdPcHRpb247CisgICAgLy8gRklYTUU6IHJ1biB0aGUgUGF5bWVudFJlcXVlc3QgdXBk
YXRlZCBhbGdvcml0aG0uCit9CisKK3ZvaWQgUGF5bWVudFJlcXVlc3Q6OmFjY2VwdChjb25zdCBT
dHJpbmcmIG1ldGhvZE5hbWUsIEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+JiYgZGV0YWlscywg
UmVmPFBheW1lbnRBZGRyZXNzPiYmIHNoaXBwaW5nQWRkcmVzcywgY29uc3QgU3RyaW5nJiBwYXll
ck5hbWUsIGNvbnN0IFN0cmluZyYgcGF5ZXJFbWFpbCwgY29uc3QgU3RyaW5nJiBwYXllclBob25l
KQoreworICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpJbnRlcmFjdGl2ZSk7CisKKyAgICBh
dXRvIHJlc3BvbnNlID0gUGF5bWVudFJlc3BvbnNlOjpjcmVhdGUoKnRoaXMpOworICAgIHJlc3Bv
bnNlLT5zZXRSZXF1ZXN0SWQobV9kZXRhaWxzLmlkKTsKKyAgICByZXNwb25zZS0+c2V0TWV0aG9k
TmFtZShtZXRob2ROYW1lKTsKKyAgICByZXNwb25zZS0+c2V0RGV0YWlscyhXVEZNb3ZlKGRldGFp
bHMpKTsKKworICAgIGlmIChtX29wdGlvbnMucmVxdWVzdFNoaXBwaW5nKSB7CisgICAgICAgIHJl
c3BvbnNlLT5zZXRTaGlwcGluZ0FkZHJlc3Moc2hpcHBpbmdBZGRyZXNzLnB0cigpKTsKKyAgICAg
ICAgcmVzcG9uc2UtPnNldFNoaXBwaW5nT3B0aW9uKG1fc2hpcHBpbmdPcHRpb24pOworICAgIH0K
KworICAgIGlmIChtX29wdGlvbnMucmVxdWVzdFBheWVyTmFtZSkKKyAgICAgICAgcmVzcG9uc2Ut
PnNldFBheWVyTmFtZShwYXllck5hbWUpOworCisgICAgaWYgKG1fb3B0aW9ucy5yZXF1ZXN0UGF5
ZXJFbWFpbCkKKyAgICAgICAgcmVzcG9uc2UtPnNldFBheWVyRW1haWwocGF5ZXJFbWFpbCk7CisK
KyAgICBpZiAobV9vcHRpb25zLnJlcXVlc3RQYXllclBob25lKQorICAgICAgICByZXNwb25zZS0+
c2V0UGF5ZXJQaG9uZShwYXllclBob25lKTsKKworICAgIG1fc2hvd1Byb21pc2UtPnJlc29sdmUo
cmVzcG9uc2UuZ2V0KCkpOworICAgIG1fc3RhdGUgPSBTdGF0ZTo6Q2xvc2VkOworfQorCit2b2lk
IFBheW1lbnRSZXF1ZXN0Ojpjb21wbGV0ZShzdGQ6Om9wdGlvbmFsPFBheW1lbnRDb21wbGV0ZT4m
JiByZXN1bHQpCit7CisgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCk7CisgICAg
c3RkOjpleGNoYW5nZShtX2FjdGl2ZVBheW1lbnRIYW5kbGVyLCBudWxscHRyKS0+Y29tcGxldGUo
V1RGTW92ZShyZXN1bHQpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gRU5BQkxFKFBBWU1FTlRfUkVRVUVTVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuaAppbmRleCBhODkxODViY2M3ZmVj
NmJlYjQ2YTQ2NzFjNjdhOWFhN2I5NDZmNjM3Li5hOGRhNGQxOTYzM2JmYjY0NjlmMGQxOGZkYjI2
M2M5ZDUyMmE4MWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRy
ZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXlt
ZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5oCkBAIC00Miw2ICs0Miw3IEBAIGNsYXNzIERvY3Vt
ZW50OwogY2xhc3MgUGF5bWVudEFkZHJlc3M7CiBjbGFzcyBQYXltZW50SGFuZGxlcjsKIGNsYXNz
IFBheW1lbnRSZXNwb25zZTsKK2VudW0gY2xhc3MgUGF5bWVudENvbXBsZXRlOwogZW51bSBjbGFz
cyBQYXltZW50U2hpcHBpbmdUeXBlOwogc3RydWN0IFBheW1lbnRNZXRob2REYXRhOwogCkBAIC02
Niw2ICs2NywxMSBAQCBwdWJsaWM6CiAgICAgY29uc3QgUGF5bWVudE9wdGlvbnMmIHBheW1lbnRP
cHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zOyB9CiAgICAgY29uc3QgUGF5bWVudERl
dGFpbHNJbml0JiBwYXltZW50RGV0YWlscygpIGNvbnN0IHsgcmV0dXJuIG1fZGV0YWlsczsgfQog
CisgICAgdm9pZCBzaGlwcGluZ0FkZHJlc3NDaGFuZ2VkKFJlZjxQYXltZW50QWRkcmVzcz4mJik7
CisgICAgdm9pZCBzaGlwcGluZ09wdGlvbkNoYW5nZWQoY29uc3QgU3RyaW5nJiBzaGlwcGluZ09w
dGlvbik7CisgICAgdm9pZCBhY2NlcHQoY29uc3QgU3RyaW5nJiBtZXRob2ROYW1lLCBKU0M6OlN0
cm9uZzxKU0M6OkpTT2JqZWN0PiYmIGRldGFpbHMsIFJlZjxQYXltZW50QWRkcmVzcz4mJiBzaGlw
cGluZ0FkZHJlc3MsIGNvbnN0IFN0cmluZyYgcGF5ZXJOYW1lLCBjb25zdCBTdHJpbmcmIHBheWVy
RW1haWwsIGNvbnN0IFN0cmluZyYgcGF5ZXJQaG9uZSk7CisgICAgdm9pZCBjb21wbGV0ZShzdGQ6
Om9wdGlvbmFsPFBheW1lbnRDb21wbGV0ZT4mJik7CisKICAgICB1c2luZyBNZXRob2RJZGVudGlm
aWVyID0gVmFyaWFudDxTdHJpbmcsIFVSTD47CiAgICAgdXNpbmcgUmVmQ291bnRlZDxQYXltZW50
UmVxdWVzdD46OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkPFBheW1lbnRSZXF1ZXN0Pjo6ZGVy
ZWY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1Bh
eW1lbnRSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0
L1BheW1lbnRSZXNwb25zZS5jcHAKaW5kZXggNzAyYWJjNDBlNjgyMWJiMzIwMjRhMGMxYWQ3OWFh
MTBmMDEyNzI2MS4uMmFlYWVkZjBiNTg4YjYzODY2ZDFmMTlkOTU1MTA1NzE2NTc0MjAzNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVz
cG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5
bWVudFJlc3BvbnNlLmNwcApAQCAtMjgsMTMgKzI4LDI4IEBACiAKICNpZiBFTkFCTEUoUEFZTUVO
VF9SRVFVRVNUKQogCisjaW5jbHVkZSAiUGF5bWVudFJlcXVlc3QuaCIKICNpbmNsdWRlIDx3dGYv
UnVuTG9vcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgUGF5bWVudFJlc3BvbnNl
Ojpjb21wbGV0ZShzdGQ6Om9wdGlvbmFsPFBheW1lbnRDb21wbGV0ZT4mJiwgRE9NUHJvbWlzZURl
ZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKK1BheW1lbnRSZXNwb25zZTo6UGF5bWVudFJlc3BvbnNl
KFBheW1lbnRSZXF1ZXN0JiByZXF1ZXN0KQorICAgIDogbV9yZXF1ZXN0IHsgcmVxdWVzdCB9CiB7
Ci0gICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsIEFTQ0lJ
TGl0ZXJhbCgiTm90IGltcGxlbWVudGVkIikgfSk7Cit9CisKK1BheW1lbnRSZXNwb25zZTo6flBh
eW1lbnRSZXNwb25zZSgpID0gZGVmYXVsdDsKKwordm9pZCBQYXltZW50UmVzcG9uc2U6OmNvbXBs
ZXRlKHN0ZDo6b3B0aW9uYWw8UGF5bWVudENvbXBsZXRlPiYmIHJlc3VsdCwgRE9NUHJvbWlzZURl
ZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKK3sKKyAgICBpZiAobV9jb21wbGV0ZUNhbGxlZCkgewor
ICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fY29tcGxldGVDYWxsZWQgPSB0cnVlOwor
ICAgIG1fcmVxdWVzdC0+Y29tcGxldGUoV1RGTW92ZShyZXN1bHQpKTsKKyAgICBwcm9taXNlLnJl
c29sdmUoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVzcG9uc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlc3BvbnNlLmgKaW5kZXgg
MmYwMjllMWNhZTAxM2RmY2M4MjcyYjY4OGQwMzY5ZTllODI5YWEzZi4uZDAzM2E3NjI1NTg0MTIy
M2FhYTJmNDA3NmJjMmEyNGMwNTVlMGU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXNwb25zZS5oCkBAIC0zMiwyMSArMzIs
NDkgQEAKICNpbmNsdWRlICJQYXltZW50Q29tcGxldGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
eworICAgIAorY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBQYXltZW50UmVxdWVzdDsKIAogY2xhc3Mg
UGF5bWVudFJlc3BvbnNlIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8UGF5bWVudFJlc3BvbnNl
PiB7CiBwdWJsaWM6CisgICAgc3RhdGljIFJlZjxQYXltZW50UmVzcG9uc2U+IGNyZWF0ZShQYXlt
ZW50UmVxdWVzdCYgcmVxdWVzdCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFBheW1lbnRSZXNwb25zZShyZXF1ZXN0KSk7CisgICAgfQorCisgICAgflBheW1lbnRSZXNwb25z
ZSgpOworCiAgICAgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQoKSBjb25zdCB7IHJldHVybiBtX3Jl
cXVlc3RJZDsgfQorICAgIHZvaWQgc2V0UmVxdWVzdElkKGNvbnN0IFN0cmluZyYgcmVxdWVzdElk
KSB7IG1fcmVxdWVzdElkID0gcmVxdWVzdElkOyB9CisKICAgICBjb25zdCBTdHJpbmcmIG1ldGhv
ZE5hbWUoKSBjb25zdCB7IHJldHVybiBtX21ldGhvZE5hbWU7IH0KKyAgICB2b2lkIHNldE1ldGhv
ZE5hbWUoY29uc3QgU3RyaW5nJiBtZXRob2ROYW1lKSB7IG1fbWV0aG9kTmFtZSA9IG1ldGhvZE5h
bWU7IH0KKwogICAgIGNvbnN0IEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+JiBkZXRhaWxzKCkg
Y29uc3QgeyByZXR1cm4gbV9kZXRhaWxzOyB9CisgICAgdm9pZCBzZXREZXRhaWxzKEpTQzo6U3Ry
b25nPEpTQzo6SlNPYmplY3Q+JiYgZGV0YWlscykgeyBtX2RldGFpbHMgPSBXVEZNb3ZlKGRldGFp
bHMpOyB9CisKICAgICBQYXltZW50QWRkcmVzcyogc2hpcHBpbmdBZGRyZXNzKCkgY29uc3QgeyBy
ZXR1cm4gbV9zaGlwcGluZ0FkZHJlc3MuZ2V0KCk7IH0KKyAgICB2b2lkIHNldFNoaXBwaW5nQWRk
cmVzcyhQYXltZW50QWRkcmVzcyogc2hpcHBpbmdBZGRyZXNzKSB7IG1fc2hpcHBpbmdBZGRyZXNz
ID0gc2hpcHBpbmdBZGRyZXNzOyB9CisKICAgICBjb25zdCBTdHJpbmcmIHNoaXBwaW5nT3B0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9zaGlwcGluZ09wdGlvbjsgfQorICAgIHZvaWQgc2V0U2hpcHBp
bmdPcHRpb24oY29uc3QgU3RyaW5nJiBzaGlwcGluZ09wdGlvbikgeyBtX3NoaXBwaW5nT3B0aW9u
ID0gc2hpcHBpbmdPcHRpb247IH0KKwogICAgIGNvbnN0IFN0cmluZyYgcGF5ZXJOYW1lKCkgY29u
c3QgeyByZXR1cm4gbV9wYXllck5hbWU7IH0KKyAgICB2b2lkIHNldFBheWVyTmFtZShjb25zdCBT
dHJpbmcmIHBheWVyTmFtZSkgeyBtX3BheWVyTmFtZSA9IHBheWVyTmFtZTsgfQorCiAgICAgY29u
c3QgU3RyaW5nJiBwYXllckVtYWlsKCkgY29uc3QgeyByZXR1cm4gbV9wYXllckVtYWlsOyB9Cisg
ICAgdm9pZCBzZXRQYXllckVtYWlsKGNvbnN0IFN0cmluZyYgcGF5ZXJFbWFpbCkgeyBtX3BheWVy
RW1haWwgPSBwYXllckVtYWlsOyB9CisKICAgICBjb25zdCBTdHJpbmcmIHBheWVyUGhvbmUoKSBj
b25zdCB7IHJldHVybiBtX3BheWVyUGhvbmU7IH0KKyAgICB2b2lkIHNldFBheWVyUGhvbmUoY29u
c3QgU3RyaW5nJiBwYXllclBob25lKSB7IG1fcGF5ZXJQaG9uZSA9IHBheWVyUGhvbmU7IH0KIAog
ICAgIHZvaWQgY29tcGxldGUoc3RkOjpvcHRpb25hbDxQYXltZW50Q29tcGxldGU+JiYsIERPTVBy
b21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKIAogcHJpdmF0ZToKKyAgICBleHBsaWNpdCBQYXltZW50
UmVzcG9uc2UoUGF5bWVudFJlcXVlc3QmKTsKKworICAgIFJlZjxQYXltZW50UmVxdWVzdD4gbV9y
ZXF1ZXN0OwogICAgIFN0cmluZyBtX3JlcXVlc3RJZDsKICAgICBTdHJpbmcgbV9tZXRob2ROYW1l
OwogICAgIEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+IG1fZGV0YWlsczsKQEAgLTU1LDYgKzgz
LDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9wYXllck5hbWU7CiAgICAgU3RyaW5nIG1fcGF5
ZXJFbWFpbDsKICAgICBTdHJpbmcgbV9wYXllclBob25lOworICAgIGJvb2wgbV9jb21wbGV0ZUNh
bGxlZCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZmJlMzM2
NTRiY2YwZTIyMmNjYzc1MjFlNTRmMDJmOTMwZWZhZDM0Yi4uMDkyN2M2ZTk0YzU5MGVlNDI5YmE4
M2U3MzA0NjUyZmU2NjIyMzRlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzkwNSw2ICszOTA1LDEyIEBACiAJCUExNDA2MThD
MUUyRUNBMEEwMDMyQjM0RSAvKiBNb2NrUHJldmlld0xvYWRlckNsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0MDYxOEExRTJFQ0EwQTAwMzJC
MzRFIC8qIE1vY2tQcmV2aWV3TG9hZGVyQ2xpZW50LmggKi87IH07CiAJCUExNDA5MEZCMUFBNTFF
MUQwMDkxMTkxQSAvKiBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDA5MEZBMUFBNTFFMUQw
MDkxMTkxQSAvKiBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbSAqLzsgfTsKIAkJ
QTE0MDkwRkQxQUE1MUU0ODAwOTExOTFBIC8qIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0MDkwRkMx
QUE1MUU0ODAwOTExOTFBIC8qIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUExNDZEMzFBMUY5OUJD
RjgwMEQyOTE5NiAvKiBKU01vY2tQYXltZW50Q29vcmRpbmF0b3IuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0NkQzMTkxRjk5QkNCQjAwRDI5MTk2
IC8qIEpTTW9ja1BheW1lbnRDb29yZGluYXRvci5jcHAgKi87IH07CisJCUExNDZEMzFCMUY5OUJD
RkIwMEQyOTE5NiAvKiBKU01vY2tQYXltZW50Q29vcmRpbmF0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDZEMzE4MUY5OUJDQkEwMEQyOTE5NiAv
KiBKU01vY2tQYXltZW50Q29vcmRpbmF0b3IuaCAqLzsgfTsKKwkJQTE0NkQzMjExRjk5Q0IxQTAw
RDI5MTk2IC8qIE1vY2tQYXltZW50QWRkcmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0NkQzMUMxRjk5QzlDMjAwRDI5MTk2IC8qIE1vY2tQYXlt
ZW50QWRkcmVzcy5oICovOyB9OworCQlBMTQ2RDMyMjFGOTlEMEVDMDBEMjkxOTYgLyogSlNNb2Nr
UGF5bWVudEFkZHJlc3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTE0NkQzMjAxRjk5Q0EzRTAwRDI5MTk2IC8qIEpTTW9ja1BheW1lbnRBZGRyZXNz
LmNwcCAqLzsgfTsKKwkJQTE0NkQzMjMxRjk5RDBFRjAwRDI5MTk2IC8qIEpTTW9ja1BheW1lbnRB
ZGRyZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
MTQ2RDMxRjFGOTlDQTNEMDBEMjkxOTYgLyogSlNNb2NrUGF5bWVudEFkZHJlc3MuaCAqLzsgfTsK
KwkJQTE0NkQzMjUxRjk5RDY5ODAwRDI5MTk2IC8qIE1vY2tQYXltZW50Q29udGFjdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0NkQzMjQxRjk5RDY5
ODAwRDI5MTk2IC8qIE1vY2tQYXltZW50Q29udGFjdC5oICovOyB9OwogCQlBMTQ4MzJCMDE4N0Y2
MThEMDBEQTYzQTYgLyogV0FLQXBwS2l0U3R1YnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDgzMjhDMTg3RjUwODcwMERBNjNBNiAvKiBXQUtBcHBL
aXRTdHVicy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUExNDgzMkIxMTg3RjYxRTEwMERBNjNBNiAvKiBXQUtBcHBLaXRTdHVicy5tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0ODMyOEQxODdGNTA4NzAw
REE2M0E2IC8qIFdBS0FwcEtpdFN0dWJzLm0gKi87IH07CiAJCUExNDgzMkIyMTg3RjYxRUQwMERB
NjNBNiAvKiBXQUtDbGlwVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTE0ODMyOEUxODdGNTA4NzAwREE2M0E2IC8qIFdBS0NsaXBWaWV3LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM5MzksNiAr
Mzk0NSw3IEBACiAJCUExNDk3ODZFMUFCQUYzMzgwMENFRjdFNCAvKiBDb250ZW50RmlsdGVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDk3ODZD
MUFCQUYzMzgwMENFRjdFNCAvKiBDb250ZW50RmlsdGVyLmNwcCAqLzsgfTsKIAkJQTE0OTc4NkYx
QUJBRjMzODAwQ0VGN0U0IC8qIENvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDk3ODZEMUFCQUYzMzgwMENFRjdFNCAvKiBDb250
ZW50RmlsdGVyLmggKi87IH07CiAJCUExNDk3ODcxMUFCQUYzQTUwMENFRjdFNCAvKiBQbGF0Zm9y
bUNvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEExNDk3ODcwMUFCQUYzQTUwMENFRjdFNCAvKiBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIu
aCAqLzsgfTsKKwkJQTE0QkIwQTAxRjk4MTNCODAwNjA1QTM1IC8qIE1vY2tQYXltZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTRCQjA5RTFGOTgx
M0I4MDA2MDVBMzUgLyogTW9ja1BheW1lbnQuaCAqLzsgfTsKIAkJQTE1RDc1MTUxRTY4RjdDNDAw
QTM1RkJDIC8qIEJsb2JDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMTVENzUxMjFFNjhGN0IxMDBBMzVGQkMgLyogQmxvYkNhbGxiYWNr
LmNwcCAqLzsgfTsKIAkJQTE1RDc1MTYxRTY4RjdDODAwQTM1RkJDIC8qIEJsb2JDYWxsYmFjay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE1RDc1MTMx
RTY4RjdCMTAwQTM1RkJDIC8qIEJsb2JDYWxsYmFjay5oICovOyB9OwogCQlBMTVENzUxQjFFNjhG
OEEzMDBBMzVGQkMgLyogSlNCbG9iQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNUQ3NTE4MUU2OEY4MzYwMEEzNUZCQyAvKiBKU0Jsb2JD
YWxsYmFjay5oICovOyB9OwpAQCAtMzk4NCw2ICszOTkxLDcgQEAKIAkJQTFDQzU2N0IxRjQ2MTRB
RDAwQTQ1NTVCIC8qIEpTUGF5bWVudFJlc3BvbnNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUNDNTY2NDFGNDYxNDY3MDBBNDU1NUIgLyogSlNQYXlt
ZW50UmVzcG9uc2UuaCAqLzsgfTsKIAkJQTFDQzU2N0QxRjQ2MTRCMjAwQTQ1NTVCIC8qIEpTUGF5
bWVudFNoaXBwaW5nT3B0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMUNDNTY1OTFGNDYxNDVDMDBBNDU1NUIgLyogSlNQYXltZW50U2hpcHBpbmdP
cHRpb24uaCAqLzsgfTsKIAkJQTFDQzU2N0YxRjQ2MTRCNzAwQTQ1NTVCIC8qIEpTUGF5bWVudFNo
aXBwaW5nVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTFDQzU2NTAxRjQ2MTQ1MzAwQTQ1NTVCIC8qIEpTUGF5bWVudFNoaXBwaW5nVHlwZS5oICov
OyB9OworCQlBMUNGRTAzMjFGOUU3MTI5MDA2NUMzNDUgLyogUGF5bWVudEFkZHJlc3MuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFDRkUwMzExRjlF
NzEyOTAwNjVDMzQ1IC8qIFBheW1lbnRBZGRyZXNzLmNwcCAqLzsgfTsKIAkJQTFERTcxMkQxODYx
MkFDMTAwNzM0MTkyIC8qIFRvdWNoRXZlbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExREU3MTJCMTg2MTJBQzEwMDczNDE5MiAvKiBUb3VjaEV2
ZW50cy5jcHAgKi87IH07CiAJCUExREY1QTdGMUY3RUJEMEIwMDU4QTQ3NyAvKiBBcHBsZVBheVJl
cXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
REY1QTdDMUY3RUJEMEIwMDU4QTQ3NyAvKiBBcHBsZVBheVJlcXVlc3QuaCAqLzsgfTsKIAkJQTFE
RjVBODYxRjdFQkRGMjAwNThBNDc3IC8qIEFwcGxlUGF5TWVyY2hhbnRDYXBhYmlsaXR5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMURGNUE4MzFGN0VC
REYyMDA1OEE0NzcgLyogQXBwbGVQYXlNZXJjaGFudENhcGFiaWxpdHkuaCAqLzsgfTsKQEAgLTEy
MTY1LDYgKzEyMTczLDE0IEBACiAJCUExNDA2MThBMUUyRUNBMEEwMDMyQjM0RSAvKiBNb2NrUHJl
dmlld0xvYWRlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2Nr
UHJldmlld0xvYWRlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTQw
OTBGQTFBQTUxRTFEMDA5MTE5MUEgLyogQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2Eu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb250ZW50RmlsdGVy
VW5ibG9ja0hhbmRsZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE0
MDkwRkMxQUE1MUU0ODAwOTExOTFBIC8qIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRs
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE0NkQzMTYxRjk5QjUzRDAwRDI5
MTk2IC8qIE1vY2tQYXltZW50Q29vcmRpbmF0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1vY2tQYXltZW50Q29vcmRp
bmF0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTQ2RDMxODFGOTlCQ0JB
MDBEMjkxOTYgLyogSlNNb2NrUGF5bWVudENvb3JkaW5hdG9yLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTTW9ja1BheW1lbnRDb29yZGluYXRvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBMTQ2RDMxOTFGOTlCQ0JCMDBEMjkxOTYgLyogSlNNb2NrUGF5bWVu
dENvb3JkaW5hdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
TW9ja1BheW1lbnRDb29yZGluYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUExNDZEMzFDMUY5OUM5QzIwMEQyOTE5NiAvKiBNb2NrUGF5bWVudEFkZHJlc3MuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTW9ja1BheW1lbnRBZGRyZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUExNDZEMzFFMUY5OUM5QzIwMEQyOTE5NiAvKiBNb2NrUGF5bWVudEFkZHJlc3MuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IE1vY2tQYXltZW50QWRkcmVzcy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUExNDZEMzFGMUY5OUNBM0QwMEQyOTE5NiAvKiBKU01vY2tQYXltZW50QWRkcmVzcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01vY2tQYXltZW50QWRkcmVzcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTQ2RDMyMDFGOTlDQTNFMDBEMjkxOTYgLyogSlNN
b2NrUGF5bWVudEFkZHJlc3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNNb2NrUGF5bWVudEFkZHJlc3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBMTQ2RDMyNDFGOTlENjk4MDBEMjkxOTYgLyogTW9ja1BheW1lbnRDb250YWN0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1vY2tQYXltZW50Q29udGFjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBMTQ4MzI4QzE4N0Y1MDg3MDBEQTYzQTYgLyogV0FLQXBwS2l0U3R1YnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0FLQXBwS2l0U3R1YnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTE0ODMyOEQxODdGNTA4NzAwREE2M0E2IC8qIFdBS0FwcEtpdFN0
dWJzLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFdBS0FwcEtpdFN0dWJz
Lm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExNDgzMjhFMTg3RjUwODcwMERBNjNB
NiAvKiBXQUtDbGlwVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXQUtD
bGlwVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIxOTksNiArMTIyMTUs
NyBAQAogCQlBMTQ5Nzg2QzFBQkFGMzM4MDBDRUY3RTQgLyogQ29udGVudEZpbHRlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb250ZW50RmlsdGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE0OTc4NkQxQUJBRjMzODAwQ0VGN0U0IC8qIENv
bnRlbnRGaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGVudEZp
bHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTQ5Nzg3MDFBQkFGM0E1MDBD
RUY3RTQgLyogUGxhdGZvcm1Db250ZW50RmlsdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFBsYXRmb3JtQ29udGVudEZpbHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBMTRCQjA5RTFGOTgxM0I4MDA2MDVBMzUgLyogTW9ja1BheW1lbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTW9ja1BheW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE1
RDc1MTIxRTY4RjdCMTAwQTM1RkJDIC8qIEJsb2JDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCbG9iQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBMTVENzUxMzFFNjhGN0IxMDBBMzVGQkMgLyogQmxvYkNhbGxiYWNrLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJsb2JDYWxsYmFjay5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBMTVENzUxNDFFNjhGN0IxMDBBMzVGQkMgLyogQmxvYkNh
bGxiYWNrLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBCbG9iQ2FsbGJhY2suaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIyNjIsNiArMTIyNzksNyBAQAogCQlBMUNDNTY2
MzFGNDYxNDY2MDBBNDU1NUIgLyogSlNQYXltZW50Q3VycmVuY3lBbW91bnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQYXltZW50Q3VycmVuY3lBbW91bnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFDQzU2NjQxRjQ2MTQ2NzAwQTQ1NTVCIC8qIEpTUGF5
bWVudFJlc3BvbnNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUGF5bWVu
dFJlc3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExQ0M1NjY1MUY0NjE0
NjgwMEE0NTU1QiAvKiBKU1BheW1lbnRBZGRyZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTUGF5bWVudEFkZHJlc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTFDRkUwMzExRjlFNzEyOTAwNjVDMzQ1IC8qIFBheW1lbnRBZGRyZXNzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFBheW1lbnRBZGRyZXNzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTFERTcxMkIxODYxMkFDMTAwNzM0MTkyIC8qIFRvdWNoRXZlbnRzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRvdWNoRXZlbnRzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFERjVBN0MxRjdFQkQwQjAwNThBNDc3IC8qIEFwcGxlUGF5
UmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBsZVBheVJlcXVlc3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTFERjVBN0UxRjdFQkQwQjAwNThBNDc3IC8qIEFwcGxlUGF5UmVx
dWVzdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gQXBwbGVQYXlSZXF1ZXN0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE3NTM2LDggKzE3NTU0LDEzIEBACiAJCQkJMkQ2RjNFOEMxQzFFQ0IxQzAwNjFE
QkQ0IC8qIE1vY2tQYWdlT3ZlcmxheS5pZGwgKi8sCiAJCQkJMkRBQUUzMkMxOURDQUY2MDAwRTAw
MkQyIC8qIE1vY2tQYWdlT3ZlcmxheUNsaWVudC5jcHAgKi8sCiAJCQkJMkRBQUUzMkQxOURDQUY2
MDAwRTAwMkQyIC8qIE1vY2tQYWdlT3ZlcmxheUNsaWVudC5oICovLAorCQkJCUExNEJCMDlFMUY5
ODEzQjgwMDYwNUEzNSAvKiBNb2NrUGF5bWVudC5oICovLAorCQkJCUExNDZEMzFDMUY5OUM5QzIw
MEQyOTE5NiAvKiBNb2NrUGF5bWVudEFkZHJlc3MuaCAqLywKKwkJCQlBMTQ2RDMxRTFGOTlDOUMy
MDBEMjkxOTYgLyogTW9ja1BheW1lbnRBZGRyZXNzLmlkbCAqLywKKwkJCQlBMTQ2RDMyNDFGOTlE
Njk4MDBEMjkxOTYgLyogTW9ja1BheW1lbnRDb250YWN0LmggKi8sCiAJCQkJQTFBRkVERTUxRjhC
RkY2RDAwODcwMTNGIC8qIE1vY2tQYXltZW50Q29vcmRpbmF0b3IuY3BwICovLAogCQkJCUExQUZF
REU0MUY4QkZGNkQwMDg3MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmggKi8sCisJCQkJ
QTE0NkQzMTYxRjk5QjUzRDAwRDI5MTk2IC8qIE1vY2tQYXltZW50Q29vcmRpbmF0b3IuaWRsICov
LAogCQkJCUExNDA2MTg5MUUyRUNBMEEwMDMyQjM0RSAvKiBNb2NrUHJldmlld0xvYWRlckNsaWVu
dC5jcHAgKi8sCiAJCQkJQTE0MDYxOEExRTJFQ0EwQTAwMzJCMzRFIC8qIE1vY2tQcmV2aWV3TG9h
ZGVyQ2xpZW50LmggKi8sCiAJCQkJRUIwODFDRDgxNjk2MDg0NDAwNTUzNzMwIC8qIFR5cGVDb252
ZXJzaW9ucy5oICovLApAQCAtMTc1NjgsNiArMTc1OTEsMTAgQEAKIAkJCQlBMTlBRUExRTFBQUE4
MDZFMDBCNTJCMjUgLyogSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmggKi8sCiAJCQkJMkQ2
RjNFOTIxQzFGODU1NTAwNjFEQkQ0IC8qIEpTTW9ja1BhZ2VPdmVybGF5LmNwcCAqLywKIAkJCQky
RDZGM0U5MzFDMUY4NTU1MDA2MURCRDQgLyogSlNNb2NrUGFnZU92ZXJsYXkuaCAqLywKKwkJCQlB
MTQ2RDMyMDFGOTlDQTNFMDBEMjkxOTYgLyogSlNNb2NrUGF5bWVudEFkZHJlc3MuY3BwICovLAor
CQkJCUExNDZEMzFGMUY5OUNBM0QwMEQyOTE5NiAvKiBKU01vY2tQYXltZW50QWRkcmVzcy5oICov
LAorCQkJCUExNDZEMzE5MUY5OUJDQkIwMEQyOTE5NiAvKiBKU01vY2tQYXltZW50Q29vcmRpbmF0
b3IuY3BwICovLAorCQkJCUExNDZEMzE4MUY5OUJDQkEwMEQyOTE5NiAvKiBKU01vY2tQYXltZW50
Q29vcmRpbmF0b3IuaCAqLywKIAkJCQlFQkY1MTIxQTE2OTY0OTZDMDA1NkJEMjUgLyogSlNUeXBl
Q29udmVyc2lvbnMuY3BwICovLAogCQkJCUVCRjUxMjFCMTY5NjQ5NkMwMDU2QkQyNSAvKiBKU1R5
cGVDb252ZXJzaW9ucy5oICovLAogCQkJKTsKQEAgLTIxMjk3LDYgKzIxMzI0LDcgQEAKIAkJQTFG
NzZCMEUxRjQ0QzBDRjAwMTRDMzE4IC8qIHBheW1lbnRyZXF1ZXN0ICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlBMUNGRTAzMTFGOUU3MTI5MDA2NUMzNDUg
LyogUGF5bWVudEFkZHJlc3MuY3BwICovLAogCQkJCUExRjc2QjQwMUY0NENGN0YwMDE0QzMxOCAv
KiBQYXltZW50QWRkcmVzcy5oICovLAogCQkJCUExRjc2QjQyMUY0NENGN0YwMDE0QzMxOCAvKiBQ
YXltZW50QWRkcmVzcy5pZGwgKi8sCiAJCQkJQTFGNzZCNTgxRjQ0RDNCMjAwMTRDMzE4IC8qIFBh
eW1lbnRDb21wbGV0ZS5oICovLApAQCAtMjY3MDksNiArMjY3MzcsOCBAQAogCQkJCTUzOEVDOTMz
MUY5OUI5RjcwMDREMjJBOCAvKiBKU01vY2tDRE1GYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBMTlBRUEyMTFBQUE4MDg2MDBCNTJCMjUgLyogSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MzhFQzkzNDFGOTlCOUY3MDA0RDIyQTggLyogSlNNb2Nr
UGFnZU92ZXJsYXkuaCBpbiBIZWFkZXJzICovLAorCQkJCUExNDZEMzIzMUY5OUQwRUYwMEQyOTE5
NiAvKiBKU01vY2tQYXltZW50QWRkcmVzcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTE0NkQzMUIx
Rjk5QkNGQjAwRDI5MTk2IC8qIEpTTW9ja1BheW1lbnRDb29yZGluYXRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRUJGNTEyMUQxNjk2NDk2QzAwNTZCRDI1IC8qIEpTVHlwZUNvbnZlcnNpb25zLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDREMyNkI0MTE2MEE4Q0NFMDAyNjc1N0IgLyogTGVnYWN5TW9j
a0NETS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFCRjZCODMxQUE5NkM3RDAwQUY0QThBIC8qIE1v
Y2tDb250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTI2NzE4LDYgKzI2NzQ4LDkgQEAK
IAkJCQk0MTU3RUJGQjFFM0FCNjdGMDBBQzlGRTkgLyogTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDZGM0U5MTFDMUVDQjJGMDA2MURCRDQgLyogTW9j
a1BhZ2VPdmVybGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDk3RjA0ODE5REQ0MTQwMDAxRUU5
QzMgLyogTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlBMTRCQjBB
MDFGOTgxM0I4MDA2MDVBMzUgLyogTW9ja1BheW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUEx
NDZEMzIxMUY5OUNCMUEwMEQyOTE5NiAvKiBNb2NrUGF5bWVudEFkZHJlc3MuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUExNDZEMzI1MUY5OUQ2OTgwMEQyOTE5NiAvKiBNb2NrUGF5bWVudENvbnRhY3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCUExQUZFREU2MUY4QkZGNkQwMDg3MDEzRiAvKiBNb2NrUGF5
bWVudENvb3JkaW5hdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTQwNjE4QzFFMkVDQTBBMDAz
MkIzNEUgLyogTW9ja1ByZXZpZXdMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUFB
NUYzQjhEMTZDQzMzRDEwMDQ1NUVCMCAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jay5o
IGluIEhlYWRlcnMgKi8sCkBAIC0zMDkzNCw2ICszMDk2Nyw4IEBACiAJCQkJQ0RGNEI3MzIxRTAz
RDA2MDAwRTIzNUEyIC8qIEpTTW9ja0NETUZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTE5QUVBMjIxQUFBODA4QTAwQjUyQjI1IC8qIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDQxNTBERTFDMUY4NjhDMDAwQTNCQTIgLyogSlNNb2Nr
UGFnZU92ZXJsYXkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTE0NkQzMjIxRjk5RDBFQzAwRDI5
MTk2IC8qIEpTTW9ja1BheW1lbnRBZGRyZXNzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUExNDZE
MzFBMUY5OUJDRjgwMEQyOTE5NiAvKiBKU01vY2tQYXltZW50Q29vcmRpbmF0b3IuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRUJGNTEyMUMxNjk2NDk2QzAwNTZCRDI1IC8qIEpTVHlwZUNvbnZlcnNp
b25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQzI2QjQwMTYwQThDQzYwMDI2NzU3QiAvKiBM
ZWdhY3lNb2NrQ0RNLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNERjRCNzMxMUUwM0QwMDcwMEUy
MzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMyMjc4LDYgKzMy
MzEzLDcgQEAKIAkJCQkyRDUwMDJGQjFCNTZENzk5MDAyMEFBRjcgLyogUGF0aFV0aWxpdGllcy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEZBNkU1RTBFNENGREVEMDBENUNGNDkgLyogUGF0dGVy
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODBBMzhGRTBFNTBDQzgyMDBBMjVFQkMgLyogUGF0
dGVybkNHLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUExQ0ZFMDMyMUY5RTcxMjkwMDY1QzM0NSAv
KiBQYXltZW50QWRkcmVzcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQThBNjQ2QzFEMTlGRjg3
MDBEMEUwMEYgLyogUGF5bWVudENvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE4QTY0NkQx
RDE5RkY4NzAwRDBFMDBGIC8qIFBheW1lbnRDb250YWN0Q29jb2EubW0gaW4gU291cmNlcyAqLywK
IAkJCQkxQTU4RTg2RDFEMTlFNDJEMDBDMEVBNzMgLyogUGF5bWVudENvb3JkaW5hdG9yLmNwcCBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDllYjdi
MzhjNjgzMWMxZTg4NjVlMGM4YTgzMjI5NDgwZGY1MzI4OWEuLjVhMTE4MWU3OTIwZjQ5ZTJhNmRm
ZDNiZTkyN2JhMDYyZWJhZjI3N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
QEAgLTUxMyw4ICs1MTMsMTEgQEAgSW50ZXJuYWxzOjpJbnRlcm5hbHMoRG9jdW1lbnQmIGRvY3Vt
ZW50KQogICAgIHNldENvbnNvbGVNZXNzYWdlTGlzdGVuZXIobnVsbHB0cik7CiAKICNpZiBFTkFC
TEUoQVBQTEVfUEFZKQotICAgIGlmIChhdXRvIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkKLSAg
ICAgICAgZnJhbWUtPm1haW5GcmFtZSgpLnNldFBheW1lbnRDb29yZGluYXRvcihzdGQ6Om1ha2Vf
dW5pcXVlPFBheW1lbnRDb29yZGluYXRvcj4oKm5ldyBNb2NrUGF5bWVudENvb3JkaW5hdG9yKGZy
YW1lLT5tYWluRnJhbWUoKSkpKTsKKyAgICBhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCk7
CisgICAgaWYgKGZyYW1lICYmIGZyYW1lLT5pc01haW5GcmFtZSgpKSB7CisgICAgICAgIG1fbW9j
a1BheW1lbnRDb29yZGluYXRvciA9IG5ldyBNb2NrUGF5bWVudENvb3JkaW5hdG9yKGZyYW1lLT5t
YWluRnJhbWUoKSk7CisgICAgICAgIGZyYW1lLT5tYWluRnJhbWUoKS5zZXRQYXltZW50Q29vcmRp
bmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxQYXltZW50Q29vcmRpbmF0b3I+KCptX21vY2tQYXltZW50
Q29vcmRpbmF0b3IpKTsKKyAgICB9CiAjZW5kaWYKIH0KIApAQCAtNDI1OCw0ICs0MjYxLDExIEBA
IFN0cmluZyBJbnRlcm5hbHM6OnRpbWVsaW5lRGVzY3JpcHRpb24oQW5pbWF0aW9uVGltZWxpbmUm
IHRpbWVsaW5lKQogICAgIHJldHVybiB0aW1lbGluZS5kZXNjcmlwdGlvbigpOwogfQogCisjaWYg
RU5BQkxFKEFQUExFX1BBWSkKK01vY2tQYXltZW50Q29vcmRpbmF0b3ImIEludGVybmFsczo6bW9j
a1BheW1lbnRDb29yZGluYXRvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuICptX21vY2tQYXltZW50
Q29vcmRpbmF0b3I7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggNzgyYTJiZjdjMGUyNGI4MjdhYWYyOGEyYjEzZDAw
YTQ5MjY0MmQwNS4uYjU3Mjc2OTY1NDgxNGI3MjI1YTBlN2EzMGViMGVjY2M0MjY5ZDBkNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC03Myw2ICs3Myw3IEBAIGNsYXNzIE1lbW9y
eUluZm87CiBjbGFzcyBNb2NrQ0RNRmFjdG9yeTsKIGNsYXNzIE1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3M7CiBjbGFzcyBNb2NrUGFnZU92ZXJsYXk7CitjbGFzcyBNb2NrUGF5bWVudENvb3JkaW5h
dG9yOwogY2xhc3MgTm9kZUxpc3Q7CiBjbGFzcyBQYWdlOwogY2xhc3MgUmFuZ2U7CkBAIC02MTgs
NiArNjE5LDEwIEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgYm9vbCBoYXNTZXJ2aWNlV29ya2Vy
UmVnaXN0ZXJlZEZvck9yaWdpbihjb25zdCBTdHJpbmcmKTsKKyAgICAgICAgCisjaWYgRU5BQkxF
KEFQUExFX1BBWSkKKyAgICBNb2NrUGF5bWVudENvb3JkaW5hdG9yJiBtb2NrUGF5bWVudENvb3Jk
aW5hdG9yKCkgY29uc3Q7CisjZW5kaWYKIAogICAgIFN0cmluZyB0aW1lbGluZURlc2NyaXB0aW9u
KEFuaW1hdGlvblRpbWVsaW5lJik7CiAKQEAgLTY0Miw2ICs2NDcsMTAgQEAgcHJpdmF0ZToKIAog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JTdHViRnJvbnRlbmQ+IG1faW5zcGVjdG9yRnJv
bnRlbmQ7CiAgICAgUmVmUHRyPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IG1fY2FjaGVTdG9yYWdl
Q29ubmVjdGlvbjsKKworI2lmIEVOQUJMRShBUFBMRV9QQVkpCisgICAgTW9ja1BheW1lbnRDb29y
ZGluYXRvciogbV9tb2NrUGF5bWVudENvb3JkaW5hdG9yIHsgbnVsbHB0ciB9OworI2VuZGlmCiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwKaW5kZXggYmI3MmRjNTA5YTBiYmMzNmIxMWYxZmIxODU2NjJmNDY4NTBhMzQ5OS4uZmQxMDdl
YmI4Yzc3MWI1YWY0OTY4OGVmOGZiYWY5ZjFlNWQ2NWU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmlkbApAQCAtNTYzLDQgKzU2Myw1IEBAIGVudW0gRXZlbnRUaHJvdHRsaW5nQmVo
YXZpb3IgewogICAgIGJvb2xlYW4gaGFzU2VydmljZVdvcmtlclJlZ2lzdGVyZWRGb3JPcmlnaW4o
RE9NU3RyaW5nIG9yaWdpbik7CiAKICAgICBbRW5hYmxlZEF0UnVudGltZT1XZWJBbmltYXRpb25z
XSBET01TdHJpbmcgdGltZWxpbmVEZXNjcmlwdGlvbihBbmltYXRpb25UaW1lbGluZSB0aW1lbGlu
ZSk7CisgICAgW0NvbmRpdGlvbmFsPUFQUExFX1BBWV0gcmVhZG9ubHkgYXR0cmlidXRlIE1vY2tQ
YXltZW50Q29vcmRpbmF0b3IgbW9ja1BheW1lbnRDb29yZGluYXRvcjsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50LmggYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tQYXltZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTk1MzlmYjJkYzZlMDlhMjNiNTk3MzI5
NzM0ODM3ZTllODVmNTdmMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja1BheW1lbnQuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZKQorCisjaW5jbHVkZSAiQXBwbGVQYXlQYXltZW50
LmgiCisjaW5jbHVkZSAiUGF5bWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IE1vY2tQYXltZW50IGZpbmFsIDogcHVibGljIFBheW1lbnQgeworcHVibGljOgorICAgIGV4cGxp
Y2l0IE1vY2tQYXltZW50KEFwcGxlUGF5UGF5bWVudCYmIGFwcGxlUGF5UGF5bWVudCkKKyAgICAg
ICAgOiBtX2FwcGxlUGF5UGF5bWVudCB7IFdURk1vdmUoYXBwbGVQYXlQYXltZW50KSB9CisgICAg
eworICAgIH0KKworICAgIEFwcGxlUGF5UGF5bWVudCB0b0FwcGxlUGF5UGF5bWVudCgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fYXBwbGVQYXlQYXltZW50OyB9CisKK3ByaXZhdGU6CisgICAgQXBw
bGVQYXlQYXltZW50IG1fYXBwbGVQYXlQYXltZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEFQUExFX1BBWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRBZGRyZXNzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tQYXltZW50QWRkcmVzcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIxMjNjZjVhZjYwNzhhYzk0YTE3
Zjk2OGIxMjhmZTY0OTFjODQ3MjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tQYXltZW50QWRkcmVzcy5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBUFBMRV9QQVkpCisKKyNpbmNsdWRlICJBcHBs
ZVBheVBheW1lbnRDb250YWN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IE1v
Y2tQYXltZW50QWRkcmVzcyA6IEFwcGxlUGF5UGF5bWVudENvbnRhY3QgeworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEFQUExFX1BBWSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRBZGRyZXNzLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRBZGRyZXNzLmlkbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMGIy
ZTFiYjRmZjFjNjkyMGY4Y2Q2ODY1NmFjYzQ4MzE1MWYwYzcxCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudEFkZHJlc3MuaWRsCkBAIC0wLDAgKzEs
MzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9QVBQTEVfUEFZCitdIGRpY3Rp
b25hcnkgTW9ja1BheW1lbnRBZGRyZXNzIHsKKyAgICBET01TdHJpbmcgY291bnRyeUNvZGU7Cisg
ICAgRnJvemVuQXJyYXk8RE9NU3RyaW5nPiBhZGRyZXNzTGluZXM7CisgICAgRE9NU3RyaW5nIGFk
bWluaXN0cmF0aXZlQXJlYTsKKyAgICBET01TdHJpbmcgbG9jYWxpdHk7CisgICAgRE9NU3RyaW5n
IHN1YkxvY2FsaXR5OworICAgIERPTVN0cmluZyBwb3N0YWxDb2RlOworICAgIERPTVN0cmluZyBs
b2NhbGl6ZWROYW1lOworICAgIERPTVN0cmluZyBwaG9uZU51bWJlcjsKKyAgICBET01TdHJpbmcg
ZW1haWxBZGRyZXNzOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a1BheW1lbnRDb250YWN0LmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29u
dGFjdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmI1MjlkNDRiMmYzNTJhY2JjYjgyZjllYjA5NDNlZTE4NzhlZDYw
NDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50
Q29udGFjdC5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShBUFBMRV9QQVkpCisKKyNpbmNsdWRlICJBcHBsZVBheVBheW1lbnRDb250YWN0
LmgiCisjaW5jbHVkZSAiUGF5bWVudENvbnRhY3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBNb2NrUGF5bWVudENvbnRhY3QgZmluYWwgOiBwdWJsaWMgUGF5bWVudENvbnRhY3Qg
eworcHVibGljOgorICAgIGV4cGxpY2l0IE1vY2tQYXltZW50Q29udGFjdChBcHBsZVBheVBheW1l
bnRDb250YWN0JiYgYXBwbGVQYXlQYXltZW50Q29udGFjdCkKKyAgICAgICAgOiBtX2FwcGxlUGF5
UGF5bWVudENvbnRhY3QgeyBXVEZNb3ZlKGFwcGxlUGF5UGF5bWVudENvbnRhY3QpIH0KKyAgICB7
CisgICAgfQorCisgICAgQXBwbGVQYXlQYXltZW50Q29udGFjdCB0b0FwcGxlUGF5UGF5bWVudENv
bnRhY3QoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2FwcGxlUGF5UGF5bWVudENvbnRhY3Q7IH0K
KworcHJpdmF0ZToKKyAgICBBcHBsZVBheVBheW1lbnRDb250YWN0IG1fYXBwbGVQYXlQYXltZW50
Q29udGFjdDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShBUFBMRV9QQVkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXlt
ZW50Q29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENv
b3JkaW5hdG9yLmNwcAppbmRleCA5Nzk0YjI4ZGM5NDMyYWVhMWI4NGE0OWE0N2QxNDE4MzUwZTMx
NDFhLi41ZjUxOGYwNmE4NTY5MjNhODRkMDczZTBmMWFmMzllMmQ2NDgwMTlhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5jcHAKQEAgLTI5
LDYgKzI5LDggQEAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQogCiAjaW5jbHVkZSAiTWFpbkZyYW1l
LmgiCisjaW5jbHVkZSAiTW9ja1BheW1lbnQuaCIKKyNpbmNsdWRlICJNb2NrUGF5bWVudENvbnRh
Y3QuaCIKICNpbmNsdWRlICJQYXltZW50Q29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJVUkwuaCIK
ICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgpAQCAtNTgsMzAgKzYwLDc1IEBAIGJvb2wgTW9ja1Bh
eW1lbnRDb29yZGluYXRvcjo6Y2FuTWFrZVBheW1lbnRzKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotdm9pZCBNb2NrUGF5bWVudENvb3JkaW5hdG9yOjpjYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZl
Q2FyZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE1vY2tQYXltZW50Q29vcmRpbmF0b3I6OmNh
bk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYs
IEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSgpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CiAgICAgfSk7
CiB9CiAKLXZvaWQgTW9ja1BheW1lbnRDb29yZGluYXRvcjo6b3BlblBheW1lbnRTZXR1cChjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIE1vY2tQYXltZW50Q29vcmRpbmF0b3I6Om9wZW5QYXltZW50
U2V0dXAoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgRnVuY3Rpb248dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2Nv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgewogICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKICAgICB9KTsKIH0KIAorc3RhdGljIHVpbnQ2NF90
IHNob3dDb3VudDsKK3N0YXRpYyB1aW50NjRfdCBoaWRlQ291bnQ7CisKK3N0YXRpYyB2b2lkIGRp
c3BhdGNoSWZTaG93aW5nKEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKK3sKKyAgICBBU1NF
UlQoc2hvd0NvdW50ID4gaGlkZUNvdW50KTsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W2N1cnJlbnRTaG93Q291bnQgPSBzaG93Q291bnQsIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlv
bildKCkgeworICAgICAgICBpZiAoc2hvd0NvdW50ID4gaGlkZUNvdW50ICYmIHNob3dDb3VudCA9
PSBjdXJyZW50U2hvd0NvdW50KQorICAgICAgICAgICAgZnVuY3Rpb24oKTsKKyAgICB9KTsKK30K
KwogYm9vbCBNb2NrUGF5bWVudENvb3JkaW5hdG9yOjpzaG93UGF5bWVudFVJKGNvbnN0IFVSTCYs
IGNvbnN0IFZlY3RvcjxVUkw+JiwgY29uc3QgQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Qm
KQogewotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbbWFpbkZyYW1lID0gbWFrZVJlZiht
X21haW5GcmFtZSldKCkgeworICAgIEFTU0VSVChzaG93Q291bnQgPT0gaGlkZUNvdW50KTsKKyAg
ICArK3Nob3dDb3VudDsKKyAgICBkaXNwYXRjaElmU2hvd2luZyhbbWFpbkZyYW1lID0gbWFrZVJl
ZihtX21haW5GcmFtZSldKCkgewogICAgICAgICBtYWluRnJhbWUtPnBheW1lbnRDb29yZGluYXRv
cigpLnZhbGlkYXRlTWVyY2hhbnQoeyBVUkwoKSwgQVNDSUlMaXRlcmFsKCJodHRwczovL3dlYmtp
dC5vcmcvIikgfSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgTW9ja1Bh
eW1lbnRDb29yZGluYXRvcjo6Y29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgUGF5bWVu
dE1lcmNoYW50U2Vzc2lvbiYpCit7CisgICAgZGlzcGF0Y2hJZlNob3dpbmcoW21haW5GcmFtZSA9
IG1ha2VSZWYobV9tYWluRnJhbWUpLCBzaGlwcGluZ0FkZHJlc3MgPSBtX3NoaXBwaW5nQWRkcmVz
c10oKSB7CisgICAgICAgIEFwcGxlUGF5UGF5bWVudENvbnRhY3QgY29udGFjdCA9IHNoaXBwaW5n
QWRkcmVzczsKKyAgICAgICAgbWFpbkZyYW1lLT5wYXltZW50Q29vcmRpbmF0b3IoKS5kaWRTZWxl
Y3RTaGlwcGluZ0NvbnRhY3QoTW9ja1BheW1lbnRDb250YWN0IHsgV1RGTW92ZShjb250YWN0KSB9
KTsKKworICAgICAgICBBcHBsZVBheVBheW1lbnQgcGF5bWVudDsKKyAgICAgICAgcGF5bWVudC5z
aGlwcGluZ0NvbnRhY3QgPSBzaGlwcGluZ0FkZHJlc3M7CisgICAgICAgIG1haW5GcmFtZS0+cGF5
bWVudENvb3JkaW5hdG9yKCkuZGlkQXV0aG9yaXplUGF5bWVudChNb2NrUGF5bWVudCB7IFdURk1v
dmUocGF5bWVudCkgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgTW9ja1BheW1lbnRDb29yZGluYXRv
cjo6Y29tcGxldGVQYXltZW50U2Vzc2lvbihzdGQ6Om9wdGlvbmFsPFBheW1lbnRBdXRob3JpemF0
aW9uUmVzdWx0PiYmKQoreworICAgICsraGlkZUNvdW50OworICAgIEFTU0VSVChzaG93Q291bnQg
PT0gaGlkZUNvdW50KTsKK30KKwordm9pZCBNb2NrUGF5bWVudENvb3JkaW5hdG9yOjphYm9ydFBh
eW1lbnRTZXNzaW9uKCkKK3sKKyAgICArK2hpZGVDb3VudDsKKyAgICBBU1NFUlQoc2hvd0NvdW50
ID09IGhpZGVDb3VudCk7Cit9CisKK3ZvaWQgTW9ja1BheW1lbnRDb29yZGluYXRvcjo6Y2FuY2Vs
UGF5bWVudFNlc3Npb24oKQoreworICAgICsraGlkZUNvdW50OworICAgIEFTU0VSVChzaG93Q291
bnQgPT0gaGlkZUNvdW50KTsKK30KKwogdm9pZCBNb2NrUGF5bWVudENvb3JkaW5hdG9yOjpwYXlt
ZW50Q29vcmRpbmF0b3JEZXN0cm95ZWQoKQogeworICAgIEFTU0VSVChzaG93Q291bnQgPT0gaGlk
ZUNvdW50KTsKICAgICBkZWxldGUgdGhpczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3IuaAppbmRleCAyMmJlOWIzYTgyYjNjNmVkMjkzOGEz
NWRlNzY2NTAzM2M2Y2E2MTU4Li42OWU4Y2Q5OTE5MTE3NDMxMmExNjA4MjU3YmM0ZWFkOTlhMDQy
NGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRp
bmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0
b3IuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKIAorI2luY2x1
ZGUgIk1vY2tQYXltZW50QWRkcmVzcy5oIgogI2luY2x1ZGUgIlBheW1lbnRDb29yZGluYXRvckNs
aWVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNywyMiArMzgsMjggQEAgY2xhc3Mg
TW9ja1BheW1lbnRDb29yZGluYXRvciBmaW5hbCA6IHB1YmxpYyBQYXltZW50Q29vcmRpbmF0b3JD
bGllbnQgewogcHVibGljOgogICAgIGV4cGxpY2l0IE1vY2tQYXltZW50Q29vcmRpbmF0b3IoTWFp
bkZyYW1lJik7CiAKKyAgICB2b2lkIHNldFNoaXBwaW5nQWRkcmVzcyhNb2NrUGF5bWVudEFkZHJl
c3MmJiBzaGlwcGluZ0FkZHJlc3MpIHsgbV9zaGlwcGluZ0FkZHJlc3MgPSBXVEZNb3ZlKHNoaXBw
aW5nQWRkcmVzcyk7IH0KKworICAgIHZvaWQgcmVmKCkgY29uc3QgeyB9CisgICAgdm9pZCBkZXJl
ZigpIGNvbnN0IHsgfQorCiBwcml2YXRlOgogICAgIGJvb2wgc3VwcG9ydHNWZXJzaW9uKHVuc2ln
bmVkKSBmaW5hbDsKICAgICBib29sIGNhbk1ha2VQYXltZW50cygpIGZpbmFsOwogICAgIHZvaWQg
Y2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIG9wZW5QYXltZW50U2V0
dXAoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wp
PiYmKTsKICAgICBib29sIHNob3dQYXltZW50VUkoY29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFVS
TD4mLCBjb25zdCBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYpIGZpbmFsOwotICAgIHZv
aWQgY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgUGF5bWVudE1lcmNoYW50U2Vzc2lv
biYpIGZpbmFsIHsgfQorICAgIHZvaWQgY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3Qg
UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYpIGZpbmFsOwogICAgIHZvaWQgY29tcGxldGVTaGlwcGlu
Z01ldGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPFNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmKSBm
aW5hbCB7IH0KICAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKHN0ZDo6
b3B0aW9uYWw8U2hpcHBpbmdDb250YWN0VXBkYXRlPiYmKSBmaW5hbCB7IH0KICAgICB2b2lkIGNv
bXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPFBheW1lbnRNZXRob2RV
cGRhdGU+JiYpIGZpbmFsIHsgfQotICAgIHZvaWQgY29tcGxldGVQYXltZW50U2Vzc2lvbihzdGQ6
Om9wdGlvbmFsPFBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0PiYmKSBmaW5hbCB7IH0KLSAgICB2
b2lkIGFib3J0UGF5bWVudFNlc3Npb24oKSBmaW5hbCB7IH0KLSAgICB2b2lkIGNhbmNlbFBheW1l
bnRTZXNzaW9uKCkgZmluYWwgeyB9CisgICAgdm9pZCBjb21wbGV0ZVBheW1lbnRTZXNzaW9uKHN0
ZDo6b3B0aW9uYWw8UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+JiYpIGZpbmFsOworICAgIHZv
aWQgYWJvcnRQYXltZW50U2Vzc2lvbigpIGZpbmFsOworICAgIHZvaWQgY2FuY2VsUGF5bWVudFNl
c3Npb24oKSBmaW5hbDsKICAgICB2b2lkIHBheW1lbnRDb29yZGluYXRvckRlc3Ryb3llZCgpIGZp
bmFsOwogCiAgICAgTWFpbkZyYW1lJiBtX21haW5GcmFtZTsKKyAgICBNb2NrUGF5bWVudEFkZHJl
c3MgbV9zaGlwcGluZ0FkZHJlc3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3IuaWRs
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmlkbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lNWJhMzA5YWQ2ZTg1ODZmMGJiMTg0MmMxYmZmNjU3YTkxODU2Yjk0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9y
LmlkbApAQCAtMCwwICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPUFQ
UExFX1BBWSwKKyAgICBOb0ludGVyZmFjZU9iamVjdCwKK10gaW50ZXJmYWNlIE1vY2tQYXltZW50
Q29vcmRpbmF0b3IgeworICAgIHZvaWQgc2V0U2hpcHBpbmdBZGRyZXNzKE1vY2tQYXltZW50QWRk
cmVzcyBzaGlwcGluZ0FkZHJlc3MpOworfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzMGYyYzYzODcyMTRhMTQzNGExN2Yw
N2FjYjRiMGNhOTJmYmUwODVkLi45OGU1ZjI4YzUzMGUzNjk0MjkzNjUyOTA2NjE0Yzg2NDkwMDdm
ZjE1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTctMTAtMjAgIEFuZHkgRXN0ZXMgIDxhZXN0
ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtQYXltZW50IFJlcXVlc3RdIFJlc29sdmUgUGF5bWVu
dFJlcXVlc3Quc2hvdygpJ3MgYWNjZXB0IHByb21pc2Ugd2hlbiBhIHBheW1lbnQgaXMgYXV0aG9y
aXplZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4
NjA5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMzU0MjgxMz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgICogaHR0cC90ZXN0cy9wYXltZW50cmVx
dWVzdC9wYXltZW50LWFkZHJlc3MtYXR0cmlidXRlcy1hbmQtdG9KU09OLW1ldGhvZC5odHRwcy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3Qv
cGF5bWVudC1hZGRyZXNzLWF0dHJpYnV0ZXMtYW5kLXRvSlNPTi1tZXRob2QuaHR0cHMuaHRtbDog
Q29waWVkIGZyb20gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9wYXltZW50LXJlcXVl
c3QvUGF5bWVudEFkZHJlc3MvYXR0cmlidXRlcy1hbmQtdG9KU09OLW1ldGhvZC1tYW51YWwuaHR0
cHMuaHRtbC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVz
cG9uc2UtY29tcGxldGUtbWV0aG9kLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLWNvbXBsZXRlLW1l
dGhvZC5odHRwcy5odG1sOiBDb3BpZWQgZnJvbSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3BheW1lbnQtcmVxdWVzdC9wYXltZW50LXJlc3BvbnNlL2NvbXBsZXRlLW1ldGhvZC1tYW51
YWwuaHR0cHMuaHRtbC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1l
bnQtcmVzcG9uc2UtbWV0aG9kTmFtZS1hdHRyaWJ1dGUuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2Ut
bWV0aG9kTmFtZS1hdHRyaWJ1dGUuaHR0cHMuaHRtbDogQ29waWVkIGZyb20gaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9wYXltZW50LXJlcXVlc3QvcGF5bWVudC1yZXNwb25zZS9tZXRo
b2ROYW1lLWF0dHJpYnV0ZS1tYW51YWwuaHR0cHMuaHRtbC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtcGF5ZXJFbWFpbC1hdHRyaWJ1dGUuaHR0
cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3BheW1lbnRyZXF1
ZXN0L3BheW1lbnQtcmVzcG9uc2UtcGF5ZXJFbWFpbC1hdHRyaWJ1dGUuaHR0cHMuaHRtbDogQ29w
aWVkIGZyb20gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9wYXltZW50LXJlcXVlc3Qv
cGF5bWVudC1yZXNwb25zZS9wYXllckVtYWlsLWF0dHJpYnV0ZS1tYW51YWwuaHR0cHMuaHRtbC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtcGF5
ZXJOYW1lLWF0dHJpYnV0ZS5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXNwb25zZS1wYXllck5hbWUtYXR0cmli
dXRlLmh0dHBzLmh0bWw6IENvcGllZCBmcm9tIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvcGF5bWVudC1yZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UvcGF5ZXJOYW1lLWF0dHJpYnV0ZS1t
YW51YWwuaHR0cHMuaHRtbC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3Bh
eW1lbnQtcmVzcG9uc2UtcGF5ZXJQaG9uZS1hdHRyaWJ1dGUuaHR0cHMtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9u
c2UtcGF5ZXJQaG9uZS1hdHRyaWJ1dGUuaHR0cHMuaHRtbDogQ29waWVkIGZyb20gaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9wYXltZW50LXJlcXVlc3QvcGF5bWVudC1yZXNwb25zZS9w
YXllclBob25lLWF0dHJpYnV0ZS1tYW51YWwuaHR0cHMuaHRtbC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL3BheW1lbnRyZXF1ZXN0L3Jlc291cmNlcy9oZWxwZXJzLmpzOiBDb3BpZWQgZnJvbSBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3BheW1lbnQtcmVxdWVzdC9wYXltZW50LXJlc3Bv
bnNlL2hlbHBlcnMuanMuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKGFzeW5jLmdldFBheW1l
bnRSZXNwb25zZSk6CisgICAgICAgIChhc3luYy5nZXRQYXltZW50UmVxdWVzdFJlc3BvbnNlKToK
KyAgICAgICAgKGFzeW5jLnJ1blRlc3QpOgorCiAyMDE3LTEwLTIzICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRHJvcCBjb25mdXNpbmcgRXZlbnQ6OmRpc3BhdGNo
ZWQoKSBtZXRob2QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJl
cXVlc3QvcGF5bWVudC1hZGRyZXNzLWF0dHJpYnV0ZXMtYW5kLXRvSlNPTi1tZXRob2QuaHR0cHMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXlt
ZW50LWFkZHJlc3MtYXR0cmlidXRlcy1hbmQtdG9KU09OLW1ldGhvZC5odHRwcy1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMzI4N2EwODg5MzczNjY1Yzc4MTM2MmJmNmQ3NDM4NDE0NmQzNzliMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3Qv
cGF5bWVudC1hZGRyZXNzLWF0dHJpYnV0ZXMtYW5kLXRvSlNPTi1tZXRob2QuaHR0cHMtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorSWYgdGhlIHJlcXVlc3RTaGlwcGluZyBtZW1iZXIgaXMg
dHJ1ZSwgdGhlbiBzaGlwcGluZ0FkZHJlc3MncyBQYXltZW50QWRkcmVzcyBtdXN0IG1hdGNoIHRo
ZSBleHBlY3RlZCB2YWx1ZXMuCisKK1BBU1MgQ2FuIGNvbnN0cnVjdCBhIHBheW1lbnQgcmVxdWVz
dCAoc21va2UgdGVzdCkuIAorUEFTUyBJZiB0aGUgcmVxdWVzdFNoaXBwaW5nIG1lbWJlciBpcyB0
cnVlLCB0aGVuIHNoaXBwaW5nQWRkcmVzcydzIFBheW1lbnRBZGRyZXNzIG11c3QgbWF0Y2ggdGhl
IGV4cGVjdGVkIHZhbHVlcy4gCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
cGF5bWVudHJlcXVlc3QvcGF5bWVudC1hZGRyZXNzLWF0dHJpYnV0ZXMtYW5kLXRvSlNPTi1tZXRo
b2QuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5
bWVudC1hZGRyZXNzLWF0dHJpYnV0ZXMtYW5kLXRvSlNPTi1tZXRob2QuaHR0cHMuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hNWYwODBiNzNhMjM0OGRhMDU4ZTVmZTUzZWZhZTg0NzAyYmNlOTI0Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50
LWFkZHJlc3MtYXR0cmlidXRlcy1hbmQtdG9KU09OLW1ldGhvZC5odHRwcy5odG1sCkBAIC0wLDAg
KzEsOTAgQEAKKzwhZG9jdHlwZSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRmOCI+Cis8bGluayBy
ZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vd3d3LnczLm9yZy9UUi9wYXltZW50LXJlcXVlc3QvI3Bh
eW1lbnRhZGRyZXNzLWludGVyZmFjZSI+Cis8dGl0bGU+CisgIFBheW1lbnRSZXNwb25zZS5wcm90
b3R5cGUuc2hpcHBpbmdBZGRyZXNzCis8L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9oZWxwZXJz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citjb25zdCBvcHRpb25zID0geyByZXF1ZXN0U2hpcHBp
bmc6IHRydWUgfTsKK2Z1bmN0aW9uIHJ1blRlc3QoYnV0dG9uLCBleHBlY3RlZCA9IHt9KSB7Cisg
IGJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7CisgIHByb21pc2VfdGVzdChhc3luYyAoKSA9PiB7Cisg
ICAgY29uc3QgeyByZXNwb25zZSB9ID0gYXdhaXQgZ2V0UGF5bWVudFJlcXVlc3RSZXNwb25zZShv
cHRpb25zKTsKKyAgICBhd2FpdCByZXNwb25zZS5jb21wbGV0ZSgpOworICAgIGFzc2VydF9pZGxf
YXR0cmlidXRlKHJlc3BvbnNlLCAic2hpcHBpbmdBZGRyZXNzIik7CisgICAgY29uc3QgeyBzaGlw
cGluZ0FkZHJlc3M6IGFkZHIgfSA9IHJlc3BvbnNlOworICAgIGFzc2VydF90cnVlKAorICAgICAg
YWRkciBpbnN0YW5jZW9mIFBheW1lbnRBZGRyZXNzLAorICAgICAgIkV4cGVjdCBpbnN0YW5jZSBv
ZiBQYXltZW50QWRkcmVzcyIKKyAgICApOworICAgIC8vIEFuIFtJU08zMTY2XSBhbHBoYS0yIGNv
ZGUuIFRoZSBjYW5vbmljYWwgZm9ybSBpcyB1cHBlciBjYXNlLgorICAgIGNvbnN0IHsgY291bnRy
eSB9ID0gYWRkcjsKKyAgICBhc3NlcnRfZXF1YWxzKGNvdW50cnkubGVuZ3RoLCAyLCAiRXhwZWN0
ZWQgbGVuZ3RoIGlzIDIiKTsKKyAgICBhc3NlcnRfdHJ1ZSgvXltBLVpdezJ9JC8udGVzdChjb3Vu
dHJ5KSwgIkNhbm9uaWNhbCBmb3JtIGlzIHVwcGVyIGNhc2UiKTsKKyAgICBhc3NlcnRfdHJ1ZSgK
KyAgICAgIGFkZHIuYWRkcmVzc0xpbmUgaW5zdGFuY2VvZiBBcnJheSwKKyAgICAgICJFeHBlY3Rl
ZCBhZGRyZXNzTGluZSB0byBiZSBhbiBhcnJheSIKKyAgICApOworICAgIGFzc2VydF90aHJvd3Mo
CisgICAgICBuZXcgVHlwZUVycm9yKCksCisgICAgICAoKSA9PiB7CisgICAgICAgIGFkZHIuYWRk
cmVzc0xpbmUucHVzaCgidGhpcyBtdXN0IHRocm93Iik7CisgICAgICB9LAorICAgICAgIkFycmF5
IG11c3QgYmUgZnJvemVuIgorICAgICk7CisgICAgZm9yIChsZXQgW2F0dHIsIGV4cGVjdGVkVmFs
dWVdIG9mIE9iamVjdC5lbnRyaWVzKGV4cGVjdGVkKSkgeworICAgICAgYXNzZXJ0X2lkbF9hdHRy
aWJ1dGUoYWRkciwgYXR0cik7CisgICAgICBjb25zdCBtc2cgPSBgRXhwZWN0ZWQgcGF5bWVudEFk
ZHJlc3MuJHthdHRyfSB0byBlcXVhbCAke2V4cGVjdGVkVmFsdWV9LmA7CisgICAgICAvLy50b1N0
cmluZygpIGZsYXR0ZW5zIGFycmF5IGFkZHJlc3NMaW5lLAorICAgICAgLy8udG9Mb3dlckNhc2Uo
KSBiZWNhdXNlIGNhc2UgY2FuJ3QgYmUgZW5mb3JjZWQgZm9yIHNvbWUgYXR0cmlidXRlcworICAg
ICAgY29uc3QgYWN0dWFsVmFsdWUgPSBhZGRyW2F0dHJdLnRvU3RyaW5nKCkudG9Mb3dlckNhc2Uo
KTsKKyAgICAgIGV4cGVjdGVkVmFsdWUgPSBleHBlY3RlZFZhbHVlLnRvU3RyaW5nKCkudG9Mb3dl
ckNhc2UoKTsKKyAgICAgIGFzc2VydF9lcXVhbHMoYWN0dWFsVmFsdWUsIGV4cGVjdGVkVmFsdWUs
IG1zZyk7CisgICAgfQorICAgIC8vIENoZWNrIHRvSlNPTiByZXN1bHQKKyAgICBmb3IgKGxldCBb
cHJvcCwganNvblZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhhZGRyLnRvSlNPTigpKSkgeworICAg
ICAgY29uc3QgYWN0dWFsVmFsdWUgPSBqc29uVmFsdWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgp
OworICAgICAgY29uc3QgZXhwZWN0ZWRWYWx1ZSA9IGV4cGVjdGVkW3Byb3BdLnRvU3RyaW5nKCku
dG9Mb3dlckNhc2UoKTsKKyAgICAgIGNvbnN0IG1zZyA9IGBFeHBlY3RlZCBKU09OICR7cHJvcH0g
dG8gYmUgJHtleHBlY3RlZFZhbHVlfWA7CisgICAgICBhc3NlcnRfZXF1YWxzKGFjdHVhbFZhbHVl
LCBleHBlY3RlZFZhbHVlLCBtc2cpOworICAgIH0KKyAgfSwgYnV0dG9uLnRleHRDb250ZW50LnRy
aW0oKSk7CisgIGRvbmUoKTsKK30KKzwvc2NyaXB0PgorPG9sPgorICA8bGk+CisgICAgPGJ1dHRv
biBpZD0iYnV0dG9uIj4KKyAgICAgIElmIHRoZSByZXF1ZXN0U2hpcHBpbmcgbWVtYmVyIGlzIHRy
dWUsIHRoZW4gc2hpcHBpbmdBZGRyZXNzJ3MgUGF5bWVudEFkZHJlc3MgbXVzdCBtYXRjaCB0aGUg
ZXhwZWN0ZWQgdmFsdWVzLgorICAgIDwvYnV0dG9uPgorICA8L2xpPgorPC9vbD4KKzxzY3JpcHQ+
CisgICAgY29uc3QgYWRkcmVzcyA9IHsKKyAgICAgICAgY291bnRyeUNvZGU6ICdBRicsCisgICAg
ICAgIGFkZHJlc3NMaW5lczogWycxIHdwdCBzdHJlZXQnXSwKKyAgICAgICAgbG9jYWxpdHk6ICdL
YWJ1bCcsCisgICAgICAgIHBvc3RhbENvZGU6ICcxMDAxJywKKyAgICAgICAgbG9jYWxpemVkTmFt
ZTogJ3dlYiBwbGF0Zm9ybSB0ZXN0JywKKyAgICAgICAgcGhvbmVOdW1iZXI6ICcrOTM1NTU1NTU1
NTUnLAorICAgIH07CisgICAgaW50ZXJuYWxzLm1vY2tQYXltZW50Q29vcmRpbmF0b3Iuc2V0U2hp
cHBpbmdBZGRyZXNzKGFkZHJlc3MpOworCisgICAgY29uc3QgZXhwZWN0ZWRBZGRyZXNzID0gewor
ICAgICAgICBjb3VudHJ5OiBhZGRyZXNzLmNvdW50cnlDb2RlLAorICAgICAgICBhZGRyZXNzTGlu
ZTogYWRkcmVzcy5hZGRyZXNzTGluZXMsCisgICAgICAgIHJlZ2lvbjogJycsCisgICAgICAgIGNp
dHk6IGFkZHJlc3MubG9jYWxpdHksCisgICAgICAgIGRlcGVuZGVudExvY2FsaXR5OiAnJywKKyAg
ICAgICAgcG9zdGFsQ29kZTogYWRkcmVzcy5wb3N0YWxDb2RlLAorICAgICAgICBzb3J0aW5nQ29k
ZTogJycsCisgICAgICAgIGxhbmd1YWdlQ29kZTogJycsCisgICAgICAgIG9yZ2FuaXphdGlvbjog
JycsCisgICAgICAgIHJlY2lwaWVudDogYWRkcmVzcy5sb2NhbGl6ZWROYW1lLAorICAgICAgICBw
aG9uZTogYWRkcmVzcy5waG9uZU51bWJlciwKKyAgICB9OworICAgIHJ1blRlc3QoZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImJ1dHRvbiIpLCBleHBlY3RlZEFkZHJlc3MpOworPC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQt
cmVzcG9uc2UtY29tcGxldGUtbWV0aG9kLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXNwb25zZS1jb21wbGV0ZS1tZXRo
b2QuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5MDY5MWU0NGY4MWUzMzU3NzYxNmIw
ZjBhNThmMzQwMDRjZGI0ODQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtY29tcGxldGUtbWV0aG9kLmh0dHBz
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACivinIUgSWYgdGhlIHZhbHVlIG9mIHRoZSBp
bnRlcm5hbCBzbG90IFtbY29tcGxldGVDYWxsZWRdXSBpcyB0cnVlLCByZWplY3QgcHJvbWlzZSB3
aXRoIGFuICJJbnZhbGlkU3RhdGVFcnJvciIgRE9NRXhjZXB0aW9uLgor4pyFIFBhc3Npbmcgbm8g
YXJndW1lbnQgZGVmYXVsdHMgdG8gInVua25vd24iLCBldmVudHVhbGx5IGNsb3NpbmcgdGhlIHNo
ZWV0IGFuZCBkb2Vzbid0IHRocm93Lgor4pyFIFBhc3NpbmcgInN1Y2Nlc3MiIGV2ZW50dWFsbHkg
Y2xvc2VzIHRoZSBzaGVldCBhbmQgZG9lc24ndCB0aHJvdy4KK+KchSBQYXNzaW5nICJmYWlsIiBl
dmVudHVhbGx5IGNsb3NlcyB0aGUgc2hlZXQgYW5kIGRvZXNuJ3QgdGhyb3cuCisKK1BBU1MgQ2Fu
IGNvbnN0cnVjdCBhIHBheW1lbnQgcmVxdWVzdCAoc21va2UgdGVzdCkuIAorUEFTUyBJZiB0aGUg
dmFsdWUgb2YgdGhlIGludGVybmFsIHNsb3QgW1tjb21wbGV0ZUNhbGxlZF1dIGlzIHRydWUsCisg
ICAgICByZWplY3QgcHJvbWlzZSB3aXRoIGFuICJJbnZhbGlkU3RhdGVFcnJvciIgRE9NRXhjZXB0
aW9uLiAKK1BBU1MgUGFzc2luZyBubyBhcmd1bWVudCBkZWZhdWx0cyB0byAidW5rbm93biIsCisg
ICAgICBldmVudHVhbGx5IGNsb3NpbmcgdGhlIHNoZWV0IGFuZCBkb2Vzbid0IHRocm93LiAKK1BB
U1MgUGFzc2luZyAic3VjY2VzcyIgZXZlbnR1YWxseSBjbG9zZXMgdGhlIHNoZWV0IGFuZCBkb2Vz
bid0IHRocm93LiAKK1BBU1MgUGFzc2luZyAiZmFpbCIgZXZlbnR1YWxseSBjbG9zZXMgdGhlIHNo
ZWV0IGFuZCBkb2Vzbid0IHRocm93LiAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLWNvbXBsZXRlLW1ldGhvZC5odHRw
cy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJl
c3BvbnNlLWNvbXBsZXRlLW1ldGhvZC5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmZDY4MjdhMDcz
MzQ5M2NhN2E5NjM1NGE0NmZhM2FhZmFhYjdhZDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtY29tcGxldGUt
bWV0aG9kLmh0dHBzLmh0bWwKQEAgLTAsMCArMSw3OSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8bWV0
YSBjaGFyc2V0PSJ1dGY4Ij4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly93M2MuZ2l0
aHViLmlvL3BheW1lbnQtcmVxdWVzdC8jZG9tLXBheW1lbnRyZXNwb25zZS1jb21wbGV0ZSgpIj4K
Kzx0aXRsZT4KKyAgUGF5bWVudFJlc3BvbnNlLnByb3RvdHlwZS5jb21wbGV0ZSgpIG1ldGhvZAor
PC90aXRsZT4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaGVscGVycy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
PgorYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCh7IGNvbXBsZXRlV2l0aDogcmVzdWx0IH0sIGJ1dHRv
bikgeworICBidXR0b24uZGlzYWJsZWQgPSB0cnVlOworICBjb25zdCB7IHJlc3BvbnNlLCByZXF1
ZXN0IH0gPSBhd2FpdCBnZXRQYXltZW50UmVxdWVzdFJlc3BvbnNlKCk7CisgIHByb21pc2VfdGVz
dChhc3luYyAoKSA9PiB7CisgICAgdHJ5IHsKKyAgICAgIC8vIFdlIC5jb21wbGV0ZSgpIGFzIG5v
cm1hbCwgdXNpbmcgdGhlIHBhc3NlZCB0ZXN0IHZhbHVlCisgICAgICBjb25zdCBwcm9taXNlID0g
cmVzcG9uc2UuY29tcGxldGUocmVzdWx0KTsKKyAgICAgIGFzc2VydF90cnVlKHByb21pc2UgaW5z
dGFuY2VvZiBQcm9taXNlLCAicmV0dXJucyBhIHByb21pc2UiKTsKKyAgICAgIGNvbnN0IHJldHVy
bmVkVmFsdWUgPSBhd2FpdCBwcm9taXNlOworICAgICAgYXNzZXJ0X2VxdWFscygKKyAgICAgICAg
cmV0dXJuZWRWYWx1ZSwKKyAgICAgICAgdW5kZWZpbmVkLAorICAgICAgICAiUmV0dXJuZWQgdmFs
dWUgbXVzdCBhbHdheXMgYmUgdW5kZWZpbmVkIgorICAgICAgKTsKKyAgICAgIC8vIFdlIG5vdyBj
YWxsIC5jb21wbGV0ZSgpIGFnYWluLCB0byBmb3JjZSBhbiBleGNlcHRpb24KKyAgICAgIC8vIGJl
Y2F1c2UgW1tjb21wbGV0ZUNhbGxlZF1dIGlzIHRydWUuCisgICAgICB0cnkgeworICAgICAgICBh
d2FpdCByZXNwb25zZS5jb21wbGV0ZShyZXN1bHQpOworICAgICAgICBhc3NlcnRfdW5yZWFjaGVk
KCJFeHBlY3RlZCBJbnZhbGlkU3RhdGVFcnJvciB0byBiZSB0aHJvd24iKTsKKyAgICAgIH0gY2F0
Y2ggKGVycikgeworICAgICAgICBhc3NlcnRfZXF1YWxzKAorICAgICAgICAgIGVyci5jb2RlLAor
ICAgICAgICAgIERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiwKKyAgICAgICAgICAiTXVz
dCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciIKKyAgICAgICAgKTsKKyAgICAgIH0KKyAgICAg
IGJ1dHRvbi5pbm5lckhUTUwgPSBg4pyFICAke2J1dHRvbi50ZXh0Q29udGVudH1gOworICAgIH0g
Y2F0Y2ggKGVycikgeworICAgICAgYnV0dG9uLmlubmVySFRNTCA9IGDinYwgICR7YnV0dG9uLnRl
eHRDb250ZW50fWA7CisgICAgICBhc3NlcnRfdW5yZWFjaGVkKCJVbmV4cGVjdGVkIGV4Y2VwdGlv
bjogIiArIGVyci5tZXNzYWdlKTsKKyAgICB9CisgIH0sIGJ1dHRvbi50ZXh0Q29udGVudC50cmlt
KCkpOworfQorPC9zY3JpcHQ+Cis8b2w+CisgIDxsaT4KKyAgICA8YnV0dG9uIGlkPSJidXR0b24x
Ij4KKyAgICAgIElmIHRoZSB2YWx1ZSBvZiB0aGUgaW50ZXJuYWwgc2xvdCBbW2NvbXBsZXRlQ2Fs
bGVkXV0gaXMgdHJ1ZSwKKyAgICAgIHJlamVjdCBwcm9taXNlIHdpdGggYW4gIkludmFsaWRTdGF0
ZUVycm9yIiBET01FeGNlcHRpb24uCisgICAgPC9idXR0b24+CisgIDwvbGk+CisgIDxsaT4KKyAg
ICA8YnV0dG9uIGlkPSJidXR0b24yIj4KKyAgICAgIFBhc3Npbmcgbm8gYXJndW1lbnQgZGVmYXVs
dHMgdG8gInVua25vd24iLAorICAgICAgZXZlbnR1YWxseSBjbG9zaW5nIHRoZSBzaGVldCBhbmQg
ZG9lc24ndCB0aHJvdy4KKyAgICA8L2J1dHRvbj4KKyAgPC9saT4KKyAgPGxpPgorICAgIDxidXR0
b24gaWQ9ImJ1dHRvbjMiPgorICAgICAgUGFzc2luZyAic3VjY2VzcyIgZXZlbnR1YWxseSBjbG9z
ZXMgdGhlIHNoZWV0IGFuZCBkb2Vzbid0IHRocm93LgorICAgIDwvYnV0dG9uPgorICA8L2xpPgor
ICA8bGk+CisgICAgPGJ1dHRvbiBpZD0iYnV0dG9uNCI+CisgICAgICBQYXNzaW5nICJmYWlsIiBl
dmVudHVhbGx5IGNsb3NlcyB0aGUgc2hlZXQgYW5kIGRvZXNuJ3QgdGhyb3cuCisgICAgPC9idXR0
b24+CisgIDwvbGk+Cis8L29sPgorPHNjcmlwdD4KKyAgICBhc3luYyBmdW5jdGlvbiBydW5UZXN0
cygpCisgICAgeworICAgICAgICBhd2FpdCBydW5UZXN0KHtjb21wbGV0ZVdpdGg6ICJzdWNjZXNz
In0sIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJidXR0b24xIikpOworICAgICAgICBhd2FpdCBy
dW5UZXN0KHtjb21wbGV0ZVdpdGg6ICJ1bmtub3duIn0sIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJidXR0b24yIikpOworICAgICAgICBhd2FpdCBydW5UZXN0KHtjb21wbGV0ZVdpdGg6ICJzdWNj
ZXNzIn0sIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJidXR0b24zIikpOworICAgICAgICBhd2Fp
dCBydW5UZXN0KHtjb21wbGV0ZVdpdGg6ICJmYWlsIn0sIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJidXR0b240IikpOworICAgICAgICBkb25lKCk7CisgICAgfQorICAgIHJ1blRlc3RzKCk7Cis8
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVl
c3QvcGF5bWVudC1yZXNwb25zZS1tZXRob2ROYW1lLWF0dHJpYnV0ZS5odHRwcy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9u
c2UtbWV0aG9kTmFtZS1hdHRyaWJ1dGUuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIz
NWM4NDhjYTg4YjQ4Mzg5NzdjYmY4ZDRkNjFjNjQ2ZDhhMjNiNmIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2Ut
bWV0aG9kTmFtZS1hdHRyaWJ1dGUuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAor
RXhwZWN0IHRoZSBwYXltZW50IG1ldGhvZCBpZGVudGlmaWVyIHRvIGJlICdodHRwczovL2FwcGxl
LmNvbS9hcHBsZS1wYXknLgorCitQQVNTIENhbiBjb25zdHJ1Y3QgYSBwYXltZW50IHJlcXVlc3Qg
KHNtb2tlIHRlc3QpLiAKK1BBU1MgRXhwZWN0IHRoZSBwYXltZW50IG1ldGhvZCBpZGVudGlmaWVy
IHRvIGJlICdodHRwczovL2FwcGxlLmNvbS9hcHBsZS1wYXknLiAKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLW1ldGhv
ZE5hbWUtYXR0cmlidXRlLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1l
bnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtbWV0aG9kTmFtZS1hdHRyaWJ1dGUuaHR0cHMuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45N2U4OWE2MDkyNzA0NzY0ZjBhMDIzY2RjODFlN2Y2NTZkYTNmNTU4Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9w
YXltZW50LXJlc3BvbnNlLW1ldGhvZE5hbWUtYXR0cmlidXRlLmh0dHBzLmh0bWwKQEAgLTAsMCAr
MSwxOSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGY4Ij4KKzxsaW5rIHJl
bD0iaGVscCIgaHJlZj0iaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3BheW1lbnQtcmVxdWVzdC8jZG9t
LXBheW1lbnRyZXNwb25zZS1tZXRob2RuYW1lIj4KKzx0aXRsZT4KKyAgUGF5bWVudFJlc3BvbnNl
LnByb3RvdHlwZS5tZXRob2ROYW1lIGF0dHJpYnV0ZQorPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvaGVscGVycy5qcyI+PC9zY3JpcHQ+Cis8b2w+CisgIDxsaT4KKyAgICA8YnV0dG9uIGlkPSJi
dXR0b24iPgorICAgICAgRXhwZWN0IHRoZSBwYXltZW50IG1ldGhvZCBpZGVudGlmaWVyIHRvIGJl
ICdodHRwczovL2FwcGxlLmNvbS9hcHBsZS1wYXknLgorICAgIDwvYnV0dG9uPgorICA8L2xpPgor
PC9vbD4KKzxzY3JpcHQ+CisgICAgcnVuVGVzdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnV0
dG9uIiksIHt9LCB7IG1ldGhvZE5hbWU6ICdodHRwczovL2FwcGxlLmNvbS9hcHBsZS1wYXknIH0p
LnRoZW4oZG9uZSk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXNwb25zZS1wYXllckVtYWlsLWF0dHJpYnV0ZS5o
dHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0
L3BheW1lbnQtcmVzcG9uc2UtcGF5ZXJFbWFpbC1hdHRyaWJ1dGUuaHR0cHMtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmY1Mzk2NDU2YTJlMzQxOWY3NDdlNWY2ZjJiZDJlMTMwZjFjMTU3MmEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3Bh
eW1lbnQtcmVzcG9uc2UtcGF5ZXJFbWFpbC1hdHRyaWJ1dGUuaHR0cHMtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTMgQEAKK3BheWVyRW1haWwgYXR0cmlidXRlIGlzIG51bGwgd2hlbiBvcHRpb25z
IHVuZGVmaW5lZC4KK3BheWVyRW1haWwgYXR0cmlidXRlIGlzIG51bGwgd2hlbiByZXF1ZXN0UGF5
ZXJFbWFpbCBpcyB1bmRlZmluZWQuCitwYXllckVtYWlsIGF0dHJpYnV0ZSBpcyBudWxsIHdoZW4g
cmVxdWVzdFBheWVyRW1haWwgaXMgZmFsc2UuCitwYXllckVtYWlsIGF0dHJpYnV0ZSBpcyAnd3B0
QHczLm9yZycgd2hlbiByZXF1ZXN0UGF5ZXJFbWFpbCBpcyB0cnVlLgorcGF5ZXJFbWFpbCBhdHRy
aWJ1dGUgaXMgJ3dwdEB3My5vcmcnIHdoZW4gcmVxdWVzdFBheWVyRW1haWwgaXMgdHJ1dGh5Lgor
CitQQVNTIENhbiBjb25zdHJ1Y3QgYSBwYXltZW50IHJlcXVlc3QgKHNtb2tlIHRlc3QpLiAKK1BB
U1MgcGF5ZXJFbWFpbCBhdHRyaWJ1dGUgaXMgbnVsbCB3aGVuIG9wdGlvbnMgdW5kZWZpbmVkLiAK
K1BBU1MgcGF5ZXJFbWFpbCBhdHRyaWJ1dGUgaXMgbnVsbCB3aGVuIHJlcXVlc3RQYXllckVtYWls
IGlzIHVuZGVmaW5lZC4gCitQQVNTIHBheWVyRW1haWwgYXR0cmlidXRlIGlzIG51bGwgd2hlbiBy
ZXF1ZXN0UGF5ZXJFbWFpbCBpcyBmYWxzZS4gCitQQVNTIHBheWVyRW1haWwgYXR0cmlidXRlIGlz
ICd3cHRAdzMub3JnJyB3aGVuIHJlcXVlc3RQYXllckVtYWlsIGlzIHRydWUuIAorUEFTUyBwYXll
ckVtYWlsIGF0dHJpYnV0ZSBpcyAnd3B0QHczLm9yZycgd2hlbiByZXF1ZXN0UGF5ZXJFbWFpbCBp
cyB0cnV0aHkuIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRy
ZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtcGF5ZXJFbWFpbC1hdHRyaWJ1dGUuaHR0cHMuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXNwb25zZS1w
YXllckVtYWlsLWF0dHJpYnV0ZS5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzZmI5MzUyZjlhMmE3
ZGNhNjZjMGJmYmE5MjI2NzNmMmYwZDkwNWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtcGF5ZXJFbWFpbC1h
dHRyaWJ1dGUuaHR0cHMuaHRtbApAQCAtMCwwICsxLDUwIEBACis8IWRvY3R5cGUgaHRtbD4KKzxt
ZXRhIGNoYXJzZXQ9InV0ZjgiPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL3czYy5n
aXRodWIuaW8vcGF5bWVudC1yZXF1ZXN0LyNkb20tcGF5bWVudHJlc3BvbnNlLXBheWVyZW1haWwi
PgorPHRpdGxlPgorICBQYXltZW50UmVzcG9uc2UucHJvdG90eXBlLnBheWVyRW1haWwgYXR0cmli
dXRlCis8L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9oZWxwZXJzLmpzIj48L3NjcmlwdD4KKzxv
bD4KKyAgPGxpPgorICAgIDxidXR0b24gaWQ9ImJ1dHRvbjEiPgorICAgICAgcGF5ZXJFbWFpbCBh
dHRyaWJ1dGUgaXMgbnVsbCB3aGVuIG9wdGlvbnMgdW5kZWZpbmVkLgorICAgIDwvYnV0dG9uPgor
ICA8L2xpPgorICA8bGk+CisgICAgPGJ1dHRvbiBpZD0iYnV0dG9uMiI+CisgICAgICBwYXllckVt
YWlsIGF0dHJpYnV0ZSBpcyBudWxsIHdoZW4gcmVxdWVzdFBheWVyRW1haWwgaXMgdW5kZWZpbmVk
LgorICAgIDwvYnV0dG9uPgorICA8L2xpPgorICA8bGk+CisgICAgPGJ1dHRvbiBpZD0iYnV0dG9u
MyI+CisgICAgICBwYXllckVtYWlsIGF0dHJpYnV0ZSBpcyBudWxsIHdoZW4gcmVxdWVzdFBheWVy
RW1haWwgaXMgZmFsc2UuCisgICAgPC9idXR0b24+CisgIDwvbGk+CisgIDxsaT4KKyAgICA8YnV0
dG9uIGlkPSJidXR0b240Ij4KKyAgICAgIHBheWVyRW1haWwgYXR0cmlidXRlIGlzICd3cHRAdzMu
b3JnJyB3aGVuIHJlcXVlc3RQYXllckVtYWlsIGlzIHRydWUuCisgICAgPC9idXR0b24+CisgIDwv
bGk+CisgIDxsaT4KKyAgICA8YnV0dG9uIGlkPSJidXR0b241Ij4KKyAgICAgIHBheWVyRW1haWwg
YXR0cmlidXRlIGlzICd3cHRAdzMub3JnJyB3aGVuIHJlcXVlc3RQYXllckVtYWlsIGlzIHRydXRo
eS4KKyAgICA8L2J1dHRvbj4KKyAgPC9saT4KKzwvb2w+Cis8c2NyaXB0PgorICAgIGludGVybmFs
cy5tb2NrUGF5bWVudENvb3JkaW5hdG9yLnNldFNoaXBwaW5nQWRkcmVzcyh7IGVtYWlsQWRkcmVz
czogJ3dwdEB3My5vcmcnIH0pOworCisgICAgYXN5bmMgZnVuY3Rpb24gcnVuVGVzdHMoKQorICAg
IHsKKyAgICAgICAgYXdhaXQgcnVuVGVzdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnV0dG9u
MSIpLCB1bmRlZmluZWQsIHsgcGF5ZXJFbWFpbDogbnVsbCB9KTsKKyAgICAgICAgYXdhaXQgcnVu
VGVzdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnV0dG9uMiIpLCB7IHJlcXVlc3RQYXllckVt
YWlsOiB1bmRlZmluZWQgfSwgeyBwYXllckVtYWlsOiBudWxsIH0pOworICAgICAgICBhd2FpdCBy
dW5UZXN0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJidXR0b24zIiksIHsgcmVxdWVzdFBheWVy
RW1haWw6IGZhbHNlIH0sIHsgcGF5ZXJFbWFpbDogbnVsbCB9KTsKKyAgICAgICAgYXdhaXQgcnVu
VGVzdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnV0dG9uNCIpLCB7IHJlcXVlc3RQYXllckVt
YWlsOiB0cnVlIH0sIHsgcGF5ZXJFbWFpbDogJ3dwdEB3My5vcmcnIH0pOworICAgICAgICBhd2Fp
dCBydW5UZXN0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJidXR0b241IiksIHsgcmVxdWVzdFBh
eWVyRW1haWw6ICd5ZXAnIH0sIHsgcGF5ZXJFbWFpbDogJ3dwdEB3My5vcmcnIH0pOworICAgICAg
ICBkb25lKCk7CisgICAgfQorICAgIHJ1blRlc3RzKCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1l
bnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtcGF5ZXJOYW1lLWF0dHJpYnV0ZS5odHRwcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQt
cmVzcG9uc2UtcGF5ZXJOYW1lLWF0dHJpYnV0ZS5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTcyZmE2ZDdiN2RiYjcxNmZlMGE2YWFkOTdhOWE3NDJjMGQwZWEyNgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXNw
b25zZS1wYXllck5hbWUtYXR0cmlidXRlLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEz
IEBACitwYXllck5hbWUgYXR0cmlidXRlIGlzIG51bGwgd2hlbiBvcHRpb24gaXMgdW5kZWZpbmVk
LgorcGF5ZXJOYW1lIGF0dHJpYnV0ZSBpcyBudWxsIHdoZW4gcmVxdWVzdFBheWVyTmFtZSBpcyB1
bmRlZmluZWQuCitwYXllck5hbWUgYXR0cmlidXRlIGlzIG51bGwgd2hlbiByZXF1ZXN0UGF5ZXJO
YW1lIGlzIGZhbHNlLgorcGF5ZXJOYW1lIGF0dHJpYnV0ZSBpcyAnd2ViIHBsYXRmb3JtIHRlc3Qn
IHdoZW4gcmVxdWVzdFBheWVyTmFtZSBpcyB0cnVlLgorcGF5ZXJOYW1lIGF0dHJpYnV0ZSBpcyAn
d2ViIHBsYXRmb3JtIHRlc3QnIHdoZW4gcmVxdWVzdFBheWVyTmFtZSBpcyB0cnV0aHkuCisKK1BB
U1MgQ2FuIGNvbnN0cnVjdCBhIHBheW1lbnQgcmVxdWVzdCAoc21va2UgdGVzdCkuIAorUEFTUyBw
YXllck5hbWUgYXR0cmlidXRlIGlzIG51bGwgd2hlbiBvcHRpb24gaXMgdW5kZWZpbmVkLiAKK1BB
U1MgcGF5ZXJOYW1lIGF0dHJpYnV0ZSBpcyBudWxsIHdoZW4gcmVxdWVzdFBheWVyTmFtZSBpcyB1
bmRlZmluZWQuIAorUEFTUyBwYXllck5hbWUgYXR0cmlidXRlIGlzIG51bGwgd2hlbiByZXF1ZXN0
UGF5ZXJOYW1lIGlzIGZhbHNlLiAKK1BBU1MgcGF5ZXJOYW1lIGF0dHJpYnV0ZSBpcyAnd2ViIHBs
YXRmb3JtIHRlc3QnIHdoZW4gcmVxdWVzdFBheWVyTmFtZSBpcyB0cnVlLiAKK1BBU1MgcGF5ZXJO
YW1lIGF0dHJpYnV0ZSBpcyAnd2ViIHBsYXRmb3JtIHRlc3QnIHdoZW4gcmVxdWVzdFBheWVyTmFt
ZSBpcyB0cnV0aHkuIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1l
bnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtcGF5ZXJOYW1lLWF0dHJpYnV0ZS5odHRwcy5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNl
LXBheWVyTmFtZS1hdHRyaWJ1dGUuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNzIzYjJkYTZjMWE5
NmFhMDk4NGRlNDYzZGFhZjg5MmZlNjFlNzIzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLXBheWVyTmFtZS1h
dHRyaWJ1dGUuaHR0cHMuaHRtbApAQCAtMCwwICsxLDUwIEBACis8IWRvY3R5cGUgaHRtbD4KKzxt
ZXRhIGNoYXJzZXQ9InV0ZjgiPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL3czYy5n
aXRodWIuaW8vcGF5bWVudC1yZXF1ZXN0LyNkb20tcGF5bWVudHJlc3BvbnNlLXBheWVybmFtZSI+
Cis8dGl0bGU+CisgIFBheW1lbnRSZXNwb25zZS5wcm90b3R5cGUucGF5ZXJOYW1lIGF0dHJpYnV0
ZQorPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaGVscGVycy5qcyI+PC9zY3JpcHQ+Cis8b2w+
CisgIDxsaT4KKyAgICA8YnV0dG9uIGlkPSJidXR0b24xIj4KKyAgICAgIHBheWVyTmFtZSBhdHRy
aWJ1dGUgaXMgbnVsbCB3aGVuIG9wdGlvbiBpcyB1bmRlZmluZWQuCisgICAgPC9idXR0b24+Cisg
IDwvbGk+CisgIDxsaT4KKyAgICA8YnV0dG9uIGlkPSJidXR0b24yIj4KKyAgICAgIHBheWVyTmFt
ZSBhdHRyaWJ1dGUgaXMgbnVsbCB3aGVuIHJlcXVlc3RQYXllck5hbWUgaXMgdW5kZWZpbmVkLgor
ICAgIDwvYnV0dG9uPgorICA8L2xpPgorICA8bGk+CisgICAgPGJ1dHRvbiBpZD0iYnV0dG9uMyI+
CisgICAgICBwYXllck5hbWUgYXR0cmlidXRlIGlzIG51bGwgd2hlbiByZXF1ZXN0UGF5ZXJOYW1l
IGlzIGZhbHNlLgorICAgIDwvYnV0dG9uPgorICA8L2xpPgorICA8bGk+CisgICAgPGJ1dHRvbiBp
ZD0iYnV0dG9uNCI+CisgICAgICBwYXllck5hbWUgYXR0cmlidXRlIGlzICd3ZWIgcGxhdGZvcm0g
dGVzdCcgd2hlbiByZXF1ZXN0UGF5ZXJOYW1lIGlzIHRydWUuCisgICAgPC9idXR0b24+CisgIDwv
bGk+CisgIDxsaT4KKyAgICA8YnV0dG9uIGlkPSJidXR0b241Ij4KKyAgICAgIHBheWVyTmFtZSBh
dHRyaWJ1dGUgaXMgJ3dlYiBwbGF0Zm9ybSB0ZXN0JyB3aGVuIHJlcXVlc3RQYXllck5hbWUgaXMg
dHJ1dGh5LgorICAgIDwvYnV0dG9uPgorICA8L2xpPgorPC9vbD4KKzxzY3JpcHQ+CisgICAgaW50
ZXJuYWxzLm1vY2tQYXltZW50Q29vcmRpbmF0b3Iuc2V0U2hpcHBpbmdBZGRyZXNzKHsgbG9jYWxp
emVkTmFtZTogJ3dlYiBwbGF0Zm9ybSB0ZXN0JyB9KTsKKyAgICAKKyAgICBhc3luYyBmdW5jdGlv
biBydW5UZXN0cygpCisgICAgeworICAgICAgICBhd2FpdCBydW5UZXN0KGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJidXR0b24xIiksIHVuZGVmaW5lZCwgeyBwYXllck5hbWU6IG51bGwgfSk7Cisg
ICAgICAgIGF3YWl0IHJ1blRlc3QoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJ1dHRvbjIiKSwg
eyByZXF1ZXN0UGF5ZXJOYW1lOiB1bmRlZmluZWQgfSwgeyBwYXllck5hbWU6IG51bGwgfSk7Cisg
ICAgICAgIGF3YWl0IHJ1blRlc3QoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJ1dHRvbjMiKSwg
eyByZXF1ZXN0UGF5ZXJOYW1lOiBmYWxzZSB9LCB7IHBheWVyTmFtZTogbnVsbCB9KTsKKyAgICAg
ICAgYXdhaXQgcnVuVGVzdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnV0dG9uNCIpLCB7IHJl
cXVlc3RQYXllck5hbWU6IHRydWUgfSwgeyBwYXllck5hbWU6ICd3ZWIgcGxhdGZvcm0gdGVzdCcg
fSk7CisgICAgICAgIGF3YWl0IHJ1blRlc3QoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJ1dHRv
bjUiKSwgeyByZXF1ZXN0UGF5ZXJOYW1lOiAneWVwJyB9LCB7IHBheWVyTmFtZTogJ3dlYiBwbGF0
Zm9ybSB0ZXN0JyB9KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKyAgICBydW5UZXN0cygpOwor
PC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLXBheWVyUGhv
bmUtYXR0cmlidXRlLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
cGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXNwb25zZS1wYXllclBob25lLWF0dHJpYnV0ZS5odHRw
cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzg3ZjcyYzg0OTllY2JmYzQzYTZlOWRjMDQ3ODkz
MGI3MDJlM2FiYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5
bWVudHJlcXVlc3QvcGF5bWVudC1yZXNwb25zZS1wYXllclBob25lLWF0dHJpYnV0ZS5odHRwcy1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorcGF5ZXJQaG9uZSBhdHRyaWJ1dGUgaXMgbnVs
bCB3aGVuIG9wdGlvbnMgaXMgdW5kZWZpbmVkLgorcGF5ZXJQaG9uZSBhdHRyaWJ1dGUgaXMgbnVs
bCB3aGVuIHJlcXVlc3RQYXllclBob25lIGlzIHVuZGVmaW5lZC4KK3BheWVyUGhvbmUgYXR0cmli
dXRlIGlzIG51bGwgd2hlbiByZXF1ZXN0UGF5ZXJQaG9uZSBpcyBmYWxzZS4KK3BheWVyUGhvbmUg
YXR0cmlidXRlIGlzICcrMTIzNDU2Nzg5MTAnIHdoZW4gcmVxdWVzdFBheWVyUGhvbmUgaXMgdHJ1
ZS4KK3BheWVyUGhvbmUgYXR0cmlidXRlIGlzICcrMTIzNDU2Nzg5MTAnIHdoZW4gcmVxdWVzdFBh
eWVyUGhvbmUgaXMgdHJ1dGh5LgorCitQQVNTIENhbiBjb25zdHJ1Y3QgYSBwYXltZW50IHJlcXVl
c3QgKHNtb2tlIHRlc3QpLiAKK1BBU1MgcGF5ZXJQaG9uZSBhdHRyaWJ1dGUgaXMgbnVsbCB3aGVu
IG9wdGlvbnMgaXMgdW5kZWZpbmVkLiAKK1BBU1MgcGF5ZXJQaG9uZSBhdHRyaWJ1dGUgaXMgbnVs
bCB3aGVuIHJlcXVlc3RQYXllclBob25lIGlzIHVuZGVmaW5lZC4gCitQQVNTIHBheWVyUGhvbmUg
YXR0cmlidXRlIGlzIG51bGwgd2hlbiByZXF1ZXN0UGF5ZXJQaG9uZSBpcyBmYWxzZS4gCitQQVNT
IHBheWVyUGhvbmUgYXR0cmlidXRlIGlzICcrMTIzNDU2Nzg5MTAnIHdoZW4gcmVxdWVzdFBheWVy
UGhvbmUgaXMgdHJ1ZS4gCitQQVNTIHBheWVyUGhvbmUgYXR0cmlidXRlIGlzICcrMTIzNDU2Nzg5
MTAnIHdoZW4gcmVxdWVzdFBheWVyUGhvbmUgaXMgdHJ1dGh5LiAKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLXBheWVy
UGhvbmUtYXR0cmlidXRlLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1l
bnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtcGF5ZXJQaG9uZS1hdHRyaWJ1dGUuaHR0cHMuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wYTQwYzQ4MjNkYzk1NWQ5NDBjNWYwZGRmZDI2ODgyMTRiNTg4YmFiCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9w
YXltZW50LXJlc3BvbnNlLXBheWVyUGhvbmUtYXR0cmlidXRlLmh0dHBzLmh0bWwKQEAgLTAsMCAr
MSw1MCBAQAorPCFkb2N0eXBlIGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGY4Ij4KKzxsaW5rIHJl
bD0iaGVscCIgaHJlZj0iaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3BheW1lbnQtcmVxdWVzdC8jZG9t
LXBheW1lbnRyZXNwb25zZS1wYXllcnBob25lIj4KKzx0aXRsZT4KKyAgUGF5bWVudFJlc3BvbnNl
LnByb3RvdHlwZS5wYXllclBob25lIGF0dHJpYnV0ZQorPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvaGVscGVycy5qcyI+PC9zY3JpcHQ+Cis8b2w+CisgIDxsaT4KKyAgICA8YnV0dG9uIGlkPSJi
dXR0b24xIj4KKyAgICAgIHBheWVyUGhvbmUgYXR0cmlidXRlIGlzIG51bGwgd2hlbiBvcHRpb25z
IGlzIHVuZGVmaW5lZC4KKyAgICA8L2J1dHRvbj4KKyAgPC9saT4KKyAgPGxpPgorICAgIDxidXR0
b24gaWQ9ImJ1dHRvbjIiPgorICAgICAgcGF5ZXJQaG9uZSBhdHRyaWJ1dGUgaXMgbnVsbCB3aGVu
IHJlcXVlc3RQYXllclBob25lIGlzIHVuZGVmaW5lZC4KKyAgICA8L2J1dHRvbj4KKyAgPC9saT4K
KyAgPGxpPgorICAgIDxidXR0b24gaWQ9ImJ1dHRvbjMiPgorICAgICAgcGF5ZXJQaG9uZSBhdHRy
aWJ1dGUgaXMgbnVsbCB3aGVuIHJlcXVlc3RQYXllclBob25lIGlzIGZhbHNlLgorICAgIDwvYnV0
dG9uPgorICA8L2xpPgorICA8bGk+CisgICAgPGJ1dHRvbiBpZD0iYnV0dG9uNCI+CisgICAgICBw
YXllclBob25lIGF0dHJpYnV0ZSBpcyAnKzEyMzQ1Njc4OTEwJyB3aGVuIHJlcXVlc3RQYXllclBo
b25lIGlzIHRydWUuCisgICAgPC9idXR0b24+CisgIDwvbGk+CisgIDxsaT4KKyAgICA8YnV0dG9u
IGlkPSJidXR0b241Ij4KKyAgICAgIHBheWVyUGhvbmUgYXR0cmlidXRlIGlzICcrMTIzNDU2Nzg5
MTAnIHdoZW4gcmVxdWVzdFBheWVyUGhvbmUgaXMgdHJ1dGh5LgorICAgIDwvYnV0dG9uPgorICA8
L2xpPgorPC9vbD4KKzxzY3JpcHQ+CisgICAgaW50ZXJuYWxzLm1vY2tQYXltZW50Q29vcmRpbmF0
b3Iuc2V0U2hpcHBpbmdBZGRyZXNzKHsgcGhvbmVOdW1iZXI6ICcrMTIzNDU2Nzg5MTAnIH0pOwor
ICAgIAorICAgIGFzeW5jIGZ1bmN0aW9uIHJ1blRlc3RzKCkKKyAgICB7CisgICAgICAgIGF3YWl0
IHJ1blRlc3QoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJ1dHRvbjEiKSwgdW5kZWZpbmVkLCB7
IHBheWVyUGhvbmU6IG51bGwgfSk7CisgICAgICAgIGF3YWl0IHJ1blRlc3QoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImJ1dHRvbjIiKSwgeyByZXF1ZXN0UGF5ZXJQaG9uZTogdW5kZWZpbmVkIH0s
IHsgcGF5ZXJQaG9uZTogbnVsbCB9KTsKKyAgICAgICAgYXdhaXQgcnVuVGVzdChkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiYnV0dG9uMyIpLCB7IHJlcXVlc3RQYXllclBob25lOiBmYWxzZSB9LCB7
IHBheWVyUGhvbmU6IG51bGwgfSk7CisgICAgICAgIGF3YWl0IHJ1blRlc3QoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImJ1dHRvbjQiKSwgeyByZXF1ZXN0UGF5ZXJQaG9uZTogdHJ1ZSB9LCB7IHBh
eWVyUGhvbmU6ICcrMTIzNDU2Nzg5MTAnIH0pOworICAgICAgICBhd2FpdCBydW5UZXN0KGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJidXR0b241IiksIHsgcmVxdWVzdFBheWVyUGhvbmU6ICd5ZXAn
IH0sIHsgcGF5ZXJQaG9uZTogJysxMjM0NTY3ODkxMCcgfSk7CisgICAgICAgIGRvbmUoKTsKKyAg
ICB9CisgICAgcnVuVGVzdHMoKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9yZXNvdXJjZXMvaGVscGVycy5qcyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcmVzb3VyY2VzL2hlbHBlcnMuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDEyMmMyOTQ1YzI2MDEwZTQyNzVkMDEzZWRlZTNhYTc3MDg2YzhhMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcmVzb3VyY2Vz
L2hlbHBlcnMuanMKQEAgLTAsMCArMSwxNTYgQEAKK3NldHVwKHsgZXhwbGljaXRfZG9uZTogdHJ1
ZSwgZXhwbGljaXRfdGltZW91dDogdHJ1ZSB9KTsKKworY29uc3QgdmFsaWRNZXRob2QgPSBPYmpl
Y3QuZnJlZXplKHsKKyAgc3VwcG9ydGVkTWV0aG9kczogImh0dHBzOi8vYXBwbGUuY29tL2FwcGxl
LXBheSIsCisgIGRhdGE6IHsKKyAgICAgIHZlcnNpb246IDIsCisgICAgICBtZXJjaGFudElkZW50
aWZpZXI6ICcnLAorICAgICAgbWVyY2hhbnRDYXBhYmlsaXRpZXM6IFsnc3VwcG9ydHMzRFMnXSwK
KyAgICAgIHN1cHBvcnRlZE5ldHdvcmtzOiBbJ3Zpc2EnLCAnbWFzdGVyQ2FyZCddLAorICAgICAg
Y291bnRyeUNvZGU6ICdVUycsCisgIH0sCit9KTsKKworY29uc3QgdmFsaWRNZXRob2RzID0gT2Jq
ZWN0LmZyZWV6ZShbdmFsaWRNZXRob2RdKTsKKworY29uc3QgdmFsaWRBbW91bnQgPSBPYmplY3Qu
ZnJlZXplKHsKKyAgY3VycmVuY3k6ICJVU0QiLAorICB2YWx1ZTogIjEuMDAiLAorfSk7CisKK2Nv
bnN0IHZhbGlkVG90YWwgPSBPYmplY3QuZnJlZXplKHsKKyAgbGFiZWw6ICJWYWxpZCB0b3RhbCIs
CisgIGFtb3VudDogdmFsaWRBbW91bnQsCit9KTsKK2NvbnN0IHZhbGlkRGV0YWlscyA9IHsKKyAg
dG90YWw6IHZhbGlkVG90YWwsCit9OworCit0ZXN0KCgpID0+IHsKKyAgdHJ5IHsKKyAgICBuZXcg
UGF5bWVudFJlcXVlc3QodmFsaWRNZXRob2RzLCB2YWxpZERldGFpbHMpOworICB9IGNhdGNoIChl
cnIpIHsKKyAgICBkb25lKCk7CisgICAgdGhyb3cgZXJyOworICB9Cit9LCAiQ2FuIGNvbnN0cnVj
dCBhIHBheW1lbnQgcmVxdWVzdCAoc21va2UgdGVzdCkuIik7CisKKy8qKgorICogUG9wcyB1cCBh
IHBheW1lbnQgc2hlZXQsIGFsbG93aW5nIG9wdGlvbnMgdG8gYmUKKyAqIHBhc3NlZCBpbiBpZiBw
YXJ0aWN1bGFyIHZhbHVlcyBhcmUgbmVlZGVkLgorICoKKyAqIEBwYXJhbSBQYXltZW50T3B0aW9u
cyBvcHRpb25zCisgKi8KK2FzeW5jIGZ1bmN0aW9uIGdldFBheW1lbnRSZXNwb25zZShvcHRpb25z
LCBpZCkgeworICBjb25zdCB7IHJlc3BvbnNlIH0gPSBnZXRQYXltZW50UmVxdWVzdFJlc3BvbnNl
KG9wdGlvbnMsIGlkKTsKKyAgcmV0dXJuIHJlc3BvbnNlOworfQorCisvKioKKyAqIENyZWF0ZXMg
YSBwYXltZW50IHJlcXVlc3QgYW5kIHJlc3BvbnNlIHBhaXIuCisgKiBJdCBhbHNvIHNob3dzIHRo
ZSBwYXltZW50IHNoZWV0LgorICoKKyAqIEBwYXJhbSB7UGF5bWVudE9wdGlvbnM/fSBvcHRpb25z
CisgKiBAcGFyYW0ge1N0cmluZz99IGlkCisgKi8KK2FzeW5jIGZ1bmN0aW9uIGdldFBheW1lbnRS
ZXF1ZXN0UmVzcG9uc2Uob3B0aW9ucywgaWQpIHsKKyAgY29uc3QgbWV0aG9kcyA9IFt7CisgICAg
ICBzdXBwb3J0ZWRNZXRob2RzOiAiaHR0cHM6Ly9hcHBsZS5jb20vYXBwbGUtcGF5IiwKKyAgICAg
IGRhdGE6IHsKKyAgICAgICAgICB2ZXJzaW9uOiAyLAorICAgICAgICAgIG1lcmNoYW50SWRlbnRp
ZmllcjogJycsCisgICAgICAgICAgbWVyY2hhbnRDYXBhYmlsaXRpZXM6IFsnc3VwcG9ydHMzRFMn
XSwKKyAgICAgICAgICBzdXBwb3J0ZWROZXR3b3JrczogWyd2aXNhJywgJ21hc3RlckNhcmQnXSwK
KyAgICAgICAgICBjb3VudHJ5Q29kZTogJ1VTJywKKyAgICAgIH0sCisgIH1dOworICBjb25zdCBk
ZXRhaWxzID0geworICAgIGlkLAorICAgIHRvdGFsOiB7CisgICAgICBsYWJlbDogIlRvdGFsIGR1
ZSIsCisgICAgICBhbW91bnQ6IHsgY3VycmVuY3k6ICJVU0QiLCB2YWx1ZTogIjEuMCIgfSwKKyAg
ICB9LAorICAgIHNoaXBwaW5nT3B0aW9uczogWworICAgICAgeworICAgICAgICBpZDogImZhaWwx
IiwKKyAgICAgICAgbGFiZWw6ICJGYWlsIG9wdGlvbiAxIiwKKyAgICAgICAgYW1vdW50OiB7IGN1
cnJlbmN5OiAiVVNEIiwgdmFsdWU6ICI1LjAwIiB9LAorICAgICAgICBzZWxlY3RlZDogZmFsc2Us
CisgICAgICB9LAorICAgICAgeworICAgICAgICBpZDogInBhc3MiLAorICAgICAgICBsYWJlbDog
IlBhc3Mgb3B0aW9uIiwKKyAgICAgICAgYW1vdW50OiB7IGN1cnJlbmN5OiAiVVNEIiwgdmFsdWU6
ICI1LjAwIiB9LAorICAgICAgICBzZWxlY3RlZDogdHJ1ZSwKKyAgICAgIH0sCisgICAgICB7Cisg
ICAgICAgIGlkOiAiZmFpbDIiLAorICAgICAgICBsYWJlbDogIkZhaWwgb3B0aW9uIDIiLAorICAg
ICAgICBhbW91bnQ6IHsgY3VycmVuY3k6ICJVU0QiLCB2YWx1ZTogIjUuMDAiIH0sCisgICAgICAg
IHNlbGVjdGVkOiBmYWxzZSwKKyAgICAgIH0sCisgICAgXSwKKyAgfTsKKyAgY29uc3QgcmVxdWVz
dCA9IG5ldyBQYXltZW50UmVxdWVzdChtZXRob2RzLCBkZXRhaWxzLCBvcHRpb25zKTsKKyAgcmVx
dWVzdC5vbnNoaXBwaW5nYWRkcmVzc2NoYW5nZSA9IGV2ID0+IGV2LnVwZGF0ZVdpdGgoZGV0YWls
cyk7CisgIHJlcXVlc3Qub25zaGlwcGluZ29wdGlvbmNoYW5nZSA9IGV2ID0+IGV2LnVwZGF0ZVdp
dGgoZGV0YWlscyk7CisgIHJlcXVlc3Qub25hcHBsZXBheXZhbGlkYXRlbWVyY2hhbnQgPSBldiA9
PiBldi5jb21wbGV0ZSh7fSk7CisgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcmVxdWVzdC5zaG93
KCk7CisgIHJldHVybiB7IHJlcXVlc3QsIHJlc3BvbnNlIH07Cit9CisKKy8qKgorICogUnVucyBh
IG1hbnVhbCB0ZXN0IGZvciBwYXltZW50CisgKgorICogQHBhcmFtIHtIVE1MQnV0dG9uRWxlbWVu
dH0gYnV0dG9uIFRoZSBIVE1MIGJ1dHRvbi4KKyAqIEBwYXJhbSB7UGF5bWVudE9wdGlvbnM/fSBv
cHRpb25zLgorICogQHBhcmFtIHtPYmplY3R9IGV4cGVjdGVkIFdoYXQgcHJvcGVydHkgdmFsdWVz
IGFyZSBleHBlY3RlZCB0byBwYXNzIHRoZSB0ZXN0LgorICogQHBhcmFtIHtTdHJpbmc/fSBpZCBB
bmQgaWQgZm9yIHRoZSByZXF1ZXN0L3Jlc3BvbnNlIHBhaXIuCisgKi8KK2FzeW5jIGZ1bmN0aW9u
IHJ1blRlc3QoYnV0dG9uLCBvcHRpb25zLCBleHBlY3RlZCA9IHt9LCBpZCA9IHVuZGVmaW5lZCkg
eworICBidXR0b24uZGlzYWJsZWQgPSB0cnVlOworICBjb25zdCB7IHJlcXVlc3QsIHJlc3BvbnNl
IH0gPSBhd2FpdCBnZXRQYXltZW50UmVxdWVzdFJlc3BvbnNlKG9wdGlvbnMsIGlkKTsKKyAgYXdh
aXQgcmVzcG9uc2UuY29tcGxldGUoKTsKKyAgdGVzdCgoKSA9PiB7CisgICAgYXNzZXJ0X2lkbF9h
dHRyaWJ1dGUoCisgICAgICByZXNwb25zZSwKKyAgICAgICJyZXF1ZXN0SWQiLAorICAgICAgIkV4
cGVjdGVkIHJlcXVlc3RJZCB0byBiZSBhbiBJREwgYXR0cmlidXRlLiIKKyAgICApOworICAgIGFz
c2VydF9lcXVhbHMocmVzcG9uc2UucmVxdWVzdElkLCByZXF1ZXN0LmlkLCBgRXhwZWN0ZWQgaWRz
IHRvIG1hdGNoYCk7CisgICAgZm9yIChjb25zdCBbYXR0cmlidXRlLCB2YWx1ZV0gb2YgT2JqZWN0
LmVudHJpZXMoZXhwZWN0ZWQpKSB7CisgICAgICBhc3NlcnRfaWRsX2F0dHJpYnV0ZSgKKyAgICAg
ICAgcmVzcG9uc2UsCisgICAgICAgIGF0dHJpYnV0ZSwKKyAgICAgICAgYEV4cGVjdGVkICR7YXR0
cmlidXRlfSB0byBiZSBhbiBJREwgYXR0cmlidXRlLmAKKyAgICAgICk7CisgICAgICBhc3NlcnRf
ZXF1YWxzKAorICAgICAgICByZXNwb25zZVthdHRyaWJ1dGVdLAorICAgICAgICB2YWx1ZSwKKyAg
ICAgICAgYEV4cGVjdGVkIHJlc3BvbnNlICR7YXR0cmlidXRlfSBhdHRyaWJ1dGUgdG8gYmUgJHt2
YWx1ZX1gCisgICAgICApOworICAgIH0KKyAgICBhc3NlcnRfaWRsX2F0dHJpYnV0ZShyZXNwb25z
ZSwgImRldGFpbHMiKTsKKyAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiByZXNwb25zZS5kZXRhaWxz
LCAib2JqZWN0IiwgIkV4cGVjdGVkIGFuIG9iamVjdCIpOworICAgIC8vIFRlc3RpbmcgdGhhdCB0
aGlzIGRvZXMgbm90IHRocm93OgorICAgIHJlc3BvbnNlLnRvSlNPTigpOworICAgIGlmIChvcHRp
b25zICYmIG9wdGlvbnMucmVxdWVzdFNoaXBwaW5nKSB7CisgICAgICBhc3NlcnRfZXF1YWxzKAor
ICAgICAgICByZXNwb25zZS5zaGlwcGluZ09wdGlvbiwKKyAgICAgICAgInBhc3MiLAorICAgICAg
ICAicmVxdWVzdC5zaGlwcGluZ09wdGlvbiBtdXN0IGJlICdwYXNzJyIKKyAgICAgICk7CisgICAg
fSBlbHNlIHsKKyAgICAgIGFzc2VydF9lcXVhbHMoCisgICAgICAgIHJlcXVlc3Quc2hpcHBpbmdP
cHRpb24sCisgICAgICAgIG51bGwsCisgICAgICAgICJJZiByZXF1ZXN0U2hpcHBpbmcgaXMgZmFs
c3ksIHJlcXVlc3Quc2hpcHBpbmdPcHRpb24gbXVzdCBiZSBudWxsIgorICAgICAgKTsKKyAgICAg
IGFzc2VydF9lcXVhbHMoCisgICAgICAgIHJlc3BvbnNlLnNoaXBwaW5nT3B0aW9uLAorICAgICAg
ICBudWxsLAorICAgICAgICAicmVxdWVzdC5zaGlwcGluZ09wdGlvbiBtdXN0IGJlIG51bGwiCisg
ICAgICApOworICAgIH0KKyAgfSwgYnV0dG9uLnRleHRDb250ZW50LnRyaW0oKSk7Cit9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>