<?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>216255</bug_id>
          
          <creation_ts>2020-09-07 15:23:04 -0700</creation_ts>
          <short_desc>[WebIDL] Add support for partial interface mixins</short_desc>
          <delta_ts>2020-09-08 14:47:16 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>andersca</cc>
    
    <cc>annulen</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1686445</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-09-07 15:23:04 -0700</bug_when>
    <thetext>[WebIDL] Add support for partial interface mixins</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686457</commentid>
    <comment_count>1</comment_count>
      <attachid>408203</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-09-07 19:00:06 -0700</bug_when>
    <thetext>Created attachment 408203
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686606</commentid>
    <comment_count>2</comment_count>
      <attachid>408237</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-09-08 10:15:01 -0700</bug_when>
    <thetext>Created attachment 408237
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686620</commentid>
    <comment_count>3</comment_count>
      <attachid>408241</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-09-08 10:38:49 -0700</bug_when>
    <thetext>Created attachment 408241
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686676</commentid>
    <comment_count>4</comment_count>
      <attachid>408254</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-09-08 12:27:51 -0700</bug_when>
    <thetext>Created attachment 408254
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686692</commentid>
    <comment_count>5</comment_count>
      <attachid>408254</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-08 12:50:41 -0700</bug_when>
    <thetext>Comment on attachment 408254
Patch

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

&gt; Source/WebCore/ChangeLog:35
&gt; +        Move logic to avoid genertion of mixins and partial here.

generation typo here

&gt; Source/WebCore/bindings/scripts/CodeGenerator.pm:212
&gt; +    ${cppName} at every build. This file must not be tried to compile.

You replicated the tortured grammar: &quot;This file must not be tried to compile.&quot; Let&apos;s just leave that worthless sentence out?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686741</commentid>
    <comment_count>6</comment_count>
      <attachid>408267</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-09-08 14:11:17 -0700</bug_when>
    <thetext>Created attachment 408267
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686752</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-09-08 14:46:14 -0700</bug_when>
    <thetext>Committed r266753: &lt;https://trac.webkit.org/changeset/266753&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 408267.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686753</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-08 14:47:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/68531306&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408203</attachid>
            <date>2020-09-07 19:00:06 -0700</date>
            <delta_ts>2020-09-08 10:15:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216255-20200907190005.patch</filename>
            <type>text/plain</type>
            <size>183405</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NjcxMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTA5LTA3ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViSURMXSBBZGQgc3VwcG9ydCBm
b3IgcGFydGlhbCBpbnRlcmZhY2UgbWl4aW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTYyNTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBbV0lQXQorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3IucG06CisgICAgICAgIChQcm9jZXNzSW50ZXJmYWNlU3VwcGxlbWVudGFsRGVwZW5kZW5j
aWVzKToKKyAgICAgICAgKFByb2Nlc3NEaWN0aW9uYXJ5U3VwcGxlbWVudGFsRGVwZW5kZW5jaWVz
KToKKyAgICAgICAgKHNob3VsZFByb3BlcnR5QmVFeHBvc2VkKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbDoKKyAgICAgICAgKGdldFBhcnRpYWxOYW1lc0Zy
b21JREwpOgorCisgICAgICAgICogY3NzL0RvY3VtZW50T3JTaGFkb3dSb290U3R5bGVTaGVldHMu
aWRsOiBBZGRlZC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnRPclNoYWRvd1Jvb3QuaWRsOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudE9yU2hhZG93Um9vdFBvaW50ZXJMb2NrLmlkbDogQWRkZWQuCisg
ICAgICAgICogTW9kdWxlcy9waWN0dXJlaW5waWN0dXJlL0RvY3VtZW50T3JTaGFkb3dSb290UGlj
dHVyZUluUGljdHVyZS5pZGw6IEFkZGVkLgorICAgICAgICAqIGFuaW1hdGlvbi9Eb2N1bWVudE9y
U2hhZG93Um9vdEFuaW1hdGlvbnMuaWRsOiBBZGRlZC4KKworICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmNwcDoKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5oOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmNsdWRlcy5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluY2x1ZGVzLmg6
IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVy
ZmFjZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVy
ZmFjZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNaXhpbklu
dGVyZmFjZS5jcHA6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RNaXhpbkludGVyZmFjZS5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0UGFydGlhbE1peGluSW50ZXJmYWNlLmNwcDogQWRkZWQuCisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBhcnRpYWxNaXhpbkludGVyZmFjZS5o
OiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxlbWVudGFsRGVw
ZW5kZW5jaWVzLmRlcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENvbmRp
dGlvbmFsSW5jbHVkZXMuaWRsOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0
SW5jbHVkZXMuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9U
ZXN0SW50ZXJmYWNlLmlkbDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE1p
eGluSW50ZXJmYWNlLmlkbDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Rlc3RPYmouaWRsOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0UGFydGlh
bE1peGluSW50ZXJmYWNlLmlkbDogQWRkZWQuCisKIDIwMjAtMDktMDcgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBdWRpb1BhcmFtLmNhbmNlbEFuZEhvbGRBdFRp
bWUoKSBpcyBtaXNzaW5nCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjY2NzEy
KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQy
Nyw2ICs0MjcsNyBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAgIE1vZHVsZXMv
cGF5bWVudHJlcXVlc3QvUGF5bWVudFNoaXBwaW5nVHlwZS5pZGwKICAgICBNb2R1bGVzL3BheW1l
bnRyZXF1ZXN0L1BheW1lbnRWYWxpZGF0aW9uRXJyb3JzLmlkbAogCisgICAgTW9kdWxlcy9waWN0
dXJlaW5waWN0dXJlL0RvY3VtZW50T3JTaGFkb3dSb290UGljdHVyZUluUGljdHVyZS5pZGwKICAg
ICBNb2R1bGVzL3BpY3R1cmVpbnBpY3R1cmUvRG9jdW1lbnRQaWN0dXJlSW5QaWN0dXJlLmlkbAog
ICAgIE1vZHVsZXMvcGljdHVyZWlucGljdHVyZS9FbnRlclBpY3R1cmVJblBpY3R1cmVFdmVudC5p
ZGwKICAgICBNb2R1bGVzL3BpY3R1cmVpbnBpY3R1cmUvSFRNTFZpZGVvRWxlbWVudFBpY3R1cmVJ
blBpY3R1cmUuaWRsCkBAIC02NDEsNiArNjQyLDcgQEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExf
RklMRVMKICAgICBhbmltYXRpb24vQ29tcG9zaXRlT3BlcmF0aW9uLmlkbAogICAgIGFuaW1hdGlv
bi9Db21wb3NpdGVPcGVyYXRpb25PckF1dG8uaWRsCiAgICAgYW5pbWF0aW9uL0NvbXB1dGVkRWZm
ZWN0VGltaW5nLmlkbAorICAgIGFuaW1hdGlvbi9Eb2N1bWVudE9yU2hhZG93Um9vdEFuaW1hdGlv
bnMuaWRsCiAgICAgYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuaWRsCiAgICAgYW5pbWF0aW9u
L0RvY3VtZW50VGltZWxpbmVPcHRpb25zLmlkbAogICAgIGFuaW1hdGlvbi9GaWxsTW9kZS5pZGwK
QEAgLTcwMCw2ICs3MDIsNyBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAgIGNz
cy9DU1NTdHlsZVNoZWV0LmlkbAogICAgIGNzcy9DU1NTdXBwb3J0c1J1bGUuaWRsCiAgICAgY3Nz
L0NTU1Vua25vd25SdWxlLmlkbAorICAgIGNzcy9Eb2N1bWVudE9yU2hhZG93Um9vdFN0eWxlU2hl
ZXRzLmlkbAogICAgIGNzcy9ET01DU1NDdXN0b21Qcm9wZXJ0eURlc2NyaXB0b3IuaWRsCiAgICAg
Y3NzL0RPTUNTU05hbWVzcGFjZS5pZGwKICAgICBjc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmlkbApA
QCAtNzczLDYgKzc3Niw3IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAgZG9t
L0RvY3VtZW50RnJhZ21lbnQuaWRsCiAgICAgZG9tL0RvY3VtZW50RnVsbHNjcmVlbi5pZGwKICAg
ICBkb20vRG9jdW1lbnRPclNoYWRvd1Jvb3QuaWRsCisgICAgZG9tL0RvY3VtZW50T3JTaGFkb3dS
b290UG9pbnRlckxvY2suaWRsCiAgICAgZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5pZGwKICAg
ICBkb20vRG9jdW1lbnRUb3VjaC5pZGwKICAgICBkb20vRG9jdW1lbnRUeXBlLmlkbApJbmRleDog
U291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CShyZXZp
c2lvbiAyNjY3MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2Zp
bGVsaXN0CSh3b3JraW5nIGNvcHkpCkBAIC0yNTUsNiArMjU1LDcgQEAgJChQUk9KRUNUX0RJUikv
TW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYQogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9wYXltZW50
cmVxdWVzdC9QYXltZW50U2hpcHBpbmdPcHRpb24uaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVz
L3BheW1lbnRyZXF1ZXN0L1BheW1lbnRTaGlwcGluZ1R5cGUuaWRsCiAkKFBST0pFQ1RfRElSKS9N
b2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRWYWxpZGF0aW9uRXJyb3JzLmlkbAorJChQUk9K
RUNUX0RJUikvTW9kdWxlcy9waWN0dXJlaW5waWN0dXJlL0RvY3VtZW50T3JTaGFkb3dSb290UGlj
dHVyZUluUGljdHVyZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvcGljdHVyZWlucGljdHVy
ZS9Eb2N1bWVudFBpY3R1cmVJblBpY3R1cmUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3Bp
Y3R1cmVpbnBpY3R1cmUvRW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZlbnQuaWRsCiAkKFBST0pFQ1Rf
RElSKS9Nb2R1bGVzL3BpY3R1cmVpbnBpY3R1cmUvSFRNTFZpZGVvRWxlbWVudFBpY3R1cmVJblBp
Y3R1cmUuaWRsCkBAIC01MzQsNiArNTM1LDcgQEAgJChQUk9KRUNUX0RJUikvYW5pbWF0aW9uL0NT
U1RyYW5zaXRpb24uaQogJChQUk9KRUNUX0RJUikvYW5pbWF0aW9uL0NvbXBvc2l0ZU9wZXJhdGlv
bi5pZGwKICQoUFJPSkVDVF9ESVIpL2FuaW1hdGlvbi9Db21wb3NpdGVPcGVyYXRpb25PckF1dG8u
aWRsCiAkKFBST0pFQ1RfRElSKS9hbmltYXRpb24vQ29tcHV0ZWRFZmZlY3RUaW1pbmcuaWRsCisk
KFBST0pFQ1RfRElSKS9hbmltYXRpb24vRG9jdW1lbnRPclNoYWRvd1Jvb3RBbmltYXRpb25zLmlk
bAogJChQUk9KRUNUX0RJUikvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuaWRsCiAkKFBST0pF
Q1RfRElSKS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZU9wdGlvbnMuaWRsCiAkKFBST0pFQ1Rf
RElSKS9hbmltYXRpb24vRWZmZWN0VGltaW5nLmlkbApAQCAtNjE2LDYgKzYxOCw3IEBAICQoUFJP
SkVDVF9ESVIpL2Nzcy9EZXByZWNhdGVkQ1NTT01SR0JDb2wKICQoUFJPSkVDVF9ESVIpL2Nzcy9E
ZXByZWNhdGVkQ1NTT01SZWN0LmlkbAogJChQUk9KRUNUX0RJUikvY3NzL0RlcHJlY2F0ZWRDU1NP
TVZhbHVlLmlkbAogJChQUk9KRUNUX0RJUikvY3NzL0RlcHJlY2F0ZWRDU1NPTVZhbHVlTGlzdC5p
ZGwKKyQoUFJPSkVDVF9ESVIpL2Nzcy9Eb2N1bWVudE9yU2hhZG93Um9vdFN0eWxlU2hlZXRzLmlk
bAogJChQUk9KRUNUX0RJUikvY3NzL0VsZW1lbnRDU1NJbmxpbmVTdHlsZS5pZGwKICQoUFJPSkVD
VF9ESVIpL2Nzcy9Gb250RmFjZS5pZGwKICQoUFJPSkVDVF9ESVIpL2Nzcy9Gb250RmFjZVNldC5p
ZGwKQEAgLTY5MSw2ICs2OTQsNyBAQCAkKFBST0pFQ1RfRElSKS9kb20vRG9jdW1lbnRBbmRFbGVt
ZW50RXZlCiAkKFBST0pFQ1RfRElSKS9kb20vRG9jdW1lbnRGcmFnbWVudC5pZGwKICQoUFJPSkVD
VF9ESVIpL2RvbS9Eb2N1bWVudEZ1bGxzY3JlZW4uaWRsCiAkKFBST0pFQ1RfRElSKS9kb20vRG9j
dW1lbnRPclNoYWRvd1Jvb3QuaWRsCiskKFBST0pFQ1RfRElSKS9kb20vRG9jdW1lbnRPclNoYWRv
d1Jvb3RQb2ludGVyTG9jay5pZGwKICQoUFJPSkVDVF9ESVIpL2RvbS9Eb2N1bWVudFN0b3JhZ2VB
Y2Nlc3MuaWRsCiAkKFBST0pFQ1RfRElSKS9kb20vRG9jdW1lbnRUb3VjaC5pZGwKICQoUFJPSkVD
VF9ESVIpL2RvbS9Eb2N1bWVudFR5cGUuaWRsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAkocmV2aXNpb24gMjY2NzEyKQorKysgU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QJKHdvcmtpbmcgY29w
eSkKQEAgLTU0NCw2ICs1NDQsMTQgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYgogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNE
b2N1bWVudEZ1bGxzY3JlZW4uaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNEb2N1bWVudE9yU2hhZG93Um9vdC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRG9jdW1lbnRPclNoYWRvd1Jvb3QuaAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEb2N1bWVudE9yU2hhZG93
Um9vdEFuaW1hdGlvbnMuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0RvY3VtZW50T3JTaGFkb3dSb290QW5pbWF0aW9ucy5oCiskKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RvY3VtZW50T3JTaGFkb3dSb290UGlj
dHVyZUluUGljdHVyZS5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTRG9jdW1lbnRPclNoYWRvd1Jvb3RQaWN0dXJlSW5QaWN0dXJlLmgKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRG9jdW1lbnRPclNoYWRvd1Jv
b3RQb2ludGVyTG9jay5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTRG9jdW1lbnRPclNoYWRvd1Jvb3RQb2ludGVyTG9jay5oCiskKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RvY3VtZW50T3JTaGFkb3dSb290U3R5
bGVTaGVldHMuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0RvY3VtZW50T3JTaGFkb3dSb290U3R5bGVTaGVldHMuaAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEb2N1bWVudFBpY3R1cmVJblBpY3R1cmUuY3Bw
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RvY3VtZW50
UGljdHVyZUluUGljdHVyZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMjY2NzEyKQorKysgU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtMzUzLDYgKzM1Myw3IEBAIEpTX0JJTkRJ
TkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVu
dFNoaXBwaW5nT3B0aW9uLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3BheW1lbnRyZXF1
ZXN0L1BheW1lbnRTaGlwcGluZ1R5cGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvcGF5
bWVudHJlcXVlc3QvUGF5bWVudFZhbGlkYXRpb25FcnJvcnMuaWRsIFwKKyAgICAkKFdlYkNvcmUp
L01vZHVsZXMvcGljdHVyZWlucGljdHVyZS9Eb2N1bWVudE9yU2hhZG93Um9vdFBpY3R1cmVJblBp
Y3R1cmUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvcGljdHVyZWlucGljdHVyZS9Eb2N1
bWVudFBpY3R1cmVJblBpY3R1cmUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvcGljdHVy
ZWlucGljdHVyZS9FbnRlclBpY3R1cmVJblBpY3R1cmVFdmVudC5pZGwgXAogICAgICQoV2ViQ29y
ZSkvTW9kdWxlcy9waWN0dXJlaW5waWN0dXJlL0hUTUxWaWRlb0VsZW1lbnRQaWN0dXJlSW5QaWN0
dXJlLmlkbCBcCkBAIC01OTgsNiArNTk5LDcgQEAgSlNfQklORElOR19JRExTID0gXAogICAgICQo
V2ViQ29yZSkvYW5pbWF0aW9uL0NvbXBvc2l0ZU9wZXJhdGlvbi5pZGwgXAogICAgICQoV2ViQ29y
ZSkvYW5pbWF0aW9uL0NvbXBvc2l0ZU9wZXJhdGlvbk9yQXV0by5pZGwgXAogICAgICQoV2ViQ29y
ZSkvYW5pbWF0aW9uL0NvbXB1dGVkRWZmZWN0VGltaW5nLmlkbCBcCisgICAgJChXZWJDb3JlKS9h
bmltYXRpb24vRG9jdW1lbnRPclNoYWRvd1Jvb3RBbmltYXRpb25zLmlkbCBcCiAgICAgJChXZWJD
b3JlKS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5pZGwgXAogICAgICQoV2ViQ29yZSkvYW5p
bWF0aW9uL0RvY3VtZW50VGltZWxpbmVPcHRpb25zLmlkbCBcCiAgICAgJChXZWJDb3JlKS9hbmlt
YXRpb24vRWZmZWN0VGltaW5nLmlkbCBcCkBAIC02NTQsNiArNjU2LDcgQEAgSlNfQklORElOR19J
RExTID0gXAogICAgICQoV2ViQ29yZSkvY3NzL0NTU1N0eWxlU2hlZXQuaWRsIFwKICAgICAkKFdl
YkNvcmUpL2Nzcy9DU1NTdXBwb3J0c1J1bGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9DU1NV
bmtub3duUnVsZS5pZGwgXAorICAgICQoV2ViQ29yZSkvY3NzL0RvY3VtZW50T3JTaGFkb3dSb290
U3R5bGVTaGVldHMuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9ET01DU1NDdXN0b21Qcm9wZXJ0
eURlc2NyaXB0b3IuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9ET01DU1NOYW1lc3BhY2UuaWRs
IFwKICAgICAkKFdlYkNvcmUpL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuaWRsIFwKQEAgLTcyNCw2
ICs3MjcsNyBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9kb20vRG9jdW1l
bnRGdWxsc2NyZWVuLmlkbCBcCiAgICAgJChXZWJDb3JlKS9kb20vRG9jdW1lbnRGcmFnbWVudC5p
ZGwgXAogICAgICQoV2ViQ29yZSkvZG9tL0RvY3VtZW50T3JTaGFkb3dSb290LmlkbCBcCisgICAg
JChXZWJDb3JlKS9kb20vRG9jdW1lbnRPclNoYWRvd1Jvb3RQb2ludGVyTG9jay5pZGwgXAogICAg
ICQoV2ViQ29yZSkvZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5pZGwgXAogICAgICQoV2ViQ29y
ZSkvZG9tL0RvY3VtZW50VHlwZS5pZGwgXAogICAgICQoV2ViQ29yZSkvZG9tL0RyYWdFdmVudC5p
ZGwgXApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9waWN0dXJlaW5waWN0dXJlL0RvY3Vt
ZW50T3JTaGFkb3dSb290UGljdHVyZUluUGljdHVyZS5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9waWN0dXJlaW5waWN0dXJlL0RvY3VtZW50T3JTaGFkb3dSb290UGlj
dHVyZUluUGljdHVyZS5pZGwJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9waWN0dXJlaW5waWN0dXJlL0RvY3VtZW50T3JTaGFkb3dSb290UGljdHVyZUluUGljdHVyZS5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIGh0dHBz
Oi8vdzNjLmdpdGh1Yi5pby9waWN0dXJlLWluLXBpY3R1cmUvI2RvY3VtZW50b3JzaGFkb3dyb290
LWV4dGVuc2lvbgorWworICAgIENvbmRpdGlvbmFsPVBJQ1RVUkVfSU5fUElDVFVSRV9BUEksCisg
ICAgRW5hYmxlZEJ5U2V0dGluZz1QaWN0dXJlSW5QaWN0dXJlQVBJCitdIHBhcnRpYWwgaW50ZXJm
YWNlIG1peGluIERvY3VtZW50T3JTaGFkb3dSb290IHsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUg
RWxlbWVudD8gcGljdHVyZUluUGljdHVyZUVsZW1lbnQ7Cit9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjY2
NzEyKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDEyNiw2ICsxMDEyNiwxMCBAQAogCQk3QzMzMEEwNTFERjlG
OTUxMDBEMzM5NUMgLyogSlNQb3NpdGlvbk9wdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNQb3NpdGlvbk9wdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QzMzMEEwNjFERjlGOTUxMDBEMzM5NUMgLyogSlNQb3NpdGlvbk9wdGlv
bnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQb3NpdGlvbk9wdGlvbnMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MzM0YzNjAxQjRBMDUwNDAwNTAyQ0FG
IC8qIEpTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0RvY3VtZW50RnJhZ21lbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3QzM2NTU2OTI1MDZEREI3MDBBNzg4MkIgLyogRG9jdW1lbnRPclNo
YWRvd1Jvb3RTdHlsZVNoZWV0cy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRG9jdW1lbnRPclNoYWRvd1Jvb3RTdHlsZVNo
ZWV0cy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMzY1NTZDMjUwNkRFOUMw
MEE3ODgyQiAvKiBEb2N1bWVudE9yU2hhZG93Um9vdFBvaW50ZXJMb2NrLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBEb2N1
bWVudE9yU2hhZG93Um9vdFBvaW50ZXJMb2NrLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJN0MzNjU1NkUyNTA2REY5OTAwQTc4ODJCIC8qIERvY3VtZW50T3JTaGFkb3dSb290UGlj
dHVyZUluUGljdHVyZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRG9jdW1lbnRPclNoYWRvd1Jvb3RQaWN0dXJlSW5QaWN0
dXJlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MzNjU1NzAyNTA2RTBBNzAw
QTc4ODJCIC8qIERvY3VtZW50T3JTaGFkb3dSb290QW5pbWF0aW9ucy5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRG9jdW1l
bnRPclNoYWRvd1Jvb3RBbmltYXRpb25zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0MzODA2REIyNTA1QjE4OTAwNzQ0QTdCIC8qIEFuaW1hdGlvbkZyYW1lUHJvdmlkZXIuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEFuaW1hdGlvbkZyYW1lUHJvdmlkZXIuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzNBOTFFNTFDOTYzQjg4MDBEMUE3RTMgLyogQ2xp
cGJvYXJkQWNjZXNzUG9saWN5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENs
aXBib2FyZEFjY2Vzc1BvbGljeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzNC
Nzk2RjE5MDg3NTdCMDBCNDdBMkQgLyogVXNlck1lc3NhZ2VIYW5kbGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVzZXJNZXNzYWdlSGFuZGxlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODM1MSw2ICsxODM1NSw3IEBACiAJCTFERUYwNkEy
MjMzQzMyREIwMEVFMjI4RCAvKiBwaWN0dXJlaW5waWN0dXJlICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk3QzM2NTU2RTI1MDZERjk5MDBBNzg4MkIgLyog
RG9jdW1lbnRPclNoYWRvd1Jvb3RQaWN0dXJlSW5QaWN0dXJlLmlkbCAqLywKIAkJCQkxREVGMDZE
QzIzM0QyRTFDMDBFRTIyOEQgLyogRG9jdW1lbnRQaWN0dXJlSW5QaWN0dXJlLmNwcCAqLywKIAkJ
CQkxREVGMDZERDIzM0QyRTFDMDBFRTIyOEQgLyogRG9jdW1lbnRQaWN0dXJlSW5QaWN0dXJlLmgg
Ki8sCiAJCQkJMURFRjA2REUyMzNEMkUxQzAwRUUyMjhEIC8qIERvY3VtZW50UGljdHVyZUluUGlj
dHVyZS5pZGwgKi8sCkBAIC0yMTgwOSw2ICsyMTgxNCw3IEBACiAJCQkJNzEyM0MxODUyMDQ3MzlC
OTAwNzg5MzkyIC8qIENTU1RyYW5zaXRpb24uaWRsICovLAogCQkJCTcxNUFENzFGMjA1MDUxMjQw
MEQ1OTJEQyAvKiBEZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHAgKi8sCiAJCQkJNzE1QUQ3MUQyMDUw
NTEyNDAwRDU5MkRDIC8qIERlY2xhcmF0aXZlQW5pbWF0aW9uLmggKi8sCisJCQkJN0MzNjU1NzAy
NTA2RTBBNzAwQTc4ODJCIC8qIERvY3VtZW50T3JTaGFkb3dSb290QW5pbWF0aW9ucy5pZGwgKi8s
CiAJCQkJNzEwMjVFQzQxRjk5RjA5NjAwNEEyNTBDIC8qIERvY3VtZW50VGltZWxpbmUuY3BwICov
LAogCQkJCTcxMDI1RUM1MUY5OUYwOTYwMDRBMjUwQyAvKiBEb2N1bWVudFRpbWVsaW5lLmggKi8s
CiAJCQkJNzEwMjVFQ0ExRjk5RjA5NjAwNEEyNTBDIC8qIERvY3VtZW50VGltZWxpbmUuaWRsICov
LApAQCAtMjg2MzgsNiArMjg2NDQsNyBAQAogCQkJCTk0Nzk0OTI3MUUwMzEzMjAwMDAxOEQ4NSAv
KiBEZXByZWNhdGVkQ1NTT01WYWx1ZUxpc3QuaCAqLywKIAkJCQlBOEQwNjUxQzBBMjNDMUZFMDA1
RTcyMDMgLyogRGVwcmVjYXRlZENTU09NVmFsdWVMaXN0LmlkbCAqLywKIAkJCQkwRkEwQTBFNTIz
QUVBQTM1MDAwRUVCOTQgLyogZGlhbG9nLmNzcyAqLywKKwkJCQk3QzM2NTU2OTI1MDZEREI3MDBB
Nzg4MkIgLyogRG9jdW1lbnRPclNoYWRvd1Jvb3RTdHlsZVNoZWV0cy5pZGwgKi8sCiAJCQkJNEJE
QTNGRjgyMTUxQjZGMjAwRkQ2NjA0IC8qIERPTUNTU0N1c3RvbVByb3BlcnR5RGVzY3JpcHRvci5o
ICovLAogCQkJCTRCREEzRkZBMjE1MUI2RjMwMEZENjYwNCAvKiBET01DU1NDdXN0b21Qcm9wZXJ0
eURlc2NyaXB0b3IuaWRsICovLAogCQkJCUZENjc3NzM1MTk1Q0FCMjAwMDcyRTBEMyAvKiBET01D
U1NOYW1lc3BhY2UuY3BwICovLApAQCAtMjkxODcsNiArMjkxOTQsNyBAQAogCQkJCUNFMDU3RkEz
MTIyMDczMTEwMEE0NzZENSAvKiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwICovLAogCQkJ
CUNFMDU3RkE0MTIyMDczMTEwMEE0NzZENSAvKiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCAq
LywKIAkJCQk5QjBGRTg3MzFEOUUwMkRGMDA0QThBQ0IgLyogRG9jdW1lbnRPclNoYWRvd1Jvb3Qu
aWRsICovLAorCQkJCTdDMzY1NTZDMjUwNkRFOUMwMEE3ODgyQiAvKiBEb2N1bWVudE9yU2hhZG93
Um9vdFBvaW50ZXJMb2NrLmlkbCAqLywKIAkJCQlBOEMyMjgwRDExRDRBNTk3MDBENUE3RDMgLyog
RG9jdW1lbnRQYXJzZXIuY3BwICovLAogCQkJCUJDQ0ZCQUU3MEI1MTUyRUQwMDAxRjFENyAvKiBE
b2N1bWVudFBhcnNlci5oICovLAogCQkJCUFENkU3MUFBMTY2ODg5OUQwMDMyMEMxMyAvKiBEb2N1
bWVudFNoYXJlZE9iamVjdFBvb2wuY3BwICovLApJbmRleDogU291cmNlL1dlYkNvcmUvYW5pbWF0
aW9uL0RvY3VtZW50T3JTaGFkb3dSb290QW5pbWF0aW9ucy5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50T3JTaGFkb3dSb290QW5pbWF0aW9ucy5pZGwJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50T3JTaGFk
b3dSb290QW5pbWF0aW9ucy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKy8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy93ZWItYW5pbWF0aW9ucy0xLyNl
eHRlbnNpb25zLXRvLXRoZS1kb2N1bWVudG9yc2hhZG93cm9vdC1pbnRlcmZhY2UtbWl4aW4KK1sK
KyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkFuaW1hdGlvbnMKK10gcGFydGlhbCBpbnRlcmZhY2Ug
bWl4aW4gRG9jdW1lbnRPclNoYWRvd1Jvb3QgeworICAgIHNlcXVlbmNlPEFuaW1hdGlvbj4gZ2V0
QW5pbWF0aW9ucygpOworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvci5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3IucG0JKHJldmlzaW9uIDI2NjcxMikKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQkod29ya2luZyBjb3B5KQpAQCAt
MTk2LDYgKzE5NiwzMSBAQCBzdWIgUHJvY2Vzc0RvY3VtZW50CiAgICAgZGllICJQcm9jZXNzaW5n
IGRvY3VtZW50ICIgLiAkdXNlRG9jdW1lbnQtPmZpbGVOYW1lIC4gIiBkaWQgbm90IGdlbmVyYXRl
IGFueXRoaW5nLiI7CiB9CiAKK3N1YiBHZW5lcmF0ZUVtcHR5SGVhZGVyQW5kQ3BwCit7CisgICAg
bXkgKCRvYmplY3QsICR1c2VEb2N1bWVudCwgJGNvZGVHZW5lcmF0b3IpID0gQF87CisKKyAgICBt
eSAkdGFyZ2V0TmFtZSA9IGZpbGVwYXJzZSgkdXNlRG9jdW1lbnQtPmZpbGVOYW1lLCAiLmlkbCIp
OworICAgIG15ICRwcmVmaXggPSAkY29kZUdlbmVyYXRvci0+RmlsZU5hbWVQcmVmaXgoKTsKKwor
ICAgIG15ICRoZWFkZXJOYW1lID0gIiR7cHJlZml4fSR7dGFyZ2V0TmFtZX0uaCI7CisgICAgbXkg
JGNwcE5hbWUgPSAiJHtwcmVmaXh9JHt0YXJnZXROYW1lfS5jcHAiOworICAgIG15ICRjb250ZW50
cyA9ICIvKgorICAgIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQganVzdCB0byB0ZWxsIGJ1aWxkIHNj
cmlwdHMgdGhhdCAke2hlYWRlck5hbWV9IGFuZAorICAgICR7Y3BwTmFtZX0gYXJlIGNyZWF0ZWQg
Zm9yICR7dGFyZ2V0TmFtZX0uaWRsLCBhbmQgdGh1cworICAgIHByZXZlbnQgdGhlIGJ1aWxkIHNj
cmlwdHMgZnJvbSB0cnlpbmcgdG8gZ2VuZXJhdGUgJHtoZWFkZXJOYW1lfSBhbmQKKyAgICAke2Nw
cE5hbWV9IGF0IGV2ZXJ5IGJ1aWxkLiBUaGlzIGZpbGUgbXVzdCBub3QgYmUgdHJpZWQgdG8gY29t
cGlsZS4KKyovCisiOworICAgIG9wZW4gRkgsICI+ICR7dXNlT3V0cHV0SGVhZGVyc0Rpcn0vJHto
ZWFkZXJOYW1lfSIgb3IgZGllICJDYW5ub3Qgb3BlbiAke2hlYWRlck5hbWV9XG4iOworICAgIHBy
aW50IEZIICRjb250ZW50czsKKyAgICBjbG9zZSBGSDsKKworICAgIG9wZW4gRkgsICI+ICR7dXNl
T3V0cHV0RGlyfS8ke2NwcE5hbWV9IiBvciBkaWUgIkNhbm5vdCBvcGVuICR7Y3BwTmFtZX1cbiI7
CisgICAgcHJpbnQgRkggJGNvbnRlbnRzOworICAgIGNsb3NlIEZIOworfQorCiBzdWIgUHJvY2Vz
c0RpY3Rpb25hcnlBbmRFbnVtZXJhdGlvbkltcGxlbWVudGVkQXNPdmVycmlkZXMKIHsKICAgICBt
eSAoJG9iamVjdCwgJHVzZURvY3VtZW50KSA9IEBfOwpAQCAtMjE5LDYgKzI0NCwxMSBAQCBzdWIg
UHJvY2Vzc0ludGVyZmFjZXMKIAogICAgIGRpZSAiTXVsdGlwbGUgaW50ZXJmYWNlcyBwZXIgZG9j
dW1lbnQgYXJlIG5vdCBzdXBwb3J0ZWQiIGlmIEB7JHVzZURvY3VtZW50LT5pbnRlcmZhY2VzfSA+
IDE7CiAgICAgbXkgJGludGVyZmFjZSA9ICR1c2VEb2N1bWVudC0+aW50ZXJmYWNlcy0+WzBdOwor
ICAgIAorICAgIGlmICgkaW50ZXJmYWNlLT5pc01peGluIHx8ICRpbnRlcmZhY2UtPmlzUGFydGlh
bCkgeworICAgICAgICAkb2JqZWN0LT5HZW5lcmF0ZUVtcHR5SGVhZGVyQW5kQ3BwKCR1c2VEb2N1
bWVudCwgJGNvZGVHZW5lcmF0b3IpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgJG9i
amVjdC0+UHJvY2Vzc0ludGVyZmFjZVN1cHBsZW1lbnRhbERlcGVuZGVuY2llcygkaW50ZXJmYWNl
LCAkdXNlRG9jdW1lbnQpOwogICAgICRvYmplY3QtPlByb2Nlc3NEaWN0aW9uYXJ5QW5kRW51bWVy
YXRpb25JbXBsZW1lbnRlZEFzT3ZlcnJpZGVzKCR1c2VEb2N1bWVudCk7CkBAIC0yNjIsNiArMjky
LDExIEBAIHN1YiBQcm9jZXNzRGljdGlvbmFyaWVzCiAgICAgICAgIGRpZSAiTXVsdGlwbGUgZGlj
dGlvbmFyaWVzIHBlciBkb2N1bWVudCBhcmUgb25seSBzdXBwb3J0ZWQgaWYgb25lIG1hdGNoZXMg
dGhlIGZpbGVuYW1lIiB1bmxlc3MgJGRpY3Rpb25hcnk7CiAgICAgfQogCisgICAgaWYgKCRkaWN0
aW9uYXJ5LT5pc1BhcnRpYWwpIHsKKyAgICAgICAgJG9iamVjdC0+R2VuZXJhdGVFbXB0eUhlYWRl
ckFuZENwcCgkdXNlRG9jdW1lbnQsICRjb2RlR2VuZXJhdG9yKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKwogICAgICRvYmplY3QtPlByb2Nlc3NEaWN0aW9uYXJ5U3VwcGxlbWVudGFsRGVwZW5k
ZW5jaWVzKCRkaWN0aW9uYXJ5LCAkdXNlRG9jdW1lbnQpOwogICAgICRvYmplY3QtPlByb2Nlc3NE
aWN0aW9uYXJ5QW5kRW51bWVyYXRpb25JbXBsZW1lbnRlZEFzT3ZlcnJpZGVzKCR1c2VEb2N1bWVu
dCk7CiAgICAgCkBAIC0zNDMsOSArMzc4LDYgQEAgc3ViIFByb2Nlc3NJbnRlcmZhY2VTdXBwbGVt
ZW50YWxEZXBlbmRlbgogCiAgICAgbXkgJHRhcmdldEZpbGVOYW1lID0gZmlsZXBhcnNlKCR0YXJn
ZXREb2N1bWVudC0+ZmlsZU5hbWUpOwogCi0gICAgIyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIHBy
b2Nlc3NpbmcgcmVjdXJzaXZlIHN1cHBsZW1lbnRhbCBkZXBlbmRlbmNpZXMKLSAgICAjIHRvIHBy
b3ZpZGUgc3VwcG9ydCBmb3IgcGFydGlhbCBpbnRlcmZhY2UgbWl4aW5zLgotCiAgICAgIyBGSVhN
RTogQ3VycmVudGx5LCB3ZSByZXF1aXJlIGFsbCB0aGUgaW5jbHVkZXMgc3RhdGVtZW50cyB0byBi
ZSBpbiB0aGUKICAgICAjIHNhbWUgZmlsZSBhcyB0aGUgaW50ZXJmYWNlIHRoZXkgYXJlIGJlaW5n
IG1peGVkIGludG8sIGJ1dCB0aGF0IHJlc3RyaWN0aW9uCiAgICAgIyBpcyBhcnRpZmljaWFsIGFu
ZCB3ZSBjb3VsZCBhZGQgc3VwcG9ydCBmb3IgaW5jbHVkZXMgc3RhdGVtZW50cyBlbHNld2hlcmUu
CkBAIC0zNjAsMTAgKzM5Miw2IEBAIHN1YiBQcm9jZXNzSW50ZXJmYWNlU3VwcGxlbWVudGFsRGVw
ZW5kZW4KICAgICAgICAgfQogICAgIH0KIAotICAgIG15ICRleHBvc2VkQXR0cmlidXRlID0gJHRh
cmdldEludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkV4cG9zZWQifSB8fCAiV2luZG93
IjsKLSAgICAkZXhwb3NlZEF0dHJpYnV0ZSA9IHN1YnN0cigkZXhwb3NlZEF0dHJpYnV0ZSwgMSwg
LTEpIGlmIHN1YnN0cigkZXhwb3NlZEF0dHJpYnV0ZSwgMCwgMSkgZXEgIigiOwotICAgIG15IEB0
YXJnZXRHbG9iYWxDb250ZXh0cyA9IHNwbGl0KCIsIiwgJGV4cG9zZWRBdHRyaWJ1dGUpOwotCiAg
ICAgZm9yZWFjaCBteSAkaWRsRmlsZSAoQHskc3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzLT57JHRh
cmdldEZpbGVOYW1lfX0pIHsKICAgICAgICAgbmV4dCBpZiBmaWxlcGFyc2UoJGlkbEZpbGUpIGVx
ICR0YXJnZXRGaWxlTmFtZTsKIApAQCAtMzc0LDE1ICs0MDIsMjEgQEAgc3ViIFByb2Nlc3NJbnRl
cmZhY2VTdXBwbGVtZW50YWxEZXBlbmRlbgogICAgICAgICBmb3JlYWNoIG15ICRpbnRlcmZhY2Ug
KEB7JGRvY3VtZW50LT5pbnRlcmZhY2VzfSkgewogICAgICAgICAgICAgbmV4dCB1bmxlc3MgJG9i
amVjdC0+SXNWYWxpZFN1cHBsZW1lbnRhbEludGVyZmFjZSgkaW50ZXJmYWNlLCAkdGFyZ2V0SW50
ZXJmYWNlLCBcJWluY2x1ZGVzTWFwKTsKIAorICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmlz
TWl4aW4gJiYgISRpbnRlcmZhY2UtPmlzUGFydGlhbCkgeworICAgICAgICAgICAgICAgICMgUmVj
dXJzaXZlbHkgcHJvY2VzcyBhbnkgc3VwcGxlbWVudGFsIGRlcGVuZGVuY2llcyBmb3IgZWFjaCB2
YWxpZCBtaXhpbi4gVGhpcworICAgICAgICAgICAgICAgICMgYWxsb3dzIHBhcnRpYWwgcGFydGlh
bCBpbnRlcmZhY2UgbWl4aW5zIHRvIGJlIG1lcmdlZCBpbnRvIHRoZSBtaXhpbi4KKyAgICAgICAg
ICAgICAgICAkb2JqZWN0LT5Qcm9jZXNzSW50ZXJmYWNlU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVz
KCRpbnRlcmZhY2UsICRkb2N1bWVudCk7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgICMg
U3VwcG9ydCBmb3IgYXR0cmlidXRlcyBmcm9tIHN1cHBsZW1lbnRhbCBpbnRlcmZhY2VzLgogICAg
ICAgICAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9
KSB7Ci0gICAgICAgICAgICAgICAgbmV4dCB1bmxlc3Mgc2hvdWxkUHJvcGVydHlCZUV4cG9zZWQo
JGF0dHJpYnV0ZSwgXEB0YXJnZXRHbG9iYWxDb250ZXh0cyk7CisgICAgICAgICAgICAgICAgbmV4
dCB1bmxlc3MgJHRhcmdldEludGVyZmFjZS0+aXNNaXhpbiB8fCBzaG91bGRQcm9wZXJ0eUJlRXhw
b3NlZCgkYXR0cmlidXRlLCAkdGFyZ2V0SW50ZXJmYWNlKTsKIAotICAgICAgICAgICAgICAgIGlm
ICgkaW50ZXJmYWNlLT5pc1BhcnRpYWwpIHsKKyAgICAgICAgICAgICAgICBpZiAoJGludGVyZmFj
ZS0+aXNQYXJ0aWFsICYmICEkaW50ZXJmYWNlLT5pc01peGluKSB7CiAgICAgICAgICAgICAgICAg
ICAgICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In0gPSAk
aW50ZXJmYWNlTmFtZSBpZiAhJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UmVmbGVj
dH07CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2Ut
PmlzTWl4aW4pIHsKKyAgICAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+aXNNaXhpbiAmJiAh
JGludGVyZmFjZS0+aXNQYXJ0aWFsKSB7CiAgICAgICAgICAgICAgICAgICAgICMgQWRkIGluY2x1
ZGVzIHN0YXRlbWVudCBzcGVjaWZpYyBleHRlbmRlZCBhdHRyaWJ1dGVzIHRvIGVhY2ggYXR0cmli
dXRlLgogICAgICAgICAgICAgICAgICAgICAkb2JqZWN0LT5NZXJnZUV4dGVuZGVkQXR0cmlidXRl
c0Zyb21TdXBwbGVtZW50YWwoJGluY2x1ZGVzTWFweyRpbnRlcmZhY2UtPnR5cGUtPm5hbWV9LT5l
eHRlbmRlZEF0dHJpYnV0ZXMsICRhdHRyaWJ1dGUsICJhdHRyaWJ1dGUiKTsKICAgICAgICAgICAg
ICAgICB9CkBAIC0zOTUsMTMgKzQyOSwxMyBAQCBzdWIgUHJvY2Vzc0ludGVyZmFjZVN1cHBsZW1l
bnRhbERlcGVuZGVuCiAKICAgICAgICAgICAgICMgU3VwcG9ydCBmb3Igb3BlcmF0aW9ucyBmcm9t
IHN1cHBsZW1lbnRhbCBpbnRlcmZhY2VzLgogICAgICAgICAgICAgZm9yZWFjaCBteSAkb3BlcmF0
aW9uIChAeyRpbnRlcmZhY2UtPm9wZXJhdGlvbnN9KSB7Ci0gICAgICAgICAgICAgICAgbmV4dCB1
bmxlc3Mgc2hvdWxkUHJvcGVydHlCZUV4cG9zZWQoJG9wZXJhdGlvbiwgXEB0YXJnZXRHbG9iYWxD
b250ZXh0cyk7CisgICAgICAgICAgICAgICAgbmV4dCB1bmxlc3MgJHRhcmdldEludGVyZmFjZS0+
aXNNaXhpbiB8fCBzaG91bGRQcm9wZXJ0eUJlRXhwb3NlZCgkb3BlcmF0aW9uLCAkdGFyZ2V0SW50
ZXJmYWNlKTsKIAotICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5pc1BhcnRpYWwpIHsK
KyAgICAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+aXNQYXJ0aWFsICYmICEkaW50ZXJmYWNl
LT5pc01peGluKSB7CiAgICAgICAgICAgICAgICAgICAgICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In0gPSAkaW50ZXJmYWNlTmFtZTsKICAgICAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+aXNNaXhpbikgeworICAg
ICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5pc01peGluICYmICEkaW50ZXJmYWNlLT5pc1Bh
cnRpYWwpIHsKICAgICAgICAgICAgICAgICAgICAgIyBBZGQgaW5jbHVkZXMgc3RhdGVtZW50IHNw
ZWNpZmljIGV4dGVuZGVkIGF0dHJpYnV0ZXMgdG8gZWFjaCBvcGVyYXRpb24uCiAgICAgICAgICAg
ICAgICAgICAgICRvYmplY3QtPk1lcmdlRXh0ZW5kZWRBdHRyaWJ1dGVzRnJvbVN1cHBsZW1lbnRh
bCgkaW5jbHVkZXNNYXB7JGludGVyZmFjZS0+dHlwZS0+bmFtZX0tPmV4dGVuZGVkQXR0cmlidXRl
cywgJG9wZXJhdGlvbiwgIm9wZXJhdGlvbiIpOwogICAgICAgICAgICAgICAgIH0KQEAgLTQxNCwx
MyArNDQ4LDEzIEBAIHN1YiBQcm9jZXNzSW50ZXJmYWNlU3VwcGxlbWVudGFsRGVwZW5kZW4KIAog
ICAgICAgICAgICAgIyBTdXBwb3J0IGZvciBjb25zdGFudHMgZnJvbSBzdXBwbGVtZW50YWwgaW50
ZXJmYWNlcy4KICAgICAgICAgICAgIGZvcmVhY2ggbXkgJGNvbnN0YW50IChAeyRpbnRlcmZhY2Ut
PmNvbnN0YW50c30pIHsKLSAgICAgICAgICAgICAgICBuZXh0IHVubGVzcyBzaG91bGRQcm9wZXJ0
eUJlRXhwb3NlZCgkY29uc3RhbnQsIFxAdGFyZ2V0R2xvYmFsQ29udGV4dHMpOworICAgICAgICAg
ICAgICAgIG5leHQgdW5sZXNzICR0YXJnZXRJbnRlcmZhY2UtPmlzTWl4aW4gfHwgc2hvdWxkUHJv
cGVydHlCZUV4cG9zZWQoJGNvbnN0YW50LCAkdGFyZ2V0SW50ZXJmYWNlKTsKIAotICAgICAgICAg
ICAgICAgIGlmICgkaW50ZXJmYWNlLT5pc1BhcnRpYWwpIHsKKyAgICAgICAgICAgICAgICBpZiAo
JGludGVyZmFjZS0+aXNQYXJ0aWFsICYmICEkaW50ZXJmYWNlLT5pc01peGluKSB7CiAgICAgICAg
ICAgICAgICAgICAgICRjb25zdGFudC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVk
QnkifSA9ICRpbnRlcmZhY2VOYW1lOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
ICAgIGlmICgkaW50ZXJmYWNlLT5pc01peGluKSB7CisgICAgICAgICAgICAgICAgaWYgKCRpbnRl
cmZhY2UtPmlzTWl4aW4gJiYgISRpbnRlcmZhY2UtPmlzUGFydGlhbCkgewogICAgICAgICAgICAg
ICAgICAgICAjIEFkZCBpbmNsdWRlcyBzdGF0ZW1lbnQgc3BlY2lmaWMgZXh0ZW5kZWQgYXR0cmli
dXRlcyB0byBlYWNoIG9wZXJhdGlvbi4KICAgICAgICAgICAgICAgICAgICAgJG9iamVjdC0+TWVy
Z2VFeHRlbmRlZEF0dHJpYnV0ZXNGcm9tU3VwcGxlbWVudGFsKCRpbmNsdWRlc01hcHskaW50ZXJm
YWNlLT50eXBlLT5uYW1lfS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLCAkY29uc3RhbnQsICJjb25zdGFu
dCIpOwogICAgICAgICAgICAgICAgIH0KQEAgLTQ0MCwxMCArNDc0LDYgQEAgc3ViIFByb2Nlc3NE
aWN0aW9uYXJ5U3VwcGxlbWVudGFsRGVwZW5kZQogCiAgICAgcmV0dXJuIHVubGVzcyAkc3VwcGxl
bWVudGFsRGVwZW5kZW5jaWVzOwogCi0gICAgbXkgJGV4cG9zZWRBdHRyaWJ1dGUgPSAkdGFyZ2V0
RGljdGlvbmFyeS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkV4cG9zZWQifSB8fCAiV2luZG93IjsK
LSAgICAkZXhwb3NlZEF0dHJpYnV0ZSA9IHN1YnN0cigkZXhwb3NlZEF0dHJpYnV0ZSwgMSwgLTEp
IGlmIHN1YnN0cigkZXhwb3NlZEF0dHJpYnV0ZSwgMCwgMSkgZXEgIigiOwotICAgIG15IEB0YXJn
ZXRHbG9iYWxDb250ZXh0cyA9IHNwbGl0KCIsIiwgJGV4cG9zZWRBdHRyaWJ1dGUpOwotCiAgICAg
bXkgJHRhcmdldEZpbGVOYW1lID0gZmlsZXBhcnNlKCR0YXJnZXREb2N1bWVudC0+ZmlsZU5hbWUp
OwogICAgIGZvcmVhY2ggbXkgJGlkbEZpbGUgKEB7JHN1cHBsZW1lbnRhbERlcGVuZGVuY2llcy0+
eyR0YXJnZXRGaWxlTmFtZX19KSB7CiAgICAgICAgIG5leHQgaWYgZmlsZXBhcnNlKCRpZGxGaWxl
KSBlcSAkdGFyZ2V0RmlsZU5hbWU7CkBAIC00NTcsNyArNDg3LDcgQEAgc3ViIFByb2Nlc3NEaWN0
aW9uYXJ5U3VwcGxlbWVudGFsRGVwZW5kZQogCiAgICAgICAgICAgICAjIFN1cHBvcnQgZm9yIG1l
bWJlcnMgb2YgcGFydGlhbCBkaWN0aW9uYXJpZXMuCiAgICAgICAgICAgICBmb3JlYWNoIG15ICRt
ZW1iZXIgKEB7JGRpY3Rpb25hcnktPm1lbWJlcnN9KSB7Ci0gICAgICAgICAgICAgICAgbmV4dCB1
bmxlc3Mgc2hvdWxkUHJvcGVydHlCZUV4cG9zZWQoJG1lbWJlciwgXEB0YXJnZXRHbG9iYWxDb250
ZXh0cyk7CisgICAgICAgICAgICAgICAgbmV4dCB1bmxlc3Mgc2hvdWxkUHJvcGVydHlCZUV4cG9z
ZWQoJG1lbWJlciwgJHRhcmdldERpY3Rpb25hcnkpOwogCiAgICAgICAgICAgICAgICAgJG1lbWJl
ci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifSA9ICRkaWN0aW9uYXJ5TmFt
ZTsKIApAQCAtNDc0LDcgKzUwNCwxMSBAQCBzdWIgUHJvY2Vzc0RpY3Rpb25hcnlTdXBwbGVtZW50
YWxEZXBlbmRlCiAjIG9uIHdoaWNoIGdsb2JhbCBjb250ZXh0cyB0aGV5IHNob3VsZCBiZSBleHBv
c2VkLgogc3ViIHNob3VsZFByb3BlcnR5QmVFeHBvc2VkCiB7Ci0gICAgbXkgKCRjb250ZXh0LCAk
dGFyZ2V0R2xvYmFsQ29udGV4dHMpID0gQF87CisgICAgbXkgKCRjb250ZXh0LCAkdGFyZ2V0KSA9
IEBfOworCisgICAgbXkgJGV4cG9zZWRBdHRyaWJ1dGUgPSAkdGFyZ2V0LT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiRXhwb3NlZCJ9IHx8ICJXaW5kb3ciOworICAgICRleHBvc2VkQXR0cmlidXRlID0g
c3Vic3RyKCRleHBvc2VkQXR0cmlidXRlLCAxLCAtMSkgaWYgc3Vic3RyKCRleHBvc2VkQXR0cmli
dXRlLCAwLCAxKSBlcSAiKCI7CisgICAgbXkgQHRhcmdldEdsb2JhbENvbnRleHRzID0gc3BsaXQo
IiwiLCAkZXhwb3NlZEF0dHJpYnV0ZSk7CiAKICAgICBteSAkZXhwb3NlZCA9ICRjb250ZXh0LT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntFeHBvc2VkfTsKIApAQCAtNDgzLDIyICs1MTcsMTEgQEAgc3Vi
IHNob3VsZFByb3BlcnR5QmVFeHBvc2VkCiAgICAgJGV4cG9zZWQgPSBzdWJzdHIoJGV4cG9zZWQs
IDEsIC0xKSBpZiBzdWJzdHIoJGV4cG9zZWQsIDAsIDEpIGVxICIoIjsKICAgICBteSBAc291cmNl
R2xvYmFsQ29udGV4dHMgPSBzcGxpdCgiLCIsICRleHBvc2VkKTsKIAotICAgIGZvciBteSAkdGFy
Z2V0R2xvYmFsQ29udGV4dCAoQCR0YXJnZXRHbG9iYWxDb250ZXh0cykgeworICAgIGZvcmVhY2gg
bXkgJHRhcmdldEdsb2JhbENvbnRleHQgKEB0YXJnZXRHbG9iYWxDb250ZXh0cykgewogICAgICAg
ICByZXR1cm4gMSBpZiBncmVwKC9eJHRhcmdldEdsb2JhbENvbnRleHQkLywgQHNvdXJjZUdsb2Jh
bENvbnRleHRzKTsKICAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXN1YiBGaWxlTmFtZVByZWZp
eAotewotICAgIG15ICRvYmplY3QgPSBzaGlmdDsKIAotICAgIG15ICRpZmFjZU5hbWUgPSAiQ29k
ZUdlbmVyYXRvciIgLiAkdXNlR2VuZXJhdG9yOwotICAgIHJlcXVpcmUgJGlmYWNlTmFtZSAuICIu
cG0iOwotCi0gICAgIyBEeW5hbWljYWxseSBsb2FkIGV4dGVybmFsIGNvZGUgZ2VuZXJhdGlvbiBw
ZXJsIG1vZHVsZQotICAgICRjb2RlR2VuZXJhdG9yID0gJGlmYWNlTmFtZS0+bmV3KCRvYmplY3Qs
ICR3cml0ZURlcGVuZGVuY2llcywgJHZlcmJvc2UpOwotICAgIHJldHVybiAkY29kZUdlbmVyYXRv
ci0+RmlsZU5hbWVQcmVmaXgoKTsKKyAgICByZXR1cm4gMDsKIH0KIAogc3ViIFVwZGF0ZUZpbGUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3Mu
cGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0
ZS1iaW5kaW5ncy5wbAkocmV2aXNpb24gMjY2NzEyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyAr
NTUsNiBAQCBteSAkcHJlcHJvY2Vzc29yOwogbXkgJHdyaXRlRGVwZW5kZW5jaWVzOwogbXkgJHZl
cmJvc2U7CiBteSAkc3VwcGxlbWVudGFsRGVwZW5kZW5jeUZpbGU7Ci1teSAkYWRkaXRpb25hbElk
bEZpbGVzOwogbXkgJGlkbEF0dHJpYnV0ZXNGaWxlOwogCiBHZXRPcHRpb25zKCdpbmNsdWRlPXNA
JyA9PiBcQGlkbERpcmVjdG9yaWVzLApAQCAtNjksNyArNjgsNiBAQCBHZXRPcHRpb25zKCdpbmNs
dWRlPXNAJyA9PiBcQGlkbERpcmVjdG9yCiAgICAgICAgICAgICd2ZXJib3NlJyA9PiBcJHZlcmJv
c2UsCiAgICAgICAgICAgICd3cml0ZS1kZXBlbmRlbmNpZXMnID0+IFwkd3JpdGVEZXBlbmRlbmNp
ZXMsCiAgICAgICAgICAgICdzdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZT1zJyA9PiBcJHN1cHBs
ZW1lbnRhbERlcGVuZGVuY3lGaWxlLAotICAgICAgICAgICAnYWRkaXRpb25hbElkbEZpbGVzPXMn
ID0+IFwkYWRkaXRpb25hbElkbEZpbGVzLAogICAgICAgICAgICAnaWRsQXR0cmlidXRlc0ZpbGU9
cycgPT4gXCRpZGxBdHRyaWJ1dGVzRmlsZSk7CiAKIGRpZSgnTXVzdCBzcGVjaWZ5IGlucHV0IGZp
bGUuJykgdW5sZXNzIEBBUkdWOwpAQCAtMTA1LDMzICsxMDMsMTIgQEAgc3ViIGdlbmVyYXRlQmlu
ZGluZ3MKICAgICAgICAgIwogICAgICAgICAjIFRoZSBhYm92ZSBpbmRpY2F0ZXMgdGhhdCBET01X
aW5kb3cuaWRsIGlzIHN1cHBsZW1lbnRlZCBieSBQLmlkbCwgUS5pZGwgYW5kIFIuaWRsLAogICAg
ICAgICAjIERvY3VtZW50LmlkbCBpcyBzdXBwbGVtZW50ZWQgYnkgUy5pZGwsIGFuZCBFdmVudC5p
ZGwgaXMgc3VwcGxlbWVudGVkIGJ5IG5vIElETHMuCi0gICAgICAgICMgVGhlIElETCB0aGF0IHN1
cHBsZW1lbnRzIGFub3RoZXIgSURMIChlLmcuIFAuaWRsKSBuZXZlciBhcHBlYXJzIGluIHRoZSBk
ZXBlbmRlbmN5IGZpbGUuCiAgICAgICAgIG9wZW4gRkgsICI8ICRzdXBwbGVtZW50YWxEZXBlbmRl
bmN5RmlsZSIgb3IgZGllICJDYW5ub3Qgb3BlbiAkc3VwcGxlbWVudGFsRGVwZW5kZW5jeUZpbGVc
biI7CiAgICAgICAgIHdoaWxlIChteSAkbGluZSA9IDxGSD4pIHsKICAgICAgICAgICAgIG15ICgk
aWRsRmlsZSwgQGZvbGxvd2luZ0lkbEZpbGVzKSA9IHNwbGl0KC9ccysvLCAkbGluZSk7CiAgICAg
ICAgICAgICAkc3VwcGxlbWVudGFsRGVwZW5kZW5jaWVze2ZpbGVwYXJzZSgkaWRsRmlsZSl9ID0g
W3NvcnQgQGZvbGxvd2luZ0lkbEZpbGVzXSBpZiAkaWRsRmlsZTsKICAgICAgICAgfQogICAgICAg
ICBjbG9zZSBGSDsKLQotICAgICAgICBpZiAoZXhpc3RzICRzdXBwbGVtZW50YWxEZXBlbmRlbmNp
ZXN7ZmlsZXBhcnNlKCR0YXJnZXRJZGxGaWxlKX0pIHsKLSAgICAgICAgICAgICRpZGxGb3VuZCA9
IDE7Ci0gICAgICAgIH0KLQotICAgICAgICAjICRhZGRpdGlvbmFsSWRsRmlsZXMgaXMgbGlzdCBv
ZiBJREwgZmlsZXMgd2hpY2ggc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCBpbgotICAgICAgICAjIERl
cml2ZWRTb3VyY2VzKi5jcHAgKGkuZS4gdGhleSBhcmUgbm90IGRlc2NyaWJlZCBpbiB0aGUgc3Vw
cGxlbWVudGFsCi0gICAgICAgICMgZGVwZW5kZW5jeSBmaWxlKSBidXQgc2hvdWxkIGdlbmVyYXRl
IC5oIGFuZCAuY3BwIGZpbGVzLgotICAgICAgICBpZiAoISRpZGxGb3VuZCBhbmQgJGFkZGl0aW9u
YWxJZGxGaWxlcykgewotICAgICAgICAgICAgbXkgQGlkbEZpbGVzID0gc2hlbGx3b3JkcygkYWRk
aXRpb25hbElkbEZpbGVzKTsKLSAgICAgICAgICAgICRpZGxGb3VuZCA9IGdyZXAgeyAkXyBhbmQg
ZmlsZXBhcnNlKCRfKSBlcSBmaWxlcGFyc2UoJHRhcmdldElkbEZpbGUpIH0gQGlkbEZpbGVzOwot
ICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCEkaWRsRm91bmQpIHsKLSAgICAgICAgICAgIG15ICRj
b2RlR2VuID0gQ29kZUdlbmVyYXRvci0+bmV3KFxAaWRsRGlyZWN0b3JpZXMsICRnZW5lcmF0b3Is
ICRvdXRwdXREaXJlY3RvcnksICRvdXRwdXRIZWFkZXJzRGlyZWN0b3J5LCAkcHJlcHJvY2Vzc29y
LCAkd3JpdGVEZXBlbmRlbmNpZXMsICR2ZXJib3NlKTsKLQotICAgICAgICAgICAgIyBXZSBnZW5l
cmF0ZSBlbXB0eSAuaCBhbmQgLmNwcCBmaWxlcyBqdXN0IHRvIHRlbGwgYnVpbGQgc2NyaXB0cyB0
aGF0IC5oIGFuZCAuY3BwIGZpbGVzIGFyZSBjcmVhdGVkLgotICAgICAgICAgICAgZ2VuZXJhdGVF
bXB0eUhlYWRlckFuZENwcCgkY29kZUdlbi0+RmlsZU5hbWVQcmVmaXgoKSwgJHRhcmdldEludGVy
ZmFjZU5hbWUsICRvdXRwdXRIZWFkZXJzRGlyZWN0b3J5LCAkb3V0cHV0RGlyZWN0b3J5KTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQogICAgIH0KIAogICAgIG15ICRpbnB1dDsKQEAg
LTE1NCwyNSArMTMxLDMgQEAgc3ViIGdlbmVyYXRlQmluZGluZ3MKICAgICBteSAkY29kZUdlbiA9
IENvZGVHZW5lcmF0b3ItPm5ldyhcQGlkbERpcmVjdG9yaWVzLCAkZ2VuZXJhdG9yLCAkb3V0cHV0
RGlyZWN0b3J5LCAkb3V0cHV0SGVhZGVyc0RpcmVjdG9yeSwgJHByZXByb2Nlc3NvciwgJHdyaXRl
RGVwZW5kZW5jaWVzLCAkdmVyYm9zZSwgJHRhcmdldElkbEZpbGUsICRpZGxBdHRyaWJ1dGVzLCBc
JXN1cHBsZW1lbnRhbERlcGVuZGVuY2llcyk7CiAgICAgJGNvZGVHZW4tPlByb2Nlc3NEb2N1bWVu
dCgkdGFyZ2V0RG9jdW1lbnQsICRkZWZpbmVzKTsKIH0KLQotc3ViIGdlbmVyYXRlRW1wdHlIZWFk
ZXJBbmRDcHAKLXsKLSAgICBteSAoJHByZWZpeCwgJHRhcmdldEludGVyZmFjZU5hbWUsICRvdXRw
dXRIZWFkZXJzRGlyZWN0b3J5LCAkb3V0cHV0RGlyZWN0b3J5KSA9IEBfOwotCi0gICAgbXkgJGhl
YWRlck5hbWUgPSAiJHtwcmVmaXh9JHt0YXJnZXRJbnRlcmZhY2VOYW1lfS5oIjsKLSAgICBteSAk
Y3BwTmFtZSA9ICIke3ByZWZpeH0ke3RhcmdldEludGVyZmFjZU5hbWV9LmNwcCI7Ci0gICAgbXkg
JGNvbnRlbnRzID0gIi8qCi0gICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBqdXN0IHRvIHRlbGwg
YnVpbGQgc2NyaXB0cyB0aGF0ICRoZWFkZXJOYW1lIGFuZAotICAgICRjcHBOYW1lIGFyZSBjcmVh
dGVkIGZvciAke3RhcmdldEludGVyZmFjZU5hbWV9LmlkbCwgYW5kIHRodXMKLSAgICBwcmV2ZW50
IHRoZSBidWlsZCBzY3JpcHRzIGZyb20gdHJ5aW5nIHRvIGdlbmVyYXRlICRoZWFkZXJOYW1lIGFu
ZAotICAgICRjcHBOYW1lIGF0IGV2ZXJ5IGJ1aWxkLiBUaGlzIGZpbGUgbXVzdCBub3QgYmUgdHJp
ZWQgdG8gY29tcGlsZS4KLSovCi0iOwotICAgIG9wZW4gRkgsICI+ICR7b3V0cHV0SGVhZGVyc0Rp
cmVjdG9yeX0vJHtoZWFkZXJOYW1lfSIgb3IgZGllICJDYW5ub3Qgb3BlbiAkaGVhZGVyTmFtZVxu
IjsKLSAgICBwcmludCBGSCAkY29udGVudHM7Ci0gICAgY2xvc2UgRkg7Ci0KLSAgICBvcGVuIEZI
LCAiPiAke291dHB1dERpcmVjdG9yeX0vJHtjcHBOYW1lfSIgb3IgZGllICJDYW5ub3Qgb3BlbiAk
Y3BwTmFtZVxuIjsKLSAgICBwcmludCBGSCAkY29udGVudHM7Ci0gICAgY2xvc2UgRkg7Ci19Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3Mt
aWRscy5wbAkocmV2aXNpb24gMjY2NzEyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9wcmVwcm9jZXNzLWlkbHMucGwJKHdvcmtpbmcgY29weSkKQEAgLTQ2MCw4ICs0NjAsMTMg
QEAgc3ViIGdldFBhcnRpYWxOYW1lc0Zyb21JREwKICAgICBteSAkZmlsZUNvbnRlbnRzID0gJGlk
bEZpbGUtPmZpbGVDb250ZW50czsKIAogICAgIG15IEBwYXJ0aWFsTmFtZXMgPSAoKTsKKyAgICB3
aGlsZSAoJGZpbGVDb250ZW50cyA9fiAvcGFydGlhbFxzK2ludGVyZmFjZVxzK21peGluXHMrKFx3
KykvbWcpIHsKKyAgICAgICAgcHVzaChAcGFydGlhbE5hbWVzLCAkMSk7CisgICAgfQorCisgICAg
JGZpbGVDb250ZW50cyA9ICRpZGxGaWxlLT5maWxlQ29udGVudHM7CiAgICAgd2hpbGUgKCRmaWxl
Q29udGVudHMgPX4gL3BhcnRpYWxccysoaW50ZXJmYWNlfGRpY3Rpb25hcnl8bmFtZXNwYWNlKVxz
KyhcdyspL21nKSB7Ci0gICAgICAgIHB1c2goQHBhcnRpYWxOYW1lcywgJDIpOworICAgICAgICBw
dXNoKEBwYXJ0aWFsTmFtZXMsICQyKSBpZiAkMiBuZSAibWl4aW4iOwogICAgIH0KICAgICAKICAg
ICBpZiAoJHZhbGlkYXRlQWdhaW5zdFBhcnNlcikgewpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5kZXAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERl
cGVuZGVuY2llcy5kZXAJKHJldmlzaW9uIDI2NjcxMikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwCSh3b3JraW5nIGNv
cHkpCkBAIC00NSwxMCArNDUsMTAgQEAgV2ViRE9NVGVzdENhbGxiYWNrSW50ZXJmYWNlLmg6IAog
SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuaDogCiBET01UZXN0Q2xhc3NXaXRo
SlNCdWlsdGluQ29uc3RydWN0b3IuaDogCiBXZWJET01UZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29u
c3RydWN0b3IuaDogCi1KU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmg6IFRlc3RJbmNsdWRlcy5p
ZGwKLURPTVRlc3RDb25kaXRpb25hbEluY2x1ZGVzLmg6IFRlc3RJbmNsdWRlcy5pZGwKLVdlYkRP
TVRlc3RDb25kaXRpb25hbEluY2x1ZGVzLmg6IFRlc3RJbmNsdWRlcy5pZGwKLVRlc3RJbmNsdWRl
cy5pZGw6CitKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmg6IFRlc3RNaXhpbkludGVyZmFjZS5p
ZGwKK0RPTVRlc3RDb25kaXRpb25hbEluY2x1ZGVzLmg6IFRlc3RNaXhpbkludGVyZmFjZS5pZGwK
K1dlYkRPTVRlc3RDb25kaXRpb25hbEluY2x1ZGVzLmg6IFRlc3RNaXhpbkludGVyZmFjZS5pZGwK
K1Rlc3RNaXhpbkludGVyZmFjZS5pZGw6CiBKU1Rlc3RET01KSVQuaDogCiBET01UZXN0RE9NSklU
Lmg6IAogV2ViRE9NVGVzdERPTUpJVC5oOiAKQEAgLTEwMCwxMCArMTAwLDEwIEBAIFRlc3RTdXBw
bGVtZW50YWwuaWRsOgogSlNUZXN0SW5oZXJpdGVkRGljdGlvbmFyeTIuaDogCiBET01UZXN0SW5o
ZXJpdGVkRGljdGlvbmFyeTIuaDogCiBXZWJET01UZXN0SW5oZXJpdGVkRGljdGlvbmFyeTIuaDog
Ci1KU1Rlc3RJbnRlcmZhY2UuaDogVGVzdEluY2x1ZGVzLmlkbCBUZXN0U3VwcGxlbWVudGFsLmlk
bAotRE9NVGVzdEludGVyZmFjZS5oOiBUZXN0SW5jbHVkZXMuaWRsIFRlc3RTdXBwbGVtZW50YWwu
aWRsCi1XZWJET01UZXN0SW50ZXJmYWNlLmg6IFRlc3RJbmNsdWRlcy5pZGwgVGVzdFN1cHBsZW1l
bnRhbC5pZGwKLVRlc3RJbmNsdWRlcy5pZGw6CitKU1Rlc3RJbnRlcmZhY2UuaDogVGVzdE1peGlu
SW50ZXJmYWNlLmlkbCBUZXN0U3VwcGxlbWVudGFsLmlkbAorRE9NVGVzdEludGVyZmFjZS5oOiBU
ZXN0TWl4aW5JbnRlcmZhY2UuaWRsIFRlc3RTdXBwbGVtZW50YWwuaWRsCitXZWJET01UZXN0SW50
ZXJmYWNlLmg6IFRlc3RNaXhpbkludGVyZmFjZS5pZGwgVGVzdFN1cHBsZW1lbnRhbC5pZGwKK1Rl
c3RNaXhpbkludGVyZmFjZS5pZGw6CiBUZXN0U3VwcGxlbWVudGFsLmlkbDoKIEpTVGVzdEludGVy
ZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmg6IAogRE9NVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNj
b3JlLmg6IApAQCAtMTI2LDYgKzEyNiwxMCBAQCBXZWJET01UZXN0TGVnYWN5T3ZlcnJpZGVCdWls
dElucy5oOiAKIEpTVGVzdE1hcExpa2UuaDogCiBET01UZXN0TWFwTGlrZS5oOiAKIFdlYkRPTVRl
c3RNYXBMaWtlLmg6IAorSlNUZXN0TWl4aW5JbnRlcmZhY2UuaDogVGVzdFBhcnRpYWxNaXhpbklu
dGVyZmFjZS5pZGwKK0RPTVRlc3RNaXhpbkludGVyZmFjZS5oOiBUZXN0UGFydGlhbE1peGluSW50
ZXJmYWNlLmlkbAorV2ViRE9NVGVzdE1peGluSW50ZXJmYWNlLmg6IFRlc3RQYXJ0aWFsTWl4aW5J
bnRlcmZhY2UuaWRsCitUZXN0UGFydGlhbE1peGluSW50ZXJmYWNlLmlkbDoKIEpTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5oOiAKIERPTVRlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJOb0lkZW50aWZpZXIuaDogCiBXZWJET01UZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9J
ZGVudGlmaWVyLmg6IApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMuaWRsCShyZXZp
c2lvbiAyNjY3MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dENvbmRpdGlvbmFsSW5jbHVkZXMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw0ICszMyw0IEBA
IGludGVyZmFjZSBUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyB7CiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIGRvdWJsZSB0ZXN0QXR0cjsKIH07CiAKLVtDb25kaXRpb25hbD1Db25kaXRpb24xMiwgRW5h
YmxlZEJ5U2V0dGluZz1UZXN0U2V0dGluZzJdIFRlc3RDb25kaXRpb25hbEluY2x1ZGVzIGluY2x1
ZGVzIFRlc3RJbmNsdWRlczsKK1tDb25kaXRpb25hbD1Db25kaXRpb24xMiwgRW5hYmxlZEJ5U2V0
dGluZz1UZXN0U2V0dGluZzJdIFRlc3RDb25kaXRpb25hbEluY2x1ZGVzIGluY2x1ZGVzIFRlc3RN
aXhpbkludGVyZmFjZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9UZXN0SW5jbHVkZXMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0SW5jbHVkZXMuaWRsCShyZXZpc2lvbiAyNjY3MTIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEluY2x1ZGVzLmlkbAkobm9uZXhp
c3RlbnQpCkBAIC0xLDUxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5n
IEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXN0ckFyZywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhl
IG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRXN0ckFyZywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS8vIFRoaXMgSURMIGZpbGUgaXMgZm9y
IHRlc3RpbmcgdGhlIGJpbmRpbmdzIGNvZGUgZ2VuZXJhdG9yIGFuZCBmb3IgdHJhY2tpbmcKLS8v
IGNoYW5nZXMgaW4gaXRzIG91dHB1dC4KLVsKLSAgICBDb25kaXRpb25hbD1Db25kaXRpb24yMnxD
b25kaXRpb24yMwotXSBpbnRlcmZhY2UgbWl4aW4gVGVzdEluY2x1ZGVzIHsKLSAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGluY2x1ZGVzU3RyMTsKLSAgICBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIGluY2x1ZGVzU3RyMjsKLSAgICBbQ3VzdG9tR2V0dGVyLCBDdXN0b21TZXR0ZXJdIGF0dHJp
YnV0ZSBET01TdHJpbmcgaW5jbHVkZXNTdHIzOwotICAgIGF0dHJpYnV0ZSBOb2RlIGluY2x1ZGVz
Tm9kZTsKLQotICAgIHVuZGVmaW5lZCBpbmNsdWRlc01ldGhvZDEoKTsKLSAgICBbQ2FsbFdpdGg9
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTWF5VGhyb3dFeGNlcHRpb25dIFRlc3RPYmogaW5jbHVk
ZXNNZXRob2QyKERPTVN0cmluZyBzdHJBcmcsIFRlc3RPYmogb2JqQXJnKTsKLSAgICBbQ3VzdG9t
XSB1bmRlZmluZWQgaW5jbHVkZXNNZXRob2QzKCk7Ci0gICAgW0NvbmRpdGlvbmFsPUNvbmRpdGlv
bjExXSB1bmRlZmluZWQgaW5jbHVkZXNNZXRob2RDb25kaXRpb25hbCgpOwotICAgIFtFbmFibGVk
QnlTZXR0aW5nPVRlc3RTZXR0aW5nXSB1bmRlZmluZWQgaW5jbHVkZXNNZXRob2RTZXR0aW5nc0Nv
bmRpdGlvbmFsKCk7Ci0KLSAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBJTkNMVURFU19DT05TVEFO
VDEgPSAxOwotICAgIFtSZWZsZWN0PUNPTlNUX0lNUExdIGNvbnN0IHVuc2lnbmVkIHNob3J0IElO
Q0xVREVTX0NPTlNUQU5UMiA9IDI7Ci0KLSAgICBbUmVzdWx0RmllbGQ9bm9kZXNdIHNlcXVlbmNl
PE5vZGU+IHRha2VOb2RlcygpOwotfTsKLQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Rlc3RJbnRlcmZhY2UuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0SW50ZXJmYWNlLmlkbAkocmV2aXNpb24gMjY2
NzEyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RJbnRlcmZh
Y2UuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00MCw0ICs0MCw0IEBACiAgICAgaXRlcmFibGU8VGVz
dE5vZGUsIFRlc3RPYmo+OwogfTsKIAotVGVzdEludGVyZmFjZSBpbmNsdWRlcyBUZXN0SW5jbHVk
ZXM7CitUZXN0SW50ZXJmYWNlIGluY2x1ZGVzIFRlc3RNaXhpbkludGVyZmFjZTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0TWl4aW5JbnRlcmZhY2UuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0
TWl4aW5JbnRlcmZhY2UuaWRsCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9UZXN0TWl4aW5JbnRlcmZhY2UuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9u
aWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXN0ckFyZywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAg
TmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9m
CisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRXN0ckFyZywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIFRoaXMgSURMIGZpbGUgaXMgZm9yIHRlc3Rpbmcg
dGhlIGJpbmRpbmdzIGNvZGUgZ2VuZXJhdG9yIGFuZCBmb3IgdHJhY2tpbmcKKy8vIGNoYW5nZXMg
aW4gaXRzIG91dHB1dC4KK1sKKyAgICBDb25kaXRpb25hbD1Db25kaXRpb24yMnxDb25kaXRpb24y
MworXSBpbnRlcmZhY2UgbWl4aW4gVGVzdE1peGluSW50ZXJmYWNlIHsKKyAgICByZWFkb25seSBh
dHRyaWJ1dGUgRE9NU3RyaW5nIG1peGluUmVhZE9ubHlBdHRyaWJ1dGU7CisgICAgYXR0cmlidXRl
IERPTVN0cmluZyBtaXhpbkF0dHJpYnV0ZTsKKyAgICBbQ3VzdG9tR2V0dGVyLCBDdXN0b21TZXR0
ZXJdIGF0dHJpYnV0ZSBET01TdHJpbmcgbWl4aW5DdXN0b21BdHRyaWJ1dGU7CisgICAgYXR0cmli
dXRlIE5vZGUgbWl4aW5Ob2RlQXR0cmlidXRlOworCisgICAgdW5kZWZpbmVkIG1peGluT3BlcmF0
aW9uKCk7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE1heVRocm93RXhj
ZXB0aW9uXSBUZXN0T2JqIG1peGluQ29tcGxleE9wZXJhdGlvbihET01TdHJpbmcgc3RyQXJnLCBU
ZXN0T2JqIG9iakFyZyk7CisgICAgW0N1c3RvbV0gdW5kZWZpbmVkIG1peGluQ3VzdG9tT3BlcmF0
aW9uKCk7CisgICAgW0NvbmRpdGlvbmFsPUNvbmRpdGlvbjExXSB1bmRlZmluZWQgbWl4aW5Db25k
aXRpb25hbE9wZXJhdGlvbigpOworICAgIFtFbmFibGVkQnlTZXR0aW5nPVRlc3RTZXR0aW5nXSB1
bmRlZmluZWQgbWl4aW5TZXR0aW5nc0NvbmRpdGlvbmFsT3BlcmF0aW9uKCk7CisgICAgW1Jlc3Vs
dEZpZWxkPW5vZGVzXSBzZXF1ZW5jZTxOb2RlPiBtaXhpblJlc3VsdEZpZWxkT3BlcmF0aW9uKCk7
CisKKyAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBNSVhJTl9DT05TVEFOVCA9IDE7CisgICAgW1Jl
ZmxlY3Q9Q09OU1RfSU1QTF0gY29uc3QgdW5zaWduZWQgc2hvcnQgTUlYSU5fUkVGTEVDVEVEX0NP
TlNUQU5UID0gMjsKK307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVGVzdE9iai5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3RPYmouaWRsCShyZXZpc2lvbiAyNjY3MTIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQ2
Myw3ICs0NjMsNyBAQCBlbnVtIFRlc3RDb25maWRlbmNlIHsgImhpZ2giLCAia2luZGEtbG93CiB9
OwogCiAvLyBUaGUgZm9sbG93aW5nIGNvbW1lbnRzIHNob3VsZCBub3QgZ2VuZXJhdGUgYW55IGNv
ZGUuCi0vLyBUZXN0T2JqIGluY2x1ZGVzIFRlc3RJbmNsdWRlczsKKy8vIFRlc3RPYmogaW5jbHVk
ZXMgVGVzdE1peGluSW50ZXJmYWNlOwogLyogVGVzdE9iaiBpbmNsdWRlcyBUZXN0SW5jbHVkZXM7
ICovCiAKIHR5cGVkZWYgYW55IEFueVR5cGVkZWY7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFBhcnRpYWxNaXhpbkludGVyZmFjZS5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RQYXJ0aWFsTWl4
aW5JbnRlcmZhY2UuaWRsCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0UGFydGlhbE1peGluSW50ZXJmYWNlLmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gVGhpcyBJREwgZmlsZSBpcyBmb3Ig
dGVzdGluZyB0aGUgYmluZGluZ3MgY29kZSBnZW5lcmF0b3IgYW5kIGZvciB0cmFja2luZworLy8g
Y2hhbmdlcyBpbiBpdHMgb3V0cHV0LgorWworICAgIENvbmRpdGlvbmFsPUNvbmRpdGlvbjMzCitd
IHBhcnRpYWwgaW50ZXJmYWNlIG1peGluIFRlc3RNaXhpbkludGVyZmFjZSB7CisgICAgcmVhZG9u
bHkgYXR0cmlidXRlIGRvdWJsZSBwYXJ0aWFsTWl4aW5BdHRyaWJ1dGVGcm9tUGFydGlhbDsKKyAg
ICB1bmRlZmluZWQgcGFydGlhbE1peGluT3BlcmF0aW9uRnJvbVBhcnRpYWwoKTsKKyAgICBjb25z
dCB1bnNpZ25lZCBzaG9ydCBQQVJUSUFMX01JWElOX0NPTlNUQU5UX0ZST01fUEFSVElBTCA9IDU7
Cit9OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dENvbmRpdGlvbmFsSW5jbHVkZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmNwcAkocmV2
aXNpb24gMjY2NzEyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MywyMiAr
NjMsMjUgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIC8vIEZ1bmN0aW9ucwogCiAjaWYgKEVOQUJM
RShDb25kaXRpb24xMikgJiYgRU5BQkxFKENvbmRpdGlvbjIyKSkgfHwgRU5BQkxFKENvbmRpdGlv
bjIzKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENvbmRpdGlvbmFs
SW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbkluY2x1ZGVzTWV0aG9kMShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25NaXhpbk9wZXJhdGlv
bihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNlbmRpZgogI2lmIChF
TkFCTEUoQ29uZGl0aW9uMTIpICYmIEVOQUJMRShDb25kaXRpb24yMikpIHx8IEVOQUJMRShDb25k
aXRpb24yMykKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDb25kaXRp
b25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZDIoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uTWl4aW5Db21w
bGV4T3BlcmF0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2Vu
ZGlmCiAjaWYgKEVOQUJMRShDb25kaXRpb24xMikgJiYgRU5BQkxFKENvbmRpdGlvbjIyKSkgfHwg
RU5BQkxFKENvbmRpdGlvbjIzKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbkluY2x1ZGVzTWV0aG9kMyhK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rp
b25NaXhpbkN1c3RvbU9wZXJhdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJh
bWUqKTsKICNlbmRpZgogI2lmIChFTkFCTEUoQ29uZGl0aW9uMTEpICYmIEVOQUJMRShDb25kaXRp
b24xMikgJiYgRU5BQkxFKENvbmRpdGlvbjIyKSkgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQ
cm90b3R5cGVGdW5jdGlvbkluY2x1ZGVzTWV0aG9kQ29uZGl0aW9uYWwoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uTWl4aW5Db25kaXRp
b25hbE9wZXJhdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNl
bmRpZgogI2lmIChFTkFCTEUoQ29uZGl0aW9uMTIpICYmIEVOQUJMRShDb25kaXRpb24yMikpIHx8
IEVOQUJMRShDb25kaXRpb24yMykKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZFNl
dHRpbmdzQ29uZGl0aW9uYWwoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7
CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q29uZGl0aW9uYWxJbmNs
dWRlc1Byb3RvdHlwZUZ1bmN0aW9uTWl4aW5TZXR0aW5nc0NvbmRpdGlvbmFsT3BlcmF0aW9uKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2VuZGlmCiAjaWYgKEVOQUJM
RShDb25kaXRpb24xMikgJiYgRU5BQkxFKENvbmRpdGlvbjIyKSkgfHwgRU5BQkxFKENvbmRpdGlv
bjIzKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENvbmRpdGlvbmFs
SW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvblRha2VOb2RlcyhKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25NaXhpblJlc3VsdEZpZWxkT3Bl
cmF0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworI2VuZGlmCisj
aWYgKEVOQUJMRShDb25kaXRpb24xMikgJiYgRU5BQkxFKENvbmRpdGlvbjIyKSAmJiBFTkFCTEUo
Q29uZGl0aW9uMzMpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCitKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9u
UGFydGlhbE1peGluT3BlcmF0aW9uRnJvbVBhcnRpYWwoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYKIAogLy8gQXR0cmlidXRlcwpAQCAtODcsMTkgKzkwLDIy
IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q29uZGl0aW9uYWxJbmMKIGJvb2wgc2V0SlNU
ZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Rlc3RBdHRyKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiAjaWYgRU5BQkxF
KENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1KU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNJbmNsdWRlc1N0cjEoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc01peGluUmVhZE9ubHlBdHRyaWJ1dGUo
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlO
YW1lKTsKKyNlbmRpZgorI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlv
bjIzKQorSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzTWl4aW5B
dHRyaWJ1dGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc01peGluQXR0
cmlidXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlKTsKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxF
KENvbmRpdGlvbjIzKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDb25kaXRpb25hbEluY2x1
ZGVzSW5jbHVkZXNTdHIyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1ib29sIHNldEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNJ
bmNsdWRlc1N0cjIoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6RW5jb2RlZEpTVmFsdWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDb25kaXRpb25h
bEluY2x1ZGVzTWl4aW5DdXN0b21BdHRyaWJ1dGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0Q29uZGl0
aW9uYWxJbmNsdWRlc01peGluQ3VzdG9tQXR0cmlidXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKICNlbmRpZgogI2lmIEVO
QUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzSW5jbHVkZXNTdHIzKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1ib29sIHNl
dEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNJbmNsdWRlc1N0cjMoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzTWl4aW5Ob2RlQXR0cmlidXRlKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFt
ZSk7Citib29sIHNldEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNNaXhpbk5vZGVBdHRyaWJ1dGUo
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpT
VmFsdWUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0
aW9uMjMpCi1KU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNJbmNs
dWRlc05vZGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
UHJvcGVydHlOYW1lKTsKLWJvb2wgc2V0SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0luY2x1ZGVz
Tm9kZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVk
ZXNQYXJ0aWFsTWl4aW5BdHRyaWJ1dGVGcm9tUGFydGlhbChKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogI2VuZGlmCiAKIGNsYXNz
IEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpK
U05vbkZpbmFsT2JqZWN0IHsKQEAgLTE0MSwyMyArMTQ3LDMxIEBAIHVzaW5nIEpTVGVzdENvbmRp
dGlvbmFsSW5jbHVkZXNDb25zdHJ1Y3QKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rl
c3RDb25kaXRpb25hbEluY2x1ZGVzQ29uc3RydWN0b3JUYWJsZVZhbHVlc1tdID0KIHsKICNpZiBF
TkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLSAgICB7ICJJTkNMVURF
U19DT05TVEFOVDEiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDb25z
dGFudEludGVnZXIsIE5vSW50cmluc2ljLCB7IChsb25nIGxvbmcpKDEpIH0gfSwKKyAgICB7ICJN
SVhJTl9DT05TVEFOVCIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNv
bnN0YW50SW50ZWdlciwgTm9JbnRyaW5zaWMsIHsgKGxvbmcgbG9uZykoMSkgfSB9LAorI2Vsc2UK
KyAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAorI2VuZGlmCisjaWYgRU5BQkxF
KENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCisgICAgeyAiTUlYSU5fUkVGTEVD
VEVEX0NPTlNUQU5UIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29u
c3RhbnRJbnRlZ2VyLCBOb0ludHJpbnNpYywgeyAobG9uZyBsb25nKSgyKSB9IH0sCiAjZWxzZQog
ICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYKICNpZiBFTkFCTEUo
Q29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLSAgICB7ICJJTkNMVURFU19DT05T
VEFOVDIiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFudElu
dGVnZXIsIE5vSW50cmluc2ljLCB7IChsb25nIGxvbmcpKDIpIH0gfSwKKyAgICB7ICJQQVJUSUFM
X01JWElOX0NPTlNUQU5UX0ZST01fUEFSVElBTCIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdlciwgTm9JbnRyaW5zaWMsIHsgKGxvbmcgbG9uZyko
NSkgfSB9LAogI2Vsc2UKICAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAogI2Vu
ZGlmCiB9OwogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMp
Ci1zdGF0aWNfYXNzZXJ0KFRlc3RDb25kaXRpb25hbEluY2x1ZGVzOjpJTkNMVURFU19DT05TVEFO
VDEgPT0gMSwgIklOQ0xVREVTX0NPTlNUQU5UMSBpbiBUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyBk
b2VzIG5vdCBtYXRjaCB2YWx1ZSBmcm9tIElETCIpOworc3RhdGljX2Fzc2VydChUZXN0Q29uZGl0
aW9uYWxJbmNsdWRlczo6TUlYSU5fQ09OU1RBTlQgPT0gMSwgIk1JWElOX0NPTlNUQU5UIGluIFRl
c3RDb25kaXRpb25hbEluY2x1ZGVzIGRvZXMgbm90IG1hdGNoIHZhbHVlIGZyb20gSURMIik7CiAj
ZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKIHN0
YXRpY19hc3NlcnQoVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM6OkNPTlNUX0lNUEwgPT0gMiwgIkNP
TlNUX0lNUEwgaW4gVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMgZG9lcyBub3QgbWF0Y2ggdmFsdWUg
ZnJvbSBJREwiKTsKICNlbmRpZgorI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENv
bmRpdGlvbjIzKQorc3RhdGljX2Fzc2VydChUZXN0Q29uZGl0aW9uYWxJbmNsdWRlczo6UEFSVElB
TF9NSVhJTl9DT05TVEFOVF9GUk9NX1BBUlRJQUwgPT0gNSwgIlBBUlRJQUxfTUlYSU5fQ09OU1RB
TlRfRlJPTV9QQVJUSUFMIGluIFRlc3RDb25kaXRpb25hbEluY2x1ZGVzIGRvZXMgbm90IG1hdGNo
IHZhbHVlIGZyb20gSURMIik7CisjZW5kaWYKIAogdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXNDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6
Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewpAQCAtMTgy
LDYyICsxOTYsNzcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdENvbmRpdAog
ICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzQ29u
c3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzQ29uc3RydWN0b3IpIH0gfSwKICAg
ICB7ICJ0ZXN0QXR0ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RDb25k
aXRpb25hbEluY2x1ZGVzVGVzdEF0dHIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8
fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgeyAiaW5jbHVkZXNTdHIxIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNJbmNsdWRlc1N0cjEp
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigw
KSB9IH0sCisgICAgeyAibWl4aW5SZWFkT25seUF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzTWl4aW5SZWFkT25seUF0dHJp
YnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KDApIH0gfSwKKyNlbHNlCisgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwK
KyNlbmRpZgorI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQor
ICAgIHsgIm1peGluQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzTWl4aW5BdHRyaWJ1
dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzTWl4aW5BdHRyaWJ1dGUpIH0gfSwKICNlbHNl
CiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKICNlbmRpZgogI2lmIEVOQUJM
RShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIHsgImluY2x1ZGVzU3Ry
MiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0luY2x1ZGVzU3RyMiksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdENvbmRpdGlvbmFs
SW5jbHVkZXNJbmNsdWRlc1N0cjIpIH0gfSwKKyAgICB7ICJtaXhpbkN1c3RvbUF0dHJpYnV0ZSIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNU
ZXN0Q29uZGl0aW9uYWxJbmNsdWRlc01peGluQ3VzdG9tQXR0cmlidXRlKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0Q29uZGl0
aW9uYWxJbmNsdWRlc01peGluQ3VzdG9tQXR0cmlidXRlKSB9IH0sCiAjZWxzZQogICAgIHsgMCwg
MCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9u
MjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLSAgICB7ICJpbmNsdWRlc1N0cjMiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdENvbmRp
dGlvbmFsSW5jbHVkZXNJbmNsdWRlc1N0cjMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzSW5j
bHVkZXNTdHIzKSB9IH0sCisgICAgeyAibWl4aW5Ob2RlQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RDb25kaXRpb25h
bEluY2x1ZGVzTWl4aW5Ob2RlQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc01p
eGluTm9kZUF0dHJpYnV0ZSkgfSB9LAogI2Vsc2UKICAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7
IDAsIDAgfSB9LAogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29u
ZGl0aW9uMjMpCi0gICAgeyAiaW5jbHVkZXNOb2RlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzSW5j
bHVkZXNOb2RlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0luY2x1ZGVzTm9kZSkgfSB9LAor
ICAgIHsgInBhcnRpYWxNaXhpbkF0dHJpYnV0ZUZyb21QYXJ0aWFsIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQYXJ0aWFsTWl4aW5BdHRy
aWJ1dGVGcm9tUGFydGlhbCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywg
eyAwLCAwIH0gfSwKICNlbmRpZgogI2lmIChFTkFCTEUoQ29uZGl0aW9uMTIpICYmIEVOQUJMRShD
b25kaXRpb24yMikpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLSAgICB7ICJpbmNsdWRlc01ldGhv
ZDEiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rp
b24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rp
b24+KGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbkluY2x1ZGVzTWV0
aG9kMSksIChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICJtaXhpbk9wZXJhdGlvbiIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0
Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uTWl4aW5PcGVyYXRpb24pLCAoaW50
cHRyX3QpICgwKSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9
IH0sCiAjZW5kaWYKICNpZiAoRU5BQkxFKENvbmRpdGlvbjEyKSAmJiBFTkFCTEUoQ29uZGl0aW9u
MjIpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgeyAiaW5jbHVkZXNNZXRob2QyIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rl
c3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZDIpLCAo
aW50cHRyX3QpICgyKSB9IH0sCisgICAgeyAibWl4aW5Db21wbGV4T3BlcmF0aW9uIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RD
b25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25NaXhpbkNvbXBsZXhPcGVyYXRpb24p
LCAoaW50cHRyX3QpICgyKSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsg
MCwgMCB9IH0sCiAjZW5kaWYKICNpZiAoRU5BQkxFKENvbmRpdGlvbjEyKSAmJiBFTkFCTEUoQ29u
ZGl0aW9uMjIpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgeyAiaW5jbHVkZXNNZXRob2Qz
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9u
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9u
Pihqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhv
ZDMpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAibWl4aW5DdXN0b21PcGVyYXRpb24iLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpz
VGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbk1peGluQ3VzdG9tT3BlcmF0
aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LAogI2Vsc2UKICAgICB7IDAsIDAsIE5vSW50cmluc2lj
LCB7IDAsIDAgfSB9LAogI2VuZGlmCiAjaWYgKEVOQUJMRShDb25kaXRpb24xMSkgJiYgRU5BQkxF
KENvbmRpdGlvbjEyKSAmJiBFTkFCTEUoQ29uZGl0aW9uMjIpKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MjMpCi0gICAgeyAiaW5jbHVkZXNNZXRob2RDb25kaXRpb25hbCIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0Q29uZGl0aW9uYWxJ
bmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2RDb25kaXRpb25hbCksIChpbnRw
dHJfdCkgKDApIH0gfSwKKyAgICB7ICJtaXhpbkNvbmRpdGlvbmFsT3BlcmF0aW9uIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RD
b25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25NaXhpbkNvbmRpdGlvbmFsT3BlcmF0
aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LAogI2Vsc2UKICAgICB7IDAsIDAsIE5vSW50cmluc2lj
LCB7IDAsIDAgfSB9LAogI2VuZGlmCiAjaWYgKEVOQUJMRShDb25kaXRpb24xMikgJiYgRU5BQkxF
KENvbmRpdGlvbjIyKSkgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIHsgImluY2x1ZGVzTWV0
aG9kU2V0dGluZ3NDb25kaXRpb25hbCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlw
ZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2RTZXR0aW5nc0NvbmRpdGlvbmFsKSwgKGludHB0cl90KSAo
MCkgfSB9LAorICAgIHsgIm1peGluU2V0dGluZ3NDb25kaXRpb25hbE9wZXJhdGlvbiIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0
Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uTWl4aW5TZXR0aW5nc0NvbmRpdGlv
bmFsT3BlcmF0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LAogI2Vsc2UKICAgICB7IDAsIDAsIE5v
SW50cmluc2ljLCB7IDAsIDAgfSB9LAogI2VuZGlmCiAjaWYgKEVOQUJMRShDb25kaXRpb24xMikg
JiYgRU5BQkxFKENvbmRpdGlvbjIyKSkgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIHsgInRh
a2VOb2RlcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpG
dW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVG
dW5jdGlvbj4oanNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uVGFrZU5v
ZGVzKSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgIm1peGluUmVzdWx0RmllbGRPcGVyYXRp
b24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rp
b24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rp
b24+KGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbk1peGluUmVzdWx0
RmllbGRPcGVyYXRpb24pLCAoaW50cHRyX3QpICgwKSB9IH0sCisjZWxzZQorICAgIHsgMCwgMCwg
Tm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCisjZW5kaWYKKyNpZiAoRU5BQkxFKENvbmRpdGlvbjEy
KSAmJiBFTkFCTEUoQ29uZGl0aW9uMjIpICYmIEVOQUJMRShDb25kaXRpb24zMykpIHx8IEVOQUJM
RShDb25kaXRpb24yMykKKyAgICB7ICJwYXJ0aWFsTWl4aW5PcGVyYXRpb25Gcm9tUGFydGlhbCIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4o
anNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uUGFydGlhbE1peGluT3Bl
cmF0aW9uRnJvbVBhcnRpYWwpLCAoaW50cHRyX3QpICgwKSB9IH0sCiAjZWxzZQogICAgIHsgMCwg
MCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9u
MjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLSAgICB7ICJJTkNMVURFU19DT05TVEFOVDEiLCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIsIE5v
SW50cmluc2ljLCB7IChsb25nIGxvbmcpKDEpIH0gfSwKKyAgICB7ICJNSVhJTl9DT05TVEFOVCIs
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdlciwg
Tm9JbnRyaW5zaWMsIHsgKGxvbmcgbG9uZykoMSkgfSB9LAogI2Vsc2UKICAgICB7IDAsIDAsIE5v
SW50cmluc2ljLCB7IDAsIDAgfSB9LAogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8
fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgeyAiSU5DTFVERVNfQ09OU1RBTlQyIiwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2VyLCBOb0ludHJp
bnNpYywgeyAobG9uZyBsb25nKSgyKSB9IH0sCisgICAgeyAiTUlYSU5fUkVGTEVDVEVEX0NPTlNU
QU5UIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRl
Z2VyLCBOb0ludHJpbnNpYywgeyAobG9uZyBsb25nKSgyKSB9IH0sCisjZWxzZQorICAgIHsgMCwg
MCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCisjZW5kaWYKKyNpZiBFTkFCTEUoQ29uZGl0aW9u
MjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKKyAgICB7ICJQQVJUSUFMX01JWElOX0NPTlNUQU5U
X0ZST01fUEFSVElBTCIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNv
bnN0YW50SW50ZWdlciwgTm9JbnRyaW5zaWMsIHsgKGxvbmcgbG9uZykoNSkgfSB9LAogI2Vsc2UK
ICAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAogI2VuZGlmCkBAIC0yNTMsNyAr
MjgyLDcgQEAgdm9pZCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlOgogI2lmIChF
TkFCTEUoQ29uZGl0aW9uMTIpICYmIEVOQUJMRShDb25kaXRpb24yMikpIHx8IEVOQUJMRShDb25k
aXRpb24yMykKICAgICBpZiAoIWRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRp
bmdzKCkudGVzdFNldHRpbmcyRW5hYmxlZCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGlt
ZVByb3BlcnRpZXMgPSB0cnVlOwotICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiaW5jbHVk
ZXNNZXRob2QxIiksIHN0cmxlbigiaW5jbHVkZXNNZXRob2QxIikpOworICAgICAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgTENoYXIqPigibWl4aW5PcGVyYXRpb24iKSwgc3RybGVuKCJtaXhpbk9wZXJhdGlvbiIp
KTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVs
ZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwogICAgICAgICBEZWxldGVQcm9w
ZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGds
b2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpAQCAtMjYyLDcgKzI5MSw3IEBAIHZv
aWQgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZToKICNpZiAoRU5BQkxFKENvbmRp
dGlvbjEyKSAmJiBFTkFCTEUoQ29uZGl0aW9uMjIpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCiAg
ICAgaWYgKCFkb3duY2FzdDxEb2N1bWVudD4oanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xv
YmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5zZXR0aW5ncygpLnRlc3RT
ZXR0aW5nMkVuYWJsZWQoKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVz
ID0gdHJ1ZTsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImluY2x1ZGVzTWV0aG9kMiIp
LCBzdHJsZW4oImluY2x1ZGVzTWV0aG9kMiIpKTsKKyAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUg
PSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFy
Kj4oIm1peGluQ29tcGxleE9wZXJhdGlvbiIpLCBzdHJsZW4oIm1peGluQ29tcGxleE9wZXJhdGlv
biIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6
RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwogICAgICAgICBEZWxldGVQ
cm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMs
IGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpAQCAtMjcxLDcgKzMwMCw3IEBA
IHZvaWQgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZToKICNpZiAoRU5BQkxFKENv
bmRpdGlvbjEyKSAmJiBFTkFCTEUoQ29uZGl0aW9uMjIpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMp
CiAgICAgaWYgKCFkb3duY2FzdDxEb2N1bWVudD4oanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
Z2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5zZXR0aW5ncygpLnRl
c3RTZXR0aW5nMkVuYWJsZWQoKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0
aWVzID0gdHJ1ZTsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImluY2x1ZGVzTWV0aG9k
MyIpLCBzdHJsZW4oImluY2x1ZGVzTWV0aG9kMyIpKTsKKyAgICAgICAgYXV0byBwcm9wZXJ0eU5h
bWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExD
aGFyKj4oIm1peGluQ3VzdG9tT3BlcmF0aW9uIiksIHN0cmxlbigibWl4aW5DdXN0b21PcGVyYXRp
b24iKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06
OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAgICAgICAgRGVsZXRl
UHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlz
LCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKQEAgLTI4MCw3ICszMDksNyBA
QCB2b2lkIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGU6CiAjaWYgKEVOQUJMRShD
b25kaXRpb24xMSkgJiYgRU5BQkxFKENvbmRpdGlvbjEyKSAmJiBFTkFCTEUoQ29uZGl0aW9uMjIp
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCiAgICAgaWYgKCFkb3duY2FzdDxEb2N1bWVudD4oanND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpLT5zZXR0aW5ncygpLnRlc3RTZXR0aW5nMkVuYWJsZWQoKSkgewogICAgICAgICBo
YXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKLSAgICAgICAgYXV0byBwcm9wZXJ0
eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0
IExDaGFyKj4oImluY2x1ZGVzTWV0aG9kQ29uZGl0aW9uYWwiKSwgc3RybGVuKCJpbmNsdWRlc01l
dGhvZENvbmRpdGlvbmFsIikpOworICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigibWl4aW5D
b25kaXRpb25hbE9wZXJhdGlvbiIpLCBzdHJsZW4oIm1peGluQ29uZGl0aW9uYWxPcGVyYXRpb24i
KSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRl
bGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAgICAgICAgRGVsZXRlUHJv
cGVydHlTbG90IHNsb3Q7CiAgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBn
bG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKQEAgLTI4OSw3ICszMTgsNyBAQCB2
b2lkIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGU6CiAjaWYgKEVOQUJMRShDb25k
aXRpb24xMikgJiYgRU5BQkxFKENvbmRpdGlvbjIyKSkgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQog
ICAgIGlmICghKGRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihn
bG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkudGVz
dFNldHRpbmdFbmFibGVkKCkgJiYgZG93bmNhc3Q8RG9jdW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0
dGluZ3MoKS50ZXN0U2V0dGluZzJFbmFibGVkKCkpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVu
dGltZVByb3BlcnRpZXMgPSB0cnVlOwotICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiaW5j
bHVkZXNNZXRob2RTZXR0aW5nc0NvbmRpdGlvbmFsIiksIHN0cmxlbigiaW5jbHVkZXNNZXRob2RT
ZXR0aW5nc0NvbmRpdGlvbmFsIikpOworICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigibWl4
aW5TZXR0aW5nc0NvbmRpdGlvbmFsT3BlcmF0aW9uIiksIHN0cmxlbigibWl4aW5TZXR0aW5nc0Nv
bmRpdGlvbmFsT3BlcmF0aW9uIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2Nv
cGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7
CiAgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBKU09iamVjdDo6ZGVs
ZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CkBA
IC0yOTgsNyArMzI3LDI1IEBAIHZvaWQgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlw
ZToKICNpZiAoRU5BQkxFKENvbmRpdGlvbjEyKSAmJiBFTkFCTEUoQ29uZGl0aW9uMjIpKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMjMpCiAgICAgaWYgKCFkb3duY2FzdDxEb2N1bWVudD4oanNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpLT5zZXR0aW5ncygpLnRlc3RTZXR0aW5nMkVuYWJsZWQoKSkgewogICAgICAgICBoYXNEaXNh
YmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUg
PSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFy
Kj4oInRha2VOb2RlcyIpLCBzdHJsZW4oInRha2VOb2RlcyIpKTsKKyAgICAgICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4oIm1peGluUmVzdWx0RmllbGRPcGVyYXRpb24iKSwgc3RybGVuKCJtaXhpblJl
c3VsdEZpZWxkT3BlcmF0aW9uIikpOworICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2Nv
cGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7
CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVs
ZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Cisg
ICAgfQorI2VuZGlmCisjaWYgKEVOQUJMRShDb25kaXRpb24xMikgJiYgRU5BQkxFKENvbmRpdGlv
bjIyKSAmJiBFTkFCTEUoQ29uZGl0aW9uMzMpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCisgICAg
aWYgKCFkb3duY2FzdDxEb2N1bWVudD4oanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFs
T2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5zZXR0aW5ncygpLnRlc3RTZXR0
aW5nMkVuYWJsZWQoKSkgeworICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0g
dHJ1ZTsKKyAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oInBhcnRpYWxNaXhpbk9wZXJhdGlv
bkZyb21QYXJ0aWFsIiksIHN0cmxlbigicGFydGlhbE1peGluT3BlcmF0aW9uRnJvbVBhcnRpYWwi
KSk7CisgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRl
bGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKKyAgICAgICAgRGVsZXRlUHJv
cGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBn
bG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICB9CisjZW5kaWYKKyNpZiBF
TkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKKyAgICBpZiAoIWRvd25j
YXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSkt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkudGVzdFNldHRpbmcyRW5hYmxl
ZCgpKSB7CisgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOworICAg
ICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigibWl4aW5SZWFkT25seUF0dHJpYnV0ZSIpLCBzdHJs
ZW4oIm1peGluUmVhZE9ubHlBdHRyaWJ1dGUiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0
eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmln
dXJhYmxlKTsKICAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIEpTT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBz
bG90KTsKQEAgLTMwNyw3ICszNTQsNyBAQCB2b2lkIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQ
cm90b3R5cGU6CiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMp
CiAgICAgaWYgKCFkb3duY2FzdDxEb2N1bWVudD4oanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
Z2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5zZXR0aW5ncygpLnRl
c3RTZXR0aW5nMkVuYWJsZWQoKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0
aWVzID0gdHJ1ZTsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImluY2x1ZGVzU3RyMSIp
LCBzdHJsZW4oImluY2x1ZGVzU3RyMSIpKTsKKyAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4o
Im1peGluQXR0cmlidXRlIiksIHN0cmxlbigibWl4aW5BdHRyaWJ1dGUiKSk7CiAgICAgICAgIFZN
OjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9k
ZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7
CiAgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwg
cHJvcGVydHlOYW1lLCBzbG90KTsKQEAgLTMxNiw3ICszNjMsNyBAQCB2b2lkIEpTVGVzdENvbmRp
dGlvbmFsSW5jbHVkZXNQcm90b3R5cGU6CiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFC
TEUoQ29uZGl0aW9uMjMpCiAgICAgaWYgKCFkb3duY2FzdDxEb2N1bWVudD4oanNDYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkp
LT5zZXR0aW5ncygpLnRlc3RTZXR0aW5nMkVuYWJsZWQoKSkgewogICAgICAgICBoYXNEaXNhYmxl
ZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4o
ImluY2x1ZGVzU3RyMiIpLCBzdHJsZW4oImluY2x1ZGVzU3RyMiIpKTsKKyAgICAgICAgYXV0byBw
cm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0
PGNvbnN0IExDaGFyKj4oIm1peGluQ3VzdG9tQXR0cmlidXRlIiksIHN0cmxlbigibWl4aW5DdXN0
b21BdHRyaWJ1dGUiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29w
ZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAgICAg
ICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKQEAgLTMyNSw3
ICszNzIsNyBAQCB2b2lkIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGU6CiAjaWYg
RU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCiAgICAgaWYgKCFkb3du
Y2FzdDxEb2N1bWVudD4oanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkp
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5zZXR0aW5ncygpLnRlc3RTZXR0aW5nMkVuYWJs
ZWQoKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKLSAg
ICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImluY2x1ZGVzU3RyMyIpLCBzdHJsZW4oImluY2x1
ZGVzU3RyMyIpKTsKKyAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIm1peGluTm9kZUF0dHJp
YnV0ZSIpLCBzdHJsZW4oIm1peGluTm9kZUF0dHJpYnV0ZSIpKTsKICAgICAgICAgVk06OkRlbGV0
ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25v
cmVDb25maWd1cmFibGUpOwogICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAg
ICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOwpAQCAtMzM0LDcgKzM4MSw3IEBAIHZvaWQgSlNUZXN0Q29uZGl0aW9uYWxJ
bmNsdWRlc1Byb3RvdHlwZToKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25k
aXRpb24yMykKICAgICBpZiAoIWRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRp
bmdzKCkudGVzdFNldHRpbmcyRW5hYmxlZCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGlt
ZVByb3BlcnRpZXMgPSB0cnVlOwotICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiaW5jbHVk
ZXNOb2RlIiksIHN0cmxlbigiaW5jbHVkZXNOb2RlIikpOworICAgICAgICBhdXRvIHByb3BlcnR5
TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
TENoYXIqPigicGFydGlhbE1peGluQXR0cmlidXRlRnJvbVBhcnRpYWwiKSwgc3RybGVuKCJwYXJ0
aWFsTWl4aW5BdHRyaWJ1dGVGcm9tUGFydGlhbCIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3Bl
cnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25m
aWd1cmFibGUpOwogICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgSlNP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwpAQCAtNDI5LDM5ICs0NzYsMzkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Q29uZGl0
aW9uYWxJbmNsdWRlcwogfQogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29u
ZGl0aW9uMjMpCi1zdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRl
c0luY2x1ZGVzU3RyMUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyYgdGhpc09iamVjdCkKK3N0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzTWl4aW5SZWFkT25seUF0dHJpYnV0ZUdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0Q29uZGl0aW9uYWxJ
bmNsdWRlcyYgdGhpc09iamVjdCkKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmluY2x1ZGVzU3RyMSgpKSkpOworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExET01TdHJpbmc+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwubWl4aW5SZWFkT25seUF0dHJpYnV0ZSgpKSkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzSW5jbHVkZXNTdHIx
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFsSW5j
bHVkZXNNaXhpblJlYWRPbmx5QXR0cmlidXRlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+OjpnZXQ8anNUZXN0
Q29uZGl0aW9uYWxJbmNsdWRlc0luY2x1ZGVzU3RyMUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImluY2x1ZGVz
U3RyMSIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRl
cz46OmdldDxqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzTWl4aW5SZWFkT25seUF0dHJpYnV0ZUdl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgIm1peGluUmVhZE9ubHlBdHRyaWJ1dGUiKTsKIH0KIAogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLXN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzSW5jbHVkZXNTdHIyR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RDb25kaXRpb25hbElu
Y2x1ZGVzJiB0aGlzT2JqZWN0KQorc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdENvbmRpdGlv
bmFsSW5jbHVkZXNNaXhpbkF0dHJpYnV0ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyYgdGhpc09iamVjdCkKIHsKICAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmluY2x1ZGVzU3RyMigpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAo
dG9KUzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
bWl4aW5BdHRyaWJ1dGUoKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0Q29uZGl0aW9u
YWxJbmNsdWRlc0luY2x1ZGVzU3RyMihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzTWl4aW5BdHRyaWJ1dGUoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKQogewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRl
cz46OmdldDxqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzSW5jbHVkZXNTdHIyR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiaW5jbHVkZXNTdHIyIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RDb25k
aXRpb25hbEluY2x1ZGVzPjo6Z2V0PGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNNaXhpbkF0dHJp
YnV0ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgIm1peGluQXR0cmlidXRlIik7CiB9CiAKICNlbmRpZgogCiAj
aWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1zdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0luY2x1ZGVzU3RyMlNldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0Q29uZGl0aW9uYWxJbmNs
dWRlcyYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzTWl4aW5BdHRyaWJ1dGVTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMmIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKQEAgLTQ2OSw4NiArNTE2LDEwMiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNU
ZXN0Q29uZGl0aW9uYWxJCiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3Ry
aW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7Ci0gICAgICAgIHJldHVybiBpbXBsLnNldElu
Y2x1ZGVzU3RyMihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgICAgIHJldHVybiBpbXBsLnNl
dE1peGluQXR0cmlidXRlKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgICB9KTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBzZXRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzSW5jbHVkZXNT
dHIyKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0Q29u
ZGl0aW9uYWxJbmNsdWRlc01peGluQXR0cmlidXRlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKIHsKLSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdENvbmRpdGlvbmFsSW5j
bHVkZXM+OjpzZXQ8c2V0SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0luY2x1ZGVzU3RyMlNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiaW5jbHVk
ZXNTdHIyIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RDb25kaXRpb25hbEluY2x1
ZGVzPjo6c2V0PHNldEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNNaXhpbkF0dHJpYnV0ZVNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAibWl4aW5B
dHRyaWJ1dGUiKTsKIH0KIAogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVO
QUJMRShDb25kaXRpb24yMykKLXN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RDb25kaXRpb25h
bEluY2x1ZGVzSW5jbHVkZXNTdHIzR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzJiB0aGlzT2JqZWN0KQorc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNNaXhpbkN1c3RvbUF0dHJpYnV0
ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0Q29uZGl0
aW9uYWxJbmNsdWRlcyYgdGhpc09iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0obGV4aWNhbEds
b2JhbE9iamVjdCk7Ci0gICAgcmV0dXJuIHRoaXNPYmplY3QuaW5jbHVkZXNTdHIzKGxleGljYWxH
bG9iYWxPYmplY3QpOworICAgIHJldHVybiB0aGlzT2JqZWN0Lm1peGluQ3VzdG9tQXR0cmlidXRl
KGxleGljYWxHbG9iYWxPYmplY3QpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDb25kaXRp
b25hbEluY2x1ZGVzSW5jbHVkZXNTdHIzKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK0VuY29kZWRKU1Zh
bHVlIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNNaXhpbkN1c3RvbUF0dHJpYnV0ZShKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RDb25kaXRpb25h
bEluY2x1ZGVzPjo6Z2V0PGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNJbmNsdWRlc1N0cjNHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJpbmNsdWRlc1N0cjMiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
VGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+OjpnZXQ8anNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc01p
eGluQ3VzdG9tQXR0cmlidXRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAibWl4aW5DdXN0b21BdHRyaWJ1dGUi
KTsKIH0KIAogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25k
aXRpb24yMykKLXN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVz
SW5jbHVkZXNTdHIzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQorc3Rh
dGljIGlubGluZSBib29sIHNldEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNNaXhpbkN1c3RvbUF0
dHJpYnV0ZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0
Q29uZGl0aW9uYWxJbmNsdWRlcyYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIHRoaXNPYmpl
Y3Quc2V0SW5jbHVkZXNTdHIzKGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKKyAgICB0aGlz
T2JqZWN0LnNldE1peGluQ3VzdG9tQXR0cmlidXRlKGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBzZXRKU1Rlc3RDb25kaXRpb25hbEluY2x1
ZGVzSW5jbHVkZXNTdHIzKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wg
c2V0SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc01peGluQ3VzdG9tQXR0cmlidXRlKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
VGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+OjpzZXQ8c2V0SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRl
c0luY2x1ZGVzU3RyM1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAiaW5jbHVkZXNTdHIzIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rl
c3RDb25kaXRpb25hbEluY2x1ZGVzPjo6c2V0PHNldEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNN
aXhpbkN1c3RvbUF0dHJpYnV0ZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAibWl4aW5DdXN0b21BdHRyaWJ1dGUiKTsKIH0KIAogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLXN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzSW5jbHVkZXNOb2RlR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RDb25kaXRpb25hbElu
Y2x1ZGVzJiB0aGlzT2JqZWN0KQorc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdENvbmRpdGlv
bmFsSW5jbHVkZXNNaXhpbk5vZGVBdHRyaWJ1dGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMmIHRoaXNPYmplY3QpCiB7
CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETEludGVyZmFjZTxOb2RlPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNP
YmplY3QuZ2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwuaW5jbHVkZXNOb2RlKCkpKSk7
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETEludGVyZmFjZTxO
b2RlPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCksIHRo
cm93U2NvcGUsIGltcGwubWl4aW5Ob2RlQXR0cmlidXRlKCkpKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNJbmNsdWRlc05vZGUoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc01peGluTm9kZUF0
dHJpYnV0ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPjo6Z2V0PGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNJ
bmNsdWRlc05vZGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJpbmNsdWRlc05vZGUiKTsKKyAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+OjpnZXQ8anNUZXN0Q29uZGl0
aW9uYWxJbmNsdWRlc01peGluTm9kZUF0dHJpYnV0ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIm1peGluTm9k
ZUF0dHJpYnV0ZSIpOwogfQogCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwg
RU5BQkxFKENvbmRpdGlvbjIzKQotc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdENvbmRpdGlv
bmFsSW5jbHVkZXNJbmNsdWRlc05vZGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMmIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc01p
eGluTm9kZUF0dHJpYnV0ZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
IHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExJbnRlcmZhY2U8Tm9kZT4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCBbXShKU0M6
OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNj
b3BlKSB7IHRocm93QXR0cmlidXRlVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3Bl
LCAiVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMiLCAiaW5jbHVkZXNOb2RlIiwgIk5vZGUiKTsgfSk7
CisgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMSW50ZXJmYWNlPE5vZGU+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0F0dHJpYnV0ZVR5cGVF
cnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlc3RDb25kaXRpb25hbEluY2x1ZGVz
IiwgIm1peGluTm9kZUF0dHJpYnV0ZSIsICJOb2RlIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewotICAgICAgICByZXR1cm4gaW1wbC5z
ZXRJbmNsdWRlc05vZGUoKm5hdGl2ZVZhbHVlKTsKKyAgICAgICAgcmV0dXJuIGltcGwuc2V0TWl4
aW5Ob2RlQXR0cmlidXRlKCpuYXRpdmVWYWx1ZSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgc2V0SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0luY2x1ZGVzTm9kZShKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdENvbmRpdGlvbmFs
SW5jbHVkZXNNaXhpbk5vZGVBdHRyaWJ1dGUoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRl
cz46OnNldDxzZXRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzTWl4aW5Ob2RlQXR0cmlidXRlU2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJtaXhp
bk5vZGVBdHRyaWJ1dGUiKTsKK30KKworI2VuZGlmCisKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMjIp
IHx8IEVOQUJMRShDb25kaXRpb24yMykKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RDb25k
aXRpb25hbEluY2x1ZGVzUGFydGlhbE1peGluQXR0cmlidXRlRnJvbVBhcnRpYWxHZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVk
ZXMmIHRoaXNPYmplY3QpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETERvdWJsZT4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5wYXJ0aWFsTWl4aW5BdHRyaWJ1dGVGcm9tUGFydGlhbCgpKSkp
OworfQorCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUGFydGlhbE1p
eGluQXR0cmlidXRlRnJvbVBhcnRpYWwoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcz46OnNldDxzZXRKU1Rlc3RD
b25kaXRpb25hbEluY2x1ZGVzSW5jbHVkZXNOb2RlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJpbmNsdWRlc05vZGUiKTsKKyAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+OjpnZXQ8anNUZXN0Q29uZGl0
aW9uYWxJbmNsdWRlc1BhcnRpYWxNaXhpbkF0dHJpYnV0ZUZyb21QYXJ0aWFsR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAicGFydGlhbE1peGluQXR0cmlidXRlRnJvbVBhcnRpYWwiKTsKIH0KIAogI2VuZGlmCiAK
ICNpZiAoRU5BQkxFKENvbmRpdGlvbjEyKSAmJiBFTkFCTEUoQ29uZGl0aW9uMjIpKSB8fCBFTkFC
TEUoQ29uZGl0aW9uMjMpCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2QxQm9keShK
U0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSog
Y2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRl
cz46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uTWl4aW5P
cGVyYXRpb25Cb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Qzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RDb25k
aXRpb25hbEluY2x1ZGVzPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKIHsKICAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC01NTYsMTkgKzYxOSwxOSBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKGNh
bGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICB0
aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLmluY2x1ZGVzTWV0aG9kMSgpOworICAgIGlt
cGwubWl4aW5PcGVyYXRpb24oKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENvbmRpdGlv
bmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbkluY2x1ZGVzTWV0aG9kMShKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5j
dGlvbk1peGluT3BlcmF0aW9uKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXM+OjpjYWxsPGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5
cGVGdW5jdGlvbkluY2x1ZGVzTWV0aG9kMUJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2Fs
bEZyYW1lLCAiaW5jbHVkZXNNZXRob2QxIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rl
c3RDb25kaXRpb25hbEluY2x1ZGVzPjo6Y2FsbDxqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJv
dG90eXBlRnVuY3Rpb25NaXhpbk9wZXJhdGlvbkJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAq
Y2FsbEZyYW1lLCAibWl4aW5PcGVyYXRpb24iKTsKIH0KIAogI2VuZGlmCiAKICNpZiAoRU5BQkxF
KENvbmRpdGlvbjEyKSAmJiBFTkFCTEUoQ29uZGl0aW9uMjIpKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MjMpCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q29uZGl0aW9uYWxJ
bmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2QyQm9keShKU0M6OkpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0
eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcz46OkNsYXNzUGFy
YW1ldGVyIGNhc3RlZFRoaXMpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uTWl4aW5Db21wbGV4T3BlcmF0
aW9uQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNh
bGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0Q29uZGl0aW9u
YWxJbmNsdWRlcz46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCiB7CiAgICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNTg0LDM3ICs2NDcsMzcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8gc3RyQXJnID0gY29udmVy
dDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQxID0gY2FsbEZyYW1lLT51bmNoZWNr
ZWRBcmd1bWVudCgxKTsKLSAgICBhdXRvIG9iakFyZyA9IGNvbnZlcnQ8SURMSW50ZXJmYWNlPFRl
c3RPYmo+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCksIFtdKEpTQzo6
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2Nv
cGUpIHsgdGhyb3dBcmd1bWVudFR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwg
MSwgIm9iakFyZyIsICJUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyIsICJpbmNsdWRlc01ldGhvZDIi
LCAiVGVzdE9iaiIpOyB9KTsKKyAgICBhdXRvIG9iakFyZyA9IGNvbnZlcnQ8SURMSW50ZXJmYWNl
PFRlc3RPYmo+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCksIFtdKEpT
Qzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYg
c2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29w
ZSwgMSwgIm9iakFyZyIsICJUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyIsICJtaXhpbkNvbXBsZXhP
cGVyYXRpb24iLCAiVGVzdE9iaiIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGlt
cGwuaW5jbHVkZXNNZXRob2QyKCpjb250ZXh0LCBXVEZNb3ZlKHN0ckFyZyksICpvYmpBcmcpKSkp
OworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwubWl4aW5Db21wbGV4T3BlcmF0aW9u
KCpjb250ZXh0LCBXVEZNb3ZlKHN0ckFyZyksICpvYmpBcmcpKSkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5j
dGlvbkluY2x1ZGVzTWV0aG9kMihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbk1peGluQ29tcGxleE9wZXJhdGlv
bihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVz
Pjo6Y2FsbDxqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRl
c01ldGhvZDJCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgImluY2x1ZGVz
TWV0aG9kMiIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0Q29uZGl0aW9uYWxJbmNs
dWRlcz46OmNhbGw8anNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uTWl4
aW5Db21wbGV4T3BlcmF0aW9uQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUs
ICJtaXhpbkNvbXBsZXhPcGVyYXRpb24iKTsKIH0KIAogI2VuZGlmCiAKICNpZiAoRU5BQkxFKENv
bmRpdGlvbjEyKSAmJiBFTkFCTEUoQ29uZGl0aW9uMjIpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMp
Ci1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q29uZGl0aW9uYWxJbmNs
dWRlc1Byb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2QzQm9keShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBl
bmFtZSBJRExPcGVyYXRpb248SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcz46OkNsYXNzUGFyYW1l
dGVyIGNhc3RlZFRoaXMpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uTWl4aW5DdXN0b21PcGVyYXRpb25C
b2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZy
YW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RDb25kaXRpb25hbElu
Y2x1ZGVzPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKIHsKICAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAoSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmluY2x1ZGVzTWV0aG9kMygqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsIChKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+bWl4aW5DdXN0b21PcGVyYXRp
b24oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUpKSkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5j
dGlvbkluY2x1ZGVzTWV0aG9kMyhKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbk1peGluQ3VzdG9tT3BlcmF0aW9u
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+
OjpjYWxsPGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbkluY2x1ZGVz
TWV0aG9kM0JvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAiaW5jbHVkZXNN
ZXRob2QzIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RDb25kaXRpb25hbEluY2x1
ZGVzPjo6Y2FsbDxqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25NaXhp
bkN1c3RvbU9wZXJhdGlvbkJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAi
bWl4aW5DdXN0b21PcGVyYXRpb24iKTsKIH0KIAogI2VuZGlmCiAKICNpZiAoRU5BQkxFKENvbmRp
dGlvbjExKSAmJiBFTkFCTEUoQ29uZGl0aW9uMTIpICYmIEVOQUJMRShDb25kaXRpb24yMikpIHx8
IEVOQUJMRShDb25kaXRpb24yMykKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZENv
bmRpdGlvbmFsQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0Q29u
ZGl0aW9uYWxJbmNsdWRlcz46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCitzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlw
ZUZ1bmN0aW9uTWl4aW5Db25kaXRpb25hbE9wZXJhdGlvbkJvZHkoSlNDOjpKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5h
bWUgSURMT3BlcmF0aW9uPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+OjpDbGFzc1BhcmFtZXRl
ciBjYXN0ZWRUaGlzKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
QEAgLTYyMiwxOSArNjg1LDE5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3QKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwu
aW5jbHVkZXNNZXRob2RDb25kaXRpb25hbCgpOworICAgIGltcGwubWl4aW5Db25kaXRpb25hbE9w
ZXJhdGlvbigpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRl
c1Byb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2RDb25kaXRpb25hbChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5j
dGlvbk1peGluQ29uZGl0aW9uYWxPcGVyYXRpb24oSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBJRExPcGVyYXRp
b248SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcz46OmNhbGw8anNUZXN0Q29uZGl0aW9uYWxJbmNs
dWRlc1Byb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2RDb25kaXRpb25hbEJvZHk+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAiaW5jbHVkZXNNZXRob2RDb25kaXRpb25hbCIp
OworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcz46OmNh
bGw8anNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uTWl4aW5Db25kaXRp
b25hbE9wZXJhdGlvbkJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAibWl4
aW5Db25kaXRpb25hbE9wZXJhdGlvbiIpOwogfQogCiAjZW5kaWYKIAogI2lmIChFTkFCTEUoQ29u
ZGl0aW9uMTIpICYmIEVOQUJMRShDb25kaXRpb24yMikpIHx8IEVOQUJMRShDb25kaXRpb24yMykK
LXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDb25kaXRpb25hbEluY2x1
ZGVzUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZFNldHRpbmdzQ29uZGl0aW9uYWxCb2R5
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1l
KiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RDb25kaXRpb25hbEluY2x1
ZGVzPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25NaXhp
blNldHRpbmdzQ29uZGl0aW9uYWxPcGVyYXRpb25Cb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElE
TE9wZXJhdGlvbjxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPjo6Q2xhc3NQYXJhbWV0ZXIgY2Fz
dGVkVGhpcykKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC02
NDIsMzIgKzcwNSw1MiBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLmluY2x1
ZGVzTWV0aG9kU2V0dGluZ3NDb25kaXRpb25hbCgpOworICAgIGltcGwubWl4aW5TZXR0aW5nc0Nv
bmRpdGlvbmFsT3BlcmF0aW9uKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDb25kaXRp
b25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZFNldHRpbmdzQ29uZGl0
aW9uYWwoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDb25kaXRpb25hbElu
Y2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25NaXhpblNldHRpbmdzQ29uZGl0aW9uYWxPcGVyYXRpb24o
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcz46
OmNhbGw8anNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNN
ZXRob2RTZXR0aW5nc0NvbmRpdGlvbmFsQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxs
RnJhbWUsICJpbmNsdWRlc01ldGhvZFNldHRpbmdzQ29uZGl0aW9uYWwiKTsKKyAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+OjpjYWxsPGpzVGVzdENvbmRp
dGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbk1peGluU2V0dGluZ3NDb25kaXRpb25hbE9w
ZXJhdGlvbkJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAibWl4aW5TZXR0
aW5nc0NvbmRpdGlvbmFsT3BlcmF0aW9uIik7CiB9CiAKICNlbmRpZgogCiAjaWYgKEVOQUJMRShD
b25kaXRpb24xMikgJiYgRU5BQkxFKENvbmRpdGlvbjIyKSkgfHwgRU5BQkxFKENvbmRpdGlvbjIz
KQotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFsSW5j
bHVkZXNQcm90b3R5cGVGdW5jdGlvblRha2VOb2Rlc0JvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUg
SURMT3BlcmF0aW9uPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+OjpDbGFzc1BhcmFtZXRlciBj
YXN0ZWRUaGlzKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENvbmRp
dGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbk1peGluUmVzdWx0RmllbGRPcGVyYXRpb25C
b2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZy
YW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RDb25kaXRpb25hbElu
Y2x1ZGVzPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKIHsKICAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7Ci0gICAgYXV0byBpbXBsUmVzdWx0ID0gaW1wbC50YWtlTm9kZXMoKTsKKyAgICBh
dXRvIGltcGxSZXN1bHQgPSBpbXBsLm1peGluUmVzdWx0RmllbGRPcGVyYXRpb24oKTsKICAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMU2Vx
dWVuY2U8SURMSW50ZXJmYWNlPE5vZGU+Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRU
aGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGTW92ZShpbXBsUmVzdWx0Lm5vZGVzKSkpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJv
dG90eXBlRnVuY3Rpb25UYWtlTm9kZXMoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25NaXhpblJlc3VsdEZpZWxk
T3BlcmF0aW9uKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKK3sKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdENvbmRpdGlvbmFs
SW5jbHVkZXM+OjpjYWxsPGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlv
bk1peGluUmVzdWx0RmllbGRPcGVyYXRpb25Cb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNh
bGxGcmFtZSwgIm1peGluUmVzdWx0RmllbGRPcGVyYXRpb24iKTsKK30KKworI2VuZGlmCisKKyNp
ZiAoRU5BQkxFKENvbmRpdGlvbjEyKSAmJiBFTkFCTEUoQ29uZGl0aW9uMjIpICYmIEVOQUJMRShD
b25kaXRpb24zMykpIHx8IEVOQUJMRShDb25kaXRpb24yMykKK3N0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25Q
YXJ0aWFsTWl4aW5PcGVyYXRpb25Gcm9tUGFydGlhbEJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUg
SURMT3BlcmF0aW9uPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+OjpDbGFzc1BhcmFtZXRlciBj
YXN0ZWRUaGlzKQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7
CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICB0aHJvd1Njb3Bl
LnJlbGVhc2UoKTsKKyAgICBpbXBsLnBhcnRpYWxNaXhpbk9wZXJhdGlvbkZyb21QYXJ0aWFsKCk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBl
RnVuY3Rpb25QYXJ0aWFsTWl4aW5PcGVyYXRpb25Gcm9tUGFydGlhbChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPjo6Y2FsbDxqc1Rlc3RDb25k
aXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25UYWtlTm9kZXNCb2R5PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgInRha2VOb2RlcyIpOworICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcz46OmNhbGw8anNUZXN0Q29uZGl0aW9uYWxJ
bmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uUGFydGlhbE1peGluT3BlcmF0aW9uRnJvbVBhcnRpYWxC
b2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgInBhcnRpYWxNaXhpbk9wZXJh
dGlvbkZyb21QYXJ0aWFsIik7CiB9CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29u
ZGl0aW9uYWxJbmNsdWRlcy5oCShyZXZpc2lvbiAyNjY3MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MCwxNSArNjAsMTUgQEAgcHVibGljOgogCiAgICAgLy8gQ3VzdG9tIGF0
dHJpYnV0ZXMKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykK
LSAgICBKU0M6OkpTVmFsdWUgaW5jbHVkZXNTdHIzKEpTQzo6SlNHbG9iYWxPYmplY3QmKSBjb25z
dDsKKyAgICBKU0M6OkpTVmFsdWUgbWl4aW5DdXN0b21BdHRyaWJ1dGUoSlNDOjpKU0dsb2JhbE9i
amVjdCYpIGNvbnN0OwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUo
Q29uZGl0aW9uMjMpCi0gICAgdm9pZCBzZXRJbmNsdWRlc1N0cjMoSlNDOjpKU0dsb2JhbE9iamVj
dCYsIEpTQzo6SlNWYWx1ZSk7CisgICAgdm9pZCBzZXRNaXhpbkN1c3RvbUF0dHJpYnV0ZShKU0M6
OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsKICNlbmRpZgogCiAgICAgLy8gQ3VzdG9t
IGZ1bmN0aW9ucwogI2lmIChFTkFCTEUoQ29uZGl0aW9uMTIpICYmIEVOQUJMRShDb25kaXRpb24y
MikpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLSAgICBKU0M6OkpTVmFsdWUgaW5jbHVkZXNNZXRo
b2QzKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkNhbGxGcmFtZSYpOworICAgIEpTQzo6SlNW
YWx1ZSBtaXhpbkN1c3RvbU9wZXJhdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpDYWxs
RnJhbWUmKTsKICNlbmRpZgogcHJvdGVjdGVkOgogICAgIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVk
ZXMoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0Q29uZGl0aW9u
YWxJbmNsdWRlcz4mJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW5jbHVkZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmNsdWRlcy5jcHAJKHJldmlzaW9uIDI2Njcx
MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmNs
dWRlcy5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw2ICswLDAgQEAKLS8qCi0gICAgVGhpcyBmaWxl
IGlzIGdlbmVyYXRlZCBqdXN0IHRvIHRlbGwgYnVpbGQgc2NyaXB0cyB0aGF0IEpTVGVzdEluY2x1
ZGVzLmggYW5kCi0gICAgSlNUZXN0SW5jbHVkZXMuY3BwIGFyZSBjcmVhdGVkIGZvciBUZXN0SW5j
bHVkZXMuaWRsLCBhbmQgdGh1cwotICAgIHByZXZlbnQgdGhlIGJ1aWxkIHNjcmlwdHMgZnJvbSB0
cnlpbmcgdG8gZ2VuZXJhdGUgSlNUZXN0SW5jbHVkZXMuaCBhbmQKLSAgICBKU1Rlc3RJbmNsdWRl
cy5jcHAgYXQgZXZlcnkgYnVpbGQuIFRoaXMgZmlsZSBtdXN0IG5vdCBiZSB0cmllZCB0byBjb21w
aWxlLgotKi8KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RJbmNsdWRlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmNsdWRlcy5oCShyZXZpc2lvbiAyNjY3MTIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5jbHVkZXMuaAkobm9u
ZXhpc3RlbnQpCkBAIC0xLDYgKzAsMCBAQAotLyoKLSAgICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVk
IGp1c3QgdG8gdGVsbCBidWlsZCBzY3JpcHRzIHRoYXQgSlNUZXN0SW5jbHVkZXMuaCBhbmQKLSAg
ICBKU1Rlc3RJbmNsdWRlcy5jcHAgYXJlIGNyZWF0ZWQgZm9yIFRlc3RJbmNsdWRlcy5pZGwsIGFu
ZCB0aHVzCi0gICAgcHJldmVudCB0aGUgYnVpbGQgc2NyaXB0cyBmcm9tIHRyeWluZyB0byBnZW5l
cmF0ZSBKU1Rlc3RJbmNsdWRlcy5oIGFuZAotICAgIEpTVGVzdEluY2x1ZGVzLmNwcCBhdCBldmVy
eSBidWlsZC4gVGhpcyBmaWxlIG11c3Qgbm90IGJlIHRyaWVkIHRvIGNvbXBpbGUuCi0qLwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFj
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEludGVyZmFjZS5jcHAJKHJldmlzaW9uIDI2NjcxMikKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NCwxMSArNTQsMTEgQEAKICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKICNpZiBF
TkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKLSNpbmNsdWRlICJKU0RP
TUNvbnZlcnROdW1iZXJzLmgiCiAjaW5jbHVkZSAiVGVzdFN1cHBsZW1lbnRhbEJ1aWx0aW5zLmgi
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEy
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKKyNpbmNsdWRl
ICJKU0RPTUNvbnZlcnROdW1iZXJzLmgiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIK
ICNpbmNsdWRlICJKU05vZGUuaCIKICNlbmRpZgpAQCAtNzUsMjIgKzc1LDI1IEBAIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiAvLyBGdW5jdGlvbnMKIAogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwg
RU5BQkxFKENvbmRpdGlvbjIzKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2QxKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uTWl4aW5PcGVyYXRpb24oSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYKICNpZiBFTkFCTEUo
Q29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLUpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkluY2x1ZGVzTWV0
aG9kMihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbk1p
eGluQ29tcGxleE9wZXJhdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUq
KTsKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIz
KQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3Rv
dHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2QzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNh
bGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVy
ZmFjZVByb3RvdHlwZUZ1bmN0aW9uTWl4aW5DdXN0b21PcGVyYXRpb24oSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYKICNpZiAoRU5BQkxFKENvbmRpdGlvbjEx
KSAmJiBFTkFCTEUoQ29uZGl0aW9uMjIpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1KU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rp
b25JbmNsdWRlc01ldGhvZENvbmRpdGlvbmFsKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNh
bGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVy
ZmFjZVByb3RvdHlwZUZ1bmN0aW9uTWl4aW5Db25kaXRpb25hbE9wZXJhdGlvbihKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRp
b24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2RTZXR0
aW5nc0NvbmRpdGlvbmFsKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlw
ZUZ1bmN0aW9uTWl4aW5TZXR0aW5nc0NvbmRpdGlvbmFsT3BlcmF0aW9uKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIy
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25UYWtlTm9kZXMoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25NaXhpblJlc3VsdEZpZWxkT3Bl
cmF0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworI2VuZGlmCisj
aWYgKEVOQUJMRShDb25kaXRpb24yMikgJiYgRU5BQkxFKENvbmRpdGlvbjMzKSkgfHwgRU5BQkxF
KENvbmRpdGlvbjIzKQorSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdElu
dGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uUGFydGlhbE1peGluT3BlcmF0aW9uRnJvbVBhcnRpYWwo
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYKICNpZiBFTkFC
TEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKIEpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1l
bnRhbE1ldGhvZDEoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CkBAIC0x
MTUsMTkgKzExOCwyMiBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBi
b29sIHNldEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKICNpZiBFTkFCTEUoQ29u
ZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLUpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0SW50ZXJmYWNlSW5jbHVkZXNTdHIxKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dEludGVyZmFjZU1peGluUmVhZE9ubHlBdHRyaWJ1dGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKICNlbmRpZgogI2lmIEVOQUJM
RShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RJbnRlcmZhY2VJbmNsdWRlc1N0cjIoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLWJvb2wgc2V0SlNUZXN0SW50ZXJm
YWNlSW5jbHVkZXNTdHIyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJm
YWNlTWl4aW5BdHRyaWJ1dGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0SW50ZXJmYWNlTWl4aW5BdHRy
aWJ1dGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5j
b2RlZEpTVmFsdWUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUo
Q29uZGl0aW9uMjMpCi1KU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUluY2x1ZGVz
U3RyMyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9w
ZXJ0eU5hbWUpOwotYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VJbmNsdWRlc1N0cjMoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VNaXhpbkN1c3RvbUF0dHJpYnV0ZShK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5h
bWUpOworYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VNaXhpbkN1c3RvbUF0dHJpYnV0ZShKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7
CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykK
LUpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlSW5jbHVkZXNOb2RlKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1i
b29sIHNldEpTVGVzdEludGVyZmFjZUluY2x1ZGVzTm9kZShKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CitKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdEludGVyZmFjZU1peGluTm9kZUF0dHJpYnV0ZShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworYm9vbCBzZXRK
U1Rlc3RJbnRlcmZhY2VNaXhpbk5vZGVBdHRyaWJ1dGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworI2VuZGlmCisjaWYgRU5B
QkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCitKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdEludGVyZmFjZVBhcnRpYWxNaXhpbkF0dHJpYnV0ZUZyb21QYXJ0aWFsKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7
CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikK
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JTdXBwbGVtZW50
YWxTdGF0aWNSZWFkT25seUF0dHIoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKQEAgLTE5NSwxMiArMjAxLDE3IEBAIHVzaW5nIEpT
VGVzdEludGVyZmFjZUNvbnN0cnVjdG9yID0gSlNET00KIHN0YXRpYyBjb25zdCBIYXNoVGFibGVW
YWx1ZSBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvclRhYmxlVmFsdWVzW10gPQogewogI2lmIEVO
QUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIHsgIklOQ0xVREVT
X0NPTlNUQU5UMSIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0
YW50SW50ZWdlciwgTm9JbnRyaW5zaWMsIHsgKGxvbmcgbG9uZykoMSkgfSB9LAorICAgIHsgIk1J
WElOX0NPTlNUQU5UIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29u
c3RhbnRJbnRlZ2VyLCBOb0ludHJpbnNpYywgeyAobG9uZyBsb25nKSgxKSB9IH0sCiAjZWxzZQog
ICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYKICNpZiBFTkFCTEUo
Q29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLSAgICB7ICJJTkNMVURFU19DT05T
VEFOVDIiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFudElu
dGVnZXIsIE5vSW50cmluc2ljLCB7IChsb25nIGxvbmcpKDIpIH0gfSwKKyAgICB7ICJNSVhJTl9S
RUZMRUNURURfQ09OU1RBTlQiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpDb25zdGFudEludGVnZXIsIE5vSW50cmluc2ljLCB7IChsb25nIGxvbmcpKDIpIH0gfSwKKyNl
bHNlCisgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKKyNlbmRpZgorI2lmIEVO
QUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorICAgIHsgIlBBUlRJQUxf
TUlYSU5fQ09OU1RBTlRfRlJPTV9QQVJUSUFMIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2VyLCBOb0ludHJpbnNpYywgeyAobG9uZyBsb25nKSg1
KSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5k
aWYKQEAgLTIzMiwxMSArMjQzLDE0IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rl
c3RJbnRlcmYKIH07CiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRp
b24yMykKLXN0YXRpY19hc3NlcnQoVGVzdEludGVyZmFjZTo6SU5DTFVERVNfQ09OU1RBTlQxID09
IDEsICJJTkNMVURFU19DT05TVEFOVDEgaW4gVGVzdEludGVyZmFjZSBkb2VzIG5vdCBtYXRjaCB2
YWx1ZSBmcm9tIElETCIpOworc3RhdGljX2Fzc2VydChUZXN0SW50ZXJmYWNlOjpNSVhJTl9DT05T
VEFOVCA9PSAxLCAiTUlYSU5fQ09OU1RBTlQgaW4gVGVzdEludGVyZmFjZSBkb2VzIG5vdCBtYXRj
aCB2YWx1ZSBmcm9tIElETCIpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMjMpCiBzdGF0aWNfYXNzZXJ0KFRlc3RJbnRlcmZhY2U6OkNPTlNUX0lN
UEwgPT0gMiwgIkNPTlNUX0lNUEwgaW4gVGVzdEludGVyZmFjZSBkb2VzIG5vdCBtYXRjaCB2YWx1
ZSBmcm9tIElETCIpOwogI2VuZGlmCisjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUo
Q29uZGl0aW9uMjMpCitzdGF0aWNfYXNzZXJ0KFRlc3RJbnRlcmZhY2U6OlBBUlRJQUxfTUlYSU5f
Q09OU1RBTlRfRlJPTV9QQVJUSUFMID09IDUsICJQQVJUSUFMX01JWElOX0NPTlNUQU5UX0ZST01f
UEFSVElBTCBpbiBUZXN0SW50ZXJmYWNlIGRvZXMgbm90IG1hdGNoIHZhbHVlIGZyb20gSURMIik7
CisjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikK
IHN0YXRpY19hc3NlcnQoVGVzdFN1cHBsZW1lbnRhbDo6U1VQUExFTUVOVEFMQ09OU1RBTlQxID09
IDEsICJTVVBQTEVNRU5UQUxDT05TVEFOVDEgaW4gVGVzdFN1cHBsZW1lbnRhbCBkb2VzIG5vdCBt
YXRjaCB2YWx1ZSBmcm9tIElETCIpOwogI2VuZGlmCkBAIC0yOTMsMjIgKzMwNywyNyBAQCBzdGF0
aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0SW50ZXJmCiB7CiAgICAgeyAiY29uc3RydWN0
b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0SW50ZXJmYWNl
Q29uc3RydWN0b3IpIH0gfSwKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25k
aXRpb24yMykKLSAgICB7ICJpbmNsdWRlc1N0cjEiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNUZXN0SW50ZXJmYWNlSW5jbHVkZXNTdHIxKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAorICAgIHsgIm1peGluUmVh
ZE9ubHlBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0SW50
ZXJmYWNlTWl4aW5SZWFkT25seUF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBO
b0ludHJpbnNpYywgeyAwLCAwIH0gfSwKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikg
fHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIHsgImluY2x1ZGVzU3RyMiIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0SW50ZXJmYWNl
SW5jbHVkZXNTdHIyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNUZXN0SW50ZXJmYWNlSW5jbHVkZXNTdHIyKSB9IH0sCisgICAgeyAi
bWl4aW5BdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdEludGVyZmFjZU1peGluQXR0cmlidXRlKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0SW50ZXJm
YWNlTWl4aW5BdHRyaWJ1dGUpIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywg
eyAwLCAwIH0gfSwKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENv
bmRpdGlvbjIzKQotICAgIHsgImluY2x1ZGVzU3RyMyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0SW50ZXJmYWNlSW5jbHVkZXNTdHIz
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNUZXN0SW50ZXJmYWNlSW5jbHVkZXNTdHIzKSB9IH0sCisgICAgeyAibWl4aW5DdXN0b21B
dHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzVGVzdEludGVyZmFjZU1peGluQ3VzdG9tQXR0cmlidXRlKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0SW50ZXJm
YWNlTWl4aW5DdXN0b21BdHRyaWJ1dGUpIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJp
bnNpYywgeyAwLCAwIH0gfSwKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5B
QkxFKENvbmRpdGlvbjIzKQotICAgIHsgImluY2x1ZGVzTm9kZSIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0SW50ZXJmYWNlSW5jbHVk
ZXNOb2RlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNUZXN0SW50ZXJmYWNlSW5jbHVkZXNOb2RlKSB9IH0sCisgICAgeyAibWl4aW5O
b2RlQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc1Rlc3RJbnRlcmZhY2VNaXhpbk5vZGVBdHRyaWJ1dGUpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RJbnRl
cmZhY2VNaXhpbk5vZGVBdHRyaWJ1dGUpIH0gfSwKKyNlbHNlCisgICAgeyAwLCAwLCBOb0ludHJp
bnNpYywgeyAwLCAwIH0gfSwKKyNlbmRpZgorI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5B
QkxFKENvbmRpdGlvbjIzKQorICAgIHsgInBhcnRpYWxNaXhpbkF0dHJpYnV0ZUZyb21QYXJ0aWFs
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEludGVyZmFjZVBhcnRpYWxN
aXhpbkF0dHJpYnV0ZUZyb21QYXJ0aWFsKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogI2Vsc2UKICAgICB7IDAsIDAsIE5vSW50
cmluc2ljLCB7IDAsIDAgfSB9LAogI2VuZGlmCkBAIC0zNDMsMzIgKzM2MiwzNyBAQCBzdGF0aWMg
Y29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0SW50ZXJmCiAgICAgeyAwLCAwLCBOb0ludHJpbnNp
YywgeyAwLCAwIH0gfSwKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxF
KENvbmRpdGlvbjIzKQotICAgIHsgImluY2x1ZGVzTWV0aG9kMSIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0SW50ZXJmYWNlUHJv
dG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZDEpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAg
eyAibWl4aW5PcGVyYXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uTWl4aW5P
cGVyYXRpb24pLCAoaW50cHRyX3QpICgwKSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRy
aW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVO
QUJMRShDb25kaXRpb24yMykKLSAgICB7ICJpbmNsdWRlc01ldGhvZDIiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdEludGVyZmFj
ZVByb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2QyKSwgKGludHB0cl90KSAoMikgfSB9LAor
ICAgIHsgIm1peGluQ29tcGxleE9wZXJhdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVu
Y3Rpb25NaXhpbkNvbXBsZXhPcGVyYXRpb24pLCAoaW50cHRyX3QpICgyKSB9IH0sCiAjZWxzZQog
ICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYKICNpZiBFTkFCTEUo
Q29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLSAgICB7ICJpbmNsdWRlc01ldGhv
ZDMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rp
b24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rp
b24+KGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2QzKSwgKGlu
dHB0cl90KSAoMCkgfSB9LAorICAgIHsgIm1peGluQ3VzdG9tT3BlcmF0aW9uIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RJbnRl
cmZhY2VQcm90b3R5cGVGdW5jdGlvbk1peGluQ3VzdG9tT3BlcmF0aW9uKSwgKGludHB0cl90KSAo
MCkgfSB9LAogI2Vsc2UKICAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAogI2Vu
ZGlmCiAjaWYgKEVOQUJMRShDb25kaXRpb24xMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIyKSkgfHwg
RU5BQkxFKENvbmRpdGlvbjIzKQotICAgIHsgImluY2x1ZGVzTWV0aG9kQ29uZGl0aW9uYWwiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpz
VGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2RDb25kaXRpb25hbCks
IChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICJtaXhpbkNvbmRpdGlvbmFsT3BlcmF0aW9uIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihq
c1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbk1peGluQ29uZGl0aW9uYWxPcGVyYXRpb24p
LCAoaW50cHRyX3QpICgwKSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsg
MCwgMCB9IH0sCiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25k
aXRpb24yMykKLSAgICB7ICJpbmNsdWRlc01ldGhvZFNldHRpbmdzQ29uZGl0aW9uYWwiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVz
dEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2RTZXR0aW5nc0NvbmRpdGlv
bmFsKSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgIm1peGluU2V0dGluZ3NDb25kaXRpb25h
bE9wZXJhdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRp
dmVGdW5jdGlvbj4oanNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25NaXhpblNldHRpbmdz
Q29uZGl0aW9uYWxPcGVyYXRpb24pLCAoaW50cHRyX3QpICgwKSB9IH0sCiAjZWxzZQogICAgIHsg
MCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0
aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLSAgICB7ICJ0YWtlTm9kZXMiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdElu
dGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uVGFrZU5vZGVzKSwgKGludHB0cl90KSAoMCkgfSB9LAor
ICAgIHsgIm1peGluUmVzdWx0RmllbGRPcGVyYXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdEludGVyZmFjZVByb3RvdHlw
ZUZ1bmN0aW9uTWl4aW5SZXN1bHRGaWVsZE9wZXJhdGlvbiksIChpbnRwdHJfdCkgKDApIH0gfSwK
KyNlbHNlCisgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKKyNlbmRpZgorI2lm
IChFTkFCTEUoQ29uZGl0aW9uMjIpICYmIEVOQUJMRShDb25kaXRpb24zMykpIHx8IEVOQUJMRShD
b25kaXRpb24yMykKKyAgICB7ICJwYXJ0aWFsTWl4aW5PcGVyYXRpb25Gcm9tUGFydGlhbCIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNU
ZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25QYXJ0aWFsTWl4aW5PcGVyYXRpb25Gcm9tUGFy
dGlhbCksIChpbnRwdHJfdCkgKDApIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNp
YywgeyAwLCAwIH0gfSwKICNlbmRpZgpAQCAtMzk3LDEyICs0MjEsMTcgQEAgc3RhdGljIGNvbnN0
IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEludGVyZgogICAgIHsgInZhbHVlcyIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0SW50ZXJm
YWNlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXMpLCAoaW50cHRyX3QpICgwKSB9IH0sCiAgICAgeyAi
Zm9yRWFjaCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpG
dW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVG
dW5jdGlvbj4oanNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoKSwgKGludHB0
cl90KSAoMSkgfSB9LAogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlv
bjIzKQotICAgIHsgIklOQ0xVREVTX0NPTlNUQU5UMSIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdlciwgTm9JbnRyaW5zaWMsIHsgKGxvbmcgbG9u
ZykoMSkgfSB9LAorICAgIHsgIk1JWElOX0NPTlNUQU5UIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2VyLCBOb0ludHJpbnNpYywgeyAobG9uZyBs
b25nKSgxKSB9IH0sCisjZWxzZQorICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0s
CisjZW5kaWYKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykK
KyAgICB7ICJNSVhJTl9SRUZMRUNURURfQ09OU1RBTlQiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIsIE5vSW50cmluc2ljLCB7IChsb25nIGxv
bmcpKDIpIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwK
ICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQot
ICAgIHsgIklOQ0xVREVTX0NPTlNUQU5UMiIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRE
ZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdlciwgTm9JbnRyaW5zaWMsIHsgKGxvbmcgbG9uZykoMikg
fSB9LAorICAgIHsgIlBBUlRJQUxfTUlYSU5fQ09OU1RBTlRfRlJPTV9QQVJUSUFMIiwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2VyLCBOb0ludHJp
bnNpYywgeyAobG9uZyBsb25nKSg1KSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5z
aWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYKQEAgLTQyOCw3ICs0NTcsNyBAQCB2b2lkIEpTVGVzdElu
dGVyZmFjZVByb3RvdHlwZTo6ZmluaXNoQ3JlCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMjMpCiAgICAgaWYgKCFkb3duY2FzdDxEb2N1bWVudD4oanNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpLT5zZXR0aW5ncygpLnRlc3RTZXR0aW5nRW5hYmxlZCgpKSB7CiAgICAgICAgIGhhc0Rpc2Fi
bGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwotICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
PigiaW5jbHVkZXNNZXRob2RTZXR0aW5nc0NvbmRpdGlvbmFsIiksIHN0cmxlbigiaW5jbHVkZXNN
ZXRob2RTZXR0aW5nc0NvbmRpdGlvbmFsIikpOworICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
PigibWl4aW5TZXR0aW5nc0NvbmRpdGlvbmFsT3BlcmF0aW9uIiksIHN0cmxlbigibWl4aW5TZXR0
aW5nc0NvbmRpdGlvbmFsT3BlcmF0aW9uIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlN
b2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3Vy
YWJsZSk7CiAgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBKU09iamVj
dDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xv
dCk7CkBAIC01MTEsMzkgKzU0MCwzOSBAQCBib29sIHNldEpTVGVzdEludGVyZmFjZUNvbnN0cnVj
dG9yKEpTR2xvCiB9CiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRp
b24yMykKLXN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbmNsdWRlc1N0cjFH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEludGVyZmFj
ZSYgdGhpc09iamVjdCkKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VNaXhp
blJlYWRPbmx5QXR0cmlidXRlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU1Rlc3RJbnRlcmZhY2UmIHRoaXNPYmplY3QpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETERPTVN0cmlu
Zz4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5pbmNsdWRlc1N0cjEoKSkp
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMRE9NU3RyaW5n
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLm1peGluUmVhZE9ubHlBdHRy
aWJ1dGUoKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlSW5jbHVkZXNT
dHIxKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZU1p
eGluUmVhZE9ubHlBdHRyaWJ1dGUoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNUZXN0SW50ZXJmYWNlPjo6Z2V0PGpzVGVzdEludGVyZmFjZUluY2x1ZGVz
U3RyMUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgImluY2x1ZGVzU3RyMSIpOworICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNUZXN0SW50ZXJmYWNlPjo6Z2V0PGpzVGVzdEludGVyZmFjZU1peGluUmVhZE9ubHlB
dHRyaWJ1dGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJtaXhpblJlYWRPbmx5QXR0cmlidXRlIik7CiB9CiAK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMp
Ci1zdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0SW50ZXJmYWNlSW5jbHVkZXNTdHIyR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RJbnRlcmZhY2UmIHRo
aXNPYmplY3QpCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0SW50ZXJmYWNlTWl4aW5BdHRy
aWJ1dGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdElu
dGVyZmFjZSYgdGhpc09iamVjdCkKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmluY2x1ZGVzU3RyMigpKSkpOworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExET01TdHJpbmc+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwubWl4aW5BdHRyaWJ1dGUoKSkpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlSW5jbHVkZXNTdHIyKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZU1peGluQXR0cmlidXRlKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEludGVyZmFjZT46
OmdldDxqc1Rlc3RJbnRlcmZhY2VJbmNsdWRlc1N0cjJHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJl
aGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJpbmNsdWRl
c1N0cjIiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEludGVyZmFjZT46OmdldDxq
c1Rlc3RJbnRlcmZhY2VNaXhpbkF0dHJpYnV0ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIm1peGluQXR0cmli
dXRlIik7CiB9CiAKICNlbmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUo
Q29uZGl0aW9uMjMpCi1zdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlSW5jbHVk
ZXNTdHIyU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RJ
bnRlcmZhY2UmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCitzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNUZXN0SW50ZXJmYWNlTWl4aW5BdHRyaWJ1dGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEludGVyZmFjZSYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNTUx
LDgwICs1ODAsOTYgQEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdEludGVyZmFjZUluYwog
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewotICAgICAgICByZXR1cm4gaW1wbC5zZXRJbmNsdWRlc1N0cjIoV1RGTW92
ZShuYXRpdmVWYWx1ZSkpOworICAgICAgICByZXR1cm4gaW1wbC5zZXRNaXhpbkF0dHJpYnV0ZShX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgc2V0SlNUZXN0SW50ZXJmYWNlSW5jbHVkZXNTdHIyKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0SW50ZXJmYWNlTWl4aW5BdHRyaWJ1dGUoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNUZXN0SW50ZXJmYWNlPjo6c2V0PHNldEpTVGVzdEludGVyZmFjZUluY2x1ZGVzU3RyMlNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiaW5jbHVk
ZXNTdHIyIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RJbnRlcmZhY2U+OjpzZXQ8
c2V0SlNUZXN0SW50ZXJmYWNlTWl4aW5BdHRyaWJ1dGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm1peGluQXR0cmlidXRlIik7CiB9CiAKICNl
bmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1z
dGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0SW50ZXJmYWNlSW5jbHVkZXNTdHIzR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RJbnRlcmZhY2UmIHRoaXNP
YmplY3QpCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0SW50ZXJmYWNlTWl4aW5DdXN0b21B
dHRyaWJ1dGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVz
dEludGVyZmFjZSYgdGhpc09iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2Jh
bE9iamVjdCk7Ci0gICAgcmV0dXJuIHRoaXNPYmplY3QuaW5jbHVkZXNTdHIzKGxleGljYWxHbG9i
YWxPYmplY3QpOworICAgIHJldHVybiB0aGlzT2JqZWN0Lm1peGluQ3VzdG9tQXR0cmlidXRlKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJ
bmNsdWRlc1N0cjMoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0SW50
ZXJmYWNlTWl4aW5DdXN0b21BdHRyaWJ1dGUoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0SW50ZXJmYWNlPjo6Z2V0PGpzVGVzdEludGVyZmFjZUlu
Y2x1ZGVzU3RyM0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImluY2x1ZGVzU3RyMyIpOworICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNUZXN0SW50ZXJmYWNlPjo6Z2V0PGpzVGVzdEludGVyZmFjZU1peGluQ3Vz
dG9tQXR0cmlidXRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAibWl4aW5DdXN0b21BdHRyaWJ1dGUiKTsKIH0K
IAogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24y
MykKLXN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VJbmNsdWRlc1N0cjNTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEludGVyZmFjZSYg
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RJ
bnRlcmZhY2VNaXhpbkN1c3RvbUF0dHJpYnV0ZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNUZXN0SW50ZXJmYWNlJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0g
ICAgdGhpc09iamVjdC5zZXRJbmNsdWRlc1N0cjMobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OworICAgIHRoaXNPYmplY3Quc2V0TWl4aW5DdXN0b21BdHRyaWJ1dGUobGV4aWNhbEdsb2JhbE9i
amVjdCwgdmFsdWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIHNldEpTVGVzdEludGVy
ZmFjZUluY2x1ZGVzU3RyMyhKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29s
IHNldEpTVGVzdEludGVyZmFjZU1peGluQ3VzdG9tQXR0cmlidXRlKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEludGVy
ZmFjZT46OnNldDxzZXRKU1Rlc3RJbnRlcmZhY2VJbmNsdWRlc1N0cjNTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImluY2x1ZGVzU3RyMyIpOwor
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0SW50ZXJmYWNlPjo6c2V0PHNldEpTVGVzdElu
dGVyZmFjZU1peGluQ3VzdG9tQXR0cmlidXRlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJtaXhpbkN1c3RvbUF0dHJpYnV0ZSIpOwogfQogCiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQot
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUluY2x1ZGVzTm9kZUdldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0SW50ZXJmYWNlJiB0aGlz
T2JqZWN0KQorc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEludGVyZmFjZU1peGluTm9kZUF0
dHJpYnV0ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0
SW50ZXJmYWNlJiB0aGlzT2JqZWN0KQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExJbnRlcmZhY2U8Tm9kZT4+KGxl
eGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3Bl
LCBpbXBsLmluY2x1ZGVzTm9kZSgpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExJbnRlcmZhY2U8Tm9kZT4+KGxleGljYWxHbG9iYWxPYmplY3QsICp0aGlz
T2JqZWN0Lmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLm1peGluTm9kZUF0dHJpYnV0
ZSgpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbmNsdWRlc05vZGUo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlTWl4aW5O
b2RlQXR0cmlidXRlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTVGVzdEludGVyZmFjZT46OmdldDxqc1Rlc3RJbnRlcmZhY2VJbmNsdWRlc05vZGVHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJpbmNsdWRlc05vZGUiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
VGVzdEludGVyZmFjZT46OmdldDxqc1Rlc3RJbnRlcmZhY2VNaXhpbk5vZGVBdHRyaWJ1dGVHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJtaXhpbk5vZGVBdHRyaWJ1dGUiKTsKIH0KIAogI2VuZGlmCiAKICNpZiBF
TkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLXN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VJbmNsdWRlc05vZGVTZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEludGVyZmFjZSYgdGhpc09iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VNaXhpbk5vZGVB
dHRyaWJ1dGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVz
dEludGVyZmFjZSYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKLSAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExJbnRlcmZhY2U8Tm9k
ZT4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXR0cmli
dXRlVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVzdEludGVyZmFjZSIs
ICJpbmNsdWRlc05vZGUiLCAiTm9kZSIpOyB9KTsKKyAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExJbnRlcmZhY2U8Tm9kZT4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCBbXShK
U0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUm
IHNjb3BlKSB7IHRocm93QXR0cmlidXRlVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNj
b3BlLCAiVGVzdEludGVyZmFjZSIsICJtaXhpbk5vZGVBdHRyaWJ1dGUiLCAiTm9kZSIpOyB9KTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKLSAg
ICAgICAgcmV0dXJuIGltcGwuc2V0SW5jbHVkZXNOb2RlKCpuYXRpdmVWYWx1ZSk7CisgICAgICAg
IHJldHVybiBpbXBsLnNldE1peGluTm9kZUF0dHJpYnV0ZSgqbmF0aXZlVmFsdWUpOwogICAgIH0p
OwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIHNldEpTVGVzdEludGVyZmFjZUluY2x1ZGVz
Tm9kZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdElu
dGVyZmFjZU1peGluTm9kZUF0dHJpYnV0ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCiB7Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RJbnRlcmZhY2U+OjpzZXQ8c2V0
SlNUZXN0SW50ZXJmYWNlSW5jbHVkZXNOb2RlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJpbmNsdWRlc05vZGUiKTsKKyAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTVGVzdEludGVyZmFjZT46OnNldDxzZXRKU1Rlc3RJbnRlcmZhY2VNaXhpbk5v
ZGVBdHRyaWJ1dGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgIm1peGluTm9kZUF0dHJpYnV0ZSIpOworfQorCisjZW5kaWYKKworI2lmIEVOQUJM
RShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzVGVzdEludGVyZmFjZVBhcnRpYWxNaXhpbkF0dHJpYnV0ZUZyb21QYXJ0aWFsR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RJbnRlcmZhY2UmIHRo
aXNPYmplY3QpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETERvdWJsZT4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC5wYXJ0aWFsTWl4aW5BdHRyaWJ1dGVGcm9tUGFydGlhbCgpKSkpOworfQor
CitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VQYXJ0aWFsTWl4aW5BdHRyaWJ1dGVGcm9t
UGFydGlhbChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U1Rlc3RJbnRlcmZhY2U+OjpnZXQ8anNUZXN0SW50ZXJmYWNlUGFydGlhbE1peGluQXR0cmlidXRl
RnJvbVBhcnRpYWxHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJwYXJ0aWFsTWl4aW5BdHRyaWJ1dGVGcm9tUGFy
dGlhbCIpOwogfQogCiAjZW5kaWYKQEAgLTgzNiw3ICs4ODEsNyBAQCBib29sIHNldEpTVGVzdElu
dGVyZmFjZVJlZmxlY3RBdHRyaWJ1dGUoCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDb25kaXRpb24y
MikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2QxQm9keShK
U0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSog
Y2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Q2xhc3NQ
YXJhbWV0ZXIgY2FzdGVkVGhpcykKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbk1peGluT3BlcmF0aW9uQm9keShKU0M6OkpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZy
YW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Q2xhc3NQYXJhbWV0
ZXIgY2FzdGVkVGhpcykKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CkBAIC04NDQsMTkgKzg4OSwxOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBs
LmluY2x1ZGVzTWV0aG9kMSgpOworICAgIGltcGwubWl4aW5PcGVyYXRpb24oKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRo
b2QxKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90
eXBlRnVuY3Rpb25NaXhpbk9wZXJhdGlvbihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxK
U1Rlc3RJbnRlcmZhY2U+OjpjYWxsPGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW5j
bHVkZXNNZXRob2QxQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJpbmNs
dWRlc01ldGhvZDEiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46
OmNhbGw8anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25NaXhpbk9wZXJhdGlvbkJvZHk+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAibWl4aW5PcGVyYXRpb24iKTsKIH0K
IAogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24y
MykKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VQcm90
b3R5cGVGdW5jdGlvbkluY2x1ZGVzTWV0aG9kMkJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURM
T3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCitz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlUHJvdG90eXBl
RnVuY3Rpb25NaXhpbkNvbXBsZXhPcGVyYXRpb25Cb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElE
TE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQog
ewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTg3MiwzNyArOTE3
LDM3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRv
IHN0ckFyZyA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJn
dW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MSA9IGNh
bGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSk7Ci0gICAgYXV0byBvYmpBcmcgPSBjb252ZXJ0
PElETEludGVyZmFjZTxUZXN0T2JqPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MS52
YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6
OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3IobGV4aWNhbEdsb2Jh
bE9iamVjdCwgc2NvcGUsIDEsICJvYmpBcmciLCAiVGVzdEludGVyZmFjZSIsICJpbmNsdWRlc01l
dGhvZDIiLCAiVGVzdE9iaiIpOyB9KTsKKyAgICBhdXRvIG9iakFyZyA9IGNvbnZlcnQ8SURMSW50
ZXJmYWNlPFRlc3RPYmo+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCks
IFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dT
Y29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0
LCBzY29wZSwgMSwgIm9iakFyZyIsICJUZXN0SW50ZXJmYWNlIiwgIm1peGluQ29tcGxleE9wZXJh
dGlvbiIsICJUZXN0T2JqIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4oKmxleGljYWxHbG9i
YWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5p
bmNsdWRlc01ldGhvZDIoKmNvbnRleHQsIFdURk1vdmUoc3RyQXJnKSwgKm9iakFyZykpKSk7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElE
TEludGVyZmFjZTxUZXN0T2JqPj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5n
bG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5taXhpbkNvbXBsZXhPcGVyYXRpb24oKmNv
bnRleHQsIFdURk1vdmUoc3RyQXJnKSwgKm9iakFyZykpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01l
dGhvZDIoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90
b3R5cGVGdW5jdGlvbk1peGluQ29tcGxleE9wZXJhdGlvbihKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+OjpjYWxsPGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1
bmN0aW9uSW5jbHVkZXNNZXRob2QyQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJh
bWUsICJpbmNsdWRlc01ldGhvZDIiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdElu
dGVyZmFjZT46OmNhbGw8anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25NaXhpbkNvbXBs
ZXhPcGVyYXRpb25Cb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm1peGlu
Q29tcGxleE9wZXJhdGlvbiIpOwogfQogCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDb25kaXRpb24y
MikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2QzQm9keShK
U0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSog
Y2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Q2xhc3NQ
YXJhbWV0ZXIgY2FzdGVkVGhpcykKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbk1peGluQ3VzdG9tT3BlcmF0aW9uQm9keShK
U0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSog
Y2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Q2xhc3NQ
YXJhbWV0ZXIgY2FzdGVkVGhpcykKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShj
YWxsRnJhbWUpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAoSlNWYWx1ZTo6
ZW5jb2RlKGNhc3RlZFRoaXMtPmluY2x1ZGVzTWV0aG9kMygqbGV4aWNhbEdsb2JhbE9iamVjdCwg
KmNhbGxGcmFtZSkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIChKU1Zh
bHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+bWl4aW5DdXN0b21PcGVyYXRpb24oKmxleGljYWxHbG9i
YWxPYmplY3QsICpjYWxsRnJhbWUpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2QzKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rp
b25NaXhpbkN1c3RvbU9wZXJhdGlvbihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rl
c3RJbnRlcmZhY2U+OjpjYWxsPGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW5jbHVk
ZXNNZXRob2QzQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJpbmNsdWRl
c01ldGhvZDMiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46OmNh
bGw8anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25NaXhpbkN1c3RvbU9wZXJhdGlvbkJv
ZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAibWl4aW5DdXN0b21PcGVyYXRp
b24iKTsKIH0KIAogI2VuZGlmCiAKICNpZiAoRU5BQkxFKENvbmRpdGlvbjExKSAmJiBFTkFCTEUo
Q29uZGl0aW9uMjIpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1zdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01l
dGhvZENvbmRpdGlvbmFsQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNU
ZXN0SW50ZXJmYWNlPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKK3N0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbk1peGlu
Q29uZGl0aW9uYWxPcGVyYXRpb25Cb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlv
bjxKU1Rlc3RJbnRlcmZhY2U+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQogewogICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTkxMCwxOSArOTU1LDE5IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0o
Y2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwuaW5jbHVkZXNNZXRob2RDb25kaXRpb25h
bCgpOworICAgIGltcGwubWl4aW5Db25kaXRpb25hbE9wZXJhdGlvbigpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZENv
bmRpdGlvbmFsKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNl
UHJvdG90eXBlRnVuY3Rpb25NaXhpbkNvbmRpdGlvbmFsT3BlcmF0aW9uKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1
cm4gSURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46OmNhbGw8anNUZXN0SW50ZXJmYWNlUHJv
dG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZENvbmRpdGlvbmFsQm9keT4oKmxleGljYWxHbG9i
YWxPYmplY3QsICpjYWxsRnJhbWUsICJpbmNsdWRlc01ldGhvZENvbmRpdGlvbmFsIik7CisgICAg
cmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+OjpjYWxsPGpzVGVzdEludGVyZmFj
ZVByb3RvdHlwZUZ1bmN0aW9uTWl4aW5Db25kaXRpb25hbE9wZXJhdGlvbkJvZHk+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAibWl4aW5Db25kaXRpb25hbE9wZXJhdGlvbiIpOwog
fQogCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlv
bjIzKQotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVBy
b3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2RTZXR0aW5nc0NvbmRpdGlvbmFsQm9keShKU0M6
OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2Fs
bEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Q2xhc3NQYXJh
bWV0ZXIgY2FzdGVkVGhpcykKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbk1peGluU2V0dGluZ3NDb25kaXRpb25hbE9wZXJh
dGlvbkJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFj
ZT46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwpAQCAtOTMwLDMyICs5NzUsNTIgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgdGhyb3dTY29wZS5yZWxl
YXNlKCk7Ci0gICAgaW1wbC5pbmNsdWRlc01ldGhvZFNldHRpbmdzQ29uZGl0aW9uYWwoKTsKKyAg
ICBpbXBsLm1peGluU2V0dGluZ3NDb25kaXRpb25hbE9wZXJhdGlvbigpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZFNl
dHRpbmdzQ29uZGl0aW9uYWwoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJ
bnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbk1peGluU2V0dGluZ3NDb25kaXRpb25hbE9wZXJhdGlv
bihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+OjpjYWxsPGpz
VGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2RTZXR0aW5nc0NvbmRp
dGlvbmFsQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJpbmNsdWRlc01l
dGhvZFNldHRpbmdzQ29uZGl0aW9uYWwiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dEludGVyZmFjZT46OmNhbGw8anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25NaXhpblNl
dHRpbmdzQ29uZGl0aW9uYWxPcGVyYXRpb25Cb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNh
bGxGcmFtZSwgIm1peGluU2V0dGluZ3NDb25kaXRpb25hbE9wZXJhdGlvbiIpOwogfQogCiAjZW5k
aWYKIAogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1
bmN0aW9uVGFrZU5vZGVzQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNU
ZXN0SW50ZXJmYWNlPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKK3N0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbk1peGlu
UmVzdWx0RmllbGRPcGVyYXRpb25Cb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlv
bjxKU1Rlc3RJbnRlcmZhY2U+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQogewogICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBhdXRvIGltcGxSZXN1bHQgPSBpbXBsLnRha2VOb2Rl
cygpOworICAgIGF1dG8gaW1wbFJlc3VsdCA9IGltcGwubWl4aW5SZXN1bHRGaWVsZE9wZXJhdGlv
bigpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUo
dG9KUzxJRExTZXF1ZW5jZTxJRExJbnRlcmZhY2U8Tm9kZT4+PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEZNb3ZlKGltcGxSZXN1bHQubm9kZXMp
KSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVBy
b3RvdHlwZUZ1bmN0aW9uVGFrZU5vZGVzKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25NaXhpblJlc3VsdEZpZWxkT3BlcmF0aW9u
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKK3sKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46OmNhbGw8anNU
ZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25NaXhpblJlc3VsdEZpZWxkT3BlcmF0aW9uQm9k
eT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJtaXhpblJlc3VsdEZpZWxkT3Bl
cmF0aW9uIik7Cit9CisKKyNlbmRpZgorCisjaWYgKEVOQUJMRShDb25kaXRpb24yMikgJiYgRU5B
QkxFKENvbmRpdGlvbjMzKSkgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uUGFydGlh
bE1peGluT3BlcmF0aW9uRnJvbVBhcnRpYWxCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9w
ZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQorewor
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CisgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKKyAg
ICBpbXBsLnBhcnRpYWxNaXhpbk9wZXJhdGlvbkZyb21QYXJ0aWFsKCk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblBhcnRpYWxNaXhpbk9wZXJh
dGlvbkZyb21QYXJ0aWFsKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEludGVy
ZmFjZT46OmNhbGw8anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25UYWtlTm9kZXNCb2R5
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgInRha2VOb2RlcyIpOworICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Y2FsbDxqc1Rlc3RJbnRlcmZhY2VQ
cm90b3R5cGVGdW5jdGlvblBhcnRpYWxNaXhpbk9wZXJhdGlvbkZyb21QYXJ0aWFsQm9keT4oKmxl
eGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJwYXJ0aWFsTWl4aW5PcGVyYXRpb25Gcm9t
UGFydGlhbCIpOwogfQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmgJKHJldmlzaW9u
IDI2NjcxMikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJbnRlcmZhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsMTAgKzY0LDEwIEBAIHB1YmxpYzoK
IAogICAgIC8vIEN1c3RvbSBhdHRyaWJ1dGVzCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgSlNDOjpKU1ZhbHVlIGluY2x1ZGVzU3RyMyhKU0M6OkpT
R2xvYmFsT2JqZWN0JikgY29uc3Q7CisgICAgSlNDOjpKU1ZhbHVlIG1peGluQ3VzdG9tQXR0cmli
dXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmKSBjb25zdDsKICNlbmRpZgogI2lmIEVOQUJMRShDb25k
aXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIHZvaWQgc2V0SW5jbHVkZXNTdHIz
KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUpOworICAgIHZvaWQgc2V0TWl4aW5D
dXN0b21BdHRyaWJ1dGUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSk7CiAjZW5k
aWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKICAgICBK
U0M6OkpTVmFsdWUgc3VwcGxlbWVudGFsU3RyMyhKU0M6OkpTR2xvYmFsT2JqZWN0JikgY29uc3Q7
CkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEN1c3RvbSBmdW5jdGlvbnMKICNp
ZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLSAgICBKU0M6OkpT
VmFsdWUgaW5jbHVkZXNNZXRob2QzKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkNhbGxGcmFt
ZSYpOworICAgIEpTQzo6SlNWYWx1ZSBtaXhpbkN1c3RvbU9wZXJhdGlvbihKU0M6OkpTR2xvYmFs
T2JqZWN0JiwgSlNDOjpDYWxsRnJhbWUmKTsKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24x
MSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogICAgIEpTQzo6SlNWYWx1ZSBzdXBwbGVtZW50YWxN
ZXRob2QzKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkNhbGxGcmFtZSYpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1peGluSW50ZXJmYWNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TWl4aW5JbnRlcmZhY2UuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNaXhpbkludGVyZmFjZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw2MjQgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQg
b2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVl
biBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAg
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUo
Q29uZGl0aW9uMjMpCisKKyNpbmNsdWRlICJKU1Rlc3RNaXhpbkludGVyZmFjZS5oIgorCisjaW5j
bHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCisj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgorI2luY2x1
ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1
Y3RhYmxlLmgiCisjaW5jbHVkZSAiSlNET01Db252ZXJ0SW50ZXJmYWNlLmgiCisjaW5jbHVkZSAi
SlNET01Db252ZXJ0U2VxdWVuY2VzLmgiCisjaW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5ncy5o
IgorI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKKyNpbmNsdWRlICJKU0RPTUds
b2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCisjaW5jbHVkZSAiSlNE
T01XcmFwcGVyQ2FjaGUuaCIKKyNpbmNsdWRlICJKU05vZGUuaCIKKyNpbmNsdWRlICJKU1Rlc3RP
YmouaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9IZWFwQW5hbHl6ZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0FycmF5Lmg+Cisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5o
PgorCisjaWYgRU5BQkxFKENvbmRpdGlvbjMzKQorI2luY2x1ZGUgIkpTRE9NQ29udmVydE51bWJl
cnMuaCIKKyNlbmRpZgorCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5hbWVzcGFjZSBK
U0M7CisKKy8vIEZ1bmN0aW9ucworCitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0TWl4aW5JbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbk1peGluT3BlcmF0aW9uKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE1peGluSW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25NaXhpbkNv
bXBsZXhPcGVyYXRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TWl4aW5JbnRlcmZhY2VQcm90
b3R5cGVGdW5jdGlvbk1peGluQ3VzdG9tT3BlcmF0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkNhbGxGcmFtZSopOworI2lmIEVOQUJMRShDb25kaXRpb24xMSkKK0pTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RNaXhpbkludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9u
TWl4aW5Db25kaXRpb25hbE9wZXJhdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxs
RnJhbWUqKTsKKyNlbmRpZgorSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE1peGluSW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25NaXhpblNldHRpbmdzQ29uZGl0aW9uYWxP
cGVyYXRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TWl4aW5JbnRlcmZhY2VQcm90b3R5cGVG
dW5jdGlvbk1peGluUmVzdWx0RmllbGRPcGVyYXRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6Q2FsbEZyYW1lKik7CisjaWYgRU5BQkxFKENvbmRpdGlvbjMzKQorSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE1peGluSW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25Q
YXJ0aWFsTWl4aW5PcGVyYXRpb25Gcm9tUGFydGlhbChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpDYWxsRnJhbWUqKTsKKyNlbmRpZgorCisvLyBBdHRyaWJ1dGVzCisKK0pTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0TWl4aW5JbnRlcmZhY2VDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworYm9vbCBzZXRKU1Rl
c3RNaXhpbkludGVyZmFjZUNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0TWl4aW5JbnRlcmZhY2VNaXhpblJlYWRPbmx5QXR0cmlidXRlKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE1peGluSW50ZXJmYWNlTWl4aW5BdHRyaWJ1dGUoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK2Jv
b2wgc2V0SlNUZXN0TWl4aW5JbnRlcmZhY2VNaXhpbkF0dHJpYnV0ZShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE1peGluSW50ZXJmYWNlTWl4aW5DdXN0b21BdHRyaWJ1dGUoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1l
KTsKK2Jvb2wgc2V0SlNUZXN0TWl4aW5JbnRlcmZhY2VNaXhpbkN1c3RvbUF0dHJpYnV0ZShKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE1peGluSW50ZXJmYWNlTWl4aW5Ob2RlQXR0
cmlidXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlBy
b3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdE1peGluSW50ZXJmYWNlTWl4aW5Ob2RlQXR0cmli
dXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlKTsKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMzMpCitKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE1peGluSW50ZXJmYWNlUGFydGlhbE1peGluQXR0cmlidXRlRnJvbVBhcnRpYWwoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1l
KTsKKyNlbmRpZgorCitjbGFzcyBKU1Rlc3RNaXhpbkludGVyZmFjZVByb3RvdHlwZSBmaW5hbCA6
IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2Ug
PSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CisgICAgc3RhdGljIEpTVGVzdE1peGluSW50ZXJmYWNl
UHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBKU1Rlc3RN
aXhpbkludGVyZmFjZVByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRl
Q2VsbDxKU1Rlc3RNaXhpbkludGVyZmFjZVByb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdE1peGlu
SW50ZXJmYWNlUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAg
IHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKwor
ICAgIERFQ0xBUkVfSU5GTzsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgSlNDOjpT
dWJzcGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1Rlc3RNaXhpbkludGVyZmFjZVByb3RvdHlwZSwgQmFzZSk7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6U3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVy
biBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlND
OjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgSlNUZXN0TWl4aW5JbnRlcmZhY2VQcm90b3R5cGUoSlNDOjpW
TSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQor
ICAgICAgICA6IEpTQzo6SlNOb25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQorICAgIHsKKyAg
ICB9CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK307CitTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RNaXhpbkludGVyZmFjZVByb3RvdHlwZSwg
SlNUZXN0TWl4aW5JbnRlcmZhY2VQcm90b3R5cGU6OkJhc2UpOworCit1c2luZyBKU1Rlc3RNaXhp
bkludGVyZmFjZUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8
SlNUZXN0TWl4aW5JbnRlcmZhY2U+OworCisvKiBIYXNoIHRhYmxlIGZvciBjb25zdHJ1Y3RvciAq
LworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0TWl4aW5JbnRlcmZhY2VDb25z
dHJ1Y3RvclRhYmxlVmFsdWVzW10gPQoreworICAgIHsgIk1JWElOX0NPTlNUQU5UIiwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2VyLCBOb0ludHJp
bnNpYywgeyAobG9uZyBsb25nKSgxKSB9IH0sCisgICAgeyAiTUlYSU5fUkVGTEVDVEVEX0NPTlNU
QU5UIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRl
Z2VyLCBOb0ludHJpbnNpYywgeyAobG9uZyBsb25nKSgyKSB9IH0sCisjaWYgRU5BQkxFKENvbmRp
dGlvbjMzKQorICAgIHsgIlBBUlRJQUxfTUlYSU5fQ09OU1RBTlRfRlJPTV9QQVJUSUFMIiwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2VyLCBOb0lu
dHJpbnNpYywgeyAobG9uZyBsb25nKSg1KSB9IH0sCisjZWxzZQorICAgIHsgMCwgMCwgTm9JbnRy
aW5zaWMsIHsgMCwgMCB9IH0sCisjZW5kaWYKK307CisKK3N0YXRpY19hc3NlcnQoVGVzdE1peGlu
SW50ZXJmYWNlOjpNSVhJTl9DT05TVEFOVCA9PSAxLCAiTUlYSU5fQ09OU1RBTlQgaW4gVGVzdE1p
eGluSW50ZXJmYWNlIGRvZXMgbm90IG1hdGNoIHZhbHVlIGZyb20gSURMIik7CitzdGF0aWNfYXNz
ZXJ0KFRlc3RNaXhpbkludGVyZmFjZTo6Q09OU1RfSU1QTCA9PSAyLCAiQ09OU1RfSU1QTCBpbiBU
ZXN0TWl4aW5JbnRlcmZhY2UgZG9lcyBub3QgbWF0Y2ggdmFsdWUgZnJvbSBJREwiKTsKKyNpZiBF
TkFCTEUoQ29uZGl0aW9uMzMpCitzdGF0aWNfYXNzZXJ0KFRlc3RNaXhpbkludGVyZmFjZTo6UEFS
VElBTF9NSVhJTl9DT05TVEFOVF9GUk9NX1BBUlRJQUwgPT0gNSwgIlBBUlRJQUxfTUlYSU5fQ09O
U1RBTlRfRlJPTV9QQVJUSUFMIGluIFRlc3RNaXhpbkludGVyZmFjZSBkb2VzIG5vdCBtYXRjaCB2
YWx1ZSBmcm9tIElETCIpOworI2VuZGlmCisKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RNaXhp
bkludGVyZmFjZUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgVU5VU0VEX1BB
UkFNKHZtKTsKKyAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7Cit9
CisKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3RNaXhpbkludGVyZmFjZUNvbnN0cnVjdG9yOjppbml0
aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
Cit7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVz
dE1peGluSW50ZXJmYWNlOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RNaXhp
bkludGVyZmFjZSJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CisgICAgcmVpZnlTdGF0
aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RNaXhpbkludGVyZmFjZTo6aW5mbygpLCBKU1Rlc3RNaXhp
bkludGVyZmFjZUNvbnN0cnVjdG9yVGFibGVWYWx1ZXMsICp0aGlzKTsKK30KKwordGVtcGxhdGU8
PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TWl4aW5JbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6c19pbmZv
ID0geyAiVGVzdE1peGluSW50ZXJmYWNlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0
ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RNaXhpbkludGVyZmFjZUNvbnN0cnVjdG9yKSB9
OworCisvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KKworc3RhdGljIGNvbnN0IEhhc2hU
YWJsZVZhbHVlIEpTVGVzdE1peGluSW50ZXJmYWNlUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9Cit7
CisgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE1peGluSW50ZXJmYWNlQ29uc3Ry
dWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU1Rlc3RNaXhpbkludGVyZmFjZUNvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAibWl4
aW5SZWFkT25seUF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RNaXhpbkludGVyZmFjZU1peGluUmVhZE9ubHlBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCisgICAgeyAibWl4
aW5BdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzVGVzdE1peGluSW50ZXJmYWNlTWl4aW5BdHRyaWJ1dGUpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RNaXhp
bkludGVyZmFjZU1peGluQXR0cmlidXRlKSB9IH0sCisgICAgeyAibWl4aW5DdXN0b21BdHRyaWJ1
dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzVGVzdE1peGluSW50ZXJmYWNlTWl4aW5DdXN0b21BdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RNaXhpbklu
dGVyZmFjZU1peGluQ3VzdG9tQXR0cmlidXRlKSB9IH0sCisgICAgeyAibWl4aW5Ob2RlQXR0cmli
dXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RNaXhpbkludGVyZmFjZU1peGluTm9kZUF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE1peGluSW50
ZXJmYWNlTWl4aW5Ob2RlQXR0cmlidXRlKSB9IH0sCisjaWYgRU5BQkxFKENvbmRpdGlvbjMzKQor
ICAgIHsgInBhcnRpYWxNaXhpbkF0dHJpYnV0ZUZyb21QYXJ0aWFsIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE1peGluSW50ZXJmYWNlUGFydGlhbE1peGluQXR0cmlidXRl
RnJvbVBhcnRpYWwpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPigwKSB9IH0sCisjZWxzZQorICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwg
MCB9IH0sCisjZW5kaWYKKyAgICB7ICJtaXhpbk9wZXJhdGlvbiIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0TWl4aW5JbnRlcmZh
Y2VQcm90b3R5cGVGdW5jdGlvbk1peGluT3BlcmF0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LAor
ICAgIHsgIm1peGluQ29tcGxleE9wZXJhdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0TWl4aW5JbnRlcmZhY2VQcm90b3R5
cGVGdW5jdGlvbk1peGluQ29tcGxleE9wZXJhdGlvbiksIChpbnRwdHJfdCkgKDIpIH0gfSwKKyAg
ICB7ICJtaXhpbkN1c3RvbU9wZXJhdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0TWl4aW5JbnRlcmZhY2VQcm90b3R5cGVG
dW5jdGlvbk1peGluQ3VzdG9tT3BlcmF0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LAorI2lmIEVO
QUJMRShDb25kaXRpb24xMSkKKyAgICB7ICJtaXhpbkNvbmRpdGlvbmFsT3BlcmF0aW9uIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rl
c3RNaXhpbkludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uTWl4aW5Db25kaXRpb25hbE9wZXJhdGlv
biksIChpbnRwdHJfdCkgKDApIH0gfSwKKyNlbHNlCisgICAgeyAwLCAwLCBOb0ludHJpbnNpYywg
eyAwLCAwIH0gfSwKKyNlbmRpZgorICAgIHsgIm1peGluU2V0dGluZ3NDb25kaXRpb25hbE9wZXJh
dGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5j
dGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5j
dGlvbj4oanNUZXN0TWl4aW5JbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbk1peGluU2V0dGluZ3ND
b25kaXRpb25hbE9wZXJhdGlvbiksIChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICJtaXhpblJl
c3VsdEZpZWxkT3BlcmF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RNaXhpbkludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9u
TWl4aW5SZXN1bHRGaWVsZE9wZXJhdGlvbiksIChpbnRwdHJfdCkgKDApIH0gfSwKKyNpZiBFTkFC
TEUoQ29uZGl0aW9uMzMpCisgICAgeyAicGFydGlhbE1peGluT3BlcmF0aW9uRnJvbVBhcnRpYWwi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24p
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+
KGpzVGVzdE1peGluSW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25QYXJ0aWFsTWl4aW5PcGVyYXRp
b25Gcm9tUGFydGlhbCksIChpbnRwdHJfdCkgKDApIH0gfSwKKyNlbHNlCisgICAgeyAwLCAwLCBO
b0ludHJpbnNpYywgeyAwLCAwIH0gfSwKKyNlbmRpZgorICAgIHsgIk1JWElOX0NPTlNUQU5UIiwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2VyLCBO
b0ludHJpbnNpYywgeyAobG9uZyBsb25nKSgxKSB9IH0sCisgICAgeyAiTUlYSU5fUkVGTEVDVEVE
X0NPTlNUQU5UIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3Rh
bnRJbnRlZ2VyLCBOb0ludHJpbnNpYywgeyAobG9uZyBsb25nKSgyKSB9IH0sCisjaWYgRU5BQkxF
KENvbmRpdGlvbjMzKQorICAgIHsgIlBBUlRJQUxfTUlYSU5fQ09OU1RBTlRfRlJPTV9QQVJUSUFM
IiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2Vy
LCBOb0ludHJpbnNpYywgeyAobG9uZyBsb25nKSg1KSB9IH0sCisjZWxzZQorICAgIHsgMCwgMCwg
Tm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCisjZW5kaWYKK307CisKK2NvbnN0IENsYXNzSW5mbyBK
U1Rlc3RNaXhpbkludGVyZmFjZVByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdE1peGluSW50ZXJm
YWNlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJM
RShKU1Rlc3RNaXhpbkludGVyZmFjZVByb3RvdHlwZSkgfTsKKwordm9pZCBKU1Rlc3RNaXhpbklu
dGVyZmFjZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKHZtKTsKKyAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdE1p
eGluSW50ZXJmYWNlOjppbmZvKCksIEpTVGVzdE1peGluSW50ZXJmYWNlUHJvdG90eXBlVGFibGVW
YWx1ZXMsICp0aGlzKTsKKyAgICBib29sIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSBm
YWxzZTsKKyAgICBpZiAoIWRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdz
KCkudGVzdFNldHRpbmdFbmFibGVkKCkpIHsKKyAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJv
cGVydGllcyA9IHRydWU7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJtaXhpblNldHRp
bmdzQ29uZGl0aW9uYWxPcGVyYXRpb24iKSwgc3RybGVuKCJtaXhpblNldHRpbmdzQ29uZGl0aW9u
YWxPcGVyYXRpb24iKSk7CisgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29w
ZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKKyAgICAg
ICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICB9Cisg
ICAgaWYgKGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgJiYgc3RydWN0dXJlKCktPmlzRGlj
dGlvbmFyeSgpKQorICAgICAgICBmbGF0dGVuRGljdGlvbmFyeU9iamVjdCh2bSk7CisgICAgSlND
X1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7Cit9CisKK2NvbnN0IENsYXNzSW5m
byBKU1Rlc3RNaXhpbkludGVyZmFjZTo6c19pbmZvID0geyAiVGVzdE1peGluSW50ZXJmYWNlIiwg
JkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rl
c3RNaXhpbkludGVyZmFjZSkgfTsKKworSlNUZXN0TWl4aW5JbnRlcmZhY2U6OkpTVGVzdE1peGlu
SW50ZXJmYWNlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0LCBSZWY8VGVzdE1peGluSW50ZXJmYWNlPiYmIGltcGwpCisgICAgOiBKU0RPTVdyYXBw
ZXI8VGVzdE1peGluSW50ZXJmYWNlPihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGTW92ZShp
bXBsKSkKK3sKK30KKwordm9pZCBKU1Rlc3RNaXhpbkludGVyZmFjZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5o
ZXJpdHModm0sIGluZm8oKSkpOworCisgICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19iYXNlX29m
PEFjdGl2ZURPTU9iamVjdCwgVGVzdE1peGluSW50ZXJmYWNlPjo6dmFsdWUsICJJbnRlcmZhY2Ug
aXMgbm90IG1hcmtlZCBhcyBbQWN0aXZlRE9NT2JqZWN0XSBldmVuIHRob3VnaCBpbXBsZW1lbnRh
dGlvbiBjbGFzcyBzdWJjbGFzc2VzIEFjdGl2ZURPTU9iamVjdC4iKTsKKworfQorCitKU09iamVj
dCogSlNUZXN0TWl4aW5JbnRlcmZhY2U6OmNyZWF0ZVByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIEpTVGVzdE1peGluSW50ZXJm
YWNlUHJvdG90eXBlOjpjcmVhdGUodm0sICZnbG9iYWxPYmplY3QsIEpTVGVzdE1peGluSW50ZXJm
YWNlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sICZnbG9iYWxPYmplY3QsIGdsb2JhbE9i
amVjdC5vYmplY3RQcm90b3R5cGUoKSkpOworfQorCitKU09iamVjdCogSlNUZXN0TWl4aW5JbnRl
cmZhY2U6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
Cit7CisgICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3RNaXhpbkludGVyZmFjZT4odm0s
IGdsb2JhbE9iamVjdCk7Cit9CisKK0pTVmFsdWUgSlNUZXN0TWl4aW5JbnRlcmZhY2U6OmdldENv
bnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sK
KyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0TWl4aW5JbnRlcmZhY2VDb25zdHJ1
Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3Qp
KTsKK30KKwordm9pZCBKU1Rlc3RNaXhpbkludGVyZmFjZTo6ZGVzdHJveShKU0M6OkpTQ2VsbCog
Y2VsbCkKK3sKKyAgICBKU1Rlc3RNaXhpbkludGVyZmFjZSogdGhpc09iamVjdCA9IHN0YXRpY19j
YXN0PEpTVGVzdE1peGluSW50ZXJmYWNlKj4oY2VsbCk7CisgICAgdGhpc09iamVjdC0+SlNUZXN0
TWl4aW5JbnRlcmZhY2U6On5KU1Rlc3RNaXhpbkludGVyZmFjZSgpOworfQorCit0ZW1wbGF0ZTw+
IGlubGluZSBKU1Rlc3RNaXhpbkludGVyZmFjZSogSURMQXR0cmlidXRlPEpTVGVzdE1peGluSW50
ZXJmYWNlPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlKQoreworICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdE1p
eGluSW50ZXJmYWNlKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKK30KKwordGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0TWl4aW5J
bnRlcmZhY2UqIElETE9wZXJhdGlvbjxKU1Rlc3RNaXhpbkludGVyZmFjZT46OmNhc3QoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQorewor
ICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdE1peGluSW50ZXJmYWNlKj4oSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Cit9CisKK0Vu
Y29kZWRKU1ZhbHVlIGpzVGVzdE1peGluSW50ZXJmYWNlQ29uc3RydWN0b3IoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQoreworICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0
byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RNaXhpbkludGVyZmFjZVByb3RvdHlw
ZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElLRUxZKCFw
cm90b3R5cGUpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE1p
eGluSW50ZXJmYWNlOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmpl
Y3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7Cit9CisKK2Jvb2wgc2V0SlNUZXN0TWl4
aW5JbnRlcmZhY2VDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
Cit7CisgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvKiBwcm90
b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE1peGluSW50ZXJmYWNlUHJvdG90eXBlKj4odm0s
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlw
ZSkpIHsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAvLyBTaGFkb3dpbmcg
YSBidWlsdC1pbiBjb25zdHJ1Y3RvcgorICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE1peGluSW50ZXJmYWNl
TWl4aW5SZWFkT25seUF0dHJpYnV0ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNUZXN0TWl4aW5JbnRlcmZhY2UmIHRoaXNPYmplY3QpCit7CisgICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElE
TERPTVN0cmluZz4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5taXhpblJl
YWRPbmx5QXR0cmlidXRlKCkpKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdE1peGluSW50
ZXJmYWNlTWl4aW5SZWFkT25seUF0dHJpYnV0ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RNaXhpbkludGVyZmFjZT46OmdldDxqc1Rlc3RNaXhp
bkludGVyZmFjZU1peGluUmVhZE9ubHlBdHRyaWJ1dGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJl
aGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJtaXhpblJl
YWRPbmx5QXR0cmlidXRlIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RNaXhp
bkludGVyZmFjZU1peGluQXR0cmlidXRlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU1Rlc3RNaXhpbkludGVyZmFjZSYgdGhpc09iamVjdCkKK3sKKyAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLm1peGlu
QXR0cmlidXRlKCkpKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdE1peGluSW50ZXJmYWNl
TWl4aW5BdHRyaWJ1dGUoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNUZXN0TWl4aW5JbnRlcmZhY2U+OjpnZXQ8anNUZXN0TWl4aW5JbnRlcmZhY2VNaXhp
bkF0dHJpYnV0ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIm1peGluQXR0cmlidXRlIik7Cit9CisKK3N0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RNaXhpbkludGVyZmFjZU1peGluQXR0cmlidXRlU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RNaXhpbkludGVyZmFj
ZSYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
KyAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIGltcGwuc2V0TWl4aW5BdHRyaWJ1dGUoV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOworICAgIH0pOworICAgIHJldHVybiB0cnVlOworfQorCitib29s
IHNldEpTVGVzdE1peGluSW50ZXJmYWNlTWl4aW5BdHRyaWJ1dGUoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0TWl4aW5J
bnRlcmZhY2U+OjpzZXQ8c2V0SlNUZXN0TWl4aW5JbnRlcmZhY2VNaXhpbkF0dHJpYnV0ZVNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAibWl4aW5B
dHRyaWJ1dGUiKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE1peGluSW50ZXJm
YWNlTWl4aW5DdXN0b21BdHRyaWJ1dGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTVGVzdE1peGluSW50ZXJmYWNlJiB0aGlzT2JqZWN0KQoreworICAgIFVOVVNF
RF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gdGhpc09iamVjdC5taXhp
bkN1c3RvbUF0dHJpYnV0ZShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKK30KKworRW5jb2RlZEpTVmFs
dWUganNUZXN0TWl4aW5JbnRlcmZhY2VNaXhpbkN1c3RvbUF0dHJpYnV0ZShKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RNaXhpbkludGVyZmFjZT46
OmdldDxqc1Rlc3RNaXhpbkludGVyZmFjZU1peGluQ3VzdG9tQXR0cmlidXRlR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAibWl4aW5DdXN0b21BdHRyaWJ1dGUiKTsKK30KKworc3RhdGljIGlubGluZSBib29sIHNl
dEpTVGVzdE1peGluSW50ZXJmYWNlTWl4aW5DdXN0b21BdHRyaWJ1dGVTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdE1peGluSW50ZXJmYWNlJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CisgICAgdGhpc09iamVjdC5zZXRNaXhpbkN1c3RvbUF0dHJpYnV0ZShs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wg
c2V0SlNUZXN0TWl4aW5JbnRlcmZhY2VNaXhpbkN1c3RvbUF0dHJpYnV0ZShKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RN
aXhpbkludGVyZmFjZT46OnNldDxzZXRKU1Rlc3RNaXhpbkludGVyZmFjZU1peGluQ3VzdG9tQXR0
cmlidXRlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICJtaXhpbkN1c3RvbUF0dHJpYnV0ZSIpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNUZXN0TWl4aW5JbnRlcmZhY2VNaXhpbk5vZGVBdHRyaWJ1dGVHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdE1peGluSW50ZXJmYWNlJiB0aGlzT2JqZWN0
KQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExJbnRlcmZhY2U8Tm9kZT4+KGxleGljYWxHbG9iYWxPYmplY3QsICp0
aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLm1peGluTm9kZUF0dHJp
YnV0ZSgpKSkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RNaXhpbkludGVyZmFjZU1peGlu
Tm9kZUF0dHJpYnV0ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU1Rlc3RNaXhpbkludGVyZmFjZT46OmdldDxqc1Rlc3RNaXhpbkludGVyZmFjZU1peGlu
Tm9kZUF0dHJpYnV0ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIm1peGluTm9kZUF0dHJpYnV0ZSIpOworfQor
CitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0TWl4aW5JbnRlcmZhY2VNaXhpbk5vZGVBdHRy
aWJ1dGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdE1p
eGluSW50ZXJmYWNlJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOworICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETEludGVyZmFjZTxO
b2RlPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIFtdKEpTQzo6SlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBdHRy
aWJ1dGVUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsICJUZXN0TWl4aW5JbnRl
cmZhY2UiLCAibWl4aW5Ob2RlQXR0cmlidXRlIiwgIk5vZGUiKTsgfSk7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CisgICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CisgICAgICAgIHJldHVybiBp
bXBsLnNldE1peGluTm9kZUF0dHJpYnV0ZSgqbmF0aXZlVmFsdWUpOworICAgIH0pOworICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIHNldEpTVGVzdE1peGluSW50ZXJmYWNlTWl4aW5Ob2RlQXR0
cmlidXRlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTVGVzdE1peGluSW50ZXJmYWNlPjo6c2V0PHNldEpTVGVzdE1peGluSW50
ZXJmYWNlTWl4aW5Ob2RlQXR0cmlidXRlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJtaXhpbk5vZGVBdHRyaWJ1dGUiKTsKK30KKworI2lmIEVO
QUJMRShDb25kaXRpb24zMykKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RNaXhpbkludGVy
ZmFjZVBhcnRpYWxNaXhpbkF0dHJpYnV0ZUZyb21QYXJ0aWFsR2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RNaXhpbkludGVyZmFjZSYgdGhpc09iamVjdCkK
K3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMRG91YmxlPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLnBhcnRpYWxNaXhpbkF0dHJpYnV0ZUZyb21QYXJ0aWFsKCkpKSk7Cit9CisKK0VuY29kZWRK
U1ZhbHVlIGpzVGVzdE1peGluSW50ZXJmYWNlUGFydGlhbE1peGluQXR0cmlidXRlRnJvbVBhcnRp
YWwoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0
TWl4aW5JbnRlcmZhY2U+OjpnZXQ8anNUZXN0TWl4aW5JbnRlcmZhY2VQYXJ0aWFsTWl4aW5BdHRy
aWJ1dGVGcm9tUGFydGlhbEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInBhcnRpYWxNaXhpbkF0dHJpYnV0ZUZy
b21QYXJ0aWFsIik7Cit9CisKKyNlbmRpZgorCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0TWl4aW5JbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbk1peGluT3BlcmF0aW9u
Qm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxG
cmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0TWl4aW5JbnRlcmZh
Y2U+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQoreworICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgVU5V
U0VEX1BBUkFNKGNhbGxGcmFtZSk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKKyAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKKyAgICBpbXBsLm1peGluT3BlcmF0aW9u
KCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RNaXhpbkludGVyZmFjZVByb3RvdHlwZUZ1
bmN0aW9uTWl4aW5PcGVyYXRpb24oSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0
TWl4aW5JbnRlcmZhY2U+OjpjYWxsPGpzVGVzdE1peGluSW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rp
b25NaXhpbk9wZXJhdGlvbkJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAi
bWl4aW5PcGVyYXRpb24iKTsKK30KKworc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE1peGluSW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25NaXhpbkNvbXBsZXhPcGVyYXRp
b25Cb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2Fs
bEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RNaXhpbkludGVy
ZmFjZT46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCit7CisgICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBV
TlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOworICAgIGlmIChVTkxJS0VMWShjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8IDIp
KQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGxleGljYWxHbG9iYWxPYmplY3Qp
KTsKKyAgICBhdXRvKiBjb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obGV4aWNh
bEdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoVU5MSUtF
TFkoIWNvbnRleHQpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOworICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDApOworICAgIGF1dG8gc3RyQXJnID0gY29udmVydDxJRExET01TdHJp
bmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBFbnN1cmVT
dGlsbEFsaXZlU2NvcGUgYXJndW1lbnQxID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgx
KTsKKyAgICBhdXRvIG9iakFyZyA9IGNvbnZlcnQ8SURMSW50ZXJmYWNlPFRlc3RPYmo+PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dB
cmd1bWVudFR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMSwgIm9iakFyZyIs
ICJUZXN0TWl4aW5JbnRlcmZhY2UiLCAibWl4aW5Db21wbGV4T3BlcmF0aW9uIiwgIlRlc3RPYmoi
KTsgfSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3Rl
ZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLm1peGluQ29tcGxleE9wZXJh
dGlvbigqY29udGV4dCwgV1RGTW92ZShzdHJBcmcpLCAqb2JqQXJnKSkpKTsKK30KKworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RNaXhpbkludGVyZmFjZVByb3RvdHlwZUZ1bmN0
aW9uTWl4aW5Db21wbGV4T3BlcmF0aW9uKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdE1peGluSW50ZXJmYWNlPjo6Y2FsbDxqc1Rlc3RNaXhpbkludGVyZmFjZVByb3RvdHlwZUZ1
bmN0aW9uTWl4aW5Db21wbGV4T3BlcmF0aW9uQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpj
YWxsRnJhbWUsICJtaXhpbkNvbXBsZXhPcGVyYXRpb24iKTsKK30KKworc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE1peGluSW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25N
aXhpbkN1c3RvbU9wZXJhdGlvbkJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9u
PEpTVGVzdE1peGluSW50ZXJmYWNlPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKK3sKKyAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOworICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAoSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPm1peGluQ3Vz
dG9tT3BlcmF0aW9uKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lKSkpKTsKK30KKwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RNaXhpbkludGVyZmFjZVByb3RvdHlw
ZUZ1bmN0aW9uTWl4aW5DdXN0b21PcGVyYXRpb24oSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIHJldHVybiBJRExPcGVyYXRp
b248SlNUZXN0TWl4aW5JbnRlcmZhY2U+OjpjYWxsPGpzVGVzdE1peGluSW50ZXJmYWNlUHJvdG90
eXBlRnVuY3Rpb25NaXhpbkN1c3RvbU9wZXJhdGlvbkJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCAqY2FsbEZyYW1lLCAibWl4aW5DdXN0b21PcGVyYXRpb24iKTsKK30KKworI2lmIEVOQUJMRShD
b25kaXRpb24xMSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RNaXhp
bkludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uTWl4aW5Db25kaXRpb25hbE9wZXJhdGlvbkJvZHko
SlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE1peGluSW50ZXJmYWNlPjo6
Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
bGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIFVOVVNFRF9Q
QVJBTShjYWxsRnJhbWUpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CisgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CisgICAgaW1wbC5taXhpbkNvbmRpdGlvbmFsT3Bl
cmF0aW9uKCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30K
KworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RNaXhpbkludGVyZmFjZVByb3Rv
dHlwZUZ1bmN0aW9uTWl4aW5Db25kaXRpb25hbE9wZXJhdGlvbihKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgcmV0dXJuIElE
TE9wZXJhdGlvbjxKU1Rlc3RNaXhpbkludGVyZmFjZT46OmNhbGw8anNUZXN0TWl4aW5JbnRlcmZh
Y2VQcm90b3R5cGVGdW5jdGlvbk1peGluQ29uZGl0aW9uYWxPcGVyYXRpb25Cb2R5PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm1peGluQ29uZGl0aW9uYWxPcGVyYXRpb24iKTsK
K30KKworI2VuZGlmCisKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RN
aXhpbkludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uTWl4aW5TZXR0aW5nc0NvbmRpdGlvbmFsT3Bl
cmF0aW9uQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6
OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0TWl4aW5J
bnRlcmZhY2U+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQoreworICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7Cisg
ICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKKyAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKKyAgICBpbXBsLm1peGluU2V0
dGluZ3NDb25kaXRpb25hbE9wZXJhdGlvbigpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
TWl4aW5JbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbk1peGluU2V0dGluZ3NDb25kaXRpb25hbE9w
ZXJhdGlvbihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCit7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RNaXhpbkludGVyZmFj
ZT46OmNhbGw8anNUZXN0TWl4aW5JbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbk1peGluU2V0dGlu
Z3NDb25kaXRpb25hbE9wZXJhdGlvbkJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZy
YW1lLCAibWl4aW5TZXR0aW5nc0NvbmRpdGlvbmFsT3BlcmF0aW9uIik7Cit9CisKK3N0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RNaXhpbkludGVyZmFjZVByb3RvdHlwZUZ1
bmN0aW9uTWl4aW5SZXN1bHRGaWVsZE9wZXJhdGlvbkJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUg
SURMT3BlcmF0aW9uPEpTVGVzdE1peGluSW50ZXJmYWNlPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVk
VGhpcykKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOworICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgYXV0byBpbXBsUmVzdWx0
ID0gaW1wbC5taXhpblJlc3VsdEZpZWxkT3BlcmF0aW9uKCk7CisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFNlcXVlbmNlPElETEludGVy
ZmFjZTxOb2RlPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2Jq
ZWN0KCksIFdURk1vdmUoaW1wbFJlc3VsdC5ub2RlcykpKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0TWl4aW5JbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbk1peGlu
UmVzdWx0RmllbGRPcGVyYXRpb24oSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0
TWl4aW5JbnRlcmZhY2U+OjpjYWxsPGpzVGVzdE1peGluSW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rp
b25NaXhpblJlc3VsdEZpZWxkT3BlcmF0aW9uQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpj
YWxsRnJhbWUsICJtaXhpblJlc3VsdEZpZWxkT3BlcmF0aW9uIik7Cit9CisKKyNpZiBFTkFCTEUo
Q29uZGl0aW9uMzMpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TWl4
aW5JbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblBhcnRpYWxNaXhpbk9wZXJhdGlvbkZyb21QYXJ0
aWFsQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNh
bGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0TWl4aW5JbnRl
cmZhY2U+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQoreworICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAg
VU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKKyAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKKyAgICBpbXBsLnBhcnRpYWxNaXhp
bk9wZXJhdGlvbkZyb21QYXJ0aWFsKCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RNaXhp
bkludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uUGFydGlhbE1peGluT3BlcmF0aW9uRnJvbVBhcnRp
YWwoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQoreworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0TWl4aW5JbnRlcmZhY2U+Ojpj
YWxsPGpzVGVzdE1peGluSW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25QYXJ0aWFsTWl4aW5PcGVy
YXRpb25Gcm9tUGFydGlhbEJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAi
cGFydGlhbE1peGluT3BlcmF0aW9uRnJvbVBhcnRpYWwiKTsKK30KKworI2VuZGlmCisKK0pTQzo6
SXNvU3Vic3BhY2UqIEpTVGVzdE1peGluSW50ZXJmYWNlOjpzdWJzcGFjZUZvckltcGwoSlNDOjpW
TSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50
RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vi
c3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TWl4aW5JbnRlcmZhY2UuZ2V0KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsKKyAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dE1peGluSW50ZXJmYWNlPiB8fCAhSlNUZXN0TWl4aW5JbnRlcmZhY2U6Om5lZWRzRGVzdHJ1Y3Rp
b24pOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0TWl4aW5JbnRlcmZhY2U+KQorICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RNaXhpbkludGVyZmFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5n
ZXQoKSwgSlNUZXN0TWl4aW5JbnRlcmZhY2UpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TWl4aW5JbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rl
c3RNaXhpbkludGVyZmFjZSk7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RNaXhpbkludGVyZmFjZS5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFj
aGFibGUtY29kZSIpCitJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJl
IikKKyAgICBpZiAoJkpTVGVzdE1peGluSW50ZXJmYWNlOjp2aXNpdE91dHB1dENvbnN0cmFpbnRz
ICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50
RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJO
SU5HU19FTkQKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKK3Zv
aWQgSlNUZXN0TWl4aW5JbnRlcmZhY2U6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFu
YWx5emVyJiBhbmFseXplcikKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVz
dE1peGluSW50ZXJmYWNlKj4oY2VsbCk7CisgICAgYW5hbHl6ZXIuc2V0V3JhcHBlZE9iamVjdEZv
ckNlbGwoY2VsbCwgJnRoaXNPYmplY3QtPndyYXBwZWQoKSk7CisgICAgaWYgKHRoaXNPYmplY3Qt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAgICAgYW5hbHl6ZXIuc2V0TGFiZWxGb3JD
ZWxsKGNlbGwsICJ1cmwgIiArIHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
dXJsKCkuc3RyaW5nKCkpOworICAgIEJhc2U6OmFuYWx5emVIZWFwKGNlbGwsIGFuYWx5emVyKTsK
K30KKworYm9vbCBKU1Rlc3RNaXhpbkludGVyZmFjZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFx
dWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNp
dG9yJiB2aXNpdG9yLCBjb25zdCBjaGFyKiogcmVhc29uKQoreworICAgIFVOVVNFRF9QQVJBTSho
YW5kbGUpOworICAgIFVOVVNFRF9QQVJBTSh2aXNpdG9yKTsKKyAgICBVTlVTRURfUEFSQU0ocmVh
c29uKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgSlNUZXN0TWl4aW5JbnRlcmZhY2VP
d25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNv
bnRleHQpCit7CisgICAgYXV0byoganNUZXN0TWl4aW5JbnRlcmZhY2UgPSBzdGF0aWNfY2FzdDxK
U1Rlc3RNaXhpbkludGVyZmFjZSo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKKyAgICBhdXRv
JiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKKyAgICB1
bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdE1peGluSW50ZXJmYWNlLT53cmFwcGVkKCksIGpz
VGVzdE1peGluSW50ZXJmYWNlKTsKK30KKworI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkK
KyNpZiBQTEFURk9STShXSU4pCisjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDQ4MykKK2V4dGVy
biAiQyIgeyBleHRlcm4gdm9pZCAoKmNvbnN0IF9faWRlbnRpZmllcigiPz9fN1Rlc3RNaXhpbklu
dGVyZmFjZUBXZWJDb3JlQEA2QkAiKVtdKSgpOyB9CisjZWxzZQorZXh0ZXJuICJDIiB7IGV4dGVy
biB2b2lkKiBfWlRWTjdXZWJDb3JlMThUZXN0TWl4aW5JbnRlcmZhY2VFW107IH0KKyNlbmRpZgor
I2VuZGlmCisKK0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE1peGluSW50ZXJm
YWNlPiYmIGltcGwpCit7CisKKyNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCisgICAgY29u
c3Qgdm9pZCogYWN0dWFsVlRhYmxlUG9pbnRlciA9IGdldFZUYWJsZVBvaW50ZXIoaW1wbC5wdHIo
KSk7CisjaWYgUExBVEZPUk0oV0lOKQorICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9
IF9faWRlbnRpZmllcigiPz9fN1Rlc3RNaXhpbkludGVyZmFjZUBXZWJDb3JlQEA2QkAiKTsKKyNl
bHNlCisgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gJl9aVFZON1dlYkNvcmUxOFRl
c3RNaXhpbkludGVyZmFjZUVbMl07CisjZW5kaWYKKworICAgIC8vIElmIHRoaXMgZmFpbHMgVGVz
dE1peGluSW50ZXJmYWNlIGRvZXMgbm90IGhhdmUgYSB2dGFibGUsIHNvIHlvdSBuZWVkIHRvIGFk
ZCB0aGUKKyAgICAvLyBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlIGF0dHJpYnV0ZSB0byB0aGUg
aW50ZXJmYWNlIGRlZmluaXRpb24KKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfcG9seW1vcnBo
aWM8VGVzdE1peGluSW50ZXJmYWNlPjo6dmFsdWUsICJUZXN0TWl4aW5JbnRlcmZhY2UgaXMgbm90
IHBvbHltb3JwaGljIik7CisKKyAgICAvLyBJZiB5b3UgaGl0IHRoaXMgYXNzZXJ0aW9uIHlvdSBl
aXRoZXIgaGF2ZSBhIHVzZSBhZnRlciBmcmVlIGJ1Zywgb3IKKyAgICAvLyBUZXN0TWl4aW5JbnRl
cmZhY2UgaGFzIHN1YmNsYXNzZXMuIElmIFRlc3RNaXhpbkludGVyZmFjZSBoYXMgc3ViY2xhc3Nl
cyB0aGF0IGdldCBwYXNzZWQKKyAgICAvLyB0byB0b0pTKCkgd2UgY3VycmVudGx5IHJlcXVpcmUg
VGVzdE1peGluSW50ZXJmYWNlIHlvdSB0byBvcHQgb3V0IG9mIGJpbmRpbmcgaGFyZGVuaW5nCisg
ICAgLy8gYnkgYWRkaW5nIHRoZSBTa2lwVlRhYmxlVmFsaWRhdGlvbiBhdHRyaWJ1dGUgdG8gdGhl
IGludGVyZmFjZSBJREwgZGVmaW5pdGlvbgorICAgIFJFTEVBU0VfQVNTRVJUKGFjdHVhbFZUYWJs
ZVBvaW50ZXIgPT0gZXhwZWN0ZWRWVGFibGVQb2ludGVyKTsKKyNlbmRpZgorICAgIHJldHVybiBj
cmVhdGVXcmFwcGVyPFRlc3RNaXhpbkludGVyZmFjZT4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGlt
cGwpKTsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE1peGlu
SW50ZXJmYWNlJiBpbXBsKQoreworICAgIHJldHVybiB3cmFwKGxleGljYWxHbG9iYWxPYmplY3Qs
IGdsb2JhbE9iamVjdCwgaW1wbCk7Cit9CisKK1Rlc3RNaXhpbkludGVyZmFjZSogSlNUZXN0TWl4
aW5JbnRlcmZhY2U6OnRvV3JhcHBlZChKU0M6OlZNJiB2bSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQor
eworICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RNaXhpbkludGVy
ZmFjZSo+KHZtLCB2YWx1ZSkpCisgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwor
ICAgIHJldHVybiBudWxscHRyOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9u
MjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNaXhpbkludGVyZmFjZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNaXhpbkludGVyZmFj
ZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RNaXhpbkludGVyZmFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA0
IEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2Ug
cHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJp
bmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
ICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCisKKyNpbmNsdWRlICJKU0RPTVdy
YXBwZXIuaCIKKyNpbmNsdWRlICJUZXN0TWl4aW5JbnRlcmZhY2UuaCIKKyNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBKU1Rlc3RN
aXhpbkludGVyZmFjZSA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdE1peGluSW50ZXJmYWNlPiB7
CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTRE9NV3JhcHBlcjxUZXN0TWl4aW5JbnRlcmZh
Y2U+OworICAgIHN0YXRpYyBKU1Rlc3RNaXhpbkludGVyZmFjZSogY3JlYXRlKEpTQzo6U3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0
TWl4aW5JbnRlcmZhY2U+JiYgaW1wbCkKKyAgICB7CisgICAgICAgIEpTVGVzdE1peGluSW50ZXJm
YWNlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE1peGluSW50
ZXJmYWNlPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdE1peGluSW50ZXJmYWNlKHN0
cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CisgICAgICAgIHB0ci0+Zmlu
aXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICAgICAgcmV0dXJuIHB0cjsKKyAg
ICB9CisKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0m
LCBKU0RPTUdsb2JhbE9iamVjdCYpOworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5
cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CisgICAgc3RhdGljIFRlc3RNaXhpbklu
dGVyZmFjZSogdG9XcmFwcGVkKEpTQzo6Vk0mLCBKU0M6OkpTVmFsdWUpOworICAgIHN0YXRpYyB2
b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0
YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAg
eworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSwgSlNDOjpOb25BcnJheSk7CisgICAgfQorCisgICAgc3RhdGljIEpTQzo6SlNW
YWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCop
OworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRp
YyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAg
ICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50
bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNl
Rm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvckltcGwoSlNDOjpWTSYgdm0pOworICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2Vs
bCosIEpTQzo6SGVhcEFuYWx5emVyJik7CisKKyAgICAvLyBDdXN0b20gYXR0cmlidXRlcworICAg
IEpTQzo6SlNWYWx1ZSBtaXhpbkN1c3RvbUF0dHJpYnV0ZShKU0M6OkpTR2xvYmFsT2JqZWN0Jikg
Y29uc3Q7CisgICAgdm9pZCBzZXRNaXhpbkN1c3RvbUF0dHJpYnV0ZShKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiwgSlNDOjpKU1ZhbHVlKTsKKworICAgIC8vIEN1c3RvbSBmdW5jdGlvbnMKKyAgICBKU0M6
OkpTVmFsdWUgbWl4aW5DdXN0b21PcGVyYXRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6
Q2FsbEZyYW1lJik7Citwcm90ZWN0ZWQ6CisgICAgSlNUZXN0TWl4aW5JbnRlcmZhY2UoSlNDOjpT
dHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0TWl4aW5JbnRlcmZhY2U+JiYp
OworCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Cit9OworCitjbGFzcyBKU1Rl
c3RNaXhpbkludGVyZmFjZU93bmVyIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKK3B1
YmxpYzoKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpI
YW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYsIGNv
bnN0IGNoYXIqKik7CisgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6
VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOworfTsKKworaW5saW5lIEpTQzo6V2Vha0hhbmRsZU93
bmVyKiB3cmFwcGVyT3duZXIoRE9NV3JhcHBlcldvcmxkJiwgVGVzdE1peGluSW50ZXJmYWNlKikK
K3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SlNUZXN0TWl4aW5JbnRlcmZhY2VPd25lcj4g
b3duZXI7CisgICAgcmV0dXJuICZvd25lci5nZXQoKTsKK30KKworaW5saW5lIHZvaWQqIHdyYXBw
ZXJLZXkoVGVzdE1peGluSW50ZXJmYWNlKiB3cmFwcGFibGVPYmplY3QpCit7CisgICAgcmV0dXJu
IHdyYXBwYWJsZU9iamVjdDsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdE1peGluSW50ZXJmYWNlJik7CitpbmxpbmUg
SlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE1peGluSW50ZXJmYWNlKiBp
bXBsKSB7IHJldHVybiBpbXBsID8gdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmpl
Y3QsICppbXBsKSA6IEpTQzo6anNOdWxsKCk7IH0KK0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVh
dGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxUZXN0TWl4
aW5JbnRlcmZhY2U+JiYpOworaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFJlZlB0cjxUZXN0TWl4aW5JbnRlcmZhY2U+JiYgaW1wbCkgeyByZXR1
cm4gaW1wbCA/IHRvSlNOZXdseUNyZWF0ZWQobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2Jq
ZWN0LCBpbXBsLnJlbGVhc2VOb25OdWxsKCkpIDogSlNDOjpqc051bGwoKTsgfQorCit0ZW1wbGF0
ZTw+IHN0cnVjdCBKU0RPTVdyYXBwZXJDb252ZXJ0ZXJUcmFpdHM8VGVzdE1peGluSW50ZXJmYWNl
PiB7CisgICAgdXNpbmcgV3JhcHBlckNsYXNzID0gSlNUZXN0TWl4aW5JbnRlcmZhY2U7CisgICAg
dXNpbmcgVG9XcmFwcGVkUmV0dXJuVHlwZSA9IFRlc3RNaXhpbkludGVyZmFjZSo7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8
IEVOQUJMRShDb25kaXRpb24yMykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RQYXJ0aWFsTWl4aW5JbnRlcmZhY2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQYXJ0aWFsTWl4
aW5JbnRlcmZhY2UuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQYXJ0aWFsTWl4aW5JbnRlcmZhY2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNiBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGp1
c3QgdG8gdGVsbCBidWlsZCBzY3JpcHRzIHRoYXQgSlNUZXN0UGFydGlhbE1peGluSW50ZXJmYWNl
LmggYW5kCisgICAgSlNUZXN0UGFydGlhbE1peGluSW50ZXJmYWNlLmNwcCBhcmUgY3JlYXRlZCBm
b3IgVGVzdFBhcnRpYWxNaXhpbkludGVyZmFjZS5pZGwsIGFuZCB0aHVzCisgICAgcHJldmVudCB0
aGUgYnVpbGQgc2NyaXB0cyBmcm9tIHRyeWluZyB0byBnZW5lcmF0ZSBKU1Rlc3RQYXJ0aWFsTWl4
aW5JbnRlcmZhY2UuaCBhbmQKKyAgICBKU1Rlc3RQYXJ0aWFsTWl4aW5JbnRlcmZhY2UuY3BwIGF0
IGV2ZXJ5IGJ1aWxkLiBUaGlzIGZpbGUgbXVzdCBub3QgYmUgdHJpZWQgdG8gY29tcGlsZS4KKyov
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGFy
dGlhbE1peGluSW50ZXJmYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBhcnRpYWxNaXhpbkludGVyZmFjZS5oCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQ
YXJ0aWFsTWl4aW5JbnRlcmZhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYgQEAKKy8q
CisgICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBqdXN0IHRvIHRlbGwgYnVpbGQgc2NyaXB0cyB0
aGF0IEpTVGVzdFBhcnRpYWxNaXhpbkludGVyZmFjZS5oIGFuZAorICAgIEpTVGVzdFBhcnRpYWxN
aXhpbkludGVyZmFjZS5jcHAgYXJlIGNyZWF0ZWQgZm9yIFRlc3RQYXJ0aWFsTWl4aW5JbnRlcmZh
Y2UuaWRsLCBhbmQgdGh1cworICAgIHByZXZlbnQgdGhlIGJ1aWxkIHNjcmlwdHMgZnJvbSB0cnlp
bmcgdG8gZ2VuZXJhdGUgSlNUZXN0UGFydGlhbE1peGluSW50ZXJmYWNlLmggYW5kCisgICAgSlNU
ZXN0UGFydGlhbE1peGluSW50ZXJmYWNlLmNwcCBhdCBldmVyeSBidWlsZC4gVGhpcyBmaWxlIG11
c3Qgbm90IGJlIHRyaWVkIHRvIGNvbXBpbGUuCisqLwpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L0RvY3VtZW50T3JTaGFkb3dSb290U3R5bGVTaGVldHMuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudE9yU2hhZG93Um9vdFN0eWxlU2hlZXRzLmlkbAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRPclNoYWRvd1Jvb3RTdHlsZVNo
ZWV0cy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8v
IGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3NvbS8jZXh0ZW5zaW9ucy10by10aGUtZG9jdW1l
bnQtb3Itc2hhZG93LXJvb3QtaW50ZXJmYWNlCitwYXJ0aWFsIGludGVyZmFjZSBtaXhpbiBEb2N1
bWVudE9yU2hhZG93Um9vdCB7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFN0eWxlU2hlZXRMaXN0
IHN0eWxlU2hlZXRzOyAvLyBGSVhNRTogU2hvdWxkIGJlIFtTYW1lT2JqZWN0XS4KK307CisKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9yU2hhZG93Um9vdC5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3JTaGFkb3dSb290LmlkbAkocmV2aXNp
b24gMjY2NzEyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3JTaGFkb3dSb290Lmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMjYsMjIgKzI2LDIyIEBACiAKIC8vIGh0dHBzOi8vZG9tLnNw
ZWMud2hhdHdnLm9yZy8jZG9jdW1lbnRvcnNoYWRvd3Jvb3QKIGludGVyZmFjZSBtaXhpbiBEb2N1
bWVudE9yU2hhZG93Um9vdCB7Ci0gICAgLy8gRXh0ZW5zaW9ucyBmcm9tIFNoYWRvdyBET00gQVBJ
IChodHRwczovL3czYy5naXRodWIuaW8vd2ViY29tcG9uZW50cy9zcGVjL3NoYWRvdy8jZXh0ZW5z
aW9ucy10by10aGUtZG9jdW1lbnRvcnNoYWRvd3Jvb3QtbWl4aW4pLgotICAgIC8vIERPTVNlbGVj
dGlvbj8gZ2V0U2VsZWN0aW9uKCk7IC8vIEZJWE1FOiBXZSBjdXJyZW50bHkgaGF2ZSB0aGlzIG9u
IERvY3VtZW50IG9ubHkuCi0gICAgRWxlbWVudD8gZWxlbWVudEZyb21Qb2ludChkb3VibGUgeCwg
ZG91YmxlIHkpOwotICAgIHNlcXVlbmNlPEVsZW1lbnQ+IGVsZW1lbnRzRnJvbVBvaW50KGRvdWJs
ZSB4LCBkb3VibGUgeSk7Ci0gICAgLy8gQ2FyZXRQb3NpdGlvbj8gY2FyZXRQb3NpdGlvbkZyb21Q
b2ludChkb3VibGUgeCwgZG91YmxlIHkpOyAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCisgICAg
Ly8gRXh0ZW5zaW9ucyBmcm9tIEhUTUwgKGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVs
dGlwYWdlL2RvbS5odG1sI2RvY3VtZW50b3JzaGFkb3dyb290KQogICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBFbGVtZW50PyBhY3RpdmVFbGVtZW50OwogCi0gICAgLy8gRXh0ZW5zaW9ucyBmcm9tIHRo
ZSBDU1NPTSBzcGVjaWZpY2F0aW9uIChodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20vI2V4
dGVuc2lvbnMtdG8tdGhlLWRvY3VtZW50LWludGVyZmFjZSkuCi0gICAgcmVhZG9ubHkgYXR0cmli
dXRlIFN0eWxlU2hlZXRMaXN0IHN0eWxlU2hlZXRzOyAvLyBGSVhNRTogU2hvdWxkIGJlIFtTYW1l
T2JqZWN0XS4KLQotICAgIC8vIEV4dGVuc2lvbnMgZnJvbSBQb2ludGVyIExvY2sgQVBJIChodHRw
czovL3czYy5naXRodWIuaW8vcG9pbnRlcmxvY2svI2V4dGVuc2lvbnMtdG8tdGhlLWRvY3VtZW50
b3JzaGFkb3dyb290LW1peGluKS4KLSAgICBbQ29uZGl0aW9uYWw9UE9JTlRFUl9MT0NLXSByZWFk
b25seSBhdHRyaWJ1dGUgRWxlbWVudD8gcG9pbnRlckxvY2tFbGVtZW50OworICAgIC8vIEZJWE1F
OiBnZXRTZWxlY3Rpb24gaXMgY3VycmVudGx5IGRlZmluZWQgb25seSB0byBiZSBvbiBEb2N1bWVu
dCBpbiB0aGUgU2VsZWN0aW9uIEFQSSBzcGVjCisgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlv
L3NlbGVjdGlvbi1hcGkvI2V4dGVuc2lvbnMtdG8tZG9jdW1lbnQtaW50ZXJmYWNlLCBidXQKKyAg
ICAvLyBwcmV2aW91c2x5IGhhZCBiZWVuIGRlZmluZWQgdG8gYmUgb24gRG9jdW1lbnRPclNoYWRv
d1Jvb3QgaW4gdGhlIGRlcHJlY2F0ZWQgU2hhZG93IERPTSBzcGVjCisgICAgLy8gaHR0cHM6Ly93
M2MuZ2l0aHViLmlvL3dlYmNvbXBvbmVudHMvc3BlYy9zaGFkb3cvI2V4dGVuc2lvbnMtdG8tdGhl
LWRvY3VtZW50b3JzaGFkb3dyb290LW1peGluLgorICAgIC8vIFdlIHNob3VsZCBnZXQgdGhpcyBy
ZXNvbHZlZCBpbiB0aGUgU2VsZWN0aW9uIEFQSSBzcGVjIGFuZCBtb3ZlIHRoaXMgdG8gdGhlIGNv
cnJlY3QgSURMIGZpbGVzLgorICAgIC8vIERPTVNlbGVjdGlvbj8gZ2V0U2VsZWN0aW9uKCk7CiAK
LSAgICAvLyBFeHRlbnNpb25zIGZyb20gUGljdHVyZS1pbi1QaWN0dXJlIEFQSSAoaHR0cHM6Ly93
aWNnLmdpdGh1Yi5pby9waWN0dXJlLWluLXBpY3R1cmUvI2RvY3VtZW50b3JzaGFkb3dyb290LWV4
dGVuc2lvbikKLSAgICBbQ29uZGl0aW9uYWw9UElDVFVSRV9JTl9QSUNUVVJFX0FQSSwgRW5hYmxl
ZEJ5U2V0dGluZz1QaWN0dXJlSW5QaWN0dXJlQVBJXSByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVu
dD8gcGljdHVyZUluUGljdHVyZUVsZW1lbnQ7Ci0KLSAgICAvLyBFeHRlbnNpb24gZnJvbSBXZWIg
QW5pbWF0aW9ucyBBUEkgKGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy93ZWItYW5pbWF0aW9ucy0x
LyNleHRlbnNpb25zLXRvLXRoZS1kb2N1bWVudG9yc2hhZG93cm9vdC1pbnRlcmZhY2UtbWl4aW4p
Ci0gICAgW0VuYWJsZWRBdFJ1bnRpbWU9V2ViQW5pbWF0aW9uc10gc2VxdWVuY2U8V2ViQW5pbWF0
aW9uPiBnZXRBbmltYXRpb25zKCk7CisgICAgLy8gRklYTUU6IFRoZXNlIGFyZSBjdXJyZW50bHkg
ZGVmaW5lZCBvbmx5IHRvIGJlIG9uIERvY3VtZW50IGluIHRoZSBDU1NPTSBzcGVjCisgICAgLy8g
aHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzc29tLXZpZXcvI2V4dGVuc2lvbnMtdG8tdGhlLWRv
Y3VtZW50LWludGVyZmFjZSwgYnV0CisgICAgLy8gcHJldmlvdXNseSBoYWQgYmVlbiBkZWZpbmVk
IHRvIGJlIG9uIERvY3VtZW50T3JTaGFkb3dSb290IGluIHRoZSBkZXByZWNhdGVkIFNoYWRvdyBE
T00gc3BlYworICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJjb21wb25lbnRzL3NwZWMv
c2hhZG93LyNleHRlbnNpb25zLXRvLXRoZS1kb2N1bWVudG9yc2hhZG93cm9vdC1taXhpbi4KKyAg
ICAvLyBXZSBzaG91bGQgZ2V0IHRoaXMgcmVzb2x2ZWQgaW4gdGhlIENTU09NIHNwZWMgYW5kIG1v
dmUgdGhlc2UgdG8gdGhlIGNvcnJlY3QgSURMIGZpbGVzLgorICAgIEVsZW1lbnQ/IGVsZW1lbnRG
cm9tUG9pbnQoZG91YmxlIHgsIGRvdWJsZSB5KTsKKyAgICBzZXF1ZW5jZTxFbGVtZW50PiBlbGVt
ZW50c0Zyb21Qb2ludChkb3VibGUgeCwgZG91YmxlIHkpOworICAgIC8vIENhcmV0UG9zaXRpb24/
IGNhcmV0UG9zaXRpb25Gcm9tUG9pbnQoZG91YmxlIHgsIGRvdWJsZSB5KTsgLy8gRklYTUU6IElt
cGxlbWVudCB0aGlzLgogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9yU2hh
ZG93Um9vdFBvaW50ZXJMb2NrLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRPclNoYWRvd1Jvb3RQb2ludGVyTG9jay5pZGwJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3JTaGFkb3dSb290UG9pbnRlckxvY2suaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBodHRwczovL3czYy5n
aXRodWIuaW8vcG9pbnRlcmxvY2svI2V4dGVuc2lvbnMtdG8tdGhlLWRvY3VtZW50b3JzaGFkb3dy
b290LW1peGluCitbCisgICAgQ29uZGl0aW9uYWw9UE9JTlRFUl9MT0NLCitdIHBhcnRpYWwgaW50
ZXJmYWNlIG1peGluIERvY3VtZW50T3JTaGFkb3dSb290IHsKKyAgICByZWFkb25seSBhdHRyaWJ1
dGUgRWxlbWVudD8gcG9pbnRlckxvY2tFbGVtZW50OworfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408237</attachid>
            <date>2020-09-08 10:15:01 -0700</date>
            <delta_ts>2020-09-08 10:38:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216255-20200908101500.patch</filename>
            <type>text/plain</type>
            <size>172897</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NjcyNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTA5LTA3ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViSURMXSBBZGQgc3VwcG9ydCBm
b3IgcGFydGlhbCBpbnRlcmZhY2UgbWl4aW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTYyNTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBbV0lQXQorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3IucG06CisgICAgICAgIChQcm9jZXNzSW50ZXJmYWNlU3VwcGxlbWVudGFsRGVwZW5kZW5j
aWVzKToKKyAgICAgICAgKFByb2Nlc3NEaWN0aW9uYXJ5U3VwcGxlbWVudGFsRGVwZW5kZW5jaWVz
KToKKyAgICAgICAgKHNob3VsZFByb3BlcnR5QmVFeHBvc2VkKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbDoKKyAgICAgICAgKGdldFBhcnRpYWxOYW1lc0Zy
b21JREwpOgorCisgICAgICAgICogY3NzL0RvY3VtZW50T3JTaGFkb3dSb290U3R5bGVTaGVldHMu
aWRsOiBBZGRlZC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnRPclNoYWRvd1Jvb3QuaWRsOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudE9yU2hhZG93Um9vdFBvaW50ZXJMb2NrLmlkbDogQWRkZWQuCisg
ICAgICAgICogTW9kdWxlcy9waWN0dXJlaW5waWN0dXJlL0RvY3VtZW50T3JTaGFkb3dSb290UGlj
dHVyZUluUGljdHVyZS5pZGw6IEFkZGVkLgorICAgICAgICAqIGFuaW1hdGlvbi9Eb2N1bWVudE9y
U2hhZG93Um9vdEFuaW1hdGlvbnMuaWRsOiBBZGRlZC4KKworICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmNwcDoKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5oOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmNsdWRlcy5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluY2x1ZGVzLmg6
IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVy
ZmFjZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVy
ZmFjZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNaXhpbklu
dGVyZmFjZS5jcHA6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RNaXhpbkludGVyZmFjZS5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0UGFydGlhbE1peGluSW50ZXJmYWNlLmNwcDogQWRkZWQuCisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBhcnRpYWxNaXhpbkludGVyZmFjZS5o
OiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxlbWVudGFsRGVw
ZW5kZW5jaWVzLmRlcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENvbmRp
dGlvbmFsSW5jbHVkZXMuaWRsOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0
SW5jbHVkZXMuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9U
ZXN0SW50ZXJmYWNlLmlkbDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE1p
eGluSW50ZXJmYWNlLmlkbDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Rlc3RPYmouaWRsOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0UGFydGlh
bE1peGluSW50ZXJmYWNlLmlkbDogQWRkZWQuCisKIDIwMjAtMDktMDggIFphbGFuIEJ1anRhcyAg
PHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIFJlbW92ZSByZWR1bmRhbnQg
Rm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6bGluZURlc2NlbnROZWVkc0NvbGxhcHNpbmcKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyNjY3MjcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNDI3LDYgKzQyNyw3IEBAIHNldChX
ZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAgTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXlt
ZW50U2hpcHBpbmdUeXBlLmlkbAogICAgIE1vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFZh
bGlkYXRpb25FcnJvcnMuaWRsCiAKKyAgICBNb2R1bGVzL3BpY3R1cmVpbnBpY3R1cmUvRG9jdW1l
bnRPclNoYWRvd1Jvb3RQaWN0dXJlSW5QaWN0dXJlLmlkbAogICAgIE1vZHVsZXMvcGljdHVyZWlu
cGljdHVyZS9Eb2N1bWVudFBpY3R1cmVJblBpY3R1cmUuaWRsCiAgICAgTW9kdWxlcy9waWN0dXJl
aW5waWN0dXJlL0VudGVyUGljdHVyZUluUGljdHVyZUV2ZW50LmlkbAogICAgIE1vZHVsZXMvcGlj
dHVyZWlucGljdHVyZS9IVE1MVmlkZW9FbGVtZW50UGljdHVyZUluUGljdHVyZS5pZGwKQEAgLTY0
MSw2ICs2NDIsNyBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAgIGFuaW1hdGlv
bi9Db21wb3NpdGVPcGVyYXRpb24uaWRsCiAgICAgYW5pbWF0aW9uL0NvbXBvc2l0ZU9wZXJhdGlv
bk9yQXV0by5pZGwKICAgICBhbmltYXRpb24vQ29tcHV0ZWRFZmZlY3RUaW1pbmcuaWRsCisgICAg
YW5pbWF0aW9uL0RvY3VtZW50T3JTaGFkb3dSb290QW5pbWF0aW9ucy5pZGwKICAgICBhbmltYXRp
b24vRG9jdW1lbnRUaW1lbGluZS5pZGwKICAgICBhbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZU9w
dGlvbnMuaWRsCiAgICAgYW5pbWF0aW9uL0ZpbGxNb2RlLmlkbApAQCAtNzAwLDYgKzcwMiw3IEBA
IHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAgY3NzL0NTU1N0eWxlU2hlZXQuaWRs
CiAgICAgY3NzL0NTU1N1cHBvcnRzUnVsZS5pZGwKICAgICBjc3MvQ1NTVW5rbm93blJ1bGUuaWRs
CisgICAgY3NzL0RvY3VtZW50T3JTaGFkb3dSb290U3R5bGVTaGVldHMuaWRsCiAgICAgY3NzL0RP
TUNTU0N1c3RvbVByb3BlcnR5RGVzY3JpcHRvci5pZGwKICAgICBjc3MvRE9NQ1NTTmFtZXNwYWNl
LmlkbAogICAgIGNzcy9ET01DU1NQYWludFdvcmtsZXQuaWRsCkBAIC03NzMsNiArNzc2LDcgQEAg
c2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBkb20vRG9jdW1lbnRGcmFnbWVudC5p
ZGwKICAgICBkb20vRG9jdW1lbnRGdWxsc2NyZWVuLmlkbAogICAgIGRvbS9Eb2N1bWVudE9yU2hh
ZG93Um9vdC5pZGwKKyAgICBkb20vRG9jdW1lbnRPclNoYWRvd1Jvb3RQb2ludGVyTG9jay5pZGwK
ICAgICBkb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmlkbAogICAgIGRvbS9Eb2N1bWVudFRvdWNo
LmlkbAogICAgIGRvbS9Eb2N1bWVudFR5cGUuaWRsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QJKHJldmlzaW9uIDI2NjcyNykKKysrIFNv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QJKHdvcmtpbmcgY29w
eSkKQEAgLTI1NSw2ICsyNTUsNyBAQCAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3BheW1lbnRyZXF1
ZXN0L1BhCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRTaGlw
cGluZ09wdGlvbi5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5
bWVudFNoaXBwaW5nVHlwZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvcGF5bWVudHJlcXVl
c3QvUGF5bWVudFZhbGlkYXRpb25FcnJvcnMuaWRsCiskKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3Bp
Y3R1cmVpbnBpY3R1cmUvRG9jdW1lbnRPclNoYWRvd1Jvb3RQaWN0dXJlSW5QaWN0dXJlLmlkbAog
JChQUk9KRUNUX0RJUikvTW9kdWxlcy9waWN0dXJlaW5waWN0dXJlL0RvY3VtZW50UGljdHVyZUlu
UGljdHVyZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvcGljdHVyZWlucGljdHVyZS9FbnRl
clBpY3R1cmVJblBpY3R1cmVFdmVudC5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvcGljdHVy
ZWlucGljdHVyZS9IVE1MVmlkZW9FbGVtZW50UGljdHVyZUluUGljdHVyZS5pZGwKQEAgLTUzNCw2
ICs1MzUsNyBAQCAkKFBST0pFQ1RfRElSKS9hbmltYXRpb24vQ1NTVHJhbnNpdGlvbi5pCiAkKFBS
T0pFQ1RfRElSKS9hbmltYXRpb24vQ29tcG9zaXRlT3BlcmF0aW9uLmlkbAogJChQUk9KRUNUX0RJ
UikvYW5pbWF0aW9uL0NvbXBvc2l0ZU9wZXJhdGlvbk9yQXV0by5pZGwKICQoUFJPSkVDVF9ESVIp
L2FuaW1hdGlvbi9Db21wdXRlZEVmZmVjdFRpbWluZy5pZGwKKyQoUFJPSkVDVF9ESVIpL2FuaW1h
dGlvbi9Eb2N1bWVudE9yU2hhZG93Um9vdEFuaW1hdGlvbnMuaWRsCiAkKFBST0pFQ1RfRElSKS9h
bmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5pZGwKICQoUFJPSkVDVF9ESVIpL2FuaW1hdGlvbi9E
b2N1bWVudFRpbWVsaW5lT3B0aW9ucy5pZGwKICQoUFJPSkVDVF9ESVIpL2FuaW1hdGlvbi9FZmZl
Y3RUaW1pbmcuaWRsCkBAIC02MTYsNiArNjE4LDcgQEAgJChQUk9KRUNUX0RJUikvY3NzL0RlcHJl
Y2F0ZWRDU1NPTVJHQkNvbAogJChQUk9KRUNUX0RJUikvY3NzL0RlcHJlY2F0ZWRDU1NPTVJlY3Qu
aWRsCiAkKFBST0pFQ1RfRElSKS9jc3MvRGVwcmVjYXRlZENTU09NVmFsdWUuaWRsCiAkKFBST0pF
Q1RfRElSKS9jc3MvRGVwcmVjYXRlZENTU09NVmFsdWVMaXN0LmlkbAorJChQUk9KRUNUX0RJUikv
Y3NzL0RvY3VtZW50T3JTaGFkb3dSb290U3R5bGVTaGVldHMuaWRsCiAkKFBST0pFQ1RfRElSKS9j
c3MvRWxlbWVudENTU0lubGluZVN0eWxlLmlkbAogJChQUk9KRUNUX0RJUikvY3NzL0ZvbnRGYWNl
LmlkbAogJChQUk9KRUNUX0RJUikvY3NzL0ZvbnRGYWNlU2V0LmlkbApAQCAtNjkxLDYgKzY5NCw3
IEBAICQoUFJPSkVDVF9ESVIpL2RvbS9Eb2N1bWVudEFuZEVsZW1lbnRFdmUKICQoUFJPSkVDVF9E
SVIpL2RvbS9Eb2N1bWVudEZyYWdtZW50LmlkbAogJChQUk9KRUNUX0RJUikvZG9tL0RvY3VtZW50
RnVsbHNjcmVlbi5pZGwKICQoUFJPSkVDVF9ESVIpL2RvbS9Eb2N1bWVudE9yU2hhZG93Um9vdC5p
ZGwKKyQoUFJPSkVDVF9ESVIpL2RvbS9Eb2N1bWVudE9yU2hhZG93Um9vdFBvaW50ZXJMb2NrLmlk
bAogJChQUk9KRUNUX0RJUikvZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5pZGwKICQoUFJPSkVD
VF9ESVIpL2RvbS9Eb2N1bWVudFRvdWNoLmlkbAogJChQUk9KRUNUX0RJUikvZG9tL0RvY3VtZW50
VHlwZS5pZGwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1
dC54Y2ZpbGVsaXN0CShyZXZpc2lvbiAyNjY3MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAkod29ya2luZyBjb3B5KQpAQCAtNTQ0LDYgKzU0NCwx
NCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RvY3VtZW50RnVsbHNjcmVlbi5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RvY3VtZW50
T3JTaGFkb3dSb290LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNEb2N1bWVudE9yU2hhZG93Um9vdC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RvY3VtZW50T3JTaGFkb3dSb290QW5pbWF0aW9ucy5jcHAK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRG9jdW1lbnRP
clNoYWRvd1Jvb3RBbmltYXRpb25zLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTRG9jdW1lbnRPclNoYWRvd1Jvb3RQaWN0dXJlSW5QaWN0dXJlLmNwcAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEb2N1bWVudE9y
U2hhZG93Um9vdFBpY3R1cmVJblBpY3R1cmUuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNEb2N1bWVudE9yU2hhZG93Um9vdFBvaW50ZXJMb2NrLmNwcAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEb2N1bWVudE9y
U2hhZG93Um9vdFBvaW50ZXJMb2NrLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTRG9jdW1lbnRPclNoYWRvd1Jvb3RTdHlsZVNoZWV0cy5jcHAKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRG9jdW1lbnRPclNoYWRv
d1Jvb3RTdHlsZVNoZWV0cy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0RvY3VtZW50UGljdHVyZUluUGljdHVyZS5jcHAKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRG9jdW1lbnRQaWN0dXJlSW5QaWN0dXJlLmgK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRG9jdW1lbnRT
dG9yYWdlQWNjZXNzLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZp
c2lvbiAyNjY3MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNTMsNiArMzUzLDcgQEAgSlNfQklORElOR19JRExTID0gXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50U2hpcHBpbmdPcHRpb24uaWRs
IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFNoaXBwaW5n
VHlwZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50
VmFsaWRhdGlvbkVycm9ycy5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9waWN0dXJlaW5w
aWN0dXJlL0RvY3VtZW50T3JTaGFkb3dSb290UGljdHVyZUluUGljdHVyZS5pZGwgXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9waWN0dXJlaW5waWN0dXJlL0RvY3VtZW50UGljdHVyZUluUGljdHVy
ZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9waWN0dXJlaW5waWN0dXJlL0VudGVyUGlj
dHVyZUluUGljdHVyZUV2ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3BpY3R1cmVp
bnBpY3R1cmUvSFRNTFZpZGVvRWxlbWVudFBpY3R1cmVJblBpY3R1cmUuaWRsIFwKQEAgLTU5OCw2
ICs1OTksNyBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9hbmltYXRpb24v
Q29tcG9zaXRlT3BlcmF0aW9uLmlkbCBcCiAgICAgJChXZWJDb3JlKS9hbmltYXRpb24vQ29tcG9z
aXRlT3BlcmF0aW9uT3JBdXRvLmlkbCBcCiAgICAgJChXZWJDb3JlKS9hbmltYXRpb24vQ29tcHV0
ZWRFZmZlY3RUaW1pbmcuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2FuaW1hdGlvbi9Eb2N1bWVudE9y
U2hhZG93Um9vdEFuaW1hdGlvbnMuaWRsIFwKICAgICAkKFdlYkNvcmUpL2FuaW1hdGlvbi9Eb2N1
bWVudFRpbWVsaW5lLmlkbCBcCiAgICAgJChXZWJDb3JlKS9hbmltYXRpb24vRG9jdW1lbnRUaW1l
bGluZU9wdGlvbnMuaWRsIFwKICAgICAkKFdlYkNvcmUpL2FuaW1hdGlvbi9FZmZlY3RUaW1pbmcu
aWRsIFwKQEAgLTY1NCw2ICs2NTYsNyBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJD
b3JlKS9jc3MvQ1NTU3R5bGVTaGVldC5pZGwgXAogICAgICQoV2ViQ29yZSkvY3NzL0NTU1N1cHBv
cnRzUnVsZS5pZGwgXAogICAgICQoV2ViQ29yZSkvY3NzL0NTU1Vua25vd25SdWxlLmlkbCBcCisg
ICAgJChXZWJDb3JlKS9jc3MvRG9jdW1lbnRPclNoYWRvd1Jvb3RTdHlsZVNoZWV0cy5pZGwgXAog
ICAgICQoV2ViQ29yZSkvY3NzL0RPTUNTU0N1c3RvbVByb3BlcnR5RGVzY3JpcHRvci5pZGwgXAog
ICAgICQoV2ViQ29yZSkvY3NzL0RPTUNTU05hbWVzcGFjZS5pZGwgXAogICAgICQoV2ViQ29yZSkv
Y3NzL0RPTUNTU1BhaW50V29ya2xldC5pZGwgXApAQCAtNzI0LDYgKzcyNyw3IEBAIEpTX0JJTkRJ
TkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL2RvbS9Eb2N1bWVudEZ1bGxzY3JlZW4uaWRsIFwK
ICAgICAkKFdlYkNvcmUpL2RvbS9Eb2N1bWVudEZyYWdtZW50LmlkbCBcCiAgICAgJChXZWJDb3Jl
KS9kb20vRG9jdW1lbnRPclNoYWRvd1Jvb3QuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2RvbS9Eb2N1
bWVudE9yU2hhZG93Um9vdFBvaW50ZXJMb2NrLmlkbCBcCiAgICAgJChXZWJDb3JlKS9kb20vRG9j
dW1lbnRTdG9yYWdlQWNjZXNzLmlkbCBcCiAgICAgJChXZWJDb3JlKS9kb20vRG9jdW1lbnRUeXBl
LmlkbCBcCiAgICAgJChXZWJDb3JlKS9kb20vRHJhZ0V2ZW50LmlkbCBcCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3BpY3R1cmVpbnBpY3R1cmUvRG9jdW1lbnRPclNoYWRvd1Jvb3RQaWN0
dXJlSW5QaWN0dXJlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Bp
Y3R1cmVpbnBpY3R1cmUvRG9jdW1lbnRPclNoYWRvd1Jvb3RQaWN0dXJlSW5QaWN0dXJlLmlkbAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BpY3R1cmVpbnBpY3R1cmUv
RG9jdW1lbnRPclNoYWRvd1Jvb3RQaWN0dXJlSW5QaWN0dXJlLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3Bp
Y3R1cmUtaW4tcGljdHVyZS8jZG9jdW1lbnRvcnNoYWRvd3Jvb3QtZXh0ZW5zaW9uCitbCisgICAg
Q29uZGl0aW9uYWw9UElDVFVSRV9JTl9QSUNUVVJFX0FQSSwKKyAgICBFbmFibGVkQnlTZXR0aW5n
PVBpY3R1cmVJblBpY3R1cmVBUEkKK10gcGFydGlhbCBpbnRlcmZhY2UgbWl4aW4gRG9jdW1lbnRP
clNoYWRvd1Jvb3QgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50PyBwaWN0dXJlSW5Q
aWN0dXJlRWxlbWVudDsKK307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNjY3MjcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTEwMTI2LDYgKzEwMTI2LDEwIEBACiAJCTdDMzMwQTA1MURGOUY5NTEwMEQzMzk1QyAvKiBKU1Bv
c2l0aW9uT3B0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1Bvc2l0aW9uT3B0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMzMw
QTA2MURGOUY5NTEwMEQzMzk1QyAvKiBKU1Bvc2l0aW9uT3B0aW9ucy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1Bvc2l0aW9uT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QzMzRjM2MDFCNEEwNTA0MDA1MDJDQUYgLyogSlNEb2N1bWVudEZyYWdt
ZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRG9j
dW1lbnRGcmFnbWVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdD
MzY1NTY5MjUwNkREQjcwMEE3ODgyQiAvKiBEb2N1bWVudE9yU2hhZG93Um9vdFN0eWxlU2hlZXRz
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBEb2N1bWVudE9yU2hhZG93Um9vdFN0eWxlU2hlZXRzLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MzNjU1NkMyNTA2REU5QzAwQTc4ODJCIC8qIERvY3VtZW50
T3JTaGFkb3dSb290UG9pbnRlckxvY2suaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERvY3VtZW50T3JTaGFkb3dSb290UG9p
bnRlckxvY2suaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzM2NTU2RTI1MDZE
Rjk5MDBBNzg4MkIgLyogRG9jdW1lbnRPclNoYWRvd1Jvb3RQaWN0dXJlSW5QaWN0dXJlLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBEb2N1bWVudE9yU2hhZG93Um9vdFBpY3R1cmVJblBpY3R1cmUuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3QzM2NTU3MDI1MDZFMEE3MDBBNzg4MkIgLyogRG9jdW1lbnRP
clNoYWRvd1Jvb3RBbmltYXRpb25zLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBEb2N1bWVudE9yU2hhZG93Um9vdEFuaW1h
dGlvbnMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzM4MDZEQjI1MDVCMTg5
MDA3NDRBN0IgLyogQW5pbWF0aW9uRnJhbWVQcm92aWRlci5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gQW5pbWF0aW9uRnJhbWVQcm92aWRlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdDM0E5MUU1MUM5NjNCODgwMEQxQTdFMyAvKiBDbGlwYm9hcmRBY2Nlc3NQb2xpY3ku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xpcGJvYXJkQWNjZXNzUG9saWN5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDM0I3OTZGMTkwODc1N0IwMEI0N0Ey
RCAvKiBVc2VyTWVzc2FnZUhhbmRsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gVXNlck1lc3NhZ2VIYW5kbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE4MzUxLDYgKzE4MzU1LDcgQEAKIAkJMURFRjA2QTIyMzNDMzJEQjAwRUUyMjhEIC8q
IHBpY3R1cmVpbnBpY3R1cmUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAorCQkJCTdDMzY1NTZFMjUwNkRGOTkwMEE3ODgyQiAvKiBEb2N1bWVudE9yU2hhZG93Um9v
dFBpY3R1cmVJblBpY3R1cmUuaWRsICovLAogCQkJCTFERUYwNkRDMjMzRDJFMUMwMEVFMjI4RCAv
KiBEb2N1bWVudFBpY3R1cmVJblBpY3R1cmUuY3BwICovLAogCQkJCTFERUYwNkREMjMzRDJFMUMw
MEVFMjI4RCAvKiBEb2N1bWVudFBpY3R1cmVJblBpY3R1cmUuaCAqLywKIAkJCQkxREVGMDZERTIz
M0QyRTFDMDBFRTIyOEQgLyogRG9jdW1lbnRQaWN0dXJlSW5QaWN0dXJlLmlkbCAqLywKQEAgLTIx
ODA5LDYgKzIxODE0LDcgQEAKIAkJCQk3MTIzQzE4NTIwNDczOUI5MDA3ODkzOTIgLyogQ1NTVHJh
bnNpdGlvbi5pZGwgKi8sCiAJCQkJNzE1QUQ3MUYyMDUwNTEyNDAwRDU5MkRDIC8qIERlY2xhcmF0
aXZlQW5pbWF0aW9uLmNwcCAqLywKIAkJCQk3MTVBRDcxRDIwNTA1MTI0MDBENTkyREMgLyogRGVj
bGFyYXRpdmVBbmltYXRpb24uaCAqLywKKwkJCQk3QzM2NTU3MDI1MDZFMEE3MDBBNzg4MkIgLyog
RG9jdW1lbnRPclNoYWRvd1Jvb3RBbmltYXRpb25zLmlkbCAqLywKIAkJCQk3MTAyNUVDNDFGOTlG
MDk2MDA0QTI1MEMgLyogRG9jdW1lbnRUaW1lbGluZS5jcHAgKi8sCiAJCQkJNzEwMjVFQzUxRjk5
RjA5NjAwNEEyNTBDIC8qIERvY3VtZW50VGltZWxpbmUuaCAqLywKIAkJCQk3MTAyNUVDQTFGOTlG
MDk2MDA0QTI1MEMgLyogRG9jdW1lbnRUaW1lbGluZS5pZGwgKi8sCkBAIC0yODYzOCw2ICsyODY0
NCw3IEBACiAJCQkJOTQ3OTQ5MjcxRTAzMTMyMDAwMDE4RDg1IC8qIERlcHJlY2F0ZWRDU1NPTVZh
bHVlTGlzdC5oICovLAogCQkJCUE4RDA2NTFDMEEyM0MxRkUwMDVFNzIwMyAvKiBEZXByZWNhdGVk
Q1NTT01WYWx1ZUxpc3QuaWRsICovLAogCQkJCTBGQTBBMEU1MjNBRUFBMzUwMDBFRUI5NCAvKiBk
aWFsb2cuY3NzICovLAorCQkJCTdDMzY1NTY5MjUwNkREQjcwMEE3ODgyQiAvKiBEb2N1bWVudE9y
U2hhZG93Um9vdFN0eWxlU2hlZXRzLmlkbCAqLywKIAkJCQk0QkRBM0ZGODIxNTFCNkYyMDBGRDY2
MDQgLyogRE9NQ1NTQ3VzdG9tUHJvcGVydHlEZXNjcmlwdG9yLmggKi8sCiAJCQkJNEJEQTNGRkEy
MTUxQjZGMzAwRkQ2NjA0IC8qIERPTUNTU0N1c3RvbVByb3BlcnR5RGVzY3JpcHRvci5pZGwgKi8s
CiAJCQkJRkQ2Nzc3MzUxOTVDQUIyMDAwNzJFMEQzIC8qIERPTUNTU05hbWVzcGFjZS5jcHAgKi8s
CkBAIC0yOTE4Nyw2ICsyOTE5NCw3IEBACiAJCQkJQ0UwNTdGQTMxMjIwNzMxMTAwQTQ3NkQ1IC8q
IERvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAgKi8sCiAJCQkJQ0UwNTdGQTQxMjIwNzMxMTAw
QTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5oICovLAogCQkJCTlCMEZFODczMUQ5
RTAyREYwMDRBOEFDQiAvKiBEb2N1bWVudE9yU2hhZG93Um9vdC5pZGwgKi8sCisJCQkJN0MzNjU1
NkMyNTA2REU5QzAwQTc4ODJCIC8qIERvY3VtZW50T3JTaGFkb3dSb290UG9pbnRlckxvY2suaWRs
ICovLAogCQkJCUE4QzIyODBEMTFENEE1OTcwMEQ1QTdEMyAvKiBEb2N1bWVudFBhcnNlci5jcHAg
Ki8sCiAJCQkJQkNDRkJBRTcwQjUxNTJFRDAwMDFGMUQ3IC8qIERvY3VtZW50UGFyc2VyLmggKi8s
CiAJCQkJQUQ2RTcxQUExNjY4ODk5RDAwMzIwQzEzIC8qIERvY3VtZW50U2hhcmVkT2JqZWN0UG9v
bC5jcHAgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRPclNoYWRv
d1Jvb3RBbmltYXRpb25zLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vRG9jdW1lbnRPclNoYWRvd1Jvb3RBbmltYXRpb25zLmlkbAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRPclNoYWRvd1Jvb3RBbmltYXRpb25zLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gaHR0cHM6
Ly9kcmFmdHMuY3Nzd2cub3JnL3dlYi1hbmltYXRpb25zLTEvI2V4dGVuc2lvbnMtdG8tdGhlLWRv
Y3VtZW50b3JzaGFkb3dyb290LWludGVyZmFjZS1taXhpbgorWworICAgIEVuYWJsZWRBdFJ1bnRp
bWU9V2ViQW5pbWF0aW9ucworXSBwYXJ0aWFsIGludGVyZmFjZSBtaXhpbiBEb2N1bWVudE9yU2hh
ZG93Um9vdCB7CisgICAgc2VxdWVuY2U8QW5pbWF0aW9uPiBnZXRBbmltYXRpb25zKCk7Cit9OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ci5wbQkocmV2aXNpb24gMjY2NzI3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsNiArMTk2LDMxIEBAIHN1
YiBQcm9jZXNzRG9jdW1lbnQKICAgICBkaWUgIlByb2Nlc3NpbmcgZG9jdW1lbnQgIiAuICR1c2VE
b2N1bWVudC0+ZmlsZU5hbWUgLiAiIGRpZCBub3QgZ2VuZXJhdGUgYW55dGhpbmcuIjsKIH0KIAor
c3ViIEdlbmVyYXRlRW1wdHlIZWFkZXJBbmRDcHAKK3sKKyAgICBteSAoJG9iamVjdCwgJHVzZURv
Y3VtZW50LCAkY29kZUdlbmVyYXRvcikgPSBAXzsKKworICAgIG15ICR0YXJnZXROYW1lID0gZmls
ZXBhcnNlKCR1c2VEb2N1bWVudC0+ZmlsZU5hbWUsICIuaWRsIik7CisgICAgbXkgJHByZWZpeCA9
ICRjb2RlR2VuZXJhdG9yLT5GaWxlTmFtZVByZWZpeCgpOworCisgICAgbXkgJGhlYWRlck5hbWUg
PSAiJHtwcmVmaXh9JHt0YXJnZXROYW1lfS5oIjsKKyAgICBteSAkY3BwTmFtZSA9ICIke3ByZWZp
eH0ke3RhcmdldE5hbWV9LmNwcCI7CisgICAgbXkgJGNvbnRlbnRzID0gIi8qCisgICAgVGhpcyBm
aWxlIGlzIGdlbmVyYXRlZCBqdXN0IHRvIHRlbGwgYnVpbGQgc2NyaXB0cyB0aGF0ICR7aGVhZGVy
TmFtZX0gYW5kCisgICAgJHtjcHBOYW1lfSBhcmUgY3JlYXRlZCBmb3IgJHt0YXJnZXROYW1lfS5p
ZGwsIGFuZCB0aHVzCisgICAgcHJldmVudCB0aGUgYnVpbGQgc2NyaXB0cyBmcm9tIHRyeWluZyB0
byBnZW5lcmF0ZSAke2hlYWRlck5hbWV9IGFuZAorICAgICR7Y3BwTmFtZX0gYXQgZXZlcnkgYnVp
bGQuIFRoaXMgZmlsZSBtdXN0IG5vdCBiZSB0cmllZCB0byBjb21waWxlLgorKi8KKyI7CisgICAg
b3BlbiBGSCwgIj4gJHt1c2VPdXRwdXRIZWFkZXJzRGlyfS8ke2hlYWRlck5hbWV9IiBvciBkaWUg
IkNhbm5vdCBvcGVuICR7aGVhZGVyTmFtZX1cbiI7CisgICAgcHJpbnQgRkggJGNvbnRlbnRzOwor
ICAgIGNsb3NlIEZIOworCisgICAgb3BlbiBGSCwgIj4gJHt1c2VPdXRwdXREaXJ9LyR7Y3BwTmFt
ZX0iIG9yIGRpZSAiQ2Fubm90IG9wZW4gJHtjcHBOYW1lfVxuIjsKKyAgICBwcmludCBGSCAkY29u
dGVudHM7CisgICAgY2xvc2UgRkg7Cit9CisKIHN1YiBQcm9jZXNzRGljdGlvbmFyeUFuZEVudW1l
cmF0aW9uSW1wbGVtZW50ZWRBc092ZXJyaWRlcwogewogICAgIG15ICgkb2JqZWN0LCAkdXNlRG9j
dW1lbnQpID0gQF87CkBAIC0yMTksNiArMjQ0LDExIEBAIHN1YiBQcm9jZXNzSW50ZXJmYWNlcwog
CiAgICAgZGllICJNdWx0aXBsZSBpbnRlcmZhY2VzIHBlciBkb2N1bWVudCBhcmUgbm90IHN1cHBv
cnRlZCIgaWYgQHskdXNlRG9jdW1lbnQtPmludGVyZmFjZXN9ID4gMTsKICAgICBteSAkaW50ZXJm
YWNlID0gJHVzZURvY3VtZW50LT5pbnRlcmZhY2VzLT5bMF07CisgICAgCisgICAgaWYgKCRpbnRl
cmZhY2UtPmlzTWl4aW4gfHwgJGludGVyZmFjZS0+aXNQYXJ0aWFsKSB7CisgICAgICAgICRvYmpl
Y3QtPkdlbmVyYXRlRW1wdHlIZWFkZXJBbmRDcHAoJHVzZURvY3VtZW50LCAkY29kZUdlbmVyYXRv
cik7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICAkb2JqZWN0LT5Qcm9jZXNzSW50ZXJm
YWNlU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzKCRpbnRlcmZhY2UsICR1c2VEb2N1bWVudCk7CiAg
ICAgJG9iamVjdC0+UHJvY2Vzc0RpY3Rpb25hcnlBbmRFbnVtZXJhdGlvbkltcGxlbWVudGVkQXNP
dmVycmlkZXMoJHVzZURvY3VtZW50KTsKQEAgLTI2Miw2ICsyOTIsMTEgQEAgc3ViIFByb2Nlc3NE
aWN0aW9uYXJpZXMKICAgICAgICAgZGllICJNdWx0aXBsZSBkaWN0aW9uYXJpZXMgcGVyIGRvY3Vt
ZW50IGFyZSBvbmx5IHN1cHBvcnRlZCBpZiBvbmUgbWF0Y2hlcyB0aGUgZmlsZW5hbWUiIHVubGVz
cyAkZGljdGlvbmFyeTsKICAgICB9CiAKKyAgICBpZiAoJGRpY3Rpb25hcnktPmlzUGFydGlhbCkg
eworICAgICAgICAkb2JqZWN0LT5HZW5lcmF0ZUVtcHR5SGVhZGVyQW5kQ3BwKCR1c2VEb2N1bWVu
dCwgJGNvZGVHZW5lcmF0b3IpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgJG9iamVj
dC0+UHJvY2Vzc0RpY3Rpb25hcnlTdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMoJGRpY3Rpb25hcnks
ICR1c2VEb2N1bWVudCk7CiAgICAgJG9iamVjdC0+UHJvY2Vzc0RpY3Rpb25hcnlBbmRFbnVtZXJh
dGlvbkltcGxlbWVudGVkQXNPdmVycmlkZXMoJHVzZURvY3VtZW50KTsKICAgICAKQEAgLTM0Myw5
ICszNzgsNiBAQCBzdWIgUHJvY2Vzc0ludGVyZmFjZVN1cHBsZW1lbnRhbERlcGVuZGVuCiAKICAg
ICBteSAkdGFyZ2V0RmlsZU5hbWUgPSBmaWxlcGFyc2UoJHRhcmdldERvY3VtZW50LT5maWxlTmFt
ZSk7CiAKLSAgICAjIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgcHJvY2Vzc2luZyByZWN1cnNpdmUg
c3VwcGxlbWVudGFsIGRlcGVuZGVuY2llcwotICAgICMgdG8gcHJvdmlkZSBzdXBwb3J0IGZvciBw
YXJ0aWFsIGludGVyZmFjZSBtaXhpbnMuCi0KICAgICAjIEZJWE1FOiBDdXJyZW50bHksIHdlIHJl
cXVpcmUgYWxsIHRoZSBpbmNsdWRlcyBzdGF0ZW1lbnRzIHRvIGJlIGluIHRoZQogICAgICMgc2Ft
ZSBmaWxlIGFzIHRoZSBpbnRlcmZhY2UgdGhleSBhcmUgYmVpbmcgbWl4ZWQgaW50bywgYnV0IHRo
YXQgcmVzdHJpY3Rpb24KICAgICAjIGlzIGFydGlmaWNpYWwgYW5kIHdlIGNvdWxkIGFkZCBzdXBw
b3J0IGZvciBpbmNsdWRlcyBzdGF0ZW1lbnRzIGVsc2V3aGVyZS4KQEAgLTM2MCwxMCArMzkyLDYg
QEAgc3ViIFByb2Nlc3NJbnRlcmZhY2VTdXBwbGVtZW50YWxEZXBlbmRlbgogICAgICAgICB9CiAg
ICAgfQogCi0gICAgbXkgJGV4cG9zZWRBdHRyaWJ1dGUgPSAkdGFyZ2V0SW50ZXJmYWNlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiRXhwb3NlZCJ9IHx8ICJXaW5kb3ciOwotICAgICRleHBvc2VkQXR0
cmlidXRlID0gc3Vic3RyKCRleHBvc2VkQXR0cmlidXRlLCAxLCAtMSkgaWYgc3Vic3RyKCRleHBv
c2VkQXR0cmlidXRlLCAwLCAxKSBlcSAiKCI7Ci0gICAgbXkgQHRhcmdldEdsb2JhbENvbnRleHRz
ID0gc3BsaXQoIiwiLCAkZXhwb3NlZEF0dHJpYnV0ZSk7Ci0KICAgICBmb3JlYWNoIG15ICRpZGxG
aWxlIChAeyRzdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMtPnskdGFyZ2V0RmlsZU5hbWV9fSkgewog
ICAgICAgICBuZXh0IGlmIGZpbGVwYXJzZSgkaWRsRmlsZSkgZXEgJHRhcmdldEZpbGVOYW1lOwog
CkBAIC0zNzQsMTUgKzQwMiwyMSBAQCBzdWIgUHJvY2Vzc0ludGVyZmFjZVN1cHBsZW1lbnRhbERl
cGVuZGVuCiAgICAgICAgIGZvcmVhY2ggbXkgJGludGVyZmFjZSAoQHskZG9jdW1lbnQtPmludGVy
ZmFjZXN9KSB7CiAgICAgICAgICAgICBuZXh0IHVubGVzcyAkb2JqZWN0LT5Jc1ZhbGlkU3VwcGxl
bWVudGFsSW50ZXJmYWNlKCRpbnRlcmZhY2UsICR0YXJnZXRJbnRlcmZhY2UsIFwlaW5jbHVkZXNN
YXApOwogCisgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+aXNNaXhpbiAmJiAhJGludGVyZmFj
ZS0+aXNQYXJ0aWFsKSB7CisgICAgICAgICAgICAgICAgIyBSZWN1cnNpdmVseSBwcm9jZXNzIGFu
eSBzdXBwbGVtZW50YWwgZGVwZW5kZW5jaWVzIGZvciBlYWNoIHZhbGlkIG1peGluLiBUaGlzCisg
ICAgICAgICAgICAgICAgIyBhbGxvd3MgcGFydGlhbCBwYXJ0aWFsIGludGVyZmFjZSBtaXhpbnMg
dG8gYmUgbWVyZ2VkIGludG8gdGhlIG1peGluLgorICAgICAgICAgICAgICAgICRvYmplY3QtPlBy
b2Nlc3NJbnRlcmZhY2VTdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMoJGludGVyZmFjZSwgJGRvY3Vt
ZW50KTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgIyBTdXBwb3J0IGZvciBhdHRyaWJ1
dGVzIGZyb20gc3VwcGxlbWVudGFsIGludGVyZmFjZXMuCiAgICAgICAgICAgICBmb3JlYWNoIG15
ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30pIHsKLSAgICAgICAgICAgICAg
ICBuZXh0IHVubGVzcyBzaG91bGRQcm9wZXJ0eUJlRXhwb3NlZCgkYXR0cmlidXRlLCBcQHRhcmdl
dEdsb2JhbENvbnRleHRzKTsKKyAgICAgICAgICAgICAgICBuZXh0IHVubGVzcyAkdGFyZ2V0SW50
ZXJmYWNlLT5pc01peGluIHx8IHNob3VsZFByb3BlcnR5QmVFeHBvc2VkKCRhdHRyaWJ1dGUsICR0
YXJnZXRJbnRlcmZhY2UpOwogCi0gICAgICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmlzUGFy
dGlhbCkgeworICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5pc1BhcnRpYWwgJiYgISRp
bnRlcmZhY2UtPmlzTWl4aW4pIHsKICAgICAgICAgICAgICAgICAgICAgJGF0dHJpYnV0ZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifSA9ICRpbnRlcmZhY2VOYW1lIGlmICEk
YXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntSZWZsZWN0fTsKICAgICAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+aXNNaXhpbikgeworICAgICAg
ICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5pc01peGluICYmICEkaW50ZXJmYWNlLT5pc1BhcnRp
YWwpIHsKICAgICAgICAgICAgICAgICAgICAgIyBBZGQgaW5jbHVkZXMgc3RhdGVtZW50IHNwZWNp
ZmljIGV4dGVuZGVkIGF0dHJpYnV0ZXMgdG8gZWFjaCBhdHRyaWJ1dGUuCiAgICAgICAgICAgICAg
ICAgICAgICRvYmplY3QtPk1lcmdlRXh0ZW5kZWRBdHRyaWJ1dGVzRnJvbVN1cHBsZW1lbnRhbCgk
aW5jbHVkZXNNYXB7JGludGVyZmFjZS0+dHlwZS0+bmFtZX0tPmV4dGVuZGVkQXR0cmlidXRlcywg
JGF0dHJpYnV0ZSwgImF0dHJpYnV0ZSIpOwogICAgICAgICAgICAgICAgIH0KQEAgLTM5NSwxMyAr
NDI5LDEzIEBAIHN1YiBQcm9jZXNzSW50ZXJmYWNlU3VwcGxlbWVudGFsRGVwZW5kZW4KIAogICAg
ICAgICAgICAgIyBTdXBwb3J0IGZvciBvcGVyYXRpb25zIGZyb20gc3VwcGxlbWVudGFsIGludGVy
ZmFjZXMuCiAgICAgICAgICAgICBmb3JlYWNoIG15ICRvcGVyYXRpb24gKEB7JGludGVyZmFjZS0+
b3BlcmF0aW9uc30pIHsKLSAgICAgICAgICAgICAgICBuZXh0IHVubGVzcyBzaG91bGRQcm9wZXJ0
eUJlRXhwb3NlZCgkb3BlcmF0aW9uLCBcQHRhcmdldEdsb2JhbENvbnRleHRzKTsKKyAgICAgICAg
ICAgICAgICBuZXh0IHVubGVzcyAkdGFyZ2V0SW50ZXJmYWNlLT5pc01peGluIHx8IHNob3VsZFBy
b3BlcnR5QmVFeHBvc2VkKCRvcGVyYXRpb24sICR0YXJnZXRJbnRlcmZhY2UpOwogCi0gICAgICAg
ICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmlzUGFydGlhbCkgeworICAgICAgICAgICAgICAgIGlm
ICgkaW50ZXJmYWNlLT5pc1BhcnRpYWwgJiYgISRpbnRlcmZhY2UtPmlzTWl4aW4pIHsKICAgICAg
ICAgICAgICAgICAgICAgJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVu
dGVkQnkifSA9ICRpbnRlcmZhY2VOYW1lOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAg
ICAgICAgIGlmICgkaW50ZXJmYWNlLT5pc01peGluKSB7CisgICAgICAgICAgICAgICAgaWYgKCRp
bnRlcmZhY2UtPmlzTWl4aW4gJiYgISRpbnRlcmZhY2UtPmlzUGFydGlhbCkgewogICAgICAgICAg
ICAgICAgICAgICAjIEFkZCBpbmNsdWRlcyBzdGF0ZW1lbnQgc3BlY2lmaWMgZXh0ZW5kZWQgYXR0
cmlidXRlcyB0byBlYWNoIG9wZXJhdGlvbi4KICAgICAgICAgICAgICAgICAgICAgJG9iamVjdC0+
TWVyZ2VFeHRlbmRlZEF0dHJpYnV0ZXNGcm9tU3VwcGxlbWVudGFsKCRpbmNsdWRlc01hcHskaW50
ZXJmYWNlLT50eXBlLT5uYW1lfS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLCAkb3BlcmF0aW9uLCAib3Bl
cmF0aW9uIik7CiAgICAgICAgICAgICAgICAgfQpAQCAtNDE0LDEzICs0NDgsMTMgQEAgc3ViIFBy
b2Nlc3NJbnRlcmZhY2VTdXBwbGVtZW50YWxEZXBlbmRlbgogCiAgICAgICAgICAgICAjIFN1cHBv
cnQgZm9yIGNvbnN0YW50cyBmcm9tIHN1cHBsZW1lbnRhbCBpbnRlcmZhY2VzLgogICAgICAgICAg
ICAgZm9yZWFjaCBteSAkY29uc3RhbnQgKEB7JGludGVyZmFjZS0+Y29uc3RhbnRzfSkgewotICAg
ICAgICAgICAgICAgIG5leHQgdW5sZXNzIHNob3VsZFByb3BlcnR5QmVFeHBvc2VkKCRjb25zdGFu
dCwgXEB0YXJnZXRHbG9iYWxDb250ZXh0cyk7CisgICAgICAgICAgICAgICAgbmV4dCB1bmxlc3Mg
JHRhcmdldEludGVyZmFjZS0+aXNNaXhpbiB8fCBzaG91bGRQcm9wZXJ0eUJlRXhwb3NlZCgkY29u
c3RhbnQsICR0YXJnZXRJbnRlcmZhY2UpOwogCi0gICAgICAgICAgICAgICAgaWYgKCRpbnRlcmZh
Y2UtPmlzUGFydGlhbCkgeworICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5pc1BhcnRp
YWwgJiYgISRpbnRlcmZhY2UtPmlzTWl4aW4pIHsKICAgICAgICAgICAgICAgICAgICAgJGNvbnN0
YW50LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9ID0gJGludGVyZmFjZU5h
bWU7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2Ut
PmlzTWl4aW4pIHsKKyAgICAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+aXNNaXhpbiAmJiAh
JGludGVyZmFjZS0+aXNQYXJ0aWFsKSB7CiAgICAgICAgICAgICAgICAgICAgICMgQWRkIGluY2x1
ZGVzIHN0YXRlbWVudCBzcGVjaWZpYyBleHRlbmRlZCBhdHRyaWJ1dGVzIHRvIGVhY2ggb3BlcmF0
aW9uLgogICAgICAgICAgICAgICAgICAgICAkb2JqZWN0LT5NZXJnZUV4dGVuZGVkQXR0cmlidXRl
c0Zyb21TdXBwbGVtZW50YWwoJGluY2x1ZGVzTWFweyRpbnRlcmZhY2UtPnR5cGUtPm5hbWV9LT5l
eHRlbmRlZEF0dHJpYnV0ZXMsICRjb25zdGFudCwgImNvbnN0YW50Iik7CiAgICAgICAgICAgICAg
ICAgfQpAQCAtNDQwLDEwICs0NzQsNiBAQCBzdWIgUHJvY2Vzc0RpY3Rpb25hcnlTdXBwbGVtZW50
YWxEZXBlbmRlCiAKICAgICByZXR1cm4gdW5sZXNzICRzdXBwbGVtZW50YWxEZXBlbmRlbmNpZXM7
CiAKLSAgICBteSAkZXhwb3NlZEF0dHJpYnV0ZSA9ICR0YXJnZXREaWN0aW9uYXJ5LT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiRXhwb3NlZCJ9IHx8ICJXaW5kb3ciOwotICAgICRleHBvc2VkQXR0cmli
dXRlID0gc3Vic3RyKCRleHBvc2VkQXR0cmlidXRlLCAxLCAtMSkgaWYgc3Vic3RyKCRleHBvc2Vk
QXR0cmlidXRlLCAwLCAxKSBlcSAiKCI7Ci0gICAgbXkgQHRhcmdldEdsb2JhbENvbnRleHRzID0g
c3BsaXQoIiwiLCAkZXhwb3NlZEF0dHJpYnV0ZSk7Ci0KICAgICBteSAkdGFyZ2V0RmlsZU5hbWUg
PSBmaWxlcGFyc2UoJHRhcmdldERvY3VtZW50LT5maWxlTmFtZSk7CiAgICAgZm9yZWFjaCBteSAk
aWRsRmlsZSAoQHskc3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzLT57JHRhcmdldEZpbGVOYW1lfX0p
IHsKICAgICAgICAgbmV4dCBpZiBmaWxlcGFyc2UoJGlkbEZpbGUpIGVxICR0YXJnZXRGaWxlTmFt
ZTsKQEAgLTQ1Nyw3ICs0ODcsNyBAQCBzdWIgUHJvY2Vzc0RpY3Rpb25hcnlTdXBwbGVtZW50YWxE
ZXBlbmRlCiAKICAgICAgICAgICAgICMgU3VwcG9ydCBmb3IgbWVtYmVycyBvZiBwYXJ0aWFsIGRp
Y3Rpb25hcmllcy4KICAgICAgICAgICAgIGZvcmVhY2ggbXkgJG1lbWJlciAoQHskZGljdGlvbmFy
eS0+bWVtYmVyc30pIHsKLSAgICAgICAgICAgICAgICBuZXh0IHVubGVzcyBzaG91bGRQcm9wZXJ0
eUJlRXhwb3NlZCgkbWVtYmVyLCBcQHRhcmdldEdsb2JhbENvbnRleHRzKTsKKyAgICAgICAgICAg
ICAgICBuZXh0IHVubGVzcyBzaG91bGRQcm9wZXJ0eUJlRXhwb3NlZCgkbWVtYmVyLCAkdGFyZ2V0
RGljdGlvbmFyeSk7CiAKICAgICAgICAgICAgICAgICAkbWVtYmVyLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9ID0gJGRpY3Rpb25hcnlOYW1lOwogCkBAIC00NzQsNyArNTA0
LDExIEBAIHN1YiBQcm9jZXNzRGljdGlvbmFyeVN1cHBsZW1lbnRhbERlcGVuZGUKICMgb24gd2hp
Y2ggZ2xvYmFsIGNvbnRleHRzIHRoZXkgc2hvdWxkIGJlIGV4cG9zZWQuCiBzdWIgc2hvdWxkUHJv
cGVydHlCZUV4cG9zZWQKIHsKLSAgICBteSAoJGNvbnRleHQsICR0YXJnZXRHbG9iYWxDb250ZXh0
cykgPSBAXzsKKyAgICBteSAoJGNvbnRleHQsICR0YXJnZXQpID0gQF87CisKKyAgICBteSAkZXhw
b3NlZEF0dHJpYnV0ZSA9ICR0YXJnZXQtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJFeHBvc2VkIn0g
fHwgIldpbmRvdyI7CisgICAgJGV4cG9zZWRBdHRyaWJ1dGUgPSBzdWJzdHIoJGV4cG9zZWRBdHRy
aWJ1dGUsIDEsIC0xKSBpZiBzdWJzdHIoJGV4cG9zZWRBdHRyaWJ1dGUsIDAsIDEpIGVxICIoIjsK
KyAgICBteSBAdGFyZ2V0R2xvYmFsQ29udGV4dHMgPSBzcGxpdCgiLCIsICRleHBvc2VkQXR0cmli
dXRlKTsKIAogICAgIG15ICRleHBvc2VkID0gJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0V4cG9zZWR9OwogCkBAIC00ODMsMjIgKzUxNywxMSBAQCBzdWIgc2hvdWxkUHJvcGVydHlCZUV4
cG9zZWQKICAgICAkZXhwb3NlZCA9IHN1YnN0cigkZXhwb3NlZCwgMSwgLTEpIGlmIHN1YnN0cigk
ZXhwb3NlZCwgMCwgMSkgZXEgIigiOwogICAgIG15IEBzb3VyY2VHbG9iYWxDb250ZXh0cyA9IHNw
bGl0KCIsIiwgJGV4cG9zZWQpOwogCi0gICAgZm9yIG15ICR0YXJnZXRHbG9iYWxDb250ZXh0IChA
JHRhcmdldEdsb2JhbENvbnRleHRzKSB7CisgICAgZm9yZWFjaCBteSAkdGFyZ2V0R2xvYmFsQ29u
dGV4dCAoQHRhcmdldEdsb2JhbENvbnRleHRzKSB7CiAgICAgICAgIHJldHVybiAxIGlmIGdyZXAo
L14kdGFyZ2V0R2xvYmFsQ29udGV4dCQvLCBAc291cmNlR2xvYmFsQ29udGV4dHMpOwogICAgIH0K
LSAgICByZXR1cm4gMDsKLX0KLQotc3ViIEZpbGVOYW1lUHJlZml4Ci17Ci0gICAgbXkgJG9iamVj
dCA9IHNoaWZ0OwogCi0gICAgbXkgJGlmYWNlTmFtZSA9ICJDb2RlR2VuZXJhdG9yIiAuICR1c2VH
ZW5lcmF0b3I7Ci0gICAgcmVxdWlyZSAkaWZhY2VOYW1lIC4gIi5wbSI7Ci0KLSAgICAjIER5bmFt
aWNhbGx5IGxvYWQgZXh0ZXJuYWwgY29kZSBnZW5lcmF0aW9uIHBlcmwgbW9kdWxlCi0gICAgJGNv
ZGVHZW5lcmF0b3IgPSAkaWZhY2VOYW1lLT5uZXcoJG9iamVjdCwgJHdyaXRlRGVwZW5kZW5jaWVz
LCAkdmVyYm9zZSk7Ci0gICAgcmV0dXJuICRjb2RlR2VuZXJhdG9yLT5GaWxlTmFtZVByZWZpeCgp
OworICAgIHJldHVybiAwOwogfQogCiBzdWIgVXBkYXRlRmlsZQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsCShyZXZp
c2lvbiAyNjY3MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRl
LWJpbmRpbmdzLnBsCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw2IEBAIG15ICRwcmVwcm9j
ZXNzb3I7CiBteSAkd3JpdGVEZXBlbmRlbmNpZXM7CiBteSAkdmVyYm9zZTsKIG15ICRzdXBwbGVt
ZW50YWxEZXBlbmRlbmN5RmlsZTsKLW15ICRhZGRpdGlvbmFsSWRsRmlsZXM7CiBteSAkaWRsQXR0
cmlidXRlc0ZpbGU7CiAKIEdldE9wdGlvbnMoJ2luY2x1ZGU9c0AnID0+IFxAaWRsRGlyZWN0b3Jp
ZXMsCkBAIC02OSw3ICs2OCw2IEBAIEdldE9wdGlvbnMoJ2luY2x1ZGU9c0AnID0+IFxAaWRsRGly
ZWN0b3IKICAgICAgICAgICAgJ3ZlcmJvc2UnID0+IFwkdmVyYm9zZSwKICAgICAgICAgICAgJ3dy
aXRlLWRlcGVuZGVuY2llcycgPT4gXCR3cml0ZURlcGVuZGVuY2llcywKICAgICAgICAgICAgJ3N1
cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlPXMnID0+IFwkc3VwcGxlbWVudGFsRGVwZW5kZW5jeUZp
bGUsCi0gICAgICAgICAgICdhZGRpdGlvbmFsSWRsRmlsZXM9cycgPT4gXCRhZGRpdGlvbmFsSWRs
RmlsZXMsCiAgICAgICAgICAgICdpZGxBdHRyaWJ1dGVzRmlsZT1zJyA9PiBcJGlkbEF0dHJpYnV0
ZXNGaWxlKTsKIAogZGllKCdNdXN0IHNwZWNpZnkgaW5wdXQgZmlsZS4nKSB1bmxlc3MgQEFSR1Y7
CkBAIC0xMDUsMzMgKzEwMywxMiBAQCBzdWIgZ2VuZXJhdGVCaW5kaW5ncwogICAgICAgICAjCiAg
ICAgICAgICMgVGhlIGFib3ZlIGluZGljYXRlcyB0aGF0IERPTVdpbmRvdy5pZGwgaXMgc3VwcGxl
bWVudGVkIGJ5IFAuaWRsLCBRLmlkbCBhbmQgUi5pZGwsCiAgICAgICAgICMgRG9jdW1lbnQuaWRs
IGlzIHN1cHBsZW1lbnRlZCBieSBTLmlkbCwgYW5kIEV2ZW50LmlkbCBpcyBzdXBwbGVtZW50ZWQg
Ynkgbm8gSURMcy4KLSAgICAgICAgIyBUaGUgSURMIHRoYXQgc3VwcGxlbWVudHMgYW5vdGhlciBJ
REwgKGUuZy4gUC5pZGwpIG5ldmVyIGFwcGVhcnMgaW4gdGhlIGRlcGVuZGVuY3kgZmlsZS4KICAg
ICAgICAgb3BlbiBGSCwgIjwgJHN1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlIiBvciBkaWUgIkNh
bm5vdCBvcGVuICRzdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZVxuIjsKICAgICAgICAgd2hpbGUg
KG15ICRsaW5lID0gPEZIPikgewogICAgICAgICAgICAgbXkgKCRpZGxGaWxlLCBAZm9sbG93aW5n
SWRsRmlsZXMpID0gc3BsaXQoL1xzKy8sICRsaW5lKTsKICAgICAgICAgICAgICRzdXBwbGVtZW50
YWxEZXBlbmRlbmNpZXN7ZmlsZXBhcnNlKCRpZGxGaWxlKX0gPSBbc29ydCBAZm9sbG93aW5nSWRs
RmlsZXNdIGlmICRpZGxGaWxlOwogICAgICAgICB9CiAgICAgICAgIGNsb3NlIEZIOwotCi0gICAg
ICAgIGlmIChleGlzdHMgJHN1cHBsZW1lbnRhbERlcGVuZGVuY2llc3tmaWxlcGFyc2UoJHRhcmdl
dElkbEZpbGUpfSkgewotICAgICAgICAgICAgJGlkbEZvdW5kID0gMTsKLSAgICAgICAgfQotCi0g
ICAgICAgICMgJGFkZGl0aW9uYWxJZGxGaWxlcyBpcyBsaXN0IG9mIElETCBmaWxlcyB3aGljaCBz
aG91bGQgbm90IGJlIGluY2x1ZGVkIGluCi0gICAgICAgICMgRGVyaXZlZFNvdXJjZXMqLmNwcCAo
aS5lLiB0aGV5IGFyZSBub3QgZGVzY3JpYmVkIGluIHRoZSBzdXBwbGVtZW50YWwKLSAgICAgICAg
IyBkZXBlbmRlbmN5IGZpbGUpIGJ1dCBzaG91bGQgZ2VuZXJhdGUgLmggYW5kIC5jcHAgZmlsZXMu
Ci0gICAgICAgIGlmICghJGlkbEZvdW5kIGFuZCAkYWRkaXRpb25hbElkbEZpbGVzKSB7Ci0gICAg
ICAgICAgICBteSBAaWRsRmlsZXMgPSBzaGVsbHdvcmRzKCRhZGRpdGlvbmFsSWRsRmlsZXMpOwot
ICAgICAgICAgICAgJGlkbEZvdW5kID0gZ3JlcCB7ICRfIGFuZCBmaWxlcGFyc2UoJF8pIGVxIGZp
bGVwYXJzZSgkdGFyZ2V0SWRsRmlsZSkgfSBAaWRsRmlsZXM7Ci0gICAgICAgIH0KLQotICAgICAg
ICBpZiAoISRpZGxGb3VuZCkgewotICAgICAgICAgICAgbXkgJGNvZGVHZW4gPSBDb2RlR2VuZXJh
dG9yLT5uZXcoXEBpZGxEaXJlY3RvcmllcywgJGdlbmVyYXRvciwgJG91dHB1dERpcmVjdG9yeSwg
JG91dHB1dEhlYWRlcnNEaXJlY3RvcnksICRwcmVwcm9jZXNzb3IsICR3cml0ZURlcGVuZGVuY2ll
cywgJHZlcmJvc2UpOwotCi0gICAgICAgICAgICAjIFdlIGdlbmVyYXRlIGVtcHR5IC5oIGFuZCAu
Y3BwIGZpbGVzIGp1c3QgdG8gdGVsbCBidWlsZCBzY3JpcHRzIHRoYXQgLmggYW5kIC5jcHAgZmls
ZXMgYXJlIGNyZWF0ZWQuCi0gICAgICAgICAgICBnZW5lcmF0ZUVtcHR5SGVhZGVyQW5kQ3BwKCRj
b2RlR2VuLT5GaWxlTmFtZVByZWZpeCgpLCAkdGFyZ2V0SW50ZXJmYWNlTmFtZSwgJG91dHB1dEhl
YWRlcnNEaXJlY3RvcnksICRvdXRwdXREaXJlY3RvcnkpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9CiAgICAgfQogCiAgICAgbXkgJGlucHV0OwpAQCAtMTU0LDI1ICsxMzEsMyBAQCBz
dWIgZ2VuZXJhdGVCaW5kaW5ncwogICAgIG15ICRjb2RlR2VuID0gQ29kZUdlbmVyYXRvci0+bmV3
KFxAaWRsRGlyZWN0b3JpZXMsICRnZW5lcmF0b3IsICRvdXRwdXREaXJlY3RvcnksICRvdXRwdXRI
ZWFkZXJzRGlyZWN0b3J5LCAkcHJlcHJvY2Vzc29yLCAkd3JpdGVEZXBlbmRlbmNpZXMsICR2ZXJi
b3NlLCAkdGFyZ2V0SWRsRmlsZSwgJGlkbEF0dHJpYnV0ZXMsIFwlc3VwcGxlbWVudGFsRGVwZW5k
ZW5jaWVzKTsKICAgICAkY29kZUdlbi0+UHJvY2Vzc0RvY3VtZW50KCR0YXJnZXREb2N1bWVudCwg
JGRlZmluZXMpOwogfQotCi1zdWIgZ2VuZXJhdGVFbXB0eUhlYWRlckFuZENwcAotewotICAgIG15
ICgkcHJlZml4LCAkdGFyZ2V0SW50ZXJmYWNlTmFtZSwgJG91dHB1dEhlYWRlcnNEaXJlY3Rvcnks
ICRvdXRwdXREaXJlY3RvcnkpID0gQF87Ci0KLSAgICBteSAkaGVhZGVyTmFtZSA9ICIke3ByZWZp
eH0ke3RhcmdldEludGVyZmFjZU5hbWV9LmgiOwotICAgIG15ICRjcHBOYW1lID0gIiR7cHJlZml4
fSR7dGFyZ2V0SW50ZXJmYWNlTmFtZX0uY3BwIjsKLSAgICBteSAkY29udGVudHMgPSAiLyoKLSAg
ICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGp1c3QgdG8gdGVsbCBidWlsZCBzY3JpcHRzIHRoYXQg
JGhlYWRlck5hbWUgYW5kCi0gICAgJGNwcE5hbWUgYXJlIGNyZWF0ZWQgZm9yICR7dGFyZ2V0SW50
ZXJmYWNlTmFtZX0uaWRsLCBhbmQgdGh1cwotICAgIHByZXZlbnQgdGhlIGJ1aWxkIHNjcmlwdHMg
ZnJvbSB0cnlpbmcgdG8gZ2VuZXJhdGUgJGhlYWRlck5hbWUgYW5kCi0gICAgJGNwcE5hbWUgYXQg
ZXZlcnkgYnVpbGQuIFRoaXMgZmlsZSBtdXN0IG5vdCBiZSB0cmllZCB0byBjb21waWxlLgotKi8K
LSI7Ci0gICAgb3BlbiBGSCwgIj4gJHtvdXRwdXRIZWFkZXJzRGlyZWN0b3J5fS8ke2hlYWRlck5h
bWV9IiBvciBkaWUgIkNhbm5vdCBvcGVuICRoZWFkZXJOYW1lXG4iOwotICAgIHByaW50IEZIICRj
b250ZW50czsKLSAgICBjbG9zZSBGSDsKLQotICAgIG9wZW4gRkgsICI+ICR7b3V0cHV0RGlyZWN0
b3J5fS8ke2NwcE5hbWV9IiBvciBkaWUgIkNhbm5vdCBvcGVuICRjcHBOYW1lXG4iOwotICAgIHBy
aW50IEZIICRjb250ZW50czsKLSAgICBjbG9zZSBGSDsKLX0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsCShyZXZpc2lvbiAy
NjY3MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRs
cy5wbAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKICMhL3Vzci9iaW4vZW52IHBlcmwK
ICMKICMgQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICMKICMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgogIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwpAQCAtMjU0LDYgKzI1NSwxMiBAQCBHZW5lcmF0ZVBhcnRpYWxJbnRl
cmZhY2UoIldvcmtsZXRHbG9iYWxTCiBHZW5lcmF0ZVBhcnRpYWxJbnRlcmZhY2UoIlBhaW50V29y
a2xldEdsb2JhbFNjb3BlIiwgJHBhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzQ29k
ZSwgJHBhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSk7CiBHZW5lcmF0ZVBh
cnRpYWxJbnRlcmZhY2UoJHRlc3RHbG9iYWxDb250ZXh0TmFtZSwgJHRlc3RHbG9iYWxTY29wZUNv
bnN0cnVjdG9yc0NvZGUsICR0ZXN0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlKSBpZiBkZWZp
bmVkKCR0ZXN0R2xvYmFsQ29udGV4dE5hbWUpOwogCitpZiAoJGlzb1N1YnNwYWNlc0hlYWRlckZp
bGUpIHsKKyAgICAkaXNvU3Vic3BhY2VzSGVhZGVyQ29kZSAuPSAifTtcbiI7CisgICAgJGlzb1N1
YnNwYWNlc0hlYWRlckNvZGUgLj0gIn0gLy8gbmFtZXNwYWNlIFdlYkNvcmVcbiI7CisgICAgV3Jp
dGVGaWxlSWZDaGFuZ2VkKCRpc29TdWJzcGFjZXNIZWFkZXJGaWxlLCAkaXNvU3Vic3BhY2VzSGVh
ZGVyQ29kZSk7Cit9CisKICMgUmVzb2x2ZXMgcGFydGlhbCBpbnRlcmZhY2VzIGFuZCBpbmNsdWRl
IGRlcGVuZGVuY2llcy4KIGZvcmVhY2ggbXkgJGlkbEZpbGVQYXRoIChzb3J0IGtleXMgJXN1cHBs
ZW1lbnRhbERlcGVuZGVuY2llcykgewogICAgIG15ICRiYXNlRmlsZXMgPSAkc3VwcGxlbWVudGFs
RGVwZW5kZW5jaWVzeyRpZGxGaWxlUGF0aH07CkBAIC0yNjEsMTMgKzI2OCw2IEBAIGZvcmVhY2gg
bXkgJGlkbEZpbGVQYXRoIChzb3J0IGtleXMgJXN1cHAKICAgICAgICAgbXkgJHRhcmdldElkbEZp
bGVQYXRoID0gJGludGVyZmFjZU5hbWVUb0lkbEZpbGVQYXRoeyRiYXNlRmlsZX0gb3IgZGllICIk
e2Jhc2VGaWxlfS5pZGwgbm90IGZvdW5kLCBidXQgaXQgaXMgc3VwcGxlbWVudGVkIGJ5ICRpZGxG
aWxlUGF0aCI7CiAgICAgICAgIHB1c2goQHskc3VwcGxlbWVudGFsc3skdGFyZ2V0SWRsRmlsZVBh
dGh9fSwgJGlkbEZpbGVQYXRoKTsKICAgICB9Ci0gICAgZGVsZXRlICRzdXBwbGVtZW50YWxzeyRp
ZGxGaWxlUGF0aH07Ci19Ci0KLWlmICgkaXNvU3Vic3BhY2VzSGVhZGVyRmlsZSkgewotICAgICRp
c29TdWJzcGFjZXNIZWFkZXJDb2RlIC49ICJ9O1xuIjsKLSAgICAkaXNvU3Vic3BhY2VzSGVhZGVy
Q29kZSAuPSAifSAvLyBuYW1lc3BhY2UgV2ViQ29yZVxuIjsKLSAgICBXcml0ZUZpbGVJZkNoYW5n
ZWQoJGlzb1N1YnNwYWNlc0hlYWRlckZpbGUsICRpc29TdWJzcGFjZXNIZWFkZXJDb2RlKTsKIH0K
IAogIyBPdXRwdXRzIHRoZSBkZXBlbmRlbmN5LgpAQCAtMjgwLDcgKzI4MCw2IEBAIGlmICgkaXNv
U3Vic3BhY2VzSGVhZGVyRmlsZSkgewogIwogIyBUaGUgYWJvdmUgaW5kaWNhdGVzIHRoYXQgRE9N
V2luZG93LmlkbCBpcyBzdXBwbGVtZW50ZWQgYnkgUC5pZGwsIFEuaWRsIGFuZCBSLmlkbCwKICMg
RG9jdW1lbnQuaWRsIGlzIHN1cHBsZW1lbnRlZCBieSBTLmlkbCwgYW5kIEV2ZW50LmlkbCBpcyBz
dXBwbGVtZW50ZWQgYnkgbm8gSURMcy4KLSMgVGhlIElETCB0aGF0IHN1cHBsZW1lbnRzIGFub3Ro
ZXIgSURMIChlLmcuIFAuaWRsKSBuZXZlciBhcHBlYXJzIGluIHRoZSBkZXBlbmRlbmN5IGZpbGUu
CiBteSAkZGVwZW5kZW5jaWVzID0gIiI7CiBmb3JlYWNoIG15ICRpZGxGaWxlUGF0aCAoc29ydCBr
ZXlzICVzdXBwbGVtZW50YWxzKSB7CiAgICAgJGRlcGVuZGVuY2llcyAuPSAiJGlkbEZpbGVQYXRo
IEB7JHN1cHBsZW1lbnRhbHN7JGlkbEZpbGVQYXRofX1cbiI7CkBAIC00NjAsOCArNDU5LDEzIEBA
IHN1YiBnZXRQYXJ0aWFsTmFtZXNGcm9tSURMCiAgICAgbXkgJGZpbGVDb250ZW50cyA9ICRpZGxG
aWxlLT5maWxlQ29udGVudHM7CiAKICAgICBteSBAcGFydGlhbE5hbWVzID0gKCk7CisgICAgd2hp
bGUgKCRmaWxlQ29udGVudHMgPX4gL3BhcnRpYWxccytpbnRlcmZhY2VccyttaXhpblxzKyhcdysp
L21nKSB7CisgICAgICAgIHB1c2goQHBhcnRpYWxOYW1lcywgJDEpOworICAgIH0KKworICAgICRm
aWxlQ29udGVudHMgPSAkaWRsRmlsZS0+ZmlsZUNvbnRlbnRzOwogICAgIHdoaWxlICgkZmlsZUNv
bnRlbnRzID1+IC9wYXJ0aWFsXHMrKGludGVyZmFjZXxkaWN0aW9uYXJ5fG5hbWVzcGFjZSlccyso
XHcrKS9tZykgewotICAgICAgICBwdXNoKEBwYXJ0aWFsTmFtZXMsICQyKTsKKyAgICAgICAgcHVz
aChAcGFydGlhbE5hbWVzLCAkMikgaWYgJDIgbmUgIm1peGluIjsKICAgICB9CiAgICAgCiAgICAg
aWYgKCR2YWxpZGF0ZUFnYWluc3RQYXJzZXIpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBl
bmRlbmNpZXMuZGVwCShyZXZpc2lvbiAyNjY3MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzLmRlcAkod29ya2luZyBjb3B5
KQpAQCAtNDUsMTAgKzQ1LDEwIEBAIFdlYkRPTVRlc3RDYWxsYmFja0ludGVyZmFjZS5oOiAKIEpT
VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmg6IAogRE9NVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yLmg6IAogV2ViRE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0
cnVjdG9yLmg6IAotSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5oOiBUZXN0SW5jbHVkZXMuaWRs
Ci1ET01UZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5oOiBUZXN0SW5jbHVkZXMuaWRsCi1XZWJET01U
ZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5oOiBUZXN0SW5jbHVkZXMuaWRsCi1UZXN0SW5jbHVkZXMu
aWRsOgorSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5oOiBUZXN0TWl4aW5JbnRlcmZhY2UuaWRs
CitET01UZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5oOiBUZXN0TWl4aW5JbnRlcmZhY2UuaWRsCitX
ZWJET01UZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5oOiBUZXN0TWl4aW5JbnRlcmZhY2UuaWRsCitU
ZXN0TWl4aW5JbnRlcmZhY2UuaWRsOgogSlNUZXN0RE9NSklULmg6IAogRE9NVGVzdERPTUpJVC5o
OiAKIFdlYkRPTVRlc3RET01KSVQuaDogCkBAIC0xMDAsMTAgKzEwMCwxMCBAQCBUZXN0U3VwcGxl
bWVudGFsLmlkbDoKIEpTVGVzdEluaGVyaXRlZERpY3Rpb25hcnkyLmg6IAogRE9NVGVzdEluaGVy
aXRlZERpY3Rpb25hcnkyLmg6IAogV2ViRE9NVGVzdEluaGVyaXRlZERpY3Rpb25hcnkyLmg6IAot
SlNUZXN0SW50ZXJmYWNlLmg6IFRlc3RJbmNsdWRlcy5pZGwgVGVzdFN1cHBsZW1lbnRhbC5pZGwK
LURPTVRlc3RJbnRlcmZhY2UuaDogVGVzdEluY2x1ZGVzLmlkbCBUZXN0U3VwcGxlbWVudGFsLmlk
bAotV2ViRE9NVGVzdEludGVyZmFjZS5oOiBUZXN0SW5jbHVkZXMuaWRsIFRlc3RTdXBwbGVtZW50
YWwuaWRsCi1UZXN0SW5jbHVkZXMuaWRsOgorSlNUZXN0SW50ZXJmYWNlLmg6IFRlc3RNaXhpbklu
dGVyZmFjZS5pZGwgVGVzdFN1cHBsZW1lbnRhbC5pZGwKK0RPTVRlc3RJbnRlcmZhY2UuaDogVGVz
dE1peGluSW50ZXJmYWNlLmlkbCBUZXN0U3VwcGxlbWVudGFsLmlkbAorV2ViRE9NVGVzdEludGVy
ZmFjZS5oOiBUZXN0TWl4aW5JbnRlcmZhY2UuaWRsIFRlc3RTdXBwbGVtZW50YWwuaWRsCitUZXN0
TWl4aW5JbnRlcmZhY2UuaWRsOgogVGVzdFN1cHBsZW1lbnRhbC5pZGw6CiBKU1Rlc3RJbnRlcmZh
Y2VMZWFkaW5nVW5kZXJzY29yZS5oOiAKIERPTVRlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29y
ZS5oOiAKQEAgLTEyNiw2ICsxMjYsMTAgQEAgV2ViRE9NVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnMuaDogCiBKU1Rlc3RNYXBMaWtlLmg6IAogRE9NVGVzdE1hcExpa2UuaDogCiBXZWJET01UZXN0
TWFwTGlrZS5oOiAKK0pTVGVzdE1peGluSW50ZXJmYWNlLmg6IFRlc3RQYXJ0aWFsTWl4aW5JbnRl
cmZhY2UuaWRsCitET01UZXN0TWl4aW5JbnRlcmZhY2UuaDogVGVzdFBhcnRpYWxNaXhpbkludGVy
ZmFjZS5pZGwKK1dlYkRPTVRlc3RNaXhpbkludGVyZmFjZS5oOiBUZXN0UGFydGlhbE1peGluSW50
ZXJmYWNlLmlkbAorVGVzdFBhcnRpYWxNaXhpbkludGVyZmFjZS5pZGw6CiBKU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuaDogCiBET01UZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyTm9JZGVudGlmaWVyLmg6IAogV2ViRE9NVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRl
bnRpZmllci5oOiAKQEAgLTE4Niw2ICsxOTAsOSBAQCBXZWJET01UZXN0Tm9kZS5oOiAKIEpTVGVz
dE9iai5oOiAKIERPTVRlc3RPYmouaDogCiBXZWJET01UZXN0T2JqLmg6IAorSlNUZXN0T3BlcmF0
aW9uQmFzZS5oOiAKK0RPTVRlc3RPcGVyYXRpb25CYXNlLmg6IAorV2ViRE9NVGVzdE9wZXJhdGlv
bkJhc2UuaDogCiBKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbC5oOiBUZXN0T3BlcmF0aW9uQmFz
ZS5pZGwKIERPTVRlc3RPcGVyYXRpb25Db25kaXRpb25hbC5oOiBUZXN0T3BlcmF0aW9uQmFzZS5p
ZGwKIFdlYkRPTVRlc3RPcGVyYXRpb25Db25kaXRpb25hbC5oOiBUZXN0T3BlcmF0aW9uQmFzZS5p
ZGwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q29uZGl0
aW9uYWxJbmNsdWRlcy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmlkbAkocmV2aXNpb24gMjY2NzI3
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RDb25kaXRpb25h
bEluY2x1ZGVzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzMsNCArMzMsNCBAQCBpbnRlcmZhY2Ug
VGVzdENvbmRpdGlvbmFsSW5jbHVkZXMgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUg
dGVzdEF0dHI7CiB9OwogCi1bQ29uZGl0aW9uYWw9Q29uZGl0aW9uMTIsIEVuYWJsZWRCeVNldHRp
bmc9VGVzdFNldHRpbmcyXSBUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyBpbmNsdWRlcyBUZXN0SW5j
bHVkZXM7CitbQ29uZGl0aW9uYWw9Q29uZGl0aW9uMTIsIEVuYWJsZWRCeVNldHRpbmc9VGVzdFNl
dHRpbmcyXSBUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyBpbmNsdWRlcyBUZXN0TWl4aW5JbnRlcmZh
Y2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEluY2x1
ZGVzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVGVzdEluY2x1ZGVzLmlkbAkocmV2aXNpb24gMjY2NzI3KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RJbmNsdWRlcy5pZGwJKG5vbmV4aXN0ZW50KQpAQCAt
MSw1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmlj
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zdHJBcmcsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5l
aXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgot
ICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVzdHJBcmcsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0vLyBUaGlzIElETCBmaWxlIGlzIGZvciB0ZXN0aW5nIHRo
ZSBiaW5kaW5ncyBjb2RlIGdlbmVyYXRvciBhbmQgZm9yIHRyYWNraW5nCi0vLyBjaGFuZ2VzIGlu
IGl0cyBvdXRwdXQuCi1bCi0gICAgQ29uZGl0aW9uYWw9Q29uZGl0aW9uMjJ8Q29uZGl0aW9uMjMK
LV0gaW50ZXJmYWNlIG1peGluIFRlc3RJbmNsdWRlcyB7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRl
IERPTVN0cmluZyBpbmNsdWRlc1N0cjE7Ci0gICAgYXR0cmlidXRlIERPTVN0cmluZyBpbmNsdWRl
c1N0cjI7Ci0gICAgW0N1c3RvbUdldHRlciwgQ3VzdG9tU2V0dGVyXSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIGluY2x1ZGVzU3RyMzsKLSAgICBhdHRyaWJ1dGUgTm9kZSBpbmNsdWRlc05vZGU7Ci0KLSAg
ICB1bmRlZmluZWQgaW5jbHVkZXNNZXRob2QxKCk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9uXSBUZXN0T2JqIGluY2x1ZGVzTWV0aG9kMihE
T01TdHJpbmcgc3RyQXJnLCBUZXN0T2JqIG9iakFyZyk7Ci0gICAgW0N1c3RvbV0gdW5kZWZpbmVk
IGluY2x1ZGVzTWV0aG9kMygpOwotICAgIFtDb25kaXRpb25hbD1Db25kaXRpb24xMV0gdW5kZWZp
bmVkIGluY2x1ZGVzTWV0aG9kQ29uZGl0aW9uYWwoKTsKLSAgICBbRW5hYmxlZEJ5U2V0dGluZz1U
ZXN0U2V0dGluZ10gdW5kZWZpbmVkIGluY2x1ZGVzTWV0aG9kU2V0dGluZ3NDb25kaXRpb25hbCgp
OwotCi0gICAgY29uc3QgdW5zaWduZWQgc2hvcnQgSU5DTFVERVNfQ09OU1RBTlQxID0gMTsKLSAg
ICBbUmVmbGVjdD1DT05TVF9JTVBMXSBjb25zdCB1bnNpZ25lZCBzaG9ydCBJTkNMVURFU19DT05T
VEFOVDIgPSAyOwotCi0gICAgW1Jlc3VsdEZpZWxkPW5vZGVzXSBzZXF1ZW5jZTxOb2RlPiB0YWtl
Tm9kZXMoKTsKLX07Ci0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9UZXN0SW50ZXJmYWNlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVGVzdEludGVyZmFjZS5pZGwJKHJldmlzaW9uIDI2NjcyNykKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0SW50ZXJmYWNlLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtNDAsNCArNDAsNCBAQAogICAgIGl0ZXJhYmxlPFRlc3ROb2RlLCBUZXN0
T2JqPjsKIH07CiAKLVRlc3RJbnRlcmZhY2UgaW5jbHVkZXMgVGVzdEluY2x1ZGVzOworVGVzdElu
dGVyZmFjZSBpbmNsdWRlcyBUZXN0TWl4aW5JbnRlcmZhY2U7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE1peGluSW50ZXJmYWNlLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE1peGluSW50ZXJm
YWNlLmlkbAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVGVzdE1peGluSW50ZXJmYWNlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zdHJBcmcsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhl
IG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0
cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVzdHJBcmcsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisvLyBUaGlzIElETCBmaWxlIGlzIGZvciB0ZXN0aW5nIHRoZSBiaW5kaW5n
cyBjb2RlIGdlbmVyYXRvciBhbmQgZm9yIHRyYWNraW5nCisvLyBjaGFuZ2VzIGluIGl0cyBvdXRw
dXQuCitbCisgICAgQ29uZGl0aW9uYWw9Q29uZGl0aW9uMjJ8Q29uZGl0aW9uMjMKK10gaW50ZXJm
YWNlIG1peGluIFRlc3RNaXhpbkludGVyZmFjZSB7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERP
TVN0cmluZyBtaXhpblJlYWRPbmx5QXR0cmlidXRlOworICAgIGF0dHJpYnV0ZSBET01TdHJpbmcg
bWl4aW5BdHRyaWJ1dGU7CisgICAgW0N1c3RvbUdldHRlciwgQ3VzdG9tU2V0dGVyXSBhdHRyaWJ1
dGUgRE9NU3RyaW5nIG1peGluQ3VzdG9tQXR0cmlidXRlOworICAgIGF0dHJpYnV0ZSBOb2RlIG1p
eGluTm9kZUF0dHJpYnV0ZTsKKworICAgIHVuZGVmaW5lZCBtaXhpbk9wZXJhdGlvbigpOworICAg
IFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gVGVz
dE9iaiBtaXhpbkNvbXBsZXhPcGVyYXRpb24oRE9NU3RyaW5nIHN0ckFyZywgVGVzdE9iaiBvYmpB
cmcpOworICAgIFtDdXN0b21dIHVuZGVmaW5lZCBtaXhpbkN1c3RvbU9wZXJhdGlvbigpOworICAg
IFtDb25kaXRpb25hbD1Db25kaXRpb24xMV0gdW5kZWZpbmVkIG1peGluQ29uZGl0aW9uYWxPcGVy
YXRpb24oKTsKKyAgICBbRW5hYmxlZEJ5U2V0dGluZz1UZXN0U2V0dGluZ10gdW5kZWZpbmVkIG1p
eGluU2V0dGluZ3NDb25kaXRpb25hbE9wZXJhdGlvbigpOworICAgIFtSZXN1bHRGaWVsZD1ub2Rl
c10gc2VxdWVuY2U8Tm9kZT4gbWl4aW5SZXN1bHRGaWVsZE9wZXJhdGlvbigpOworCisgICAgY29u
c3QgdW5zaWduZWQgc2hvcnQgTUlYSU5fQ09OU1RBTlQgPSAxOworICAgIFtSZWZsZWN0PUNPTlNU
X0lNUExdIGNvbnN0IHVuc2lnbmVkIHNob3J0IE1JWElOX1JFRkxFQ1RFRF9DT05TVEFOVCA9IDI7
Cit9OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmou
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9U
ZXN0T2JqLmlkbAkocmV2aXNpb24gMjY2NzI3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00NjMsOCArNDYzLDgg
QEAgZW51bSBUZXN0Q29uZmlkZW5jZSB7ICJoaWdoIiwgImtpbmRhLWxvdwogfTsKIAogLy8gVGhl
IGZvbGxvd2luZyBjb21tZW50cyBzaG91bGQgbm90IGdlbmVyYXRlIGFueSBjb2RlLgotLy8gVGVz
dE9iaiBpbmNsdWRlcyBUZXN0SW5jbHVkZXM7Ci0vKiBUZXN0T2JqIGluY2x1ZGVzIFRlc3RJbmNs
dWRlczsgKi8KKy8vIFRlc3RPYmogaW5jbHVkZXMgVGVzdE1peGluSW50ZXJmYWNlOworLyogVGVz
dE9iaiBpbmNsdWRlcyBUZXN0TWl4aW5JbnRlcmZhY2U7ICovCiAKIHR5cGVkZWYgYW55IEFueVR5
cGVkZWY7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0
UGFydGlhbE1peGluSW50ZXJmYWNlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFBhcnRpYWxNaXhpbkludGVyZmFjZS5pZGwJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RQYXJ0
aWFsTWl4aW5JbnRlcmZhY2UuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisvLyBUaGlzIElETCBmaWxlIGlzIGZvciB0ZXN0aW5nIHRoZSBiaW5kaW5ncyBj
b2RlIGdlbmVyYXRvciBhbmQgZm9yIHRyYWNraW5nCisvLyBjaGFuZ2VzIGluIGl0cyBvdXRwdXQu
CitbCisgICAgQ29uZGl0aW9uYWw9Q29uZGl0aW9uMzMKK10gcGFydGlhbCBpbnRlcmZhY2UgbWl4
aW4gVGVzdE1peGluSW50ZXJmYWNlIHsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgZG91YmxlIHBh
cnRpYWxNaXhpbkF0dHJpYnV0ZUZyb21QYXJ0aWFsOworICAgIHVuZGVmaW5lZCBwYXJ0aWFsTWl4
aW5PcGVyYXRpb25Gcm9tUGFydGlhbCgpOworICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFBBUlRJ
QUxfTUlYSU5fQ09OU1RBTlRfRlJPTV9QQVJUSUFMID0gNTsKK307CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMuY3BwCShyZXZpc2lvbiAyNjY3MjcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxJbmNs
dWRlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDIyICs2MywyNSBAQCB1c2luZyBuYW1lc3Bh
Y2UgSlNDOwogLy8gRnVuY3Rpb25zCiAKICNpZiAoRU5BQkxFKENvbmRpdGlvbjEyKSAmJiBFTkFC
TEUoQ29uZGl0aW9uMjIpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1KU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0
aW9uSW5jbHVkZXNNZXRob2QxKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSop
OworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENvbmRpdGlvbmFsSW5j
bHVkZXNQcm90b3R5cGVGdW5jdGlvbk1peGluT3BlcmF0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkNhbGxGcmFtZSopOwogI2VuZGlmCiAjaWYgKEVOQUJMRShDb25kaXRpb24xMikgJiYg
RU5BQkxFKENvbmRpdGlvbjIyKSkgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVG
dW5jdGlvbkluY2x1ZGVzTWV0aG9kMihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJh
bWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDb25kaXRpb25h
bEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25NaXhpbkNvbXBsZXhPcGVyYXRpb24oSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYKICNpZiAoRU5BQkxFKENvbmRp
dGlvbjEyKSAmJiBFTkFCTEUoQ29uZGl0aW9uMjIpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1K
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRl
c1Byb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2QzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbk1peGluQ3VzdG9tT3BlcmF0aW9u
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2VuZGlmCiAjaWYgKEVO
QUJMRShDb25kaXRpb24xMSkgJiYgRU5BQkxFKENvbmRpdGlvbjEyKSAmJiBFTkFCTEUoQ29uZGl0
aW9uMjIpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uSW5jbHVk
ZXNNZXRob2RDb25kaXRpb25hbChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUq
KTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDb25kaXRpb25hbElu
Y2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25NaXhpbkNvbmRpdGlvbmFsT3BlcmF0aW9uKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2VuZGlmCiAjaWYgKEVOQUJMRShDb25k
aXRpb24xMikgJiYgRU5BQkxFKENvbmRpdGlvbjIyKSkgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQot
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVk
ZXNQcm90b3R5cGVGdW5jdGlvbkluY2x1ZGVzTWV0aG9kU2V0dGluZ3NDb25kaXRpb25hbChKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25N
aXhpblNldHRpbmdzQ29uZGl0aW9uYWxPcGVyYXRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYKICNpZiAoRU5BQkxFKENvbmRpdGlvbjEyKSAmJiBFTkFC
TEUoQ29uZGl0aW9uMjIpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1KU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0
aW9uVGFrZU5vZGVzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQ
cm90b3R5cGVGdW5jdGlvbk1peGluUmVzdWx0RmllbGRPcGVyYXRpb24oSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CisjZW5kaWYKKyNpZiAoRU5BQkxFKENvbmRpdGlvbjEy
KSAmJiBFTkFCTEUoQ29uZGl0aW9uMjIpICYmIEVOQUJMRShDb25kaXRpb24zMykpIHx8IEVOQUJM
RShDb25kaXRpb24yMykKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RD
b25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25QYXJ0aWFsTWl4aW5PcGVyYXRpb25G
cm9tUGFydGlhbChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNlbmRp
ZgogCiAvLyBBdHRyaWJ1dGVzCkBAIC04NywxOSArOTAsMjIgQEAgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RDb25kaXRpb25hbEluYwogYm9vbCBzZXRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVz
Q29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDb25kaXRpb25h
bEluY2x1ZGVzVGVzdEF0dHIoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJM
RShDb25kaXRpb24yMykKLUpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q29uZGl0aW9uYWxJbmNs
dWRlc0luY2x1ZGVzU3RyMShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDb25kaXRp
b25hbEluY2x1ZGVzTWl4aW5SZWFkT25seUF0dHJpYnV0ZShKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworI2VuZGlmCisjaWYgRU5B
QkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCitKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNNaXhpbkF0dHJpYnV0ZShKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworYm9vbCBz
ZXRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzTWl4aW5BdHRyaWJ1dGUoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogI2VuZGlm
CiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1KU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNJbmNsdWRlc1N0cjIoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsK
LWJvb2wgc2V0SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0luY2x1ZGVzU3RyMihKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CitK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNNaXhpbkN1c3RvbUF0
dHJpYnV0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOworYm9vbCBzZXRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzTWl4aW5DdXN0
b21BdHRyaWJ1dGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6RW5jb2RlZEpTVmFsdWUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMjMpCi1KU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFs
SW5jbHVkZXNJbmNsdWRlc1N0cjMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLWJvb2wgc2V0SlNUZXN0Q29uZGl0aW9uYWxJbmNs
dWRlc0luY2x1ZGVzU3RyMyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENvbmRp
dGlvbmFsSW5jbHVkZXNNaXhpbk5vZGVBdHRyaWJ1dGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0Q29u
ZGl0aW9uYWxJbmNsdWRlc01peGluTm9kZUF0dHJpYnV0ZShKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAjZW5kaWYKICNpZiBF
TkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLUpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0luY2x1ZGVzTm9kZShKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotYm9vbCBz
ZXRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzSW5jbHVkZXNOb2RlKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1BhcnRpYWxNaXhpbkF0dHJpYnV0
ZUZyb21QYXJ0aWFsKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7CiAjZW5kaWYKIAogY2xhc3MgSlNUZXN0Q29uZGl0aW9uYWxJbmNs
dWRlc1Byb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewpAQCAt
MTQxLDIzICsxNDcsMzEgQEAgdXNpbmcgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0NvbnN0cnVj
dAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXND
b25zdHJ1Y3RvclRhYmxlVmFsdWVzW10gPQogewogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwg
RU5BQkxFKENvbmRpdGlvbjIzKQotICAgIHsgIklOQ0xVREVTX0NPTlNUQU5UMSIsIEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdlciwgTm9JbnRyaW5z
aWMsIHsgKGxvbmcgbG9uZykoMSkgfSB9LAorICAgIHsgIk1JWElOX0NPTlNUQU5UIiwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2VyLCBOb0ludHJp
bnNpYywgeyAobG9uZyBsb25nKSgxKSB9IH0sCisjZWxzZQorICAgIHsgMCwgMCwgTm9JbnRyaW5z
aWMsIHsgMCwgMCB9IH0sCisjZW5kaWYKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJM
RShDb25kaXRpb24yMykKKyAgICB7ICJNSVhJTl9SRUZMRUNURURfQ09OU1RBTlQiLCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIsIE5vSW50cmlu
c2ljLCB7IChsb25nIGxvbmcpKDIpIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNp
YywgeyAwLCAwIH0gfSwKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxF
KENvbmRpdGlvbjIzKQotICAgIHsgIklOQ0xVREVTX0NPTlNUQU5UMiIsIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdlciwgTm9JbnRyaW5zaWMsIHsg
KGxvbmcgbG9uZykoMikgfSB9LAorICAgIHsgIlBBUlRJQUxfTUlYSU5fQ09OU1RBTlRfRlJPTV9Q
QVJUSUFMIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJ
bnRlZ2VyLCBOb0ludHJpbnNpYywgeyAobG9uZyBsb25nKSg1KSB9IH0sCiAjZWxzZQogICAgIHsg
MCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYKIH07CiAKICNpZiBFTkFCTEUo
Q29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLXN0YXRpY19hc3NlcnQoVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXM6OklOQ0xVREVTX0NPTlNUQU5UMSA9PSAxLCAiSU5DTFVERVNfQ09O
U1RBTlQxIGluIFRlc3RDb25kaXRpb25hbEluY2x1ZGVzIGRvZXMgbm90IG1hdGNoIHZhbHVlIGZy
b20gSURMIik7CitzdGF0aWNfYXNzZXJ0KFRlc3RDb25kaXRpb25hbEluY2x1ZGVzOjpNSVhJTl9D
T05TVEFOVCA9PSAxLCAiTUlYSU5fQ09OU1RBTlQgaW4gVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMg
ZG9lcyBub3QgbWF0Y2ggdmFsdWUgZnJvbSBJREwiKTsKICNlbmRpZgogI2lmIEVOQUJMRShDb25k
aXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogc3RhdGljX2Fzc2VydChUZXN0Q29uZGl0
aW9uYWxJbmNsdWRlczo6Q09OU1RfSU1QTCA9PSAyLCAiQ09OU1RfSU1QTCBpbiBUZXN0Q29uZGl0
aW9uYWxJbmNsdWRlcyBkb2VzIG5vdCBtYXRjaCB2YWx1ZSBmcm9tIElETCIpOwogI2VuZGlmCisj
aWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCitzdGF0aWNfYXNz
ZXJ0KFRlc3RDb25kaXRpb25hbEluY2x1ZGVzOjpQQVJUSUFMX01JWElOX0NPTlNUQU5UX0ZST01f
UEFSVElBTCA9PSA1LCAiUEFSVElBTF9NSVhJTl9DT05TVEFOVF9GUk9NX1BBUlRJQUwgaW4gVGVz
dENvbmRpdGlvbmFsSW5jbHVkZXMgZG9lcyBub3QgbWF0Y2ggdmFsdWUgZnJvbSBJREwiKTsKKyNl
bmRpZgogCiB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0NvbnN0
cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CkBAIC0xODIsNjIgKzE5Niw3NyBAQCBzdGF0aWMg
Y29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0Q29uZGl0CiAgICAgeyAiY29uc3RydWN0b3IiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdENvbmRp
dGlvbmFsSW5jbHVkZXNDb25zdHJ1Y3RvcikgfSB9LAogICAgIHsgInRlc3RBdHRyIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNUZXN0QXR0
ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KDApIH0gfSwKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykK
LSAgICB7ICJpbmNsdWRlc1N0cjEiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNU
ZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0luY2x1ZGVzU3RyMSksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKKyAgICB7ICJtaXhpblJl
YWRPbmx5QXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXNNaXhpblJlYWRPbmx5QXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAorI2Vsc2UKKyAg
ICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAorI2VuZGlmCisjaWYgRU5BQkxFKENv
bmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCisgICAgeyAibWl4aW5BdHRyaWJ1dGUi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdENvbmRpdGlvbmFsSW5jbHVkZXNNaXhpbkF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdENvbmRpdGlvbmFs
SW5jbHVkZXNNaXhpbkF0dHJpYnV0ZSkgfSB9LAogI2Vsc2UKICAgICB7IDAsIDAsIE5vSW50cmlu
c2ljLCB7IDAsIDAgfSB9LAogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFC
TEUoQ29uZGl0aW9uMjMpCi0gICAgeyAiaW5jbHVkZXNTdHIyIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RDb25kaXRpb25hbEluY2x1
ZGVzSW5jbHVkZXNTdHIyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0luY2x1ZGVzU3RyMikg
fSB9LAorICAgIHsgIm1peGluQ3VzdG9tQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVz
TWl4aW5DdXN0b21BdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzTWl4aW5DdXN0
b21BdHRyaWJ1dGUpIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAw
IH0gfSwKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlv
bjIzKQotICAgIHsgImluY2x1ZGVzU3RyMyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0luY2x1ZGVz
U3RyMyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNJbmNsdWRlc1N0cjMpIH0gfSwKKyAgICB7
ICJtaXhpbk5vZGVBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNNaXhpbk5vZGVBdHRy
aWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzTWl4aW5Ob2RlQXR0cmlidXRlKSB9IH0s
CiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYKICNp
ZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLSAgICB7ICJpbmNs
dWRlc05vZGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNJbmNsdWRlc05vZGUpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RDb25k
aXRpb25hbEluY2x1ZGVzSW5jbHVkZXNOb2RlKSB9IH0sCisgICAgeyAicGFydGlhbE1peGluQXR0
cmlidXRlRnJvbVBhcnRpYWwiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0
Q29uZGl0aW9uYWxJbmNsdWRlc1BhcnRpYWxNaXhpbkF0dHJpYnV0ZUZyb21QYXJ0aWFsKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9
LAogI2Vsc2UKICAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAogI2VuZGlmCiAj
aWYgKEVOQUJMRShDb25kaXRpb24xMikgJiYgRU5BQkxFKENvbmRpdGlvbjIyKSkgfHwgRU5BQkxF
KENvbmRpdGlvbjIzKQotICAgIHsgImluY2x1ZGVzTWV0aG9kMSIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0Q29uZGl0aW9uYWxJ
bmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2QxKSwgKGludHB0cl90KSAoMCkg
fSB9LAorICAgIHsgIm1peGluT3BlcmF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJv
dG90eXBlRnVuY3Rpb25NaXhpbk9wZXJhdGlvbiksIChpbnRwdHJfdCkgKDApIH0gfSwKICNlbHNl
CiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKICNlbmRpZgogI2lmIChFTkFC
TEUoQ29uZGl0aW9uMTIpICYmIEVOQUJMRShDb25kaXRpb24yMikpIHx8IEVOQUJMRShDb25kaXRp
b24yMykKLSAgICB7ICJpbmNsdWRlc01ldGhvZDIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQ
cm90b3R5cGVGdW5jdGlvbkluY2x1ZGVzTWV0aG9kMiksIChpbnRwdHJfdCkgKDIpIH0gfSwKKyAg
ICB7ICJtaXhpbkNvbXBsZXhPcGVyYXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90
b3R5cGVGdW5jdGlvbk1peGluQ29tcGxleE9wZXJhdGlvbiksIChpbnRwdHJfdCkgKDIpIH0gfSwK
ICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKICNlbmRpZgogI2lm
IChFTkFCTEUoQ29uZGl0aW9uMTIpICYmIEVOQUJMRShDb25kaXRpb24yMikpIHx8IEVOQUJMRShD
b25kaXRpb24yMykKLSAgICB7ICJpbmNsdWRlc01ldGhvZDMiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdENvbmRpdGlvbmFsSW5j
bHVkZXNQcm90b3R5cGVGdW5jdGlvbkluY2x1ZGVzTWV0aG9kMyksIChpbnRwdHJfdCkgKDApIH0g
fSwKKyAgICB7ICJtaXhpbkN1c3RvbU9wZXJhdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0Q29uZGl0aW9uYWxJbmNsdWRl
c1Byb3RvdHlwZUZ1bmN0aW9uTWl4aW5DdXN0b21PcGVyYXRpb24pLCAoaW50cHRyX3QpICgwKSB9
IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYK
ICNpZiAoRU5BQkxFKENvbmRpdGlvbjExKSAmJiBFTkFCTEUoQ29uZGl0aW9uMTIpICYmIEVOQUJM
RShDb25kaXRpb24yMikpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLSAgICB7ICJpbmNsdWRlc01l
dGhvZENvbmRpdGlvbmFsIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJh
d05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rp
b25JbmNsdWRlc01ldGhvZENvbmRpdGlvbmFsKSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsg
Im1peGluQ29uZGl0aW9uYWxPcGVyYXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90
b3R5cGVGdW5jdGlvbk1peGluQ29uZGl0aW9uYWxPcGVyYXRpb24pLCAoaW50cHRyX3QpICgwKSB9
IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYK
ICNpZiAoRU5BQkxFKENvbmRpdGlvbjEyKSAmJiBFTkFCTEUoQ29uZGl0aW9uMjIpKSB8fCBFTkFC
TEUoQ29uZGl0aW9uMjMpCi0gICAgeyAiaW5jbHVkZXNNZXRob2RTZXR0aW5nc0NvbmRpdGlvbmFs
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9u
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9u
Pihqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhv
ZFNldHRpbmdzQ29uZGl0aW9uYWwpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAibWl4aW5T
ZXR0aW5nc0NvbmRpdGlvbmFsT3BlcmF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJv
dG90eXBlRnVuY3Rpb25NaXhpblNldHRpbmdzQ29uZGl0aW9uYWxPcGVyYXRpb24pLCAoaW50cHRy
X3QpICgwKSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0s
CiAjZW5kaWYKICNpZiAoRU5BQkxFKENvbmRpdGlvbjEyKSAmJiBFTkFCTEUoQ29uZGl0aW9uMjIp
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgeyAidGFrZU5vZGVzIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RDb25kaXRp
b25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25UYWtlTm9kZXMpLCAoaW50cHRyX3QpICgwKSB9
IH0sCisgICAgeyAibWl4aW5SZXN1bHRGaWVsZE9wZXJhdGlvbiIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0Q29uZGl0aW9uYWxJ
bmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uTWl4aW5SZXN1bHRGaWVsZE9wZXJhdGlvbiksIChpbnRw
dHJfdCkgKDApIH0gfSwKKyNlbHNlCisgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0g
fSwKKyNlbmRpZgorI2lmIChFTkFCTEUoQ29uZGl0aW9uMTIpICYmIEVOQUJMRShDb25kaXRpb24y
MikgJiYgRU5BQkxFKENvbmRpdGlvbjMzKSkgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorICAgIHsg
InBhcnRpYWxNaXhpbk9wZXJhdGlvbkZyb21QYXJ0aWFsIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RDb25kaXRpb25hbEluY2x1
ZGVzUHJvdG90eXBlRnVuY3Rpb25QYXJ0aWFsTWl4aW5PcGVyYXRpb25Gcm9tUGFydGlhbCksIChp
bnRwdHJfdCkgKDApIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAw
IH0gfSwKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlv
bjIzKQotICAgIHsgIklOQ0xVREVTX0NPTlNUQU5UMSIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdlciwgTm9JbnRyaW5zaWMsIHsgKGxvbmcgbG9u
ZykoMSkgfSB9LAorICAgIHsgIk1JWElOX0NPTlNUQU5UIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2VyLCBOb0ludHJpbnNpYywgeyAobG9uZyBs
b25nKSgxKSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0s
CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykK
LSAgICB7ICJJTkNMVURFU19DT05TVEFOVDIiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIsIE5vSW50cmluc2ljLCB7IChsb25nIGxvbmcpKDIp
IH0gfSwKKyAgICB7ICJNSVhJTl9SRUZMRUNURURfQ09OU1RBTlQiLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIsIE5vSW50cmluc2ljLCB7IChs
b25nIGxvbmcpKDIpIH0gfSwKKyNlbHNlCisgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAw
IH0gfSwKKyNlbmRpZgorI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlv
bjIzKQorICAgIHsgIlBBUlRJQUxfTUlYSU5fQ09OU1RBTlRfRlJPTV9QQVJUSUFMIiwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2VyLCBOb0ludHJp
bnNpYywgeyAobG9uZyBsb25nKSg1KSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5z
aWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYKQEAgLTI1Myw3ICsyODIsNyBAQCB2b2lkIEpTVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGU6CiAjaWYgKEVOQUJMRShDb25kaXRpb24xMikgJiYg
RU5BQkxFKENvbmRpdGlvbjIyKSkgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogICAgIGlmICghZG93
bmNhc3Q8RG9jdW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgp
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0dGluZ3MoKS50ZXN0U2V0dGluZzJFbmFi
bGVkKCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7Ci0g
ICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJpbmNsdWRlc01ldGhvZDEiKSwgc3RybGVuKCJp
bmNsdWRlc01ldGhvZDEiKSk7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJtaXhpbk9w
ZXJhdGlvbiIpLCBzdHJsZW4oIm1peGluT3BlcmF0aW9uIikpOwogICAgICAgICBWTTo6RGVsZXRl
UHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9y
ZUNvbmZpZ3VyYWJsZSk7CiAgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwogICAgICAg
ICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5
TmFtZSwgc2xvdCk7CkBAIC0yNjIsNyArMjkxLDcgQEAgdm9pZCBKU1Rlc3RDb25kaXRpb25hbElu
Y2x1ZGVzUHJvdG90eXBlOgogI2lmIChFTkFCTEUoQ29uZGl0aW9uMTIpICYmIEVOQUJMRShDb25k
aXRpb24yMikpIHx8IEVOQUJMRShDb25kaXRpb24yMykKICAgICBpZiAoIWRvd25jYXN0PERvY3Vt
ZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkudGVzdFNldHRpbmcyRW5hYmxlZCgpKSB7CiAg
ICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwotICAgICAgICBhdXRv
IHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgTENoYXIqPigiaW5jbHVkZXNNZXRob2QyIiksIHN0cmxlbigiaW5jbHVkZXNNZXRo
b2QyIikpOworICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigibWl4aW5Db21wbGV4T3BlcmF0
aW9uIiksIHN0cmxlbigibWl4aW5Db21wbGV4T3BlcmF0aW9uIikpOwogICAgICAgICBWTTo6RGVs
ZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Okln
bm9yZUNvbmZpZ3VyYWJsZSk7CiAgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwogICAg
ICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CkBAIC0yNzEsNyArMzAwLDcgQEAgdm9pZCBKU1Rlc3RDb25kaXRpb25h
bEluY2x1ZGVzUHJvdG90eXBlOgogI2lmIChFTkFCTEUoQ29uZGl0aW9uMTIpICYmIEVOQUJMRShD
b25kaXRpb24yMikpIHx8IEVOQUJMRShDb25kaXRpb24yMykKICAgICBpZiAoIWRvd25jYXN0PERv
Y3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkudGVzdFNldHRpbmcyRW5hYmxlZCgpKSB7
CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwotICAgICAgICBh
dXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPigiaW5jbHVkZXNNZXRob2QzIiksIHN0cmxlbigiaW5jbHVkZXNN
ZXRob2QzIikpOworICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigibWl4aW5DdXN0b21PcGVy
YXRpb24iKSwgc3RybGVuKCJtaXhpbkN1c3RvbU9wZXJhdGlvbiIpKTsKICAgICAgICAgVk06OkRl
bGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJ
Z25vcmVDb25maWd1cmFibGUpOwogICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAg
ICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOwpAQCAtMjgwLDcgKzMwOSw3IEBAIHZvaWQgSlNUZXN0Q29uZGl0aW9u
YWxJbmNsdWRlc1Byb3RvdHlwZToKICNpZiAoRU5BQkxFKENvbmRpdGlvbjExKSAmJiBFTkFCTEUo
Q29uZGl0aW9uMTIpICYmIEVOQUJMRShDb25kaXRpb24yMikpIHx8IEVOQUJMRShDb25kaXRpb24y
MykKICAgICBpZiAoIWRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCku
dGVzdFNldHRpbmcyRW5hYmxlZCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3Bl
cnRpZXMgPSB0cnVlOwotICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiaW5jbHVkZXNNZXRo
b2RDb25kaXRpb25hbCIpLCBzdHJsZW4oImluY2x1ZGVzTWV0aG9kQ29uZGl0aW9uYWwiKSk7Cisg
ICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJtaXhpbkNvbmRpdGlvbmFsT3BlcmF0aW9uIiks
IHN0cmxlbigibWl4aW5Db25kaXRpb25hbE9wZXJhdGlvbiIpKTsKICAgICAgICAgVk06OkRlbGV0
ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25v
cmVDb25maWd1cmFibGUpOwogICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAg
ICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOwpAQCAtMjg5LDcgKzMxOCw3IEBAIHZvaWQgSlNUZXN0Q29uZGl0aW9uYWxJ
bmNsdWRlc1Byb3RvdHlwZToKICNpZiAoRU5BQkxFKENvbmRpdGlvbjEyKSAmJiBFTkFCTEUoQ29u
ZGl0aW9uMjIpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCiAgICAgaWYgKCEoZG93bmNhc3Q8RG9j
dW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0dGluZ3MoKS50ZXN0U2V0dGluZ0VuYWJsZWQoKSAmJiBk
b3duY2FzdDxEb2N1bWVudD4oanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0
KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5zZXR0aW5ncygpLnRlc3RTZXR0aW5nMkVu
YWJsZWQoKSkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7
Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJpbmNsdWRlc01ldGhvZFNldHRpbmdzQ29u
ZGl0aW9uYWwiKSwgc3RybGVuKCJpbmNsdWRlc01ldGhvZFNldHRpbmdzQ29uZGl0aW9uYWwiKSk7
CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJtaXhpblNldHRpbmdzQ29uZGl0aW9uYWxP
cGVyYXRpb24iKSwgc3RybGVuKCJtaXhpblNldHRpbmdzQ29uZGl0aW9uYWxPcGVyYXRpb24iKSk7
CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0
ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAgICAgICAgRGVsZXRlUHJvcGVy
dHlTbG90IHNsb3Q7CiAgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9i
YWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKQEAgLTI5OCw3ICszMjcsMjUgQEAgdm9p
ZCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlOgogI2lmIChFTkFCTEUoQ29uZGl0
aW9uMTIpICYmIEVOQUJMRShDb25kaXRpb24yMikpIHx8IEVOQUJMRShDb25kaXRpb24yMykKICAg
ICBpZiAoIWRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9i
YWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkudGVzdFNl
dHRpbmcyRW5hYmxlZCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMg
PSB0cnVlOwotICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigidGFrZU5vZGVzIiksIHN0cmxl
bigidGFrZU5vZGVzIikpOworICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigibWl4aW5SZXN1
bHRGaWVsZE9wZXJhdGlvbiIpLCBzdHJsZW4oIm1peGluUmVzdWx0RmllbGRPcGVyYXRpb24iKSk7
CisgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0
ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKKyAgICAgICAgRGVsZXRlUHJvcGVy
dHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9i
YWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICB9CisjZW5kaWYKKyNpZiAoRU5B
QkxFKENvbmRpdGlvbjEyKSAmJiBFTkFCTEUoQ29uZGl0aW9uMjIpICYmIEVOQUJMRShDb25kaXRp
b24zMykpIHx8IEVOQUJMRShDb25kaXRpb24yMykKKyAgICBpZiAoIWRvd25jYXN0PERvY3VtZW50
Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkudGVzdFNldHRpbmcyRW5hYmxlZCgpKSB7CisgICAg
ICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOworICAgICAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgTENoYXIqPigicGFydGlhbE1peGluT3BlcmF0aW9uRnJvbVBhcnRpYWwiKSwgc3RybGVu
KCJwYXJ0aWFsTWl4aW5PcGVyYXRpb25Gcm9tUGFydGlhbCIpKTsKKyAgICAgICAgVk06OkRlbGV0
ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25v
cmVDb25maWd1cmFibGUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAg
ICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOworICAgIH0KKyNlbmRpZgorI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwg
RU5BQkxFKENvbmRpdGlvbjIzKQorICAgIGlmICghZG93bmNhc3Q8RG9jdW1lbnQ+KGpzQ2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKS0+c2V0dGluZ3MoKS50ZXN0U2V0dGluZzJFbmFibGVkKCkpIHsKKyAgICAgICAgaGFzRGlz
YWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1l
ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hh
cio+KCJtaXhpblJlYWRPbmx5QXR0cmlidXRlIiksIHN0cmxlbigibWl4aW5SZWFkT25seUF0dHJp
YnV0ZSIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBW
TTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwogICAgICAgICBEZWxl
dGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRo
aXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpAQCAtMzA3LDcgKzM1NCw3
IEBAIHZvaWQgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZToKICNpZiBFTkFCTEUo
Q29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKICAgICBpZiAoIWRvd25jYXN0PERv
Y3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkudGVzdFNldHRpbmcyRW5hYmxlZCgpKSB7
CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwotICAgICAgICBh
dXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPigiaW5jbHVkZXNTdHIxIiksIHN0cmxlbigiaW5jbHVkZXNTdHIx
IikpOworICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigibWl4aW5BdHRyaWJ1dGUiKSwgc3Ry
bGVuKCJtaXhpbkF0dHJpYnV0ZSIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNj
b3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUp
OwogICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpA
QCAtMzE2LDcgKzM2Myw3IEBAIHZvaWQgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlw
ZToKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKICAgICBp
ZiAoIWRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxP
YmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkudGVzdFNldHRp
bmcyRW5hYmxlZCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0
cnVlOwotICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiaW5jbHVkZXNTdHIyIiksIHN0cmxl
bigiaW5jbHVkZXNTdHIyIikpOworICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigibWl4aW5D
dXN0b21BdHRyaWJ1dGUiKSwgc3RybGVuKCJtaXhpbkN1c3RvbUF0dHJpYnV0ZSIpKTsKICAgICAg
ICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVy
dHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwogICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qg
c2xvdDsKICAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVj
dCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpAQCAtMzI1LDcgKzM3Miw3IEBAIHZvaWQgSlNUZXN0
Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZToKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8
IEVOQUJMRShDb25kaXRpb24yMykKICAgICBpZiAoIWRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSktPnNldHRpbmdzKCkudGVzdFNldHRpbmcyRW5hYmxlZCgpKSB7CiAgICAgICAgIGhhc0Rp
c2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwotICAgICAgICBhdXRvIHByb3BlcnR5TmFt
ZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPigiaW5jbHVkZXNTdHIzIiksIHN0cmxlbigiaW5jbHVkZXNTdHIzIikpOworICAgICAgICBh
dXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPigibWl4aW5Ob2RlQXR0cmlidXRlIiksIHN0cmxlbigibWl4aW5O
b2RlQXR0cmlidXRlIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2Nv
cGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CiAgICAg
ICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CkBAIC0zMzQs
NyArMzgxLDcgQEAgdm9pZCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlOgogI2lm
IEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogICAgIGlmICghZG93
bmNhc3Q8RG9jdW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgp
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0dGluZ3MoKS50ZXN0U2V0dGluZzJFbmFi
bGVkKCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7Ci0g
ICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJpbmNsdWRlc05vZGUiKSwgc3RybGVuKCJpbmNs
dWRlc05vZGUiKSk7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJwYXJ0aWFsTWl4aW5B
dHRyaWJ1dGVGcm9tUGFydGlhbCIpLCBzdHJsZW4oInBhcnRpYWxNaXhpbkF0dHJpYnV0ZUZyb21Q
YXJ0aWFsIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0s
IFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CiAgICAgICAgIERl
bGV0ZVByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHko
dGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CkBAIC00MjksMzkgKzQ3
NiwzOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzCiB9CiAKICNp
ZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLXN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzSW5jbHVkZXNTdHIxR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RDb25kaXRpb25hbEluY2x1
ZGVzJiB0aGlzT2JqZWN0KQorc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFs
SW5jbHVkZXNNaXhpblJlYWRPbmx5QXR0cmlidXRlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzJiB0aGlzT2JqZWN0KQog
ewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuaW5jbHVkZXNTdHIxKCkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETERPTVN0cmluZz4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
aW1wbC5taXhpblJlYWRPbmx5QXR0cmlidXRlKCkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpz
VGVzdENvbmRpdGlvbmFsSW5jbHVkZXNJbmNsdWRlc1N0cjEoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQor
RW5jb2RlZEpTVmFsdWUganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc01peGluUmVhZE9ubHlBdHRy
aWJ1dGUoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNU
ZXN0Q29uZGl0aW9uYWxJbmNsdWRlcz46OmdldDxqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzSW5j
bHVkZXNTdHIxR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiaW5jbHVkZXNTdHIxIik7CisgICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPjo6Z2V0PGpzVGVzdENvbmRpdGlv
bmFsSW5jbHVkZXNNaXhpblJlYWRPbmx5QXR0cmlidXRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAibWl4aW5S
ZWFkT25seUF0dHJpYnV0ZSIpOwogfQogCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDb25kaXRpb24y
MikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXNJbmNsdWRlc1N0cjJHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMmIHRoaXNPYmplY3QpCitz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc01peGluQXR0cmli
dXRlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RDb25k
aXRpb25hbEluY2x1ZGVzJiB0aGlzT2JqZWN0KQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwot
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExET01TdHJpbmc+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuaW5jbHVkZXNTdHIyKCkpKSk7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETERPTVN0cmluZz4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5taXhpbkF0dHJpYnV0ZSgpKSkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzSW5jbHVkZXNTdHIy
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFsSW5j
bHVkZXNNaXhpbkF0dHJpYnV0ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPjo6Z2V0PGpzVGVzdENvbmRpdGlv
bmFsSW5jbHVkZXNJbmNsdWRlc1N0cjJHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJpbmNsdWRlc1N0cjIiKTsK
KyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+OjpnZXQ8
anNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc01peGluQXR0cmlidXRlR2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
bWl4aW5BdHRyaWJ1dGUiKTsKIH0KIAogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIp
IHx8IEVOQUJMRShDb25kaXRpb24yMykKLXN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RDb25k
aXRpb25hbEluY2x1ZGVzSW5jbHVkZXNTdHIyU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzJiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKQorc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdENvbmRpdGlvbmFsSW5jbHVk
ZXNNaXhpbkF0dHJpYnV0ZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
IHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNDY5LDg2ICs1
MTYsMTAyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RDb25kaXRpb25hbEkKICAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdIHsKLSAgICAgICAgcmV0dXJuIGltcGwuc2V0SW5jbHVkZXNTdHIyKFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIGltcGwuc2V0TWl4aW5BdHRyaWJ1dGUoV1RGTW92
ZShuYXRpdmVWYWx1ZSkpOwogICAgIH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIHNl
dEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNJbmNsdWRlc1N0cjIoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzTWl4aW5B
dHRyaWJ1dGUoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcz46OnNldDxzZXRKU1Rlc3RD
b25kaXRpb25hbEluY2x1ZGVzSW5jbHVkZXNTdHIyU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJpbmNsdWRlc1N0cjIiKTsKKyAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+OjpzZXQ8c2V0SlNUZXN0Q29u
ZGl0aW9uYWxJbmNsdWRlc01peGluQXR0cmlidXRlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJtaXhpbkF0dHJpYnV0ZSIpOwogfQogCiAjZW5k
aWYKIAogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNJbmNsdWRlc1N0cjNH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdENvbmRpdGlv
bmFsSW5jbHVkZXMmIHRoaXNPYmplY3QpCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0Q29u
ZGl0aW9uYWxJbmNsdWRlc01peGluQ3VzdG9tQXR0cmlidXRlR2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzJiB0aGlzT2Jq
ZWN0KQogewogICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICByZXR1
cm4gdGhpc09iamVjdC5pbmNsdWRlc1N0cjMobGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgcmV0
dXJuIHRoaXNPYmplY3QubWl4aW5DdXN0b21BdHRyaWJ1dGUobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNJbmNsdWRlc1N0
cjMoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0Q29uZGl0aW9uYWxJ
bmNsdWRlc01peGluQ3VzdG9tQXR0cmlidXRlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+OjpnZXQ8anNUZXN0
Q29uZGl0aW9uYWxJbmNsdWRlc0luY2x1ZGVzU3RyM0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImluY2x1ZGVz
U3RyMyIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRl
cz46OmdldDxqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzTWl4aW5DdXN0b21BdHRyaWJ1dGVHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJtaXhpbkN1c3RvbUF0dHJpYnV0ZSIpOwogfQogCiAjZW5kaWYKIAogI2lm
IEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotc3RhdGljIGlubGlu
ZSBib29sIHNldEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNJbmNsdWRlc1N0cjNTZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVk
ZXMmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNU
ZXN0Q29uZGl0aW9uYWxJbmNsdWRlc01peGluQ3VzdG9tQXR0cmlidXRlU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgdGhpc09iamVjdC5zZXRJbmNsdWRlc1N0cjMobGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOworICAgIHRoaXNPYmplY3Quc2V0TWl4aW5DdXN0b21B
dHRyaWJ1dGUobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIHNldEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNJbmNsdWRlc1N0cjMoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RDb25kaXRpb25hbElu
Y2x1ZGVzTWl4aW5DdXN0b21BdHRyaWJ1dGUoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQogewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRl
cz46OnNldDxzZXRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzSW5jbHVkZXNTdHIzU2V0dGVyPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJpbmNsdWRlc1N0
cjMiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+
OjpzZXQ8c2V0SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc01peGluQ3VzdG9tQXR0cmlidXRlU2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJtaXhp
bkN1c3RvbUF0dHJpYnV0ZSIpOwogfQogCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDb25kaXRpb24y
MikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXNJbmNsdWRlc05vZGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMmIHRoaXNPYmplY3QpCitz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc01peGluTm9kZUF0
dHJpYnV0ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0
Q29uZGl0aW9uYWxJbmNsdWRlcyYgdGhpc09iamVjdCkKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMSW50ZXJmYWNl
PE5vZGU+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwg
dGhyb3dTY29wZSwgaW1wbC5pbmNsdWRlc05vZGUoKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMSW50ZXJmYWNlPE5vZGU+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCAqdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5taXhpbk5v
ZGVBdHRyaWJ1dGUoKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0Q29uZGl0aW9uYWxJ
bmNsdWRlc0luY2x1ZGVzTm9kZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzTWl4aW5Ob2RlQXR0cmlidXRlKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkKIHsKLSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVk
ZXM+OjpnZXQ8anNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0luY2x1ZGVzTm9kZUdldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgImluY2x1ZGVzTm9kZSIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0Q29u
ZGl0aW9uYWxJbmNsdWRlcz46OmdldDxqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzTWl4aW5Ob2Rl
QXR0cmlidXRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAibWl4aW5Ob2RlQXR0cmlidXRlIik7CiB9CiAKICNl
bmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1z
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0luY2x1ZGVzTm9k
ZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0Q29uZGl0
aW9uYWxJbmNsdWRlcyYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3N0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzTWl4aW5Ob2RlQXR0cmlidXRlU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RDb25kaXRpb25hbElu
Y2x1ZGVzJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwotICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETEludGVyZmFjZTxOb2RlPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBdHRyaWJ1dGVU
eXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsICJUZXN0Q29uZGl0aW9uYWxJbmNs
dWRlcyIsICJpbmNsdWRlc05vZGUiLCAiTm9kZSIpOyB9KTsKKyAgICBhdXRvIG5hdGl2ZVZhbHVl
ID0gY29udmVydDxJRExJbnRlcmZhY2U8Tm9kZT4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
LCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93
U2NvcGUmIHNjb3BlKSB7IHRocm93QXR0cmlidXRlVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMiLCAibWl4aW5Ob2RlQXR0cmlidXRl
IiwgIk5vZGUiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAgICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7Ci0gICAgICAgIHJldHVybiBpbXBsLnNldEluY2x1ZGVzTm9kZSgqbmF0aXZl
VmFsdWUpOworICAgICAgICByZXR1cm4gaW1wbC5zZXRNaXhpbk5vZGVBdHRyaWJ1dGUoKm5hdGl2
ZVZhbHVlKTsKICAgICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBzZXRKU1Rlc3RD
b25kaXRpb25hbEluY2x1ZGVzSW5jbHVkZXNOb2RlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc01peGluTm9kZUF0dHJp
YnV0ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPjo6c2V0PHNldEpTVGVzdENvbmRp
dGlvbmFsSW5jbHVkZXNNaXhpbk5vZGVBdHRyaWJ1dGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm1peGluTm9kZUF0dHJpYnV0ZSIpOworfQor
CisjZW5kaWYKKworI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIz
KQorc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQYXJ0aWFs
TWl4aW5BdHRyaWJ1dGVGcm9tUGFydGlhbEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyYgdGhpc09iamVjdCkKK3sKKyAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMRG91YmxlPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLnBh
cnRpYWxNaXhpbkF0dHJpYnV0ZUZyb21QYXJ0aWFsKCkpKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVl
IGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQYXJ0aWFsTWl4aW5BdHRyaWJ1dGVGcm9tUGFydGlh
bChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RD
b25kaXRpb25hbEluY2x1ZGVzPjo6c2V0PHNldEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNJbmNs
dWRlc05vZGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgImluY2x1ZGVzTm9kZSIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0Q29u
ZGl0aW9uYWxJbmNsdWRlcz46OmdldDxqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUGFydGlhbE1p
eGluQXR0cmlidXRlRnJvbVBhcnRpYWxHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJwYXJ0aWFsTWl4aW5BdHRy
aWJ1dGVGcm9tUGFydGlhbCIpOwogfQogCiAjZW5kaWYKIAogI2lmIChFTkFCTEUoQ29uZGl0aW9u
MTIpICYmIEVOQUJMRShDb25kaXRpb24yMikpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLXN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJv
dG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZDFCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElE
TE9wZXJhdGlvbjxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPjo6Q2xhc3NQYXJhbWV0ZXIgY2Fz
dGVkVGhpcykKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDb25kaXRp
b25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25NaXhpbk9wZXJhdGlvbkJvZHkoSlNDOjpKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+OjpDbGFz
c1BhcmFtZXRlciBjYXN0ZWRUaGlzKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKQEAgLTU1NiwxOSArNjE5LDE5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwot
ICAgIGltcGwuaW5jbHVkZXNNZXRob2QxKCk7CisgICAgaW1wbC5taXhpbk9wZXJhdGlvbigpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1
bmN0aW9uSW5jbHVkZXNNZXRob2QxKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uTWl4aW5PcGVyYXRpb24oSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcz46OmNh
bGw8anNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRo
b2QxQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJpbmNsdWRlc01ldGhv
ZDEiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+
OjpjYWxsPGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbk1peGluT3Bl
cmF0aW9uQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJtaXhpbk9wZXJh
dGlvbiIpOwogfQogCiAjZW5kaWYKIAogI2lmIChFTkFCTEUoQ29uZGl0aW9uMTIpICYmIEVOQUJM
RShDb25kaXRpb24yMikpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLXN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rp
b25JbmNsdWRlc01ldGhvZDJCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxK
U1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKK3N0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVz
UHJvdG90eXBlRnVuY3Rpb25NaXhpbkNvbXBsZXhPcGVyYXRpb25Cb2R5KEpTQzo6SlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5
cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPjo6Q2xhc3NQYXJh
bWV0ZXIgY2FzdGVkVGhpcykKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CkBAIC01ODQsMzcgKzY0NywzNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0CiAgICAgYXV0byBzdHJBcmcgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVT
Y29wZSBhcmd1bWVudDEgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwotICAgIGF1
dG8gb2JqQXJnID0gY29udmVydDxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlw
ZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAxLCAib2JqQXJnIiwgIlRlc3RDb25k
aXRpb25hbEluY2x1ZGVzIiwgImluY2x1ZGVzTWV0aG9kMiIsICJUZXN0T2JqIik7IH0pOworICAg
IGF1dG8gb2JqQXJnID0gY29udmVydDxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50
VHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAxLCAib2JqQXJnIiwgIlRlc3RD
b25kaXRpb25hbEluY2x1ZGVzIiwgIm1peGluQ29tcGxleE9wZXJhdGlvbiIsICJUZXN0T2JqIik7
IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0
b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRU
aGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5pbmNsdWRlc01ldGhvZDIoKmNv
bnRleHQsIFdURk1vdmUoc3RyQXJnKSwgKm9iakFyZykpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxUZXN0T2Jq
Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhy
b3dTY29wZSwgaW1wbC5taXhpbkNvbXBsZXhPcGVyYXRpb24oKmNvbnRleHQsIFdURk1vdmUoc3Ry
QXJnKSwgKm9iakFyZykpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2QyKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1By
b3RvdHlwZUZ1bmN0aW9uTWl4aW5Db21wbGV4T3BlcmF0aW9uKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSURM
T3BlcmF0aW9uPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+OjpjYWxsPGpzVGVzdENvbmRpdGlv
bmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbkluY2x1ZGVzTWV0aG9kMkJvZHk+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAiaW5jbHVkZXNNZXRob2QyIik7CisgICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPjo6Y2FsbDxqc1Rlc3RDb25k
aXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25NaXhpbkNvbXBsZXhPcGVyYXRpb25Cb2R5
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm1peGluQ29tcGxleE9wZXJhdGlv
biIpOwogfQogCiAjZW5kaWYKIAogI2lmIChFTkFCTEUoQ29uZGl0aW9uMTIpICYmIEVOQUJMRShD
b25kaXRpb24yMikpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLXN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25J
bmNsdWRlc01ldGhvZDNCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rl
c3RDb25kaXRpb25hbEluY2x1ZGVzPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKK3N0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJv
dG90eXBlRnVuY3Rpb25NaXhpbkN1c3RvbU9wZXJhdGlvbkJvZHkoSlNDOjpKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5h
bWUgSURMT3BlcmF0aW9uPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+OjpDbGFzc1BhcmFtZXRl
ciBjYXN0ZWRUaGlzKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFt
ZSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIChKU1ZhbHVlOjplbmNvZGUo
Y2FzdGVkVGhpcy0+aW5jbHVkZXNNZXRob2QzKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZy
YW1lKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKEpTVmFsdWU6OmVu
Y29kZShjYXN0ZWRUaGlzLT5taXhpbkN1c3RvbU9wZXJhdGlvbigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgKmNhbGxGcmFtZSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2QzKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1By
b3RvdHlwZUZ1bmN0aW9uTWl4aW5DdXN0b21PcGVyYXRpb24oSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcz46OmNhbGw8anNUZXN0Q29uZGl0aW9u
YWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2QzQm9keT4oKmxleGljYWxH
bG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJpbmNsdWRlc01ldGhvZDMiKTsKKyAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+OjpjYWxsPGpzVGVzdENvbmRp
dGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbk1peGluQ3VzdG9tT3BlcmF0aW9uQm9keT4o
KmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJtaXhpbkN1c3RvbU9wZXJhdGlvbiIp
OwogfQogCiAjZW5kaWYKIAogI2lmIChFTkFCTEUoQ29uZGl0aW9uMTEpICYmIEVOQUJMRShDb25k
aXRpb24xMikgJiYgRU5BQkxFKENvbmRpdGlvbjIyKSkgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQot
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVk
ZXNQcm90b3R5cGVGdW5jdGlvbkluY2x1ZGVzTWV0aG9kQ29uZGl0aW9uYWxCb2R5KEpTQzo6SlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJh
bWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPjo6Q2xh
c3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25NaXhpbkNvbmRpdGlv
bmFsT3BlcmF0aW9uQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0
Q29uZGl0aW9uYWxJbmNsdWRlcz46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCiB7CiAgICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNjIyLDE5ICs2ODUsMTkgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJB
TShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5pbmNsdWRlc01ldGhvZENvbmRpdGlv
bmFsKCk7CisgICAgaW1wbC5taXhpbkNvbmRpdGlvbmFsT3BlcmF0aW9uKCk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25JbmNs
dWRlc01ldGhvZENvbmRpdGlvbmFsKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uTWl4aW5Db25kaXRpb25hbE9w
ZXJhdGlvbihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RDb25kaXRpb25hbElu
Y2x1ZGVzPjo6Y2FsbDxqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25J
bmNsdWRlc01ldGhvZENvbmRpdGlvbmFsQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxs
RnJhbWUsICJpbmNsdWRlc01ldGhvZENvbmRpdGlvbmFsIik7CisgICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPjo6Y2FsbDxqc1Rlc3RDb25kaXRpb25hbElu
Y2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25NaXhpbkNvbmRpdGlvbmFsT3BlcmF0aW9uQm9keT4oKmxl
eGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJtaXhpbkNvbmRpdGlvbmFsT3BlcmF0aW9u
Iik7CiB9CiAKICNlbmRpZgogCiAjaWYgKEVOQUJMRShDb25kaXRpb24xMikgJiYgRU5BQkxFKENv
bmRpdGlvbjIyKSkgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbklu
Y2x1ZGVzTWV0aG9kU2V0dGluZ3NDb25kaXRpb25hbEJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUg
SURMT3BlcmF0aW9uPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+OjpDbGFzc1BhcmFtZXRlciBj
YXN0ZWRUaGlzKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENvbmRp
dGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbk1peGluU2V0dGluZ3NDb25kaXRpb25hbE9w
ZXJhdGlvbkJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
OjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdENvbmRp
dGlvbmFsSW5jbHVkZXM+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQogewogICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTY0MiwzMiArNzA1LDUyIEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oY2Fs
bEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIHRo
cm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwuaW5jbHVkZXNNZXRob2RTZXR0aW5nc0NvbmRp
dGlvbmFsKCk7CisgICAgaW1wbC5taXhpblNldHRpbmdzQ29uZGl0aW9uYWxPcGVyYXRpb24oKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVG
dW5jdGlvbkluY2x1ZGVzTWV0aG9kU2V0dGluZ3NDb25kaXRpb25hbChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlv
bk1peGluU2V0dGluZ3NDb25kaXRpb25hbE9wZXJhdGlvbihKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPjo6Y2FsbDxqc1Rlc3RDb25kaXRpb25h
bEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZFNldHRpbmdzQ29uZGl0aW9u
YWxCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgImluY2x1ZGVzTWV0aG9k
U2V0dGluZ3NDb25kaXRpb25hbCIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0Q29u
ZGl0aW9uYWxJbmNsdWRlcz46OmNhbGw8anNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlw
ZUZ1bmN0aW9uTWl4aW5TZXR0aW5nc0NvbmRpdGlvbmFsT3BlcmF0aW9uQm9keT4oKmxleGljYWxH
bG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJtaXhpblNldHRpbmdzQ29uZGl0aW9uYWxPcGVyYXRp
b24iKTsKIH0KIAogI2VuZGlmCiAKICNpZiAoRU5BQkxFKENvbmRpdGlvbjEyKSAmJiBFTkFCTEUo
Q29uZGl0aW9uMjIpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1zdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9u
VGFrZU5vZGVzQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0Q29u
ZGl0aW9uYWxJbmNsdWRlcz46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCitzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlw
ZUZ1bmN0aW9uTWl4aW5SZXN1bHRGaWVsZE9wZXJhdGlvbkJvZHkoSlNDOjpKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5h
bWUgSURMT3BlcmF0aW9uPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+OjpDbGFzc1BhcmFtZXRl
ciBjYXN0ZWRUaGlzKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFt
ZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBhdXRvIGlt
cGxSZXN1bHQgPSBpbXBsLnRha2VOb2RlcygpOworICAgIGF1dG8gaW1wbFJlc3VsdCA9IGltcGwu
bWl4aW5SZXN1bHRGaWVsZE9wZXJhdGlvbigpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExTZXF1ZW5jZTxJRExJbnRlcmZhY2U8Tm9k
ZT4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBX
VEZNb3ZlKGltcGxSZXN1bHQubm9kZXMpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvblRha2VOb2Rl
cyhKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVk
ZXNQcm90b3R5cGVGdW5jdGlvbk1peGluUmVzdWx0RmllbGRPcGVyYXRpb24oSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcz46OmNhbGw8anNUZXN0
Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uTWl4aW5SZXN1bHRGaWVsZE9wZXJh
dGlvbkJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAibWl4aW5SZXN1bHRG
aWVsZE9wZXJhdGlvbiIpOworfQorCisjZW5kaWYKKworI2lmIChFTkFCTEUoQ29uZGl0aW9uMTIp
ICYmIEVOQUJMRShDb25kaXRpb24yMikgJiYgRU5BQkxFKENvbmRpdGlvbjMzKSkgfHwgRU5BQkxF
KENvbmRpdGlvbjIzKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvblBhcnRpYWxNaXhpbk9wZXJhdGlvbkZy
b21QYXJ0aWFsQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0Q29u
ZGl0aW9uYWxJbmNsdWRlcz46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCit7CisgICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKKyAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKKyAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOworICAgIHRocm93U2NvcGUucmVsZWFzZSgpOworICAgIGltcGwu
cGFydGlhbE1peGluT3BlcmF0aW9uRnJvbVBhcnRpYWwoKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvblBhcnRpYWxNaXhpbk9w
ZXJhdGlvbkZyb21QYXJ0aWFsKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXM+OjpjYWxsPGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5
cGVGdW5jdGlvblRha2VOb2Rlc0JvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1l
LCAidGFrZU5vZGVzIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RDb25kaXRpb25h
bEluY2x1ZGVzPjo6Y2FsbDxqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rp
b25QYXJ0aWFsTWl4aW5PcGVyYXRpb25Gcm9tUGFydGlhbEJvZHk+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCAqY2FsbEZyYW1lLCAicGFydGlhbE1peGluT3BlcmF0aW9uRnJvbVBhcnRpYWwiKTsKIH0K
IAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmgJKHJl
dmlzaW9uIDI2NjcyNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDE1ICs2
MCwxNSBAQCBwdWJsaWM6CiAKICAgICAvLyBDdXN0b20gYXR0cmlidXRlcwogI2lmIEVOQUJMRShD
b25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIEpTQzo6SlNWYWx1ZSBpbmNs
dWRlc1N0cjMoSlNDOjpKU0dsb2JhbE9iamVjdCYpIGNvbnN0OworICAgIEpTQzo6SlNWYWx1ZSBt
aXhpbkN1c3RvbUF0dHJpYnV0ZShKU0M6OkpTR2xvYmFsT2JqZWN0JikgY29uc3Q7CiAjZW5kaWYK
ICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLSAgICB2b2lk
IHNldEluY2x1ZGVzU3RyMyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsKKyAg
ICB2b2lkIHNldE1peGluQ3VzdG9tQXR0cmlidXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6
OkpTVmFsdWUpOwogI2VuZGlmCiAKICAgICAvLyBDdXN0b20gZnVuY3Rpb25zCiAjaWYgKEVOQUJM
RShDb25kaXRpb24xMikgJiYgRU5BQkxFKENvbmRpdGlvbjIyKSkgfHwgRU5BQkxFKENvbmRpdGlv
bjIzKQotICAgIEpTQzo6SlNWYWx1ZSBpbmNsdWRlc01ldGhvZDMoSlNDOjpKU0dsb2JhbE9iamVj
dCYsIEpTQzo6Q2FsbEZyYW1lJik7CisgICAgSlNDOjpKU1ZhbHVlIG1peGluQ3VzdG9tT3BlcmF0
aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkNhbGxGcmFtZSYpOwogI2VuZGlmCiBwcm90
ZWN0ZWQ6CiAgICAgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyhKU0M6OlN0cnVjdHVyZSosIEpT
RE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RDb25kaXRpb25hbEluY2x1ZGVzPiYmKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmNsdWRlcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEluY2x1ZGVzLmNwcAkocmV2aXNpb24gMjY2NzI3KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluY2x1ZGVzLmNwcAkobm9uZXhpc3RlbnQp
CkBAIC0xLDYgKzAsMCBAQAotLyoKLSAgICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGp1c3QgdG8g
dGVsbCBidWlsZCBzY3JpcHRzIHRoYXQgSlNUZXN0SW5jbHVkZXMuaCBhbmQKLSAgICBKU1Rlc3RJ
bmNsdWRlcy5jcHAgYXJlIGNyZWF0ZWQgZm9yIFRlc3RJbmNsdWRlcy5pZGwsIGFuZCB0aHVzCi0g
ICAgcHJldmVudCB0aGUgYnVpbGQgc2NyaXB0cyBmcm9tIHRyeWluZyB0byBnZW5lcmF0ZSBKU1Rl
c3RJbmNsdWRlcy5oIGFuZAotICAgIEpTVGVzdEluY2x1ZGVzLmNwcCBhdCBldmVyeSBidWlsZC4g
VGhpcyBmaWxlIG11c3Qgbm90IGJlIHRyaWVkIHRvIGNvbXBpbGUuCi0qLwpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluY2x1ZGVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdElu
Y2x1ZGVzLmgJKHJldmlzaW9uIDI2NjcyNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmNsdWRlcy5oCShub25leGlzdGVudCkKQEAgLTEsNiArMCww
IEBACi0vKgotICAgIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQganVzdCB0byB0ZWxsIGJ1aWxkIHNj
cmlwdHMgdGhhdCBKU1Rlc3RJbmNsdWRlcy5oIGFuZAotICAgIEpTVGVzdEluY2x1ZGVzLmNwcCBh
cmUgY3JlYXRlZCBmb3IgVGVzdEluY2x1ZGVzLmlkbCwgYW5kIHRodXMKLSAgICBwcmV2ZW50IHRo
ZSBidWlsZCBzY3JpcHRzIGZyb20gdHJ5aW5nIHRvIGdlbmVyYXRlIEpTVGVzdEluY2x1ZGVzLmgg
YW5kCi0gICAgSlNUZXN0SW5jbHVkZXMuY3BwIGF0IGV2ZXJ5IGJ1aWxkLiBUaGlzIGZpbGUgbXVz
dCBub3QgYmUgdHJpZWQgdG8gY29tcGlsZS4KLSovCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNw
cAkocmV2aXNpb24gMjY2NzI3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDExICs1NCwx
MSBAQAogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwg
RU5BQkxFKENvbmRpdGlvbjEyKQotI2luY2x1ZGUgIkpTRE9NQ29udmVydE51bWJlcnMuaCIKICNp
bmNsdWRlICJUZXN0U3VwcGxlbWVudGFsQnVpbHRpbnMuaCIKICNlbmRpZgogCiAjaWYgRU5BQkxF
KENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpIHx8IEVOQUJMRShDb25kaXRpb24y
MikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorI2luY2x1ZGUgIkpTRE9NQ29udmVydE51bWJlcnMu
aCIKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgog
I2VuZGlmCkBAIC03NSwyMiArNzUsMjUgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIC8vIEZ1bmN0
aW9ucwogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1K
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBl
RnVuY3Rpb25JbmNsdWRlc01ldGhvZDEoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZy
YW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNl
UHJvdG90eXBlRnVuY3Rpb25NaXhpbk9wZXJhdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpDYWxsRnJhbWUqKTsKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxF
KENvbmRpdGlvbjIzKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdElu
dGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2QyKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uTWl4aW5Db21wbGV4T3BlcmF0aW9uKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2VuZGlmCiAjaWYgRU5BQkxF
KENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1KU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01l
dGhvZDMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25N
aXhpbkN1c3RvbU9wZXJhdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUq
KTsKICNlbmRpZgogI2lmIChFTkFCTEUoQ29uZGl0aW9uMTEpICYmIEVOQUJMRShDb25kaXRpb24y
MikpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkluY2x1ZGVzTWV0aG9kQ29uZGl0
aW9uYWwoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25N
aXhpbkNvbmRpdGlvbmFsT3BlcmF0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxG
cmFtZSopOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0
aW9uMjMpCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNl
UHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZFNldHRpbmdzQ29uZGl0aW9uYWwoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25NaXhpblNldHRpbmdz
Q29uZGl0aW9uYWxPcGVyYXRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1l
Kik7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24y
MykKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90
b3R5cGVGdW5jdGlvblRha2VOb2RlcyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJh
bWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQ
cm90b3R5cGVGdW5jdGlvbk1peGluUmVzdWx0RmllbGRPcGVyYXRpb24oSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CisjZW5kaWYKKyNpZiAoRU5BQkxFKENvbmRpdGlvbjIy
KSAmJiBFTkFCTEUoQ29uZGl0aW9uMzMpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCitKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rp
b25QYXJ0aWFsTWl4aW5PcGVyYXRpb25Gcm9tUGFydGlhbChKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpDYWxsRnJhbWUqKTsKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5B
QkxFKENvbmRpdGlvbjEyKQogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMShKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKQEAgLTExNSwxOSArMTE4LDIyIEBAIEpTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3QKIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNl
Q29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6RW5jb2RlZEpTVmFsdWUpOwogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENv
bmRpdGlvbjIzKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbmNsdWRlc1N0
cjEoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVy
dHlOYW1lKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlTWl4aW5SZWFkT25s
eUF0dHJpYnV0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpQcm9wZXJ0eU5hbWUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFC
TEUoQ29uZGl0aW9uMjMpCi1KU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUluY2x1
ZGVzU3RyMihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOwotYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VJbmNsdWRlc1N0cjIoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUp
OworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VNaXhpbkF0dHJpYnV0ZShKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUp
OworYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VNaXhpbkF0dHJpYnV0ZShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAjZW5kaWYK
ICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLUpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlSW5jbHVkZXNTdHIzKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1ib29sIHNldEpT
VGVzdEludGVyZmFjZUluY2x1ZGVzU3RyMyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdEludGVyZmFjZU1peGluQ3VzdG9tQXR0cmlidXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdElu
dGVyZmFjZU1peGluQ3VzdG9tQXR0cmlidXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKICNlbmRpZgogI2lmIEVOQUJMRShD
b25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RJbnRlcmZhY2VJbmNsdWRlc05vZGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLWJvb2wgc2V0SlNUZXN0SW50ZXJmYWNl
SW5jbHVkZXNOb2RlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OkVuY29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNl
TWl4aW5Ob2RlQXR0cmlidXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdEludGVyZmFjZU1peGluTm9k
ZUF0dHJpYnV0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpFbmNvZGVkSlNWYWx1ZSk7CisjZW5kaWYKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVO
QUJMRShDb25kaXRpb24yMykKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlUGFy
dGlhbE1peGluQXR0cmlidXRlRnJvbVBhcnRpYWwoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKICNlbmRpZgogI2lmIEVOQUJMRShD
b25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvclN1cHBsZW1lbnRhbFN0YXRpY1JlYWRPbmx5QXR0cihK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5h
bWUpOwpAQCAtMTk1LDEyICsyMDEsMTcgQEAgdXNpbmcgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0
b3IgPSBKU0RPTQogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEludGVyZmFjZUNv
bnN0cnVjdG9yVGFibGVWYWx1ZXNbXSA9CiB7CiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgeyAiSU5DTFVERVNfQ09OU1RBTlQxIiwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2VyLCBOb0ludHJpbnNp
YywgeyAobG9uZyBsb25nKSgxKSB9IH0sCisgICAgeyAiTUlYSU5fQ09OU1RBTlQiLCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIsIE5vSW50cmlu
c2ljLCB7IChsb25nIGxvbmcpKDEpIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNp
YywgeyAwLCAwIH0gfSwKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxF
KENvbmRpdGlvbjIzKQotICAgIHsgIklOQ0xVREVTX0NPTlNUQU5UMiIsIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdlciwgTm9JbnRyaW5zaWMsIHsg
KGxvbmcgbG9uZykoMikgfSB9LAorICAgIHsgIk1JWElOX1JFRkxFQ1RFRF9DT05TVEFOVCIsIEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdlciwgTm9J
bnRyaW5zaWMsIHsgKGxvbmcgbG9uZykoMikgfSB9LAorI2Vsc2UKKyAgICB7IDAsIDAsIE5vSW50
cmluc2ljLCB7IDAsIDAgfSB9LAorI2VuZGlmCisjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMjMpCisgICAgeyAiUEFSVElBTF9NSVhJTl9DT05TVEFOVF9GUk9NX1BB
UlRJQUwiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFudElu
dGVnZXIsIE5vSW50cmluc2ljLCB7IChsb25nIGxvbmcpKDUpIH0gfSwKICNlbHNlCiAgICAgeyAw
LCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKICNlbmRpZgpAQCAtMjMyLDExICsyNDMsMTQg
QEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEludGVyZgogfTsKIAogI2lmIEVO
QUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotc3RhdGljX2Fzc2VydChU
ZXN0SW50ZXJmYWNlOjpJTkNMVURFU19DT05TVEFOVDEgPT0gMSwgIklOQ0xVREVTX0NPTlNUQU5U
MSBpbiBUZXN0SW50ZXJmYWNlIGRvZXMgbm90IG1hdGNoIHZhbHVlIGZyb20gSURMIik7CitzdGF0
aWNfYXNzZXJ0KFRlc3RJbnRlcmZhY2U6Ok1JWElOX0NPTlNUQU5UID09IDEsICJNSVhJTl9DT05T
VEFOVCBpbiBUZXN0SW50ZXJmYWNlIGRvZXMgbm90IG1hdGNoIHZhbHVlIGZyb20gSURMIik7CiAj
ZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKIHN0
YXRpY19hc3NlcnQoVGVzdEludGVyZmFjZTo6Q09OU1RfSU1QTCA9PSAyLCAiQ09OU1RfSU1QTCBp
biBUZXN0SW50ZXJmYWNlIGRvZXMgbm90IG1hdGNoIHZhbHVlIGZyb20gSURMIik7CiAjZW5kaWYK
KyNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKK3N0YXRpY19h
c3NlcnQoVGVzdEludGVyZmFjZTo6UEFSVElBTF9NSVhJTl9DT05TVEFOVF9GUk9NX1BBUlRJQUwg
PT0gNSwgIlBBUlRJQUxfTUlYSU5fQ09OU1RBTlRfRlJPTV9QQVJUSUFMIGluIFRlc3RJbnRlcmZh
Y2UgZG9lcyBub3QgbWF0Y2ggdmFsdWUgZnJvbSBJREwiKTsKKyNlbmRpZgogI2lmIEVOQUJMRShD
b25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogc3RhdGljX2Fzc2VydChUZXN0U3Vw
cGxlbWVudGFsOjpTVVBQTEVNRU5UQUxDT05TVEFOVDEgPT0gMSwgIlNVUFBMRU1FTlRBTENPTlNU
QU5UMSBpbiBUZXN0U3VwcGxlbWVudGFsIGRvZXMgbm90IG1hdGNoIHZhbHVlIGZyb20gSURMIik7
CiAjZW5kaWYKQEAgLTI5MywyMiArMzA3LDI3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1
ZSBKU1Rlc3RJbnRlcmYKIHsKICAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0SW50
ZXJmYWNlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvcikgfSB9LAogI2lm
IEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIHsgImluY2x1
ZGVzU3RyMSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RJbnRlcmZhY2VJ
bmNsdWRlc1N0cjEpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPigwKSB9IH0sCisgICAgeyAibWl4aW5SZWFkT25seUF0dHJpYnV0ZSIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RJbnRlcmZhY2VNaXhpblJlYWRPbmx5QXR0
cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oMCkgfSB9LAogI2Vsc2UKICAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9
LAogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMp
Ci0gICAgeyAiaW5jbHVkZXNTdHIyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RJbnRlcmZhY2VJbmNsdWRlc1N0cjIpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RJ
bnRlcmZhY2VJbmNsdWRlc1N0cjIpIH0gfSwKKyAgICB7ICJtaXhpbkF0dHJpYnV0ZSIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0SW50
ZXJmYWNlTWl4aW5BdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RJbnRlcmZhY2VNaXhpbkF0dHJpYnV0ZSkgfSB9
LAogI2Vsc2UKICAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAogI2VuZGlmCiAj
aWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgeyAiaW5j
bHVkZXNTdHIzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1Rlc3RJbnRlcmZhY2VJbmNsdWRlc1N0cjMpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RJbnRlcmZhY2VJbmNs
dWRlc1N0cjMpIH0gfSwKKyAgICB7ICJtaXhpbkN1c3RvbUF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0SW50ZXJmYWNl
TWl4aW5DdXN0b21BdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RJbnRlcmZhY2VNaXhpbkN1c3RvbUF0dHJpYnV0
ZSkgfSB9LAogI2Vsc2UKICAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAogI2Vu
ZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0gICAg
eyAiaW5jbHVkZXNOb2RlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc1Rlc3RJbnRlcmZhY2VJbmNsdWRlc05vZGUpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RJbnRlcmZh
Y2VJbmNsdWRlc05vZGUpIH0gfSwKKyAgICB7ICJtaXhpbk5vZGVBdHRyaWJ1dGUiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEludGVy
ZmFjZU1peGluTm9kZUF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEludGVyZmFjZU1peGluTm9kZUF0dHJpYnV0
ZSkgfSB9LAorI2Vsc2UKKyAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAorI2Vu
ZGlmCisjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCisgICAg
eyAicGFydGlhbE1peGluQXR0cmlidXRlRnJvbVBhcnRpYWwiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNUZXN0SW50ZXJmYWNlUGFydGlhbE1peGluQXR0cmlidXRlRnJvbVBhcnRp
YWwpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PigwKSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAj
ZW5kaWYKQEAgLTM0MywzMiArMzYyLDM3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBK
U1Rlc3RJbnRlcmYKICAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAogI2VuZGlm
CiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgeyAi
aW5jbHVkZXNNZXRob2QxIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJh
d05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkluY2x1ZGVz
TWV0aG9kMSksIChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICJtaXhpbk9wZXJhdGlvbiIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNU
ZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25NaXhpbk9wZXJhdGlvbiksIChpbnRwdHJfdCkg
KDApIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKICNl
bmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAg
IHsgImluY2x1ZGVzTWV0aG9kMiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbmNs
dWRlc01ldGhvZDIpLCAoaW50cHRyX3QpICgyKSB9IH0sCisgICAgeyAibWl4aW5Db21wbGV4T3Bl
cmF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1
bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1
bmN0aW9uPihqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbk1peGluQ29tcGxleE9wZXJh
dGlvbiksIChpbnRwdHJfdCkgKDIpIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNp
YywgeyAwLCAwIH0gfSwKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxF
KENvbmRpdGlvbjIzKQotICAgIHsgImluY2x1ZGVzTWV0aG9kMyIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0SW50ZXJmYWNlUHJv
dG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZDMpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAg
eyAibWl4aW5DdXN0b21PcGVyYXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9u
TWl4aW5DdXN0b21PcGVyYXRpb24pLCAoaW50cHRyX3QpICgwKSB9IH0sCiAjZWxzZQogICAgIHsg
MCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYKICNpZiAoRU5BQkxFKENvbmRp
dGlvbjExKSAmJiBFTkFCTEUoQ29uZGl0aW9uMjIpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0g
ICAgeyAiaW5jbHVkZXNNZXRob2RDb25kaXRpb25hbCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0SW50ZXJmYWNlUHJvdG90eXBl
RnVuY3Rpb25JbmNsdWRlc01ldGhvZENvbmRpdGlvbmFsKSwgKGludHB0cl90KSAoMCkgfSB9LAor
ICAgIHsgIm1peGluQ29uZGl0aW9uYWxPcGVyYXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdEludGVyZmFjZVByb3RvdHlw
ZUZ1bmN0aW9uTWl4aW5Db25kaXRpb25hbE9wZXJhdGlvbiksIChpbnRwdHJfdCkgKDApIH0gfSwK
ICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKICNlbmRpZgogI2lm
IEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIHsgImluY2x1
ZGVzTWV0aG9kU2V0dGluZ3NDb25kaXRpb25hbCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVu
Y3Rpb25JbmNsdWRlc01ldGhvZFNldHRpbmdzQ29uZGl0aW9uYWwpLCAoaW50cHRyX3QpICgwKSB9
IH0sCisgICAgeyAibWl4aW5TZXR0aW5nc0NvbmRpdGlvbmFsT3BlcmF0aW9uIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RJbnRl
cmZhY2VQcm90b3R5cGVGdW5jdGlvbk1peGluU2V0dGluZ3NDb25kaXRpb25hbE9wZXJhdGlvbiks
IChpbnRwdHJfdCkgKDApIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAw
LCAwIH0gfSwKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRp
dGlvbjIzKQotICAgIHsgInRha2VOb2RlcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rp
b25UYWtlTm9kZXMpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAibWl4aW5SZXN1bHRGaWVs
ZE9wZXJhdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRp
dmVGdW5jdGlvbj4oanNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25NaXhpblJlc3VsdEZp
ZWxkT3BlcmF0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LAorI2Vsc2UKKyAgICB7IDAsIDAsIE5v
SW50cmluc2ljLCB7IDAsIDAgfSB9LAorI2VuZGlmCisjaWYgKEVOQUJMRShDb25kaXRpb24yMikg
JiYgRU5BQkxFKENvbmRpdGlvbjMzKSkgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorICAgIHsgInBh
cnRpYWxNaXhpbk9wZXJhdGlvbkZyb21QYXJ0aWFsIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVG
dW5jdGlvblBhcnRpYWxNaXhpbk9wZXJhdGlvbkZyb21QYXJ0aWFsKSwgKGludHB0cl90KSAoMCkg
fSB9LAogI2Vsc2UKICAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAogI2VuZGlm
CkBAIC0zOTcsMTIgKzQyMSwxNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0
SW50ZXJmCiAgICAgeyAidmFsdWVzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblZh
bHVlcyksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJmb3JFYWNoIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RJbnRlcmZh
Y2VQcm90b3R5cGVGdW5jdGlvbkZvckVhY2gpLCAoaW50cHRyX3QpICgxKSB9IH0sCiAjaWYgRU5B
QkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgeyAiSU5DTFVERVNf
Q09OU1RBTlQxIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3Rh
bnRJbnRlZ2VyLCBOb0ludHJpbnNpYywgeyAobG9uZyBsb25nKSgxKSB9IH0sCisgICAgeyAiTUlY
SU5fQ09OU1RBTlQiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDb25z
dGFudEludGVnZXIsIE5vSW50cmluc2ljLCB7IChsb25nIGxvbmcpKDEpIH0gfSwKKyNlbHNlCisg
ICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKKyNlbmRpZgorI2lmIEVOQUJMRShD
b25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorICAgIHsgIk1JWElOX1JFRkxFQ1RF
RF9DT05TVEFOVCIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0
YW50SW50ZWdlciwgTm9JbnRyaW5zaWMsIHsgKGxvbmcgbG9uZykoMikgfSB9LAogI2Vsc2UKICAg
ICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAogI2VuZGlmCiAjaWYgRU5BQkxFKENv
bmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgeyAiSU5DTFVERVNfQ09OU1RB
TlQyIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRl
Z2VyLCBOb0ludHJpbnNpYywgeyAobG9uZyBsb25nKSgyKSB9IH0sCisgICAgeyAiUEFSVElBTF9N
SVhJTl9DT05TVEFOVF9GUk9NX1BBUlRJQUwiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIsIE5vSW50cmluc2ljLCB7IChsb25nIGxvbmcpKDUp
IH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKICNlbmRp
ZgpAQCAtNDI4LDcgKzQ1Nyw3IEBAIHZvaWQgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlOjpmaW5p
c2hDcmUKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKICAg
ICBpZiAoIWRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9i
YWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkudGVzdFNl
dHRpbmdFbmFibGVkKCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9
IHRydWU7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJpbmNsdWRlc01ldGhvZFNldHRp
bmdzQ29uZGl0aW9uYWwiKSwgc3RybGVuKCJpbmNsdWRlc01ldGhvZFNldHRpbmdzQ29uZGl0aW9u
YWwiKSk7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJtaXhpblNldHRpbmdzQ29uZGl0
aW9uYWxPcGVyYXRpb24iKSwgc3RybGVuKCJtaXhpblNldHRpbmdzQ29uZGl0aW9uYWxPcGVyYXRp
b24iKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06
OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAgICAgICAgRGVsZXRl
UHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlz
LCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKQEAgLTUxMSwzOSArNTQwLDM5
IEBAIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IoSlNHbG8KIH0KIAogI2lmIEVO
QUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzVGVzdEludGVyZmFjZUluY2x1ZGVzU3RyMUdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0SW50ZXJmYWNlJiB0aGlzT2JqZWN0KQorc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdEludGVyZmFjZU1peGluUmVhZE9ubHlBdHRyaWJ1dGVHZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEludGVyZmFjZSYg
dGhpc09iamVjdCkKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmluY2x1ZGVzU3RyMSgpKSkpOworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwubWl4aW5SZWFkT25seUF0dHJpYnV0ZSgpKSkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbmNsdWRlc1N0cjEoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KQorRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlTWl4aW5SZWFkT25seUF0dHJpYnV0ZShK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RJbnRl
cmZhY2U+OjpnZXQ8anNUZXN0SW50ZXJmYWNlSW5jbHVkZXNTdHIxR2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
aW5jbHVkZXNTdHIxIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RJbnRlcmZhY2U+
OjpnZXQ8anNUZXN0SW50ZXJmYWNlTWl4aW5SZWFkT25seUF0dHJpYnV0ZUdldHRlciwgQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgIm1peGluUmVhZE9ubHlBdHRyaWJ1dGUiKTsKIH0KIAogI2VuZGlmCiAKICNpZiBFTkFCTEUo
Q29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLXN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc1Rlc3RJbnRlcmZhY2VJbmNsdWRlc1N0cjJHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTVGVzdEludGVyZmFjZSYgdGhpc09iamVjdCkKK3N0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VNaXhpbkF0dHJpYnV0ZUdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0SW50ZXJmYWNlJiB0aGlzT2JqZWN0KQog
ewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuaW5jbHVkZXNTdHIyKCkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETERPTVN0cmluZz4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
aW1wbC5taXhpbkF0dHJpYnV0ZSgpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRl
cmZhY2VJbmNsdWRlc1N0cjIoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNU
ZXN0SW50ZXJmYWNlTWl4aW5BdHRyaWJ1dGUoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0SW50ZXJmYWNlPjo6Z2V0PGpzVGVzdEludGVyZmFjZUlu
Y2x1ZGVzU3RyMkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImluY2x1ZGVzU3RyMiIpOworICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNUZXN0SW50ZXJmYWNlPjo6Z2V0PGpzVGVzdEludGVyZmFjZU1peGluQXR0
cmlidXRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAibWl4aW5BdHRyaWJ1dGUiKTsKIH0KIAogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLXN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VJbmNsdWRlc1N0cjJTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEludGVyZmFjZSYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VNaXhp
bkF0dHJpYnV0ZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNU
ZXN0SW50ZXJmYWNlJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC01NTEsODAgKzU4MCw5NiBAQCBzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlSW5jCiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7Ci0gICAgICAg
IHJldHVybiBpbXBsLnNldEluY2x1ZGVzU3RyMihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAg
ICAgIHJldHVybiBpbXBsLnNldE1peGluQXR0cmlidXRlKFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
ICAgICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VJ
bmNsdWRlc1N0cjIoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRK
U1Rlc3RJbnRlcmZhY2VNaXhpbkF0dHJpYnV0ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCiB7Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RJbnRlcmZhY2U+OjpzZXQ8
c2V0SlNUZXN0SW50ZXJmYWNlSW5jbHVkZXNTdHIyU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJpbmNsdWRlc1N0cjIiKTsKKyAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTVGVzdEludGVyZmFjZT46OnNldDxzZXRKU1Rlc3RJbnRlcmZhY2VNaXhp
bkF0dHJpYnV0ZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAibWl4aW5BdHRyaWJ1dGUiKTsKIH0KIAogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ29u
ZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLXN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c1Rlc3RJbnRlcmZhY2VJbmNsdWRlc1N0cjNHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTVGVzdEludGVyZmFjZSYgdGhpc09iamVjdCkKK3N0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VNaXhpbkN1c3RvbUF0dHJpYnV0ZUdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0SW50ZXJmYWNlJiB0aGlzT2JqZWN0
KQogewogICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICByZXR1cm4g
dGhpc09iamVjdC5pbmNsdWRlc1N0cjMobGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJu
IHRoaXNPYmplY3QubWl4aW5DdXN0b21BdHRyaWJ1dGUobGV4aWNhbEdsb2JhbE9iamVjdCk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUluY2x1ZGVzU3RyMyhKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VNaXhpbkN1c3RvbUF0dHJp
YnV0ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rl
c3RJbnRlcmZhY2U+OjpnZXQ8anNUZXN0SW50ZXJmYWNlSW5jbHVkZXNTdHIzR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiaW5jbHVkZXNTdHIzIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RJbnRl
cmZhY2U+OjpnZXQ8anNUZXN0SW50ZXJmYWNlTWl4aW5DdXN0b21BdHRyaWJ1dGVHZXR0ZXIsIENh
c3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsICJtaXhpbkN1c3RvbUF0dHJpYnV0ZSIpOwogfQogCiAjZW5kaWYKIAogI2lmIEVOQUJM
RShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotc3RhdGljIGlubGluZSBib29s
IHNldEpTVGVzdEludGVyZmFjZUluY2x1ZGVzU3RyM1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0SW50ZXJmYWNlJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQorc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdEludGVyZmFjZU1peGluQ3VzdG9tQXR0
cmlidXRlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RJ
bnRlcmZhY2UmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICB0aGlzT2JqZWN0LnNldEluY2x1
ZGVzU3RyMyhsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CisgICAgdGhpc09iamVjdC5zZXRN
aXhpbkN1c3RvbUF0dHJpYnV0ZShsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlSW5jbHVkZXNTdHIzKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0SW50ZXJmYWNlTWl4
aW5DdXN0b21BdHRyaWJ1dGUoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewot
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0SW50ZXJmYWNlPjo6c2V0PHNldEpTVGVzdElu
dGVyZmFjZUluY2x1ZGVzU3RyM1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAiaW5jbHVkZXNTdHIzIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU1Rlc3RJbnRlcmZhY2U+OjpzZXQ8c2V0SlNUZXN0SW50ZXJmYWNlTWl4aW5DdXN0b21BdHRy
aWJ1dGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgIm1peGluQ3VzdG9tQXR0cmlidXRlIik7CiB9CiAKICNlbmRpZgogCiAjaWYgRU5BQkxFKENv
bmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1zdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNUZXN0SW50ZXJmYWNlSW5jbHVkZXNOb2RlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU1Rlc3RJbnRlcmZhY2UmIHRoaXNPYmplY3QpCitzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNUZXN0SW50ZXJmYWNlTWl4aW5Ob2RlQXR0cmlidXRlR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RJbnRlcmZhY2UmIHRoaXNPYmplY3Qp
CiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETEludGVyZmFjZTxOb2RlPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgKnRo
aXNPYmplY3QuZ2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwuaW5jbHVkZXNOb2RlKCkp
KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETEludGVyZmFj
ZTxOb2RlPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCks
IHRocm93U2NvcGUsIGltcGwubWl4aW5Ob2RlQXR0cmlidXRlKCkpKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIGpzVGVzdEludGVyZmFjZUluY2x1ZGVzTm9kZShKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VNaXhpbk5vZGVBdHRyaWJ1dGUoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQogewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0SW50ZXJmYWNlPjo6
Z2V0PGpzVGVzdEludGVyZmFjZUluY2x1ZGVzTm9kZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImluY2x1ZGVz
Tm9kZSIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0SW50ZXJmYWNlPjo6Z2V0PGpz
VGVzdEludGVyZmFjZU1peGluTm9kZUF0dHJpYnV0ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIm1peGluTm9k
ZUF0dHJpYnV0ZSIpOwogfQogCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwg
RU5BQkxFKENvbmRpdGlvbjIzKQotc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdEludGVyZmFj
ZUluY2x1ZGVzTm9kZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNUZXN0SW50ZXJmYWNlJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQorc3RhdGljIGlubGlu
ZSBib29sIHNldEpTVGVzdEludGVyZmFjZU1peGluTm9kZUF0dHJpYnV0ZVNldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0SW50ZXJmYWNlJiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETEludGVyZmFjZTxOb2RlPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdmFsdWUsIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Qzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IobGV4aWNhbEds
b2JhbE9iamVjdCwgc2NvcGUsICJUZXN0SW50ZXJmYWNlIiwgImluY2x1ZGVzTm9kZSIsICJOb2Rl
Iik7IH0pOworICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETEludGVyZmFjZTxOb2Rl
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBdHRyaWJ1
dGVUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsICJUZXN0SW50ZXJmYWNlIiwg
Im1peGluTm9kZUF0dHJpYnV0ZSIsICJOb2RlIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewotICAgICAgICByZXR1cm4gaW1wbC5zZXRJ
bmNsdWRlc05vZGUoKm5hdGl2ZVZhbHVlKTsKKyAgICAgICAgcmV0dXJuIGltcGwuc2V0TWl4aW5O
b2RlQXR0cmlidXRlKCpuYXRpdmVWYWx1ZSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlSW5jbHVkZXNOb2RlKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0SW50ZXJmYWNlTWl4aW5Ob2RlQXR0cmli
dXRlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTVGVzdEludGVyZmFjZT46OnNldDxzZXRKU1Rlc3RJbnRlcmZhY2VJbmNsdWRl
c05vZGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgImluY2x1ZGVzTm9kZSIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0SW50ZXJm
YWNlPjo6c2V0PHNldEpTVGVzdEludGVyZmFjZU1peGluTm9kZUF0dHJpYnV0ZVNldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAibWl4aW5Ob2RlQXR0
cmlidXRlIik7Cit9CisKKyNlbmRpZgorCisjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFC
TEUoQ29uZGl0aW9uMjMpCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0SW50ZXJmYWNlUGFy
dGlhbE1peGluQXR0cmlidXRlRnJvbVBhcnRpYWxHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTVGVzdEludGVyZmFjZSYgdGhpc09iamVjdCkKK3sKKyAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMRG91YmxlPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLnBhcnRpYWxN
aXhpbkF0dHJpYnV0ZUZyb21QYXJ0aWFsKCkpKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVz
dEludGVyZmFjZVBhcnRpYWxNaXhpbkF0dHJpYnV0ZUZyb21QYXJ0aWFsKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEludGVyZmFjZT46OmdldDxq
c1Rlc3RJbnRlcmZhY2VQYXJ0aWFsTWl4aW5BdHRyaWJ1dGVGcm9tUGFydGlhbEdldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgInBhcnRpYWxNaXhpbkF0dHJpYnV0ZUZyb21QYXJ0aWFsIik7CiB9CiAKICNlbmRpZgpA
QCAtODM2LDcgKzg4MSw3IEBAIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlUmVmbGVjdEF0dHJpYnV0
ZSgKICNlbmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MjMpCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlUHJv
dG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZDFCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElE
TE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQor
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVByb3RvdHlw
ZUZ1bmN0aW9uTWl4aW5PcGVyYXRpb25Cb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJh
dGlvbjxKU1Rlc3RJbnRlcmZhY2U+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQogewogICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTg0NCwxOSArODg5LDE5IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFS
QU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwuaW5jbHVkZXNNZXRob2QxKCk7Cisg
ICAgaW1wbC5taXhpbk9wZXJhdGlvbigpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50
ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZDEoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbk1peGluT3BlcmF0
aW9uKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46OmNhbGw8
anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZDFCb2R5PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgImluY2x1ZGVzTWV0aG9kMSIpOworICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Y2FsbDxqc1Rlc3RJbnRlcmZhY2VQ
cm90b3R5cGVGdW5jdGlvbk1peGluT3BlcmF0aW9uQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3Qs
ICpjYWxsRnJhbWUsICJtaXhpbk9wZXJhdGlvbiIpOwogfQogCiAjZW5kaWYKIAogI2lmIEVOQUJM
RShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNN
ZXRob2QyQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6
OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJm
YWNlPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbk1peGluQ29tcGxleE9w
ZXJhdGlvbkJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
OjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdEludGVy
ZmFjZT46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwpAQCAtODcyLDM3ICs5MTcsMzcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8gc3RyQXJnID0gY29udmVydDxJRExE
T01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBF
bnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQxID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1
bWVudCgxKTsKLSAgICBhdXRvIG9iakFyZyA9IGNvbnZlcnQ8SURMSW50ZXJmYWNlPFRlc3RPYmo+
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsg
dGhyb3dBcmd1bWVudFR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMSwgIm9i
akFyZyIsICJUZXN0SW50ZXJmYWNlIiwgImluY2x1ZGVzTWV0aG9kMiIsICJUZXN0T2JqIik7IH0p
OworICAgIGF1dG8gb2JqQXJnID0gY29udmVydDxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0Fy
Z3VtZW50VHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAxLCAib2JqQXJnIiwg
IlRlc3RJbnRlcmZhY2UiLCAibWl4aW5Db21wbGV4T3BlcmF0aW9uIiwgIlRlc3RPYmoiKTsgfSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8
SURMSW50ZXJmYWNlPFRlc3RPYmo+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMt
Pmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLmluY2x1ZGVzTWV0aG9kMigqY29udGV4
dCwgV1RGTW92ZShzdHJBcmcpLCAqb2JqQXJnKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Nj
b3BlLCBpbXBsLm1peGluQ29tcGxleE9wZXJhdGlvbigqY29udGV4dCwgV1RGTW92ZShzdHJBcmcp
LCAqb2JqQXJnKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJ
bnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkluY2x1ZGVzTWV0aG9kMihKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uTWl4aW5Db21w
bGV4T3BlcmF0aW9uKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFj
ZT46OmNhbGw8anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZDJC
b2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgImluY2x1ZGVzTWV0aG9kMiIp
OworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Y2FsbDxqc1Rlc3RJ
bnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbk1peGluQ29tcGxleE9wZXJhdGlvbkJvZHk+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAibWl4aW5Db21wbGV4T3BlcmF0aW9uIik7CiB9
CiAKICNlbmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MjMpCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlUHJv
dG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZDNCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElE
TE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQor
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVByb3RvdHlw
ZUZ1bmN0aW9uTWl4aW5DdXN0b21PcGVyYXRpb25Cb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElE
TE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQog
ewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7Ci0gICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIChKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+aW5j
bHVkZXNNZXRob2QzKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lKSkpKTsKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlz
LT5taXhpbkN1c3RvbU9wZXJhdGlvbigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSkp
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJv
dG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZDMoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbk1peGluQ3VzdG9tT3BlcmF0aW9u
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46OmNhbGw8anNU
ZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZDNCb2R5PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgImluY2x1ZGVzTWV0aG9kMyIpOworICAgIHJldHVy
biBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Y2FsbDxqc1Rlc3RJbnRlcmZhY2VQcm90
b3R5cGVGdW5jdGlvbk1peGluQ3VzdG9tT3BlcmF0aW9uQm9keT4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsICpjYWxsRnJhbWUsICJtaXhpbkN1c3RvbU9wZXJhdGlvbiIpOwogfQogCiAjZW5kaWYKIAog
I2lmIChFTkFCTEUoQ29uZGl0aW9uMTEpICYmIEVOQUJMRShDb25kaXRpb24yMikpIHx8IEVOQUJM
RShDb25kaXRpb24yMykKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJ
bnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkluY2x1ZGVzTWV0aG9kQ29uZGl0aW9uYWxCb2R5KEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBj
YWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+OjpDbGFzc1Bh
cmFtZXRlciBjYXN0ZWRUaGlzKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uTWl4aW5Db25kaXRpb25hbE9wZXJhdGlvbkJv
ZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46OkNs
YXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwpAQCAtOTEwLDE5ICs5NTUsMTkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7
Ci0gICAgaW1wbC5pbmNsdWRlc01ldGhvZENvbmRpdGlvbmFsKCk7CisgICAgaW1wbC5taXhpbkNv
bmRpdGlvbmFsT3BlcmF0aW9uKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZh
Y2VQcm90b3R5cGVGdW5jdGlvbkluY2x1ZGVzTWV0aG9kQ29uZGl0aW9uYWwoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbk1peGlu
Q29uZGl0aW9uYWxPcGVyYXRpb24oSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0
SW50ZXJmYWNlPjo6Y2FsbDxqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkluY2x1ZGVz
TWV0aG9kQ29uZGl0aW9uYWxCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwg
ImluY2x1ZGVzTWV0aG9kQ29uZGl0aW9uYWwiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdEludGVyZmFjZT46OmNhbGw8anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25NaXhp
bkNvbmRpdGlvbmFsT3BlcmF0aW9uQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJh
bWUsICJtaXhpbkNvbmRpdGlvbmFsT3BlcmF0aW9uIik7CiB9CiAKICNlbmRpZgogCiAjaWYgRU5B
QkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1zdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRl
c01ldGhvZFNldHRpbmdzQ29uZGl0aW9uYWxCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9w
ZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQorc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1
bmN0aW9uTWl4aW5TZXR0aW5nc0NvbmRpdGlvbmFsT3BlcmF0aW9uQm9keShKU0M6OkpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0
eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Q2xhc3NQYXJhbWV0ZXIgY2Fz
dGVkVGhpcykKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC05
MzAsMzIgKzk3NSw1MiBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLmluY2x1
ZGVzTWV0aG9kU2V0dGluZ3NDb25kaXRpb25hbCgpOworICAgIGltcGwubWl4aW5TZXR0aW5nc0Nv
bmRpdGlvbmFsT3BlcmF0aW9uKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZh
Y2VQcm90b3R5cGVGdW5jdGlvbkluY2x1ZGVzTWV0aG9kU2V0dGluZ3NDb25kaXRpb25hbChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0
aW9uTWl4aW5TZXR0aW5nc0NvbmRpdGlvbmFsT3BlcmF0aW9uKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSURM
T3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46OmNhbGw8anNUZXN0SW50ZXJmYWNlUHJvdG90eXBl
RnVuY3Rpb25JbmNsdWRlc01ldGhvZFNldHRpbmdzQ29uZGl0aW9uYWxCb2R5PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgImluY2x1ZGVzTWV0aG9kU2V0dGluZ3NDb25kaXRpb25h
bCIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Y2FsbDxqc1Rl
c3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbk1peGluU2V0dGluZ3NDb25kaXRpb25hbE9wZXJh
dGlvbkJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAibWl4aW5TZXR0aW5n
c0NvbmRpdGlvbmFsT3BlcmF0aW9uIik7CiB9CiAKICNlbmRpZgogCiAjaWYgRU5BQkxFKENvbmRp
dGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25UYWtlTm9kZXNCb2R5KEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBj
YWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+OjpDbGFzc1Bh
cmFtZXRlciBjYXN0ZWRUaGlzKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uTWl4aW5SZXN1bHRGaWVsZE9wZXJhdGlvbkJv
ZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46OkNs
YXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFS
QU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwot
ICAgIGF1dG8gaW1wbFJlc3VsdCA9IGltcGwudGFrZU5vZGVzKCk7CisgICAgYXV0byBpbXBsUmVz
dWx0ID0gaW1wbC5taXhpblJlc3VsdEZpZWxkT3BlcmF0aW9uKCk7CiAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFNlcXVlbmNlPElETElu
dGVyZmFjZTxOb2RlPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCksIFdURk1vdmUoaW1wbFJlc3VsdC5ub2RlcykpKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25UYWtlTm9k
ZXMoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5
cGVGdW5jdGlvbk1peGluUmVzdWx0RmllbGRPcGVyYXRpb24oSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Y2FsbDxqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVG
dW5jdGlvbk1peGluUmVzdWx0RmllbGRPcGVyYXRpb25Cb2R5PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgKmNhbGxGcmFtZSwgIm1peGluUmVzdWx0RmllbGRPcGVyYXRpb24iKTsKK30KKworI2VuZGlm
CisKKyNpZiAoRU5BQkxFKENvbmRpdGlvbjIyKSAmJiBFTkFCTEUoQ29uZGl0aW9uMzMpKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMjMpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25QYXJ0aWFsTWl4aW5PcGVyYXRpb25Gcm9tUGFy
dGlhbEJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFj
ZT46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCit7CisgICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBVTlVT
RURfUEFSQU0oY2FsbEZyYW1lKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOworICAgIHRocm93U2NvcGUucmVsZWFzZSgpOworICAgIGltcGwucGFydGlhbE1peGluT3Bl
cmF0aW9uRnJvbVBhcnRpYWwoKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFj
ZVByb3RvdHlwZUZ1bmN0aW9uUGFydGlhbE1peGluT3BlcmF0aW9uRnJvbVBhcnRpYWwoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewot
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Y2FsbDxqc1Rlc3RJbnRl
cmZhY2VQcm90b3R5cGVGdW5jdGlvblRha2VOb2Rlc0JvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCAqY2FsbEZyYW1lLCAidGFrZU5vZGVzIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rl
c3RJbnRlcmZhY2U+OjpjYWxsPGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uUGFydGlh
bE1peGluT3BlcmF0aW9uRnJvbVBhcnRpYWxCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNh
bGxGcmFtZSwgInBhcnRpYWxNaXhpbk9wZXJhdGlvbkZyb21QYXJ0aWFsIik7CiB9CiAKICNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdElu
dGVyZmFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaAkocmV2aXNpb24gMjY2NzI3KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC02NCwxMCArNjQsMTAgQEAgcHVibGljOgogCiAgICAgLy8gQ3VzdG9tIGF0dHJp
YnV0ZXMKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLSAg
ICBKU0M6OkpTVmFsdWUgaW5jbHVkZXNTdHIzKEpTQzo6SlNHbG9iYWxPYmplY3QmKSBjb25zdDsK
KyAgICBKU0M6OkpTVmFsdWUgbWl4aW5DdXN0b21BdHRyaWJ1dGUoSlNDOjpKU0dsb2JhbE9iamVj
dCYpIGNvbnN0OwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29u
ZGl0aW9uMjMpCi0gICAgdm9pZCBzZXRJbmNsdWRlc1N0cjMoSlNDOjpKU0dsb2JhbE9iamVjdCYs
IEpTQzo6SlNWYWx1ZSk7CisgICAgdm9pZCBzZXRNaXhpbkN1c3RvbUF0dHJpYnV0ZShKU0M6OkpT
R2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRp
b24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogICAgIEpTQzo6SlNWYWx1ZSBzdXBwbGVtZW50
YWxTdHIzKEpTQzo6SlNHbG9iYWxPYmplY3QmKSBjb25zdDsKQEAgLTc4LDcgKzc4LDcgQEAgcHVi
bGljOgogCiAgICAgLy8gQ3VzdG9tIGZ1bmN0aW9ucwogI2lmIEVOQUJMRShDb25kaXRpb24yMikg
fHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIEpTQzo6SlNWYWx1ZSBpbmNsdWRlc01ldGhvZDMo
SlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6Q2FsbEZyYW1lJik7CisgICAgSlNDOjpKU1ZhbHVl
IG1peGluQ3VzdG9tT3BlcmF0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkNhbGxGcmFt
ZSYpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MTIpCiAgICAgSlNDOjpKU1ZhbHVlIHN1cHBsZW1lbnRhbE1ldGhvZDMoSlNDOjpKU0dsb2JhbE9i
amVjdCYsIEpTQzo6Q2FsbEZyYW1lJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWl4aW5JbnRlcmZhY2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNaXhpbkludGVyZmFj
ZS5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE1peGluSW50ZXJmYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDYgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBqdXN0IHRvIHRlbGwgYnVpbGQg
c2NyaXB0cyB0aGF0IEpTVGVzdE1peGluSW50ZXJmYWNlLmggYW5kCisgICAgSlNUZXN0TWl4aW5J
bnRlcmZhY2UuY3BwIGFyZSBjcmVhdGVkIGZvciBUZXN0TWl4aW5JbnRlcmZhY2UuaWRsLCBhbmQg
dGh1cworICAgIHByZXZlbnQgdGhlIGJ1aWxkIHNjcmlwdHMgZnJvbSB0cnlpbmcgdG8gZ2VuZXJh
dGUgSlNUZXN0TWl4aW5JbnRlcmZhY2UuaCBhbmQKKyAgICBKU1Rlc3RNaXhpbkludGVyZmFjZS5j
cHAgYXQgZXZlcnkgYnVpbGQuIFRoaXMgZmlsZSBtdXN0IG5vdCBiZSB0cmllZCB0byBjb21waWxl
LgorKi8KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RNaXhpbkludGVyZmFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNaXhpbkludGVyZmFjZS5oCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNaXhpbkludGVy
ZmFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNiBAQAorLyoKKyAgICBUaGlzIGZpbGUg
aXMgZ2VuZXJhdGVkIGp1c3QgdG8gdGVsbCBidWlsZCBzY3JpcHRzIHRoYXQgSlNUZXN0TWl4aW5J
bnRlcmZhY2UuaCBhbmQKKyAgICBKU1Rlc3RNaXhpbkludGVyZmFjZS5jcHAgYXJlIGNyZWF0ZWQg
Zm9yIFRlc3RNaXhpbkludGVyZmFjZS5pZGwsIGFuZCB0aHVzCisgICAgcHJldmVudCB0aGUgYnVp
bGQgc2NyaXB0cyBmcm9tIHRyeWluZyB0byBnZW5lcmF0ZSBKU1Rlc3RNaXhpbkludGVyZmFjZS5o
IGFuZAorICAgIEpTVGVzdE1peGluSW50ZXJmYWNlLmNwcCBhdCBldmVyeSBidWlsZC4gVGhpcyBm
aWxlIG11c3Qgbm90IGJlIHRyaWVkIHRvIGNvbXBpbGUuCisqLwpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAkocmV2aXNpb24gMjY2NzI3KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsMzc5IEBACiAvKgotICAg
IFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQganVzdCB0byB0ZWxsIGJ1aWxkIHNjcmlwdHMgdGhhdCBK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmggYW5kCi0gICAgSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycy5jcHAgYXJlIGNyZWF0ZWQgZm9yIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
LmlkbCwgYW5kIHRodXMKLSAgICBwcmV2ZW50IHRoZSBidWlsZCBzY3JpcHRzIGZyb20gdHJ5aW5n
IHRvIGdlbmVyYXRlIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaCBhbmQKLSAgICBKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcCBhdCBldmVyeSBidWlsZC4gVGhpcyBmaWxlIG11
c3Qgbm90IGJlIHRyaWVkIHRvIGNvbXBpbGUuCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl
IFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5l
cmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaCIK
KworI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNl
cy5oIgorI2luY2x1ZGUgIkpTQmxvYi5oIgorI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2lu
Y2x1ZGUgIkpTRE9NQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnRCdWZmZXJT
b3VyY2UuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnRJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJK
U0RPTUNvbnZlcnROdW1iZXJzLmgiCisjaW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5ncy5oIgor
I2luY2x1ZGUgIkpTRE9NQ29udmVydFZhcmlhZGljLmgiCisjaW5jbHVkZSAiSlNET01FeGNlcHRp
b25IYW5kbGluZy5oIgorI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCisjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEu
aCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNl
SW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUG9pbnRl
clByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKworCituYW1lc3BhY2UgV2Vi
Q29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSlNDOworCisvLyBBdHRyaWJ1dGVzCisKK0pTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7
Citib29sIHNldEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvcihKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7
CisKK2NsYXNzIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUgZmluYWwgOiBw
dWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0g
SlNDOjpKU05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRpYyBKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGws
IEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGU+
KHZtLmhlYXApKSBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKHZtLCBnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOwor
ICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgSlNDOjpTdWJzcGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMg
SlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAg
ICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzUHJvdG90eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBK
U0M6OkpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQorCisgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Cit9OworU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZSwgSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZTo6QmFzZSk7CisKK3VzaW5nIEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3I8SlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz47CisKK3N0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFs
dWUgY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczEoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2
bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVl
KCkpOworICAgIEFTU0VSVChjYXN0ZWRUaGlzKTsKKyAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUg
YXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKKyAgICBhdXRvIGFy
cmF5QnVmZmVyID0gY29udmVydDxJRExBcnJheUJ1ZmZlcj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IGFyZ3VtZW50MC52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3Io
bGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJhcnJheUJ1ZmZlciIsICJUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycyIsIG51bGxwdHIsICJBcnJheUJ1ZmZlciIpOyB9KTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIGF1dG8g
b2JqZWN0ID0gVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNyZWF0ZSgqYXJyYXlCdWZmZXIp
OworICAgIHN0YXRpY19hc3NlcnQoZGVjbHR5cGUob2JqZWN0KTo6aXNSZWYpOworICAgIGF1dG8g
anNWYWx1ZSA9IHRvSlNOZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPFRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzPj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmpl
Y3QoKSwgV1RGTW92ZShvYmplY3QpKTsKKyAgICBzZXRTdWJjbGFzc1N0cnVjdHVyZUlmTmVlZGVk
PFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJh
bWUsIGFzT2JqZWN0KGpzVmFsdWUpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIHsgfSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1ZhbHVlKTsKK30KKworc3Rh
dGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzMihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvKiBj
YXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rv
cio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CisgICAgQVNTRVJUKGNhc3RlZFRoaXMpOworICAg
IEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFy
Z3VtZW50KDApOworICAgIGF1dG8gYXJyYXlCdWZmZXJWaWV3ID0gY29udmVydDxJRExBcnJheUJ1
ZmZlclZpZXc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgW10oSlND
OjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBz
Y29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3Bl
LCAwLCAiYXJyYXlCdWZmZXJWaWV3IiwgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIiwgbnVs
bHB0ciwgIkFycmF5QnVmZmVyVmlldyIpOyB9KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIGF1dG8gb2JqZWN0ID0gVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnM6OmNyZWF0ZShhcnJheUJ1ZmZlclZpZXcucmVsZWFzZU5vbk51bGwo
KSk7CisgICAgc3RhdGljX2Fzc2VydChkZWNsdHlwZShvYmplY3QpOjppc1JlZik7CisgICAgYXV0
byBqc1ZhbHVlID0gdG9KU05ld2x5Q3JlYXRlZDxJRExJbnRlcmZhY2U8VGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnM+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9i
amVjdCgpLCBXVEZNb3ZlKG9iamVjdCkpOworICAgIHNldFN1YmNsYXNzU3RydWN0dXJlSWZOZWVk
ZWQ8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxG
cmFtZSwgYXNPYmplY3QoanNWYWx1ZSkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgeyB9KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVmFsdWUpOworfQorCitz
dGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMzKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8q
IGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVj
dG9yKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKKyAgICBBU1NFUlQoY2FzdGVkVGhpcyk7Cisg
ICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCk7CisgICAgYXV0byBibG9iID0gY29udmVydDxJRExJbnRlcmZhY2U8QmxvYj4+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgW10oSlNDOjpKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0
aHJvd0FyZ3VtZW50VHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiYmxv
YiIsICJUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyIsIG51bGxwdHIsICJCbG9iIik7IH0pOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Cisg
ICAgYXV0byBvYmplY3QgPSBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlKCpibG9i
KTsKKyAgICBzdGF0aWNfYXNzZXJ0KGRlY2x0eXBlKG9iamVjdCk6OmlzUmVmKTsKKyAgICBhdXRv
IGpzVmFsdWUgPSB0b0pTTmV3bHlDcmVhdGVkPElETEludGVyZmFjZTxUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2Jq
ZWN0KCksIFdURk1vdmUob2JqZWN0KSk7CisgICAgc2V0U3ViY2xhc3NTdHJ1Y3R1cmVJZk5lZWRl
ZDxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4obGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZy
YW1lLCBhc09iamVjdChqc1ZhbHVlKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCB7IH0pOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNWYWx1ZSk7Cit9CisKK3N0
YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yczQoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byog
Y2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0
b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOworICAgIEFTU0VSVChjYXN0ZWRUaGlzKTsKKyAg
ICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRB
cmd1bWVudCgwKTsKKyAgICBhdXRvIHN0cmluZyA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgYXV0byBvYmplY3QgPSBU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlKFdURk1vdmUoc3RyaW5nKSk7CisgICAg
c3RhdGljX2Fzc2VydChkZWNsdHlwZShvYmplY3QpOjppc1JlZik7CisgICAgYXV0byBqc1ZhbHVl
ID0gdG9KU05ld2x5Q3JlYXRlZDxJRExJbnRlcmZhY2U8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnM+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBX
VEZNb3ZlKG9iamVjdCkpOworICAgIHNldFN1YmNsYXNzU3RydWN0dXJlSWZOZWVkZWQ8VGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYXNP
YmplY3QoanNWYWx1ZSkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVmFsdWUpOworfQorCitzdGF0aWMgaW5s
aW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM1
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKK3sKKyAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8qIGNhc3RlZFRo
aXMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKj4oY2Fs
bEZyYW1lLT5qc0NhbGxlZSgpKTsKKyAgICBBU1NFUlQoY2FzdGVkVGhpcyk7CisgICAgYXV0byBs
b25nQXJncyA9IGNvbnZlcnRWYXJpYWRpY0FyZ3VtZW50czxJRExMb25nPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgKmNhbGxGcmFtZSwgMCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBhdXRvIG9iamVjdCA9IFRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzOjpjcmVhdGUoV1RGTW92ZShsb25nQXJncykpOworICAgIHN0YXRpY19hc3Nl
cnQoZGVjbHR5cGUob2JqZWN0KTo6aXNSZWYpOworICAgIGF1dG8ganNWYWx1ZSA9IHRvSlNOZXds
eUNyZWF0ZWQ8SURMSW50ZXJmYWNlPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGTW92ZShvYmpl
Y3QpKTsKKyAgICBzZXRTdWJjbGFzc1N0cnVjdHVyZUlmTmVlZGVkPFRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGFzT2JqZWN0KGpzVmFs
dWUpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1ZhbHVlKTsKK30KKwordGVtcGxhdGU8PiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rv
cjo6Y29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBzaXplX3QgYXJnc0NvdW50ID0gc3RkOjptaW48
c2l6ZV90PigxLCBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSk7CisgICAgaWYgKGFyZ3NDb3Vu
dCA9PSAwKSB7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAoY29uc3Ry
dWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczUobGV4aWNhbEdsb2JhbE9iamVjdCwgY2Fs
bEZyYW1lKSkpOworICAgIH0KKyAgICBpZiAoYXJnc0NvdW50ID09IDEpIHsKKyAgICAgICAgSlNW
YWx1ZSBkaXN0aW5ndWlzaGluZ0FyZyA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7
CisgICAgICAgIGlmIChkaXN0aW5ndWlzaGluZ0FyZy5pc09iamVjdCgpICYmIGFzT2JqZWN0KGRp
c3Rpbmd1aXNoaW5nQXJnKS0+aW5oZXJpdHM8SlNBcnJheUJ1ZmZlcj4odm0pKQorICAgICAgICAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIChjb25zdHJ1Y3RKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzMShsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpKSk7CisgICAg
ICAgIGlmIChkaXN0aW5ndWlzaGluZ0FyZy5pc09iamVjdCgpICYmIGFzT2JqZWN0KGRpc3Rpbmd1
aXNoaW5nQXJnKS0+aW5oZXJpdHM8SlNBcnJheUJ1ZmZlclZpZXc+KHZtKSkKKyAgICAgICAgICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAoY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yczIobGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKSkpOworICAgICAg
ICBpZiAoZGlzdGluZ3Vpc2hpbmdBcmcuaXNPYmplY3QoKSAmJiBhc09iamVjdChkaXN0aW5ndWlz
aGluZ0FyZyktPmluaGVyaXRzPEpTQmxvYj4odm0pKQorICAgICAgICAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsIChjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
MyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpKSk7CisgICAgICAgIGlmIChkaXN0aW5n
dWlzaGluZ0FyZy5pc051bWJlcigpKQorICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsIChjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzNShsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAoY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczQobGV4aWNh
bEdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKSkpOworICAgIH0KKyAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKK30KKwordGVtcGxhdGU8
PiBKU1ZhbHVlIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6cHJvdG90
eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTSh2bSk7CisgICAgcmV0dXJuIGdsb2JhbE9i
amVjdC5mdW5jdGlvblByb3RvdHlwZSgpOworfQorCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYg
dm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnM6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworfQorCit0ZW1wbGF0ZTw+IGNv
bnN0IENsYXNzSW5mbyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OnNf
aW5mbyA9IHsgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIiwgJkJhc2U6OnNfaW5mbywgbnVs
bHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzQ29uc3RydWN0b3IpIH07CisKKy8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwor
CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c1Byb3RvdHlwZVRhYmxlVmFsdWVzW10gPQoreworICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IpIH0gfSwKK307CisKK2NvbnN0IENsYXNzSW5mbyBK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZSkg
fTsKKwordm9pZCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJl
aWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6aW5m
bygpLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0
aGlzKTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKK30KKwor
Y29uc3QgQ2xhc3NJbmZvIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OnNfaW5mbyA9IHsg
IlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVs
bHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKSB9
OworCitKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0LCBSZWY8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+JiYgaW1wbCkKKyAgICA6IEpTRE9N
V3JhcHBlcjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4oc3RydWN0dXJlLCBnbG9iYWxPYmpl
Y3QsIFdURk1vdmUoaW1wbCkpCit7Cit9CisKK3ZvaWQgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yczo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOworCisgICAgc3RhdGljX2Fz
c2VydCghc3RkOjppc19iYXNlX29mPEFjdGl2ZURPTU9iamVjdCwgVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnM+Ojp2YWx1ZSwgIkludGVyZmFjZSBpcyBub3QgbWFya2VkIGFzIFtBY3RpdmVET01P
YmplY3RdIGV2ZW4gdGhvdWdoIGltcGxlbWVudGF0aW9uIGNsYXNzIHN1YmNsYXNzZXMgQWN0aXZl
RE9NT2JqZWN0LiIpOworCit9CisKK0pTT2JqZWN0KiBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzOjpjcmVhdGVQcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KQoreworICAgIHJldHVybiBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBl
OjpjcmVhdGUodm0sICZnbG9iYWxPYmplY3QsIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQ
cm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgJmdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0
Lm9iamVjdFByb3RvdHlwZSgpKSk7Cit9CisKK0pTT2JqZWN0KiBKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KQoreworICAgIHJldHVybiBnZXRET01Qcm90b3R5cGU8SlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycz4odm0sIGdsb2JhbE9iamVjdCk7Cit9CisKK0pTVmFsdWUgSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yczo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7Cit9CisKK3ZvaWQgSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yczo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKK3sKKyAgICBKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycyo+KGNlbGwpOworICAgIHRoaXNPYmplY3QtPkpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnM6On5KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKCk7Cit9CisK
K0VuY29kZWRKU1ZhbHVlIGpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvcihK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwor
ICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpnZXRDb25zdHJ1Y3RvcihK
U0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgp
KSk7Cit9CisKK2Jvb2wgc2V0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9y
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBKU0M6
OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7CisgICAgICAg
IHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29u
c3RydWN0b3IKKyAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Cit9CisK
K0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OnN1YnNwYWNl
Rm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19j
YXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0g
Y2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmdldCgpKQorICAgICAgICByZXR1
cm4gc3BhY2U7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPiB8fCAhSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6bmVlZHNEZXN0cnVjdGlvbik7CisgICAgaWYgY29uc3Rl
eHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzPikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQo
KSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk7CisgICAgZWxzZQorICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlw
ZS5nZXQoKSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk7CisgICAgYXV0byogc3BhY2Ug
PSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmdldCgpOwor
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lHTk9SRV9XQVJOSU5H
U19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQorICAgIGlmICgmSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yczo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZp
c2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWlu
dFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECitJR05PUkVfV0FS
TklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCit2b2lkIEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnM6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFs
eXplcikKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMqPihjZWxsKTsKKyAgICBhbmFseXplci5zZXRXcmFwcGVkT2JqZWN0Rm9yQ2Vs
bChjZWxsLCAmdGhpc09iamVjdC0+d3JhcHBlZCgpKTsKKyAgICBpZiAodGhpc09iamVjdC0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICAgICBhbmFseXplci5zZXRMYWJlbEZvckNlbGwo
Y2VsbCwgInVybCAiICsgdGhpc09iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT51cmwo
KS5zdHJpbmcoKSk7CisgICAgQmFzZTo6YW5hbHl6ZUhlYXAoY2VsbCwgYW5hbHl6ZXIpOworfQor
Citib29sIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNPd25lcjo6aXNSZWFjaGFibGVGcm9t
T3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90
VmlzaXRvciYgdmlzaXRvciwgY29uc3QgY2hhcioqIHJlYXNvbikKK3sKKyAgICBVTlVTRURfUEFS
QU0oaGFuZGxlKTsKKyAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7CisgICAgVU5VU0VEX1BBUkFN
KHJlYXNvbik7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5k
bGUsIHZvaWQqIGNvbnRleHQpCit7CisgICAgYXV0byoganNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycyA9IHN0YXRpY19jYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqPihoYW5kbGUu
c2xvdCgpLT5hc0NlbGwoKSk7CisgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3Jh
cHBlcldvcmxkKj4oY29udGV4dCk7CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzLT53cmFwcGVkKCksIGpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMpOworfQorCisjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQorI2lmIFBMQVRGT1JN
KFdJTikKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NDgzKQorZXh0ZXJuICJDIiB7IGV4dGVy
biB2b2lkICgqY29uc3QgX19pZGVudGlmaWVyKCI/P183VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNAV2ViQ29yZUBANkJAIilbXSkoKTsgfQorI2Vsc2UKK2V4dGVybiAiQyIgeyBleHRlcm4gdm9p
ZCogX1pUVk43V2ViQ29yZTI2VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNFW107IH0KKyNlbmRp
ZgorI2VuZGlmCisKK0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnM+JiYgaW1wbCkKK3sKKworI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklU
WSkKKyAgICBjb25zdCB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gZ2V0VlRhYmxlUG9pbnRl
cihpbXBsLnB0cigpKTsKKyNpZiBQTEFURk9STShXSU4pCisgICAgdm9pZCogZXhwZWN0ZWRWVGFi
bGVQb2ludGVyID0gX19pZGVudGlmaWVyKCI/P183VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNA
V2ViQ29yZUBANkJAIik7CisjZWxzZQorICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9
ICZfWlRWTjdXZWJDb3JlMjZUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0VbMl07CisjZW5kaWYK
KworICAgIC8vIElmIHRoaXMgZmFpbHMgVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgZG9lcyBu
b3QgaGF2ZSBhIHZ0YWJsZSwgc28geW91IG5lZWQgdG8gYWRkIHRoZQorICAgIC8vIEltcGxlbWVu
dGF0aW9uTGFja3NWVGFibGUgYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgZGVmaW5pdGlvbgor
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19wb2x5bW9ycGhpYzxUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycz46OnZhbHVlLCAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgaXMgbm90IHBvbHlt
b3JwaGljIik7CisKKyAgICAvLyBJZiB5b3UgaGl0IHRoaXMgYXNzZXJ0aW9uIHlvdSBlaXRoZXIg
aGF2ZSBhIHVzZSBhZnRlciBmcmVlIGJ1Zywgb3IKKyAgICAvLyBUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycyBoYXMgc3ViY2xhc3Nlcy4gSWYgVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgaGFz
IHN1YmNsYXNzZXMgdGhhdCBnZXQgcGFzc2VkCisgICAgLy8gdG8gdG9KUygpIHdlIGN1cnJlbnRs
eSByZXF1aXJlIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIHlvdSB0byBvcHQgb3V0IG9mIGJp
bmRpbmcgaGFyZGVuaW5nCisgICAgLy8gYnkgYWRkaW5nIHRoZSBTa2lwVlRhYmxlVmFsaWRhdGlv
biBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBJREwgZGVmaW5pdGlvbgorICAgIFJFTEVBU0Vf
QVNTRVJUKGFjdHVhbFZUYWJsZVBvaW50ZXIgPT0gZXhwZWN0ZWRWVGFibGVQb2ludGVyKTsKKyNl
bmRpZgorICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
PihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhK
U0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyYgaW1wbCkKK3sKKyAg
ICByZXR1cm4gd3JhcChsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGltcGwpOwor
fQorCitUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yczo6dG9XcmFwcGVkKEpTQzo6Vk0mIHZtLCBKU0M6OkpTVmFsdWUgdmFsdWUpCit7CisgICAg
aWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMqPih2bSwgdmFsdWUpKQorICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsK
KyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycy5oCShyZXZpc2lvbiAyNjY3MjcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsOTMgQEAKIC8qCi0gICAgVGhpcyBmaWxlIGlzIGdl
bmVyYXRlZCBqdXN0IHRvIHRlbGwgYnVpbGQgc2NyaXB0cyB0aGF0IEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMuaCBhbmQKLSAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcCBh
cmUgY3JlYXRlZCBmb3IgVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaWRsLCBhbmQgdGh1cwot
ICAgIHByZXZlbnQgdGhlIGJ1aWxkIHNjcmlwdHMgZnJvbSB0cnlpbmcgdG8gZ2VuZXJhdGUgSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oIGFuZAotICAgIEpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMuY3BwIGF0IGV2ZXJ5IGJ1aWxkLiBUaGlzIGZpbGUgbXVzdCBub3QgYmUgdHJpZWQg
dG8gY29tcGlsZS4KKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291
cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0
ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAg
ICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAg
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAg
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIkpTRE9NV3JhcHBlci5oIgorI2luY2x1ZGUgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
LmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyA6IHB1YmxpYyBKU0RPTVdy
YXBwZXI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+IHsKK3B1YmxpYzoKKyAgICB1c2luZyBC
YXNlID0gSlNET01XcmFwcGVyPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPjsKKyAgICBzdGF0
aWMgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycz4mJiBpbXBsKQorICAgIHsKKyAgICAgICAgSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycyogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3Zl
KGltcGwpKTsKKyAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkp
OworICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0
KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CisgICAgc3Rh
dGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3Qm
KTsKKyAgICBzdGF0aWMgVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIHRvV3JhcHBlZChKU0M6
OlZNJiwgSlNDOjpKU1ZhbHVlKTsKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxs
Kik7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEpTQzo6
U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJ
bmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9uQXJy
YXkpOworICAgIH0KKworICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlND
OjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUg
PT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAg
ICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsK
KyAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYp
OworcHJvdGVjdGVkOgorICAgIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoSlNDOjpTdHJ1
Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cz4mJik7CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK307CisKK2NsYXNz
IEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNPd25lciA6IHB1YmxpYyBKU0M6OldlYWtIYW5k
bGVPd25lciB7CitwdWJsaWM6CisgICAgdmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1
ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xv
dFZpc2l0b3ImLCBjb25zdCBjaGFyKiopOworICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6
OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0KTsKK307CisKK2lubGluZSBKU0M6
OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCYsIFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzKikKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc093bmVyPiBvd25lcjsKKyAgICByZXR1cm4gJm93bmVyLmdl
dCgpOworfQorCitpbmxpbmUgdm9pZCogd3JhcHBlcktleShUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycyogd3JhcHBhYmxlT2JqZWN0KQoreworICAgIHJldHVybiB3cmFwcGFibGVPYmplY3Q7Cit9
CisKK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9i
amVjdCosIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzJik7CitpbmxpbmUgSlNDOjpKU1ZhbHVl
IHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIGltcGwp
IHsgcmV0dXJuIGltcGwgPyB0b0pTKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwg
KmltcGwpIDogSlNDOjpqc051bGwoKTsgfQorSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQo
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUmVmPFRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzPiYmKTsKK2lubGluZSBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRl
ZChKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBSZWZQdHI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+JiYg
aW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlNOZXdseUNyZWF0ZWQobGV4aWNhbEdsb2JhbE9iamVj
dCwgZ2xvYmFsT2JqZWN0LCBpbXBsLnJlbGVhc2VOb25OdWxsKCkpIDogSlNDOjpqc051bGwoKTsg
fQorCit0ZW1wbGF0ZTw+IHN0cnVjdCBKU0RPTVdyYXBwZXJDb252ZXJ0ZXJUcmFpdHM8VGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+IHsKKyAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzOworICAgIHVzaW5nIFRvV3JhcHBlZFJldHVyblR5cGUgPSBU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyo7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGFy
dGlhbE1peGluSW50ZXJmYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGFydGlhbE1peGluSW50ZXJmYWNlLmNwcAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0UGFydGlhbE1peGluSW50ZXJmYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYg
QEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBqdXN0IHRvIHRlbGwgYnVpbGQgc2Ny
aXB0cyB0aGF0IEpTVGVzdFBhcnRpYWxNaXhpbkludGVyZmFjZS5oIGFuZAorICAgIEpTVGVzdFBh
cnRpYWxNaXhpbkludGVyZmFjZS5jcHAgYXJlIGNyZWF0ZWQgZm9yIFRlc3RQYXJ0aWFsTWl4aW5J
bnRlcmZhY2UuaWRsLCBhbmQgdGh1cworICAgIHByZXZlbnQgdGhlIGJ1aWxkIHNjcmlwdHMgZnJv
bSB0cnlpbmcgdG8gZ2VuZXJhdGUgSlNUZXN0UGFydGlhbE1peGluSW50ZXJmYWNlLmggYW5kCisg
ICAgSlNUZXN0UGFydGlhbE1peGluSW50ZXJmYWNlLmNwcCBhdCBldmVyeSBidWlsZC4gVGhpcyBm
aWxlIG11c3Qgbm90IGJlIHRyaWVkIHRvIGNvbXBpbGUuCisqLwpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBhcnRpYWxNaXhpbkludGVyZmFjZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RQYXJ0aWFsTWl4aW5JbnRlcmZhY2UuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGFydGlhbE1peGluSW50ZXJmYWNl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2IEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBn
ZW5lcmF0ZWQganVzdCB0byB0ZWxsIGJ1aWxkIHNjcmlwdHMgdGhhdCBKU1Rlc3RQYXJ0aWFsTWl4
aW5JbnRlcmZhY2UuaCBhbmQKKyAgICBKU1Rlc3RQYXJ0aWFsTWl4aW5JbnRlcmZhY2UuY3BwIGFy
ZSBjcmVhdGVkIGZvciBUZXN0UGFydGlhbE1peGluSW50ZXJmYWNlLmlkbCwgYW5kIHRodXMKKyAg
ICBwcmV2ZW50IHRoZSBidWlsZCBzY3JpcHRzIGZyb20gdHJ5aW5nIHRvIGdlbmVyYXRlIEpTVGVz
dFBhcnRpYWxNaXhpbkludGVyZmFjZS5oIGFuZAorICAgIEpTVGVzdFBhcnRpYWxNaXhpbkludGVy
ZmFjZS5jcHAgYXQgZXZlcnkgYnVpbGQuIFRoaXMgZmlsZSBtdXN0IG5vdCBiZSB0cmllZCB0byBj
b21waWxlLgorKi8KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudE9yU2hhZG93Um9v
dFN0eWxlU2hlZXRzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1l
bnRPclNoYWRvd1Jvb3RTdHlsZVNoZWV0cy5pZGwJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dl
YkNvcmUvY3NzL0RvY3VtZW50T3JTaGFkb3dSb290U3R5bGVTaGVldHMuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBodHRwczovL2RyYWZ0cy5jc3N3
Zy5vcmcvY3Nzb20vI2V4dGVuc2lvbnMtdG8tdGhlLWRvY3VtZW50LW9yLXNoYWRvdy1yb290LWlu
dGVyZmFjZQorcGFydGlhbCBpbnRlcmZhY2UgbWl4aW4gRG9jdW1lbnRPclNoYWRvd1Jvb3Qgewor
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTdHlsZVNoZWV0TGlzdCBzdHlsZVNoZWV0czsgLy8gRklY
TUU6IFNob3VsZCBiZSBbU2FtZU9iamVjdF0uCit9OworCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRPclNoYWRvd1Jvb3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudE9yU2hhZG93Um9vdC5pZGwJKHJldmlzaW9uIDI2NjcyNykKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9yU2hhZG93Um9vdC5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDIyICsyNiwyMiBAQAogCiAvLyBodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2RvY3Vt
ZW50b3JzaGFkb3dyb290CiBpbnRlcmZhY2UgbWl4aW4gRG9jdW1lbnRPclNoYWRvd1Jvb3Qgewot
ICAgIC8vIEV4dGVuc2lvbnMgZnJvbSBTaGFkb3cgRE9NIEFQSSAoaHR0cHM6Ly93M2MuZ2l0aHVi
LmlvL3dlYmNvbXBvbmVudHMvc3BlYy9zaGFkb3cvI2V4dGVuc2lvbnMtdG8tdGhlLWRvY3VtZW50
b3JzaGFkb3dyb290LW1peGluKS4KLSAgICAvLyBET01TZWxlY3Rpb24/IGdldFNlbGVjdGlvbigp
OyAvLyBGSVhNRTogV2UgY3VycmVudGx5IGhhdmUgdGhpcyBvbiBEb2N1bWVudCBvbmx5LgotICAg
IEVsZW1lbnQ/IGVsZW1lbnRGcm9tUG9pbnQoZG91YmxlIHgsIGRvdWJsZSB5KTsKLSAgICBzZXF1
ZW5jZTxFbGVtZW50PiBlbGVtZW50c0Zyb21Qb2ludChkb3VibGUgeCwgZG91YmxlIHkpOwotICAg
IC8vIENhcmV0UG9zaXRpb24/IGNhcmV0UG9zaXRpb25Gcm9tUG9pbnQoZG91YmxlIHgsIGRvdWJs
ZSB5KTsgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorICAgIC8vIEV4dGVuc2lvbnMgZnJvbSBI
VE1MIChodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9kb20uaHRtbCNkb2N1
bWVudG9yc2hhZG93cm9vdCkKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVudD8gYWN0aXZl
RWxlbWVudDsKIAotICAgIC8vIEV4dGVuc2lvbnMgZnJvbSB0aGUgQ1NTT00gc3BlY2lmaWNhdGlv
biAoaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzc29tLyNleHRlbnNpb25zLXRvLXRoZS1kb2N1
bWVudC1pbnRlcmZhY2UpLgotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTdHlsZVNoZWV0TGlzdCBz
dHlsZVNoZWV0czsgLy8gRklYTUU6IFNob3VsZCBiZSBbU2FtZU9iamVjdF0uCi0KLSAgICAvLyBF
eHRlbnNpb25zIGZyb20gUG9pbnRlciBMb2NrIEFQSSAoaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3Bv
aW50ZXJsb2NrLyNleHRlbnNpb25zLXRvLXRoZS1kb2N1bWVudG9yc2hhZG93cm9vdC1taXhpbiku
Ci0gICAgW0NvbmRpdGlvbmFsPVBPSU5URVJfTE9DS10gcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1l
bnQ/IHBvaW50ZXJMb2NrRWxlbWVudDsKKyAgICAvLyBGSVhNRTogZ2V0U2VsZWN0aW9uIGlzIGN1
cnJlbnRseSBkZWZpbmVkIG9ubHkgdG8gYmUgb24gRG9jdW1lbnQgaW4gdGhlIFNlbGVjdGlvbiBB
UEkgc3BlYworICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9zZWxlY3Rpb24tYXBpLyNleHRl
bnNpb25zLXRvLWRvY3VtZW50LWludGVyZmFjZSwgYnV0CisgICAgLy8gcHJldmlvdXNseSBoYWQg
YmVlbiBkZWZpbmVkIHRvIGJlIG9uIERvY3VtZW50T3JTaGFkb3dSb290IGluIHRoZSBkZXByZWNh
dGVkIFNoYWRvdyBET00gc3BlYworICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJjb21w
b25lbnRzL3NwZWMvc2hhZG93LyNleHRlbnNpb25zLXRvLXRoZS1kb2N1bWVudG9yc2hhZG93cm9v
dC1taXhpbi4KKyAgICAvLyBXZSBzaG91bGQgZ2V0IHRoaXMgcmVzb2x2ZWQgaW4gdGhlIFNlbGVj
dGlvbiBBUEkgc3BlYyBhbmQgbW92ZSB0aGlzIHRvIHRoZSBjb3JyZWN0IElETCBmaWxlcy4KKyAg
ICAvLyBET01TZWxlY3Rpb24/IGdldFNlbGVjdGlvbigpOwogCi0gICAgLy8gRXh0ZW5zaW9ucyBm
cm9tIFBpY3R1cmUtaW4tUGljdHVyZSBBUEkgKGh0dHBzOi8vd2ljZy5naXRodWIuaW8vcGljdHVy
ZS1pbi1waWN0dXJlLyNkb2N1bWVudG9yc2hhZG93cm9vdC1leHRlbnNpb24pCi0gICAgW0NvbmRp
dGlvbmFsPVBJQ1RVUkVfSU5fUElDVFVSRV9BUEksIEVuYWJsZWRCeVNldHRpbmc9UGljdHVyZUlu
UGljdHVyZUFQSV0gcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQ/IHBpY3R1cmVJblBpY3R1cmVF
bGVtZW50OwotCi0gICAgLy8gRXh0ZW5zaW9uIGZyb20gV2ViIEFuaW1hdGlvbnMgQVBJIChodHRw
czovL2RyYWZ0cy5jc3N3Zy5vcmcvd2ViLWFuaW1hdGlvbnMtMS8jZXh0ZW5zaW9ucy10by10aGUt
ZG9jdW1lbnRvcnNoYWRvd3Jvb3QtaW50ZXJmYWNlLW1peGluKQotICAgIFtFbmFibGVkQXRSdW50
aW1lPVdlYkFuaW1hdGlvbnNdIHNlcXVlbmNlPFdlYkFuaW1hdGlvbj4gZ2V0QW5pbWF0aW9ucygp
OworICAgIC8vIEZJWE1FOiBUaGVzZSBhcmUgY3VycmVudGx5IGRlZmluZWQgb25seSB0byBiZSBv
biBEb2N1bWVudCBpbiB0aGUgQ1NTT00gc3BlYworICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dn
Lm9yZy9jc3NvbS12aWV3LyNleHRlbnNpb25zLXRvLXRoZS1kb2N1bWVudC1pbnRlcmZhY2UsIGJ1
dAorICAgIC8vIHByZXZpb3VzbHkgaGFkIGJlZW4gZGVmaW5lZCB0byBiZSBvbiBEb2N1bWVudE9y
U2hhZG93Um9vdCBpbiB0aGUgZGVwcmVjYXRlZCBTaGFkb3cgRE9NIHNwZWMKKyAgICAvLyBodHRw
czovL3czYy5naXRodWIuaW8vd2ViY29tcG9uZW50cy9zcGVjL3NoYWRvdy8jZXh0ZW5zaW9ucy10
by10aGUtZG9jdW1lbnRvcnNoYWRvd3Jvb3QtbWl4aW4uCisgICAgLy8gV2Ugc2hvdWxkIGdldCB0
aGlzIHJlc29sdmVkIGluIHRoZSBDU1NPTSBzcGVjIGFuZCBtb3ZlIHRoZXNlIHRvIHRoZSBjb3Jy
ZWN0IElETCBmaWxlcy4KKyAgICBFbGVtZW50PyBlbGVtZW50RnJvbVBvaW50KGRvdWJsZSB4LCBk
b3VibGUgeSk7CisgICAgc2VxdWVuY2U8RWxlbWVudD4gZWxlbWVudHNGcm9tUG9pbnQoZG91Ymxl
IHgsIGRvdWJsZSB5KTsKKyAgICAvLyBDYXJldFBvc2l0aW9uPyBjYXJldFBvc2l0aW9uRnJvbVBv
aW50KGRvdWJsZSB4LCBkb3VibGUgeSk7IC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KIH07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRPclNoYWRvd1Jvb3RQb2ludGVyTG9jay5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3JTaGFkb3dSb290
UG9pbnRlckxvY2suaWRsCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudE9yU2hhZG93Um9vdFBvaW50ZXJMb2NrLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3BvaW50ZXJsb2Nr
LyNleHRlbnNpb25zLXRvLXRoZS1kb2N1bWVudG9yc2hhZG93cm9vdC1taXhpbgorWworICAgIENv
bmRpdGlvbmFsPVBPSU5URVJfTE9DSworXSBwYXJ0aWFsIGludGVyZmFjZSBtaXhpbiBEb2N1bWVu
dE9yU2hhZG93Um9vdCB7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQ/IHBvaW50ZXJM
b2NrRWxlbWVudDsKK307Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408241</attachid>
            <date>2020-09-08 10:38:49 -0700</date>
            <delta_ts>2020-09-08 12:27:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216255-20200908103848.patch</filename>
            <type>text/plain</type>
            <size>172900</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NjcyNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTA5LTA3ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViSURMXSBBZGQgc3VwcG9ydCBm
b3IgcGFydGlhbCBpbnRlcmZhY2UgbWl4aW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTYyNTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBbV0lQXQorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3IucG06CisgICAgICAgIChQcm9jZXNzSW50ZXJmYWNlU3VwcGxlbWVudGFsRGVwZW5kZW5j
aWVzKToKKyAgICAgICAgKFByb2Nlc3NEaWN0aW9uYXJ5U3VwcGxlbWVudGFsRGVwZW5kZW5jaWVz
KToKKyAgICAgICAgKHNob3VsZFByb3BlcnR5QmVFeHBvc2VkKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbDoKKyAgICAgICAgKGdldFBhcnRpYWxOYW1lc0Zy
b21JREwpOgorCisgICAgICAgICogY3NzL0RvY3VtZW50T3JTaGFkb3dSb290U3R5bGVTaGVldHMu
aWRsOiBBZGRlZC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnRPclNoYWRvd1Jvb3QuaWRsOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudE9yU2hhZG93Um9vdFBvaW50ZXJMb2NrLmlkbDogQWRkZWQuCisg
ICAgICAgICogTW9kdWxlcy9waWN0dXJlaW5waWN0dXJlL0RvY3VtZW50T3JTaGFkb3dSb290UGlj
dHVyZUluUGljdHVyZS5pZGw6IEFkZGVkLgorICAgICAgICAqIGFuaW1hdGlvbi9Eb2N1bWVudE9y
U2hhZG93Um9vdEFuaW1hdGlvbnMuaWRsOiBBZGRlZC4KKworICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmNwcDoKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5oOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmNsdWRlcy5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluY2x1ZGVzLmg6
IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVy
ZmFjZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVy
ZmFjZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNaXhpbklu
dGVyZmFjZS5jcHA6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RNaXhpbkludGVyZmFjZS5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0UGFydGlhbE1peGluSW50ZXJmYWNlLmNwcDogQWRkZWQuCisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBhcnRpYWxNaXhpbkludGVyZmFjZS5o
OiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxlbWVudGFsRGVw
ZW5kZW5jaWVzLmRlcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENvbmRp
dGlvbmFsSW5jbHVkZXMuaWRsOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0
SW5jbHVkZXMuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9U
ZXN0SW50ZXJmYWNlLmlkbDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE1p
eGluSW50ZXJmYWNlLmlkbDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Rlc3RPYmouaWRsOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0UGFydGlh
bE1peGluSW50ZXJmYWNlLmlkbDogQWRkZWQuCisKIDIwMjAtMDktMDggIFphbGFuIEJ1anRhcyAg
PHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIFJlbW92ZSByZWR1bmRhbnQg
Rm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6bGluZURlc2NlbnROZWVkc0NvbGxhcHNpbmcKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyNjY3MjcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNDI3LDYgKzQyNyw3IEBAIHNldChX
ZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAgTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXlt
ZW50U2hpcHBpbmdUeXBlLmlkbAogICAgIE1vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFZh
bGlkYXRpb25FcnJvcnMuaWRsCiAKKyAgICBNb2R1bGVzL3BpY3R1cmVpbnBpY3R1cmUvRG9jdW1l
bnRPclNoYWRvd1Jvb3RQaWN0dXJlSW5QaWN0dXJlLmlkbAogICAgIE1vZHVsZXMvcGljdHVyZWlu
cGljdHVyZS9Eb2N1bWVudFBpY3R1cmVJblBpY3R1cmUuaWRsCiAgICAgTW9kdWxlcy9waWN0dXJl
aW5waWN0dXJlL0VudGVyUGljdHVyZUluUGljdHVyZUV2ZW50LmlkbAogICAgIE1vZHVsZXMvcGlj
dHVyZWlucGljdHVyZS9IVE1MVmlkZW9FbGVtZW50UGljdHVyZUluUGljdHVyZS5pZGwKQEAgLTY0
MSw2ICs2NDIsNyBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAgIGFuaW1hdGlv
bi9Db21wb3NpdGVPcGVyYXRpb24uaWRsCiAgICAgYW5pbWF0aW9uL0NvbXBvc2l0ZU9wZXJhdGlv
bk9yQXV0by5pZGwKICAgICBhbmltYXRpb24vQ29tcHV0ZWRFZmZlY3RUaW1pbmcuaWRsCisgICAg
YW5pbWF0aW9uL0RvY3VtZW50T3JTaGFkb3dSb290QW5pbWF0aW9ucy5pZGwKICAgICBhbmltYXRp
b24vRG9jdW1lbnRUaW1lbGluZS5pZGwKICAgICBhbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZU9w
dGlvbnMuaWRsCiAgICAgYW5pbWF0aW9uL0ZpbGxNb2RlLmlkbApAQCAtNzAwLDYgKzcwMiw3IEBA
IHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAgY3NzL0NTU1N0eWxlU2hlZXQuaWRs
CiAgICAgY3NzL0NTU1N1cHBvcnRzUnVsZS5pZGwKICAgICBjc3MvQ1NTVW5rbm93blJ1bGUuaWRs
CisgICAgY3NzL0RvY3VtZW50T3JTaGFkb3dSb290U3R5bGVTaGVldHMuaWRsCiAgICAgY3NzL0RP
TUNTU0N1c3RvbVByb3BlcnR5RGVzY3JpcHRvci5pZGwKICAgICBjc3MvRE9NQ1NTTmFtZXNwYWNl
LmlkbAogICAgIGNzcy9ET01DU1NQYWludFdvcmtsZXQuaWRsCkBAIC03NzMsNiArNzc2LDcgQEAg
c2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBkb20vRG9jdW1lbnRGcmFnbWVudC5p
ZGwKICAgICBkb20vRG9jdW1lbnRGdWxsc2NyZWVuLmlkbAogICAgIGRvbS9Eb2N1bWVudE9yU2hh
ZG93Um9vdC5pZGwKKyAgICBkb20vRG9jdW1lbnRPclNoYWRvd1Jvb3RQb2ludGVyTG9jay5pZGwK
ICAgICBkb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmlkbAogICAgIGRvbS9Eb2N1bWVudFRvdWNo
LmlkbAogICAgIGRvbS9Eb2N1bWVudFR5cGUuaWRsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QJKHJldmlzaW9uIDI2NjcyNykKKysrIFNv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QJKHdvcmtpbmcgY29w
eSkKQEAgLTI1NSw2ICsyNTUsNyBAQCAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3BheW1lbnRyZXF1
ZXN0L1BhCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRTaGlw
cGluZ09wdGlvbi5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5
bWVudFNoaXBwaW5nVHlwZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvcGF5bWVudHJlcXVl
c3QvUGF5bWVudFZhbGlkYXRpb25FcnJvcnMuaWRsCiskKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3Bp
Y3R1cmVpbnBpY3R1cmUvRG9jdW1lbnRPclNoYWRvd1Jvb3RQaWN0dXJlSW5QaWN0dXJlLmlkbAog
JChQUk9KRUNUX0RJUikvTW9kdWxlcy9waWN0dXJlaW5waWN0dXJlL0RvY3VtZW50UGljdHVyZUlu
UGljdHVyZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvcGljdHVyZWlucGljdHVyZS9FbnRl
clBpY3R1cmVJblBpY3R1cmVFdmVudC5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvcGljdHVy
ZWlucGljdHVyZS9IVE1MVmlkZW9FbGVtZW50UGljdHVyZUluUGljdHVyZS5pZGwKQEAgLTUzNCw2
ICs1MzUsNyBAQCAkKFBST0pFQ1RfRElSKS9hbmltYXRpb24vQ1NTVHJhbnNpdGlvbi5pCiAkKFBS
T0pFQ1RfRElSKS9hbmltYXRpb24vQ29tcG9zaXRlT3BlcmF0aW9uLmlkbAogJChQUk9KRUNUX0RJ
UikvYW5pbWF0aW9uL0NvbXBvc2l0ZU9wZXJhdGlvbk9yQXV0by5pZGwKICQoUFJPSkVDVF9ESVIp
L2FuaW1hdGlvbi9Db21wdXRlZEVmZmVjdFRpbWluZy5pZGwKKyQoUFJPSkVDVF9ESVIpL2FuaW1h
dGlvbi9Eb2N1bWVudE9yU2hhZG93Um9vdEFuaW1hdGlvbnMuaWRsCiAkKFBST0pFQ1RfRElSKS9h
bmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5pZGwKICQoUFJPSkVDVF9ESVIpL2FuaW1hdGlvbi9E
b2N1bWVudFRpbWVsaW5lT3B0aW9ucy5pZGwKICQoUFJPSkVDVF9ESVIpL2FuaW1hdGlvbi9FZmZl
Y3RUaW1pbmcuaWRsCkBAIC02MTYsNiArNjE4LDcgQEAgJChQUk9KRUNUX0RJUikvY3NzL0RlcHJl
Y2F0ZWRDU1NPTVJHQkNvbAogJChQUk9KRUNUX0RJUikvY3NzL0RlcHJlY2F0ZWRDU1NPTVJlY3Qu
aWRsCiAkKFBST0pFQ1RfRElSKS9jc3MvRGVwcmVjYXRlZENTU09NVmFsdWUuaWRsCiAkKFBST0pF
Q1RfRElSKS9jc3MvRGVwcmVjYXRlZENTU09NVmFsdWVMaXN0LmlkbAorJChQUk9KRUNUX0RJUikv
Y3NzL0RvY3VtZW50T3JTaGFkb3dSb290U3R5bGVTaGVldHMuaWRsCiAkKFBST0pFQ1RfRElSKS9j
c3MvRWxlbWVudENTU0lubGluZVN0eWxlLmlkbAogJChQUk9KRUNUX0RJUikvY3NzL0ZvbnRGYWNl
LmlkbAogJChQUk9KRUNUX0RJUikvY3NzL0ZvbnRGYWNlU2V0LmlkbApAQCAtNjkxLDYgKzY5NCw3
IEBAICQoUFJPSkVDVF9ESVIpL2RvbS9Eb2N1bWVudEFuZEVsZW1lbnRFdmUKICQoUFJPSkVDVF9E
SVIpL2RvbS9Eb2N1bWVudEZyYWdtZW50LmlkbAogJChQUk9KRUNUX0RJUikvZG9tL0RvY3VtZW50
RnVsbHNjcmVlbi5pZGwKICQoUFJPSkVDVF9ESVIpL2RvbS9Eb2N1bWVudE9yU2hhZG93Um9vdC5p
ZGwKKyQoUFJPSkVDVF9ESVIpL2RvbS9Eb2N1bWVudE9yU2hhZG93Um9vdFBvaW50ZXJMb2NrLmlk
bAogJChQUk9KRUNUX0RJUikvZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5pZGwKICQoUFJPSkVD
VF9ESVIpL2RvbS9Eb2N1bWVudFRvdWNoLmlkbAogJChQUk9KRUNUX0RJUikvZG9tL0RvY3VtZW50
VHlwZS5pZGwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1
dC54Y2ZpbGVsaXN0CShyZXZpc2lvbiAyNjY3MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAkod29ya2luZyBjb3B5KQpAQCAtNTQ0LDYgKzU0NCwx
NCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RvY3VtZW50RnVsbHNjcmVlbi5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RvY3VtZW50
T3JTaGFkb3dSb290LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNEb2N1bWVudE9yU2hhZG93Um9vdC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RvY3VtZW50T3JTaGFkb3dSb290QW5pbWF0aW9ucy5jcHAK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRG9jdW1lbnRP
clNoYWRvd1Jvb3RBbmltYXRpb25zLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTRG9jdW1lbnRPclNoYWRvd1Jvb3RQaWN0dXJlSW5QaWN0dXJlLmNwcAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEb2N1bWVudE9y
U2hhZG93Um9vdFBpY3R1cmVJblBpY3R1cmUuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNEb2N1bWVudE9yU2hhZG93Um9vdFBvaW50ZXJMb2NrLmNwcAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEb2N1bWVudE9y
U2hhZG93Um9vdFBvaW50ZXJMb2NrLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTRG9jdW1lbnRPclNoYWRvd1Jvb3RTdHlsZVNoZWV0cy5jcHAKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRG9jdW1lbnRPclNoYWRv
d1Jvb3RTdHlsZVNoZWV0cy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0RvY3VtZW50UGljdHVyZUluUGljdHVyZS5jcHAKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRG9jdW1lbnRQaWN0dXJlSW5QaWN0dXJlLmgK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRG9jdW1lbnRT
dG9yYWdlQWNjZXNzLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZp
c2lvbiAyNjY3MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNTMsNiArMzUzLDcgQEAgSlNfQklORElOR19JRExTID0gXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50U2hpcHBpbmdPcHRpb24uaWRs
IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFNoaXBwaW5n
VHlwZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50
VmFsaWRhdGlvbkVycm9ycy5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9waWN0dXJlaW5w
aWN0dXJlL0RvY3VtZW50T3JTaGFkb3dSb290UGljdHVyZUluUGljdHVyZS5pZGwgXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9waWN0dXJlaW5waWN0dXJlL0RvY3VtZW50UGljdHVyZUluUGljdHVy
ZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9waWN0dXJlaW5waWN0dXJlL0VudGVyUGlj
dHVyZUluUGljdHVyZUV2ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3BpY3R1cmVp
bnBpY3R1cmUvSFRNTFZpZGVvRWxlbWVudFBpY3R1cmVJblBpY3R1cmUuaWRsIFwKQEAgLTU5OCw2
ICs1OTksNyBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9hbmltYXRpb24v
Q29tcG9zaXRlT3BlcmF0aW9uLmlkbCBcCiAgICAgJChXZWJDb3JlKS9hbmltYXRpb24vQ29tcG9z
aXRlT3BlcmF0aW9uT3JBdXRvLmlkbCBcCiAgICAgJChXZWJDb3JlKS9hbmltYXRpb24vQ29tcHV0
ZWRFZmZlY3RUaW1pbmcuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2FuaW1hdGlvbi9Eb2N1bWVudE9y
U2hhZG93Um9vdEFuaW1hdGlvbnMuaWRsIFwKICAgICAkKFdlYkNvcmUpL2FuaW1hdGlvbi9Eb2N1
bWVudFRpbWVsaW5lLmlkbCBcCiAgICAgJChXZWJDb3JlKS9hbmltYXRpb24vRG9jdW1lbnRUaW1l
bGluZU9wdGlvbnMuaWRsIFwKICAgICAkKFdlYkNvcmUpL2FuaW1hdGlvbi9FZmZlY3RUaW1pbmcu
aWRsIFwKQEAgLTY1NCw2ICs2NTYsNyBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJD
b3JlKS9jc3MvQ1NTU3R5bGVTaGVldC5pZGwgXAogICAgICQoV2ViQ29yZSkvY3NzL0NTU1N1cHBv
cnRzUnVsZS5pZGwgXAogICAgICQoV2ViQ29yZSkvY3NzL0NTU1Vua25vd25SdWxlLmlkbCBcCisg
ICAgJChXZWJDb3JlKS9jc3MvRG9jdW1lbnRPclNoYWRvd1Jvb3RTdHlsZVNoZWV0cy5pZGwgXAog
ICAgICQoV2ViQ29yZSkvY3NzL0RPTUNTU0N1c3RvbVByb3BlcnR5RGVzY3JpcHRvci5pZGwgXAog
ICAgICQoV2ViQ29yZSkvY3NzL0RPTUNTU05hbWVzcGFjZS5pZGwgXAogICAgICQoV2ViQ29yZSkv
Y3NzL0RPTUNTU1BhaW50V29ya2xldC5pZGwgXApAQCAtNzI0LDYgKzcyNyw3IEBAIEpTX0JJTkRJ
TkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL2RvbS9Eb2N1bWVudEZ1bGxzY3JlZW4uaWRsIFwK
ICAgICAkKFdlYkNvcmUpL2RvbS9Eb2N1bWVudEZyYWdtZW50LmlkbCBcCiAgICAgJChXZWJDb3Jl
KS9kb20vRG9jdW1lbnRPclNoYWRvd1Jvb3QuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2RvbS9Eb2N1
bWVudE9yU2hhZG93Um9vdFBvaW50ZXJMb2NrLmlkbCBcCiAgICAgJChXZWJDb3JlKS9kb20vRG9j
dW1lbnRTdG9yYWdlQWNjZXNzLmlkbCBcCiAgICAgJChXZWJDb3JlKS9kb20vRG9jdW1lbnRUeXBl
LmlkbCBcCiAgICAgJChXZWJDb3JlKS9kb20vRHJhZ0V2ZW50LmlkbCBcCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3BpY3R1cmVpbnBpY3R1cmUvRG9jdW1lbnRPclNoYWRvd1Jvb3RQaWN0
dXJlSW5QaWN0dXJlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Bp
Y3R1cmVpbnBpY3R1cmUvRG9jdW1lbnRPclNoYWRvd1Jvb3RQaWN0dXJlSW5QaWN0dXJlLmlkbAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BpY3R1cmVpbnBpY3R1cmUv
RG9jdW1lbnRPclNoYWRvd1Jvb3RQaWN0dXJlSW5QaWN0dXJlLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3Bp
Y3R1cmUtaW4tcGljdHVyZS8jZG9jdW1lbnRvcnNoYWRvd3Jvb3QtZXh0ZW5zaW9uCitbCisgICAg
Q29uZGl0aW9uYWw9UElDVFVSRV9JTl9QSUNUVVJFX0FQSSwKKyAgICBFbmFibGVkQnlTZXR0aW5n
PVBpY3R1cmVJblBpY3R1cmVBUEkKK10gcGFydGlhbCBpbnRlcmZhY2UgbWl4aW4gRG9jdW1lbnRP
clNoYWRvd1Jvb3QgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50PyBwaWN0dXJlSW5Q
aWN0dXJlRWxlbWVudDsKK307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNjY3MjcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTEwMTI2LDYgKzEwMTI2LDEwIEBACiAJCTdDMzMwQTA1MURGOUY5NTEwMEQzMzk1QyAvKiBKU1Bv
c2l0aW9uT3B0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1Bvc2l0aW9uT3B0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMzMw
QTA2MURGOUY5NTEwMEQzMzk1QyAvKiBKU1Bvc2l0aW9uT3B0aW9ucy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1Bvc2l0aW9uT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QzMzRjM2MDFCNEEwNTA0MDA1MDJDQUYgLyogSlNEb2N1bWVudEZyYWdt
ZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRG9j
dW1lbnRGcmFnbWVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdD
MzY1NTY5MjUwNkREQjcwMEE3ODgyQiAvKiBEb2N1bWVudE9yU2hhZG93Um9vdFN0eWxlU2hlZXRz
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBEb2N1bWVudE9yU2hhZG93Um9vdFN0eWxlU2hlZXRzLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MzNjU1NkMyNTA2REU5QzAwQTc4ODJCIC8qIERvY3VtZW50
T3JTaGFkb3dSb290UG9pbnRlckxvY2suaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERvY3VtZW50T3JTaGFkb3dSb290UG9p
bnRlckxvY2suaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzM2NTU2RTI1MDZE
Rjk5MDBBNzg4MkIgLyogRG9jdW1lbnRPclNoYWRvd1Jvb3RQaWN0dXJlSW5QaWN0dXJlLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBEb2N1bWVudE9yU2hhZG93Um9vdFBpY3R1cmVJblBpY3R1cmUuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3QzM2NTU3MDI1MDZFMEE3MDBBNzg4MkIgLyogRG9jdW1lbnRP
clNoYWRvd1Jvb3RBbmltYXRpb25zLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBEb2N1bWVudE9yU2hhZG93Um9vdEFuaW1h
dGlvbnMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzM4MDZEQjI1MDVCMTg5
MDA3NDRBN0IgLyogQW5pbWF0aW9uRnJhbWVQcm92aWRlci5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gQW5pbWF0aW9uRnJhbWVQcm92aWRlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdDM0E5MUU1MUM5NjNCODgwMEQxQTdFMyAvKiBDbGlwYm9hcmRBY2Nlc3NQb2xpY3ku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xpcGJvYXJkQWNjZXNzUG9saWN5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDM0I3OTZGMTkwODc1N0IwMEI0N0Ey
RCAvKiBVc2VyTWVzc2FnZUhhbmRsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gVXNlck1lc3NhZ2VIYW5kbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE4MzUxLDYgKzE4MzU1LDcgQEAKIAkJMURFRjA2QTIyMzNDMzJEQjAwRUUyMjhEIC8q
IHBpY3R1cmVpbnBpY3R1cmUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAorCQkJCTdDMzY1NTZFMjUwNkRGOTkwMEE3ODgyQiAvKiBEb2N1bWVudE9yU2hhZG93Um9v
dFBpY3R1cmVJblBpY3R1cmUuaWRsICovLAogCQkJCTFERUYwNkRDMjMzRDJFMUMwMEVFMjI4RCAv
KiBEb2N1bWVudFBpY3R1cmVJblBpY3R1cmUuY3BwICovLAogCQkJCTFERUYwNkREMjMzRDJFMUMw
MEVFMjI4RCAvKiBEb2N1bWVudFBpY3R1cmVJblBpY3R1cmUuaCAqLywKIAkJCQkxREVGMDZERTIz
M0QyRTFDMDBFRTIyOEQgLyogRG9jdW1lbnRQaWN0dXJlSW5QaWN0dXJlLmlkbCAqLywKQEAgLTIx
ODA5LDYgKzIxODE0LDcgQEAKIAkJCQk3MTIzQzE4NTIwNDczOUI5MDA3ODkzOTIgLyogQ1NTVHJh
bnNpdGlvbi5pZGwgKi8sCiAJCQkJNzE1QUQ3MUYyMDUwNTEyNDAwRDU5MkRDIC8qIERlY2xhcmF0
aXZlQW5pbWF0aW9uLmNwcCAqLywKIAkJCQk3MTVBRDcxRDIwNTA1MTI0MDBENTkyREMgLyogRGVj
bGFyYXRpdmVBbmltYXRpb24uaCAqLywKKwkJCQk3QzM2NTU3MDI1MDZFMEE3MDBBNzg4MkIgLyog
RG9jdW1lbnRPclNoYWRvd1Jvb3RBbmltYXRpb25zLmlkbCAqLywKIAkJCQk3MTAyNUVDNDFGOTlG
MDk2MDA0QTI1MEMgLyogRG9jdW1lbnRUaW1lbGluZS5jcHAgKi8sCiAJCQkJNzEwMjVFQzUxRjk5
RjA5NjAwNEEyNTBDIC8qIERvY3VtZW50VGltZWxpbmUuaCAqLywKIAkJCQk3MTAyNUVDQTFGOTlG
MDk2MDA0QTI1MEMgLyogRG9jdW1lbnRUaW1lbGluZS5pZGwgKi8sCkBAIC0yODYzOCw2ICsyODY0
NCw3IEBACiAJCQkJOTQ3OTQ5MjcxRTAzMTMyMDAwMDE4RDg1IC8qIERlcHJlY2F0ZWRDU1NPTVZh
bHVlTGlzdC5oICovLAogCQkJCUE4RDA2NTFDMEEyM0MxRkUwMDVFNzIwMyAvKiBEZXByZWNhdGVk
Q1NTT01WYWx1ZUxpc3QuaWRsICovLAogCQkJCTBGQTBBMEU1MjNBRUFBMzUwMDBFRUI5NCAvKiBk
aWFsb2cuY3NzICovLAorCQkJCTdDMzY1NTY5MjUwNkREQjcwMEE3ODgyQiAvKiBEb2N1bWVudE9y
U2hhZG93Um9vdFN0eWxlU2hlZXRzLmlkbCAqLywKIAkJCQk0QkRBM0ZGODIxNTFCNkYyMDBGRDY2
MDQgLyogRE9NQ1NTQ3VzdG9tUHJvcGVydHlEZXNjcmlwdG9yLmggKi8sCiAJCQkJNEJEQTNGRkEy
MTUxQjZGMzAwRkQ2NjA0IC8qIERPTUNTU0N1c3RvbVByb3BlcnR5RGVzY3JpcHRvci5pZGwgKi8s
CiAJCQkJRkQ2Nzc3MzUxOTVDQUIyMDAwNzJFMEQzIC8qIERPTUNTU05hbWVzcGFjZS5jcHAgKi8s
CkBAIC0yOTE4Nyw2ICsyOTE5NCw3IEBACiAJCQkJQ0UwNTdGQTMxMjIwNzMxMTAwQTQ3NkQ1IC8q
IERvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAgKi8sCiAJCQkJQ0UwNTdGQTQxMjIwNzMxMTAw
QTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5oICovLAogCQkJCTlCMEZFODczMUQ5
RTAyREYwMDRBOEFDQiAvKiBEb2N1bWVudE9yU2hhZG93Um9vdC5pZGwgKi8sCisJCQkJN0MzNjU1
NkMyNTA2REU5QzAwQTc4ODJCIC8qIERvY3VtZW50T3JTaGFkb3dSb290UG9pbnRlckxvY2suaWRs
ICovLAogCQkJCUE4QzIyODBEMTFENEE1OTcwMEQ1QTdEMyAvKiBEb2N1bWVudFBhcnNlci5jcHAg
Ki8sCiAJCQkJQkNDRkJBRTcwQjUxNTJFRDAwMDFGMUQ3IC8qIERvY3VtZW50UGFyc2VyLmggKi8s
CiAJCQkJQUQ2RTcxQUExNjY4ODk5RDAwMzIwQzEzIC8qIERvY3VtZW50U2hhcmVkT2JqZWN0UG9v
bC5jcHAgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRPclNoYWRv
d1Jvb3RBbmltYXRpb25zLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vRG9jdW1lbnRPclNoYWRvd1Jvb3RBbmltYXRpb25zLmlkbAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRPclNoYWRvd1Jvb3RBbmltYXRpb25zLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gaHR0cHM6
Ly9kcmFmdHMuY3Nzd2cub3JnL3dlYi1hbmltYXRpb25zLTEvI2V4dGVuc2lvbnMtdG8tdGhlLWRv
Y3VtZW50b3JzaGFkb3dyb290LWludGVyZmFjZS1taXhpbgorWworICAgIEVuYWJsZWRBdFJ1bnRp
bWU9V2ViQW5pbWF0aW9ucworXSBwYXJ0aWFsIGludGVyZmFjZSBtaXhpbiBEb2N1bWVudE9yU2hh
ZG93Um9vdCB7CisgICAgc2VxdWVuY2U8V2ViQW5pbWF0aW9uPiBnZXRBbmltYXRpb25zKCk7Cit9
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvci5wbQkocmV2aXNpb24gMjY2NzI3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsNiArMTk2LDMxIEBA
IHN1YiBQcm9jZXNzRG9jdW1lbnQKICAgICBkaWUgIlByb2Nlc3NpbmcgZG9jdW1lbnQgIiAuICR1
c2VEb2N1bWVudC0+ZmlsZU5hbWUgLiAiIGRpZCBub3QgZ2VuZXJhdGUgYW55dGhpbmcuIjsKIH0K
IAorc3ViIEdlbmVyYXRlRW1wdHlIZWFkZXJBbmRDcHAKK3sKKyAgICBteSAoJG9iamVjdCwgJHVz
ZURvY3VtZW50LCAkY29kZUdlbmVyYXRvcikgPSBAXzsKKworICAgIG15ICR0YXJnZXROYW1lID0g
ZmlsZXBhcnNlKCR1c2VEb2N1bWVudC0+ZmlsZU5hbWUsICIuaWRsIik7CisgICAgbXkgJHByZWZp
eCA9ICRjb2RlR2VuZXJhdG9yLT5GaWxlTmFtZVByZWZpeCgpOworCisgICAgbXkgJGhlYWRlck5h
bWUgPSAiJHtwcmVmaXh9JHt0YXJnZXROYW1lfS5oIjsKKyAgICBteSAkY3BwTmFtZSA9ICIke3By
ZWZpeH0ke3RhcmdldE5hbWV9LmNwcCI7CisgICAgbXkgJGNvbnRlbnRzID0gIi8qCisgICAgVGhp
cyBmaWxlIGlzIGdlbmVyYXRlZCBqdXN0IHRvIHRlbGwgYnVpbGQgc2NyaXB0cyB0aGF0ICR7aGVh
ZGVyTmFtZX0gYW5kCisgICAgJHtjcHBOYW1lfSBhcmUgY3JlYXRlZCBmb3IgJHt0YXJnZXROYW1l
fS5pZGwsIGFuZCB0aHVzCisgICAgcHJldmVudCB0aGUgYnVpbGQgc2NyaXB0cyBmcm9tIHRyeWlu
ZyB0byBnZW5lcmF0ZSAke2hlYWRlck5hbWV9IGFuZAorICAgICR7Y3BwTmFtZX0gYXQgZXZlcnkg
YnVpbGQuIFRoaXMgZmlsZSBtdXN0IG5vdCBiZSB0cmllZCB0byBjb21waWxlLgorKi8KKyI7Cisg
ICAgb3BlbiBGSCwgIj4gJHt1c2VPdXRwdXRIZWFkZXJzRGlyfS8ke2hlYWRlck5hbWV9IiBvciBk
aWUgIkNhbm5vdCBvcGVuICR7aGVhZGVyTmFtZX1cbiI7CisgICAgcHJpbnQgRkggJGNvbnRlbnRz
OworICAgIGNsb3NlIEZIOworCisgICAgb3BlbiBGSCwgIj4gJHt1c2VPdXRwdXREaXJ9LyR7Y3Bw
TmFtZX0iIG9yIGRpZSAiQ2Fubm90IG9wZW4gJHtjcHBOYW1lfVxuIjsKKyAgICBwcmludCBGSCAk
Y29udGVudHM7CisgICAgY2xvc2UgRkg7Cit9CisKIHN1YiBQcm9jZXNzRGljdGlvbmFyeUFuZEVu
dW1lcmF0aW9uSW1wbGVtZW50ZWRBc092ZXJyaWRlcwogewogICAgIG15ICgkb2JqZWN0LCAkdXNl
RG9jdW1lbnQpID0gQF87CkBAIC0yMTksNiArMjQ0LDExIEBAIHN1YiBQcm9jZXNzSW50ZXJmYWNl
cwogCiAgICAgZGllICJNdWx0aXBsZSBpbnRlcmZhY2VzIHBlciBkb2N1bWVudCBhcmUgbm90IHN1
cHBvcnRlZCIgaWYgQHskdXNlRG9jdW1lbnQtPmludGVyZmFjZXN9ID4gMTsKICAgICBteSAkaW50
ZXJmYWNlID0gJHVzZURvY3VtZW50LT5pbnRlcmZhY2VzLT5bMF07CisgICAgCisgICAgaWYgKCRp
bnRlcmZhY2UtPmlzTWl4aW4gfHwgJGludGVyZmFjZS0+aXNQYXJ0aWFsKSB7CisgICAgICAgICRv
YmplY3QtPkdlbmVyYXRlRW1wdHlIZWFkZXJBbmRDcHAoJHVzZURvY3VtZW50LCAkY29kZUdlbmVy
YXRvcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICAkb2JqZWN0LT5Qcm9jZXNzSW50
ZXJmYWNlU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzKCRpbnRlcmZhY2UsICR1c2VEb2N1bWVudCk7
CiAgICAgJG9iamVjdC0+UHJvY2Vzc0RpY3Rpb25hcnlBbmRFbnVtZXJhdGlvbkltcGxlbWVudGVk
QXNPdmVycmlkZXMoJHVzZURvY3VtZW50KTsKQEAgLTI2Miw2ICsyOTIsMTEgQEAgc3ViIFByb2Nl
c3NEaWN0aW9uYXJpZXMKICAgICAgICAgZGllICJNdWx0aXBsZSBkaWN0aW9uYXJpZXMgcGVyIGRv
Y3VtZW50IGFyZSBvbmx5IHN1cHBvcnRlZCBpZiBvbmUgbWF0Y2hlcyB0aGUgZmlsZW5hbWUiIHVu
bGVzcyAkZGljdGlvbmFyeTsKICAgICB9CiAKKyAgICBpZiAoJGRpY3Rpb25hcnktPmlzUGFydGlh
bCkgeworICAgICAgICAkb2JqZWN0LT5HZW5lcmF0ZUVtcHR5SGVhZGVyQW5kQ3BwKCR1c2VEb2N1
bWVudCwgJGNvZGVHZW5lcmF0b3IpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgJG9i
amVjdC0+UHJvY2Vzc0RpY3Rpb25hcnlTdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMoJGRpY3Rpb25h
cnksICR1c2VEb2N1bWVudCk7CiAgICAgJG9iamVjdC0+UHJvY2Vzc0RpY3Rpb25hcnlBbmRFbnVt
ZXJhdGlvbkltcGxlbWVudGVkQXNPdmVycmlkZXMoJHVzZURvY3VtZW50KTsKICAgICAKQEAgLTM0
Myw5ICszNzgsNiBAQCBzdWIgUHJvY2Vzc0ludGVyZmFjZVN1cHBsZW1lbnRhbERlcGVuZGVuCiAK
ICAgICBteSAkdGFyZ2V0RmlsZU5hbWUgPSBmaWxlcGFyc2UoJHRhcmdldERvY3VtZW50LT5maWxl
TmFtZSk7CiAKLSAgICAjIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgcHJvY2Vzc2luZyByZWN1cnNp
dmUgc3VwcGxlbWVudGFsIGRlcGVuZGVuY2llcwotICAgICMgdG8gcHJvdmlkZSBzdXBwb3J0IGZv
ciBwYXJ0aWFsIGludGVyZmFjZSBtaXhpbnMuCi0KICAgICAjIEZJWE1FOiBDdXJyZW50bHksIHdl
IHJlcXVpcmUgYWxsIHRoZSBpbmNsdWRlcyBzdGF0ZW1lbnRzIHRvIGJlIGluIHRoZQogICAgICMg
c2FtZSBmaWxlIGFzIHRoZSBpbnRlcmZhY2UgdGhleSBhcmUgYmVpbmcgbWl4ZWQgaW50bywgYnV0
IHRoYXQgcmVzdHJpY3Rpb24KICAgICAjIGlzIGFydGlmaWNpYWwgYW5kIHdlIGNvdWxkIGFkZCBz
dXBwb3J0IGZvciBpbmNsdWRlcyBzdGF0ZW1lbnRzIGVsc2V3aGVyZS4KQEAgLTM2MCwxMCArMzky
LDYgQEAgc3ViIFByb2Nlc3NJbnRlcmZhY2VTdXBwbGVtZW50YWxEZXBlbmRlbgogICAgICAgICB9
CiAgICAgfQogCi0gICAgbXkgJGV4cG9zZWRBdHRyaWJ1dGUgPSAkdGFyZ2V0SW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiRXhwb3NlZCJ9IHx8ICJXaW5kb3ciOwotICAgICRleHBvc2Vk
QXR0cmlidXRlID0gc3Vic3RyKCRleHBvc2VkQXR0cmlidXRlLCAxLCAtMSkgaWYgc3Vic3RyKCRl
eHBvc2VkQXR0cmlidXRlLCAwLCAxKSBlcSAiKCI7Ci0gICAgbXkgQHRhcmdldEdsb2JhbENvbnRl
eHRzID0gc3BsaXQoIiwiLCAkZXhwb3NlZEF0dHJpYnV0ZSk7Ci0KICAgICBmb3JlYWNoIG15ICRp
ZGxGaWxlIChAeyRzdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMtPnskdGFyZ2V0RmlsZU5hbWV9fSkg
ewogICAgICAgICBuZXh0IGlmIGZpbGVwYXJzZSgkaWRsRmlsZSkgZXEgJHRhcmdldEZpbGVOYW1l
OwogCkBAIC0zNzQsMTUgKzQwMiwyMSBAQCBzdWIgUHJvY2Vzc0ludGVyZmFjZVN1cHBsZW1lbnRh
bERlcGVuZGVuCiAgICAgICAgIGZvcmVhY2ggbXkgJGludGVyZmFjZSAoQHskZG9jdW1lbnQtPmlu
dGVyZmFjZXN9KSB7CiAgICAgICAgICAgICBuZXh0IHVubGVzcyAkb2JqZWN0LT5Jc1ZhbGlkU3Vw
cGxlbWVudGFsSW50ZXJmYWNlKCRpbnRlcmZhY2UsICR0YXJnZXRJbnRlcmZhY2UsIFwlaW5jbHVk
ZXNNYXApOwogCisgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+aXNNaXhpbiAmJiAhJGludGVy
ZmFjZS0+aXNQYXJ0aWFsKSB7CisgICAgICAgICAgICAgICAgIyBSZWN1cnNpdmVseSBwcm9jZXNz
IGFueSBzdXBwbGVtZW50YWwgZGVwZW5kZW5jaWVzIGZvciBlYWNoIHZhbGlkIG1peGluLiBUaGlz
CisgICAgICAgICAgICAgICAgIyBhbGxvd3MgcGFydGlhbCBwYXJ0aWFsIGludGVyZmFjZSBtaXhp
bnMgdG8gYmUgbWVyZ2VkIGludG8gdGhlIG1peGluLgorICAgICAgICAgICAgICAgICRvYmplY3Qt
PlByb2Nlc3NJbnRlcmZhY2VTdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMoJGludGVyZmFjZSwgJGRv
Y3VtZW50KTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgIyBTdXBwb3J0IGZvciBhdHRy
aWJ1dGVzIGZyb20gc3VwcGxlbWVudGFsIGludGVyZmFjZXMuCiAgICAgICAgICAgICBmb3JlYWNo
IG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30pIHsKLSAgICAgICAgICAg
ICAgICBuZXh0IHVubGVzcyBzaG91bGRQcm9wZXJ0eUJlRXhwb3NlZCgkYXR0cmlidXRlLCBcQHRh
cmdldEdsb2JhbENvbnRleHRzKTsKKyAgICAgICAgICAgICAgICBuZXh0IHVubGVzcyAkdGFyZ2V0
SW50ZXJmYWNlLT5pc01peGluIHx8IHNob3VsZFByb3BlcnR5QmVFeHBvc2VkKCRhdHRyaWJ1dGUs
ICR0YXJnZXRJbnRlcmZhY2UpOwogCi0gICAgICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmlz
UGFydGlhbCkgeworICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5pc1BhcnRpYWwgJiYg
ISRpbnRlcmZhY2UtPmlzTWl4aW4pIHsKICAgICAgICAgICAgICAgICAgICAgJGF0dHJpYnV0ZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifSA9ICRpbnRlcmZhY2VOYW1lIGlm
ICEkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntSZWZsZWN0fTsKICAgICAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+aXNNaXhpbikgeworICAg
ICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5pc01peGluICYmICEkaW50ZXJmYWNlLT5pc1Bh
cnRpYWwpIHsKICAgICAgICAgICAgICAgICAgICAgIyBBZGQgaW5jbHVkZXMgc3RhdGVtZW50IHNw
ZWNpZmljIGV4dGVuZGVkIGF0dHJpYnV0ZXMgdG8gZWFjaCBhdHRyaWJ1dGUuCiAgICAgICAgICAg
ICAgICAgICAgICRvYmplY3QtPk1lcmdlRXh0ZW5kZWRBdHRyaWJ1dGVzRnJvbVN1cHBsZW1lbnRh
bCgkaW5jbHVkZXNNYXB7JGludGVyZmFjZS0+dHlwZS0+bmFtZX0tPmV4dGVuZGVkQXR0cmlidXRl
cywgJGF0dHJpYnV0ZSwgImF0dHJpYnV0ZSIpOwogICAgICAgICAgICAgICAgIH0KQEAgLTM5NSwx
MyArNDI5LDEzIEBAIHN1YiBQcm9jZXNzSW50ZXJmYWNlU3VwcGxlbWVudGFsRGVwZW5kZW4KIAog
ICAgICAgICAgICAgIyBTdXBwb3J0IGZvciBvcGVyYXRpb25zIGZyb20gc3VwcGxlbWVudGFsIGlu
dGVyZmFjZXMuCiAgICAgICAgICAgICBmb3JlYWNoIG15ICRvcGVyYXRpb24gKEB7JGludGVyZmFj
ZS0+b3BlcmF0aW9uc30pIHsKLSAgICAgICAgICAgICAgICBuZXh0IHVubGVzcyBzaG91bGRQcm9w
ZXJ0eUJlRXhwb3NlZCgkb3BlcmF0aW9uLCBcQHRhcmdldEdsb2JhbENvbnRleHRzKTsKKyAgICAg
ICAgICAgICAgICBuZXh0IHVubGVzcyAkdGFyZ2V0SW50ZXJmYWNlLT5pc01peGluIHx8IHNob3Vs
ZFByb3BlcnR5QmVFeHBvc2VkKCRvcGVyYXRpb24sICR0YXJnZXRJbnRlcmZhY2UpOwogCi0gICAg
ICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmlzUGFydGlhbCkgeworICAgICAgICAgICAgICAg
IGlmICgkaW50ZXJmYWNlLT5pc1BhcnRpYWwgJiYgISRpbnRlcmZhY2UtPmlzTWl4aW4pIHsKICAg
ICAgICAgICAgICAgICAgICAgJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxl
bWVudGVkQnkifSA9ICRpbnRlcmZhY2VOYW1lOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5pc01peGluKSB7CisgICAgICAgICAgICAgICAgaWYg
KCRpbnRlcmZhY2UtPmlzTWl4aW4gJiYgISRpbnRlcmZhY2UtPmlzUGFydGlhbCkgewogICAgICAg
ICAgICAgICAgICAgICAjIEFkZCBpbmNsdWRlcyBzdGF0ZW1lbnQgc3BlY2lmaWMgZXh0ZW5kZWQg
YXR0cmlidXRlcyB0byBlYWNoIG9wZXJhdGlvbi4KICAgICAgICAgICAgICAgICAgICAgJG9iamVj
dC0+TWVyZ2VFeHRlbmRlZEF0dHJpYnV0ZXNGcm9tU3VwcGxlbWVudGFsKCRpbmNsdWRlc01hcHsk
aW50ZXJmYWNlLT50eXBlLT5uYW1lfS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLCAkb3BlcmF0aW9uLCAi
b3BlcmF0aW9uIik7CiAgICAgICAgICAgICAgICAgfQpAQCAtNDE0LDEzICs0NDgsMTMgQEAgc3Vi
IFByb2Nlc3NJbnRlcmZhY2VTdXBwbGVtZW50YWxEZXBlbmRlbgogCiAgICAgICAgICAgICAjIFN1
cHBvcnQgZm9yIGNvbnN0YW50cyBmcm9tIHN1cHBsZW1lbnRhbCBpbnRlcmZhY2VzLgogICAgICAg
ICAgICAgZm9yZWFjaCBteSAkY29uc3RhbnQgKEB7JGludGVyZmFjZS0+Y29uc3RhbnRzfSkgewot
ICAgICAgICAgICAgICAgIG5leHQgdW5sZXNzIHNob3VsZFByb3BlcnR5QmVFeHBvc2VkKCRjb25z
dGFudCwgXEB0YXJnZXRHbG9iYWxDb250ZXh0cyk7CisgICAgICAgICAgICAgICAgbmV4dCB1bmxl
c3MgJHRhcmdldEludGVyZmFjZS0+aXNNaXhpbiB8fCBzaG91bGRQcm9wZXJ0eUJlRXhwb3NlZCgk
Y29uc3RhbnQsICR0YXJnZXRJbnRlcmZhY2UpOwogCi0gICAgICAgICAgICAgICAgaWYgKCRpbnRl
cmZhY2UtPmlzUGFydGlhbCkgeworICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5pc1Bh
cnRpYWwgJiYgISRpbnRlcmZhY2UtPmlzTWl4aW4pIHsKICAgICAgICAgICAgICAgICAgICAgJGNv
bnN0YW50LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9ID0gJGludGVyZmFj
ZU5hbWU7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgaWYgKCRpbnRlcmZh
Y2UtPmlzTWl4aW4pIHsKKyAgICAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+aXNNaXhpbiAm
JiAhJGludGVyZmFjZS0+aXNQYXJ0aWFsKSB7CiAgICAgICAgICAgICAgICAgICAgICMgQWRkIGlu
Y2x1ZGVzIHN0YXRlbWVudCBzcGVjaWZpYyBleHRlbmRlZCBhdHRyaWJ1dGVzIHRvIGVhY2ggb3Bl
cmF0aW9uLgogICAgICAgICAgICAgICAgICAgICAkb2JqZWN0LT5NZXJnZUV4dGVuZGVkQXR0cmli
dXRlc0Zyb21TdXBwbGVtZW50YWwoJGluY2x1ZGVzTWFweyRpbnRlcmZhY2UtPnR5cGUtPm5hbWV9
LT5leHRlbmRlZEF0dHJpYnV0ZXMsICRjb25zdGFudCwgImNvbnN0YW50Iik7CiAgICAgICAgICAg
ICAgICAgfQpAQCAtNDQwLDEwICs0NzQsNiBAQCBzdWIgUHJvY2Vzc0RpY3Rpb25hcnlTdXBwbGVt
ZW50YWxEZXBlbmRlCiAKICAgICByZXR1cm4gdW5sZXNzICRzdXBwbGVtZW50YWxEZXBlbmRlbmNp
ZXM7CiAKLSAgICBteSAkZXhwb3NlZEF0dHJpYnV0ZSA9ICR0YXJnZXREaWN0aW9uYXJ5LT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiRXhwb3NlZCJ9IHx8ICJXaW5kb3ciOwotICAgICRleHBvc2VkQXR0
cmlidXRlID0gc3Vic3RyKCRleHBvc2VkQXR0cmlidXRlLCAxLCAtMSkgaWYgc3Vic3RyKCRleHBv
c2VkQXR0cmlidXRlLCAwLCAxKSBlcSAiKCI7Ci0gICAgbXkgQHRhcmdldEdsb2JhbENvbnRleHRz
ID0gc3BsaXQoIiwiLCAkZXhwb3NlZEF0dHJpYnV0ZSk7Ci0KICAgICBteSAkdGFyZ2V0RmlsZU5h
bWUgPSBmaWxlcGFyc2UoJHRhcmdldERvY3VtZW50LT5maWxlTmFtZSk7CiAgICAgZm9yZWFjaCBt
eSAkaWRsRmlsZSAoQHskc3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzLT57JHRhcmdldEZpbGVOYW1l
fX0pIHsKICAgICAgICAgbmV4dCBpZiBmaWxlcGFyc2UoJGlkbEZpbGUpIGVxICR0YXJnZXRGaWxl
TmFtZTsKQEAgLTQ1Nyw3ICs0ODcsNyBAQCBzdWIgUHJvY2Vzc0RpY3Rpb25hcnlTdXBwbGVtZW50
YWxEZXBlbmRlCiAKICAgICAgICAgICAgICMgU3VwcG9ydCBmb3IgbWVtYmVycyBvZiBwYXJ0aWFs
IGRpY3Rpb25hcmllcy4KICAgICAgICAgICAgIGZvcmVhY2ggbXkgJG1lbWJlciAoQHskZGljdGlv
bmFyeS0+bWVtYmVyc30pIHsKLSAgICAgICAgICAgICAgICBuZXh0IHVubGVzcyBzaG91bGRQcm9w
ZXJ0eUJlRXhwb3NlZCgkbWVtYmVyLCBcQHRhcmdldEdsb2JhbENvbnRleHRzKTsKKyAgICAgICAg
ICAgICAgICBuZXh0IHVubGVzcyBzaG91bGRQcm9wZXJ0eUJlRXhwb3NlZCgkbWVtYmVyLCAkdGFy
Z2V0RGljdGlvbmFyeSk7CiAKICAgICAgICAgICAgICAgICAkbWVtYmVyLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9ID0gJGRpY3Rpb25hcnlOYW1lOwogCkBAIC00NzQsNyAr
NTA0LDExIEBAIHN1YiBQcm9jZXNzRGljdGlvbmFyeVN1cHBsZW1lbnRhbERlcGVuZGUKICMgb24g
d2hpY2ggZ2xvYmFsIGNvbnRleHRzIHRoZXkgc2hvdWxkIGJlIGV4cG9zZWQuCiBzdWIgc2hvdWxk
UHJvcGVydHlCZUV4cG9zZWQKIHsKLSAgICBteSAoJGNvbnRleHQsICR0YXJnZXRHbG9iYWxDb250
ZXh0cykgPSBAXzsKKyAgICBteSAoJGNvbnRleHQsICR0YXJnZXQpID0gQF87CisKKyAgICBteSAk
ZXhwb3NlZEF0dHJpYnV0ZSA9ICR0YXJnZXQtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJFeHBvc2Vk
In0gfHwgIldpbmRvdyI7CisgICAgJGV4cG9zZWRBdHRyaWJ1dGUgPSBzdWJzdHIoJGV4cG9zZWRB
dHRyaWJ1dGUsIDEsIC0xKSBpZiBzdWJzdHIoJGV4cG9zZWRBdHRyaWJ1dGUsIDAsIDEpIGVxICIo
IjsKKyAgICBteSBAdGFyZ2V0R2xvYmFsQ29udGV4dHMgPSBzcGxpdCgiLCIsICRleHBvc2VkQXR0
cmlidXRlKTsKIAogICAgIG15ICRleHBvc2VkID0gJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRl
cy0+e0V4cG9zZWR9OwogCkBAIC00ODMsMjIgKzUxNywxMSBAQCBzdWIgc2hvdWxkUHJvcGVydHlC
ZUV4cG9zZWQKICAgICAkZXhwb3NlZCA9IHN1YnN0cigkZXhwb3NlZCwgMSwgLTEpIGlmIHN1YnN0
cigkZXhwb3NlZCwgMCwgMSkgZXEgIigiOwogICAgIG15IEBzb3VyY2VHbG9iYWxDb250ZXh0cyA9
IHNwbGl0KCIsIiwgJGV4cG9zZWQpOwogCi0gICAgZm9yIG15ICR0YXJnZXRHbG9iYWxDb250ZXh0
IChAJHRhcmdldEdsb2JhbENvbnRleHRzKSB7CisgICAgZm9yZWFjaCBteSAkdGFyZ2V0R2xvYmFs
Q29udGV4dCAoQHRhcmdldEdsb2JhbENvbnRleHRzKSB7CiAgICAgICAgIHJldHVybiAxIGlmIGdy
ZXAoL14kdGFyZ2V0R2xvYmFsQ29udGV4dCQvLCBAc291cmNlR2xvYmFsQ29udGV4dHMpOwogICAg
IH0KLSAgICByZXR1cm4gMDsKLX0KLQotc3ViIEZpbGVOYW1lUHJlZml4Ci17Ci0gICAgbXkgJG9i
amVjdCA9IHNoaWZ0OwogCi0gICAgbXkgJGlmYWNlTmFtZSA9ICJDb2RlR2VuZXJhdG9yIiAuICR1
c2VHZW5lcmF0b3I7Ci0gICAgcmVxdWlyZSAkaWZhY2VOYW1lIC4gIi5wbSI7Ci0KLSAgICAjIER5
bmFtaWNhbGx5IGxvYWQgZXh0ZXJuYWwgY29kZSBnZW5lcmF0aW9uIHBlcmwgbW9kdWxlCi0gICAg
JGNvZGVHZW5lcmF0b3IgPSAkaWZhY2VOYW1lLT5uZXcoJG9iamVjdCwgJHdyaXRlRGVwZW5kZW5j
aWVzLCAkdmVyYm9zZSk7Ci0gICAgcmV0dXJuICRjb2RlR2VuZXJhdG9yLT5GaWxlTmFtZVByZWZp
eCgpOworICAgIHJldHVybiAwOwogfQogCiBzdWIgVXBkYXRlRmlsZQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsCShy
ZXZpc2lvbiAyNjY3MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL2dlbmVy
YXRlLWJpbmRpbmdzLnBsCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw2IEBAIG15ICRwcmVw
cm9jZXNzb3I7CiBteSAkd3JpdGVEZXBlbmRlbmNpZXM7CiBteSAkdmVyYm9zZTsKIG15ICRzdXBw
bGVtZW50YWxEZXBlbmRlbmN5RmlsZTsKLW15ICRhZGRpdGlvbmFsSWRsRmlsZXM7CiBteSAkaWRs
QXR0cmlidXRlc0ZpbGU7CiAKIEdldE9wdGlvbnMoJ2luY2x1ZGU9c0AnID0+IFxAaWRsRGlyZWN0
b3JpZXMsCkBAIC02OSw3ICs2OCw2IEBAIEdldE9wdGlvbnMoJ2luY2x1ZGU9c0AnID0+IFxAaWRs
RGlyZWN0b3IKICAgICAgICAgICAgJ3ZlcmJvc2UnID0+IFwkdmVyYm9zZSwKICAgICAgICAgICAg
J3dyaXRlLWRlcGVuZGVuY2llcycgPT4gXCR3cml0ZURlcGVuZGVuY2llcywKICAgICAgICAgICAg
J3N1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlPXMnID0+IFwkc3VwcGxlbWVudGFsRGVwZW5kZW5j
eUZpbGUsCi0gICAgICAgICAgICdhZGRpdGlvbmFsSWRsRmlsZXM9cycgPT4gXCRhZGRpdGlvbmFs
SWRsRmlsZXMsCiAgICAgICAgICAgICdpZGxBdHRyaWJ1dGVzRmlsZT1zJyA9PiBcJGlkbEF0dHJp
YnV0ZXNGaWxlKTsKIAogZGllKCdNdXN0IHNwZWNpZnkgaW5wdXQgZmlsZS4nKSB1bmxlc3MgQEFS
R1Y7CkBAIC0xMDUsMzMgKzEwMywxMiBAQCBzdWIgZ2VuZXJhdGVCaW5kaW5ncwogICAgICAgICAj
CiAgICAgICAgICMgVGhlIGFib3ZlIGluZGljYXRlcyB0aGF0IERPTVdpbmRvdy5pZGwgaXMgc3Vw
cGxlbWVudGVkIGJ5IFAuaWRsLCBRLmlkbCBhbmQgUi5pZGwsCiAgICAgICAgICMgRG9jdW1lbnQu
aWRsIGlzIHN1cHBsZW1lbnRlZCBieSBTLmlkbCwgYW5kIEV2ZW50LmlkbCBpcyBzdXBwbGVtZW50
ZWQgYnkgbm8gSURMcy4KLSAgICAgICAgIyBUaGUgSURMIHRoYXQgc3VwcGxlbWVudHMgYW5vdGhl
ciBJREwgKGUuZy4gUC5pZGwpIG5ldmVyIGFwcGVhcnMgaW4gdGhlIGRlcGVuZGVuY3kgZmlsZS4K
ICAgICAgICAgb3BlbiBGSCwgIjwgJHN1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlIiBvciBkaWUg
IkNhbm5vdCBvcGVuICRzdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZVxuIjsKICAgICAgICAgd2hp
bGUgKG15ICRsaW5lID0gPEZIPikgewogICAgICAgICAgICAgbXkgKCRpZGxGaWxlLCBAZm9sbG93
aW5nSWRsRmlsZXMpID0gc3BsaXQoL1xzKy8sICRsaW5lKTsKICAgICAgICAgICAgICRzdXBwbGVt
ZW50YWxEZXBlbmRlbmNpZXN7ZmlsZXBhcnNlKCRpZGxGaWxlKX0gPSBbc29ydCBAZm9sbG93aW5n
SWRsRmlsZXNdIGlmICRpZGxGaWxlOwogICAgICAgICB9CiAgICAgICAgIGNsb3NlIEZIOwotCi0g
ICAgICAgIGlmIChleGlzdHMgJHN1cHBsZW1lbnRhbERlcGVuZGVuY2llc3tmaWxlcGFyc2UoJHRh
cmdldElkbEZpbGUpfSkgewotICAgICAgICAgICAgJGlkbEZvdW5kID0gMTsKLSAgICAgICAgfQot
Ci0gICAgICAgICMgJGFkZGl0aW9uYWxJZGxGaWxlcyBpcyBsaXN0IG9mIElETCBmaWxlcyB3aGlj
aCBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluCi0gICAgICAgICMgRGVyaXZlZFNvdXJjZXMqLmNw
cCAoaS5lLiB0aGV5IGFyZSBub3QgZGVzY3JpYmVkIGluIHRoZSBzdXBwbGVtZW50YWwKLSAgICAg
ICAgIyBkZXBlbmRlbmN5IGZpbGUpIGJ1dCBzaG91bGQgZ2VuZXJhdGUgLmggYW5kIC5jcHAgZmls
ZXMuCi0gICAgICAgIGlmICghJGlkbEZvdW5kIGFuZCAkYWRkaXRpb25hbElkbEZpbGVzKSB7Ci0g
ICAgICAgICAgICBteSBAaWRsRmlsZXMgPSBzaGVsbHdvcmRzKCRhZGRpdGlvbmFsSWRsRmlsZXMp
OwotICAgICAgICAgICAgJGlkbEZvdW5kID0gZ3JlcCB7ICRfIGFuZCBmaWxlcGFyc2UoJF8pIGVx
IGZpbGVwYXJzZSgkdGFyZ2V0SWRsRmlsZSkgfSBAaWRsRmlsZXM7Ci0gICAgICAgIH0KLQotICAg
ICAgICBpZiAoISRpZGxGb3VuZCkgewotICAgICAgICAgICAgbXkgJGNvZGVHZW4gPSBDb2RlR2Vu
ZXJhdG9yLT5uZXcoXEBpZGxEaXJlY3RvcmllcywgJGdlbmVyYXRvciwgJG91dHB1dERpcmVjdG9y
eSwgJG91dHB1dEhlYWRlcnNEaXJlY3RvcnksICRwcmVwcm9jZXNzb3IsICR3cml0ZURlcGVuZGVu
Y2llcywgJHZlcmJvc2UpOwotCi0gICAgICAgICAgICAjIFdlIGdlbmVyYXRlIGVtcHR5IC5oIGFu
ZCAuY3BwIGZpbGVzIGp1c3QgdG8gdGVsbCBidWlsZCBzY3JpcHRzIHRoYXQgLmggYW5kIC5jcHAg
ZmlsZXMgYXJlIGNyZWF0ZWQuCi0gICAgICAgICAgICBnZW5lcmF0ZUVtcHR5SGVhZGVyQW5kQ3Bw
KCRjb2RlR2VuLT5GaWxlTmFtZVByZWZpeCgpLCAkdGFyZ2V0SW50ZXJmYWNlTmFtZSwgJG91dHB1
dEhlYWRlcnNEaXJlY3RvcnksICRvdXRwdXREaXJlY3RvcnkpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9CiAgICAgfQogCiAgICAgbXkgJGlucHV0OwpAQCAtMTU0LDI1ICsxMzEsMyBA
QCBzdWIgZ2VuZXJhdGVCaW5kaW5ncwogICAgIG15ICRjb2RlR2VuID0gQ29kZUdlbmVyYXRvci0+
bmV3KFxAaWRsRGlyZWN0b3JpZXMsICRnZW5lcmF0b3IsICRvdXRwdXREaXJlY3RvcnksICRvdXRw
dXRIZWFkZXJzRGlyZWN0b3J5LCAkcHJlcHJvY2Vzc29yLCAkd3JpdGVEZXBlbmRlbmNpZXMsICR2
ZXJib3NlLCAkdGFyZ2V0SWRsRmlsZSwgJGlkbEF0dHJpYnV0ZXMsIFwlc3VwcGxlbWVudGFsRGVw
ZW5kZW5jaWVzKTsKICAgICAkY29kZUdlbi0+UHJvY2Vzc0RvY3VtZW50KCR0YXJnZXREb2N1bWVu
dCwgJGRlZmluZXMpOwogfQotCi1zdWIgZ2VuZXJhdGVFbXB0eUhlYWRlckFuZENwcAotewotICAg
IG15ICgkcHJlZml4LCAkdGFyZ2V0SW50ZXJmYWNlTmFtZSwgJG91dHB1dEhlYWRlcnNEaXJlY3Rv
cnksICRvdXRwdXREaXJlY3RvcnkpID0gQF87Ci0KLSAgICBteSAkaGVhZGVyTmFtZSA9ICIke3By
ZWZpeH0ke3RhcmdldEludGVyZmFjZU5hbWV9LmgiOwotICAgIG15ICRjcHBOYW1lID0gIiR7cHJl
Zml4fSR7dGFyZ2V0SW50ZXJmYWNlTmFtZX0uY3BwIjsKLSAgICBteSAkY29udGVudHMgPSAiLyoK
LSAgICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGp1c3QgdG8gdGVsbCBidWlsZCBzY3JpcHRzIHRo
YXQgJGhlYWRlck5hbWUgYW5kCi0gICAgJGNwcE5hbWUgYXJlIGNyZWF0ZWQgZm9yICR7dGFyZ2V0
SW50ZXJmYWNlTmFtZX0uaWRsLCBhbmQgdGh1cwotICAgIHByZXZlbnQgdGhlIGJ1aWxkIHNjcmlw
dHMgZnJvbSB0cnlpbmcgdG8gZ2VuZXJhdGUgJGhlYWRlck5hbWUgYW5kCi0gICAgJGNwcE5hbWUg
YXQgZXZlcnkgYnVpbGQuIFRoaXMgZmlsZSBtdXN0IG5vdCBiZSB0cmllZCB0byBjb21waWxlLgot
Ki8KLSI7Ci0gICAgb3BlbiBGSCwgIj4gJHtvdXRwdXRIZWFkZXJzRGlyZWN0b3J5fS8ke2hlYWRl
ck5hbWV9IiBvciBkaWUgIkNhbm5vdCBvcGVuICRoZWFkZXJOYW1lXG4iOwotICAgIHByaW50IEZI
ICRjb250ZW50czsKLSAgICBjbG9zZSBGSDsKLQotICAgIG9wZW4gRkgsICI+ICR7b3V0cHV0RGly
ZWN0b3J5fS8ke2NwcE5hbWV9IiBvciBkaWUgIkNhbm5vdCBvcGVuICRjcHBOYW1lXG4iOwotICAg
IHByaW50IEZIICRjb250ZW50czsKLSAgICBjbG9zZSBGSDsKLX0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsCShyZXZpc2lv
biAyNjY3MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3Mt
aWRscy5wbAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKICMhL3Vzci9iaW4vZW52IHBl
cmwKICMKICMgQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICMKICMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjU0LDYgKzI1NSwxMiBAQCBHZW5lcmF0ZVBhcnRpYWxJ
bnRlcmZhY2UoIldvcmtsZXRHbG9iYWxTCiBHZW5lcmF0ZVBhcnRpYWxJbnRlcmZhY2UoIlBhaW50
V29ya2xldEdsb2JhbFNjb3BlIiwgJHBhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3Jz
Q29kZSwgJHBhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSk7CiBHZW5lcmF0
ZVBhcnRpYWxJbnRlcmZhY2UoJHRlc3RHbG9iYWxDb250ZXh0TmFtZSwgJHRlc3RHbG9iYWxTY29w
ZUNvbnN0cnVjdG9yc0NvZGUsICR0ZXN0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlKSBpZiBk
ZWZpbmVkKCR0ZXN0R2xvYmFsQ29udGV4dE5hbWUpOwogCitpZiAoJGlzb1N1YnNwYWNlc0hlYWRl
ckZpbGUpIHsKKyAgICAkaXNvU3Vic3BhY2VzSGVhZGVyQ29kZSAuPSAifTtcbiI7CisgICAgJGlz
b1N1YnNwYWNlc0hlYWRlckNvZGUgLj0gIn0gLy8gbmFtZXNwYWNlIFdlYkNvcmVcbiI7CisgICAg
V3JpdGVGaWxlSWZDaGFuZ2VkKCRpc29TdWJzcGFjZXNIZWFkZXJGaWxlLCAkaXNvU3Vic3BhY2Vz
SGVhZGVyQ29kZSk7Cit9CisKICMgUmVzb2x2ZXMgcGFydGlhbCBpbnRlcmZhY2VzIGFuZCBpbmNs
dWRlIGRlcGVuZGVuY2llcy4KIGZvcmVhY2ggbXkgJGlkbEZpbGVQYXRoIChzb3J0IGtleXMgJXN1
cHBsZW1lbnRhbERlcGVuZGVuY2llcykgewogICAgIG15ICRiYXNlRmlsZXMgPSAkc3VwcGxlbWVu
dGFsRGVwZW5kZW5jaWVzeyRpZGxGaWxlUGF0aH07CkBAIC0yNjEsMTMgKzI2OCw2IEBAIGZvcmVh
Y2ggbXkgJGlkbEZpbGVQYXRoIChzb3J0IGtleXMgJXN1cHAKICAgICAgICAgbXkgJHRhcmdldElk
bEZpbGVQYXRoID0gJGludGVyZmFjZU5hbWVUb0lkbEZpbGVQYXRoeyRiYXNlRmlsZX0gb3IgZGll
ICIke2Jhc2VGaWxlfS5pZGwgbm90IGZvdW5kLCBidXQgaXQgaXMgc3VwcGxlbWVudGVkIGJ5ICRp
ZGxGaWxlUGF0aCI7CiAgICAgICAgIHB1c2goQHskc3VwcGxlbWVudGFsc3skdGFyZ2V0SWRsRmls
ZVBhdGh9fSwgJGlkbEZpbGVQYXRoKTsKICAgICB9Ci0gICAgZGVsZXRlICRzdXBwbGVtZW50YWxz
eyRpZGxGaWxlUGF0aH07Ci19Ci0KLWlmICgkaXNvU3Vic3BhY2VzSGVhZGVyRmlsZSkgewotICAg
ICRpc29TdWJzcGFjZXNIZWFkZXJDb2RlIC49ICJ9O1xuIjsKLSAgICAkaXNvU3Vic3BhY2VzSGVh
ZGVyQ29kZSAuPSAifSAvLyBuYW1lc3BhY2UgV2ViQ29yZVxuIjsKLSAgICBXcml0ZUZpbGVJZkNo
YW5nZWQoJGlzb1N1YnNwYWNlc0hlYWRlckZpbGUsICRpc29TdWJzcGFjZXNIZWFkZXJDb2RlKTsK
IH0KIAogIyBPdXRwdXRzIHRoZSBkZXBlbmRlbmN5LgpAQCAtMjgwLDcgKzI4MCw2IEBAIGlmICgk
aXNvU3Vic3BhY2VzSGVhZGVyRmlsZSkgewogIwogIyBUaGUgYWJvdmUgaW5kaWNhdGVzIHRoYXQg
RE9NV2luZG93LmlkbCBpcyBzdXBwbGVtZW50ZWQgYnkgUC5pZGwsIFEuaWRsIGFuZCBSLmlkbCwK
ICMgRG9jdW1lbnQuaWRsIGlzIHN1cHBsZW1lbnRlZCBieSBTLmlkbCwgYW5kIEV2ZW50LmlkbCBp
cyBzdXBwbGVtZW50ZWQgYnkgbm8gSURMcy4KLSMgVGhlIElETCB0aGF0IHN1cHBsZW1lbnRzIGFu
b3RoZXIgSURMIChlLmcuIFAuaWRsKSBuZXZlciBhcHBlYXJzIGluIHRoZSBkZXBlbmRlbmN5IGZp
bGUuCiBteSAkZGVwZW5kZW5jaWVzID0gIiI7CiBmb3JlYWNoIG15ICRpZGxGaWxlUGF0aCAoc29y
dCBrZXlzICVzdXBwbGVtZW50YWxzKSB7CiAgICAgJGRlcGVuZGVuY2llcyAuPSAiJGlkbEZpbGVQ
YXRoIEB7JHN1cHBsZW1lbnRhbHN7JGlkbEZpbGVQYXRofX1cbiI7CkBAIC00NjAsOCArNDU5LDEz
IEBAIHN1YiBnZXRQYXJ0aWFsTmFtZXNGcm9tSURMCiAgICAgbXkgJGZpbGVDb250ZW50cyA9ICRp
ZGxGaWxlLT5maWxlQ29udGVudHM7CiAKICAgICBteSBAcGFydGlhbE5hbWVzID0gKCk7CisgICAg
d2hpbGUgKCRmaWxlQ29udGVudHMgPX4gL3BhcnRpYWxccytpbnRlcmZhY2VccyttaXhpblxzKyhc
dyspL21nKSB7CisgICAgICAgIHB1c2goQHBhcnRpYWxOYW1lcywgJDEpOworICAgIH0KKworICAg
ICRmaWxlQ29udGVudHMgPSAkaWRsRmlsZS0+ZmlsZUNvbnRlbnRzOwogICAgIHdoaWxlICgkZmls
ZUNvbnRlbnRzID1+IC9wYXJ0aWFsXHMrKGludGVyZmFjZXxkaWN0aW9uYXJ5fG5hbWVzcGFjZSlc
cysoXHcrKS9tZykgewotICAgICAgICBwdXNoKEBwYXJ0aWFsTmFtZXMsICQyKTsKKyAgICAgICAg
cHVzaChAcGFydGlhbE5hbWVzLCAkMikgaWYgJDIgbmUgIm1peGluIjsKICAgICB9CiAgICAgCiAg
ICAgaWYgKCR2YWxpZGF0ZUFnYWluc3RQYXJzZXIpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxE
ZXBlbmRlbmNpZXMuZGVwCShyZXZpc2lvbiAyNjY3MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzLmRlcAkod29ya2luZyBj
b3B5KQpAQCAtNDUsMTAgKzQ1LDEwIEBAIFdlYkRPTVRlc3RDYWxsYmFja0ludGVyZmFjZS5oOiAK
IEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmg6IAogRE9NVGVzdENsYXNzV2l0
aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmg6IAogV2ViRE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNv
bnN0cnVjdG9yLmg6IAotSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5oOiBUZXN0SW5jbHVkZXMu
aWRsCi1ET01UZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5oOiBUZXN0SW5jbHVkZXMuaWRsCi1XZWJE
T01UZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5oOiBUZXN0SW5jbHVkZXMuaWRsCi1UZXN0SW5jbHVk
ZXMuaWRsOgorSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5oOiBUZXN0TWl4aW5JbnRlcmZhY2Uu
aWRsCitET01UZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5oOiBUZXN0TWl4aW5JbnRlcmZhY2UuaWRs
CitXZWJET01UZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5oOiBUZXN0TWl4aW5JbnRlcmZhY2UuaWRs
CitUZXN0TWl4aW5JbnRlcmZhY2UuaWRsOgogSlNUZXN0RE9NSklULmg6IAogRE9NVGVzdERPTUpJ
VC5oOiAKIFdlYkRPTVRlc3RET01KSVQuaDogCkBAIC0xMDAsMTAgKzEwMCwxMCBAQCBUZXN0U3Vw
cGxlbWVudGFsLmlkbDoKIEpTVGVzdEluaGVyaXRlZERpY3Rpb25hcnkyLmg6IAogRE9NVGVzdElu
aGVyaXRlZERpY3Rpb25hcnkyLmg6IAogV2ViRE9NVGVzdEluaGVyaXRlZERpY3Rpb25hcnkyLmg6
IAotSlNUZXN0SW50ZXJmYWNlLmg6IFRlc3RJbmNsdWRlcy5pZGwgVGVzdFN1cHBsZW1lbnRhbC5p
ZGwKLURPTVRlc3RJbnRlcmZhY2UuaDogVGVzdEluY2x1ZGVzLmlkbCBUZXN0U3VwcGxlbWVudGFs
LmlkbAotV2ViRE9NVGVzdEludGVyZmFjZS5oOiBUZXN0SW5jbHVkZXMuaWRsIFRlc3RTdXBwbGVt
ZW50YWwuaWRsCi1UZXN0SW5jbHVkZXMuaWRsOgorSlNUZXN0SW50ZXJmYWNlLmg6IFRlc3RNaXhp
bkludGVyZmFjZS5pZGwgVGVzdFN1cHBsZW1lbnRhbC5pZGwKK0RPTVRlc3RJbnRlcmZhY2UuaDog
VGVzdE1peGluSW50ZXJmYWNlLmlkbCBUZXN0U3VwcGxlbWVudGFsLmlkbAorV2ViRE9NVGVzdElu
dGVyZmFjZS5oOiBUZXN0TWl4aW5JbnRlcmZhY2UuaWRsIFRlc3RTdXBwbGVtZW50YWwuaWRsCitU
ZXN0TWl4aW5JbnRlcmZhY2UuaWRsOgogVGVzdFN1cHBsZW1lbnRhbC5pZGw6CiBKU1Rlc3RJbnRl
cmZhY2VMZWFkaW5nVW5kZXJzY29yZS5oOiAKIERPTVRlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJz
Y29yZS5oOiAKQEAgLTEyNiw2ICsxMjYsMTAgQEAgV2ViRE9NVGVzdExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnMuaDogCiBKU1Rlc3RNYXBMaWtlLmg6IAogRE9NVGVzdE1hcExpa2UuaDogCiBXZWJET01U
ZXN0TWFwTGlrZS5oOiAKK0pTVGVzdE1peGluSW50ZXJmYWNlLmg6IFRlc3RQYXJ0aWFsTWl4aW5J
bnRlcmZhY2UuaWRsCitET01UZXN0TWl4aW5JbnRlcmZhY2UuaDogVGVzdFBhcnRpYWxNaXhpbklu
dGVyZmFjZS5pZGwKK1dlYkRPTVRlc3RNaXhpbkludGVyZmFjZS5oOiBUZXN0UGFydGlhbE1peGlu
SW50ZXJmYWNlLmlkbAorVGVzdFBhcnRpYWxNaXhpbkludGVyZmFjZS5pZGw6CiBKU1Rlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuaDogCiBET01UZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyTm9JZGVudGlmaWVyLmg6IAogV2ViRE9NVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5v
SWRlbnRpZmllci5oOiAKQEAgLTE4Niw2ICsxOTAsOSBAQCBXZWJET01UZXN0Tm9kZS5oOiAKIEpT
VGVzdE9iai5oOiAKIERPTVRlc3RPYmouaDogCiBXZWJET01UZXN0T2JqLmg6IAorSlNUZXN0T3Bl
cmF0aW9uQmFzZS5oOiAKK0RPTVRlc3RPcGVyYXRpb25CYXNlLmg6IAorV2ViRE9NVGVzdE9wZXJh
dGlvbkJhc2UuaDogCiBKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbC5oOiBUZXN0T3BlcmF0aW9u
QmFzZS5pZGwKIERPTVRlc3RPcGVyYXRpb25Db25kaXRpb25hbC5oOiBUZXN0T3BlcmF0aW9uQmFz
ZS5pZGwKIFdlYkRPTVRlc3RPcGVyYXRpb25Db25kaXRpb25hbC5oOiBUZXN0T3BlcmF0aW9uQmFz
ZS5pZGwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q29u
ZGl0aW9uYWxJbmNsdWRlcy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmlkbAkocmV2aXNpb24gMjY2
NzI3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RDb25kaXRp
b25hbEluY2x1ZGVzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzMsNCArMzMsNCBAQCBpbnRlcmZh
Y2UgVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3Vi
bGUgdGVzdEF0dHI7CiB9OwogCi1bQ29uZGl0aW9uYWw9Q29uZGl0aW9uMTIsIEVuYWJsZWRCeVNl
dHRpbmc9VGVzdFNldHRpbmcyXSBUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyBpbmNsdWRlcyBUZXN0
SW5jbHVkZXM7CitbQ29uZGl0aW9uYWw9Q29uZGl0aW9uMTIsIEVuYWJsZWRCeVNldHRpbmc9VGVz
dFNldHRpbmcyXSBUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyBpbmNsdWRlcyBUZXN0TWl4aW5JbnRl
cmZhY2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdElu
Y2x1ZGVzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVGVzdEluY2x1ZGVzLmlkbAkocmV2aXNpb24gMjY2NzI3KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RJbmNsdWRlcy5pZGwJKG5vbmV4aXN0ZW50KQpA
QCAtMSw1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJv
bmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zdHJBcmcsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBv
ZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVzdHJBcmcsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0vLyBUaGlzIElETCBmaWxlIGlzIGZvciB0ZXN0aW5n
IHRoZSBiaW5kaW5ncyBjb2RlIGdlbmVyYXRvciBhbmQgZm9yIHRyYWNraW5nCi0vLyBjaGFuZ2Vz
IGluIGl0cyBvdXRwdXQuCi1bCi0gICAgQ29uZGl0aW9uYWw9Q29uZGl0aW9uMjJ8Q29uZGl0aW9u
MjMKLV0gaW50ZXJmYWNlIG1peGluIFRlc3RJbmNsdWRlcyB7Ci0gICAgcmVhZG9ubHkgYXR0cmli
dXRlIERPTVN0cmluZyBpbmNsdWRlc1N0cjE7Ci0gICAgYXR0cmlidXRlIERPTVN0cmluZyBpbmNs
dWRlc1N0cjI7Ci0gICAgW0N1c3RvbUdldHRlciwgQ3VzdG9tU2V0dGVyXSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIGluY2x1ZGVzU3RyMzsKLSAgICBhdHRyaWJ1dGUgTm9kZSBpbmNsdWRlc05vZGU7Ci0K
LSAgICB1bmRlZmluZWQgaW5jbHVkZXNNZXRob2QxKCk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9uXSBUZXN0T2JqIGluY2x1ZGVzTWV0aG9k
MihET01TdHJpbmcgc3RyQXJnLCBUZXN0T2JqIG9iakFyZyk7Ci0gICAgW0N1c3RvbV0gdW5kZWZp
bmVkIGluY2x1ZGVzTWV0aG9kMygpOwotICAgIFtDb25kaXRpb25hbD1Db25kaXRpb24xMV0gdW5k
ZWZpbmVkIGluY2x1ZGVzTWV0aG9kQ29uZGl0aW9uYWwoKTsKLSAgICBbRW5hYmxlZEJ5U2V0dGlu
Zz1UZXN0U2V0dGluZ10gdW5kZWZpbmVkIGluY2x1ZGVzTWV0aG9kU2V0dGluZ3NDb25kaXRpb25h
bCgpOwotCi0gICAgY29uc3QgdW5zaWduZWQgc2hvcnQgSU5DTFVERVNfQ09OU1RBTlQxID0gMTsK
LSAgICBbUmVmbGVjdD1DT05TVF9JTVBMXSBjb25zdCB1bnNpZ25lZCBzaG9ydCBJTkNMVURFU19D
T05TVEFOVDIgPSAyOwotCi0gICAgW1Jlc3VsdEZpZWxkPW5vZGVzXSBzZXF1ZW5jZTxOb2RlPiB0
YWtlTm9kZXMoKTsKLX07Ci0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0SW50ZXJmYWNlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEludGVyZmFjZS5pZGwJKHJldmlzaW9uIDI2NjcyNykKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0SW50ZXJmYWNlLmlkbAko
d29ya2luZyBjb3B5KQpAQCAtNDAsNCArNDAsNCBAQAogICAgIGl0ZXJhYmxlPFRlc3ROb2RlLCBU
ZXN0T2JqPjsKIH07CiAKLVRlc3RJbnRlcmZhY2UgaW5jbHVkZXMgVGVzdEluY2x1ZGVzOworVGVz
dEludGVyZmFjZSBpbmNsdWRlcyBUZXN0TWl4aW5JbnRlcmZhY2U7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE1peGluSW50ZXJmYWNlLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE1peGluSW50
ZXJmYWNlLmlkbAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVGVzdE1peGluSW50ZXJmYWNlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zdHJBcmcsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIg
dGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAg
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVzdHJBcmcsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisvLyBUaGlzIElETCBmaWxlIGlzIGZvciB0ZXN0aW5nIHRoZSBiaW5k
aW5ncyBjb2RlIGdlbmVyYXRvciBhbmQgZm9yIHRyYWNraW5nCisvLyBjaGFuZ2VzIGluIGl0cyBv
dXRwdXQuCitbCisgICAgQ29uZGl0aW9uYWw9Q29uZGl0aW9uMjJ8Q29uZGl0aW9uMjMKK10gaW50
ZXJmYWNlIG1peGluIFRlc3RNaXhpbkludGVyZmFjZSB7CisgICAgcmVhZG9ubHkgYXR0cmlidXRl
IERPTVN0cmluZyBtaXhpblJlYWRPbmx5QXR0cmlidXRlOworICAgIGF0dHJpYnV0ZSBET01TdHJp
bmcgbWl4aW5BdHRyaWJ1dGU7CisgICAgW0N1c3RvbUdldHRlciwgQ3VzdG9tU2V0dGVyXSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIG1peGluQ3VzdG9tQXR0cmlidXRlOworICAgIGF0dHJpYnV0ZSBOb2Rl
IG1peGluTm9kZUF0dHJpYnV0ZTsKKworICAgIHVuZGVmaW5lZCBtaXhpbk9wZXJhdGlvbigpOwor
ICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlvbl0g
VGVzdE9iaiBtaXhpbkNvbXBsZXhPcGVyYXRpb24oRE9NU3RyaW5nIHN0ckFyZywgVGVzdE9iaiBv
YmpBcmcpOworICAgIFtDdXN0b21dIHVuZGVmaW5lZCBtaXhpbkN1c3RvbU9wZXJhdGlvbigpOwor
ICAgIFtDb25kaXRpb25hbD1Db25kaXRpb24xMV0gdW5kZWZpbmVkIG1peGluQ29uZGl0aW9uYWxP
cGVyYXRpb24oKTsKKyAgICBbRW5hYmxlZEJ5U2V0dGluZz1UZXN0U2V0dGluZ10gdW5kZWZpbmVk
IG1peGluU2V0dGluZ3NDb25kaXRpb25hbE9wZXJhdGlvbigpOworICAgIFtSZXN1bHRGaWVsZD1u
b2Rlc10gc2VxdWVuY2U8Tm9kZT4gbWl4aW5SZXN1bHRGaWVsZE9wZXJhdGlvbigpOworCisgICAg
Y29uc3QgdW5zaWduZWQgc2hvcnQgTUlYSU5fQ09OU1RBTlQgPSAxOworICAgIFtSZWZsZWN0PUNP
TlNUX0lNUExdIGNvbnN0IHVuc2lnbmVkIHNob3J0IE1JWElOX1JFRkxFQ1RFRF9DT05TVEFOVCA9
IDI7Cit9OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RP
YmouaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9UZXN0T2JqLmlkbAkocmV2aXNpb24gMjY2NzI3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00NjMsOCArNDYz
LDggQEAgZW51bSBUZXN0Q29uZmlkZW5jZSB7ICJoaWdoIiwgImtpbmRhLWxvdwogfTsKIAogLy8g
VGhlIGZvbGxvd2luZyBjb21tZW50cyBzaG91bGQgbm90IGdlbmVyYXRlIGFueSBjb2RlLgotLy8g
VGVzdE9iaiBpbmNsdWRlcyBUZXN0SW5jbHVkZXM7Ci0vKiBUZXN0T2JqIGluY2x1ZGVzIFRlc3RJ
bmNsdWRlczsgKi8KKy8vIFRlc3RPYmogaW5jbHVkZXMgVGVzdE1peGluSW50ZXJmYWNlOworLyog
VGVzdE9iaiBpbmNsdWRlcyBUZXN0TWl4aW5JbnRlcmZhY2U7ICovCiAKIHR5cGVkZWYgYW55IEFu
eVR5cGVkZWY7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9U
ZXN0UGFydGlhbE1peGluSW50ZXJmYWNlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFBhcnRpYWxNaXhpbkludGVyZmFjZS5pZGwJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RQ
YXJ0aWFsTWl4aW5JbnRlcmZhY2UuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisvLyBUaGlzIElETCBmaWxlIGlzIGZvciB0ZXN0aW5nIHRoZSBiaW5kaW5n
cyBjb2RlIGdlbmVyYXRvciBhbmQgZm9yIHRyYWNraW5nCisvLyBjaGFuZ2VzIGluIGl0cyBvdXRw
dXQuCitbCisgICAgQ29uZGl0aW9uYWw9Q29uZGl0aW9uMzMKK10gcGFydGlhbCBpbnRlcmZhY2Ug
bWl4aW4gVGVzdE1peGluSW50ZXJmYWNlIHsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgZG91Ymxl
IHBhcnRpYWxNaXhpbkF0dHJpYnV0ZUZyb21QYXJ0aWFsOworICAgIHVuZGVmaW5lZCBwYXJ0aWFs
TWl4aW5PcGVyYXRpb25Gcm9tUGFydGlhbCgpOworICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFBB
UlRJQUxfTUlYSU5fQ09OU1RBTlRfRlJPTV9QQVJUSUFMID0gNTsKK307CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRl
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMuY3BwCShyZXZpc2lvbiAyNjY3MjcpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxJ
bmNsdWRlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDIyICs2MywyNSBAQCB1c2luZyBuYW1l
c3BhY2UgSlNDOwogLy8gRnVuY3Rpb25zCiAKICNpZiAoRU5BQkxFKENvbmRpdGlvbjEyKSAmJiBF
TkFCTEUoQ29uZGl0aW9uMjIpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1KU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1
bmN0aW9uSW5jbHVkZXNNZXRob2QxKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFt
ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENvbmRpdGlvbmFs
SW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbk1peGluT3BlcmF0aW9uKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2VuZGlmCiAjaWYgKEVOQUJMRShDb25kaXRpb24xMikg
JiYgRU5BQkxFKENvbmRpdGlvbjIyKSkgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5
cGVGdW5jdGlvbkluY2x1ZGVzTWV0aG9kMihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxs
RnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDb25kaXRp
b25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25NaXhpbkNvbXBsZXhPcGVyYXRpb24oSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYKICNpZiAoRU5BQkxFKENv
bmRpdGlvbjEyKSAmJiBFTkFCTEUoQ29uZGl0aW9uMjIpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMp
Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q29uZGl0aW9uYWxJbmNs
dWRlc1Byb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2QzKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbk1peGluQ3VzdG9tT3BlcmF0
aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2VuZGlmCiAjaWYg
KEVOQUJMRShDb25kaXRpb24xMSkgJiYgRU5BQkxFKENvbmRpdGlvbjEyKSAmJiBFTkFCTEUoQ29u
ZGl0aW9uMjIpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uSW5j
bHVkZXNNZXRob2RDb25kaXRpb25hbChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJh
bWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDb25kaXRpb25h
bEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25NaXhpbkNvbmRpdGlvbmFsT3BlcmF0aW9uKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2VuZGlmCiAjaWYgKEVOQUJMRShD
b25kaXRpb24xMikgJiYgRU5BQkxFKENvbmRpdGlvbjIyKSkgfHwgRU5BQkxFKENvbmRpdGlvbjIz
KQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENvbmRpdGlvbmFsSW5j
bHVkZXNQcm90b3R5cGVGdW5jdGlvbkluY2x1ZGVzTWV0aG9kU2V0dGluZ3NDb25kaXRpb25hbChK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rp
b25NaXhpblNldHRpbmdzQ29uZGl0aW9uYWxPcGVyYXRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYKICNpZiAoRU5BQkxFKENvbmRpdGlvbjEyKSAmJiBF
TkFCTEUoQ29uZGl0aW9uMjIpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1KU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1
bmN0aW9uVGFrZU5vZGVzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVk
ZXNQcm90b3R5cGVGdW5jdGlvbk1peGluUmVzdWx0RmllbGRPcGVyYXRpb24oSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CisjZW5kaWYKKyNpZiAoRU5BQkxFKENvbmRpdGlv
bjEyKSAmJiBFTkFCTEUoQ29uZGl0aW9uMjIpICYmIEVOQUJMRShDb25kaXRpb24zMykpIHx8IEVO
QUJMRShDb25kaXRpb24yMykKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25QYXJ0aWFsTWl4aW5PcGVyYXRp
b25Gcm9tUGFydGlhbChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNl
bmRpZgogCiAvLyBBdHRyaWJ1dGVzCkBAIC04NywxOSArOTAsMjIgQEAgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RDb25kaXRpb25hbEluYwogYm9vbCBzZXRKU1Rlc3RDb25kaXRpb25hbEluY2x1
ZGVzQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDb25kaXRp
b25hbEluY2x1ZGVzVGVzdEF0dHIoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVO
QUJMRShDb25kaXRpb24yMykKLUpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q29uZGl0aW9uYWxJ
bmNsdWRlc0luY2x1ZGVzU3RyMShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDb25k
aXRpb25hbEluY2x1ZGVzTWl4aW5SZWFkT25seUF0dHJpYnV0ZShKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworI2VuZGlmCisjaWYg
RU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCitKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNNaXhpbkF0dHJpYnV0ZShKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworYm9v
bCBzZXRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzTWl4aW5BdHRyaWJ1dGUoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogI2Vu
ZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1KU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNJbmNsdWRlc1N0cjIoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1l
KTsKLWJvb2wgc2V0SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0luY2x1ZGVzU3RyMihKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7
CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNNaXhpbkN1c3Rv
bUF0dHJpYnV0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpQcm9wZXJ0eU5hbWUpOworYm9vbCBzZXRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzTWl4aW5D
dXN0b21BdHRyaWJ1dGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8
fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1KU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENvbmRpdGlv
bmFsSW5jbHVkZXNJbmNsdWRlc1N0cjMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLWJvb2wgc2V0SlNUZXN0Q29uZGl0aW9uYWxJ
bmNsdWRlc0luY2x1ZGVzU3RyMyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXNNaXhpbk5vZGVBdHRyaWJ1dGUoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0
Q29uZGl0aW9uYWxJbmNsdWRlc01peGluTm9kZUF0dHJpYnV0ZShKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAjZW5kaWYKICNp
ZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLUpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0luY2x1ZGVzTm9kZShKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotYm9v
bCBzZXRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzSW5jbHVkZXNOb2RlKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK0pTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1BhcnRpYWxNaXhpbkF0dHJp
YnV0ZUZyb21QYXJ0aWFsKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7CiAjZW5kaWYKIAogY2xhc3MgSlNUZXN0Q29uZGl0aW9uYWxJ
bmNsdWRlc1Byb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewpA
QCAtMTQxLDIzICsxNDcsMzEgQEAgdXNpbmcgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0NvbnN0
cnVjdAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVk
ZXNDb25zdHJ1Y3RvclRhYmxlVmFsdWVzW10gPQogewogI2lmIEVOQUJMRShDb25kaXRpb24yMikg
fHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIHsgIklOQ0xVREVTX0NPTlNUQU5UMSIsIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdlciwgTm9JbnRy
aW5zaWMsIHsgKGxvbmcgbG9uZykoMSkgfSB9LAorICAgIHsgIk1JWElOX0NPTlNUQU5UIiwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2VyLCBOb0lu
dHJpbnNpYywgeyAobG9uZyBsb25nKSgxKSB9IH0sCisjZWxzZQorICAgIHsgMCwgMCwgTm9JbnRy
aW5zaWMsIHsgMCwgMCB9IH0sCisjZW5kaWYKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVO
QUJMRShDb25kaXRpb24yMykKKyAgICB7ICJNSVhJTl9SRUZMRUNURURfQ09OU1RBTlQiLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIsIE5vSW50
cmluc2ljLCB7IChsb25nIGxvbmcpKDIpIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJp
bnNpYywgeyAwLCAwIH0gfSwKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5B
QkxFKENvbmRpdGlvbjIzKQotICAgIHsgIklOQ0xVREVTX0NPTlNUQU5UMiIsIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdlciwgTm9JbnRyaW5zaWMs
IHsgKGxvbmcgbG9uZykoMikgfSB9LAorICAgIHsgIlBBUlRJQUxfTUlYSU5fQ09OU1RBTlRfRlJP
TV9QQVJUSUFMIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3Rh
bnRJbnRlZ2VyLCBOb0ludHJpbnNpYywgeyAobG9uZyBsb25nKSg1KSB9IH0sCiAjZWxzZQogICAg
IHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYKIH07CiAKICNpZiBFTkFC
TEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLXN0YXRpY19hc3NlcnQoVGVz
dENvbmRpdGlvbmFsSW5jbHVkZXM6OklOQ0xVREVTX0NPTlNUQU5UMSA9PSAxLCAiSU5DTFVERVNf
Q09OU1RBTlQxIGluIFRlc3RDb25kaXRpb25hbEluY2x1ZGVzIGRvZXMgbm90IG1hdGNoIHZhbHVl
IGZyb20gSURMIik7CitzdGF0aWNfYXNzZXJ0KFRlc3RDb25kaXRpb25hbEluY2x1ZGVzOjpNSVhJ
Tl9DT05TVEFOVCA9PSAxLCAiTUlYSU5fQ09OU1RBTlQgaW4gVGVzdENvbmRpdGlvbmFsSW5jbHVk
ZXMgZG9lcyBub3QgbWF0Y2ggdmFsdWUgZnJvbSBJREwiKTsKICNlbmRpZgogI2lmIEVOQUJMRShD
b25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogc3RhdGljX2Fzc2VydChUZXN0Q29u
ZGl0aW9uYWxJbmNsdWRlczo6Q09OU1RfSU1QTCA9PSAyLCAiQ09OU1RfSU1QTCBpbiBUZXN0Q29u
ZGl0aW9uYWxJbmNsdWRlcyBkb2VzIG5vdCBtYXRjaCB2YWx1ZSBmcm9tIElETCIpOwogI2VuZGlm
CisjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCitzdGF0aWNf
YXNzZXJ0KFRlc3RDb25kaXRpb25hbEluY2x1ZGVzOjpQQVJUSUFMX01JWElOX0NPTlNUQU5UX0ZS
T01fUEFSVElBTCA9PSA1LCAiUEFSVElBTF9NSVhJTl9DT05TVEFOVF9GUk9NX1BBUlRJQUwgaW4g
VGVzdENvbmRpdGlvbmFsSW5jbHVkZXMgZG9lcyBub3QgbWF0Y2ggdmFsdWUgZnJvbSBJREwiKTsK
KyNlbmRpZgogCiB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0Nv
bnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CkBAIC0xODIsNjIgKzE5Niw3NyBAQCBzdGF0
aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0Q29uZGl0CiAgICAgeyAiY29uc3RydWN0b3Ii
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNDb25zdHJ1Y3RvciksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXNDb25zdHJ1Y3RvcikgfSB9LAogICAgIHsgInRlc3RBdHRyIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNUZXN0
QXR0ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KDApIH0gfSwKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24y
MykKLSAgICB7ICJpbmNsdWRlc1N0cjEiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0luY2x1ZGVzU3RyMSksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKKyAgICB7ICJtaXhp
blJlYWRPbmx5QXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVz
dENvbmRpdGlvbmFsSW5jbHVkZXNNaXhpblJlYWRPbmx5QXR0cmlidXRlKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAorI2Vsc2UK
KyAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAorI2VuZGlmCisjaWYgRU5BQkxF
KENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCisgICAgeyAibWl4aW5BdHRyaWJ1
dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNNaXhpbkF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdENvbmRpdGlv
bmFsSW5jbHVkZXNNaXhpbkF0dHJpYnV0ZSkgfSB9LAogI2Vsc2UKICAgICB7IDAsIDAsIE5vSW50
cmluc2ljLCB7IDAsIDAgfSB9LAogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgeyAiaW5jbHVkZXNTdHIyIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RDb25kaXRpb25hbElu
Y2x1ZGVzSW5jbHVkZXNTdHIyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0luY2x1ZGVzU3Ry
MikgfSB9LAorICAgIHsgIm1peGluQ3VzdG9tQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RDb25kaXRpb25hbEluY2x1
ZGVzTWl4aW5DdXN0b21BdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzTWl4aW5D
dXN0b21BdHRyaWJ1dGUpIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAw
LCAwIH0gfSwKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRp
dGlvbjIzKQotICAgIHsgImluY2x1ZGVzU3RyMyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0luY2x1
ZGVzU3RyMyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNJbmNsdWRlc1N0cjMpIH0gfSwKKyAg
ICB7ICJtaXhpbk5vZGVBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNNaXhpbk5vZGVB
dHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzTWl4aW5Ob2RlQXR0cmlidXRlKSB9
IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYK
ICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLSAgICB7ICJp
bmNsdWRlc05vZGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNJbmNsdWRlc05vZGUpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RD
b25kaXRpb25hbEluY2x1ZGVzSW5jbHVkZXNOb2RlKSB9IH0sCisgICAgeyAicGFydGlhbE1peGlu
QXR0cmlidXRlRnJvbVBhcnRpYWwiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNU
ZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1BhcnRpYWxNaXhpbkF0dHJpYnV0ZUZyb21QYXJ0aWFsKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkg
fSB9LAogI2Vsc2UKICAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAogI2VuZGlm
CiAjaWYgKEVOQUJMRShDb25kaXRpb24xMikgJiYgRU5BQkxFKENvbmRpdGlvbjIyKSkgfHwgRU5B
QkxFKENvbmRpdGlvbjIzKQotICAgIHsgImluY2x1ZGVzTWV0aG9kMSIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0Q29uZGl0aW9u
YWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2QxKSwgKGludHB0cl90KSAo
MCkgfSB9LAorICAgIHsgIm1peGluT3BlcmF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVz
UHJvdG90eXBlRnVuY3Rpb25NaXhpbk9wZXJhdGlvbiksIChpbnRwdHJfdCkgKDApIH0gfSwKICNl
bHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKICNlbmRpZgogI2lmIChF
TkFCTEUoQ29uZGl0aW9uMTIpICYmIEVOQUJMRShDb25kaXRpb24yMikpIHx8IEVOQUJMRShDb25k
aXRpb24yMykKLSAgICB7ICJpbmNsdWRlc01ldGhvZDIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdENvbmRpdGlvbmFsSW5jbHVk
ZXNQcm90b3R5cGVGdW5jdGlvbkluY2x1ZGVzTWV0aG9kMiksIChpbnRwdHJfdCkgKDIpIH0gfSwK
KyAgICB7ICJtaXhpbkNvbXBsZXhPcGVyYXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQ
cm90b3R5cGVGdW5jdGlvbk1peGluQ29tcGxleE9wZXJhdGlvbiksIChpbnRwdHJfdCkgKDIpIH0g
fSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKICNlbmRpZgog
I2lmIChFTkFCTEUoQ29uZGl0aW9uMTIpICYmIEVOQUJMRShDb25kaXRpb24yMikpIHx8IEVOQUJM
RShDb25kaXRpb24yMykKLSAgICB7ICJpbmNsdWRlc01ldGhvZDMiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdENvbmRpdGlvbmFs
SW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbkluY2x1ZGVzTWV0aG9kMyksIChpbnRwdHJfdCkgKDAp
IH0gfSwKKyAgICB7ICJtaXhpbkN1c3RvbU9wZXJhdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0Q29uZGl0aW9uYWxJbmNs
dWRlc1Byb3RvdHlwZUZ1bmN0aW9uTWl4aW5DdXN0b21PcGVyYXRpb24pLCAoaW50cHRyX3QpICgw
KSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5k
aWYKICNpZiAoRU5BQkxFKENvbmRpdGlvbjExKSAmJiBFTkFCTEUoQ29uZGl0aW9uMTIpICYmIEVO
QUJMRShDb25kaXRpb24yMikpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLSAgICB7ICJpbmNsdWRl
c01ldGhvZENvbmRpdGlvbmFsIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVu
Y3Rpb25JbmNsdWRlc01ldGhvZENvbmRpdGlvbmFsKSwgKGludHB0cl90KSAoMCkgfSB9LAorICAg
IHsgIm1peGluQ29uZGl0aW9uYWxPcGVyYXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQ
cm90b3R5cGVGdW5jdGlvbk1peGluQ29uZGl0aW9uYWxPcGVyYXRpb24pLCAoaW50cHRyX3QpICgw
KSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5k
aWYKICNpZiAoRU5BQkxFKENvbmRpdGlvbjEyKSAmJiBFTkFCTEUoQ29uZGl0aW9uMjIpKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgeyAiaW5jbHVkZXNNZXRob2RTZXR0aW5nc0NvbmRpdGlv
bmFsIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0
aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0
aW9uPihqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01l
dGhvZFNldHRpbmdzQ29uZGl0aW9uYWwpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAibWl4
aW5TZXR0aW5nc0NvbmRpdGlvbmFsT3BlcmF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVz
UHJvdG90eXBlRnVuY3Rpb25NaXhpblNldHRpbmdzQ29uZGl0aW9uYWxPcGVyYXRpb24pLCAoaW50
cHRyX3QpICgwKSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9
IH0sCiAjZW5kaWYKICNpZiAoRU5BQkxFKENvbmRpdGlvbjEyKSAmJiBFTkFCTEUoQ29uZGl0aW9u
MjIpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgeyAidGFrZU5vZGVzIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RDb25k
aXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25UYWtlTm9kZXMpLCAoaW50cHRyX3QpICgw
KSB9IH0sCisgICAgeyAibWl4aW5SZXN1bHRGaWVsZE9wZXJhdGlvbiIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0Q29uZGl0aW9u
YWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uTWl4aW5SZXN1bHRGaWVsZE9wZXJhdGlvbiksIChp
bnRwdHJfdCkgKDApIH0gfSwKKyNlbHNlCisgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAw
IH0gfSwKKyNlbmRpZgorI2lmIChFTkFCTEUoQ29uZGl0aW9uMTIpICYmIEVOQUJMRShDb25kaXRp
b24yMikgJiYgRU5BQkxFKENvbmRpdGlvbjMzKSkgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorICAg
IHsgInBhcnRpYWxNaXhpbk9wZXJhdGlvbkZyb21QYXJ0aWFsIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RDb25kaXRpb25hbElu
Y2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25QYXJ0aWFsTWl4aW5PcGVyYXRpb25Gcm9tUGFydGlhbCks
IChpbnRwdHJfdCkgKDApIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAw
LCAwIH0gfSwKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRp
dGlvbjIzKQotICAgIHsgIklOQ0xVREVTX0NPTlNUQU5UMSIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdlciwgTm9JbnRyaW5zaWMsIHsgKGxvbmcg
bG9uZykoMSkgfSB9LAorICAgIHsgIk1JWElOX0NPTlNUQU5UIiwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2VyLCBOb0ludHJpbnNpYywgeyAobG9u
ZyBsb25nKSgxKSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9
IH0sCiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24y
MykKLSAgICB7ICJJTkNMVURFU19DT05TVEFOVDIiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIsIE5vSW50cmluc2ljLCB7IChsb25nIGxvbmcp
KDIpIH0gfSwKKyAgICB7ICJNSVhJTl9SRUZMRUNURURfQ09OU1RBTlQiLCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIsIE5vSW50cmluc2ljLCB7
IChsb25nIGxvbmcpKDIpIH0gfSwKKyNlbHNlCisgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAw
LCAwIH0gfSwKKyNlbmRpZgorI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRp
dGlvbjIzKQorICAgIHsgIlBBUlRJQUxfTUlYSU5fQ09OU1RBTlRfRlJPTV9QQVJUSUFMIiwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2VyLCBOb0lu
dHJpbnNpYywgeyAobG9uZyBsb25nKSg1KSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRy
aW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYKQEAgLTI1Myw3ICsyODIsNyBAQCB2b2lkIEpTVGVz
dENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGU6CiAjaWYgKEVOQUJMRShDb25kaXRpb24xMikg
JiYgRU5BQkxFKENvbmRpdGlvbjIyKSkgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogICAgIGlmICgh
ZG93bmNhc3Q8RG9jdW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVj
dCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0dGluZ3MoKS50ZXN0U2V0dGluZzJF
bmFibGVkKCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7
Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJpbmNsdWRlc01ldGhvZDEiKSwgc3RybGVu
KCJpbmNsdWRlc01ldGhvZDEiKSk7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJtaXhp
bk9wZXJhdGlvbiIpLCBzdHJsZW4oIm1peGluT3BlcmF0aW9uIikpOwogICAgICAgICBWTTo6RGVs
ZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Okln
bm9yZUNvbmZpZ3VyYWJsZSk7CiAgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwogICAg
ICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CkBAIC0yNjIsNyArMjkxLDcgQEAgdm9pZCBKU1Rlc3RDb25kaXRpb25h
bEluY2x1ZGVzUHJvdG90eXBlOgogI2lmIChFTkFCTEUoQ29uZGl0aW9uMTIpICYmIEVOQUJMRShD
b25kaXRpb24yMikpIHx8IEVOQUJMRShDb25kaXRpb24yMykKICAgICBpZiAoIWRvd25jYXN0PERv
Y3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkudGVzdFNldHRpbmcyRW5hYmxlZCgpKSB7
CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwotICAgICAgICBh
dXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPigiaW5jbHVkZXNNZXRob2QyIiksIHN0cmxlbigiaW5jbHVkZXNN
ZXRob2QyIikpOworICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigibWl4aW5Db21wbGV4T3Bl
cmF0aW9uIiksIHN0cmxlbigibWl4aW5Db21wbGV4T3BlcmF0aW9uIikpOwogICAgICAgICBWTTo6
RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6
Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CiAgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90Owog
ICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CkBAIC0yNzEsNyArMzAwLDcgQEAgdm9pZCBKU1Rlc3RDb25kaXRp
b25hbEluY2x1ZGVzUHJvdG90eXBlOgogI2lmIChFTkFCTEUoQ29uZGl0aW9uMTIpICYmIEVOQUJM
RShDb25kaXRpb24yMikpIHx8IEVOQUJMRShDb25kaXRpb24yMykKICAgICBpZiAoIWRvd25jYXN0
PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkudGVzdFNldHRpbmcyRW5hYmxlZCgp
KSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwotICAgICAg
ICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiaW5jbHVkZXNNZXRob2QzIiksIHN0cmxlbigiaW5jbHVk
ZXNNZXRob2QzIikpOworICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigibWl4aW5DdXN0b21P
cGVyYXRpb24iKSwgc3RybGVuKCJtaXhpbkN1c3RvbU9wZXJhdGlvbiIpKTsKICAgICAgICAgVk06
OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2Rl
OjpJZ25vcmVDb25maWd1cmFibGUpOwogICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsK
ICAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwpAQCAtMjgwLDcgKzMwOSw3IEBAIHZvaWQgSlNUZXN0Q29uZGl0
aW9uYWxJbmNsdWRlc1Byb3RvdHlwZToKICNpZiAoRU5BQkxFKENvbmRpdGlvbjExKSAmJiBFTkFC
TEUoQ29uZGl0aW9uMTIpICYmIEVOQUJMRShDb25kaXRpb24yMikpIHx8IEVOQUJMRShDb25kaXRp
b24yMykKICAgICBpZiAoIWRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdz
KCkudGVzdFNldHRpbmcyRW5hYmxlZCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVBy
b3BlcnRpZXMgPSB0cnVlOwotICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiaW5jbHVkZXNN
ZXRob2RDb25kaXRpb25hbCIpLCBzdHJsZW4oImluY2x1ZGVzTWV0aG9kQ29uZGl0aW9uYWwiKSk7
CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJtaXhpbkNvbmRpdGlvbmFsT3BlcmF0aW9u
IiksIHN0cmxlbigibWl4aW5Db25kaXRpb25hbE9wZXJhdGlvbiIpKTsKICAgICAgICAgVk06OkRl
bGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJ
Z25vcmVDb25maWd1cmFibGUpOwogICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAg
ICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOwpAQCAtMjg5LDcgKzMxOCw3IEBAIHZvaWQgSlNUZXN0Q29uZGl0aW9u
YWxJbmNsdWRlc1Byb3RvdHlwZToKICNpZiAoRU5BQkxFKENvbmRpdGlvbjEyKSAmJiBFTkFCTEUo
Q29uZGl0aW9uMjIpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCiAgICAgaWYgKCEoZG93bmNhc3Q8
RG9jdW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0dGluZ3MoKS50ZXN0U2V0dGluZ0VuYWJsZWQoKSAm
JiBkb3duY2FzdDxEb2N1bWVudD4oanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2Jq
ZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5zZXR0aW5ncygpLnRlc3RTZXR0aW5n
MkVuYWJsZWQoKSkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRy
dWU7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJpbmNsdWRlc01ldGhvZFNldHRpbmdz
Q29uZGl0aW9uYWwiKSwgc3RybGVuKCJpbmNsdWRlc01ldGhvZFNldHRpbmdzQ29uZGl0aW9uYWwi
KSk7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJtaXhpblNldHRpbmdzQ29uZGl0aW9u
YWxPcGVyYXRpb24iKSwgc3RybGVuKCJtaXhpblNldHRpbmdzQ29uZGl0aW9uYWxPcGVyYXRpb24i
KSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRl
bGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAgICAgICAgRGVsZXRlUHJv
cGVydHlTbG90IHNsb3Q7CiAgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBn
bG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKQEAgLTI5OCw3ICszMjcsMjUgQEAg
dm9pZCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlOgogI2lmIChFTkFCTEUoQ29u
ZGl0aW9uMTIpICYmIEVOQUJMRShDb25kaXRpb24yMikpIHx8IEVOQUJMRShDb25kaXRpb24yMykK
ICAgICBpZiAoIWRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihn
bG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkudGVz
dFNldHRpbmcyRW5hYmxlZCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRp
ZXMgPSB0cnVlOwotICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigidGFrZU5vZGVzIiksIHN0
cmxlbigidGFrZU5vZGVzIikpOworICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigibWl4aW5S
ZXN1bHRGaWVsZE9wZXJhdGlvbiIpLCBzdHJsZW4oIm1peGluUmVzdWx0RmllbGRPcGVyYXRpb24i
KSk7CisgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRl
bGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKKyAgICAgICAgRGVsZXRlUHJv
cGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBn
bG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICB9CisjZW5kaWYKKyNpZiAo
RU5BQkxFKENvbmRpdGlvbjEyKSAmJiBFTkFCTEUoQ29uZGl0aW9uMjIpICYmIEVOQUJMRShDb25k
aXRpb24zMykpIHx8IEVOQUJMRShDb25kaXRpb24yMykKKyAgICBpZiAoIWRvd25jYXN0PERvY3Vt
ZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkudGVzdFNldHRpbmcyRW5hYmxlZCgpKSB7Cisg
ICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOworICAgICAgICBhdXRv
IHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgTENoYXIqPigicGFydGlhbE1peGluT3BlcmF0aW9uRnJvbVBhcnRpYWwiKSwgc3Ry
bGVuKCJwYXJ0aWFsTWl4aW5PcGVyYXRpb25Gcm9tUGFydGlhbCIpKTsKKyAgICAgICAgVk06OkRl
bGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJ
Z25vcmVDb25maWd1cmFibGUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAg
ICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOworICAgIH0KKyNlbmRpZgorI2lmIEVOQUJMRShDb25kaXRpb24yMikg
fHwgRU5BQkxFKENvbmRpdGlvbjIzKQorICAgIGlmICghZG93bmNhc3Q8RG9jdW1lbnQ+KGpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKS0+c2V0dGluZ3MoKS50ZXN0U2V0dGluZzJFbmFibGVkKCkpIHsKKyAgICAgICAgaGFz
RGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CisgICAgICAgIGF1dG8gcHJvcGVydHlO
YW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBM
Q2hhcio+KCJtaXhpblJlYWRPbmx5QXR0cmlidXRlIiksIHN0cmxlbigibWl4aW5SZWFkT25seUF0
dHJpYnV0ZSIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZt
LCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwogICAgICAgICBE
ZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5
KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpAQCAtMzA3LDcgKzM1
NCw3IEBAIHZvaWQgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZToKICNpZiBFTkFC
TEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKICAgICBpZiAoIWRvd25jYXN0
PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkudGVzdFNldHRpbmcyRW5hYmxlZCgp
KSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwotICAgICAg
ICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiaW5jbHVkZXNTdHIxIiksIHN0cmxlbigiaW5jbHVkZXNT
dHIxIikpOworICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigibWl4aW5BdHRyaWJ1dGUiKSwg
c3RybGVuKCJtaXhpbkF0dHJpYnV0ZSIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9k
ZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFi
bGUpOwogICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgSlNPYmplY3Q6
OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OwpAQCAtMzE2LDcgKzM2Myw3IEBAIHZvaWQgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3Rv
dHlwZToKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKICAg
ICBpZiAoIWRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9i
YWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkudGVzdFNl
dHRpbmcyRW5hYmxlZCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMg
PSB0cnVlOwotICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiaW5jbHVkZXNTdHIyIiksIHN0
cmxlbigiaW5jbHVkZXNTdHIyIikpOworICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigibWl4
aW5DdXN0b21BdHRyaWJ1dGUiKSwgc3RybGVuKCJtaXhpbkN1c3RvbUF0dHJpYnV0ZSIpKTsKICAg
ICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJv
cGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwogICAgICAgICBEZWxldGVQcm9wZXJ0eVNs
b3Qgc2xvdDsKICAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9i
amVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpAQCAtMzI1LDcgKzM3Miw3IEBAIHZvaWQgSlNU
ZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZToKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIp
IHx8IEVOQUJMRShDb25kaXRpb24yMykKICAgICBpZiAoIWRvd25jYXN0PERvY3VtZW50Pihqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSktPnNldHRpbmdzKCkudGVzdFNldHRpbmcyRW5hYmxlZCgpKSB7CiAgICAgICAgIGhh
c0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwotICAgICAgICBhdXRvIHByb3BlcnR5
TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
TENoYXIqPigiaW5jbHVkZXNTdHIzIiksIHN0cmxlbigiaW5jbHVkZXNTdHIzIikpOworICAgICAg
ICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigibWl4aW5Ob2RlQXR0cmlidXRlIiksIHN0cmxlbigibWl4
aW5Ob2RlQXR0cmlidXRlIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUg
c2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CiAg
ICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBKU09iamVjdDo6ZGVsZXRl
UHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CkBAIC0z
MzQsNyArMzgxLDcgQEAgdm9pZCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlOgog
I2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogICAgIGlmICgh
ZG93bmNhc3Q8RG9jdW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVj
dCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0dGluZ3MoKS50ZXN0U2V0dGluZzJF
bmFibGVkKCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7
Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJpbmNsdWRlc05vZGUiKSwgc3RybGVuKCJp
bmNsdWRlc05vZGUiKSk7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJwYXJ0aWFsTWl4
aW5BdHRyaWJ1dGVGcm9tUGFydGlhbCIpLCBzdHJsZW4oInBhcnRpYWxNaXhpbkF0dHJpYnV0ZUZy
b21QYXJ0aWFsIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUo
dm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CiAgICAgICAg
IERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CkBAIC00MjksMzkg
KzQ3NiwzOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzCiB9CiAK
ICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLXN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzSW5jbHVkZXNTdHIxR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RDb25kaXRpb25hbElu
Y2x1ZGVzJiB0aGlzT2JqZWN0KQorc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdENvbmRpdGlv
bmFsSW5jbHVkZXNNaXhpblJlYWRPbmx5QXR0cmlidXRlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzJiB0aGlzT2JqZWN0
KQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuaW5jbHVkZXNTdHIxKCkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETERPTVN0cmluZz4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5taXhpblJlYWRPbmx5QXR0cmlidXRlKCkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNJbmNsdWRlc1N0cjEoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KQorRW5jb2RlZEpTVmFsdWUganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc01peGluUmVhZE9ubHlB
dHRyaWJ1dGUoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcz46OmdldDxqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVz
SW5jbHVkZXNTdHIxR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiaW5jbHVkZXNTdHIxIik7CisgICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPjo6Z2V0PGpzVGVzdENvbmRp
dGlvbmFsSW5jbHVkZXNNaXhpblJlYWRPbmx5QXR0cmlidXRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAibWl4
aW5SZWFkT25seUF0dHJpYnV0ZSIpOwogfQogCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDb25kaXRp
b24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVz
dENvbmRpdGlvbmFsSW5jbHVkZXNJbmNsdWRlc1N0cjJHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMmIHRoaXNPYmplY3Qp
CitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc01peGluQXR0
cmlidXRlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RD
b25kaXRpb25hbEluY2x1ZGVzJiB0aGlzT2JqZWN0KQogewogICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExET01TdHJpbmc+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuaW5jbHVkZXNTdHIyKCkpKSk7
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETERPTVN0cmluZz4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5taXhpbkF0dHJpYnV0ZSgpKSkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzSW5jbHVkZXNT
dHIyKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFs
SW5jbHVkZXNNaXhpbkF0dHJpYnV0ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPjo6Z2V0PGpzVGVzdENvbmRp
dGlvbmFsSW5jbHVkZXNJbmNsdWRlc1N0cjJHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJpbmNsdWRlc1N0cjIi
KTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+Ojpn
ZXQ8anNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc01peGluQXR0cmlidXRlR2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAibWl4aW5BdHRyaWJ1dGUiKTsKIH0KIAogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ29uZGl0aW9u
MjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLXN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RD
b25kaXRpb25hbEluY2x1ZGVzSW5jbHVkZXNTdHIyU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQorc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdENvbmRpdGlvbmFsSW5j
bHVkZXNNaXhpbkF0dHJpYnV0ZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNDY5LDg2
ICs1MTYsMTAyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RDb25kaXRpb25hbEkKICAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdIHsKLSAgICAgICAgcmV0dXJuIGltcGwuc2V0SW5jbHVkZXNTdHIyKFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIGltcGwuc2V0TWl4aW5BdHRyaWJ1dGUoV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgIH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IHNldEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNJbmNsdWRlc1N0cjIoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzTWl4
aW5BdHRyaWJ1dGUoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcz46OnNldDxzZXRKU1Rl
c3RDb25kaXRpb25hbEluY2x1ZGVzSW5jbHVkZXNTdHIyU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJpbmNsdWRlc1N0cjIiKTsKKyAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+OjpzZXQ8c2V0SlNUZXN0
Q29uZGl0aW9uYWxJbmNsdWRlc01peGluQXR0cmlidXRlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJtaXhpbkF0dHJpYnV0ZSIpOwogfQogCiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQot
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNJbmNsdWRlc1N0
cjNHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdENvbmRp
dGlvbmFsSW5jbHVkZXMmIHRoaXNPYmplY3QpCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0
Q29uZGl0aW9uYWxJbmNsdWRlc01peGluQ3VzdG9tQXR0cmlidXRlR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzJiB0aGlz
T2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBy
ZXR1cm4gdGhpc09iamVjdC5pbmNsdWRlc1N0cjMobGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAg
cmV0dXJuIHRoaXNPYmplY3QubWl4aW5DdXN0b21BdHRyaWJ1dGUobGV4aWNhbEdsb2JhbE9iamVj
dCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNJbmNsdWRl
c1N0cjMoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0Q29uZGl0aW9u
YWxJbmNsdWRlc01peGluQ3VzdG9tQXR0cmlidXRlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+OjpnZXQ8anNU
ZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0luY2x1ZGVzU3RyM0dldHRlciwgQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImluY2x1
ZGVzU3RyMyIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0Q29uZGl0aW9uYWxJbmNs
dWRlcz46OmdldDxqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzTWl4aW5DdXN0b21BdHRyaWJ1dGVH
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJtaXhpbkN1c3RvbUF0dHJpYnV0ZSIpOwogfQogCiAjZW5kaWYKIAog
I2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotc3RhdGljIGlu
bGluZSBib29sIHNldEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNJbmNsdWRlc1N0cjNTZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdENvbmRpdGlvbmFsSW5j
bHVkZXMmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc01peGluQ3VzdG9tQXR0cmlidXRlU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVz
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgdGhpc09iamVjdC5zZXRJbmNsdWRlc1N0cjMo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOworICAgIHRoaXNPYmplY3Quc2V0TWl4aW5DdXN0
b21BdHRyaWJ1dGUobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIHNldEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNJbmNsdWRlc1N0cjMoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RDb25kaXRpb25h
bEluY2x1ZGVzTWl4aW5DdXN0b21BdHRyaWJ1dGUoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQogewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0Q29uZGl0aW9uYWxJbmNs
dWRlcz46OnNldDxzZXRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzSW5jbHVkZXNTdHIzU2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJpbmNsdWRl
c1N0cjMiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVk
ZXM+OjpzZXQ8c2V0SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc01peGluQ3VzdG9tQXR0cmlidXRl
U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJt
aXhpbkN1c3RvbUF0dHJpYnV0ZSIpOwogfQogCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDb25kaXRp
b24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVz
dENvbmRpdGlvbmFsSW5jbHVkZXNJbmNsdWRlc05vZGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMmIHRoaXNPYmplY3Qp
CitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc01peGluTm9k
ZUF0dHJpYnV0ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNU
ZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyYgdGhpc09iamVjdCkKIHsKICAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMSW50ZXJm
YWNlPE5vZGU+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdC5nbG9iYWxPYmplY3Qo
KSwgdGhyb3dTY29wZSwgaW1wbC5pbmNsdWRlc05vZGUoKSkpKTsKKyAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMSW50ZXJmYWNlPE5vZGU+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCAqdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5taXhp
bk5vZGVBdHRyaWJ1dGUoKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0Q29uZGl0aW9u
YWxJbmNsdWRlc0luY2x1ZGVzTm9kZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzTWl4aW5Ob2RlQXR0cmlidXRlKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKIHsKLSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdENvbmRpdGlvbmFsSW5j
bHVkZXM+OjpnZXQ8anNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0luY2x1ZGVzTm9kZUdldHRlciwg
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgImluY2x1ZGVzTm9kZSIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0
Q29uZGl0aW9uYWxJbmNsdWRlcz46OmdldDxqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzTWl4aW5O
b2RlQXR0cmlidXRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAibWl4aW5Ob2RlQXR0cmlidXRlIik7CiB9CiAK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMp
Ci1zdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0luY2x1ZGVz
Tm9kZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0Q29u
ZGl0aW9uYWxJbmNsdWRlcyYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3N0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzTWl4aW5Ob2RlQXR0cmlidXRlU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RDb25kaXRpb25h
bEluY2x1ZGVzJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwotICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETEludGVyZmFjZTxOb2Rl
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBdHRyaWJ1
dGVUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsICJUZXN0Q29uZGl0aW9uYWxJ
bmNsdWRlcyIsICJpbmNsdWRlc05vZGUiLCAiTm9kZSIpOyB9KTsKKyAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExJbnRlcmZhY2U8Tm9kZT4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRo
cm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXR0cmlidXRlVHlwZUVycm9yKGxleGljYWxHbG9iYWxP
YmplY3QsIHNjb3BlLCAiVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMiLCAibWl4aW5Ob2RlQXR0cmli
dXRlIiwgIk5vZGUiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7Ci0gICAgICAgIHJldHVybiBpbXBsLnNldEluY2x1ZGVzTm9kZSgqbmF0
aXZlVmFsdWUpOworICAgICAgICByZXR1cm4gaW1wbC5zZXRNaXhpbk5vZGVBdHRyaWJ1dGUoKm5h
dGl2ZVZhbHVlKTsKICAgICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBzZXRKU1Rl
c3RDb25kaXRpb25hbEluY2x1ZGVzSW5jbHVkZXNOb2RlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc01peGluTm9kZUF0
dHJpYnV0ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPjo6c2V0PHNldEpTVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXNNaXhpbk5vZGVBdHRyaWJ1dGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm1peGluTm9kZUF0dHJpYnV0ZSIpOwor
fQorCisjZW5kaWYKKworI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlv
bjIzKQorc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQYXJ0
aWFsTWl4aW5BdHRyaWJ1dGVGcm9tUGFydGlhbEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyYgdGhpc09iamVjdCkKK3sK
KyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMRG91YmxlPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LnBhcnRpYWxNaXhpbkF0dHJpYnV0ZUZyb21QYXJ0aWFsKCkpKSk7Cit9CisKK0VuY29kZWRKU1Zh
bHVlIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQYXJ0aWFsTWl4aW5BdHRyaWJ1dGVGcm9tUGFy
dGlhbChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rl
c3RDb25kaXRpb25hbEluY2x1ZGVzPjo6c2V0PHNldEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNJ
bmNsdWRlc05vZGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgImluY2x1ZGVzTm9kZSIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0
Q29uZGl0aW9uYWxJbmNsdWRlcz46OmdldDxqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUGFydGlh
bE1peGluQXR0cmlidXRlRnJvbVBhcnRpYWxHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJwYXJ0aWFsTWl4aW5B
dHRyaWJ1dGVGcm9tUGFydGlhbCIpOwogfQogCiAjZW5kaWYKIAogI2lmIChFTkFCTEUoQ29uZGl0
aW9uMTIpICYmIEVOQUJMRShDb25kaXRpb24yMikpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLXN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVz
UHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZDFCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1l
IElETE9wZXJhdGlvbjxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPjo6Q2xhc3NQYXJhbWV0ZXIg
Y2FzdGVkVGhpcykKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDb25k
aXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25NaXhpbk9wZXJhdGlvbkJvZHkoSlNDOjpK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+OjpD
bGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKQEAgLTU1NiwxOSArNjE5LDE5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIHRocm93U2NvcGUucmVsZWFzZSgp
OwotICAgIGltcGwuaW5jbHVkZXNNZXRob2QxKCk7CisgICAgaW1wbC5taXhpbk9wZXJhdGlvbigp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlw
ZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2QxKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uTWl4aW5PcGVyYXRpb24o
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcz46
OmNhbGw8anNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNN
ZXRob2QxQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJpbmNsdWRlc01l
dGhvZDEiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVk
ZXM+OjpjYWxsPGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbk1peGlu
T3BlcmF0aW9uQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJtaXhpbk9w
ZXJhdGlvbiIpOwogfQogCiAjZW5kaWYKIAogI2lmIChFTkFCTEUoQ29uZGl0aW9uMTIpICYmIEVO
QUJMRShDb25kaXRpb24yMikpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLXN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVu
Y3Rpb25JbmNsdWRlc01ldGhvZDJCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlv
bjxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykK
K3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDb25kaXRpb25hbEluY2x1
ZGVzUHJvdG90eXBlRnVuY3Rpb25NaXhpbkNvbXBsZXhPcGVyYXRpb25Cb2R5KEpTQzo6SlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUs
IHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPjo6Q2xhc3NQ
YXJhbWV0ZXIgY2FzdGVkVGhpcykKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CkBAIC01ODQsMzcgKzY0NywzNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAgICAgYXV0byBzdHJBcmcgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIEVuc3VyZVN0aWxsQWxp
dmVTY29wZSBhcmd1bWVudDEgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwotICAg
IGF1dG8gb2JqQXJnID0gY29udmVydDxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50
VHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAxLCAib2JqQXJnIiwgIlRlc3RD
b25kaXRpb25hbEluY2x1ZGVzIiwgImluY2x1ZGVzTWV0aG9kMiIsICJUZXN0T2JqIik7IH0pOwor
ICAgIGF1dG8gb2JqQXJnID0gY29udmVydDxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3Vt
ZW50VHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAxLCAib2JqQXJnIiwgIlRl
c3RDb25kaXRpb25hbEluY2x1ZGVzIiwgIm1peGluQ29tcGxleE9wZXJhdGlvbiIsICJUZXN0T2Jq
Iik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5pbmNsdWRlc01ldGhvZDIo
KmNvbnRleHQsIFdURk1vdmUoc3RyQXJnKSwgKm9iakFyZykpKSk7CisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxUZXN0
T2JqPj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwg
dGhyb3dTY29wZSwgaW1wbC5taXhpbkNvbXBsZXhPcGVyYXRpb24oKmNvbnRleHQsIFdURk1vdmUo
c3RyQXJnKSwgKm9iakFyZykpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2Qy
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRl
c1Byb3RvdHlwZUZ1bmN0aW9uTWl4aW5Db21wbGV4T3BlcmF0aW9uKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+OjpjYWxsPGpzVGVzdENvbmRp
dGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbkluY2x1ZGVzTWV0aG9kMkJvZHk+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAiaW5jbHVkZXNNZXRob2QyIik7CisgICAgcmV0
dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPjo6Y2FsbDxqc1Rlc3RD
b25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25NaXhpbkNvbXBsZXhPcGVyYXRpb25C
b2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm1peGluQ29tcGxleE9wZXJh
dGlvbiIpOwogfQogCiAjZW5kaWYKIAogI2lmIChFTkFCTEUoQ29uZGl0aW9uMTIpICYmIEVOQUJM
RShDb25kaXRpb24yMikpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLXN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rp
b25JbmNsdWRlc01ldGhvZDNCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxK
U1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKK3N0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVz
UHJvdG90eXBlRnVuY3Rpb25NaXhpbkN1c3RvbU9wZXJhdGlvbkJvZHkoSlNDOjpKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlw
ZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+OjpDbGFzc1BhcmFt
ZXRlciBjYXN0ZWRUaGlzKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxG
cmFtZSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIChKU1ZhbHVlOjplbmNv
ZGUoY2FzdGVkVGhpcy0+aW5jbHVkZXNNZXRob2QzKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2Fs
bEZyYW1lKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKEpTVmFsdWU6
OmVuY29kZShjYXN0ZWRUaGlzLT5taXhpbkN1c3RvbU9wZXJhdGlvbigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgKmNhbGxGcmFtZSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2Qz
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRl
c1Byb3RvdHlwZUZ1bmN0aW9uTWl4aW5DdXN0b21PcGVyYXRpb24oSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcz46OmNhbGw8anNUZXN0Q29uZGl0
aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2QzQm9keT4oKmxleGlj
YWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJpbmNsdWRlc01ldGhvZDMiKTsKKyAgICByZXR1
cm4gSURMT3BlcmF0aW9uPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+OjpjYWxsPGpzVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbk1peGluQ3VzdG9tT3BlcmF0aW9uQm9k
eT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJtaXhpbkN1c3RvbU9wZXJhdGlv
biIpOwogfQogCiAjZW5kaWYKIAogI2lmIChFTkFCTEUoQ29uZGl0aW9uMTEpICYmIEVOQUJMRShD
b25kaXRpb24xMikgJiYgRU5BQkxFKENvbmRpdGlvbjIyKSkgfHwgRU5BQkxFKENvbmRpdGlvbjIz
KQotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFsSW5j
bHVkZXNQcm90b3R5cGVGdW5jdGlvbkluY2x1ZGVzTWV0aG9kQ29uZGl0aW9uYWxCb2R5KEpTQzo6
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxs
RnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPjo6
Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25NaXhpbkNvbmRp
dGlvbmFsT3BlcmF0aW9uQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNU
ZXN0Q29uZGl0aW9uYWxJbmNsdWRlcz46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCiB7CiAg
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNjIyLDE5ICs2ODUsMTkg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9Q
QVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5pbmNsdWRlc01ldGhvZENvbmRp
dGlvbmFsKCk7CisgICAgaW1wbC5taXhpbkNvbmRpdGlvbmFsT3BlcmF0aW9uKCk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25J
bmNsdWRlc01ldGhvZENvbmRpdGlvbmFsKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uTWl4aW5Db25kaXRpb25h
bE9wZXJhdGlvbihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RDb25kaXRpb25h
bEluY2x1ZGVzPjo6Y2FsbDxqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rp
b25JbmNsdWRlc01ldGhvZENvbmRpdGlvbmFsQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpj
YWxsRnJhbWUsICJpbmNsdWRlc01ldGhvZENvbmRpdGlvbmFsIik7CisgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPjo6Y2FsbDxqc1Rlc3RDb25kaXRpb25h
bEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25NaXhpbkNvbmRpdGlvbmFsT3BlcmF0aW9uQm9keT4o
KmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJtaXhpbkNvbmRpdGlvbmFsT3BlcmF0
aW9uIik7CiB9CiAKICNlbmRpZgogCiAjaWYgKEVOQUJMRShDb25kaXRpb24xMikgJiYgRU5BQkxF
KENvbmRpdGlvbjIyKSkgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlv
bkluY2x1ZGVzTWV0aG9kU2V0dGluZ3NDb25kaXRpb25hbEJvZHkoSlNDOjpKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5h
bWUgSURMT3BlcmF0aW9uPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+OjpDbGFzc1BhcmFtZXRl
ciBjYXN0ZWRUaGlzKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbk1peGluU2V0dGluZ3NDb25kaXRpb25h
bE9wZXJhdGlvbkJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXM+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQogewogICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTY0MiwzMiArNzA1LDUyIEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0o
Y2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwuaW5jbHVkZXNNZXRob2RTZXR0aW5nc0Nv
bmRpdGlvbmFsKCk7CisgICAgaW1wbC5taXhpblNldHRpbmdzQ29uZGl0aW9uYWxPcGVyYXRpb24o
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5
cGVGdW5jdGlvbkluY2x1ZGVzTWV0aG9kU2V0dGluZ3NDb25kaXRpb25hbChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5j
dGlvbk1peGluU2V0dGluZ3NDb25kaXRpb25hbE9wZXJhdGlvbihKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIElE
TE9wZXJhdGlvbjxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPjo6Y2FsbDxqc1Rlc3RDb25kaXRp
b25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZFNldHRpbmdzQ29uZGl0
aW9uYWxCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgImluY2x1ZGVzTWV0
aG9kU2V0dGluZ3NDb25kaXRpb25hbCIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0
Q29uZGl0aW9uYWxJbmNsdWRlcz46OmNhbGw8anNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3Rv
dHlwZUZ1bmN0aW9uTWl4aW5TZXR0aW5nc0NvbmRpdGlvbmFsT3BlcmF0aW9uQm9keT4oKmxleGlj
YWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJtaXhpblNldHRpbmdzQ29uZGl0aW9uYWxPcGVy
YXRpb24iKTsKIH0KIAogI2VuZGlmCiAKICNpZiAoRU5BQkxFKENvbmRpdGlvbjEyKSAmJiBFTkFC
TEUoQ29uZGl0aW9uMjIpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1zdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0
aW9uVGFrZU5vZGVzQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0
Q29uZGl0aW9uYWxJbmNsdWRlcz46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCitzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3Rv
dHlwZUZ1bmN0aW9uTWl4aW5SZXN1bHRGaWVsZE9wZXJhdGlvbkJvZHkoSlNDOjpKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlw
ZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+OjpDbGFzc1BhcmFt
ZXRlciBjYXN0ZWRUaGlzKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxG
cmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBhdXRv
IGltcGxSZXN1bHQgPSBpbXBsLnRha2VOb2RlcygpOworICAgIGF1dG8gaW1wbFJlc3VsdCA9IGlt
cGwubWl4aW5SZXN1bHRGaWVsZE9wZXJhdGlvbigpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExTZXF1ZW5jZTxJRExJbnRlcmZhY2U8
Tm9kZT4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgp
LCBXVEZNb3ZlKGltcGxSZXN1bHQubm9kZXMpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvblRha2VO
b2RlcyhKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENvbmRpdGlvbmFsSW5j
bHVkZXNQcm90b3R5cGVGdW5jdGlvbk1peGluUmVzdWx0RmllbGRPcGVyYXRpb24oSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcz46OmNhbGw8anNU
ZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uTWl4aW5SZXN1bHRGaWVsZE9w
ZXJhdGlvbkJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAibWl4aW5SZXN1
bHRGaWVsZE9wZXJhdGlvbiIpOworfQorCisjZW5kaWYKKworI2lmIChFTkFCTEUoQ29uZGl0aW9u
MTIpICYmIEVOQUJMRShDb25kaXRpb24yMikgJiYgRU5BQkxFKENvbmRpdGlvbjMzKSkgfHwgRU5B
QkxFKENvbmRpdGlvbjIzKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvblBhcnRpYWxNaXhpbk9wZXJhdGlv
bkZyb21QYXJ0aWFsQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0
Q29uZGl0aW9uYWxJbmNsdWRlcz46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCit7CisgICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKKyAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKKyAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIHRocm93U2NvcGUucmVsZWFzZSgpOworICAgIGlt
cGwucGFydGlhbE1peGluT3BlcmF0aW9uRnJvbVBhcnRpYWwoKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvblBhcnRpYWxNaXhp
bk9wZXJhdGlvbkZyb21QYXJ0aWFsKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dENvbmRpdGlvbmFsSW5jbHVkZXM+OjpjYWxsPGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90
b3R5cGVGdW5jdGlvblRha2VOb2Rlc0JvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZy
YW1lLCAidGFrZU5vZGVzIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RDb25kaXRp
b25hbEluY2x1ZGVzPjo6Y2FsbDxqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVu
Y3Rpb25QYXJ0aWFsTWl4aW5PcGVyYXRpb25Gcm9tUGFydGlhbEJvZHk+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCAqY2FsbEZyYW1lLCAicGFydGlhbE1peGluT3BlcmF0aW9uRnJvbVBhcnRpYWwiKTsK
IH0KIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmgJ
KHJldmlzaW9uIDI2NjcyNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDE1
ICs2MCwxNSBAQCBwdWJsaWM6CiAKICAgICAvLyBDdXN0b20gYXR0cmlidXRlcwogI2lmIEVOQUJM
RShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIEpTQzo6SlNWYWx1ZSBp
bmNsdWRlc1N0cjMoSlNDOjpKU0dsb2JhbE9iamVjdCYpIGNvbnN0OworICAgIEpTQzo6SlNWYWx1
ZSBtaXhpbkN1c3RvbUF0dHJpYnV0ZShKU0M6OkpTR2xvYmFsT2JqZWN0JikgY29uc3Q7CiAjZW5k
aWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLSAgICB2
b2lkIHNldEluY2x1ZGVzU3RyMyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsK
KyAgICB2b2lkIHNldE1peGluQ3VzdG9tQXR0cmlidXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBK
U0M6OkpTVmFsdWUpOwogI2VuZGlmCiAKICAgICAvLyBDdXN0b20gZnVuY3Rpb25zCiAjaWYgKEVO
QUJMRShDb25kaXRpb24xMikgJiYgRU5BQkxFKENvbmRpdGlvbjIyKSkgfHwgRU5BQkxFKENvbmRp
dGlvbjIzKQotICAgIEpTQzo6SlNWYWx1ZSBpbmNsdWRlc01ldGhvZDMoSlNDOjpKU0dsb2JhbE9i
amVjdCYsIEpTQzo6Q2FsbEZyYW1lJik7CisgICAgSlNDOjpKU1ZhbHVlIG1peGluQ3VzdG9tT3Bl
cmF0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkNhbGxGcmFtZSYpOwogI2VuZGlmCiBw
cm90ZWN0ZWQ6CiAgICAgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyhKU0M6OlN0cnVjdHVyZSos
IEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RDb25kaXRpb25hbEluY2x1ZGVzPiYmKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmNsdWRl
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEluY2x1ZGVzLmNwcAkocmV2aXNpb24gMjY2NzI3KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluY2x1ZGVzLmNwcAkobm9uZXhpc3Rl
bnQpCkBAIC0xLDYgKzAsMCBAQAotLyoKLSAgICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGp1c3Qg
dG8gdGVsbCBidWlsZCBzY3JpcHRzIHRoYXQgSlNUZXN0SW5jbHVkZXMuaCBhbmQKLSAgICBKU1Rl
c3RJbmNsdWRlcy5jcHAgYXJlIGNyZWF0ZWQgZm9yIFRlc3RJbmNsdWRlcy5pZGwsIGFuZCB0aHVz
Ci0gICAgcHJldmVudCB0aGUgYnVpbGQgc2NyaXB0cyBmcm9tIHRyeWluZyB0byBnZW5lcmF0ZSBK
U1Rlc3RJbmNsdWRlcy5oIGFuZAotICAgIEpTVGVzdEluY2x1ZGVzLmNwcCBhdCBldmVyeSBidWls
ZC4gVGhpcyBmaWxlIG11c3Qgbm90IGJlIHRyaWVkIHRvIGNvbXBpbGUuCi0qLwpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluY2x1ZGVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEluY2x1ZGVzLmgJKHJldmlzaW9uIDI2NjcyNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmNsdWRlcy5oCShub25leGlzdGVudCkKQEAgLTEsNiAr
MCwwIEBACi0vKgotICAgIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQganVzdCB0byB0ZWxsIGJ1aWxk
IHNjcmlwdHMgdGhhdCBKU1Rlc3RJbmNsdWRlcy5oIGFuZAotICAgIEpTVGVzdEluY2x1ZGVzLmNw
cCBhcmUgY3JlYXRlZCBmb3IgVGVzdEluY2x1ZGVzLmlkbCwgYW5kIHRodXMKLSAgICBwcmV2ZW50
IHRoZSBidWlsZCBzY3JpcHRzIGZyb20gdHJ5aW5nIHRvIGdlbmVyYXRlIEpTVGVzdEluY2x1ZGVz
LmggYW5kCi0gICAgSlNUZXN0SW5jbHVkZXMuY3BwIGF0IGV2ZXJ5IGJ1aWxkLiBUaGlzIGZpbGUg
bXVzdCBub3QgYmUgdHJpZWQgdG8gY29tcGlsZS4KLSovCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNl
LmNwcAkocmV2aXNpb24gMjY2NzI3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDExICs1
NCwxMSBAQAogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogI2lmIEVOQUJMRShDb25kaXRpb24xMSkg
fHwgRU5BQkxFKENvbmRpdGlvbjEyKQotI2luY2x1ZGUgIkpTRE9NQ29udmVydE51bWJlcnMuaCIK
ICNpbmNsdWRlICJUZXN0U3VwcGxlbWVudGFsQnVpbHRpbnMuaCIKICNlbmRpZgogCiAjaWYgRU5B
QkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpIHx8IEVOQUJMRShDb25kaXRp
b24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorI2luY2x1ZGUgIkpTRE9NQ29udmVydE51bWJl
cnMuaCIKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTTm9kZS5o
IgogI2VuZGlmCkBAIC03NSwyMiArNzUsMjUgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIC8vIEZ1
bmN0aW9ucwogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMp
Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90
eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZDEoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2Fs
bEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJm
YWNlUHJvdG90eXBlRnVuY3Rpb25NaXhpbk9wZXJhdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpDYWxsRnJhbWUqKTsKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5B
QkxFKENvbmRpdGlvbjIzKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2QyKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uTWl4aW5Db21wbGV4T3BlcmF0aW9u
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2VuZGlmCiAjaWYgRU5B
QkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1KU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRl
c01ldGhvZDMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rp
b25NaXhpbkN1c3RvbU9wZXJhdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJh
bWUqKTsKICNlbmRpZgogI2lmIChFTkFCTEUoQ29uZGl0aW9uMTEpICYmIEVOQUJMRShDb25kaXRp
b24yMikpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkluY2x1ZGVzTWV0aG9kQ29u
ZGl0aW9uYWwoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rp
b25NaXhpbkNvbmRpdGlvbmFsT3BlcmF0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNh
bGxGcmFtZSopOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29u
ZGl0aW9uMjMpCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJm
YWNlUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZFNldHRpbmdzQ29uZGl0aW9uYWwoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25NaXhpblNldHRp
bmdzQ29uZGl0aW9uYWxPcGVyYXRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZy
YW1lKik7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRp
b24yMykKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQ
cm90b3R5cGVGdW5jdGlvblRha2VOb2RlcyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxs
RnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZh
Y2VQcm90b3R5cGVGdW5jdGlvbk1peGluUmVzdWx0RmllbGRPcGVyYXRpb24oSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CisjZW5kaWYKKyNpZiAoRU5BQkxFKENvbmRpdGlv
bjIyKSAmJiBFTkFCTEUoQ29uZGl0aW9uMzMpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVu
Y3Rpb25QYXJ0aWFsTWl4aW5PcGVyYXRpb25Gcm9tUGFydGlhbChKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwg
RU5BQkxFKENvbmRpdGlvbjEyKQogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMShKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKQEAgLTExNSwxOSArMTE4LDIyIEBAIEpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3QKIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIGJvb2wgc2V0SlNUZXN0SW50ZXJm
YWNlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxF
KENvbmRpdGlvbjIzKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbmNsdWRl
c1N0cjEoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJv
cGVydHlOYW1lKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlTWl4aW5SZWFk
T25seUF0dHJpYnV0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpQcm9wZXJ0eU5hbWUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMjMpCi1KU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUlu
Y2x1ZGVzU3RyMihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpQcm9wZXJ0eU5hbWUpOwotYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VJbmNsdWRlc1N0cjIoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFs
dWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VNaXhpbkF0dHJpYnV0ZShK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5h
bWUpOworYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VNaXhpbkF0dHJpYnV0ZShKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAjZW5k
aWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLUpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlSW5jbHVkZXNTdHIzKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1ib29sIHNl
dEpTVGVzdEludGVyZmFjZUluY2x1ZGVzU3RyMyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdEludGVyZmFjZU1peGluQ3VzdG9tQXR0cmlidXRlKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVz
dEludGVyZmFjZU1peGluQ3VzdG9tQXR0cmlidXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKICNlbmRpZgogI2lmIEVOQUJM
RShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RJbnRlcmZhY2VJbmNsdWRlc05vZGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLWJvb2wgc2V0SlNUZXN0SW50ZXJm
YWNlSW5jbHVkZXNOb2RlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJm
YWNlTWl4aW5Ob2RlQXR0cmlidXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdEludGVyZmFjZU1peGlu
Tm9kZUF0dHJpYnV0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSk7CisjZW5kaWYKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8
IEVOQUJMRShDb25kaXRpb24yMykKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNl
UGFydGlhbE1peGluQXR0cmlidXRlRnJvbVBhcnRpYWwoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKICNlbmRpZgogI2lmIEVOQUJM
RShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvclN1cHBsZW1lbnRhbFN0YXRpY1JlYWRPbmx5QXR0
cihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0
eU5hbWUpOwpAQCAtMTk1LDEyICsyMDEsMTcgQEAgdXNpbmcgSlNUZXN0SW50ZXJmYWNlQ29uc3Ry
dWN0b3IgPSBKU0RPTQogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEludGVyZmFj
ZUNvbnN0cnVjdG9yVGFibGVWYWx1ZXNbXSA9CiB7CiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8
fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgeyAiSU5DTFVERVNfQ09OU1RBTlQxIiwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2VyLCBOb0ludHJp
bnNpYywgeyAobG9uZyBsb25nKSgxKSB9IH0sCisgICAgeyAiTUlYSU5fQ09OU1RBTlQiLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIsIE5vSW50
cmluc2ljLCB7IChsb25nIGxvbmcpKDEpIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJp
bnNpYywgeyAwLCAwIH0gfSwKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5B
QkxFKENvbmRpdGlvbjIzKQotICAgIHsgIklOQ0xVREVTX0NPTlNUQU5UMiIsIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdlciwgTm9JbnRyaW5zaWMs
IHsgKGxvbmcgbG9uZykoMikgfSB9LAorICAgIHsgIk1JWElOX1JFRkxFQ1RFRF9DT05TVEFOVCIs
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdlciwg
Tm9JbnRyaW5zaWMsIHsgKGxvbmcgbG9uZykoMikgfSB9LAorI2Vsc2UKKyAgICB7IDAsIDAsIE5v
SW50cmluc2ljLCB7IDAsIDAgfSB9LAorI2VuZGlmCisjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8
fCBFTkFCTEUoQ29uZGl0aW9uMjMpCisgICAgeyAiUEFSVElBTF9NSVhJTl9DT05TVEFOVF9GUk9N
X1BBUlRJQUwiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFu
dEludGVnZXIsIE5vSW50cmluc2ljLCB7IChsb25nIGxvbmcpKDUpIH0gfSwKICNlbHNlCiAgICAg
eyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKICNlbmRpZgpAQCAtMjMyLDExICsyNDMs
MTQgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEludGVyZgogfTsKIAogI2lm
IEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotc3RhdGljX2Fzc2Vy
dChUZXN0SW50ZXJmYWNlOjpJTkNMVURFU19DT05TVEFOVDEgPT0gMSwgIklOQ0xVREVTX0NPTlNU
QU5UMSBpbiBUZXN0SW50ZXJmYWNlIGRvZXMgbm90IG1hdGNoIHZhbHVlIGZyb20gSURMIik7Citz
dGF0aWNfYXNzZXJ0KFRlc3RJbnRlcmZhY2U6Ok1JWElOX0NPTlNUQU5UID09IDEsICJNSVhJTl9D
T05TVEFOVCBpbiBUZXN0SW50ZXJmYWNlIGRvZXMgbm90IG1hdGNoIHZhbHVlIGZyb20gSURMIik7
CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykK
IHN0YXRpY19hc3NlcnQoVGVzdEludGVyZmFjZTo6Q09OU1RfSU1QTCA9PSAyLCAiQ09OU1RfSU1Q
TCBpbiBUZXN0SW50ZXJmYWNlIGRvZXMgbm90IG1hdGNoIHZhbHVlIGZyb20gSURMIik7CiAjZW5k
aWYKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKK3N0YXRp
Y19hc3NlcnQoVGVzdEludGVyZmFjZTo6UEFSVElBTF9NSVhJTl9DT05TVEFOVF9GUk9NX1BBUlRJ
QUwgPT0gNSwgIlBBUlRJQUxfTUlYSU5fQ09OU1RBTlRfRlJPTV9QQVJUSUFMIGluIFRlc3RJbnRl
cmZhY2UgZG9lcyBub3QgbWF0Y2ggdmFsdWUgZnJvbSBJREwiKTsKKyNlbmRpZgogI2lmIEVOQUJM
RShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogc3RhdGljX2Fzc2VydChUZXN0
U3VwcGxlbWVudGFsOjpTVVBQTEVNRU5UQUxDT05TVEFOVDEgPT0gMSwgIlNVUFBMRU1FTlRBTENP
TlNUQU5UMSBpbiBUZXN0U3VwcGxlbWVudGFsIGRvZXMgbm90IG1hdGNoIHZhbHVlIGZyb20gSURM
Iik7CiAjZW5kaWYKQEAgLTI5MywyMiArMzA3LDI3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVW
YWx1ZSBKU1Rlc3RJbnRlcmYKIHsKICAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0
SW50ZXJmYWNlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvcikgfSB9LAog
I2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIHsgImlu
Y2x1ZGVzU3RyMSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RJbnRlcmZh
Y2VJbmNsdWRlc1N0cjEpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPigwKSB9IH0sCisgICAgeyAibWl4aW5SZWFkT25seUF0dHJpYnV0ZSIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RJbnRlcmZhY2VNaXhpblJlYWRPbmx5
QXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oMCkgfSB9LAogI2Vsc2UKICAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAg
fSB9LAogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MjMpCi0gICAgeyAiaW5jbHVkZXNTdHIyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RJbnRlcmZhY2VJbmNsdWRlc1N0cjIpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rl
c3RJbnRlcmZhY2VJbmNsdWRlc1N0cjIpIH0gfSwKKyAgICB7ICJtaXhpbkF0dHJpYnV0ZSIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0
SW50ZXJmYWNlTWl4aW5BdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RJbnRlcmZhY2VNaXhpbkF0dHJpYnV0ZSkg
fSB9LAogI2Vsc2UKICAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAogI2VuZGlm
CiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgeyAi
aW5jbHVkZXNTdHIzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc1Rlc3RJbnRlcmZhY2VJbmNsdWRlc1N0cjMpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RJbnRlcmZhY2VJ
bmNsdWRlc1N0cjMpIH0gfSwKKyAgICB7ICJtaXhpbkN1c3RvbUF0dHJpYnV0ZSIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0SW50ZXJm
YWNlTWl4aW5DdXN0b21BdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RJbnRlcmZhY2VNaXhpbkN1c3RvbUF0dHJp
YnV0ZSkgfSB9LAogI2Vsc2UKICAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAog
I2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0g
ICAgeyAiaW5jbHVkZXNOb2RlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RJbnRlcmZhY2VJbmNsdWRlc05vZGUpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RJbnRl
cmZhY2VJbmNsdWRlc05vZGUpIH0gfSwKKyAgICB7ICJtaXhpbk5vZGVBdHRyaWJ1dGUiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdElu
dGVyZmFjZU1peGluTm9kZUF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEludGVyZmFjZU1peGluTm9kZUF0dHJp
YnV0ZSkgfSB9LAorI2Vsc2UKKyAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAor
I2VuZGlmCisjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCisg
ICAgeyAicGFydGlhbE1peGluQXR0cmlidXRlRnJvbVBhcnRpYWwiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0SW50ZXJmYWNlUGFydGlhbE1peGluQXR0cmlidXRlRnJvbVBh
cnRpYWwpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPigwKSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0s
CiAjZW5kaWYKQEAgLTM0MywzMiArMzYyLDM3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1
ZSBKU1Rlc3RJbnRlcmYKICAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAogI2Vu
ZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0gICAg
eyAiaW5jbHVkZXNNZXRob2QxIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkluY2x1
ZGVzTWV0aG9kMSksIChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICJtaXhpbk9wZXJhdGlvbiIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4o
anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25NaXhpbk9wZXJhdGlvbiksIChpbnRwdHJf
dCkgKDApIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwK
ICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQot
ICAgIHsgImluY2x1ZGVzTWV0aG9kMiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25J
bmNsdWRlc01ldGhvZDIpLCAoaW50cHRyX3QpICgyKSB9IH0sCisgICAgeyAibWl4aW5Db21wbGV4
T3BlcmF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2
ZUZ1bmN0aW9uPihqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbk1peGluQ29tcGxleE9w
ZXJhdGlvbiksIChpbnRwdHJfdCkgKDIpIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJp
bnNpYywgeyAwLCAwIH0gfSwKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5B
QkxFKENvbmRpdGlvbjIzKQotICAgIHsgImluY2x1ZGVzTWV0aG9kMyIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0SW50ZXJmYWNl
UHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZDMpLCAoaW50cHRyX3QpICgwKSB9IH0sCisg
ICAgeyAibWl4aW5DdXN0b21PcGVyYXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0
aW9uTWl4aW5DdXN0b21PcGVyYXRpb24pLCAoaW50cHRyX3QpICgwKSB9IH0sCiAjZWxzZQogICAg
IHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYKICNpZiAoRU5BQkxFKENv
bmRpdGlvbjExKSAmJiBFTkFCTEUoQ29uZGl0aW9uMjIpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMp
Ci0gICAgeyAiaW5jbHVkZXNNZXRob2RDb25kaXRpb25hbCIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0SW50ZXJmYWNlUHJvdG90
eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZENvbmRpdGlvbmFsKSwgKGludHB0cl90KSAoMCkgfSB9
LAorICAgIHsgIm1peGluQ29uZGl0aW9uYWxPcGVyYXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdEludGVyZmFjZVByb3Rv
dHlwZUZ1bmN0aW9uTWl4aW5Db25kaXRpb25hbE9wZXJhdGlvbiksIChpbnRwdHJfdCkgKDApIH0g
fSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKICNlbmRpZgog
I2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIHsgImlu
Y2x1ZGVzTWV0aG9kU2V0dGluZ3NDb25kaXRpb25hbCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0SW50ZXJmYWNlUHJvdG90eXBl
RnVuY3Rpb25JbmNsdWRlc01ldGhvZFNldHRpbmdzQ29uZGl0aW9uYWwpLCAoaW50cHRyX3QpICgw
KSB9IH0sCisgICAgeyAibWl4aW5TZXR0aW5nc0NvbmRpdGlvbmFsT3BlcmF0aW9uIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RJ
bnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbk1peGluU2V0dGluZ3NDb25kaXRpb25hbE9wZXJhdGlv
biksIChpbnRwdHJfdCkgKDApIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywg
eyAwLCAwIH0gfSwKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENv
bmRpdGlvbjIzKQotICAgIHsgInRha2VOb2RlcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVu
Y3Rpb25UYWtlTm9kZXMpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAibWl4aW5SZXN1bHRG
aWVsZE9wZXJhdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdO
YXRpdmVGdW5jdGlvbj4oanNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25NaXhpblJlc3Vs
dEZpZWxkT3BlcmF0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LAorI2Vsc2UKKyAgICB7IDAsIDAs
IE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAorI2VuZGlmCisjaWYgKEVOQUJMRShDb25kaXRpb24y
MikgJiYgRU5BQkxFKENvbmRpdGlvbjMzKSkgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorICAgIHsg
InBhcnRpYWxNaXhpbk9wZXJhdGlvbkZyb21QYXJ0aWFsIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RJbnRlcmZhY2VQcm90b3R5
cGVGdW5jdGlvblBhcnRpYWxNaXhpbk9wZXJhdGlvbkZyb21QYXJ0aWFsKSwgKGludHB0cl90KSAo
MCkgfSB9LAogI2Vsc2UKICAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAogI2Vu
ZGlmCkBAIC0zOTcsMTIgKzQyMSwxNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNU
ZXN0SW50ZXJmCiAgICAgeyAidmFsdWVzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlv
blZhbHVlcyksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJmb3JFYWNoIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RJbnRl
cmZhY2VQcm90b3R5cGVGdW5jdGlvbkZvckVhY2gpLCAoaW50cHRyX3QpICgxKSB9IH0sCiAjaWYg
RU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgeyAiSU5DTFVE
RVNfQ09OU1RBTlQxIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29u
c3RhbnRJbnRlZ2VyLCBOb0ludHJpbnNpYywgeyAobG9uZyBsb25nKSgxKSB9IH0sCisgICAgeyAi
TUlYSU5fQ09OU1RBTlQiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
b25zdGFudEludGVnZXIsIE5vSW50cmluc2ljLCB7IChsb25nIGxvbmcpKDEpIH0gfSwKKyNlbHNl
CisgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKKyNlbmRpZgorI2lmIEVOQUJM
RShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorICAgIHsgIk1JWElOX1JFRkxF
Q1RFRF9DT05TVEFOVCIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNv
bnN0YW50SW50ZWdlciwgTm9JbnRyaW5zaWMsIHsgKGxvbmcgbG9uZykoMikgfSB9LAogI2Vsc2UK
ICAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAogI2VuZGlmCiAjaWYgRU5BQkxF
KENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgeyAiSU5DTFVERVNfQ09O
U1RBTlQyIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJ
bnRlZ2VyLCBOb0ludHJpbnNpYywgeyAobG9uZyBsb25nKSgyKSB9IH0sCisgICAgeyAiUEFSVElB
TF9NSVhJTl9DT05TVEFOVF9GUk9NX1BBUlRJQUwiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIsIE5vSW50cmluc2ljLCB7IChsb25nIGxvbmcp
KDUpIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKICNl
bmRpZgpAQCAtNDI4LDcgKzQ1Nyw3IEBAIHZvaWQgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlOjpm
aW5pc2hDcmUKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykK
ICAgICBpZiAoIWRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihn
bG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkudGVz
dFNldHRpbmdFbmFibGVkKCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGll
cyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJpbmNsdWRlc01ldGhvZFNl
dHRpbmdzQ29uZGl0aW9uYWwiKSwgc3RybGVuKCJpbmNsdWRlc01ldGhvZFNldHRpbmdzQ29uZGl0
aW9uYWwiKSk7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJtaXhpblNldHRpbmdzQ29u
ZGl0aW9uYWxPcGVyYXRpb24iKSwgc3RybGVuKCJtaXhpblNldHRpbmdzQ29uZGl0aW9uYWxPcGVy
YXRpb24iKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwg
Vk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAgICAgICAgRGVs
ZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0
aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKQEAgLTUxMSwzOSArNTQw
LDM5IEBAIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IoSlNHbG8KIH0KIAogI2lm
IEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUluY2x1ZGVzU3RyMUdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0SW50ZXJmYWNlJiB0aGlzT2JqZWN0KQorc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEludGVyZmFjZU1peGluUmVhZE9ubHlBdHRyaWJ1dGVH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEludGVyZmFj
ZSYgdGhpc09iamVjdCkKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmluY2x1ZGVzU3RyMSgpKSkpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwubWl4aW5SZWFkT25seUF0dHJpYnV0ZSgpKSkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbmNsdWRlc1N0cjEoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlTWl4aW5SZWFkT25seUF0dHJpYnV0
ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RJ
bnRlcmZhY2U+OjpnZXQ8anNUZXN0SW50ZXJmYWNlSW5jbHVkZXNTdHIxR2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAiaW5jbHVkZXNTdHIxIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RJbnRlcmZh
Y2U+OjpnZXQ8anNUZXN0SW50ZXJmYWNlTWl4aW5SZWFkT25seUF0dHJpYnV0ZUdldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgIm1peGluUmVhZE9ubHlBdHRyaWJ1dGUiKTsKIH0KIAogI2VuZGlmCiAKICNpZiBFTkFC
TEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLXN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbmNsdWRlc1N0cjJHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEludGVyZmFjZSYgdGhpc09iamVjdCkKK3N0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VNaXhpbkF0dHJpYnV0ZUdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0SW50ZXJmYWNlJiB0aGlzT2JqZWN0
KQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuaW5jbHVkZXNTdHIyKCkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETERPTVN0cmluZz4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5taXhpbkF0dHJpYnV0ZSgpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJ
bnRlcmZhY2VJbmNsdWRlc1N0cjIoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUg
anNUZXN0SW50ZXJmYWNlTWl4aW5BdHRyaWJ1dGUoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0SW50ZXJmYWNlPjo6Z2V0PGpzVGVzdEludGVyZmFj
ZUluY2x1ZGVzU3RyMkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImluY2x1ZGVzU3RyMiIpOworICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNUZXN0SW50ZXJmYWNlPjo6Z2V0PGpzVGVzdEludGVyZmFjZU1peGlu
QXR0cmlidXRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAibWl4aW5BdHRyaWJ1dGUiKTsKIH0KIAogI2VuZGlm
CiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLXN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VJbmNsdWRlc1N0cjJTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEludGVyZmFjZSYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VN
aXhpbkF0dHJpYnV0ZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNUZXN0SW50ZXJmYWNlJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC01NTEsODAgKzU4MCw5NiBAQCBzdGF0
aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlSW5jCiAgICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7Ci0gICAg
ICAgIHJldHVybiBpbXBsLnNldEluY2x1ZGVzU3RyMihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7Cisg
ICAgICAgIHJldHVybiBpbXBsLnNldE1peGluQXR0cmlidXRlKFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBzZXRKU1Rlc3RJbnRlcmZh
Y2VJbmNsdWRlc1N0cjIoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBz
ZXRKU1Rlc3RJbnRlcmZhY2VNaXhpbkF0dHJpYnV0ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCiB7Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RJbnRlcmZhY2U+Ojpz
ZXQ8c2V0SlNUZXN0SW50ZXJmYWNlSW5jbHVkZXNTdHIyU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJpbmNsdWRlc1N0cjIiKTsKKyAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTVGVzdEludGVyZmFjZT46OnNldDxzZXRKU1Rlc3RJbnRlcmZhY2VN
aXhpbkF0dHJpYnV0ZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAibWl4aW5BdHRyaWJ1dGUiKTsKIH0KIAogI2VuZGlmCiAKICNpZiBFTkFCTEUo
Q29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLXN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc1Rlc3RJbnRlcmZhY2VJbmNsdWRlc1N0cjNHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTVGVzdEludGVyZmFjZSYgdGhpc09iamVjdCkKK3N0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VNaXhpbkN1c3RvbUF0dHJpYnV0ZUdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0SW50ZXJmYWNlJiB0aGlzT2Jq
ZWN0KQogewogICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICByZXR1
cm4gdGhpc09iamVjdC5pbmNsdWRlc1N0cjMobGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgcmV0
dXJuIHRoaXNPYmplY3QubWl4aW5DdXN0b21BdHRyaWJ1dGUobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUluY2x1ZGVzU3RyMyhKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VNaXhpbkN1c3RvbUF0
dHJpYnV0ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U1Rlc3RJbnRlcmZhY2U+OjpnZXQ8anNUZXN0SW50ZXJmYWNlSW5jbHVkZXNTdHIzR2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAiaW5jbHVkZXNTdHIzIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RJ
bnRlcmZhY2U+OjpnZXQ8anNUZXN0SW50ZXJmYWNlTWl4aW5DdXN0b21BdHRyaWJ1dGVHZXR0ZXIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsICJtaXhpbkN1c3RvbUF0dHJpYnV0ZSIpOwogfQogCiAjZW5kaWYKIAogI2lmIEVO
QUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotc3RhdGljIGlubGluZSBi
b29sIHNldEpTVGVzdEludGVyZmFjZUluY2x1ZGVzU3RyM1NldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0SW50ZXJmYWNlJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQorc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdEludGVyZmFjZU1peGluQ3VzdG9t
QXR0cmlidXRlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rl
c3RJbnRlcmZhY2UmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICB0aGlzT2JqZWN0LnNldElu
Y2x1ZGVzU3RyMyhsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CisgICAgdGhpc09iamVjdC5z
ZXRNaXhpbkN1c3RvbUF0dHJpYnV0ZShsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlSW5jbHVkZXNTdHIzKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0SW50ZXJmYWNl
TWl4aW5DdXN0b21BdHRyaWJ1dGUoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQog
ewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0SW50ZXJmYWNlPjo6c2V0PHNldEpTVGVz
dEludGVyZmFjZUluY2x1ZGVzU3RyM1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAiaW5jbHVkZXNTdHIzIik7CisgICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU1Rlc3RJbnRlcmZhY2U+OjpzZXQ8c2V0SlNUZXN0SW50ZXJmYWNlTWl4aW5DdXN0b21B
dHRyaWJ1dGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgIm1peGluQ3VzdG9tQXR0cmlidXRlIik7CiB9CiAKICNlbmRpZgogCiAjaWYgRU5BQkxF
KENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1zdGF0aWMgaW5saW5lIEpTVmFs
dWUganNUZXN0SW50ZXJmYWNlSW5jbHVkZXNOb2RlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RJbnRlcmZhY2UmIHRoaXNPYmplY3QpCitzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNUZXN0SW50ZXJmYWNlTWl4aW5Ob2RlQXR0cmlidXRlR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RJbnRlcmZhY2UmIHRoaXNPYmpl
Y3QpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETEludGVyZmFjZTxOb2RlPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
KnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwuaW5jbHVkZXNOb2Rl
KCkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETEludGVy
ZmFjZTxOb2RlPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0
KCksIHRocm93U2NvcGUsIGltcGwubWl4aW5Ob2RlQXR0cmlidXRlKCkpKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUluY2x1ZGVzTm9kZShKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
CitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VNaXhpbk5vZGVBdHRyaWJ1dGUoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0SW50ZXJmYWNl
Pjo6Z2V0PGpzVGVzdEludGVyZmFjZUluY2x1ZGVzTm9kZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImluY2x1
ZGVzTm9kZSIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0SW50ZXJmYWNlPjo6Z2V0
PGpzVGVzdEludGVyZmFjZU1peGluTm9kZUF0dHJpYnV0ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIm1peGlu
Tm9kZUF0dHJpYnV0ZSIpOwogfQogCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDb25kaXRpb24yMikg
fHwgRU5BQkxFKENvbmRpdGlvbjIzKQotc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdEludGVy
ZmFjZUluY2x1ZGVzTm9kZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNUZXN0SW50ZXJmYWNlJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQorc3RhdGljIGlu
bGluZSBib29sIHNldEpTVGVzdEludGVyZmFjZU1peGluTm9kZUF0dHJpYnV0ZVNldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0SW50ZXJmYWNlJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETEludGVyZmFjZTxOb2RlPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdmFsdWUsIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IobGV4aWNh
bEdsb2JhbE9iamVjdCwgc2NvcGUsICJUZXN0SW50ZXJmYWNlIiwgImluY2x1ZGVzTm9kZSIsICJO
b2RlIik7IH0pOworICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETEludGVyZmFjZTxO
b2RlPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIFtdKEpTQzo6SlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBdHRy
aWJ1dGVUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsICJUZXN0SW50ZXJmYWNl
IiwgIm1peGluTm9kZUF0dHJpYnV0ZSIsICJOb2RlIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewotICAgICAgICByZXR1cm4gaW1wbC5z
ZXRJbmNsdWRlc05vZGUoKm5hdGl2ZVZhbHVlKTsKKyAgICAgICAgcmV0dXJuIGltcGwuc2V0TWl4
aW5Ob2RlQXR0cmlidXRlKCpuYXRpdmVWYWx1ZSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlSW5jbHVkZXNOb2RlKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0SW50ZXJmYWNlTWl4aW5Ob2RlQXR0
cmlidXRlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTVGVzdEludGVyZmFjZT46OnNldDxzZXRKU1Rlc3RJbnRlcmZhY2VJbmNs
dWRlc05vZGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgImluY2x1ZGVzTm9kZSIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0SW50
ZXJmYWNlPjo6c2V0PHNldEpTVGVzdEludGVyZmFjZU1peGluTm9kZUF0dHJpYnV0ZVNldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAibWl4aW5Ob2Rl
QXR0cmlidXRlIik7Cit9CisKKyNlbmRpZgorCisjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMjMpCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0SW50ZXJmYWNl
UGFydGlhbE1peGluQXR0cmlidXRlRnJvbVBhcnRpYWxHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEludGVyZmFjZSYgdGhpc09iamVjdCkKK3sKKyAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRv
SlM8SURMRG91YmxlPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLnBhcnRp
YWxNaXhpbkF0dHJpYnV0ZUZyb21QYXJ0aWFsKCkpKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIGpz
VGVzdEludGVyZmFjZVBhcnRpYWxNaXhpbkF0dHJpYnV0ZUZyb21QYXJ0aWFsKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEludGVyZmFjZT46Omdl
dDxqc1Rlc3RJbnRlcmZhY2VQYXJ0aWFsTWl4aW5BdHRyaWJ1dGVGcm9tUGFydGlhbEdldHRlciwg
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgInBhcnRpYWxNaXhpbkF0dHJpYnV0ZUZyb21QYXJ0aWFsIik7CiB9CiAKICNlbmRp
ZgpAQCAtODM2LDcgKzg4MSw3IEBAIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlUmVmbGVjdEF0dHJp
YnV0ZSgKICNlbmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0
aW9uMjMpCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNl
UHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZDFCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1l
IElETE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlz
KQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVByb3Rv
dHlwZUZ1bmN0aW9uTWl4aW5PcGVyYXRpb25Cb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9w
ZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQogewog
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTg0NCwxOSArODg5LDE5
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURf
UEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwuaW5jbHVkZXNNZXRob2QxKCk7
CisgICAgaW1wbC5taXhpbk9wZXJhdGlvbigpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZDEoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbk1peGluT3Bl
cmF0aW9uKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46OmNh
bGw8anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZDFCb2R5Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgImluY2x1ZGVzTWV0aG9kMSIpOworICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Y2FsbDxqc1Rlc3RJbnRlcmZh
Y2VQcm90b3R5cGVGdW5jdGlvbk1peGluT3BlcmF0aW9uQm9keT4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsICpjYWxsRnJhbWUsICJtaXhpbk9wZXJhdGlvbiIpOwogfQogCiAjZW5kaWYKIAogI2lmIEVO
QUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW5jbHVk
ZXNNZXRob2QyQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0SW50
ZXJmYWNlPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKK3N0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbk1peGluQ29tcGxl
eE9wZXJhdGlvbkJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdElu
dGVyZmFjZT46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCiB7CiAgICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtODcyLDM3ICs5MTcsMzcgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8gc3RyQXJnID0gY29udmVydDxJ
RExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAg
ICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQxID0gY2FsbEZyYW1lLT51bmNoZWNrZWRB
cmd1bWVudCgxKTsKLSAgICBhdXRvIG9iakFyZyA9IGNvbnZlcnQ8SURMSW50ZXJmYWNlPFRlc3RP
Ymo+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCksIFtdKEpTQzo6SlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUp
IHsgdGhyb3dBcmd1bWVudFR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMSwg
Im9iakFyZyIsICJUZXN0SW50ZXJmYWNlIiwgImluY2x1ZGVzTWV0aG9kMiIsICJUZXN0T2JqIik7
IH0pOworICAgIGF1dG8gb2JqQXJnID0gY29udmVydDxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJv
d0FyZ3VtZW50VHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAxLCAib2JqQXJn
IiwgIlRlc3RJbnRlcmZhY2UiLCAibWl4aW5Db21wbGV4T3BlcmF0aW9uIiwgIlRlc3RPYmoiKTsg
fSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRo
aXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLmluY2x1ZGVzTWV0aG9kMigqY29u
dGV4dCwgV1RGTW92ZShzdHJBcmcpLCAqb2JqQXJnKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJv
d1Njb3BlLCBpbXBsLm1peGluQ29tcGxleE9wZXJhdGlvbigqY29udGV4dCwgV1RGTW92ZShzdHJB
cmcpLCAqb2JqQXJnKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkluY2x1ZGVzTWV0aG9kMihKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uTWl4aW5D
b21wbGV4T3BlcmF0aW9uKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEludGVy
ZmFjZT46OmNhbGw8anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhv
ZDJCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgImluY2x1ZGVzTWV0aG9k
MiIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Y2FsbDxqc1Rl
c3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbk1peGluQ29tcGxleE9wZXJhdGlvbkJvZHk+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAibWl4aW5Db21wbGV4T3BlcmF0aW9uIik7
CiB9CiAKICNlbmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0
aW9uMjMpCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNl
UHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZDNCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1l
IElETE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlz
KQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVByb3Rv
dHlwZUZ1bmN0aW9uTWl4aW5DdXN0b21PcGVyYXRpb25Cb2R5KEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1l
IElETE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlz
KQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7Ci0gICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIChKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+
aW5jbHVkZXNNZXRob2QzKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lKSkpKTsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKEpTVmFsdWU6OmVuY29kZShjYXN0ZWRU
aGlzLT5taXhpbkN1c3RvbU9wZXJhdGlvbigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFt
ZSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNl
UHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZDMoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbk1peGluQ3VzdG9tT3BlcmF0
aW9uKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46OmNhbGw8
anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZDNCb2R5PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgImluY2x1ZGVzTWV0aG9kMyIpOworICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Y2FsbDxqc1Rlc3RJbnRlcmZhY2VQ
cm90b3R5cGVGdW5jdGlvbk1peGluQ3VzdG9tT3BlcmF0aW9uQm9keT4oKmxleGljYWxHbG9iYWxP
YmplY3QsICpjYWxsRnJhbWUsICJtaXhpbkN1c3RvbU9wZXJhdGlvbiIpOwogfQogCiAjZW5kaWYK
IAogI2lmIChFTkFCTEUoQ29uZGl0aW9uMTEpICYmIEVOQUJMRShDb25kaXRpb24yMikpIHx8IEVO
QUJMRShDb25kaXRpb24yMykKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkluY2x1ZGVzTWV0aG9kQ29uZGl0aW9uYWxCb2R5
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1l
KiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+OjpDbGFz
c1BhcmFtZXRlciBjYXN0ZWRUaGlzKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uTWl4aW5Db25kaXRpb25hbE9wZXJhdGlv
bkJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46
OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwpAQCAtOTEwLDE5ICs5NTUsMTkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgdGhyb3dTY29wZS5yZWxlYXNl
KCk7Ci0gICAgaW1wbC5pbmNsdWRlc01ldGhvZENvbmRpdGlvbmFsKCk7CisgICAgaW1wbC5taXhp
bkNvbmRpdGlvbmFsT3BlcmF0aW9uKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRl
cmZhY2VQcm90b3R5cGVGdW5jdGlvbkluY2x1ZGVzTWV0aG9kQ29uZGl0aW9uYWwoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbk1p
eGluQ29uZGl0aW9uYWxPcGVyYXRpb24oSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNU
ZXN0SW50ZXJmYWNlPjo6Y2FsbDxqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkluY2x1
ZGVzTWV0aG9kQ29uZGl0aW9uYWxCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFt
ZSwgImluY2x1ZGVzTWV0aG9kQ29uZGl0aW9uYWwiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTVGVzdEludGVyZmFjZT46OmNhbGw8anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25N
aXhpbkNvbmRpdGlvbmFsT3BlcmF0aW9uQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxs
RnJhbWUsICJtaXhpbkNvbmRpdGlvbmFsT3BlcmF0aW9uIik7CiB9CiAKICNlbmRpZgogCiAjaWYg
RU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1zdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbmNs
dWRlc01ldGhvZFNldHRpbmdzQ29uZGl0aW9uYWxCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElE
TE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQor
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVByb3RvdHlw
ZUZ1bmN0aW9uTWl4aW5TZXR0aW5nc0NvbmRpdGlvbmFsT3BlcmF0aW9uQm9keShKU0M6OkpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1l
LCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Q2xhc3NQYXJhbWV0ZXIg
Y2FzdGVkVGhpcykKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBA
IC05MzAsMzIgKzk3NSw1MiBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLmlu
Y2x1ZGVzTWV0aG9kU2V0dGluZ3NDb25kaXRpb25hbCgpOworICAgIGltcGwubWl4aW5TZXR0aW5n
c0NvbmRpdGlvbmFsT3BlcmF0aW9uKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRl
cmZhY2VQcm90b3R5cGVGdW5jdGlvbkluY2x1ZGVzTWV0aG9kU2V0dGluZ3NDb25kaXRpb25hbChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1
bmN0aW9uTWl4aW5TZXR0aW5nc0NvbmRpdGlvbmFsT3BlcmF0aW9uKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46OmNhbGw8anNUZXN0SW50ZXJmYWNlUHJvdG90
eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZFNldHRpbmdzQ29uZGl0aW9uYWxCb2R5PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgImluY2x1ZGVzTWV0aG9kU2V0dGluZ3NDb25kaXRp
b25hbCIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Y2FsbDxq
c1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbk1peGluU2V0dGluZ3NDb25kaXRpb25hbE9w
ZXJhdGlvbkJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAibWl4aW5TZXR0
aW5nc0NvbmRpdGlvbmFsT3BlcmF0aW9uIik7CiB9CiAKICNlbmRpZgogCiAjaWYgRU5BQkxFKENv
bmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25UYWtlTm9kZXNCb2R5
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1l
KiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+OjpDbGFz
c1BhcmFtZXRlciBjYXN0ZWRUaGlzKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uTWl4aW5SZXN1bHRGaWVsZE9wZXJhdGlv
bkJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46
OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURf
UEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwotICAgIGF1dG8gaW1wbFJlc3VsdCA9IGltcGwudGFrZU5vZGVzKCk7CisgICAgYXV0byBpbXBs
UmVzdWx0ID0gaW1wbC5taXhpblJlc3VsdEZpZWxkT3BlcmF0aW9uKCk7CiAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFNlcXVlbmNlPElE
TEludGVyZmFjZTxOb2RlPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xv
YmFsT2JqZWN0KCksIFdURk1vdmUoaW1wbFJlc3VsdC5ub2RlcykpKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25UYWtl
Tm9kZXMoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90
b3R5cGVGdW5jdGlvbk1peGluUmVzdWx0RmllbGRPcGVyYXRpb24oSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Y2FsbDxqc1Rlc3RJbnRlcmZhY2VQcm90b3R5
cGVGdW5jdGlvbk1peGluUmVzdWx0RmllbGRPcGVyYXRpb25Cb2R5PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgKmNhbGxGcmFtZSwgIm1peGluUmVzdWx0RmllbGRPcGVyYXRpb24iKTsKK30KKworI2Vu
ZGlmCisKKyNpZiAoRU5BQkxFKENvbmRpdGlvbjIyKSAmJiBFTkFCTEUoQ29uZGl0aW9uMzMpKSB8
fCBFTkFCTEUoQ29uZGl0aW9uMjMpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25QYXJ0aWFsTWl4aW5PcGVyYXRpb25Gcm9t
UGFydGlhbEJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
OjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdEludGVy
ZmFjZT46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCit7CisgICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBV
TlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOworICAgIHRocm93U2NvcGUucmVsZWFzZSgpOworICAgIGltcGwucGFydGlhbE1peGlu
T3BlcmF0aW9uRnJvbVBhcnRpYWwoKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVy
ZmFjZVByb3RvdHlwZUZ1bmN0aW9uUGFydGlhbE1peGluT3BlcmF0aW9uRnJvbVBhcnRpYWwoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Y2FsbDxqc1Rlc3RJ
bnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblRha2VOb2Rlc0JvZHk+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCAqY2FsbEZyYW1lLCAidGFrZU5vZGVzIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxK
U1Rlc3RJbnRlcmZhY2U+OjpjYWxsPGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uUGFy
dGlhbE1peGluT3BlcmF0aW9uRnJvbVBhcnRpYWxCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
KmNhbGxGcmFtZSwgInBhcnRpYWxNaXhpbk9wZXJhdGlvbkZyb21QYXJ0aWFsIik7CiB9CiAKICNl
bmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEludGVyZmFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaAkocmV2aXNpb24gMjY2NzI3KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NCwxMCArNjQsMTAgQEAgcHVibGljOgogCiAgICAgLy8gQ3VzdG9tIGF0
dHJpYnV0ZXMKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykK
LSAgICBKU0M6OkpTVmFsdWUgaW5jbHVkZXNTdHIzKEpTQzo6SlNHbG9iYWxPYmplY3QmKSBjb25z
dDsKKyAgICBKU0M6OkpTVmFsdWUgbWl4aW5DdXN0b21BdHRyaWJ1dGUoSlNDOjpKU0dsb2JhbE9i
amVjdCYpIGNvbnN0OwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUo
Q29uZGl0aW9uMjMpCi0gICAgdm9pZCBzZXRJbmNsdWRlc1N0cjMoSlNDOjpKU0dsb2JhbE9iamVj
dCYsIEpTQzo6SlNWYWx1ZSk7CisgICAgdm9pZCBzZXRNaXhpbkN1c3RvbUF0dHJpYnV0ZShKU0M6
OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsKICNlbmRpZgogI2lmIEVOQUJMRShDb25k
aXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogICAgIEpTQzo6SlNWYWx1ZSBzdXBwbGVt
ZW50YWxTdHIzKEpTQzo6SlNHbG9iYWxPYmplY3QmKSBjb25zdDsKQEAgLTc4LDcgKzc4LDcgQEAg
cHVibGljOgogCiAgICAgLy8gQ3VzdG9tIGZ1bmN0aW9ucwogI2lmIEVOQUJMRShDb25kaXRpb24y
MikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIEpTQzo6SlNWYWx1ZSBpbmNsdWRlc01ldGhv
ZDMoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6Q2FsbEZyYW1lJik7CisgICAgSlNDOjpKU1Zh
bHVlIG1peGluQ3VzdG9tT3BlcmF0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkNhbGxG
cmFtZSYpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0
aW9uMTIpCiAgICAgSlNDOjpKU1ZhbHVlIHN1cHBsZW1lbnRhbE1ldGhvZDMoSlNDOjpKU0dsb2Jh
bE9iamVjdCYsIEpTQzo6Q2FsbEZyYW1lJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWl4aW5JbnRlcmZhY2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNaXhpbkludGVy
ZmFjZS5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE1peGluSW50ZXJmYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDYgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBqdXN0IHRvIHRlbGwgYnVp
bGQgc2NyaXB0cyB0aGF0IEpTVGVzdE1peGluSW50ZXJmYWNlLmggYW5kCisgICAgSlNUZXN0TWl4
aW5JbnRlcmZhY2UuY3BwIGFyZSBjcmVhdGVkIGZvciBUZXN0TWl4aW5JbnRlcmZhY2UuaWRsLCBh
bmQgdGh1cworICAgIHByZXZlbnQgdGhlIGJ1aWxkIHNjcmlwdHMgZnJvbSB0cnlpbmcgdG8gZ2Vu
ZXJhdGUgSlNUZXN0TWl4aW5JbnRlcmZhY2UuaCBhbmQKKyAgICBKU1Rlc3RNaXhpbkludGVyZmFj
ZS5jcHAgYXQgZXZlcnkgYnVpbGQuIFRoaXMgZmlsZSBtdXN0IG5vdCBiZSB0cmllZCB0byBjb21w
aWxlLgorKi8KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RNaXhpbkludGVyZmFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNaXhpbkludGVyZmFjZS5oCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNaXhpbklu
dGVyZmFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNiBAQAorLyoKKyAgICBUaGlzIGZp
bGUgaXMgZ2VuZXJhdGVkIGp1c3QgdG8gdGVsbCBidWlsZCBzY3JpcHRzIHRoYXQgSlNUZXN0TWl4
aW5JbnRlcmZhY2UuaCBhbmQKKyAgICBKU1Rlc3RNaXhpbkludGVyZmFjZS5jcHAgYXJlIGNyZWF0
ZWQgZm9yIFRlc3RNaXhpbkludGVyZmFjZS5pZGwsIGFuZCB0aHVzCisgICAgcHJldmVudCB0aGUg
YnVpbGQgc2NyaXB0cyBmcm9tIHRyeWluZyB0byBnZW5lcmF0ZSBKU1Rlc3RNaXhpbkludGVyZmFj
ZS5oIGFuZAorICAgIEpTVGVzdE1peGluSW50ZXJmYWNlLmNwcCBhdCBldmVyeSBidWlsZC4gVGhp
cyBmaWxlIG11c3Qgbm90IGJlIHRyaWVkIHRvIGNvbXBpbGUuCisqLwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAkocmV2aXNpb24gMjY2NzI3KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsMzc5IEBACiAvKgot
ICAgIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQganVzdCB0byB0ZWxsIGJ1aWxkIHNjcmlwdHMgdGhh
dCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmggYW5kCi0gICAgSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycy5jcHAgYXJlIGNyZWF0ZWQgZm9yIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzLmlkbCwgYW5kIHRodXMKLSAgICBwcmV2ZW50IHRoZSBidWlsZCBzY3JpcHRzIGZyb20gdHJ5
aW5nIHRvIGdlbmVyYXRlIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaCBhbmQKLSAgICBK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcCBhdCBldmVyeSBidWlsZC4gVGhpcyBmaWxl
IG11c3Qgbm90IGJlIHRyaWVkIHRvIGNvbXBpbGUuCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg
dGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBn
ZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAg
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMu
aCIKKworI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNw
YWNlcy5oIgorI2luY2x1ZGUgIkpTQmxvYi5oIgorI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgor
I2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnRCdWZm
ZXJTb3VyY2UuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnRJbnRlcmZhY2UuaCIKKyNpbmNsdWRl
ICJKU0RPTUNvbnZlcnROdW1iZXJzLmgiCisjaW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5ncy5o
IgorI2luY2x1ZGUgIkpTRE9NQ29udmVydFZhcmlhZGljLmgiCisjaW5jbHVkZSAiSlNET01FeGNl
cHRpb25IYW5kbGluZy5oIgorI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCisjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERh
dGEuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNw
YWNlSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUG9p
bnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKworCituYW1lc3BhY2Ug
V2ViQ29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSlNDOworCisvLyBBdHRyaWJ1dGVzCisKK0pTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFt
ZSk7Citib29sIHNldEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvcihKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSk7CisKK2NsYXNzIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUgZmluYWwg
OiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNl
ID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRpYyBKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAg
ICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51
bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5
cGU+KHZtLmhlYXApKSBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKHZtLCBn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0p
OworICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgSlNDOjpTdWJzcGFjZUFjY2Vzcz4KKyAgICBzdGF0
aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzUHJvdG90eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6
OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6
T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAg
OiBKU0M6OkpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQorCisg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Cit9OworU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZSwg
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZTo6QmFzZSk7CisKK3VzaW5nIEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3I8
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz47CisKK3N0YXRpYyBpbmxpbmUgRW5jb2RlZEpT
VmFsdWUgY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczEoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZN
JiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IqPihjYWxsRnJhbWUtPmpzQ2Fs
bGVlKCkpOworICAgIEFTU0VSVChjYXN0ZWRUaGlzKTsKKyAgICBFbnN1cmVTdGlsbEFsaXZlU2Nv
cGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKKyAgICBhdXRv
IGFycmF5QnVmZmVyID0gY29udmVydDxJRExBcnJheUJ1ZmZlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIGFyZ3VtZW50MC52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJy
b3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJhcnJheUJ1ZmZlciIsICJUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycyIsIG51bGxwdHIsICJBcnJheUJ1ZmZlciIpOyB9KTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIGF1
dG8gb2JqZWN0ID0gVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNyZWF0ZSgqYXJyYXlCdWZm
ZXIpOworICAgIHN0YXRpY19hc3NlcnQoZGVjbHR5cGUob2JqZWN0KTo6aXNSZWYpOworICAgIGF1
dG8ganNWYWx1ZSA9IHRvSlNOZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPFRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzPj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxP
YmplY3QoKSwgV1RGTW92ZShvYmplY3QpKTsKKyAgICBzZXRTdWJjbGFzc1N0cnVjdHVyZUlmTmVl
ZGVkPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxs
RnJhbWUsIGFzT2JqZWN0KGpzVmFsdWUpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIHsgfSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1ZhbHVlKTsKK30KKwor
c3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzMihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRv
KiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1
Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CisgICAgQVNTRVJUKGNhc3RlZFRoaXMpOwor
ICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApOworICAgIGF1dG8gYXJyYXlCdWZmZXJWaWV3ID0gY29udmVydDxJRExBcnJh
eUJ1ZmZlclZpZXc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgW10o
SlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3Bl
JiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNj
b3BlLCAwLCAiYXJyYXlCdWZmZXJWaWV3IiwgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIiwg
bnVsbHB0ciwgIkFycmF5QnVmZmVyVmlldyIpOyB9KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIGF1dG8gb2JqZWN0ID0gVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNyZWF0ZShhcnJheUJ1ZmZlclZpZXcucmVsZWFzZU5vbk51
bGwoKSk7CisgICAgc3RhdGljX2Fzc2VydChkZWNsdHlwZShvYmplY3QpOjppc1JlZik7CisgICAg
YXV0byBqc1ZhbHVlID0gdG9KU05ld2x5Q3JlYXRlZDxJRExJbnRlcmZhY2U8VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnM+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpLCBXVEZNb3ZlKG9iamVjdCkpOworICAgIHNldFN1YmNsYXNzU3RydWN0dXJlSWZO
ZWVkZWQ8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+KGxleGljYWxHbG9iYWxPYmplY3QsIGNh
bGxGcmFtZSwgYXNPYmplY3QoanNWYWx1ZSkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgeyB9KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVmFsdWUpOworfQor
CitzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMzKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1
dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0
cnVjdG9yKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKKyAgICBBU1NFUlQoY2FzdGVkVGhpcyk7
CisgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVj
a2VkQXJndW1lbnQoMCk7CisgICAgYXV0byBibG9iID0gY29udmVydDxJRExJbnRlcmZhY2U8Qmxv
Yj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgW10oSlNDOjpKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkg
eyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAi
YmxvYiIsICJUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyIsIG51bGxwdHIsICJCbG9iIik7IH0p
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CisgICAgYXV0byBvYmplY3QgPSBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlKCpi
bG9iKTsKKyAgICBzdGF0aWNfYXNzZXJ0KGRlY2x0eXBlKG9iamVjdCk6OmlzUmVmKTsKKyAgICBh
dXRvIGpzVmFsdWUgPSB0b0pTTmV3bHlDcmVhdGVkPElETEludGVyZmFjZTxUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCksIFdURk1vdmUob2JqZWN0KSk7CisgICAgc2V0U3ViY2xhc3NTdHJ1Y3R1cmVJZk5l
ZWRlZDxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4obGV4aWNhbEdsb2JhbE9iamVjdCwgY2Fs
bEZyYW1lLCBhc09iamVjdChqc1ZhbHVlKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCB7IH0pOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNWYWx1ZSk7Cit9CisK
K3N0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yczQoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0
byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3Ry
dWN0b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOworICAgIEFTU0VSVChjYXN0ZWRUaGlzKTsK
KyAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNr
ZWRBcmd1bWVudCgwKTsKKyAgICBhdXRvIHN0cmluZyA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgYXV0byBvYmplY3Qg
PSBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlKFdURk1vdmUoc3RyaW5nKSk7Cisg
ICAgc3RhdGljX2Fzc2VydChkZWNsdHlwZShvYmplY3QpOjppc1JlZik7CisgICAgYXV0byBqc1Zh
bHVlID0gdG9KU05ld2x5Q3JlYXRlZDxJRExJbnRlcmZhY2U8VGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnM+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgp
LCBXVEZNb3ZlKG9iamVjdCkpOworICAgIHNldFN1YmNsYXNzU3RydWN0dXJlSWZOZWVkZWQ8VGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwg
YXNPYmplY3QoanNWYWx1ZSkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
eyB9KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVmFsdWUpOworfQorCitzdGF0aWMg
aW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnM1KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKK3sKKyAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8qIGNhc3Rl
ZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKj4o
Y2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKKyAgICBBU1NFUlQoY2FzdGVkVGhpcyk7CisgICAgYXV0
byBsb25nQXJncyA9IGNvbnZlcnRWYXJpYWRpY0FyZ3VtZW50czxJRExMb25nPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgMCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBhdXRvIG9iamVjdCA9IFRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUoV1RGTW92ZShsb25nQXJncykpOworICAgIHN0YXRpY19h
c3NlcnQoZGVjbHR5cGUob2JqZWN0KTo6aXNSZWYpOworICAgIGF1dG8ganNWYWx1ZSA9IHRvSlNO
ZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGTW92ZShv
YmplY3QpKTsKKyAgICBzZXRTdWJjbGFzc1N0cnVjdHVyZUlmTmVlZGVkPFRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGFzT2JqZWN0KGpz
VmFsdWUpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1ZhbHVlKTsKK30KKwordGVtcGxhdGU8PiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1
Y3Rvcjo6Y29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBzaXplX3QgYXJnc0NvdW50ID0gc3RkOjpt
aW48c2l6ZV90PigxLCBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSk7CisgICAgaWYgKGFyZ3ND
b3VudCA9PSAwKSB7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAoY29u
c3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczUobGV4aWNhbEdsb2JhbE9iamVjdCwg
Y2FsbEZyYW1lKSkpOworICAgIH0KKyAgICBpZiAoYXJnc0NvdW50ID09IDEpIHsKKyAgICAgICAg
SlNWYWx1ZSBkaXN0aW5ndWlzaGluZ0FyZyA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQo
MCk7CisgICAgICAgIGlmIChkaXN0aW5ndWlzaGluZ0FyZy5pc09iamVjdCgpICYmIGFzT2JqZWN0
KGRpc3Rpbmd1aXNoaW5nQXJnKS0+aW5oZXJpdHM8SlNBcnJheUJ1ZmZlcj4odm0pKQorICAgICAg
ICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIChjb25zdHJ1Y3RKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzMShsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpKSk7Cisg
ICAgICAgIGlmIChkaXN0aW5ndWlzaGluZ0FyZy5pc09iamVjdCgpICYmIGFzT2JqZWN0KGRpc3Rp
bmd1aXNoaW5nQXJnKS0+aW5oZXJpdHM8SlNBcnJheUJ1ZmZlclZpZXc+KHZtKSkKKyAgICAgICAg
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAoY29uc3RydWN0SlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yczIobGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKSkpOworICAg
ICAgICBpZiAoZGlzdGluZ3Vpc2hpbmdBcmcuaXNPYmplY3QoKSAmJiBhc09iamVjdChkaXN0aW5n
dWlzaGluZ0FyZyktPmluaGVyaXRzPEpTQmxvYj4odm0pKQorICAgICAgICAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsIChjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzMyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpKSk7CisgICAgICAgIGlmIChkaXN0
aW5ndWlzaGluZ0FyZy5pc051bWJlcigpKQorICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsIChjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzNShsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAoY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczQobGV4
aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKSkpOworICAgIH0KKyAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKK30KKwordGVtcGxh
dGU8PiBKU1ZhbHVlIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6cHJv
dG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTSh2bSk7CisgICAgcmV0dXJuIGdsb2Jh
bE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOworfQorCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhW
TSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnM6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworfQorCit0ZW1wbGF0ZTw+
IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6
OnNfaW5mbyA9IHsgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIiwgJkJhc2U6OnNfaW5mbywg
bnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzQ29uc3RydWN0b3IpIH07CisKKy8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAq
LworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc1Byb3RvdHlwZVRhYmxlVmFsdWVzW10gPQoreworICAgIHsgImNvbnN0cnVjdG9yIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IpIH0gfSwKK307CisKK2NvbnN0IENsYXNzSW5m
byBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlw
ZSkgfTsKKwordm9pZCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAg
IHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6
aW5mbygpLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlVGFibGVWYWx1ZXMs
ICp0aGlzKTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKK30K
KworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OnNfaW5mbyA9
IHsgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwg
bnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
KSB9OworCitKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0LCBSZWY8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+JiYgaW1wbCkKKyAgICA6IEpT
RE9NV3JhcHBlcjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4oc3RydWN0dXJlLCBnbG9iYWxP
YmplY3QsIFdURk1vdmUoaW1wbCkpCit7Cit9CisKK3ZvaWQgSlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yczo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOworCisgICAgc3RhdGlj
X2Fzc2VydCghc3RkOjppc19iYXNlX29mPEFjdGl2ZURPTU9iamVjdCwgVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnM+Ojp2YWx1ZSwgIkludGVyZmFjZSBpcyBub3QgbWFya2VkIGFzIFtBY3RpdmVE
T01PYmplY3RdIGV2ZW4gdGhvdWdoIGltcGxlbWVudGF0aW9uIGNsYXNzIHN1YmNsYXNzZXMgQWN0
aXZlRE9NT2JqZWN0LiIpOworCit9CisKK0pTT2JqZWN0KiBKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzOjpjcmVhdGVQcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0KQoreworICAgIHJldHVybiBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90
eXBlOjpjcmVhdGUodm0sICZnbG9iYWxPYmplY3QsIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgJmdsb2JhbE9iamVjdCwgZ2xvYmFsT2Jq
ZWN0Lm9iamVjdFByb3RvdHlwZSgpKSk7Cit9CisKK0pTT2JqZWN0KiBKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0KQoreworICAgIHJldHVybiBnZXRET01Qcm90b3R5cGU8SlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycz4odm0sIGdsb2JhbE9iamVjdCk7Cit9CisKK0pTVmFsdWUgSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yczo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7Cit9CisKK3ZvaWQgSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yczo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKK3sKKyAgICBKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyo+KGNlbGwpOworICAgIHRoaXNPYmplY3QtPkpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6On5KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKCk7Cit9
CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rv
cihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OworICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpnZXRDb25zdHJ1Y3Rv
cihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVj
dCgpKSk7Cit9CisKK2Jvb2wgc2V0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVj
dG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBK
U0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7CisgICAg
ICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4g
Y29uc3RydWN0b3IKKyAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Cit9
CisKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OnN1YnNw
YWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRp
Y19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2Vz
ID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmdldCgpKQorICAgICAgICBy
ZXR1cm4gc3BhY2U7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPiB8fCAhSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6bmVlZHNEZXN0cnVjdGlvbik7CisgICAgaWYgY29u
c3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5n
ZXQoKSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk7CisgICAgZWxzZQorICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxs
VHlwZS5nZXQoKSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk7CisgICAgYXV0byogc3Bh
Y2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmdldCgp
OworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lHTk9SRV9XQVJO
SU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQorICAgIGlmICgmSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yczo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6
OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3Ry
YWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECitJR05PUkVf
V0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCit2b2lkIEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnM6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBh
bmFseXplcikKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMqPihjZWxsKTsKKyAgICBhbmFseXplci5zZXRXcmFwcGVkT2JqZWN0Rm9y
Q2VsbChjZWxsLCAmdGhpc09iamVjdC0+d3JhcHBlZCgpKTsKKyAgICBpZiAodGhpc09iamVjdC0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICAgICBhbmFseXplci5zZXRMYWJlbEZvckNl
bGwoY2VsbCwgInVybCAiICsgdGhpc09iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT51
cmwoKS5zdHJpbmcoKSk7CisgICAgQmFzZTo6YW5hbHl6ZUhlYXAoY2VsbCwgYW5hbHl6ZXIpOwor
fQorCitib29sIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNPd25lcjo6aXNSZWFjaGFibGVG
cm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBT
bG90VmlzaXRvciYgdmlzaXRvciwgY29uc3QgY2hhcioqIHJlYXNvbikKK3sKKyAgICBVTlVTRURf
UEFSQU0oaGFuZGxlKTsKKyAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7CisgICAgVU5VU0VEX1BB
UkFNKHJlYXNvbik7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBo
YW5kbGUsIHZvaWQqIGNvbnRleHQpCit7CisgICAgYXV0byoganNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycyA9IHN0YXRpY19jYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqPihoYW5k
bGUuc2xvdCgpLT5hc0NlbGwoKSk7CisgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9N
V3JhcHBlcldvcmxkKj4oY29udGV4dCk7CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLT53cmFwcGVkKCksIGpzVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMpOworfQorCisjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQorI2lmIFBMQVRG
T1JNKFdJTikKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NDgzKQorZXh0ZXJuICJDIiB7IGV4
dGVybiB2b2lkICgqY29uc3QgX19pZGVudGlmaWVyKCI/P183VGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNAV2ViQ29yZUBANkJAIilbXSkoKTsgfQorI2Vsc2UKK2V4dGVybiAiQyIgeyBleHRlcm4g
dm9pZCogX1pUVk43V2ViQ29yZTI2VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNFW107IH0KKyNl
bmRpZgorI2VuZGlmCisKK0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnM+JiYgaW1wbCkKK3sKKworI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVH
UklUWSkKKyAgICBjb25zdCB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gZ2V0VlRhYmxlUG9p
bnRlcihpbXBsLnB0cigpKTsKKyNpZiBQTEFURk9STShXSU4pCisgICAgdm9pZCogZXhwZWN0ZWRW
VGFibGVQb2ludGVyID0gX19pZGVudGlmaWVyKCI/P183VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNAV2ViQ29yZUBANkJAIik7CisjZWxzZQorICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRl
ciA9ICZfWlRWTjdXZWJDb3JlMjZUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0VbMl07CisjZW5k
aWYKKworICAgIC8vIElmIHRoaXMgZmFpbHMgVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgZG9l
cyBub3QgaGF2ZSBhIHZ0YWJsZSwgc28geW91IG5lZWQgdG8gYWRkIHRoZQorICAgIC8vIEltcGxl
bWVudGF0aW9uTGFja3NWVGFibGUgYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgZGVmaW5pdGlv
bgorICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19wb2x5bW9ycGhpYzxUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycz46OnZhbHVlLCAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgaXMgbm90IHBv
bHltb3JwaGljIik7CisKKyAgICAvLyBJZiB5b3UgaGl0IHRoaXMgYXNzZXJ0aW9uIHlvdSBlaXRo
ZXIgaGF2ZSBhIHVzZSBhZnRlciBmcmVlIGJ1Zywgb3IKKyAgICAvLyBUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycyBoYXMgc3ViY2xhc3Nlcy4gSWYgVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMg
aGFzIHN1YmNsYXNzZXMgdGhhdCBnZXQgcGFzc2VkCisgICAgLy8gdG8gdG9KUygpIHdlIGN1cnJl
bnRseSByZXF1aXJlIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIHlvdSB0byBvcHQgb3V0IG9m
IGJpbmRpbmcgaGFyZGVuaW5nCisgICAgLy8gYnkgYWRkaW5nIHRoZSBTa2lwVlRhYmxlVmFsaWRh
dGlvbiBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBJREwgZGVmaW5pdGlvbgorICAgIFJFTEVB
U0VfQVNTRVJUKGFjdHVhbFZUYWJsZVBvaW50ZXIgPT0gZXhwZWN0ZWRWVGFibGVQb2ludGVyKTsK
KyNlbmRpZgorICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzPihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworfQorCitKU0M6OkpTVmFsdWUgdG9K
UyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyYgaW1wbCkKK3sK
KyAgICByZXR1cm4gd3JhcChsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGltcGwp
OworfQorCitUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogSlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yczo6dG9XcmFwcGVkKEpTQzo6Vk0mIHZtLCBKU0M6OkpTVmFsdWUgdmFsdWUpCit7Cisg
ICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMqPih2bSwgdmFsdWUpKQorICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQo
KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oCShyZXZpc2lvbiAyNjY3MjcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsOTMgQEAKIC8qCi0gICAgVGhpcyBmaWxlIGlz
IGdlbmVyYXRlZCBqdXN0IHRvIHRlbGwgYnVpbGQgc2NyaXB0cyB0aGF0IEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMuaCBhbmQKLSAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNw
cCBhcmUgY3JlYXRlZCBmb3IgVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaWRsLCBhbmQgdGh1
cwotICAgIHByZXZlbnQgdGhlIGJ1aWxkIHNjcmlwdHMgZnJvbSB0cnlpbmcgdG8gZ2VuZXJhdGUg
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oIGFuZAotICAgIEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMuY3BwIGF0IGV2ZXJ5IGJ1aWxkLiBUaGlzIGZpbGUgbXVzdCBub3QgYmUgdHJp
ZWQgdG8gY29tcGlsZS4KKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4g
c291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5l
cmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAg
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKwor
ICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
ICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIkpTRE9NV3JhcHBlci5oIgorI2luY2x1ZGUgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyA6IHB1YmxpYyBKU0RP
TVdyYXBwZXI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+IHsKK3B1YmxpYzoKKyAgICB1c2lu
ZyBCYXNlID0gSlNET01XcmFwcGVyPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPjsKKyAgICBz
dGF0aWMgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogY3JlYXRlKEpTQzo6U3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycz4mJiBpbXBsKQorICAgIHsKKyAgICAgICAgSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycyogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZN
b3ZlKGltcGwpKTsKKyAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZt
KCkpOworICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAgIHN0YXRpYyBKU0M6OkpTT2Jq
ZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CisgICAg
c3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmpl
Y3QmKTsKKyAgICBzdGF0aWMgVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIHRvV3JhcHBlZChK
U0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlND
ZWxsKik7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEpT
Qzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5
cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9u
QXJyYXkpOworICAgIH0KKworICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3Io
SlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1v
ZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0K
KyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZt
KTsKKyAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXpl
ciYpOworcHJvdGVjdGVkOgorICAgIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoSlNDOjpT
dHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycz4mJik7CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK307CisKK2Ns
YXNzIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNPd25lciA6IHB1YmxpYyBKU0M6OldlYWtI
YW5kbGVPd25lciB7CitwdWJsaWM6CisgICAgdmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9w
YXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6
U2xvdFZpc2l0b3ImLCBjb25zdCBjaGFyKiopOworICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShK
U0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0KTsKK307CisKK2lubGluZSBK
U0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCYsIFRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzKikKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc093bmVyPiBvd25lcjsKKyAgICByZXR1cm4gJm93bmVy
LmdldCgpOworfQorCitpbmxpbmUgdm9pZCogd3JhcHBlcktleShUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycyogd3JhcHBhYmxlT2JqZWN0KQoreworICAgIHJldHVybiB3cmFwcGFibGVPYmplY3Q7
Cit9CisKK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2Jh
bE9iamVjdCosIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzJik7CitpbmxpbmUgSlNDOjpKU1Zh
bHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIGlt
cGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVj
dCwgKmltcGwpIDogSlNDOjpqc051bGwoKTsgfQorSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0
ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUmVmPFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzPiYmKTsKK2lubGluZSBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3Jl
YXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWZQdHI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+
JiYgaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlNOZXdseUNyZWF0ZWQobGV4aWNhbEdsb2JhbE9i
amVjdCwgZ2xvYmFsT2JqZWN0LCBpbXBsLnJlbGVhc2VOb25OdWxsKCkpIDogSlNDOjpqc051bGwo
KTsgfQorCit0ZW1wbGF0ZTw+IHN0cnVjdCBKU0RPTVdyYXBwZXJDb252ZXJ0ZXJUcmFpdHM8VGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+IHsKKyAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOworICAgIHVzaW5nIFRvV3JhcHBlZFJldHVyblR5cGUg
PSBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyo7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
UGFydGlhbE1peGluSW50ZXJmYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGFydGlhbE1peGluSW50ZXJmYWNlLmNwcAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0UGFydGlhbE1peGluSW50ZXJmYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDYgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBqdXN0IHRvIHRlbGwgYnVpbGQg
c2NyaXB0cyB0aGF0IEpTVGVzdFBhcnRpYWxNaXhpbkludGVyZmFjZS5oIGFuZAorICAgIEpTVGVz
dFBhcnRpYWxNaXhpbkludGVyZmFjZS5jcHAgYXJlIGNyZWF0ZWQgZm9yIFRlc3RQYXJ0aWFsTWl4
aW5JbnRlcmZhY2UuaWRsLCBhbmQgdGh1cworICAgIHByZXZlbnQgdGhlIGJ1aWxkIHNjcmlwdHMg
ZnJvbSB0cnlpbmcgdG8gZ2VuZXJhdGUgSlNUZXN0UGFydGlhbE1peGluSW50ZXJmYWNlLmggYW5k
CisgICAgSlNUZXN0UGFydGlhbE1peGluSW50ZXJmYWNlLmNwcCBhdCBldmVyeSBidWlsZC4gVGhp
cyBmaWxlIG11c3Qgbm90IGJlIHRyaWVkIHRvIGNvbXBpbGUuCisqLwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBhcnRpYWxNaXhpbkludGVyZmFj
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RQYXJ0aWFsTWl4aW5JbnRlcmZhY2UuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGFydGlhbE1peGluSW50ZXJm
YWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2IEBACisvKgorICAgIFRoaXMgZmlsZSBp
cyBnZW5lcmF0ZWQganVzdCB0byB0ZWxsIGJ1aWxkIHNjcmlwdHMgdGhhdCBKU1Rlc3RQYXJ0aWFs
TWl4aW5JbnRlcmZhY2UuaCBhbmQKKyAgICBKU1Rlc3RQYXJ0aWFsTWl4aW5JbnRlcmZhY2UuY3Bw
IGFyZSBjcmVhdGVkIGZvciBUZXN0UGFydGlhbE1peGluSW50ZXJmYWNlLmlkbCwgYW5kIHRodXMK
KyAgICBwcmV2ZW50IHRoZSBidWlsZCBzY3JpcHRzIGZyb20gdHJ5aW5nIHRvIGdlbmVyYXRlIEpT
VGVzdFBhcnRpYWxNaXhpbkludGVyZmFjZS5oIGFuZAorICAgIEpTVGVzdFBhcnRpYWxNaXhpbklu
dGVyZmFjZS5jcHAgYXQgZXZlcnkgYnVpbGQuIFRoaXMgZmlsZSBtdXN0IG5vdCBiZSB0cmllZCB0
byBjb21waWxlLgorKi8KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudE9yU2hhZG93
Um9vdFN0eWxlU2hlZXRzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvRG9j
dW1lbnRPclNoYWRvd1Jvb3RTdHlsZVNoZWV0cy5pZGwJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYkNvcmUvY3NzL0RvY3VtZW50T3JTaGFkb3dSb290U3R5bGVTaGVldHMuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBodHRwczovL2RyYWZ0cy5j
c3N3Zy5vcmcvY3Nzb20vI2V4dGVuc2lvbnMtdG8tdGhlLWRvY3VtZW50LW9yLXNoYWRvdy1yb290
LWludGVyZmFjZQorcGFydGlhbCBpbnRlcmZhY2UgbWl4aW4gRG9jdW1lbnRPclNoYWRvd1Jvb3Qg
eworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTdHlsZVNoZWV0TGlzdCBzdHlsZVNoZWV0czsgLy8g
RklYTUU6IFNob3VsZCBiZSBbU2FtZU9iamVjdF0uCit9OworCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRPclNoYWRvd1Jvb3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudE9yU2hhZG93Um9vdC5pZGwJKHJldmlzaW9uIDI2NjcyNykKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9yU2hhZG93Um9vdC5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDIyICsyNiwyMiBAQAogCiAvLyBodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2Rv
Y3VtZW50b3JzaGFkb3dyb290CiBpbnRlcmZhY2UgbWl4aW4gRG9jdW1lbnRPclNoYWRvd1Jvb3Qg
ewotICAgIC8vIEV4dGVuc2lvbnMgZnJvbSBTaGFkb3cgRE9NIEFQSSAoaHR0cHM6Ly93M2MuZ2l0
aHViLmlvL3dlYmNvbXBvbmVudHMvc3BlYy9zaGFkb3cvI2V4dGVuc2lvbnMtdG8tdGhlLWRvY3Vt
ZW50b3JzaGFkb3dyb290LW1peGluKS4KLSAgICAvLyBET01TZWxlY3Rpb24/IGdldFNlbGVjdGlv
bigpOyAvLyBGSVhNRTogV2UgY3VycmVudGx5IGhhdmUgdGhpcyBvbiBEb2N1bWVudCBvbmx5Lgot
ICAgIEVsZW1lbnQ/IGVsZW1lbnRGcm9tUG9pbnQoZG91YmxlIHgsIGRvdWJsZSB5KTsKLSAgICBz
ZXF1ZW5jZTxFbGVtZW50PiBlbGVtZW50c0Zyb21Qb2ludChkb3VibGUgeCwgZG91YmxlIHkpOwot
ICAgIC8vIENhcmV0UG9zaXRpb24/IGNhcmV0UG9zaXRpb25Gcm9tUG9pbnQoZG91YmxlIHgsIGRv
dWJsZSB5KTsgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorICAgIC8vIEV4dGVuc2lvbnMgZnJv
bSBIVE1MIChodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9kb20uaHRtbCNk
b2N1bWVudG9yc2hhZG93cm9vdCkKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVudD8gYWN0
aXZlRWxlbWVudDsKIAotICAgIC8vIEV4dGVuc2lvbnMgZnJvbSB0aGUgQ1NTT00gc3BlY2lmaWNh
dGlvbiAoaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzc29tLyNleHRlbnNpb25zLXRvLXRoZS1k
b2N1bWVudC1pbnRlcmZhY2UpLgotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTdHlsZVNoZWV0TGlz
dCBzdHlsZVNoZWV0czsgLy8gRklYTUU6IFNob3VsZCBiZSBbU2FtZU9iamVjdF0uCi0KLSAgICAv
LyBFeHRlbnNpb25zIGZyb20gUG9pbnRlciBMb2NrIEFQSSAoaHR0cHM6Ly93M2MuZ2l0aHViLmlv
L3BvaW50ZXJsb2NrLyNleHRlbnNpb25zLXRvLXRoZS1kb2N1bWVudG9yc2hhZG93cm9vdC1taXhp
bikuCi0gICAgW0NvbmRpdGlvbmFsPVBPSU5URVJfTE9DS10gcmVhZG9ubHkgYXR0cmlidXRlIEVs
ZW1lbnQ/IHBvaW50ZXJMb2NrRWxlbWVudDsKKyAgICAvLyBGSVhNRTogZ2V0U2VsZWN0aW9uIGlz
IGN1cnJlbnRseSBkZWZpbmVkIG9ubHkgdG8gYmUgb24gRG9jdW1lbnQgaW4gdGhlIFNlbGVjdGlv
biBBUEkgc3BlYworICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9zZWxlY3Rpb24tYXBpLyNl
eHRlbnNpb25zLXRvLWRvY3VtZW50LWludGVyZmFjZSwgYnV0CisgICAgLy8gcHJldmlvdXNseSBo
YWQgYmVlbiBkZWZpbmVkIHRvIGJlIG9uIERvY3VtZW50T3JTaGFkb3dSb290IGluIHRoZSBkZXBy
ZWNhdGVkIFNoYWRvdyBET00gc3BlYworICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJj
b21wb25lbnRzL3NwZWMvc2hhZG93LyNleHRlbnNpb25zLXRvLXRoZS1kb2N1bWVudG9yc2hhZG93
cm9vdC1taXhpbi4KKyAgICAvLyBXZSBzaG91bGQgZ2V0IHRoaXMgcmVzb2x2ZWQgaW4gdGhlIFNl
bGVjdGlvbiBBUEkgc3BlYyBhbmQgbW92ZSB0aGlzIHRvIHRoZSBjb3JyZWN0IElETCBmaWxlcy4K
KyAgICAvLyBET01TZWxlY3Rpb24/IGdldFNlbGVjdGlvbigpOwogCi0gICAgLy8gRXh0ZW5zaW9u
cyBmcm9tIFBpY3R1cmUtaW4tUGljdHVyZSBBUEkgKGh0dHBzOi8vd2ljZy5naXRodWIuaW8vcGlj
dHVyZS1pbi1waWN0dXJlLyNkb2N1bWVudG9yc2hhZG93cm9vdC1leHRlbnNpb24pCi0gICAgW0Nv
bmRpdGlvbmFsPVBJQ1RVUkVfSU5fUElDVFVSRV9BUEksIEVuYWJsZWRCeVNldHRpbmc9UGljdHVy
ZUluUGljdHVyZUFQSV0gcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQ/IHBpY3R1cmVJblBpY3R1
cmVFbGVtZW50OwotCi0gICAgLy8gRXh0ZW5zaW9uIGZyb20gV2ViIEFuaW1hdGlvbnMgQVBJICho
dHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvd2ViLWFuaW1hdGlvbnMtMS8jZXh0ZW5zaW9ucy10by10
aGUtZG9jdW1lbnRvcnNoYWRvd3Jvb3QtaW50ZXJmYWNlLW1peGluKQotICAgIFtFbmFibGVkQXRS
dW50aW1lPVdlYkFuaW1hdGlvbnNdIHNlcXVlbmNlPFdlYkFuaW1hdGlvbj4gZ2V0QW5pbWF0aW9u
cygpOworICAgIC8vIEZJWE1FOiBUaGVzZSBhcmUgY3VycmVudGx5IGRlZmluZWQgb25seSB0byBi
ZSBvbiBEb2N1bWVudCBpbiB0aGUgQ1NTT00gc3BlYworICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNz
c3dnLm9yZy9jc3NvbS12aWV3LyNleHRlbnNpb25zLXRvLXRoZS1kb2N1bWVudC1pbnRlcmZhY2Us
IGJ1dAorICAgIC8vIHByZXZpb3VzbHkgaGFkIGJlZW4gZGVmaW5lZCB0byBiZSBvbiBEb2N1bWVu
dE9yU2hhZG93Um9vdCBpbiB0aGUgZGVwcmVjYXRlZCBTaGFkb3cgRE9NIHNwZWMKKyAgICAvLyBo
dHRwczovL3czYy5naXRodWIuaW8vd2ViY29tcG9uZW50cy9zcGVjL3NoYWRvdy8jZXh0ZW5zaW9u
cy10by10aGUtZG9jdW1lbnRvcnNoYWRvd3Jvb3QtbWl4aW4uCisgICAgLy8gV2Ugc2hvdWxkIGdl
dCB0aGlzIHJlc29sdmVkIGluIHRoZSBDU1NPTSBzcGVjIGFuZCBtb3ZlIHRoZXNlIHRvIHRoZSBj
b3JyZWN0IElETCBmaWxlcy4KKyAgICBFbGVtZW50PyBlbGVtZW50RnJvbVBvaW50KGRvdWJsZSB4
LCBkb3VibGUgeSk7CisgICAgc2VxdWVuY2U8RWxlbWVudD4gZWxlbWVudHNGcm9tUG9pbnQoZG91
YmxlIHgsIGRvdWJsZSB5KTsKKyAgICAvLyBDYXJldFBvc2l0aW9uPyBjYXJldFBvc2l0aW9uRnJv
bVBvaW50KGRvdWJsZSB4LCBkb3VibGUgeSk7IC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KIH07
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRPclNoYWRvd1Jvb3RQb2ludGVyTG9j
ay5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3JTaGFkb3dS
b290UG9pbnRlckxvY2suaWRsCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudE9yU2hhZG93Um9vdFBvaW50ZXJMb2NrLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3BvaW50ZXJs
b2NrLyNleHRlbnNpb25zLXRvLXRoZS1kb2N1bWVudG9yc2hhZG93cm9vdC1taXhpbgorWworICAg
IENvbmRpdGlvbmFsPVBPSU5URVJfTE9DSworXSBwYXJ0aWFsIGludGVyZmFjZSBtaXhpbiBEb2N1
bWVudE9yU2hhZG93Um9vdCB7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQ/IHBvaW50
ZXJMb2NrRWxlbWVudDsKK307Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408254</attachid>
            <date>2020-09-08 12:27:51 -0700</date>
            <delta_ts>2020-09-08 14:11:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216255-20200908122750.patch</filename>
            <type>text/plain</type>
            <size>175030</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2Njc0MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgxIEBACisyMDIwLTA5LTA3ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViSURMXSBBZGQgc3VwcG9ydCBm
b3IgcGFydGlhbCBpbnRlcmZhY2UgbWl4aW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTYyNTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgV2ViSURMICdwYXJ0aWFsIGludGVy
ZmFjZSBtaXhpbnMnIGFuZCBhZG9wdCB0aGVtIGZvciBhIGZldworICAgICAgICBzdXBwbGVtZW50
cyBvZiB0aGUgRG9jdW1lbnRPclNoYWRvd1Jvb3QgbWl4aW4uCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1p
bnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVs
aXN0OgorICAgICAgICAqIGRvbS9Eb2N1bWVudE9yU2hhZG93Um9vdC5pZGw6CisgICAgICAgICog
Y3NzL0RvY3VtZW50T3JTaGFkb3dSb290U3R5bGVTaGVldHMuaWRsOiBBZGRlZC4KKyAgICAgICAg
KiBkb20vRG9jdW1lbnRPclNoYWRvd1Jvb3RQb2ludGVyTG9jay5pZGw6IEFkZGVkLgorICAgICAg
ICAqIE1vZHVsZXMvcGljdHVyZWlucGljdHVyZS9Eb2N1bWVudE9yU2hhZG93Um9vdFBpY3R1cmVJ
blBpY3R1cmUuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBhbmltYXRpb24vRG9jdW1lbnRPclNoYWRv
d1Jvb3RBbmltYXRpb25zLmlkbDogQWRkZWQuCisgICAgICAgIEFkZCBuZXcgc3BsaXQtb3V0IElE
THMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG06CisgICAg
ICAgIChHZW5lcmF0ZUVtcHR5SGVhZGVyQW5kQ3BwKToKKyAgICAgICAgTW92ZSBlbXB0eSBmaWxl
IGdlbmVyYXRpb24gaGVyZSAoZnJvbSBnZW5lcmF0ZS1iaW5kaW5ncy5wbCksIGFsbG93aW5nCisg
ICAgICAgIGZvciBhIHNpbXBsaWZpZWQgY29tcGlsYXRpb24gbW9kZWwsIHdoZXJlIGFsbCBJRExz
IGdpdmVuIHRvIGdlbmVyYXRlLWJpbmRpbmdzLnBsCisgICAgICAgIG5vdyBpbnN0YW50aWF0ZSB0
aGUgQ29kZUdlbmVyYXRvciBhbmQgaXQgaXMgdGhlIENvZGVHZW5lcmF0b3JzIGpvYiB0byBmaWd1
cmUKKyAgICAgICAgb3V0IGlmIHRoZSBmaWxlIG5lZWRzIGFueXRoaW5nIGdlbmVyYXRlZC4gVGhp
cyBhbGxvd3MgdGhlIGRlcGVuZGVuY2llcyBmaWxlCisgICAgICAgIHRvIGdldCBvdXQgb2YgdGhl
IGJ1c2luZXNzIG9mIGluZGljYXRpbmcgdGhhdCBhbiBJREwgZG9lc24ndCBuZWVkIGdlbmVyYXRp
b24sCisgICAgICAgIGFuZCBzdGljayB0byBqdXN0IGxpc3RpbmcgZGVwZW5kZW5jaWVzLiBUaGlz
IGlzIGltcG9ydGFudCBub3cgdGhhdCBkZXBlbmRlbmNpZXMKKyAgICAgICAgbGlrZSBpbnRlcmZh
Y2UgbWl4aW5zIGNhbiBub3cgaGF2ZSBkZXBlbmNpZXMgb2YgdGhlaXIgb3duLCBwYXJ0aWFsIGlu
dGVyZmFjZSBtaXhpbnMuCisKKyAgICAgICAgKFByb2Nlc3NJbnRlcmZhY2VzKToKKyAgICAgICAg
KFByb2Nlc3NEaWN0aW9uYXJpZXMpOgorICAgICAgICBNb3ZlIGxvZ2ljIHRvIGF2b2lkIGdlbmVy
dGlvbiBvZiBtaXhpbnMgYW5kIHBhcnRpYWwgaGVyZS4KKworICAgICAgICAoUHJvY2Vzc0ludGVy
ZmFjZVN1cHBsZW1lbnRhbERlcGVuZGVuY2llcyk6CisgICAgICAgIFN1cHBvcnQgcmVjdXJzaXZl
bHkgcHJvY2Vzc2luZyBzdXBwbGVtZW50YWwgZGVwZW5kZW5jaWVzIGZvciBwYXJ0aWFsIGludGVy
ZmFjZQorICAgICAgICBtaXhpbnMuIEVuc3VyZSB0aGF0IHdlIGRvbid0IGV2YWx1YXRlIGV4cG9z
dXJlIHdoZW4gZG9pbmcgdGhpcywgYXMgdGhhdCBzaG91bGQKKyAgICAgICAgb25seSBoYXBwZW4g
b24gdGhlIGZpbmFsIGludGVyZmFjZS4KKworICAgICAgICAoc2hvdWxkUHJvcGVydHlCZUV4cG9z
ZWQpOgorICAgICAgICBNb3ZlIGFsbCBsb2dpYyBmb3IgZXhwb3N1cmUgaGVyZSwgcmF0aGVyIHRo
YW4gc3BsaXR0aW5nIGl0IHVwIGJldHdlZW4gaGVyZQorICAgICAgICBhbmQgUHJvY2Vzc0ludGVy
ZmFjZVN1cHBsZW1lbnRhbERlcGVuZGVuY2llcy9Qcm9jZXNzRGljdGlvbmFyeVN1cHBsZW1lbnRh
bERlcGVuZGVuY2llcworICAgICAgICAKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL2dlbmVy
YXRlLWJpbmRpbmdzLnBsOgorICAgICAgICAoZ2VuZXJhdGVCaW5kaW5ncyk6CisgICAgICAgIChn
ZW5lcmF0ZUVtcHR5SGVhZGVyQW5kQ3BwKTogRGVsZXRlZC4KKyAgICAgICAgUmVtb3ZlIHN1cHBv
cnQgZm9yIHVudXNlZCBhZGRpdGlvbmFsSWRsRmlsZXMgb3B0aW9uIGFuZCBzaW1wbGlmeSB0aGlu
Z3MKKyAgICAgICAgYnkgaGF2aW5nIENvZGVHZW5lcmF0b3Igd29yayBvdXQgd2hldGhlciBpdCBz
aG91bGQgZ2VuZXJhdGUgYW4gZW1wdHkgc2V0IG9mCisgICAgICAgIGZpbGVzIGJhc2VkIG9uIHRo
ZSBmaWxlcyB0aGVtc2VsdmVzIHJhdGhlciB0aGFuIGluZmVycmluZyBpdCBmcm9tIHRoZSBkZXBl
bmRlbmN5CisgICAgICAgIGluZm9ybWF0aW9uLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy9wcmVwcm9jZXNzLWlkbHMucGw6CisgICAgICAgIChnZXRQYXJ0aWFsTmFtZXNGcm9tSURMKToK
KyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHByb3Blcmx5IHBhcnNpbmcgcGFydGlhbCBpbnRlcmZh
Y2UgbWl4aW5zIGFuZCBzdG9wIGRpc2FsbG93aW5nCisgICAgICAgIGRlcGVuZGVuY2llcywgbGlr
ZSBhIG1peGluIGludGVyZmFjZSwgZnJvbSBoYXZpbmcgaXRzIG93biBkZXBlbmRlbmNlcy4KKwor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbEluY2x1
ZGVzLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0
aW9uYWxJbmNsdWRlcy5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJbmNsdWRlcy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEluY2x1ZGVzLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RNaXhpbkludGVyZmFjZS5jcHA6IEFkZGVkLgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNaXhpbkludGVyZmFjZS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGFydGlhbE1peGluSW50ZXJmYWNl
LmNwcDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBh
cnRpYWxNaXhpbkludGVyZmFjZS5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzLmRlcDoKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMuaWRsOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9UZXN0SW5jbHVkZXMuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0SW50ZXJmYWNlLmlkbDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVGVzdE1peGluSW50ZXJmYWNlLmlkbDogQWRkZWQuCisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9UZXN0UGFydGlhbE1peGluSW50ZXJmYWNlLmlkbDogQWRkZWQuCisgICAgICAg
IFJlbmFtZSBUZXN0SW5jbHVkZXMgdG8gVGVzdE1peGluSW50ZXJmYWNlIChzaW5jZSB0aGF0IGlz
IHdoYXQgaXQgaXMgdGVzdGluZykKKyAgICAgICAgYW5kIGFkZCBUZXN0UGFydGlhbE1peGluSW50
ZXJmYWNlIHRvIHRlc3QgcGFydGlhbCBpbnRlcmZhY2UgbWl4aW5zLgorCiAyMDIwLTA5LTA4ICBG
cmFuayBZYW5nICA8Z3Vvd2VpX3lhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIENvcmVJbWFnZSBJ
bXBsZW1lbnRhdGlvbiBvZiBDU1MgRmlsdGVycyBpbnZlcnQoKSwgb3BhY2l0eSgpLCBicmlnaHRu
ZXNzKCksIGNvbnRyYXN0KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyNjY3
NDApCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
NDI3LDYgKzQyNyw3IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAgTW9kdWxl
cy9wYXltZW50cmVxdWVzdC9QYXltZW50U2hpcHBpbmdUeXBlLmlkbAogICAgIE1vZHVsZXMvcGF5
bWVudHJlcXVlc3QvUGF5bWVudFZhbGlkYXRpb25FcnJvcnMuaWRsCiAKKyAgICBNb2R1bGVzL3Bp
Y3R1cmVpbnBpY3R1cmUvRG9jdW1lbnRPclNoYWRvd1Jvb3RQaWN0dXJlSW5QaWN0dXJlLmlkbAog
ICAgIE1vZHVsZXMvcGljdHVyZWlucGljdHVyZS9Eb2N1bWVudFBpY3R1cmVJblBpY3R1cmUuaWRs
CiAgICAgTW9kdWxlcy9waWN0dXJlaW5waWN0dXJlL0VudGVyUGljdHVyZUluUGljdHVyZUV2ZW50
LmlkbAogICAgIE1vZHVsZXMvcGljdHVyZWlucGljdHVyZS9IVE1MVmlkZW9FbGVtZW50UGljdHVy
ZUluUGljdHVyZS5pZGwKQEAgLTY0MSw2ICs2NDIsNyBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lE
TF9GSUxFUwogICAgIGFuaW1hdGlvbi9Db21wb3NpdGVPcGVyYXRpb24uaWRsCiAgICAgYW5pbWF0
aW9uL0NvbXBvc2l0ZU9wZXJhdGlvbk9yQXV0by5pZGwKICAgICBhbmltYXRpb24vQ29tcHV0ZWRF
ZmZlY3RUaW1pbmcuaWRsCisgICAgYW5pbWF0aW9uL0RvY3VtZW50T3JTaGFkb3dSb290QW5pbWF0
aW9ucy5pZGwKICAgICBhbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5pZGwKICAgICBhbmltYXRp
b24vRG9jdW1lbnRUaW1lbGluZU9wdGlvbnMuaWRsCiAgICAgYW5pbWF0aW9uL0ZpbGxNb2RlLmlk
bApAQCAtNzAwLDYgKzcwMiw3IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAg
Y3NzL0NTU1N0eWxlU2hlZXQuaWRsCiAgICAgY3NzL0NTU1N1cHBvcnRzUnVsZS5pZGwKICAgICBj
c3MvQ1NTVW5rbm93blJ1bGUuaWRsCisgICAgY3NzL0RvY3VtZW50T3JTaGFkb3dSb290U3R5bGVT
aGVldHMuaWRsCiAgICAgY3NzL0RPTUNTU0N1c3RvbVByb3BlcnR5RGVzY3JpcHRvci5pZGwKICAg
ICBjc3MvRE9NQ1NTTmFtZXNwYWNlLmlkbAogICAgIGNzcy9ET01DU1NQYWludFdvcmtsZXQuaWRs
CkBAIC03NzMsNiArNzc2LDcgQEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBk
b20vRG9jdW1lbnRGcmFnbWVudC5pZGwKICAgICBkb20vRG9jdW1lbnRGdWxsc2NyZWVuLmlkbAog
ICAgIGRvbS9Eb2N1bWVudE9yU2hhZG93Um9vdC5pZGwKKyAgICBkb20vRG9jdW1lbnRPclNoYWRv
d1Jvb3RQb2ludGVyTG9jay5pZGwKICAgICBkb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmlkbAog
ICAgIGRvbS9Eb2N1bWVudFRvdWNoLmlkbAogICAgIGRvbS9Eb2N1bWVudFR5cGUuaWRsCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QJKHJl
dmlzaW9uIDI2Njc0MCkKKysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0Lnhj
ZmlsZWxpc3QJKHdvcmtpbmcgY29weSkKQEAgLTI1NSw2ICsyNTUsNyBAQCAkKFBST0pFQ1RfRElS
KS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BhCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3BheW1l
bnRyZXF1ZXN0L1BheW1lbnRTaGlwcGluZ09wdGlvbi5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVs
ZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFNoaXBwaW5nVHlwZS5pZGwKICQoUFJPSkVDVF9ESVIp
L01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFZhbGlkYXRpb25FcnJvcnMuaWRsCiskKFBS
T0pFQ1RfRElSKS9Nb2R1bGVzL3BpY3R1cmVpbnBpY3R1cmUvRG9jdW1lbnRPclNoYWRvd1Jvb3RQ
aWN0dXJlSW5QaWN0dXJlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9waWN0dXJlaW5waWN0
dXJlL0RvY3VtZW50UGljdHVyZUluUGljdHVyZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMv
cGljdHVyZWlucGljdHVyZS9FbnRlclBpY3R1cmVJblBpY3R1cmVFdmVudC5pZGwKICQoUFJPSkVD
VF9ESVIpL01vZHVsZXMvcGljdHVyZWlucGljdHVyZS9IVE1MVmlkZW9FbGVtZW50UGljdHVyZUlu
UGljdHVyZS5pZGwKQEAgLTUzNCw2ICs1MzUsNyBAQCAkKFBST0pFQ1RfRElSKS9hbmltYXRpb24v
Q1NTVHJhbnNpdGlvbi5pCiAkKFBST0pFQ1RfRElSKS9hbmltYXRpb24vQ29tcG9zaXRlT3BlcmF0
aW9uLmlkbAogJChQUk9KRUNUX0RJUikvYW5pbWF0aW9uL0NvbXBvc2l0ZU9wZXJhdGlvbk9yQXV0
by5pZGwKICQoUFJPSkVDVF9ESVIpL2FuaW1hdGlvbi9Db21wdXRlZEVmZmVjdFRpbWluZy5pZGwK
KyQoUFJPSkVDVF9ESVIpL2FuaW1hdGlvbi9Eb2N1bWVudE9yU2hhZG93Um9vdEFuaW1hdGlvbnMu
aWRsCiAkKFBST0pFQ1RfRElSKS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5pZGwKICQoUFJP
SkVDVF9ESVIpL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lT3B0aW9ucy5pZGwKICQoUFJPSkVD
VF9ESVIpL2FuaW1hdGlvbi9FZmZlY3RUaW1pbmcuaWRsCkBAIC02MTYsNiArNjE4LDcgQEAgJChQ
Uk9KRUNUX0RJUikvY3NzL0RlcHJlY2F0ZWRDU1NPTVJHQkNvbAogJChQUk9KRUNUX0RJUikvY3Nz
L0RlcHJlY2F0ZWRDU1NPTVJlY3QuaWRsCiAkKFBST0pFQ1RfRElSKS9jc3MvRGVwcmVjYXRlZENT
U09NVmFsdWUuaWRsCiAkKFBST0pFQ1RfRElSKS9jc3MvRGVwcmVjYXRlZENTU09NVmFsdWVMaXN0
LmlkbAorJChQUk9KRUNUX0RJUikvY3NzL0RvY3VtZW50T3JTaGFkb3dSb290U3R5bGVTaGVldHMu
aWRsCiAkKFBST0pFQ1RfRElSKS9jc3MvRWxlbWVudENTU0lubGluZVN0eWxlLmlkbAogJChQUk9K
RUNUX0RJUikvY3NzL0ZvbnRGYWNlLmlkbAogJChQUk9KRUNUX0RJUikvY3NzL0ZvbnRGYWNlU2V0
LmlkbApAQCAtNjkxLDYgKzY5NCw3IEBAICQoUFJPSkVDVF9ESVIpL2RvbS9Eb2N1bWVudEFuZEVs
ZW1lbnRFdmUKICQoUFJPSkVDVF9ESVIpL2RvbS9Eb2N1bWVudEZyYWdtZW50LmlkbAogJChQUk9K
RUNUX0RJUikvZG9tL0RvY3VtZW50RnVsbHNjcmVlbi5pZGwKICQoUFJPSkVDVF9ESVIpL2RvbS9E
b2N1bWVudE9yU2hhZG93Um9vdC5pZGwKKyQoUFJPSkVDVF9ESVIpL2RvbS9Eb2N1bWVudE9yU2hh
ZG93Um9vdFBvaW50ZXJMb2NrLmlkbAogJChQUk9KRUNUX0RJUikvZG9tL0RvY3VtZW50U3RvcmFn
ZUFjY2Vzcy5pZGwKICQoUFJPSkVDVF9ESVIpL2RvbS9Eb2N1bWVudFRvdWNoLmlkbAogJChQUk9K
RUNUX0RJUikvZG9tL0RvY3VtZW50VHlwZS5pZGwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CShyZXZpc2lvbiAyNjY3NDApCisrKyBT
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAkod29ya2luZyBj
b3B5KQpAQCAtNTQ0LDYgKzU0NCwxNCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0RvY3VtZW50RnVsbHNjcmVlbi5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0RvY3VtZW50T3JTaGFkb3dSb290LmNwcAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEb2N1bWVudE9yU2hhZG93Um9vdC5oCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RvY3VtZW50T3JTaGFk
b3dSb290QW5pbWF0aW9ucy5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTRG9jdW1lbnRPclNoYWRvd1Jvb3RBbmltYXRpb25zLmgKKyQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRG9jdW1lbnRPclNoYWRvd1Jvb3RQ
aWN0dXJlSW5QaWN0dXJlLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNEb2N1bWVudE9yU2hhZG93Um9vdFBpY3R1cmVJblBpY3R1cmUuaAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEb2N1bWVudE9yU2hhZG93
Um9vdFBvaW50ZXJMb2NrLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNEb2N1bWVudE9yU2hhZG93Um9vdFBvaW50ZXJMb2NrLmgKKyQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRG9jdW1lbnRPclNoYWRvd1Jvb3RT
dHlsZVNoZWV0cy5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTRG9jdW1lbnRPclNoYWRvd1Jvb3RTdHlsZVNoZWV0cy5oCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RvY3VtZW50UGljdHVyZUluUGljdHVyZS5j
cHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRG9jdW1l
bnRQaWN0dXJlSW5QaWN0dXJlLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmNwcApJbmRleDogU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAyNjY3NDApCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0zNTMsNiArMzUzLDcgQEAgSlNfQklO
RElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXlt
ZW50U2hpcHBpbmdPcHRpb24uaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvcGF5bWVudHJl
cXVlc3QvUGF5bWVudFNoaXBwaW5nVHlwZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9w
YXltZW50cmVxdWVzdC9QYXltZW50VmFsaWRhdGlvbkVycm9ycy5pZGwgXAorICAgICQoV2ViQ29y
ZSkvTW9kdWxlcy9waWN0dXJlaW5waWN0dXJlL0RvY3VtZW50T3JTaGFkb3dSb290UGljdHVyZUlu
UGljdHVyZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9waWN0dXJlaW5waWN0dXJlL0Rv
Y3VtZW50UGljdHVyZUluUGljdHVyZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9waWN0
dXJlaW5waWN0dXJlL0VudGVyUGljdHVyZUluUGljdHVyZUV2ZW50LmlkbCBcCiAgICAgJChXZWJD
b3JlKS9Nb2R1bGVzL3BpY3R1cmVpbnBpY3R1cmUvSFRNTFZpZGVvRWxlbWVudFBpY3R1cmVJblBp
Y3R1cmUuaWRsIFwKQEAgLTU5OCw2ICs1OTksNyBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAgICAg
JChXZWJDb3JlKS9hbmltYXRpb24vQ29tcG9zaXRlT3BlcmF0aW9uLmlkbCBcCiAgICAgJChXZWJD
b3JlKS9hbmltYXRpb24vQ29tcG9zaXRlT3BlcmF0aW9uT3JBdXRvLmlkbCBcCiAgICAgJChXZWJD
b3JlKS9hbmltYXRpb24vQ29tcHV0ZWRFZmZlY3RUaW1pbmcuaWRsIFwKKyAgICAkKFdlYkNvcmUp
L2FuaW1hdGlvbi9Eb2N1bWVudE9yU2hhZG93Um9vdEFuaW1hdGlvbnMuaWRsIFwKICAgICAkKFdl
YkNvcmUpL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmlkbCBcCiAgICAgJChXZWJDb3JlKS9h
bmltYXRpb24vRG9jdW1lbnRUaW1lbGluZU9wdGlvbnMuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Fu
aW1hdGlvbi9FZmZlY3RUaW1pbmcuaWRsIFwKQEAgLTY1NCw2ICs2NTYsNyBAQCBKU19CSU5ESU5H
X0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9jc3MvQ1NTU3R5bGVTaGVldC5pZGwgXAogICAgICQo
V2ViQ29yZSkvY3NzL0NTU1N1cHBvcnRzUnVsZS5pZGwgXAogICAgICQoV2ViQ29yZSkvY3NzL0NT
U1Vua25vd25SdWxlLmlkbCBcCisgICAgJChXZWJDb3JlKS9jc3MvRG9jdW1lbnRPclNoYWRvd1Jv
b3RTdHlsZVNoZWV0cy5pZGwgXAogICAgICQoV2ViQ29yZSkvY3NzL0RPTUNTU0N1c3RvbVByb3Bl
cnR5RGVzY3JpcHRvci5pZGwgXAogICAgICQoV2ViQ29yZSkvY3NzL0RPTUNTU05hbWVzcGFjZS5p
ZGwgXAogICAgICQoV2ViQ29yZSkvY3NzL0RPTUNTU1BhaW50V29ya2xldC5pZGwgXApAQCAtNzI0
LDYgKzcyNyw3IEBAIEpTX0JJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL2RvbS9Eb2N1
bWVudEZ1bGxzY3JlZW4uaWRsIFwKICAgICAkKFdlYkNvcmUpL2RvbS9Eb2N1bWVudEZyYWdtZW50
LmlkbCBcCiAgICAgJChXZWJDb3JlKS9kb20vRG9jdW1lbnRPclNoYWRvd1Jvb3QuaWRsIFwKKyAg
ICAkKFdlYkNvcmUpL2RvbS9Eb2N1bWVudE9yU2hhZG93Um9vdFBvaW50ZXJMb2NrLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmlkbCBcCiAgICAgJChXZWJD
b3JlKS9kb20vRG9jdW1lbnRUeXBlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9kb20vRHJhZ0V2ZW50
LmlkbCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BpY3R1cmVpbnBpY3R1cmUvRG9j
dW1lbnRPclNoYWRvd1Jvb3RQaWN0dXJlSW5QaWN0dXJlLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3BpY3R1cmVpbnBpY3R1cmUvRG9jdW1lbnRPclNoYWRvd1Jvb3RQ
aWN0dXJlSW5QaWN0dXJlLmlkbAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3BpY3R1cmVpbnBpY3R1cmUvRG9jdW1lbnRPclNoYWRvd1Jvb3RQaWN0dXJlSW5QaWN0dXJl
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gaHR0
cHM6Ly93M2MuZ2l0aHViLmlvL3BpY3R1cmUtaW4tcGljdHVyZS8jZG9jdW1lbnRvcnNoYWRvd3Jv
b3QtZXh0ZW5zaW9uCitbCisgICAgQ29uZGl0aW9uYWw9UElDVFVSRV9JTl9QSUNUVVJFX0FQSSwK
KyAgICBFbmFibGVkQnlTZXR0aW5nPVBpY3R1cmVJblBpY3R1cmVBUEkKK10gcGFydGlhbCBpbnRl
cmZhY2UgbWl4aW4gRG9jdW1lbnRPclNoYWRvd1Jvb3QgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBFbGVtZW50PyBwaWN0dXJlSW5QaWN0dXJlRWxlbWVudDsKK307CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAy
NjY3NDApCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTEwMTI2LDYgKzEwMTI2LDEwIEBACiAJCTdDMzMwQTA1MURG
OUY5NTEwMEQzMzk1QyAvKiBKU1Bvc2l0aW9uT3B0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU1Bvc2l0aW9uT3B0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdDMzMwQTA2MURGOUY5NTEwMEQzMzk1QyAvKiBKU1Bvc2l0aW9uT3B0
aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Bvc2l0aW9uT3B0aW9u
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzMzRjM2MDFCNEEwNTA0MDA1MDJD
QUYgLyogSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTdDMzY1NTY5MjUwNkREQjcwMEE3ODgyQiAvKiBEb2N1bWVudE9y
U2hhZG93Um9vdFN0eWxlU2hlZXRzLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBEb2N1bWVudE9yU2hhZG93Um9vdFN0eWxl
U2hlZXRzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MzNjU1NkMyNTA2REU5
QzAwQTc4ODJCIC8qIERvY3VtZW50T3JTaGFkb3dSb290UG9pbnRlckxvY2suaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERv
Y3VtZW50T3JTaGFkb3dSb290UG9pbnRlckxvY2suaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3QzM2NTU2RTI1MDZERjk5MDBBNzg4MkIgLyogRG9jdW1lbnRPclNoYWRvd1Jvb3RQ
aWN0dXJlSW5QaWN0dXJlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBEb2N1bWVudE9yU2hhZG93Um9vdFBpY3R1cmVJblBp
Y3R1cmUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzM2NTU3MDI1MDZFMEE3
MDBBNzg4MkIgLyogRG9jdW1lbnRPclNoYWRvd1Jvb3RBbmltYXRpb25zLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBEb2N1
bWVudE9yU2hhZG93Um9vdEFuaW1hdGlvbnMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QzM4MDZEQjI1MDVCMTg5MDA3NDRBN0IgLyogQW5pbWF0aW9uRnJhbWVQcm92aWRlci5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQW5pbWF0aW9uRnJhbWVQcm92aWRlci5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDM0E5MUU1MUM5NjNCODgwMEQxQTdFMyAvKiBD
bGlwYm9hcmRBY2Nlc3NQb2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q2xpcGJvYXJkQWNjZXNzUG9saWN5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
M0I3OTZGMTkwODc1N0IwMEI0N0EyRCAvKiBVc2VyTWVzc2FnZUhhbmRsZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVXNlck1lc3NhZ2VIYW5kbGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4MzUxLDYgKzE4MzU1LDcgQEAKIAkJMURFRjA2
QTIyMzNDMzJEQjAwRUUyMjhEIC8qIHBpY3R1cmVpbnBpY3R1cmUgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTdDMzY1NTZFMjUwNkRGOTkwMEE3ODgyQiAv
KiBEb2N1bWVudE9yU2hhZG93Um9vdFBpY3R1cmVJblBpY3R1cmUuaWRsICovLAogCQkJCTFERUYw
NkRDMjMzRDJFMUMwMEVFMjI4RCAvKiBEb2N1bWVudFBpY3R1cmVJblBpY3R1cmUuY3BwICovLAog
CQkJCTFERUYwNkREMjMzRDJFMUMwMEVFMjI4RCAvKiBEb2N1bWVudFBpY3R1cmVJblBpY3R1cmUu
aCAqLywKIAkJCQkxREVGMDZERTIzM0QyRTFDMDBFRTIyOEQgLyogRG9jdW1lbnRQaWN0dXJlSW5Q
aWN0dXJlLmlkbCAqLywKQEAgLTIxODA5LDYgKzIxODE0LDcgQEAKIAkJCQk3MTIzQzE4NTIwNDcz
OUI5MDA3ODkzOTIgLyogQ1NTVHJhbnNpdGlvbi5pZGwgKi8sCiAJCQkJNzE1QUQ3MUYyMDUwNTEy
NDAwRDU5MkRDIC8qIERlY2xhcmF0aXZlQW5pbWF0aW9uLmNwcCAqLywKIAkJCQk3MTVBRDcxRDIw
NTA1MTI0MDBENTkyREMgLyogRGVjbGFyYXRpdmVBbmltYXRpb24uaCAqLywKKwkJCQk3QzM2NTU3
MDI1MDZFMEE3MDBBNzg4MkIgLyogRG9jdW1lbnRPclNoYWRvd1Jvb3RBbmltYXRpb25zLmlkbCAq
LywKIAkJCQk3MTAyNUVDNDFGOTlGMDk2MDA0QTI1MEMgLyogRG9jdW1lbnRUaW1lbGluZS5jcHAg
Ki8sCiAJCQkJNzEwMjVFQzUxRjk5RjA5NjAwNEEyNTBDIC8qIERvY3VtZW50VGltZWxpbmUuaCAq
LywKIAkJCQk3MTAyNUVDQTFGOTlGMDk2MDA0QTI1MEMgLyogRG9jdW1lbnRUaW1lbGluZS5pZGwg
Ki8sCkBAIC0yODYzOCw2ICsyODY0NCw3IEBACiAJCQkJOTQ3OTQ5MjcxRTAzMTMyMDAwMDE4RDg1
IC8qIERlcHJlY2F0ZWRDU1NPTVZhbHVlTGlzdC5oICovLAogCQkJCUE4RDA2NTFDMEEyM0MxRkUw
MDVFNzIwMyAvKiBEZXByZWNhdGVkQ1NTT01WYWx1ZUxpc3QuaWRsICovLAogCQkJCTBGQTBBMEU1
MjNBRUFBMzUwMDBFRUI5NCAvKiBkaWFsb2cuY3NzICovLAorCQkJCTdDMzY1NTY5MjUwNkREQjcw
MEE3ODgyQiAvKiBEb2N1bWVudE9yU2hhZG93Um9vdFN0eWxlU2hlZXRzLmlkbCAqLywKIAkJCQk0
QkRBM0ZGODIxNTFCNkYyMDBGRDY2MDQgLyogRE9NQ1NTQ3VzdG9tUHJvcGVydHlEZXNjcmlwdG9y
LmggKi8sCiAJCQkJNEJEQTNGRkEyMTUxQjZGMzAwRkQ2NjA0IC8qIERPTUNTU0N1c3RvbVByb3Bl
cnR5RGVzY3JpcHRvci5pZGwgKi8sCiAJCQkJRkQ2Nzc3MzUxOTVDQUIyMDAwNzJFMEQzIC8qIERP
TUNTU05hbWVzcGFjZS5jcHAgKi8sCkBAIC0yOTE4Nyw2ICsyOTE5NCw3IEBACiAJCQkJQ0UwNTdG
QTMxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAgKi8sCiAJ
CQkJQ0UwNTdGQTQxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5o
ICovLAogCQkJCTlCMEZFODczMUQ5RTAyREYwMDRBOEFDQiAvKiBEb2N1bWVudE9yU2hhZG93Um9v
dC5pZGwgKi8sCisJCQkJN0MzNjU1NkMyNTA2REU5QzAwQTc4ODJCIC8qIERvY3VtZW50T3JTaGFk
b3dSb290UG9pbnRlckxvY2suaWRsICovLAogCQkJCUE4QzIyODBEMTFENEE1OTcwMEQ1QTdEMyAv
KiBEb2N1bWVudFBhcnNlci5jcHAgKi8sCiAJCQkJQkNDRkJBRTcwQjUxNTJFRDAwMDFGMUQ3IC8q
IERvY3VtZW50UGFyc2VyLmggKi8sCiAJCQkJQUQ2RTcxQUExNjY4ODk5RDAwMzIwQzEzIC8qIERv
Y3VtZW50U2hhcmVkT2JqZWN0UG9vbC5jcHAgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vRG9jdW1lbnRPclNoYWRvd1Jvb3RBbmltYXRpb25zLmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRPclNoYWRvd1Jvb3RBbmltYXRpb25zLmlk
bAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRPclNo
YWRvd1Jvb3RBbmltYXRpb25zLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL3dlYi1hbmltYXRpb25zLTEv
I2V4dGVuc2lvbnMtdG8tdGhlLWRvY3VtZW50b3JzaGFkb3dyb290LWludGVyZmFjZS1taXhpbgor
WworICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViQW5pbWF0aW9ucworXSBwYXJ0aWFsIGludGVyZmFj
ZSBtaXhpbiBEb2N1bWVudE9yU2hhZG93Um9vdCB7CisgICAgc2VxdWVuY2U8V2ViQW5pbWF0aW9u
PiBnZXRBbmltYXRpb25zKCk7Cit9OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQkocmV2aXNpb24gMjY2NzQwKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCSh3b3JraW5nIGNvcHkp
CkBAIC0xOTYsNiArMTk2LDMxIEBAIHN1YiBQcm9jZXNzRG9jdW1lbnQKICAgICBkaWUgIlByb2Nl
c3NpbmcgZG9jdW1lbnQgIiAuICR1c2VEb2N1bWVudC0+ZmlsZU5hbWUgLiAiIGRpZCBub3QgZ2Vu
ZXJhdGUgYW55dGhpbmcuIjsKIH0KIAorc3ViIEdlbmVyYXRlRW1wdHlIZWFkZXJBbmRDcHAKK3sK
KyAgICBteSAoJG9iamVjdCwgJHVzZURvY3VtZW50LCAkY29kZUdlbmVyYXRvcikgPSBAXzsKKwor
ICAgIG15ICR0YXJnZXROYW1lID0gZmlsZXBhcnNlKCR1c2VEb2N1bWVudC0+ZmlsZU5hbWUsICIu
aWRsIik7CisgICAgbXkgJHByZWZpeCA9ICRjb2RlR2VuZXJhdG9yLT5GaWxlTmFtZVByZWZpeCgp
OworCisgICAgbXkgJGhlYWRlck5hbWUgPSAiJHtwcmVmaXh9JHt0YXJnZXROYW1lfS5oIjsKKyAg
ICBteSAkY3BwTmFtZSA9ICIke3ByZWZpeH0ke3RhcmdldE5hbWV9LmNwcCI7CisgICAgbXkgJGNv
bnRlbnRzID0gIi8qCisgICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBqdXN0IHRvIHRlbGwgYnVp
bGQgc2NyaXB0cyB0aGF0ICR7aGVhZGVyTmFtZX0gYW5kCisgICAgJHtjcHBOYW1lfSBhcmUgY3Jl
YXRlZCBmb3IgJHt0YXJnZXROYW1lfS5pZGwsIGFuZCB0aHVzCisgICAgcHJldmVudCB0aGUgYnVp
bGQgc2NyaXB0cyBmcm9tIHRyeWluZyB0byBnZW5lcmF0ZSAke2hlYWRlck5hbWV9IGFuZAorICAg
ICR7Y3BwTmFtZX0gYXQgZXZlcnkgYnVpbGQuIFRoaXMgZmlsZSBtdXN0IG5vdCBiZSB0cmllZCB0
byBjb21waWxlLgorKi8KKyI7CisgICAgb3BlbiBGSCwgIj4gJHt1c2VPdXRwdXRIZWFkZXJzRGly
fS8ke2hlYWRlck5hbWV9IiBvciBkaWUgIkNhbm5vdCBvcGVuICR7aGVhZGVyTmFtZX1cbiI7Cisg
ICAgcHJpbnQgRkggJGNvbnRlbnRzOworICAgIGNsb3NlIEZIOworCisgICAgb3BlbiBGSCwgIj4g
JHt1c2VPdXRwdXREaXJ9LyR7Y3BwTmFtZX0iIG9yIGRpZSAiQ2Fubm90IG9wZW4gJHtjcHBOYW1l
fVxuIjsKKyAgICBwcmludCBGSCAkY29udGVudHM7CisgICAgY2xvc2UgRkg7Cit9CisKIHN1YiBQ
cm9jZXNzRGljdGlvbmFyeUFuZEVudW1lcmF0aW9uSW1wbGVtZW50ZWRBc092ZXJyaWRlcwogewog
ICAgIG15ICgkb2JqZWN0LCAkdXNlRG9jdW1lbnQpID0gQF87CkBAIC0yMTksNiArMjQ0LDExIEBA
IHN1YiBQcm9jZXNzSW50ZXJmYWNlcwogCiAgICAgZGllICJNdWx0aXBsZSBpbnRlcmZhY2VzIHBl
ciBkb2N1bWVudCBhcmUgbm90IHN1cHBvcnRlZCIgaWYgQHskdXNlRG9jdW1lbnQtPmludGVyZmFj
ZXN9ID4gMTsKICAgICBteSAkaW50ZXJmYWNlID0gJHVzZURvY3VtZW50LT5pbnRlcmZhY2VzLT5b
MF07CisgICAgCisgICAgaWYgKCRpbnRlcmZhY2UtPmlzTWl4aW4gfHwgJGludGVyZmFjZS0+aXNQ
YXJ0aWFsKSB7CisgICAgICAgICRvYmplY3QtPkdlbmVyYXRlRW1wdHlIZWFkZXJBbmRDcHAoJHVz
ZURvY3VtZW50LCAkY29kZUdlbmVyYXRvcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAg
ICAkb2JqZWN0LT5Qcm9jZXNzSW50ZXJmYWNlU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzKCRpbnRl
cmZhY2UsICR1c2VEb2N1bWVudCk7CiAgICAgJG9iamVjdC0+UHJvY2Vzc0RpY3Rpb25hcnlBbmRF
bnVtZXJhdGlvbkltcGxlbWVudGVkQXNPdmVycmlkZXMoJHVzZURvY3VtZW50KTsKQEAgLTI2Miw2
ICsyOTIsMTEgQEAgc3ViIFByb2Nlc3NEaWN0aW9uYXJpZXMKICAgICAgICAgZGllICJNdWx0aXBs
ZSBkaWN0aW9uYXJpZXMgcGVyIGRvY3VtZW50IGFyZSBvbmx5IHN1cHBvcnRlZCBpZiBvbmUgbWF0
Y2hlcyB0aGUgZmlsZW5hbWUiIHVubGVzcyAkZGljdGlvbmFyeTsKICAgICB9CiAKKyAgICBpZiAo
JGRpY3Rpb25hcnktPmlzUGFydGlhbCkgeworICAgICAgICAkb2JqZWN0LT5HZW5lcmF0ZUVtcHR5
SGVhZGVyQW5kQ3BwKCR1c2VEb2N1bWVudCwgJGNvZGVHZW5lcmF0b3IpOworICAgICAgICByZXR1
cm47CisgICAgfQorCiAgICAgJG9iamVjdC0+UHJvY2Vzc0RpY3Rpb25hcnlTdXBwbGVtZW50YWxE
ZXBlbmRlbmNpZXMoJGRpY3Rpb25hcnksICR1c2VEb2N1bWVudCk7CiAgICAgJG9iamVjdC0+UHJv
Y2Vzc0RpY3Rpb25hcnlBbmRFbnVtZXJhdGlvbkltcGxlbWVudGVkQXNPdmVycmlkZXMoJHVzZURv
Y3VtZW50KTsKICAgICAKQEAgLTM0Myw5ICszNzgsNiBAQCBzdWIgUHJvY2Vzc0ludGVyZmFjZVN1
cHBsZW1lbnRhbERlcGVuZGVuCiAKICAgICBteSAkdGFyZ2V0RmlsZU5hbWUgPSBmaWxlcGFyc2Uo
JHRhcmdldERvY3VtZW50LT5maWxlTmFtZSk7CiAKLSAgICAjIEZJWE1FOiBBZGQgc3VwcG9ydCBm
b3IgcHJvY2Vzc2luZyByZWN1cnNpdmUgc3VwcGxlbWVudGFsIGRlcGVuZGVuY2llcwotICAgICMg
dG8gcHJvdmlkZSBzdXBwb3J0IGZvciBwYXJ0aWFsIGludGVyZmFjZSBtaXhpbnMuCi0KICAgICAj
IEZJWE1FOiBDdXJyZW50bHksIHdlIHJlcXVpcmUgYWxsIHRoZSBpbmNsdWRlcyBzdGF0ZW1lbnRz
IHRvIGJlIGluIHRoZQogICAgICMgc2FtZSBmaWxlIGFzIHRoZSBpbnRlcmZhY2UgdGhleSBhcmUg
YmVpbmcgbWl4ZWQgaW50bywgYnV0IHRoYXQgcmVzdHJpY3Rpb24KICAgICAjIGlzIGFydGlmaWNp
YWwgYW5kIHdlIGNvdWxkIGFkZCBzdXBwb3J0IGZvciBpbmNsdWRlcyBzdGF0ZW1lbnRzIGVsc2V3
aGVyZS4KQEAgLTM2MCwxMCArMzkyLDYgQEAgc3ViIFByb2Nlc3NJbnRlcmZhY2VTdXBwbGVtZW50
YWxEZXBlbmRlbgogICAgICAgICB9CiAgICAgfQogCi0gICAgbXkgJGV4cG9zZWRBdHRyaWJ1dGUg
PSAkdGFyZ2V0SW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRXhwb3NlZCJ9IHx8ICJX
aW5kb3ciOwotICAgICRleHBvc2VkQXR0cmlidXRlID0gc3Vic3RyKCRleHBvc2VkQXR0cmlidXRl
LCAxLCAtMSkgaWYgc3Vic3RyKCRleHBvc2VkQXR0cmlidXRlLCAwLCAxKSBlcSAiKCI7Ci0gICAg
bXkgQHRhcmdldEdsb2JhbENvbnRleHRzID0gc3BsaXQoIiwiLCAkZXhwb3NlZEF0dHJpYnV0ZSk7
Ci0KICAgICBmb3JlYWNoIG15ICRpZGxGaWxlIChAeyRzdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMt
PnskdGFyZ2V0RmlsZU5hbWV9fSkgewogICAgICAgICBuZXh0IGlmIGZpbGVwYXJzZSgkaWRsRmls
ZSkgZXEgJHRhcmdldEZpbGVOYW1lOwogCkBAIC0zNzQsMTUgKzQwMiwyMSBAQCBzdWIgUHJvY2Vz
c0ludGVyZmFjZVN1cHBsZW1lbnRhbERlcGVuZGVuCiAgICAgICAgIGZvcmVhY2ggbXkgJGludGVy
ZmFjZSAoQHskZG9jdW1lbnQtPmludGVyZmFjZXN9KSB7CiAgICAgICAgICAgICBuZXh0IHVubGVz
cyAkb2JqZWN0LT5Jc1ZhbGlkU3VwcGxlbWVudGFsSW50ZXJmYWNlKCRpbnRlcmZhY2UsICR0YXJn
ZXRJbnRlcmZhY2UsIFwlaW5jbHVkZXNNYXApOwogCisgICAgICAgICAgICBpZiAoJGludGVyZmFj
ZS0+aXNNaXhpbiAmJiAhJGludGVyZmFjZS0+aXNQYXJ0aWFsKSB7CisgICAgICAgICAgICAgICAg
IyBSZWN1cnNpdmVseSBwcm9jZXNzIGFueSBzdXBwbGVtZW50YWwgZGVwZW5kZW5jaWVzIGZvciBl
YWNoIHZhbGlkIG1peGluLiBUaGlzCisgICAgICAgICAgICAgICAgIyBhbGxvd3MgcGFydGlhbCBw
YXJ0aWFsIGludGVyZmFjZSBtaXhpbnMgdG8gYmUgbWVyZ2VkIGludG8gdGhlIG1peGluLgorICAg
ICAgICAgICAgICAgICRvYmplY3QtPlByb2Nlc3NJbnRlcmZhY2VTdXBwbGVtZW50YWxEZXBlbmRl
bmNpZXMoJGludGVyZmFjZSwgJGRvY3VtZW50KTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAg
ICAgIyBTdXBwb3J0IGZvciBhdHRyaWJ1dGVzIGZyb20gc3VwcGxlbWVudGFsIGludGVyZmFjZXMu
CiAgICAgICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+YXR0cmli
dXRlc30pIHsKLSAgICAgICAgICAgICAgICBuZXh0IHVubGVzcyBzaG91bGRQcm9wZXJ0eUJlRXhw
b3NlZCgkYXR0cmlidXRlLCBcQHRhcmdldEdsb2JhbENvbnRleHRzKTsKKyAgICAgICAgICAgICAg
ICBuZXh0IHVubGVzcyAkdGFyZ2V0SW50ZXJmYWNlLT5pc01peGluIHx8IHNob3VsZFByb3BlcnR5
QmVFeHBvc2VkKCRhdHRyaWJ1dGUsICR0YXJnZXRJbnRlcmZhY2UpOwogCi0gICAgICAgICAgICAg
ICAgaWYgKCRpbnRlcmZhY2UtPmlzUGFydGlhbCkgeworICAgICAgICAgICAgICAgIGlmICgkaW50
ZXJmYWNlLT5pc1BhcnRpYWwgJiYgISRpbnRlcmZhY2UtPmlzTWl4aW4pIHsKICAgICAgICAgICAg
ICAgICAgICAgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnki
fSA9ICRpbnRlcmZhY2VOYW1lIGlmICEkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntS
ZWZsZWN0fTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBpZiAoJGludGVy
ZmFjZS0+aXNNaXhpbikgeworICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5pc01peGlu
ICYmICEkaW50ZXJmYWNlLT5pc1BhcnRpYWwpIHsKICAgICAgICAgICAgICAgICAgICAgIyBBZGQg
aW5jbHVkZXMgc3RhdGVtZW50IHNwZWNpZmljIGV4dGVuZGVkIGF0dHJpYnV0ZXMgdG8gZWFjaCBh
dHRyaWJ1dGUuCiAgICAgICAgICAgICAgICAgICAgICRvYmplY3QtPk1lcmdlRXh0ZW5kZWRBdHRy
aWJ1dGVzRnJvbVN1cHBsZW1lbnRhbCgkaW5jbHVkZXNNYXB7JGludGVyZmFjZS0+dHlwZS0+bmFt
ZX0tPmV4dGVuZGVkQXR0cmlidXRlcywgJGF0dHJpYnV0ZSwgImF0dHJpYnV0ZSIpOwogICAgICAg
ICAgICAgICAgIH0KQEAgLTM5NSwxMyArNDI5LDEzIEBAIHN1YiBQcm9jZXNzSW50ZXJmYWNlU3Vw
cGxlbWVudGFsRGVwZW5kZW4KIAogICAgICAgICAgICAgIyBTdXBwb3J0IGZvciBvcGVyYXRpb25z
IGZyb20gc3VwcGxlbWVudGFsIGludGVyZmFjZXMuCiAgICAgICAgICAgICBmb3JlYWNoIG15ICRv
cGVyYXRpb24gKEB7JGludGVyZmFjZS0+b3BlcmF0aW9uc30pIHsKLSAgICAgICAgICAgICAgICBu
ZXh0IHVubGVzcyBzaG91bGRQcm9wZXJ0eUJlRXhwb3NlZCgkb3BlcmF0aW9uLCBcQHRhcmdldEds
b2JhbENvbnRleHRzKTsKKyAgICAgICAgICAgICAgICBuZXh0IHVubGVzcyAkdGFyZ2V0SW50ZXJm
YWNlLT5pc01peGluIHx8IHNob3VsZFByb3BlcnR5QmVFeHBvc2VkKCRvcGVyYXRpb24sICR0YXJn
ZXRJbnRlcmZhY2UpOwogCi0gICAgICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmlzUGFydGlh
bCkgeworICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5pc1BhcnRpYWwgJiYgISRpbnRl
cmZhY2UtPmlzTWl4aW4pIHsKICAgICAgICAgICAgICAgICAgICAgJG9wZXJhdGlvbi0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifSA9ICRpbnRlcmZhY2VOYW1lOwogICAgICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5pc01peGluKSB7
CisgICAgICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmlzTWl4aW4gJiYgISRpbnRlcmZhY2Ut
PmlzUGFydGlhbCkgewogICAgICAgICAgICAgICAgICAgICAjIEFkZCBpbmNsdWRlcyBzdGF0ZW1l
bnQgc3BlY2lmaWMgZXh0ZW5kZWQgYXR0cmlidXRlcyB0byBlYWNoIG9wZXJhdGlvbi4KICAgICAg
ICAgICAgICAgICAgICAgJG9iamVjdC0+TWVyZ2VFeHRlbmRlZEF0dHJpYnV0ZXNGcm9tU3VwcGxl
bWVudGFsKCRpbmNsdWRlc01hcHskaW50ZXJmYWNlLT50eXBlLT5uYW1lfS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLCAkb3BlcmF0aW9uLCAib3BlcmF0aW9uIik7CiAgICAgICAgICAgICAgICAgfQpAQCAt
NDE0LDEzICs0NDgsMTMgQEAgc3ViIFByb2Nlc3NJbnRlcmZhY2VTdXBwbGVtZW50YWxEZXBlbmRl
bgogCiAgICAgICAgICAgICAjIFN1cHBvcnQgZm9yIGNvbnN0YW50cyBmcm9tIHN1cHBsZW1lbnRh
bCBpbnRlcmZhY2VzLgogICAgICAgICAgICAgZm9yZWFjaCBteSAkY29uc3RhbnQgKEB7JGludGVy
ZmFjZS0+Y29uc3RhbnRzfSkgewotICAgICAgICAgICAgICAgIG5leHQgdW5sZXNzIHNob3VsZFBy
b3BlcnR5QmVFeHBvc2VkKCRjb25zdGFudCwgXEB0YXJnZXRHbG9iYWxDb250ZXh0cyk7CisgICAg
ICAgICAgICAgICAgbmV4dCB1bmxlc3MgJHRhcmdldEludGVyZmFjZS0+aXNNaXhpbiB8fCBzaG91
bGRQcm9wZXJ0eUJlRXhwb3NlZCgkY29uc3RhbnQsICR0YXJnZXRJbnRlcmZhY2UpOwogCi0gICAg
ICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmlzUGFydGlhbCkgeworICAgICAgICAgICAgICAg
IGlmICgkaW50ZXJmYWNlLT5pc1BhcnRpYWwgJiYgISRpbnRlcmZhY2UtPmlzTWl4aW4pIHsKICAg
ICAgICAgICAgICAgICAgICAgJGNvbnN0YW50LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVt
ZW50ZWRCeSJ9ID0gJGludGVyZmFjZU5hbWU7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmlzTWl4aW4pIHsKKyAgICAgICAgICAgICAgICBpZiAo
JGludGVyZmFjZS0+aXNNaXhpbiAmJiAhJGludGVyZmFjZS0+aXNQYXJ0aWFsKSB7CiAgICAgICAg
ICAgICAgICAgICAgICMgQWRkIGluY2x1ZGVzIHN0YXRlbWVudCBzcGVjaWZpYyBleHRlbmRlZCBh
dHRyaWJ1dGVzIHRvIGVhY2ggb3BlcmF0aW9uLgogICAgICAgICAgICAgICAgICAgICAkb2JqZWN0
LT5NZXJnZUV4dGVuZGVkQXR0cmlidXRlc0Zyb21TdXBwbGVtZW50YWwoJGluY2x1ZGVzTWFweyRp
bnRlcmZhY2UtPnR5cGUtPm5hbWV9LT5leHRlbmRlZEF0dHJpYnV0ZXMsICRjb25zdGFudCwgImNv
bnN0YW50Iik7CiAgICAgICAgICAgICAgICAgfQpAQCAtNDQwLDEwICs0NzQsNiBAQCBzdWIgUHJv
Y2Vzc0RpY3Rpb25hcnlTdXBwbGVtZW50YWxEZXBlbmRlCiAKICAgICByZXR1cm4gdW5sZXNzICRz
dXBwbGVtZW50YWxEZXBlbmRlbmNpZXM7CiAKLSAgICBteSAkZXhwb3NlZEF0dHJpYnV0ZSA9ICR0
YXJnZXREaWN0aW9uYXJ5LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRXhwb3NlZCJ9IHx8ICJXaW5k
b3ciOwotICAgICRleHBvc2VkQXR0cmlidXRlID0gc3Vic3RyKCRleHBvc2VkQXR0cmlidXRlLCAx
LCAtMSkgaWYgc3Vic3RyKCRleHBvc2VkQXR0cmlidXRlLCAwLCAxKSBlcSAiKCI7Ci0gICAgbXkg
QHRhcmdldEdsb2JhbENvbnRleHRzID0gc3BsaXQoIiwiLCAkZXhwb3NlZEF0dHJpYnV0ZSk7Ci0K
ICAgICBteSAkdGFyZ2V0RmlsZU5hbWUgPSBmaWxlcGFyc2UoJHRhcmdldERvY3VtZW50LT5maWxl
TmFtZSk7CiAgICAgZm9yZWFjaCBteSAkaWRsRmlsZSAoQHskc3VwcGxlbWVudGFsRGVwZW5kZW5j
aWVzLT57JHRhcmdldEZpbGVOYW1lfX0pIHsKICAgICAgICAgbmV4dCBpZiBmaWxlcGFyc2UoJGlk
bEZpbGUpIGVxICR0YXJnZXRGaWxlTmFtZTsKQEAgLTQ1Nyw3ICs0ODcsNyBAQCBzdWIgUHJvY2Vz
c0RpY3Rpb25hcnlTdXBwbGVtZW50YWxEZXBlbmRlCiAKICAgICAgICAgICAgICMgU3VwcG9ydCBm
b3IgbWVtYmVycyBvZiBwYXJ0aWFsIGRpY3Rpb25hcmllcy4KICAgICAgICAgICAgIGZvcmVhY2gg
bXkgJG1lbWJlciAoQHskZGljdGlvbmFyeS0+bWVtYmVyc30pIHsKLSAgICAgICAgICAgICAgICBu
ZXh0IHVubGVzcyBzaG91bGRQcm9wZXJ0eUJlRXhwb3NlZCgkbWVtYmVyLCBcQHRhcmdldEdsb2Jh
bENvbnRleHRzKTsKKyAgICAgICAgICAgICAgICBuZXh0IHVubGVzcyBzaG91bGRQcm9wZXJ0eUJl
RXhwb3NlZCgkbWVtYmVyLCAkdGFyZ2V0RGljdGlvbmFyeSk7CiAKICAgICAgICAgICAgICAgICAk
bWVtYmVyLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9ID0gJGRpY3Rpb25h
cnlOYW1lOwogCkBAIC00NzQsNyArNTA0LDExIEBAIHN1YiBQcm9jZXNzRGljdGlvbmFyeVN1cHBs
ZW1lbnRhbERlcGVuZGUKICMgb24gd2hpY2ggZ2xvYmFsIGNvbnRleHRzIHRoZXkgc2hvdWxkIGJl
IGV4cG9zZWQuCiBzdWIgc2hvdWxkUHJvcGVydHlCZUV4cG9zZWQKIHsKLSAgICBteSAoJGNvbnRl
eHQsICR0YXJnZXRHbG9iYWxDb250ZXh0cykgPSBAXzsKKyAgICBteSAoJGNvbnRleHQsICR0YXJn
ZXQpID0gQF87CisKKyAgICBteSAkZXhwb3NlZEF0dHJpYnV0ZSA9ICR0YXJnZXQtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJFeHBvc2VkIn0gfHwgIldpbmRvdyI7CisgICAgJGV4cG9zZWRBdHRyaWJ1
dGUgPSBzdWJzdHIoJGV4cG9zZWRBdHRyaWJ1dGUsIDEsIC0xKSBpZiBzdWJzdHIoJGV4cG9zZWRB
dHRyaWJ1dGUsIDAsIDEpIGVxICIoIjsKKyAgICBteSBAdGFyZ2V0R2xvYmFsQ29udGV4dHMgPSBz
cGxpdCgiLCIsICRleHBvc2VkQXR0cmlidXRlKTsKIAogICAgIG15ICRleHBvc2VkID0gJGNvbnRl
eHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0V4cG9zZWR9OwogCkBAIC00ODMsMjIgKzUxNywxMSBA
QCBzdWIgc2hvdWxkUHJvcGVydHlCZUV4cG9zZWQKICAgICAkZXhwb3NlZCA9IHN1YnN0cigkZXhw
b3NlZCwgMSwgLTEpIGlmIHN1YnN0cigkZXhwb3NlZCwgMCwgMSkgZXEgIigiOwogICAgIG15IEBz
b3VyY2VHbG9iYWxDb250ZXh0cyA9IHNwbGl0KCIsIiwgJGV4cG9zZWQpOwogCi0gICAgZm9yIG15
ICR0YXJnZXRHbG9iYWxDb250ZXh0IChAJHRhcmdldEdsb2JhbENvbnRleHRzKSB7CisgICAgZm9y
ZWFjaCBteSAkdGFyZ2V0R2xvYmFsQ29udGV4dCAoQHRhcmdldEdsb2JhbENvbnRleHRzKSB7CiAg
ICAgICAgIHJldHVybiAxIGlmIGdyZXAoL14kdGFyZ2V0R2xvYmFsQ29udGV4dCQvLCBAc291cmNl
R2xvYmFsQ29udGV4dHMpOwogICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQotc3ViIEZpbGVOYW1l
UHJlZml4Ci17Ci0gICAgbXkgJG9iamVjdCA9IHNoaWZ0OwogCi0gICAgbXkgJGlmYWNlTmFtZSA9
ICJDb2RlR2VuZXJhdG9yIiAuICR1c2VHZW5lcmF0b3I7Ci0gICAgcmVxdWlyZSAkaWZhY2VOYW1l
IC4gIi5wbSI7Ci0KLSAgICAjIER5bmFtaWNhbGx5IGxvYWQgZXh0ZXJuYWwgY29kZSBnZW5lcmF0
aW9uIHBlcmwgbW9kdWxlCi0gICAgJGNvZGVHZW5lcmF0b3IgPSAkaWZhY2VOYW1lLT5uZXcoJG9i
amVjdCwgJHdyaXRlRGVwZW5kZW5jaWVzLCAkdmVyYm9zZSk7Ci0gICAgcmV0dXJuICRjb2RlR2Vu
ZXJhdG9yLT5GaWxlTmFtZVByZWZpeCgpOworICAgIHJldHVybiAwOwogfQogCiBzdWIgVXBkYXRl
RmlsZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5k
aW5ncy5wbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL2dl
bmVyYXRlLWJpbmRpbmdzLnBsCShyZXZpc2lvbiAyNjY3NDApCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsCSh3b3JraW5nIGNvcHkpCkBAIC01
NSw3ICs1NSw2IEBAIG15ICRwcmVwcm9jZXNzb3I7CiBteSAkd3JpdGVEZXBlbmRlbmNpZXM7CiBt
eSAkdmVyYm9zZTsKIG15ICRzdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZTsKLW15ICRhZGRpdGlv
bmFsSWRsRmlsZXM7CiBteSAkaWRsQXR0cmlidXRlc0ZpbGU7CiAKIEdldE9wdGlvbnMoJ2luY2x1
ZGU9c0AnID0+IFxAaWRsRGlyZWN0b3JpZXMsCkBAIC02OSw3ICs2OCw2IEBAIEdldE9wdGlvbnMo
J2luY2x1ZGU9c0AnID0+IFxAaWRsRGlyZWN0b3IKICAgICAgICAgICAgJ3ZlcmJvc2UnID0+IFwk
dmVyYm9zZSwKICAgICAgICAgICAgJ3dyaXRlLWRlcGVuZGVuY2llcycgPT4gXCR3cml0ZURlcGVu
ZGVuY2llcywKICAgICAgICAgICAgJ3N1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlPXMnID0+IFwk
c3VwcGxlbWVudGFsRGVwZW5kZW5jeUZpbGUsCi0gICAgICAgICAgICdhZGRpdGlvbmFsSWRsRmls
ZXM9cycgPT4gXCRhZGRpdGlvbmFsSWRsRmlsZXMsCiAgICAgICAgICAgICdpZGxBdHRyaWJ1dGVz
RmlsZT1zJyA9PiBcJGlkbEF0dHJpYnV0ZXNGaWxlKTsKIAogZGllKCdNdXN0IHNwZWNpZnkgaW5w
dXQgZmlsZS4nKSB1bmxlc3MgQEFSR1Y7CkBAIC0xMDUsMzMgKzEwMywxMiBAQCBzdWIgZ2VuZXJh
dGVCaW5kaW5ncwogICAgICAgICAjCiAgICAgICAgICMgVGhlIGFib3ZlIGluZGljYXRlcyB0aGF0
IERPTVdpbmRvdy5pZGwgaXMgc3VwcGxlbWVudGVkIGJ5IFAuaWRsLCBRLmlkbCBhbmQgUi5pZGws
CiAgICAgICAgICMgRG9jdW1lbnQuaWRsIGlzIHN1cHBsZW1lbnRlZCBieSBTLmlkbCwgYW5kIEV2
ZW50LmlkbCBpcyBzdXBwbGVtZW50ZWQgYnkgbm8gSURMcy4KLSAgICAgICAgIyBUaGUgSURMIHRo
YXQgc3VwcGxlbWVudHMgYW5vdGhlciBJREwgKGUuZy4gUC5pZGwpIG5ldmVyIGFwcGVhcnMgaW4g
dGhlIGRlcGVuZGVuY3kgZmlsZS4KICAgICAgICAgb3BlbiBGSCwgIjwgJHN1cHBsZW1lbnRhbERl
cGVuZGVuY3lGaWxlIiBvciBkaWUgIkNhbm5vdCBvcGVuICRzdXBwbGVtZW50YWxEZXBlbmRlbmN5
RmlsZVxuIjsKICAgICAgICAgd2hpbGUgKG15ICRsaW5lID0gPEZIPikgewogICAgICAgICAgICAg
bXkgKCRpZGxGaWxlLCBAZm9sbG93aW5nSWRsRmlsZXMpID0gc3BsaXQoL1xzKy8sICRsaW5lKTsK
ICAgICAgICAgICAgICRzdXBwbGVtZW50YWxEZXBlbmRlbmNpZXN7ZmlsZXBhcnNlKCRpZGxGaWxl
KX0gPSBbc29ydCBAZm9sbG93aW5nSWRsRmlsZXNdIGlmICRpZGxGaWxlOwogICAgICAgICB9CiAg
ICAgICAgIGNsb3NlIEZIOwotCi0gICAgICAgIGlmIChleGlzdHMgJHN1cHBsZW1lbnRhbERlcGVu
ZGVuY2llc3tmaWxlcGFyc2UoJHRhcmdldElkbEZpbGUpfSkgewotICAgICAgICAgICAgJGlkbEZv
dW5kID0gMTsKLSAgICAgICAgfQotCi0gICAgICAgICMgJGFkZGl0aW9uYWxJZGxGaWxlcyBpcyBs
aXN0IG9mIElETCBmaWxlcyB3aGljaCBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluCi0gICAgICAg
ICMgRGVyaXZlZFNvdXJjZXMqLmNwcCAoaS5lLiB0aGV5IGFyZSBub3QgZGVzY3JpYmVkIGluIHRo
ZSBzdXBwbGVtZW50YWwKLSAgICAgICAgIyBkZXBlbmRlbmN5IGZpbGUpIGJ1dCBzaG91bGQgZ2Vu
ZXJhdGUgLmggYW5kIC5jcHAgZmlsZXMuCi0gICAgICAgIGlmICghJGlkbEZvdW5kIGFuZCAkYWRk
aXRpb25hbElkbEZpbGVzKSB7Ci0gICAgICAgICAgICBteSBAaWRsRmlsZXMgPSBzaGVsbHdvcmRz
KCRhZGRpdGlvbmFsSWRsRmlsZXMpOwotICAgICAgICAgICAgJGlkbEZvdW5kID0gZ3JlcCB7ICRf
IGFuZCBmaWxlcGFyc2UoJF8pIGVxIGZpbGVwYXJzZSgkdGFyZ2V0SWRsRmlsZSkgfSBAaWRsRmls
ZXM7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoISRpZGxGb3VuZCkgewotICAgICAgICAgICAg
bXkgJGNvZGVHZW4gPSBDb2RlR2VuZXJhdG9yLT5uZXcoXEBpZGxEaXJlY3RvcmllcywgJGdlbmVy
YXRvciwgJG91dHB1dERpcmVjdG9yeSwgJG91dHB1dEhlYWRlcnNEaXJlY3RvcnksICRwcmVwcm9j
ZXNzb3IsICR3cml0ZURlcGVuZGVuY2llcywgJHZlcmJvc2UpOwotCi0gICAgICAgICAgICAjIFdl
IGdlbmVyYXRlIGVtcHR5IC5oIGFuZCAuY3BwIGZpbGVzIGp1c3QgdG8gdGVsbCBidWlsZCBzY3Jp
cHRzIHRoYXQgLmggYW5kIC5jcHAgZmlsZXMgYXJlIGNyZWF0ZWQuCi0gICAgICAgICAgICBnZW5l
cmF0ZUVtcHR5SGVhZGVyQW5kQ3BwKCRjb2RlR2VuLT5GaWxlTmFtZVByZWZpeCgpLCAkdGFyZ2V0
SW50ZXJmYWNlTmFtZSwgJG91dHB1dEhlYWRlcnNEaXJlY3RvcnksICRvdXRwdXREaXJlY3Rvcnkp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CiAgICAgfQogCiAgICAgbXkgJGlucHV0
OwpAQCAtMTU0LDI1ICsxMzEsMyBAQCBzdWIgZ2VuZXJhdGVCaW5kaW5ncwogICAgIG15ICRjb2Rl
R2VuID0gQ29kZUdlbmVyYXRvci0+bmV3KFxAaWRsRGlyZWN0b3JpZXMsICRnZW5lcmF0b3IsICRv
dXRwdXREaXJlY3RvcnksICRvdXRwdXRIZWFkZXJzRGlyZWN0b3J5LCAkcHJlcHJvY2Vzc29yLCAk
d3JpdGVEZXBlbmRlbmNpZXMsICR2ZXJib3NlLCAkdGFyZ2V0SWRsRmlsZSwgJGlkbEF0dHJpYnV0
ZXMsIFwlc3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzKTsKICAgICAkY29kZUdlbi0+UHJvY2Vzc0Rv
Y3VtZW50KCR0YXJnZXREb2N1bWVudCwgJGRlZmluZXMpOwogfQotCi1zdWIgZ2VuZXJhdGVFbXB0
eUhlYWRlckFuZENwcAotewotICAgIG15ICgkcHJlZml4LCAkdGFyZ2V0SW50ZXJmYWNlTmFtZSwg
JG91dHB1dEhlYWRlcnNEaXJlY3RvcnksICRvdXRwdXREaXJlY3RvcnkpID0gQF87Ci0KLSAgICBt
eSAkaGVhZGVyTmFtZSA9ICIke3ByZWZpeH0ke3RhcmdldEludGVyZmFjZU5hbWV9LmgiOwotICAg
IG15ICRjcHBOYW1lID0gIiR7cHJlZml4fSR7dGFyZ2V0SW50ZXJmYWNlTmFtZX0uY3BwIjsKLSAg
ICBteSAkY29udGVudHMgPSAiLyoKLSAgICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGp1c3QgdG8g
dGVsbCBidWlsZCBzY3JpcHRzIHRoYXQgJGhlYWRlck5hbWUgYW5kCi0gICAgJGNwcE5hbWUgYXJl
IGNyZWF0ZWQgZm9yICR7dGFyZ2V0SW50ZXJmYWNlTmFtZX0uaWRsLCBhbmQgdGh1cwotICAgIHBy
ZXZlbnQgdGhlIGJ1aWxkIHNjcmlwdHMgZnJvbSB0cnlpbmcgdG8gZ2VuZXJhdGUgJGhlYWRlck5h
bWUgYW5kCi0gICAgJGNwcE5hbWUgYXQgZXZlcnkgYnVpbGQuIFRoaXMgZmlsZSBtdXN0IG5vdCBi
ZSB0cmllZCB0byBjb21waWxlLgotKi8KLSI7Ci0gICAgb3BlbiBGSCwgIj4gJHtvdXRwdXRIZWFk
ZXJzRGlyZWN0b3J5fS8ke2hlYWRlck5hbWV9IiBvciBkaWUgIkNhbm5vdCBvcGVuICRoZWFkZXJO
YW1lXG4iOwotICAgIHByaW50IEZIICRjb250ZW50czsKLSAgICBjbG9zZSBGSDsKLQotICAgIG9w
ZW4gRkgsICI+ICR7b3V0cHV0RGlyZWN0b3J5fS8ke2NwcE5hbWV9IiBvciBkaWUgIkNhbm5vdCBv
cGVuICRjcHBOYW1lXG4iOwotICAgIHByaW50IEZIICRjb250ZW50czsKLSAgICBjbG9zZSBGSDsK
LX0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxz
LnBsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJv
Y2Vzcy1pZGxzLnBsCShyZXZpc2lvbiAyNjY3NDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDcg
QEAKICMhL3Vzci9iaW4vZW52IHBlcmwKICMKICMgQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogIyBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjU0LDYgKzI1NSwx
MiBAQCBHZW5lcmF0ZVBhcnRpYWxJbnRlcmZhY2UoIldvcmtsZXRHbG9iYWxTCiBHZW5lcmF0ZVBh
cnRpYWxJbnRlcmZhY2UoIlBhaW50V29ya2xldEdsb2JhbFNjb3BlIiwgJHBhaW50V29ya2xldEds
b2JhbFNjb3BlQ29uc3RydWN0b3JzQ29kZSwgJHBhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3JzRmlsZSk7CiBHZW5lcmF0ZVBhcnRpYWxJbnRlcmZhY2UoJHRlc3RHbG9iYWxDb250ZXh0
TmFtZSwgJHRlc3RHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0NvZGUsICR0ZXN0R2xvYmFsU2NvcGVD
b25zdHJ1Y3RvcnNGaWxlKSBpZiBkZWZpbmVkKCR0ZXN0R2xvYmFsQ29udGV4dE5hbWUpOwogCitp
ZiAoJGlzb1N1YnNwYWNlc0hlYWRlckZpbGUpIHsKKyAgICAkaXNvU3Vic3BhY2VzSGVhZGVyQ29k
ZSAuPSAifTtcbiI7CisgICAgJGlzb1N1YnNwYWNlc0hlYWRlckNvZGUgLj0gIn0gLy8gbmFtZXNw
YWNlIFdlYkNvcmVcbiI7CisgICAgV3JpdGVGaWxlSWZDaGFuZ2VkKCRpc29TdWJzcGFjZXNIZWFk
ZXJGaWxlLCAkaXNvU3Vic3BhY2VzSGVhZGVyQ29kZSk7Cit9CisKICMgUmVzb2x2ZXMgcGFydGlh
bCBpbnRlcmZhY2VzIGFuZCBpbmNsdWRlIGRlcGVuZGVuY2llcy4KIGZvcmVhY2ggbXkgJGlkbEZp
bGVQYXRoIChzb3J0IGtleXMgJXN1cHBsZW1lbnRhbERlcGVuZGVuY2llcykgewogICAgIG15ICRi
YXNlRmlsZXMgPSAkc3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzeyRpZGxGaWxlUGF0aH07CkBAIC0y
NjEsMTMgKzI2OCw2IEBAIGZvcmVhY2ggbXkgJGlkbEZpbGVQYXRoIChzb3J0IGtleXMgJXN1cHAK
ICAgICAgICAgbXkgJHRhcmdldElkbEZpbGVQYXRoID0gJGludGVyZmFjZU5hbWVUb0lkbEZpbGVQ
YXRoeyRiYXNlRmlsZX0gb3IgZGllICIke2Jhc2VGaWxlfS5pZGwgbm90IGZvdW5kLCBidXQgaXQg
aXMgc3VwcGxlbWVudGVkIGJ5ICRpZGxGaWxlUGF0aCI7CiAgICAgICAgIHB1c2goQHskc3VwcGxl
bWVudGFsc3skdGFyZ2V0SWRsRmlsZVBhdGh9fSwgJGlkbEZpbGVQYXRoKTsKICAgICB9Ci0gICAg
ZGVsZXRlICRzdXBwbGVtZW50YWxzeyRpZGxGaWxlUGF0aH07Ci19Ci0KLWlmICgkaXNvU3Vic3Bh
Y2VzSGVhZGVyRmlsZSkgewotICAgICRpc29TdWJzcGFjZXNIZWFkZXJDb2RlIC49ICJ9O1xuIjsK
LSAgICAkaXNvU3Vic3BhY2VzSGVhZGVyQ29kZSAuPSAifSAvLyBuYW1lc3BhY2UgV2ViQ29yZVxu
IjsKLSAgICBXcml0ZUZpbGVJZkNoYW5nZWQoJGlzb1N1YnNwYWNlc0hlYWRlckZpbGUsICRpc29T
dWJzcGFjZXNIZWFkZXJDb2RlKTsKIH0KIAogIyBPdXRwdXRzIHRoZSBkZXBlbmRlbmN5LgpAQCAt
MjgwLDcgKzI4MCw2IEBAIGlmICgkaXNvU3Vic3BhY2VzSGVhZGVyRmlsZSkgewogIwogIyBUaGUg
YWJvdmUgaW5kaWNhdGVzIHRoYXQgRE9NV2luZG93LmlkbCBpcyBzdXBwbGVtZW50ZWQgYnkgUC5p
ZGwsIFEuaWRsIGFuZCBSLmlkbCwKICMgRG9jdW1lbnQuaWRsIGlzIHN1cHBsZW1lbnRlZCBieSBT
LmlkbCwgYW5kIEV2ZW50LmlkbCBpcyBzdXBwbGVtZW50ZWQgYnkgbm8gSURMcy4KLSMgVGhlIElE
TCB0aGF0IHN1cHBsZW1lbnRzIGFub3RoZXIgSURMIChlLmcuIFAuaWRsKSBuZXZlciBhcHBlYXJz
IGluIHRoZSBkZXBlbmRlbmN5IGZpbGUuCiBteSAkZGVwZW5kZW5jaWVzID0gIiI7CiBmb3JlYWNo
IG15ICRpZGxGaWxlUGF0aCAoc29ydCBrZXlzICVzdXBwbGVtZW50YWxzKSB7CiAgICAgJGRlcGVu
ZGVuY2llcyAuPSAiJGlkbEZpbGVQYXRoIEB7JHN1cHBsZW1lbnRhbHN7JGlkbEZpbGVQYXRofX1c
biI7CkBAIC00NjAsOCArNDU5LDEzIEBAIHN1YiBnZXRQYXJ0aWFsTmFtZXNGcm9tSURMCiAgICAg
bXkgJGZpbGVDb250ZW50cyA9ICRpZGxGaWxlLT5maWxlQ29udGVudHM7CiAKICAgICBteSBAcGFy
dGlhbE5hbWVzID0gKCk7CisgICAgd2hpbGUgKCRmaWxlQ29udGVudHMgPX4gL3BhcnRpYWxccytp
bnRlcmZhY2VccyttaXhpblxzKyhcdyspL21nKSB7CisgICAgICAgIHB1c2goQHBhcnRpYWxOYW1l
cywgJDEpOworICAgIH0KKworICAgICRmaWxlQ29udGVudHMgPSAkaWRsRmlsZS0+ZmlsZUNvbnRl
bnRzOwogICAgIHdoaWxlICgkZmlsZUNvbnRlbnRzID1+IC9wYXJ0aWFsXHMrKGludGVyZmFjZXxk
aWN0aW9uYXJ5fG5hbWVzcGFjZSlccysoXHcrKS9tZykgewotICAgICAgICBwdXNoKEBwYXJ0aWFs
TmFtZXMsICQyKTsKKyAgICAgICAgcHVzaChAcGFydGlhbE5hbWVzLCAkMikgaWYgJDIgbmUgIm1p
eGluIjsKICAgICB9CiAgICAgCiAgICAgaWYgKCR2YWxpZGF0ZUFnYWluc3RQYXJzZXIpIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBl
bmRlbmNpZXMuZGVwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9TdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwCShyZXZpc2lvbiAyNjY3NDApCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxlbWVudGFsRGVwZW5k
ZW5jaWVzLmRlcAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTAgKzQ1LDEwIEBAIFdlYkRPTVRlc3RD
YWxsYmFja0ludGVyZmFjZS5oOiAKIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9y
Lmg6IAogRE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmg6IAogV2ViRE9NVGVz
dENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmg6IAotSlNUZXN0Q29uZGl0aW9uYWxJbmNs
dWRlcy5oOiBUZXN0SW5jbHVkZXMuaWRsCi1ET01UZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5oOiBU
ZXN0SW5jbHVkZXMuaWRsCi1XZWJET01UZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5oOiBUZXN0SW5j
bHVkZXMuaWRsCi1UZXN0SW5jbHVkZXMuaWRsOgorSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5o
OiBUZXN0TWl4aW5JbnRlcmZhY2UuaWRsCitET01UZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5oOiBU
ZXN0TWl4aW5JbnRlcmZhY2UuaWRsCitXZWJET01UZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5oOiBU
ZXN0TWl4aW5JbnRlcmZhY2UuaWRsCitUZXN0TWl4aW5JbnRlcmZhY2UuaWRsOgogSlNUZXN0RE9N
SklULmg6IAogRE9NVGVzdERPTUpJVC5oOiAKIFdlYkRPTVRlc3RET01KSVQuaDogCkBAIC0xMDAs
MTAgKzEwMCwxMCBAQCBUZXN0U3VwcGxlbWVudGFsLmlkbDoKIEpTVGVzdEluaGVyaXRlZERpY3Rp
b25hcnkyLmg6IAogRE9NVGVzdEluaGVyaXRlZERpY3Rpb25hcnkyLmg6IAogV2ViRE9NVGVzdElu
aGVyaXRlZERpY3Rpb25hcnkyLmg6IAotSlNUZXN0SW50ZXJmYWNlLmg6IFRlc3RJbmNsdWRlcy5p
ZGwgVGVzdFN1cHBsZW1lbnRhbC5pZGwKLURPTVRlc3RJbnRlcmZhY2UuaDogVGVzdEluY2x1ZGVz
LmlkbCBUZXN0U3VwcGxlbWVudGFsLmlkbAotV2ViRE9NVGVzdEludGVyZmFjZS5oOiBUZXN0SW5j
bHVkZXMuaWRsIFRlc3RTdXBwbGVtZW50YWwuaWRsCi1UZXN0SW5jbHVkZXMuaWRsOgorSlNUZXN0
SW50ZXJmYWNlLmg6IFRlc3RNaXhpbkludGVyZmFjZS5pZGwgVGVzdFN1cHBsZW1lbnRhbC5pZGwK
K0RPTVRlc3RJbnRlcmZhY2UuaDogVGVzdE1peGluSW50ZXJmYWNlLmlkbCBUZXN0U3VwcGxlbWVu
dGFsLmlkbAorV2ViRE9NVGVzdEludGVyZmFjZS5oOiBUZXN0TWl4aW5JbnRlcmZhY2UuaWRsIFRl
c3RTdXBwbGVtZW50YWwuaWRsCitUZXN0TWl4aW5JbnRlcmZhY2UuaWRsOgogVGVzdFN1cHBsZW1l
bnRhbC5pZGw6CiBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5oOiAKIERPTVRlc3RJ
bnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5oOiAKQEAgLTEyNiw2ICsxMjYsMTAgQEAgV2ViRE9N
VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaDogCiBKU1Rlc3RNYXBMaWtlLmg6IAogRE9NVGVz
dE1hcExpa2UuaDogCiBXZWJET01UZXN0TWFwTGlrZS5oOiAKK0pTVGVzdE1peGluSW50ZXJmYWNl
Lmg6IFRlc3RQYXJ0aWFsTWl4aW5JbnRlcmZhY2UuaWRsCitET01UZXN0TWl4aW5JbnRlcmZhY2Uu
aDogVGVzdFBhcnRpYWxNaXhpbkludGVyZmFjZS5pZGwKK1dlYkRPTVRlc3RNaXhpbkludGVyZmFj
ZS5oOiBUZXN0UGFydGlhbE1peGluSW50ZXJmYWNlLmlkbAorVGVzdFBhcnRpYWxNaXhpbkludGVy
ZmFjZS5pZGw6CiBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuaDogCiBE
T01UZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmg6IAogV2ViRE9NVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5oOiAKQEAgLTE4Niw2ICsxOTAsOSBAQCBX
ZWJET01UZXN0Tm9kZS5oOiAKIEpTVGVzdE9iai5oOiAKIERPTVRlc3RPYmouaDogCiBXZWJET01U
ZXN0T2JqLmg6IAorSlNUZXN0T3BlcmF0aW9uQmFzZS5oOiAKK0RPTVRlc3RPcGVyYXRpb25CYXNl
Lmg6IAorV2ViRE9NVGVzdE9wZXJhdGlvbkJhc2UuaDogCiBKU1Rlc3RPcGVyYXRpb25Db25kaXRp
b25hbC5oOiBUZXN0T3BlcmF0aW9uQmFzZS5pZGwKIERPTVRlc3RPcGVyYXRpb25Db25kaXRpb25h
bC5oOiBUZXN0T3BlcmF0aW9uQmFzZS5pZGwKIFdlYkRPTVRlc3RPcGVyYXRpb25Db25kaXRpb25h
bC5oOiBUZXN0T3BlcmF0aW9uQmFzZS5pZGwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RDb25kaXRpb25hbEluY2x1
ZGVzLmlkbAkocmV2aXNpb24gMjY2NzQwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MzMsNCArMzMsNCBAQCBpbnRlcmZhY2UgVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMgewogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUgdGVzdEF0dHI7CiB9OwogCi1bQ29uZGl0aW9uYWw9Q29u
ZGl0aW9uMTIsIEVuYWJsZWRCeVNldHRpbmc9VGVzdFNldHRpbmcyXSBUZXN0Q29uZGl0aW9uYWxJ
bmNsdWRlcyBpbmNsdWRlcyBUZXN0SW5jbHVkZXM7CitbQ29uZGl0aW9uYWw9Q29uZGl0aW9uMTIs
IEVuYWJsZWRCeVNldHRpbmc9VGVzdFNldHRpbmcyXSBUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyBp
bmNsdWRlcyBUZXN0TWl4aW5JbnRlcmZhY2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVGVzdEluY2x1ZGVzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEluY2x1ZGVzLmlkbAkocmV2aXNpb24gMjY2
NzQwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RJbmNsdWRl
cy5pZGwJKG5vbmV4aXN0ZW50KQpAQCAtMSw1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zdHJBcmcsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFw
cGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVzdHJB
cmcsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0vLyBUaGlzIElE
TCBmaWxlIGlzIGZvciB0ZXN0aW5nIHRoZSBiaW5kaW5ncyBjb2RlIGdlbmVyYXRvciBhbmQgZm9y
IHRyYWNraW5nCi0vLyBjaGFuZ2VzIGluIGl0cyBvdXRwdXQuCi1bCi0gICAgQ29uZGl0aW9uYWw9
Q29uZGl0aW9uMjJ8Q29uZGl0aW9uMjMKLV0gaW50ZXJmYWNlIG1peGluIFRlc3RJbmNsdWRlcyB7
Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBpbmNsdWRlc1N0cjE7Ci0gICAgYXR0
cmlidXRlIERPTVN0cmluZyBpbmNsdWRlc1N0cjI7Ci0gICAgW0N1c3RvbUdldHRlciwgQ3VzdG9t
U2V0dGVyXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGluY2x1ZGVzU3RyMzsKLSAgICBhdHRyaWJ1dGUg
Tm9kZSBpbmNsdWRlc05vZGU7Ci0KLSAgICB1bmRlZmluZWQgaW5jbHVkZXNNZXRob2QxKCk7Ci0g
ICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9uXSBU
ZXN0T2JqIGluY2x1ZGVzTWV0aG9kMihET01TdHJpbmcgc3RyQXJnLCBUZXN0T2JqIG9iakFyZyk7
Ci0gICAgW0N1c3RvbV0gdW5kZWZpbmVkIGluY2x1ZGVzTWV0aG9kMygpOwotICAgIFtDb25kaXRp
b25hbD1Db25kaXRpb24xMV0gdW5kZWZpbmVkIGluY2x1ZGVzTWV0aG9kQ29uZGl0aW9uYWwoKTsK
LSAgICBbRW5hYmxlZEJ5U2V0dGluZz1UZXN0U2V0dGluZ10gdW5kZWZpbmVkIGluY2x1ZGVzTWV0
aG9kU2V0dGluZ3NDb25kaXRpb25hbCgpOwotCi0gICAgY29uc3QgdW5zaWduZWQgc2hvcnQgSU5D
TFVERVNfQ09OU1RBTlQxID0gMTsKLSAgICBbUmVmbGVjdD1DT05TVF9JTVBMXSBjb25zdCB1bnNp
Z25lZCBzaG9ydCBJTkNMVURFU19DT05TVEFOVDIgPSAyOwotCi0gICAgW1Jlc3VsdEZpZWxkPW5v
ZGVzXSBzZXF1ZW5jZTxOb2RlPiB0YWtlTm9kZXMoKTsKLX07Ci0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0SW50ZXJmYWNlLmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEludGVyZmFjZS5pZGwJ
KHJldmlzaW9uIDI2Njc0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9UZXN0SW50ZXJmYWNlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDAsNCArNDAsNCBAQAogICAg
IGl0ZXJhYmxlPFRlc3ROb2RlLCBUZXN0T2JqPjsKIH07CiAKLVRlc3RJbnRlcmZhY2UgaW5jbHVk
ZXMgVGVzdEluY2x1ZGVzOworVGVzdEludGVyZmFjZSBpbmNsdWRlcyBUZXN0TWl4aW5JbnRlcmZh
Y2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE1peGlu
SW50ZXJmYWNlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVGVzdE1peGluSW50ZXJmYWNlLmlkbAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE1peGluSW50ZXJmYWNlLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ft
c3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zdHJBcmcsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9y
IHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVzdHJBcmcsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBUaGlzIElETCBmaWxlIGlz
IGZvciB0ZXN0aW5nIHRoZSBiaW5kaW5ncyBjb2RlIGdlbmVyYXRvciBhbmQgZm9yIHRyYWNraW5n
CisvLyBjaGFuZ2VzIGluIGl0cyBvdXRwdXQuCitbCisgICAgQ29uZGl0aW9uYWw9Q29uZGl0aW9u
MjJ8Q29uZGl0aW9uMjMKK10gaW50ZXJmYWNlIG1peGluIFRlc3RNaXhpbkludGVyZmFjZSB7Cisg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBtaXhpblJlYWRPbmx5QXR0cmlidXRlOwor
ICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgbWl4aW5BdHRyaWJ1dGU7CisgICAgW0N1c3RvbUdldHRl
ciwgQ3VzdG9tU2V0dGVyXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG1peGluQ3VzdG9tQXR0cmlidXRl
OworICAgIGF0dHJpYnV0ZSBOb2RlIG1peGluTm9kZUF0dHJpYnV0ZTsKKworICAgIHVuZGVmaW5l
ZCBtaXhpbk9wZXJhdGlvbigpOworICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0
LCBNYXlUaHJvd0V4Y2VwdGlvbl0gVGVzdE9iaiBtaXhpbkNvbXBsZXhPcGVyYXRpb24oRE9NU3Ry
aW5nIHN0ckFyZywgVGVzdE9iaiBvYmpBcmcpOworICAgIFtDdXN0b21dIHVuZGVmaW5lZCBtaXhp
bkN1c3RvbU9wZXJhdGlvbigpOworICAgIFtDb25kaXRpb25hbD1Db25kaXRpb24xMV0gdW5kZWZp
bmVkIG1peGluQ29uZGl0aW9uYWxPcGVyYXRpb24oKTsKKyAgICBbRW5hYmxlZEJ5U2V0dGluZz1U
ZXN0U2V0dGluZ10gdW5kZWZpbmVkIG1peGluU2V0dGluZ3NDb25kaXRpb25hbE9wZXJhdGlvbigp
OworICAgIFtSZXN1bHRGaWVsZD1ub2Rlc10gc2VxdWVuY2U8Tm9kZT4gbWl4aW5SZXN1bHRGaWVs
ZE9wZXJhdGlvbigpOworCisgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTUlYSU5fQ09OU1RBTlQg
PSAxOworICAgIFtSZWZsZWN0PUNPTlNUX0lNUExdIGNvbnN0IHVuc2lnbmVkIHNob3J0IE1JWElO
X1JFRkxFQ1RFRF9DT05TVEFOVCA9IDI7Cit9OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAkocmV2aXNpb24gMjY2NzQwKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC00NjMsOCArNDYzLDggQEAgZW51bSBUZXN0Q29uZmlkZW5jZSB7ICJoaWdoIiwg
ImtpbmRhLWxvdwogfTsKIAogLy8gVGhlIGZvbGxvd2luZyBjb21tZW50cyBzaG91bGQgbm90IGdl
bmVyYXRlIGFueSBjb2RlLgotLy8gVGVzdE9iaiBpbmNsdWRlcyBUZXN0SW5jbHVkZXM7Ci0vKiBU
ZXN0T2JqIGluY2x1ZGVzIFRlc3RJbmNsdWRlczsgKi8KKy8vIFRlc3RPYmogaW5jbHVkZXMgVGVz
dE1peGluSW50ZXJmYWNlOworLyogVGVzdE9iaiBpbmNsdWRlcyBUZXN0TWl4aW5JbnRlcmZhY2U7
ICovCiAKIHR5cGVkZWYgYW55IEFueVR5cGVkZWY7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0UGFydGlhbE1peGluSW50ZXJmYWNlLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFBhcnRpYWxN
aXhpbkludGVyZmFjZS5pZGwJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Rlc3RQYXJ0aWFsTWl4aW5JbnRlcmZhY2UuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBUaGlzIElETCBmaWxlIGlzIGZv
ciB0ZXN0aW5nIHRoZSBiaW5kaW5ncyBjb2RlIGdlbmVyYXRvciBhbmQgZm9yIHRyYWNraW5nCisv
LyBjaGFuZ2VzIGluIGl0cyBvdXRwdXQuCitbCisgICAgQ29uZGl0aW9uYWw9Q29uZGl0aW9uMzMK
K10gcGFydGlhbCBpbnRlcmZhY2UgbWl4aW4gVGVzdE1peGluSW50ZXJmYWNlIHsKKyAgICByZWFk
b25seSBhdHRyaWJ1dGUgZG91YmxlIHBhcnRpYWxNaXhpbkF0dHJpYnV0ZUZyb21QYXJ0aWFsOwor
ICAgIHVuZGVmaW5lZCBwYXJ0aWFsTWl4aW5PcGVyYXRpb25Gcm9tUGFydGlhbCgpOworICAgIGNv
bnN0IHVuc2lnbmVkIHNob3J0IFBBUlRJQUxfTUlYSU5fQ09OU1RBTlRfRlJPTV9QQVJUSUFMID0g
NTsKK307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMuY3BwCShy
ZXZpc2lvbiAyNjY3NDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDIy
ICs2MywyNSBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogLy8gRnVuY3Rpb25zCiAKICNpZiAoRU5B
QkxFKENvbmRpdGlvbjEyKSAmJiBFTkFCTEUoQ29uZGl0aW9uMjIpKSB8fCBFTkFCTEUoQ29uZGl0
aW9uMjMpCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q29uZGl0aW9u
YWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2QxKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbk1peGluT3BlcmF0
aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2VuZGlmCiAjaWYg
KEVOQUJMRShDb25kaXRpb24xMikgJiYgRU5BQkxFKENvbmRpdGlvbjIyKSkgfHwgRU5BQkxFKENv
bmRpdGlvbjIzKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENvbmRp
dGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbkluY2x1ZGVzTWV0aG9kMihKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25NaXhpbkNv
bXBsZXhPcGVyYXRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAj
ZW5kaWYKICNpZiAoRU5BQkxFKENvbmRpdGlvbjEyKSAmJiBFTkFCTEUoQ29uZGl0aW9uMjIpKSB8
fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2Qz
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5j
dGlvbk1peGluQ3VzdG9tT3BlcmF0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxG
cmFtZSopOwogI2VuZGlmCiAjaWYgKEVOQUJMRShDb25kaXRpb24xMSkgJiYgRU5BQkxFKENvbmRp
dGlvbjEyKSAmJiBFTkFCTEUoQ29uZGl0aW9uMjIpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1K
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRl
c1Byb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2RDb25kaXRpb25hbChKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25NaXhpbkNvbmRp
dGlvbmFsT3BlcmF0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwog
I2VuZGlmCiAjaWYgKEVOQUJMRShDb25kaXRpb24xMikgJiYgRU5BQkxFKENvbmRpdGlvbjIyKSkg
fHwgRU5BQkxFKENvbmRpdGlvbjIzKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbkluY2x1ZGVzTWV0aG9k
U2V0dGluZ3NDb25kaXRpb25hbChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUq
KTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDb25kaXRpb25hbElu
Y2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25NaXhpblNldHRpbmdzQ29uZGl0aW9uYWxPcGVyYXRpb24o
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYKICNpZiAoRU5B
QkxFKENvbmRpdGlvbjEyKSAmJiBFTkFCTEUoQ29uZGl0aW9uMjIpKSB8fCBFTkFCTEUoQ29uZGl0
aW9uMjMpCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q29uZGl0aW9u
YWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uVGFrZU5vZGVzKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbk1peGluUmVzdWx0RmllbGRP
cGVyYXRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CisjZW5kaWYK
KyNpZiAoRU5BQkxFKENvbmRpdGlvbjEyKSAmJiBFTkFCTEUoQ29uZGl0aW9uMjIpICYmIEVOQUJM
RShDb25kaXRpb24zMykpIHx8IEVOQUJMRShDb25kaXRpb24yMykKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rp
b25QYXJ0aWFsTWl4aW5PcGVyYXRpb25Gcm9tUGFydGlhbChKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpDYWxsRnJhbWUqKTsKICNlbmRpZgogCiAvLyBBdHRyaWJ1dGVzCkBAIC04NywxOSArOTAs
MjIgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDb25kaXRpb25hbEluYwogYm9vbCBzZXRK
U1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzVGVzdEF0dHIoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKICNpZiBFTkFC
TEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLUpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0luY2x1ZGVzU3RyMShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzTWl4aW5SZWFkT25seUF0dHJpYnV0
ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0
eU5hbWUpOworI2VuZGlmCisjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0
aW9uMjMpCitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNNaXhp
bkF0dHJpYnV0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpQcm9wZXJ0eU5hbWUpOworYm9vbCBzZXRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzTWl4aW5B
dHRyaWJ1dGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
RW5jb2RlZEpTVmFsdWUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFC
TEUoQ29uZGl0aW9uMjMpCi1KU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFsSW5j
bHVkZXNJbmNsdWRlc1N0cjIoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLWJvb2wgc2V0SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRl
c0luY2x1ZGVzU3RyMihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENvbmRpdGlv
bmFsSW5jbHVkZXNNaXhpbkN1c3RvbUF0dHJpYnV0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworYm9vbCBzZXRKU1Rlc3RDb25k
aXRpb25hbEluY2x1ZGVzTWl4aW5DdXN0b21BdHRyaWJ1dGUoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogI2VuZGlmCiAjaWYg
RU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1KU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNJbmNsdWRlc1N0cjMoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLWJvb2wg
c2V0SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0luY2x1ZGVzU3RyMyhKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNNaXhpbk5vZGVBdHRyaWJ1dGUo
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlO
YW1lKTsKK2Jvb2wgc2V0SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc01peGluTm9kZUF0dHJpYnV0
ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25k
aXRpb24yMykKLUpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0lu
Y2x1ZGVzTm9kZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpQcm9wZXJ0eU5hbWUpOwotYm9vbCBzZXRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzSW5jbHVk
ZXNOb2RlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q29uZGl0aW9uYWxJbmNs
dWRlc1BhcnRpYWxNaXhpbkF0dHJpYnV0ZUZyb21QYXJ0aWFsKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiAjZW5kaWYKIAogY2xh
c3MgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6
OkpTTm9uRmluYWxPYmplY3QgewpAQCAtMTQxLDIzICsxNDcsMzEgQEAgdXNpbmcgSlNUZXN0Q29u
ZGl0aW9uYWxJbmNsdWRlc0NvbnN0cnVjdAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpT
VGVzdENvbmRpdGlvbmFsSW5jbHVkZXNDb25zdHJ1Y3RvclRhYmxlVmFsdWVzW10gPQogewogI2lm
IEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIHsgIklOQ0xV
REVTX0NPTlNUQU5UMSIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNv
bnN0YW50SW50ZWdlciwgTm9JbnRyaW5zaWMsIHsgKGxvbmcgbG9uZykoMSkgfSB9LAorICAgIHsg
Ik1JWElOX0NPTlNUQU5UIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q29uc3RhbnRJbnRlZ2VyLCBOb0ludHJpbnNpYywgeyAobG9uZyBsb25nKSgxKSB9IH0sCisjZWxz
ZQorICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCisjZW5kaWYKKyNpZiBFTkFC
TEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKKyAgICB7ICJNSVhJTl9SRUZM
RUNURURfQ09OU1RBTlQiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
b25zdGFudEludGVnZXIsIE5vSW50cmluc2ljLCB7IChsb25nIGxvbmcpKDIpIH0gfSwKICNlbHNl
CiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKICNlbmRpZgogI2lmIEVOQUJM
RShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIHsgIklOQ0xVREVTX0NP
TlNUQU5UMiIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50
SW50ZWdlciwgTm9JbnRyaW5zaWMsIHsgKGxvbmcgbG9uZykoMikgfSB9LAorICAgIHsgIlBBUlRJ
QUxfTUlYSU5fQ09OU1RBTlRfRlJPTV9QQVJUSUFMIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2VyLCBOb0ludHJpbnNpYywgeyAobG9uZyBsb25n
KSg1KSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAj
ZW5kaWYKIH07CiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24y
MykKLXN0YXRpY19hc3NlcnQoVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM6OklOQ0xVREVTX0NPTlNU
QU5UMSA9PSAxLCAiSU5DTFVERVNfQ09OU1RBTlQxIGluIFRlc3RDb25kaXRpb25hbEluY2x1ZGVz
IGRvZXMgbm90IG1hdGNoIHZhbHVlIGZyb20gSURMIik7CitzdGF0aWNfYXNzZXJ0KFRlc3RDb25k
aXRpb25hbEluY2x1ZGVzOjpNSVhJTl9DT05TVEFOVCA9PSAxLCAiTUlYSU5fQ09OU1RBTlQgaW4g
VGVzdENvbmRpdGlvbmFsSW5jbHVkZXMgZG9lcyBub3QgbWF0Y2ggdmFsdWUgZnJvbSBJREwiKTsK
ICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQog
c3RhdGljX2Fzc2VydChUZXN0Q29uZGl0aW9uYWxJbmNsdWRlczo6Q09OU1RfSU1QTCA9PSAyLCAi
Q09OU1RfSU1QTCBpbiBUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyBkb2VzIG5vdCBtYXRjaCB2YWx1
ZSBmcm9tIElETCIpOwogI2VuZGlmCisjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUo
Q29uZGl0aW9uMjMpCitzdGF0aWNfYXNzZXJ0KFRlc3RDb25kaXRpb25hbEluY2x1ZGVzOjpQQVJU
SUFMX01JWElOX0NPTlNUQU5UX0ZST01fUEFSVElBTCA9PSA1LCAiUEFSVElBTF9NSVhJTl9DT05T
VEFOVF9GUk9NX1BBUlRJQUwgaW4gVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMgZG9lcyBub3QgbWF0
Y2ggdmFsdWUgZnJvbSBJREwiKTsKKyNlbmRpZgogCiB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0
Q29uZGl0aW9uYWxJbmNsdWRlc0NvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlND
OjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CkBAIC0x
ODIsNjIgKzE5Niw3NyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0Q29uZGl0
CiAgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXND
b25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNDb25zdHJ1Y3RvcikgfSB9LAog
ICAgIHsgInRlc3RBdHRyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXNUZXN0QXR0ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIp
IHx8IEVOQUJMRShDb25kaXRpb24yMykKLSAgICB7ICJpbmNsdWRlc1N0cjEiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0luY2x1ZGVzU3Ry
MSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KDApIH0gfSwKKyAgICB7ICJtaXhpblJlYWRPbmx5QXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNNaXhpblJlYWRPbmx5QXR0
cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oMCkgfSB9LAorI2Vsc2UKKyAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9
LAorI2VuZGlmCisjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMp
CisgICAgeyAibWl4aW5BdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNNaXhpbkF0dHJp
YnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNNaXhpbkF0dHJpYnV0ZSkgfSB9LAogI2Vs
c2UKICAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAogI2VuZGlmCiAjaWYgRU5B
QkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgeyAiaW5jbHVkZXNT
dHIyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzSW5jbHVkZXNTdHIyKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0Q29uZGl0aW9u
YWxJbmNsdWRlc0luY2x1ZGVzU3RyMikgfSB9LAorICAgIHsgIm1peGluQ3VzdG9tQXR0cmlidXRl
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzTWl4aW5DdXN0b21BdHRyaWJ1dGUpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RDb25k
aXRpb25hbEluY2x1ZGVzTWl4aW5DdXN0b21BdHRyaWJ1dGUpIH0gfSwKICNlbHNlCiAgICAgeyAw
LCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRp
b24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIHsgImluY2x1ZGVzU3RyMyIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0Q29u
ZGl0aW9uYWxJbmNsdWRlc0luY2x1ZGVzU3RyMyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNJ
bmNsdWRlc1N0cjMpIH0gfSwKKyAgICB7ICJtaXhpbk5vZGVBdHRyaWJ1dGUiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdENvbmRpdGlv
bmFsSW5jbHVkZXNNaXhpbk5vZGVBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVz
TWl4aW5Ob2RlQXR0cmlidXRlKSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMs
IHsgMCwgMCB9IH0sCiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShD
b25kaXRpb24yMykKLSAgICB7ICJpbmNsdWRlc05vZGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNJ
bmNsdWRlc05vZGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzSW5jbHVkZXNOb2RlKSB9IH0s
CisgICAgeyAicGFydGlhbE1peGluQXR0cmlidXRlRnJvbVBhcnRpYWwiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1BhcnRpYWxNaXhpbkF0
dHJpYnV0ZUZyb21QYXJ0aWFsKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogI2Vsc2UKICAgICB7IDAsIDAsIE5vSW50cmluc2lj
LCB7IDAsIDAgfSB9LAogI2VuZGlmCiAjaWYgKEVOQUJMRShDb25kaXRpb24xMikgJiYgRU5BQkxF
KENvbmRpdGlvbjIyKSkgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIHsgImluY2x1ZGVzTWV0
aG9kMSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5j
dGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5j
dGlvbj4oanNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNN
ZXRob2QxKSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgIm1peGluT3BlcmF0aW9uIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rl
c3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25NaXhpbk9wZXJhdGlvbiksIChp
bnRwdHJfdCkgKDApIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAw
IH0gfSwKICNlbmRpZgogI2lmIChFTkFCTEUoQ29uZGl0aW9uMTIpICYmIEVOQUJMRShDb25kaXRp
b24yMikpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLSAgICB7ICJpbmNsdWRlc01ldGhvZDIiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpz
VGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbkluY2x1ZGVzTWV0aG9kMiks
IChpbnRwdHJfdCkgKDIpIH0gfSwKKyAgICB7ICJtaXhpbkNvbXBsZXhPcGVyYXRpb24iLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVz
dENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbk1peGluQ29tcGxleE9wZXJhdGlv
biksIChpbnRwdHJfdCkgKDIpIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywg
eyAwLCAwIH0gfSwKICNlbmRpZgogI2lmIChFTkFCTEUoQ29uZGl0aW9uMTIpICYmIEVOQUJMRShD
b25kaXRpb24yMikpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLSAgICB7ICJpbmNsdWRlc01ldGhv
ZDMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rp
b24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rp
b24+KGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbkluY2x1ZGVzTWV0
aG9kMyksIChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICJtaXhpbkN1c3RvbU9wZXJhdGlvbiIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4o
anNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uTWl4aW5DdXN0b21PcGVy
YXRpb24pLCAoaW50cHRyX3QpICgwKSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5z
aWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYKICNpZiAoRU5BQkxFKENvbmRpdGlvbjExKSAmJiBFTkFC
TEUoQ29uZGl0aW9uMTIpICYmIEVOQUJMRShDb25kaXRpb24yMikpIHx8IEVOQUJMRShDb25kaXRp
b24yMykKLSAgICB7ICJpbmNsdWRlc01ldGhvZENvbmRpdGlvbmFsIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RDb25kaXRpb25h
bEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZENvbmRpdGlvbmFsKSwgKGlu
dHB0cl90KSAoMCkgfSB9LAorICAgIHsgIm1peGluQ29uZGl0aW9uYWxPcGVyYXRpb24iLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVz
dENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbk1peGluQ29uZGl0aW9uYWxPcGVy
YXRpb24pLCAoaW50cHRyX3QpICgwKSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5z
aWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYKICNpZiAoRU5BQkxFKENvbmRpdGlvbjEyKSAmJiBFTkFC
TEUoQ29uZGl0aW9uMjIpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgeyAiaW5jbHVkZXNN
ZXRob2RTZXR0aW5nc0NvbmRpdGlvbmFsIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90
eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZFNldHRpbmdzQ29uZGl0aW9uYWwpLCAoaW50cHRyX3Qp
ICgwKSB9IH0sCisgICAgeyAibWl4aW5TZXR0aW5nc0NvbmRpdGlvbmFsT3BlcmF0aW9uIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rl
c3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25NaXhpblNldHRpbmdzQ29uZGl0
aW9uYWxPcGVyYXRpb24pLCAoaW50cHRyX3QpICgwKSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwg
Tm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYKICNpZiAoRU5BQkxFKENvbmRpdGlvbjEy
KSAmJiBFTkFCTEUoQ29uZGl0aW9uMjIpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgeyAi
dGFrZU5vZGVzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2
ZUZ1bmN0aW9uPihqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25UYWtl
Tm9kZXMpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAibWl4aW5SZXN1bHRGaWVsZE9wZXJh
dGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5j
dGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5j
dGlvbj4oanNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uTWl4aW5SZXN1
bHRGaWVsZE9wZXJhdGlvbiksIChpbnRwdHJfdCkgKDApIH0gfSwKKyNlbHNlCisgICAgeyAwLCAw
LCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKKyNlbmRpZgorI2lmIChFTkFCTEUoQ29uZGl0aW9u
MTIpICYmIEVOQUJMRShDb25kaXRpb24yMikgJiYgRU5BQkxFKENvbmRpdGlvbjMzKSkgfHwgRU5B
QkxFKENvbmRpdGlvbjIzKQorICAgIHsgInBhcnRpYWxNaXhpbk9wZXJhdGlvbkZyb21QYXJ0aWFs
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9u
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9u
Pihqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25QYXJ0aWFsTWl4aW5P
cGVyYXRpb25Gcm9tUGFydGlhbCksIChpbnRwdHJfdCkgKDApIH0gfSwKICNlbHNlCiAgICAgeyAw
LCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRp
b24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIHsgIklOQ0xVREVTX0NPTlNUQU5UMSIs
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdlciwg
Tm9JbnRyaW5zaWMsIHsgKGxvbmcgbG9uZykoMSkgfSB9LAorICAgIHsgIk1JWElOX0NPTlNUQU5U
IiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2Vy
LCBOb0ludHJpbnNpYywgeyAobG9uZyBsb25nKSgxKSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwg
Tm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIp
IHx8IEVOQUJMRShDb25kaXRpb24yMykKLSAgICB7ICJJTkNMVURFU19DT05TVEFOVDIiLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIsIE5vSW50
cmluc2ljLCB7IChsb25nIGxvbmcpKDIpIH0gfSwKKyAgICB7ICJNSVhJTl9SRUZMRUNURURfQ09O
U1RBTlQiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFudElu
dGVnZXIsIE5vSW50cmluc2ljLCB7IChsb25nIGxvbmcpKDIpIH0gfSwKKyNlbHNlCisgICAgeyAw
LCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKKyNlbmRpZgorI2lmIEVOQUJMRShDb25kaXRp
b24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorICAgIHsgIlBBUlRJQUxfTUlYSU5fQ09OU1RB
TlRfRlJPTV9QQVJUSUFMIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q29uc3RhbnRJbnRlZ2VyLCBOb0ludHJpbnNpYywgeyAobG9uZyBsb25nKSg1KSB9IH0sCiAjZWxz
ZQogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYKQEAgLTI1Myw3
ICsyODIsNyBAQCB2b2lkIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGU6CiAjaWYg
KEVOQUJMRShDb25kaXRpb24xMikgJiYgRU5BQkxFKENvbmRpdGlvbjIyKSkgfHwgRU5BQkxFKENv
bmRpdGlvbjIzKQogICAgIGlmICghZG93bmNhc3Q8RG9jdW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0
dGluZ3MoKS50ZXN0U2V0dGluZzJFbmFibGVkKCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50
aW1lUHJvcGVydGllcyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJpbmNs
dWRlc01ldGhvZDEiKSwgc3RybGVuKCJpbmNsdWRlc01ldGhvZDEiKSk7CisgICAgICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBMQ2hhcio+KCJtaXhpbk9wZXJhdGlvbiIpLCBzdHJsZW4oIm1peGluT3BlcmF0aW9u
IikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpE
ZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CiAgICAgICAgIERlbGV0ZVBy
b3BlcnR5U2xvdCBzbG90OwogICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywg
Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CkBAIC0yNjIsNyArMjkxLDcgQEAg
dm9pZCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlOgogI2lmIChFTkFCTEUoQ29u
ZGl0aW9uMTIpICYmIEVOQUJMRShDb25kaXRpb24yMikpIHx8IEVOQUJMRShDb25kaXRpb24yMykK
ICAgICBpZiAoIWRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihn
bG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkudGVz
dFNldHRpbmcyRW5hYmxlZCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRp
ZXMgPSB0cnVlOwotICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiaW5jbHVkZXNNZXRob2Qy
IiksIHN0cmxlbigiaW5jbHVkZXNNZXRob2QyIikpOworICAgICAgICBhdXRvIHByb3BlcnR5TmFt
ZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPigibWl4aW5Db21wbGV4T3BlcmF0aW9uIiksIHN0cmxlbigibWl4aW5Db21wbGV4T3BlcmF0
aW9uIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZN
OjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CiAgICAgICAgIERlbGV0
ZVByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhp
cywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CkBAIC0yNzEsNyArMzAwLDcg
QEAgdm9pZCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlOgogI2lmIChFTkFCTEUo
Q29uZGl0aW9uMTIpICYmIEVOQUJMRShDb25kaXRpb24yMikpIHx8IEVOQUJMRShDb25kaXRpb24y
MykKICAgICBpZiAoIWRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCku
dGVzdFNldHRpbmcyRW5hYmxlZCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3Bl
cnRpZXMgPSB0cnVlOwotICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiaW5jbHVkZXNNZXRo
b2QzIiksIHN0cmxlbigiaW5jbHVkZXNNZXRob2QzIikpOworICAgICAgICBhdXRvIHByb3BlcnR5
TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
TENoYXIqPigibWl4aW5DdXN0b21PcGVyYXRpb24iKSwgc3RybGVuKCJtaXhpbkN1c3RvbU9wZXJh
dGlvbiIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBW
TTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwogICAgICAgICBEZWxl
dGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRo
aXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpAQCAtMjgwLDcgKzMwOSw3
IEBAIHZvaWQgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZToKICNpZiAoRU5BQkxF
KENvbmRpdGlvbjExKSAmJiBFTkFCTEUoQ29uZGl0aW9uMTIpICYmIEVOQUJMRShDb25kaXRpb24y
MikpIHx8IEVOQUJMRShDb25kaXRpb24yMykKICAgICBpZiAoIWRvd25jYXN0PERvY3VtZW50Pihq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSktPnNldHRpbmdzKCkudGVzdFNldHRpbmcyRW5hYmxlZCgpKSB7CiAgICAgICAg
IGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwotICAgICAgICBhdXRvIHByb3Bl
cnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgTENoYXIqPigiaW5jbHVkZXNNZXRob2RDb25kaXRpb25hbCIpLCBzdHJsZW4oImluY2x1ZGVz
TWV0aG9kQ29uZGl0aW9uYWwiKSk7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJtaXhp
bkNvbmRpdGlvbmFsT3BlcmF0aW9uIiksIHN0cmxlbigibWl4aW5Db25kaXRpb25hbE9wZXJhdGlv
biIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6
RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwogICAgICAgICBEZWxldGVQ
cm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMs
IGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpAQCAtMjg5LDcgKzMxOCw3IEBA
IHZvaWQgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZToKICNpZiAoRU5BQkxFKENv
bmRpdGlvbjEyKSAmJiBFTkFCTEUoQ29uZGl0aW9uMjIpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMp
CiAgICAgaWYgKCEoZG93bmNhc3Q8RG9jdW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0dGluZ3MoKS50
ZXN0U2V0dGluZ0VuYWJsZWQoKSAmJiBkb3duY2FzdDxEb2N1bWVudD4oanNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5z
ZXR0aW5ncygpLnRlc3RTZXR0aW5nMkVuYWJsZWQoKSkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRS
dW50aW1lUHJvcGVydGllcyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJp
bmNsdWRlc01ldGhvZFNldHRpbmdzQ29uZGl0aW9uYWwiKSwgc3RybGVuKCJpbmNsdWRlc01ldGhv
ZFNldHRpbmdzQ29uZGl0aW9uYWwiKSk7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJt
aXhpblNldHRpbmdzQ29uZGl0aW9uYWxPcGVyYXRpb24iKSwgc3RybGVuKCJtaXhpblNldHRpbmdz
Q29uZGl0aW9uYWxPcGVyYXRpb24iKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVT
Y29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxl
KTsKICAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIEpTT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsK
QEAgLTI5OCw3ICszMjcsMjUgQEAgdm9pZCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90
eXBlOgogI2lmIChFTkFCTEUoQ29uZGl0aW9uMTIpICYmIEVOQUJMRShDb25kaXRpb24yMikpIHx8
IEVOQUJMRShDb25kaXRpb24yMykKICAgICBpZiAoIWRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSktPnNldHRpbmdzKCkudGVzdFNldHRpbmcyRW5hYmxlZCgpKSB7CiAgICAgICAgIGhhc0Rp
c2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwotICAgICAgICBhdXRvIHByb3BlcnR5TmFt
ZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPigidGFrZU5vZGVzIiksIHN0cmxlbigidGFrZU5vZGVzIikpOworICAgICAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgTENoYXIqPigibWl4aW5SZXN1bHRGaWVsZE9wZXJhdGlvbiIpLCBzdHJsZW4oIm1peGlu
UmVzdWx0RmllbGRPcGVyYXRpb24iKSk7CisgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVT
Y29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxl
KTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsK
KyAgICB9CisjZW5kaWYKKyNpZiAoRU5BQkxFKENvbmRpdGlvbjEyKSAmJiBFTkFCTEUoQ29uZGl0
aW9uMjIpICYmIEVOQUJMRShDb25kaXRpb24zMykpIHx8IEVOQUJMRShDb25kaXRpb24yMykKKyAg
ICBpZiAoIWRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9i
YWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkudGVzdFNl
dHRpbmcyRW5hYmxlZCgpKSB7CisgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMg
PSB0cnVlOworICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigicGFydGlhbE1peGluT3BlcmF0
aW9uRnJvbVBhcnRpYWwiKSwgc3RybGVuKCJwYXJ0aWFsTWl4aW5PcGVyYXRpb25Gcm9tUGFydGlh
bCIpKTsKKyAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6
RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOworICAgICAgICBEZWxldGVQ
cm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMs
IGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIH0KKyNlbmRpZgorI2lm
IEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorICAgIGlmICghZG93
bmNhc3Q8RG9jdW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgp
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0dGluZ3MoKS50ZXN0U2V0dGluZzJFbmFi
bGVkKCkpIHsKKyAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7Cisg
ICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJtaXhpblJlYWRPbmx5QXR0cmlidXRlIiksIHN0
cmxlbigibWl4aW5SZWFkT25seUF0dHJpYnV0ZSIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3Bl
cnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25m
aWd1cmFibGUpOwogICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgSlNP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwpAQCAtMzA3LDcgKzM1NCw3IEBAIHZvaWQgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRl
c1Byb3RvdHlwZToKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24y
MykKICAgICBpZiAoIWRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCku
dGVzdFNldHRpbmcyRW5hYmxlZCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3Bl
cnRpZXMgPSB0cnVlOwotICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiaW5jbHVkZXNTdHIx
IiksIHN0cmxlbigiaW5jbHVkZXNTdHIxIikpOworICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
PigibWl4aW5BdHRyaWJ1dGUiKSwgc3RybGVuKCJtaXhpbkF0dHJpYnV0ZSIpKTsKICAgICAgICAg
Vk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlN
b2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwogICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xv
dDsKICAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgp
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpAQCAtMzE2LDcgKzM2Myw3IEBAIHZvaWQgSlNUZXN0Q29u
ZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZToKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVO
QUJMRShDb25kaXRpb24yMykKICAgICBpZiAoIWRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSktPnNldHRpbmdzKCkudGVzdFNldHRpbmcyRW5hYmxlZCgpKSB7CiAgICAgICAgIGhhc0Rpc2Fi
bGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwotICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
PigiaW5jbHVkZXNTdHIyIiksIHN0cmxlbigiaW5jbHVkZXNTdHIyIikpOworICAgICAgICBhdXRv
IHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgTENoYXIqPigibWl4aW5DdXN0b21BdHRyaWJ1dGUiKSwgc3RybGVuKCJtaXhpbkN1
c3RvbUF0dHJpYnV0ZSIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNj
b3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwogICAg
ICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpAQCAtMzI1
LDcgKzM3Miw3IEBAIHZvaWQgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZToKICNp
ZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKICAgICBpZiAoIWRv
d25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3Qo
KSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkudGVzdFNldHRpbmcyRW5h
YmxlZCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwot
ICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiaW5jbHVkZXNTdHIzIiksIHN0cmxlbigiaW5j
bHVkZXNTdHIzIikpOworICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigibWl4aW5Ob2RlQXR0
cmlidXRlIiksIHN0cmxlbigibWl4aW5Ob2RlQXR0cmlidXRlIikpOwogICAgICAgICBWTTo6RGVs
ZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Okln
bm9yZUNvbmZpZ3VyYWJsZSk7CiAgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwogICAg
ICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CkBAIC0zMzQsNyArMzgxLDcgQEAgdm9pZCBKU1Rlc3RDb25kaXRpb25h
bEluY2x1ZGVzUHJvdG90eXBlOgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENv
bmRpdGlvbjIzKQogICAgIGlmICghZG93bmNhc3Q8RG9jdW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0
dGluZ3MoKS50ZXN0U2V0dGluZzJFbmFibGVkKCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50
aW1lUHJvcGVydGllcyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJpbmNs
dWRlc05vZGUiKSwgc3RybGVuKCJpbmNsdWRlc05vZGUiKSk7CisgICAgICAgIGF1dG8gcHJvcGVy
dHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBMQ2hhcio+KCJwYXJ0aWFsTWl4aW5BdHRyaWJ1dGVGcm9tUGFydGlhbCIpLCBzdHJsZW4oInBh
cnRpYWxNaXhpbkF0dHJpYnV0ZUZyb21QYXJ0aWFsIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJv
cGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNv
bmZpZ3VyYWJsZSk7CiAgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBK
U09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFt
ZSwgc2xvdCk7CkBAIC00MjksMzkgKzQ3NiwzOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDb25k
aXRpb25hbEluY2x1ZGVzCiB9CiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShD
b25kaXRpb24yMykKLXN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RDb25kaXRpb25hbEluY2x1
ZGVzSW5jbHVkZXNTdHIxR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzJiB0aGlzT2JqZWN0KQorc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNNaXhpblJlYWRPbmx5QXR0cmlidXRlR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RDb25kaXRpb25h
bEluY2x1ZGVzJiB0aGlzT2JqZWN0KQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExET01TdHJpbmc+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuaW5jbHVkZXNTdHIxKCkpKSk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETERPTVN0cmluZz4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5taXhpblJlYWRPbmx5QXR0cmlidXRlKCkpKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNJbmNsdWRlc1N0
cjEoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0Q29uZGl0aW9uYWxJ
bmNsdWRlc01peGluUmVhZE9ubHlBdHRyaWJ1dGUoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcz46OmdldDxqc1Rl
c3RDb25kaXRpb25hbEluY2x1ZGVzSW5jbHVkZXNTdHIxR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiaW5jbHVk
ZXNTdHIxIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RDb25kaXRpb25hbEluY2x1
ZGVzPjo6Z2V0PGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNNaXhpblJlYWRPbmx5QXR0cmlidXRl
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAibWl4aW5SZWFkT25seUF0dHJpYnV0ZSIpOwogfQogCiAjZW5kaWYK
IAogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNJbmNsdWRlc1N0cjJHZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdENvbmRpdGlvbmFs
SW5jbHVkZXMmIHRoaXNPYmplY3QpCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0Q29uZGl0
aW9uYWxJbmNsdWRlc01peGluQXR0cmlidXRlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzJiB0aGlzT2JqZWN0KQogewog
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCAodG9KUzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGlt
cGwuaW5jbHVkZXNTdHIyKCkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
ICh0b0pTPElETERPTVN0cmluZz4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1w
bC5taXhpbkF0dHJpYnV0ZSgpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDb25kaXRp
b25hbEluY2x1ZGVzSW5jbHVkZXNTdHIyKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK0VuY29kZWRKU1Zh
bHVlIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNNaXhpbkF0dHJpYnV0ZShKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpCiB7Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RDb25kaXRpb25hbEluY2x1
ZGVzPjo6Z2V0PGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNJbmNsdWRlc1N0cjJHZXR0ZXIsIENh
c3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsICJpbmNsdWRlc1N0cjIiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXM+OjpnZXQ8anNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc01peGluQXR0
cmlidXRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAibWl4aW5BdHRyaWJ1dGUiKTsKIH0KIAogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLXN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzSW5jbHVkZXNTdHIyU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RDb25kaXRpb25hbElu
Y2x1ZGVzJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQorc3RhdGljIGlubGluZSBib29sIHNl
dEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNNaXhpbkF0dHJpYnV0ZVNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwpAQCAtNDY5LDg2ICs1MTYsMTAyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U1Rlc3RDb25kaXRpb25hbEkKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01T
dHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKLSAgICAgICAgcmV0dXJuIGltcGwuc2V0
SW5jbHVkZXNTdHIyKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIGltcGwu
c2V0TWl4aW5BdHRyaWJ1dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgIH0pOwogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIHNldEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNJbmNsdWRl
c1N0cjIoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RD
b25kaXRpb25hbEluY2x1ZGVzTWl4aW5BdHRyaWJ1dGUoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQogewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0Q29uZGl0aW9uYWxJ
bmNsdWRlcz46OnNldDxzZXRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzSW5jbHVkZXNTdHIyU2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJpbmNs
dWRlc1N0cjIiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdENvbmRpdGlvbmFsSW5j
bHVkZXM+OjpzZXQ8c2V0SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc01peGluQXR0cmlidXRlU2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJtaXhp
bkF0dHJpYnV0ZSIpOwogfQogCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwg
RU5BQkxFKENvbmRpdGlvbjIzKQotc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdENvbmRpdGlv
bmFsSW5jbHVkZXNJbmNsdWRlc1N0cjNHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMmIHRoaXNPYmplY3QpCitzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc01peGluQ3VzdG9tQXR0cmli
dXRlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RDb25k
aXRpb25hbEluY2x1ZGVzJiB0aGlzT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKLSAgICByZXR1cm4gdGhpc09iamVjdC5pbmNsdWRlc1N0cjMobGV4aWNh
bEdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QubWl4aW5DdXN0b21BdHRyaWJ1
dGUobGV4aWNhbEdsb2JhbE9iamVjdCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdENvbmRp
dGlvbmFsSW5jbHVkZXNJbmNsdWRlc1N0cjMoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpT
VmFsdWUganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc01peGluQ3VzdG9tQXR0cmlidXRlKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdENvbmRpdGlv
bmFsSW5jbHVkZXM+OjpnZXQ8anNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0luY2x1ZGVzU3RyM0dl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgImluY2x1ZGVzU3RyMyIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcz46OmdldDxqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVz
TWl4aW5DdXN0b21BdHRyaWJ1dGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3Nl
cnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJtaXhpbkN1c3RvbUF0dHJpYnV0
ZSIpOwogfQogCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENv
bmRpdGlvbjIzKQotc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdENvbmRpdGlvbmFsSW5jbHVk
ZXNJbmNsdWRlc1N0cjNTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCitz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc01peGluQ3VzdG9t
QXR0cmlidXRlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rl
c3RDb25kaXRpb25hbEluY2x1ZGVzJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewogICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgdGhpc09i
amVjdC5zZXRJbmNsdWRlc1N0cjMobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOworICAgIHRo
aXNPYmplY3Quc2V0TWl4aW5DdXN0b21BdHRyaWJ1dGUobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIHNldEpTVGVzdENvbmRpdGlvbmFsSW5j
bHVkZXNJbmNsdWRlc1N0cjMoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9v
bCBzZXRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzTWl4aW5DdXN0b21BdHRyaWJ1dGUoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcz46OnNldDxzZXRKU1Rlc3RDb25kaXRpb25hbEluY2x1
ZGVzSW5jbHVkZXNTdHIzU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJpbmNsdWRlc1N0cjMiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
VGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+OjpzZXQ8c2V0SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRl
c01peGluQ3VzdG9tQXR0cmlidXRlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsICJtaXhpbkN1c3RvbUF0dHJpYnV0ZSIpOwogfQogCiAjZW5kaWYK
IAogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNJbmNsdWRlc05vZGVHZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdENvbmRpdGlvbmFs
SW5jbHVkZXMmIHRoaXNPYmplY3QpCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0Q29uZGl0
aW9uYWxJbmNsdWRlc01peGluTm9kZUF0dHJpYnV0ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyYgdGhpc09iamVjdCkK
IHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMSW50ZXJmYWNlPE5vZGU+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhp
c09iamVjdC5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5pbmNsdWRlc05vZGUoKSkp
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMSW50ZXJmYWNl
PE5vZGU+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwg
dGhyb3dTY29wZSwgaW1wbC5taXhpbk5vZGVBdHRyaWJ1dGUoKSkpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0luY2x1ZGVzTm9kZShKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzTWl4aW5Ob2Rl
QXR0cmlidXRlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+OjpnZXQ8anNUZXN0Q29uZGl0aW9uYWxJbmNsdWRl
c0luY2x1ZGVzTm9kZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImluY2x1ZGVzTm9kZSIpOworICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcz46OmdldDxqc1Rlc3RDb25k
aXRpb25hbEluY2x1ZGVzTWl4aW5Ob2RlQXR0cmlidXRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAibWl4aW5O
b2RlQXR0cmlidXRlIik7CiB9CiAKICNlbmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8
fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1zdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0Q29uZGl0
aW9uYWxJbmNsdWRlc0luY2x1ZGVzTm9kZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyYgdGhpc09iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVz
TWl4aW5Ob2RlQXR0cmlidXRlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETEludGVyZmFjZTxOb2RlPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIFtdKEpT
Qzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYg
c2NvcGUpIHsgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2Nv
cGUsICJUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyIsICJpbmNsdWRlc05vZGUiLCAiTm9kZSIpOyB9
KTsKKyAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExJbnRlcmZhY2U8Tm9kZT4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXR0cmlidXRlVHlw
ZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVzdENvbmRpdGlvbmFsSW5jbHVk
ZXMiLCAibWl4aW5Ob2RlQXR0cmlidXRlIiwgIk5vZGUiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7Ci0gICAgICAgIHJldHVybiBpbXBs
LnNldEluY2x1ZGVzTm9kZSgqbmF0aXZlVmFsdWUpOworICAgICAgICByZXR1cm4gaW1wbC5zZXRN
aXhpbk5vZGVBdHRyaWJ1dGUoKm5hdGl2ZVZhbHVlKTsKICAgICB9KTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBzZXRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzSW5jbHVkZXNOb2RlKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0Q29uZGl0aW9u
YWxJbmNsdWRlc01peGluTm9kZUF0dHJpYnV0ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RDb25kaXRpb25hbEluY2x1
ZGVzPjo6c2V0PHNldEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNNaXhpbk5vZGVBdHRyaWJ1dGVT
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm1p
eGluTm9kZUF0dHJpYnV0ZSIpOworfQorCisjZW5kaWYKKworI2lmIEVOQUJMRShDb25kaXRpb24y
MikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXNQYXJ0aWFsTWl4aW5BdHRyaWJ1dGVGcm9tUGFydGlhbEdldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0Q29uZGl0aW9uYWxJbmNs
dWRlcyYgdGhpc09iamVjdCkKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMRG91YmxlPihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBpbXBsLnBhcnRpYWxNaXhpbkF0dHJpYnV0ZUZyb21QYXJ0aWFsKCkp
KSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQYXJ0aWFs
TWl4aW5BdHRyaWJ1dGVGcm9tUGFydGlhbChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPjo6c2V0PHNldEpTVGVz
dENvbmRpdGlvbmFsSW5jbHVkZXNJbmNsdWRlc05vZGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImluY2x1ZGVzTm9kZSIpOworICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcz46OmdldDxqc1Rlc3RDb25k
aXRpb25hbEluY2x1ZGVzUGFydGlhbE1peGluQXR0cmlidXRlRnJvbVBhcnRpYWxHZXR0ZXIsIENh
c3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsICJwYXJ0aWFsTWl4aW5BdHRyaWJ1dGVGcm9tUGFydGlhbCIpOwogfQogCiAjZW5kaWYK
IAogI2lmIChFTkFCTEUoQ29uZGl0aW9uMTIpICYmIEVOQUJMRShDb25kaXRpb24yMikpIHx8IEVO
QUJMRShDb25kaXRpb24yMykKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZDFCb2R5
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1l
KiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RDb25kaXRpb25hbEluY2x1
ZGVzPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25NaXhp
bk9wZXJhdGlvbkJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXM+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQogewogICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTU1NiwxOSArNjE5LDE5IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0o
Y2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwuaW5jbHVkZXNNZXRob2QxKCk7CisgICAg
aW1wbC5taXhpbk9wZXJhdGlvbigpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q29uZGl0
aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2QxKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1
bmN0aW9uTWl4aW5PcGVyYXRpb24oSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0
Q29uZGl0aW9uYWxJbmNsdWRlcz46OmNhbGw8anNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3Rv
dHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2QxQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpj
YWxsRnJhbWUsICJpbmNsdWRlc01ldGhvZDEiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+OjpjYWxsPGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQ
cm90b3R5cGVGdW5jdGlvbk1peGluT3BlcmF0aW9uQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3Qs
ICpjYWxsRnJhbWUsICJtaXhpbk9wZXJhdGlvbiIpOwogfQogCiAjZW5kaWYKIAogI2lmIChFTkFC
TEUoQ29uZGl0aW9uMTIpICYmIEVOQUJMRShDb25kaXRpb24yMikpIHx8IEVOQUJMRShDb25kaXRp
b24yMykKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDb25kaXRpb25h
bEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZDJCb2R5KEpTQzo6SlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUs
IHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPjo6Q2xhc3NQ
YXJhbWV0ZXIgY2FzdGVkVGhpcykKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25NaXhpbkNvbXBsZXhPcGVy
YXRpb25Cb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RDb25kaXRp
b25hbEluY2x1ZGVzPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKIHsKICAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC01ODQsMzcgKzY0NywzNyBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byBzdHJBcmcgPSBjb252
ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgp
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDEgPSBjYWxsRnJhbWUtPnVuY2hl
Y2tlZEFyZ3VtZW50KDEpOwotICAgIGF1dG8gb2JqQXJnID0gY29udmVydDxJRExJbnRlcmZhY2U8
VGVzdE9iaj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSwgW10oSlND
OjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBz
Y29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3Bl
LCAxLCAib2JqQXJnIiwgIlRlc3RDb25kaXRpb25hbEluY2x1ZGVzIiwgImluY2x1ZGVzTWV0aG9k
MiIsICJUZXN0T2JqIik7IH0pOworICAgIGF1dG8gb2JqQXJnID0gY29udmVydDxJRExJbnRlcmZh
Y2U8VGVzdE9iaj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSwgW10o
SlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3Bl
JiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNj
b3BlLCAxLCAib2JqQXJnIiwgIlRlc3RDb25kaXRpb25hbEluY2x1ZGVzIiwgIm1peGluQ29tcGxl
eE9wZXJhdGlvbiIsICJUZXN0T2JqIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwg
aW1wbC5pbmNsdWRlc01ldGhvZDIoKmNvbnRleHQsIFdURk1vdmUoc3RyQXJnKSwgKm9iakFyZykp
KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0
b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRU
aGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5taXhpbkNvbXBsZXhPcGVyYXRp
b24oKmNvbnRleHQsIFdURk1vdmUoc3RyQXJnKSwgKm9iakFyZykpKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1
bmN0aW9uSW5jbHVkZXNNZXRob2QyKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uTWl4aW5Db21wbGV4T3BlcmF0
aW9uKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVk
ZXM+OjpjYWxsPGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbkluY2x1
ZGVzTWV0aG9kMkJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAiaW5jbHVk
ZXNNZXRob2QyIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RDb25kaXRpb25hbElu
Y2x1ZGVzPjo6Y2FsbDxqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25N
aXhpbkNvbXBsZXhPcGVyYXRpb25Cb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFt
ZSwgIm1peGluQ29tcGxleE9wZXJhdGlvbiIpOwogfQogCiAjZW5kaWYKIAogI2lmIChFTkFCTEUo
Q29uZGl0aW9uMTIpICYmIEVOQUJMRShDb25kaXRpb24yMikpIHx8IEVOQUJMRShDb25kaXRpb24y
MykKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDb25kaXRpb25hbElu
Y2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZDNCb2R5KEpTQzo6SlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5
cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPjo6Q2xhc3NQYXJh
bWV0ZXIgY2FzdGVkVGhpcykKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25NaXhpbkN1c3RvbU9wZXJhdGlv
bkJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdENvbmRpdGlvbmFs
SW5jbHVkZXM+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQogewogICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsIChKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+aW5jbHVkZXNNZXRob2QzKCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5taXhpbkN1c3RvbU9wZXJh
dGlvbigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSkpKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1
bmN0aW9uSW5jbHVkZXNNZXRob2QzKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uTWl4aW5DdXN0b21PcGVyYXRp
b24oSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRl
cz46OmNhbGw8anNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uSW5jbHVk
ZXNNZXRob2QzQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJpbmNsdWRl
c01ldGhvZDMiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdENvbmRpdGlvbmFsSW5j
bHVkZXM+OjpjYWxsPGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbk1p
eGluQ3VzdG9tT3BlcmF0aW9uQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUs
ICJtaXhpbkN1c3RvbU9wZXJhdGlvbiIpOwogfQogCiAjZW5kaWYKIAogI2lmIChFTkFCTEUoQ29u
ZGl0aW9uMTEpICYmIEVOQUJMRShDb25kaXRpb24xMikgJiYgRU5BQkxFKENvbmRpdGlvbjIyKSkg
fHwgRU5BQkxFKENvbmRpdGlvbjIzKQotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbkluY2x1ZGVzTWV0aG9k
Q29uZGl0aW9uYWxCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RD
b25kaXRpb25hbEluY2x1ZGVzPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKK3N0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90
eXBlRnVuY3Rpb25NaXhpbkNvbmRpdGlvbmFsT3BlcmF0aW9uQm9keShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBl
bmFtZSBJRExPcGVyYXRpb248SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcz46OkNsYXNzUGFyYW1l
dGVyIGNhc3RlZFRoaXMpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwpAQCAtNjIyLDE5ICs2ODUsMTkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1w
bC5pbmNsdWRlc01ldGhvZENvbmRpdGlvbmFsKCk7CisgICAgaW1wbC5taXhpbkNvbmRpdGlvbmFs
T3BlcmF0aW9uKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDb25kaXRpb25hbEluY2x1
ZGVzUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZENvbmRpdGlvbmFsKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1
bmN0aW9uTWl4aW5Db25kaXRpb25hbE9wZXJhdGlvbihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPjo6Y2FsbDxqc1Rlc3RDb25kaXRpb25hbElu
Y2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZENvbmRpdGlvbmFsQm9keT4oKmxl
eGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJpbmNsdWRlc01ldGhvZENvbmRpdGlvbmFs
Iik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPjo6
Y2FsbDxqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25NaXhpbkNvbmRp
dGlvbmFsT3BlcmF0aW9uQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJt
aXhpbkNvbmRpdGlvbmFsT3BlcmF0aW9uIik7CiB9CiAKICNlbmRpZgogCiAjaWYgKEVOQUJMRShD
b25kaXRpb24xMikgJiYgRU5BQkxFKENvbmRpdGlvbjIyKSkgfHwgRU5BQkxFKENvbmRpdGlvbjIz
KQotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFsSW5j
bHVkZXNQcm90b3R5cGVGdW5jdGlvbkluY2x1ZGVzTWV0aG9kU2V0dGluZ3NDb25kaXRpb25hbEJv
ZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdENvbmRpdGlvbmFsSW5j
bHVkZXM+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQorc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbk1p
eGluU2V0dGluZ3NDb25kaXRpb25hbE9wZXJhdGlvbkJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUg
SURMT3BlcmF0aW9uPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+OjpDbGFzc1BhcmFtZXRlciBj
YXN0ZWRUaGlzKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAg
LTY0MiwzMiArNzA1LDUyIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3QKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGltcGwuaW5j
bHVkZXNNZXRob2RTZXR0aW5nc0NvbmRpdGlvbmFsKCk7CisgICAgaW1wbC5taXhpblNldHRpbmdz
Q29uZGl0aW9uYWxPcGVyYXRpb24oKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENvbmRp
dGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbkluY2x1ZGVzTWV0aG9kU2V0dGluZ3NDb25k
aXRpb25hbChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENvbmRpdGlvbmFs
SW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbk1peGluU2V0dGluZ3NDb25kaXRpb25hbE9wZXJhdGlv
bihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVz
Pjo6Y2FsbDxqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRl
c01ldGhvZFNldHRpbmdzQ29uZGl0aW9uYWxCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNh
bGxGcmFtZSwgImluY2x1ZGVzTWV0aG9kU2V0dGluZ3NDb25kaXRpb25hbCIpOworICAgIHJldHVy
biBJRExPcGVyYXRpb248SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcz46OmNhbGw8anNUZXN0Q29u
ZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uTWl4aW5TZXR0aW5nc0NvbmRpdGlvbmFs
T3BlcmF0aW9uQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJtaXhpblNl
dHRpbmdzQ29uZGl0aW9uYWxPcGVyYXRpb24iKTsKIH0KIAogI2VuZGlmCiAKICNpZiAoRU5BQkxF
KENvbmRpdGlvbjEyKSAmJiBFTkFCTEUoQ29uZGl0aW9uMjIpKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MjMpCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q29uZGl0aW9uYWxJ
bmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uVGFrZU5vZGVzQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFt
ZSBJRExPcGVyYXRpb248SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcz46OkNsYXNzUGFyYW1ldGVy
IGNhc3RlZFRoaXMpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q29u
ZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uTWl4aW5SZXN1bHRGaWVsZE9wZXJhdGlv
bkJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdENvbmRpdGlvbmFs
SW5jbHVkZXM+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQogewogICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKLSAgICBhdXRvIGltcGxSZXN1bHQgPSBpbXBsLnRha2VOb2RlcygpOworICAg
IGF1dG8gaW1wbFJlc3VsdCA9IGltcGwubWl4aW5SZXN1bHRGaWVsZE9wZXJhdGlvbigpOwogICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExT
ZXF1ZW5jZTxJRExJbnRlcmZhY2U8Tm9kZT4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3Rl
ZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEZNb3ZlKGltcGxSZXN1bHQubm9kZXMpKSkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQ
cm90b3R5cGVGdW5jdGlvblRha2VOb2RlcyhKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbk1peGluUmVzdWx0Rmll
bGRPcGVyYXRpb24oSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQoreworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0Q29uZGl0aW9u
YWxJbmNsdWRlcz46OmNhbGw8anNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0
aW9uTWl4aW5SZXN1bHRGaWVsZE9wZXJhdGlvbkJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAq
Y2FsbEZyYW1lLCAibWl4aW5SZXN1bHRGaWVsZE9wZXJhdGlvbiIpOworfQorCisjZW5kaWYKKwor
I2lmIChFTkFCTEUoQ29uZGl0aW9uMTIpICYmIEVOQUJMRShDb25kaXRpb24yMikgJiYgRU5BQkxF
KENvbmRpdGlvbjMzKSkgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlv
blBhcnRpYWxNaXhpbk9wZXJhdGlvbkZyb21QYXJ0aWFsQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFt
ZSBJRExPcGVyYXRpb248SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcz46OkNsYXNzUGFyYW1ldGVy
IGNhc3RlZFRoaXMpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1l
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIHRocm93U2Nv
cGUucmVsZWFzZSgpOworICAgIGltcGwucGFydGlhbE1peGluT3BlcmF0aW9uRnJvbVBhcnRpYWwo
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5
cGVGdW5jdGlvblBhcnRpYWxNaXhpbk9wZXJhdGlvbkZyb21QYXJ0aWFsKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1
cm4gSURMT3BlcmF0aW9uPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+OjpjYWxsPGpzVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvblRha2VOb2Rlc0JvZHk+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAidGFrZU5vZGVzIik7CisgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPjo6Y2FsbDxqc1Rlc3RDb25kaXRpb25h
bEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25QYXJ0aWFsTWl4aW5PcGVyYXRpb25Gcm9tUGFydGlh
bEJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAicGFydGlhbE1peGluT3Bl
cmF0aW9uRnJvbVBhcnRpYWwiKTsKIH0KIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
b25kaXRpb25hbEluY2x1ZGVzLmgJKHJldmlzaW9uIDI2Njc0MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTYwLDE1ICs2MCwxNSBAQCBwdWJsaWM6CiAKICAgICAvLyBDdXN0b20g
YXR0cmlidXRlcwogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIz
KQotICAgIEpTQzo6SlNWYWx1ZSBpbmNsdWRlc1N0cjMoSlNDOjpKU0dsb2JhbE9iamVjdCYpIGNv
bnN0OworICAgIEpTQzo6SlNWYWx1ZSBtaXhpbkN1c3RvbUF0dHJpYnV0ZShKU0M6OkpTR2xvYmFs
T2JqZWN0JikgY29uc3Q7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJM
RShDb25kaXRpb24yMykKLSAgICB2b2lkIHNldEluY2x1ZGVzU3RyMyhKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiwgSlNDOjpKU1ZhbHVlKTsKKyAgICB2b2lkIHNldE1peGluQ3VzdG9tQXR0cmlidXRlKEpT
Qzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUpOwogI2VuZGlmCiAKICAgICAvLyBDdXN0
b20gZnVuY3Rpb25zCiAjaWYgKEVOQUJMRShDb25kaXRpb24xMikgJiYgRU5BQkxFKENvbmRpdGlv
bjIyKSkgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIEpTQzo6SlNWYWx1ZSBpbmNsdWRlc01l
dGhvZDMoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6Q2FsbEZyYW1lJik7CisgICAgSlNDOjpK
U1ZhbHVlIG1peGluQ3VzdG9tT3BlcmF0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkNh
bGxGcmFtZSYpOwogI2VuZGlmCiBwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0Q29uZGl0aW9uYWxJbmNs
dWRlcyhKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RDb25kaXRp
b25hbEluY2x1ZGVzPiYmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbmNsdWRlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluY2x1ZGVzLmNwcAkocmV2aXNpb24gMjY2
NzQwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdElu
Y2x1ZGVzLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDYgKzAsMCBAQAotLyoKLSAgICBUaGlzIGZp
bGUgaXMgZ2VuZXJhdGVkIGp1c3QgdG8gdGVsbCBidWlsZCBzY3JpcHRzIHRoYXQgSlNUZXN0SW5j
bHVkZXMuaCBhbmQKLSAgICBKU1Rlc3RJbmNsdWRlcy5jcHAgYXJlIGNyZWF0ZWQgZm9yIFRlc3RJ
bmNsdWRlcy5pZGwsIGFuZCB0aHVzCi0gICAgcHJldmVudCB0aGUgYnVpbGQgc2NyaXB0cyBmcm9t
IHRyeWluZyB0byBnZW5lcmF0ZSBKU1Rlc3RJbmNsdWRlcy5oIGFuZAotICAgIEpTVGVzdEluY2x1
ZGVzLmNwcCBhdCBldmVyeSBidWlsZC4gVGhpcyBmaWxlIG11c3Qgbm90IGJlIHRyaWVkIHRvIGNv
bXBpbGUuCi0qLwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEluY2x1ZGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluY2x1ZGVzLmgJKHJldmlzaW9uIDI2Njc0MCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmNsdWRlcy5oCShu
b25leGlzdGVudCkKQEAgLTEsNiArMCwwIEBACi0vKgotICAgIFRoaXMgZmlsZSBpcyBnZW5lcmF0
ZWQganVzdCB0byB0ZWxsIGJ1aWxkIHNjcmlwdHMgdGhhdCBKU1Rlc3RJbmNsdWRlcy5oIGFuZAot
ICAgIEpTVGVzdEluY2x1ZGVzLmNwcCBhcmUgY3JlYXRlZCBmb3IgVGVzdEluY2x1ZGVzLmlkbCwg
YW5kIHRodXMKLSAgICBwcmV2ZW50IHRoZSBidWlsZCBzY3JpcHRzIGZyb20gdHJ5aW5nIHRvIGdl
bmVyYXRlIEpTVGVzdEluY2x1ZGVzLmggYW5kCi0gICAgSlNUZXN0SW5jbHVkZXMuY3BwIGF0IGV2
ZXJ5IGJ1aWxkLiBUaGlzIGZpbGUgbXVzdCBub3QgYmUgdHJpZWQgdG8gY29tcGlsZS4KLSovCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJm
YWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAkocmV2aXNpb24gMjY2NzQwKQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU0LDExICs1NCwxMSBAQAogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogI2lm
IEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQotI2luY2x1ZGUgIkpT
RE9NQ29udmVydE51bWJlcnMuaCIKICNpbmNsdWRlICJUZXN0U3VwcGxlbWVudGFsQnVpbHRpbnMu
aCIKICNlbmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MTIpIHx8IEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorI2luY2x1
ZGUgIkpTRE9NQ29udmVydE51bWJlcnMuaCIKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5o
IgogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2VuZGlmCkBAIC03NSwyMiArNzUsMjUgQEAgdXNpbmcg
bmFtZXNwYWNlIEpTQzsKIC8vIEZ1bmN0aW9ucwogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8
fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZDEoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25NaXhpbk9wZXJhdGlvbihK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNlbmRpZgogI2lmIEVOQUJM
RShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNN
ZXRob2QyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9u
TWl4aW5Db21wbGV4T3BlcmF0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFt
ZSopOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MjMpCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJv
dG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZDMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50
ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25NaXhpbkN1c3RvbU9wZXJhdGlvbihKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNlbmRpZgogI2lmIChFTkFCTEUoQ29uZGl0aW9u
MTEpICYmIEVOQUJMRShDb25kaXRpb24yMikpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLUpTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5j
dGlvbkluY2x1ZGVzTWV0aG9kQ29uZGl0aW9uYWwoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50
ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25NaXhpbkNvbmRpdGlvbmFsT3BlcmF0aW9uKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRp
dGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZFNl
dHRpbmdzQ29uZGl0aW9uYWwoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7
CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90
eXBlRnVuY3Rpb25NaXhpblNldHRpbmdzQ29uZGl0aW9uYWxPcGVyYXRpb24oSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9u
MjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblRha2VOb2RlcyhKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbk1peGluUmVzdWx0RmllbGRP
cGVyYXRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CisjZW5kaWYK
KyNpZiAoRU5BQkxFKENvbmRpdGlvbjIyKSAmJiBFTkFCTEUoQ29uZGl0aW9uMzMpKSB8fCBFTkFC
TEUoQ29uZGl0aW9uMjMpCitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25QYXJ0aWFsTWl4aW5PcGVyYXRpb25Gcm9tUGFydGlh
bChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNlbmRpZgogI2lmIEVO
QUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxl
bWVudGFsTWV0aG9kMShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKQEAg
LTExNSwxOSArMTE4LDIyIEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3QKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsK
IGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogI2lmIEVOQUJMRShD
b25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RJbnRlcmZhY2VJbmNsdWRlc1N0cjEoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0SW50ZXJmYWNlTWl4aW5SZWFkT25seUF0dHJpYnV0ZShKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogI2VuZGlmCiAjaWYgRU5B
QkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1KU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdEludGVyZmFjZUluY2x1ZGVzU3RyMihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotYm9vbCBzZXRKU1Rlc3RJbnRl
cmZhY2VJbmNsdWRlc1N0cjIoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRl
cmZhY2VNaXhpbkF0dHJpYnV0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VNaXhpbkF0
dHJpYnV0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJM
RShDb25kaXRpb24yMykKLUpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlSW5jbHVk
ZXNTdHIzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlBy
b3BlcnR5TmFtZSk7Ci1ib29sIHNldEpTVGVzdEludGVyZmFjZUluY2x1ZGVzU3RyMyhKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7
CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZU1peGluQ3VzdG9tQXR0cmlidXRl
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5
TmFtZSk7Citib29sIHNldEpTVGVzdEludGVyZmFjZU1peGluQ3VzdG9tQXR0cmlidXRlKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVl
KTsKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIz
KQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbmNsdWRlc05vZGUoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsK
LWJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlSW5jbHVkZXNOb2RlKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlTWl4aW5Ob2RlQXR0cmlidXRlKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNl
dEpTVGVzdEludGVyZmFjZU1peGluTm9kZUF0dHJpYnV0ZShKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CisjZW5kaWYKKyNpZiBF
TkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKK0pTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0SW50ZXJmYWNlUGFydGlhbE1peGluQXR0cmlidXRlRnJvbVBhcnRpYWwoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1l
KTsKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEy
KQogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvclN1cHBsZW1l
bnRhbFN0YXRpY1JlYWRPbmx5QXR0cihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwpAQCAtMTk1LDEyICsyMDEsMTcgQEAgdXNpbmcg
SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IgPSBKU0RPTQogc3RhdGljIGNvbnN0IEhhc2hUYWJs
ZVZhbHVlIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yVGFibGVWYWx1ZXNbXSA9CiB7CiAjaWYg
RU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgeyAiSU5DTFVE
RVNfQ09OU1RBTlQxIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29u
c3RhbnRJbnRlZ2VyLCBOb0ludHJpbnNpYywgeyAobG9uZyBsb25nKSgxKSB9IH0sCisgICAgeyAi
TUlYSU5fQ09OU1RBTlQiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
b25zdGFudEludGVnZXIsIE5vSW50cmluc2ljLCB7IChsb25nIGxvbmcpKDEpIH0gfSwKICNlbHNl
CiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKICNlbmRpZgogI2lmIEVOQUJM
RShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIHsgIklOQ0xVREVTX0NP
TlNUQU5UMiIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50
SW50ZWdlciwgTm9JbnRyaW5zaWMsIHsgKGxvbmcgbG9uZykoMikgfSB9LAorICAgIHsgIk1JWElO
X1JFRkxFQ1RFRF9DT05TVEFOVCIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkNvbnN0YW50SW50ZWdlciwgTm9JbnRyaW5zaWMsIHsgKGxvbmcgbG9uZykoMikgfSB9LAor
I2Vsc2UKKyAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAorI2VuZGlmCisjaWYg
RU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCisgICAgeyAiUEFSVElB
TF9NSVhJTl9DT05TVEFOVF9GUk9NX1BBUlRJQUwiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIsIE5vSW50cmluc2ljLCB7IChsb25nIGxvbmcp
KDUpIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKICNl
bmRpZgpAQCAtMjMyLDExICsyNDMsMTQgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpT
VGVzdEludGVyZgogfTsKIAogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRp
dGlvbjIzKQotc3RhdGljX2Fzc2VydChUZXN0SW50ZXJmYWNlOjpJTkNMVURFU19DT05TVEFOVDEg
PT0gMSwgIklOQ0xVREVTX0NPTlNUQU5UMSBpbiBUZXN0SW50ZXJmYWNlIGRvZXMgbm90IG1hdGNo
IHZhbHVlIGZyb20gSURMIik7CitzdGF0aWNfYXNzZXJ0KFRlc3RJbnRlcmZhY2U6Ok1JWElOX0NP
TlNUQU5UID09IDEsICJNSVhJTl9DT05TVEFOVCBpbiBUZXN0SW50ZXJmYWNlIGRvZXMgbm90IG1h
dGNoIHZhbHVlIGZyb20gSURMIik7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8
IEVOQUJMRShDb25kaXRpb24yMykKIHN0YXRpY19hc3NlcnQoVGVzdEludGVyZmFjZTo6Q09OU1Rf
SU1QTCA9PSAyLCAiQ09OU1RfSU1QTCBpbiBUZXN0SW50ZXJmYWNlIGRvZXMgbm90IG1hdGNoIHZh
bHVlIGZyb20gSURMIik7CiAjZW5kaWYKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJM
RShDb25kaXRpb24yMykKK3N0YXRpY19hc3NlcnQoVGVzdEludGVyZmFjZTo6UEFSVElBTF9NSVhJ
Tl9DT05TVEFOVF9GUk9NX1BBUlRJQUwgPT0gNSwgIlBBUlRJQUxfTUlYSU5fQ09OU1RBTlRfRlJP
TV9QQVJUSUFMIGluIFRlc3RJbnRlcmZhY2UgZG9lcyBub3QgbWF0Y2ggdmFsdWUgZnJvbSBJREwi
KTsKKyNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEy
KQogc3RhdGljX2Fzc2VydChUZXN0U3VwcGxlbWVudGFsOjpTVVBQTEVNRU5UQUxDT05TVEFOVDEg
PT0gMSwgIlNVUFBMRU1FTlRBTENPTlNUQU5UMSBpbiBUZXN0U3VwcGxlbWVudGFsIGRvZXMgbm90
IG1hdGNoIHZhbHVlIGZyb20gSURMIik7CiAjZW5kaWYKQEAgLTI5MywyMiArMzA3LDI3IEBAIHN0
YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RJbnRlcmYKIHsKICAgICB7ICJjb25zdHJ1
Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RJbnRlcmZh
Y2VDb25zdHJ1Y3RvcikgfSB9LAogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENv
bmRpdGlvbjIzKQotICAgIHsgImluY2x1ZGVzU3RyMSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1Rlc3RJbnRlcmZhY2VJbmNsdWRlc1N0cjEpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCisgICAgeyAibWl4aW5S
ZWFkT25seUF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RJ
bnRlcmZhY2VNaXhpblJlYWRPbmx5QXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogI2Vsc2UKICAgICB7IDAsIDAs
IE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIy
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgeyAiaW5jbHVkZXNTdHIyIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RJbnRlcmZh
Y2VJbmNsdWRlc1N0cjIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RJbnRlcmZhY2VJbmNsdWRlc1N0cjIpIH0gfSwKKyAgICB7
ICJtaXhpbkF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0SW50ZXJmYWNlTWl4aW5BdHRyaWJ1dGUpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RJbnRl
cmZhY2VNaXhpbkF0dHJpYnV0ZSkgfSB9LAogI2Vsc2UKICAgICB7IDAsIDAsIE5vSW50cmluc2lj
LCB7IDAsIDAgfSB9LAogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUo
Q29uZGl0aW9uMjMpCi0gICAgeyAiaW5jbHVkZXNTdHIzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RJbnRlcmZhY2VJbmNsdWRlc1N0
cjMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU1Rlc3RJbnRlcmZhY2VJbmNsdWRlc1N0cjMpIH0gfSwKKyAgICB7ICJtaXhpbkN1c3Rv
bUF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNUZXN0SW50ZXJmYWNlTWl4aW5DdXN0b21BdHRyaWJ1dGUpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RJbnRl
cmZhY2VNaXhpbkN1c3RvbUF0dHJpYnV0ZSkgfSB9LAogI2Vsc2UKICAgICB7IDAsIDAsIE5vSW50
cmluc2ljLCB7IDAsIDAgfSB9LAogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgeyAiaW5jbHVkZXNOb2RlIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RJbnRlcmZhY2VJbmNs
dWRlc05vZGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU1Rlc3RJbnRlcmZhY2VJbmNsdWRlc05vZGUpIH0gfSwKKyAgICB7ICJtaXhp
bk5vZGVBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdEludGVyZmFjZU1peGluTm9kZUF0dHJpYnV0ZSksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdElu
dGVyZmFjZU1peGluTm9kZUF0dHJpYnV0ZSkgfSB9LAorI2Vsc2UKKyAgICB7IDAsIDAsIE5vSW50
cmluc2ljLCB7IDAsIDAgfSB9LAorI2VuZGlmCisjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMjMpCisgICAgeyAicGFydGlhbE1peGluQXR0cmlidXRlRnJvbVBhcnRp
YWwiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0SW50ZXJmYWNlUGFydGlh
bE1peGluQXR0cmlidXRlRnJvbVBhcnRpYWwpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9J
bnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYKQEAgLTM0MywzMiArMzYyLDM3IEBAIHN0YXRp
YyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RJbnRlcmYKICAgICB7IDAsIDAsIE5vSW50cmlu
c2ljLCB7IDAsIDAgfSB9LAogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFC
TEUoQ29uZGl0aW9uMjMpCi0gICAgeyAiaW5jbHVkZXNNZXRob2QxIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RJbnRlcmZhY2VQ
cm90b3R5cGVGdW5jdGlvbkluY2x1ZGVzTWV0aG9kMSksIChpbnRwdHJfdCkgKDApIH0gfSwKKyAg
ICB7ICJtaXhpbk9wZXJhdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25NaXhp
bk9wZXJhdGlvbiksIChpbnRwdHJfdCkgKDApIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0lu
dHJpbnNpYywgeyAwLCAwIH0gfSwKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwg
RU5BQkxFKENvbmRpdGlvbjIzKQotICAgIHsgImluY2x1ZGVzTWV0aG9kMiIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0SW50ZXJm
YWNlUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZDIpLCAoaW50cHRyX3QpICgyKSB9IH0s
CisgICAgeyAibWl4aW5Db21wbGV4T3BlcmF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVG
dW5jdGlvbk1peGluQ29tcGxleE9wZXJhdGlvbiksIChpbnRwdHJfdCkgKDIpIH0gfSwKICNlbHNl
CiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKICNlbmRpZgogI2lmIEVOQUJM
RShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIHsgImluY2x1ZGVzTWV0
aG9kMyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5j
dGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5j
dGlvbj4oanNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZDMpLCAo
aW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAibWl4aW5DdXN0b21PcGVyYXRpb24iLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdElu
dGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uTWl4aW5DdXN0b21PcGVyYXRpb24pLCAoaW50cHRyX3Qp
ICgwKSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAj
ZW5kaWYKICNpZiAoRU5BQkxFKENvbmRpdGlvbjExKSAmJiBFTkFCTEUoQ29uZGl0aW9uMjIpKSB8
fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgeyAiaW5jbHVkZXNNZXRob2RDb25kaXRpb25hbCIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4o
anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZENvbmRpdGlvbmFs
KSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgIm1peGluQ29uZGl0aW9uYWxPcGVyYXRpb24i
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24p
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+
KGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uTWl4aW5Db25kaXRpb25hbE9wZXJhdGlv
biksIChpbnRwdHJfdCkgKDApIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywg
eyAwLCAwIH0gfSwKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENv
bmRpdGlvbjIzKQotICAgIHsgImluY2x1ZGVzTWV0aG9kU2V0dGluZ3NDb25kaXRpb25hbCIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNU
ZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZFNldHRpbmdzQ29uZGl0
aW9uYWwpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAibWl4aW5TZXR0aW5nc0NvbmRpdGlv
bmFsT3BlcmF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05h
dGl2ZUZ1bmN0aW9uPihqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbk1peGluU2V0dGlu
Z3NDb25kaXRpb25hbE9wZXJhdGlvbiksIChpbnRwdHJfdCkgKDApIH0gfSwKICNlbHNlCiAgICAg
eyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKICNlbmRpZgogI2lmIEVOQUJMRShDb25k
aXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIHsgInRha2VOb2RlcyIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0
SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25UYWtlTm9kZXMpLCAoaW50cHRyX3QpICgwKSB9IH0s
CisgICAgeyAibWl4aW5SZXN1bHRGaWVsZE9wZXJhdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0SW50ZXJmYWNlUHJvdG90
eXBlRnVuY3Rpb25NaXhpblJlc3VsdEZpZWxkT3BlcmF0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9
LAorI2Vsc2UKKyAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAorI2VuZGlmCisj
aWYgKEVOQUJMRShDb25kaXRpb24yMikgJiYgRU5BQkxFKENvbmRpdGlvbjMzKSkgfHwgRU5BQkxF
KENvbmRpdGlvbjIzKQorICAgIHsgInBhcnRpYWxNaXhpbk9wZXJhdGlvbkZyb21QYXJ0aWFsIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihq
c1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblBhcnRpYWxNaXhpbk9wZXJhdGlvbkZyb21Q
YXJ0aWFsKSwgKGludHB0cl90KSAoMCkgfSB9LAogI2Vsc2UKICAgICB7IDAsIDAsIE5vSW50cmlu
c2ljLCB7IDAsIDAgfSB9LAogI2VuZGlmCkBAIC0zOTcsMTIgKzQyMSwxNyBAQCBzdGF0aWMgY29u
c3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0SW50ZXJmCiAgICAgeyAidmFsdWVzIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RJbnRl
cmZhY2VQcm90b3R5cGVGdW5jdGlvblZhbHVlcyksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7
ICJmb3JFYWNoIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2
ZUZ1bmN0aW9uPihqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkZvckVhY2gpLCAoaW50
cHRyX3QpICgxKSB9IH0sCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0
aW9uMjMpCi0gICAgeyAiSU5DTFVERVNfQ09OU1RBTlQxIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2VyLCBOb0ludHJpbnNpYywgeyAobG9uZyBs
b25nKSgxKSB9IH0sCisgICAgeyAiTUlYSU5fQ09OU1RBTlQiLCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIsIE5vSW50cmluc2ljLCB7IChsb25n
IGxvbmcpKDEpIH0gfSwKKyNlbHNlCisgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0g
fSwKKyNlbmRpZgorI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIz
KQorICAgIHsgIk1JWElOX1JFRkxFQ1RFRF9DT05TVEFOVCIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdlciwgTm9JbnRyaW5zaWMsIHsgKGxvbmcg
bG9uZykoMikgfSB9LAogI2Vsc2UKICAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9
LAogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMp
Ci0gICAgeyAiSU5DTFVERVNfQ09OU1RBTlQyIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2VyLCBOb0ludHJpbnNpYywgeyAobG9uZyBsb25nKSgy
KSB9IH0sCisgICAgeyAiUEFSVElBTF9NSVhJTl9DT05TVEFOVF9GUk9NX1BBUlRJQUwiLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIsIE5vSW50
cmluc2ljLCB7IChsb25nIGxvbmcpKDUpIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJp
bnNpYywgeyAwLCAwIH0gfSwKICNlbmRpZgpAQCAtNDI4LDcgKzQ1Nyw3IEBAIHZvaWQgSlNUZXN0
SW50ZXJmYWNlUHJvdG90eXBlOjpmaW5pc2hDcmUKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8
IEVOQUJMRShDb25kaXRpb24yMykKICAgICBpZiAoIWRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSktPnNldHRpbmdzKCkudGVzdFNldHRpbmdFbmFibGVkKCkpIHsKICAgICAgICAgaGFzRGlz
YWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1l
ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hh
cio+KCJpbmNsdWRlc01ldGhvZFNldHRpbmdzQ29uZGl0aW9uYWwiKSwgc3RybGVuKCJpbmNsdWRl
c01ldGhvZFNldHRpbmdzQ29uZGl0aW9uYWwiKSk7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1l
ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hh
cio+KCJtaXhpblNldHRpbmdzQ29uZGl0aW9uYWxPcGVyYXRpb24iKSwgc3RybGVuKCJtaXhpblNl
dHRpbmdzQ29uZGl0aW9uYWxPcGVyYXRpb24iKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0
eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmln
dXJhYmxlKTsKICAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIEpTT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBz
bG90KTsKQEAgLTUxMSwzOSArNTQwLDM5IEBAIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlQ29uc3Ry
dWN0b3IoSlNHbG8KIH0KIAogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRp
dGlvbjIzKQotc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUluY2x1ZGVzU3Ry
MUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0SW50ZXJm
YWNlJiB0aGlzT2JqZWN0KQorc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEludGVyZmFjZU1p
eGluUmVhZE9ubHlBdHRyaWJ1dGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTVGVzdEludGVyZmFjZSYgdGhpc09iamVjdCkKIHsKICAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMRE9NU3Ry
aW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmluY2x1ZGVzU3RyMSgp
KSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExET01TdHJp
bmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwubWl4aW5SZWFkT25seUF0
dHJpYnV0ZSgpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbmNsdWRl
c1N0cjEoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNl
TWl4aW5SZWFkT25seUF0dHJpYnV0ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU1Rlc3RJbnRlcmZhY2U+OjpnZXQ8anNUZXN0SW50ZXJmYWNlSW5jbHVk
ZXNTdHIxR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiaW5jbHVkZXNTdHIxIik7CisgICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU1Rlc3RJbnRlcmZhY2U+OjpnZXQ8anNUZXN0SW50ZXJmYWNlTWl4aW5SZWFkT25s
eUF0dHJpYnV0ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIm1peGluUmVhZE9ubHlBdHRyaWJ1dGUiKTsKIH0K
IAogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24y
MykKLXN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbmNsdWRlc1N0cjJHZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEludGVyZmFjZSYg
dGhpc09iamVjdCkKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VNaXhpbkF0
dHJpYnV0ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0
SW50ZXJmYWNlJiB0aGlzT2JqZWN0KQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExET01TdHJpbmc+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuaW5jbHVkZXNTdHIyKCkpKSk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETERPTVN0cmluZz4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5taXhpbkF0dHJpYnV0ZSgpKSkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbmNsdWRlc1N0cjIoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlTWl4aW5BdHRyaWJ1dGUoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0SW50ZXJmYWNl
Pjo6Z2V0PGpzVGVzdEludGVyZmFjZUluY2x1ZGVzU3RyMkdldHRlciwgQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImluY2x1
ZGVzU3RyMiIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0SW50ZXJmYWNlPjo6Z2V0
PGpzVGVzdEludGVyZmFjZU1peGluQXR0cmlidXRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAibWl4aW5BdHRy
aWJ1dGUiKTsKIH0KIAogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJM
RShDb25kaXRpb24yMykKLXN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VJbmNs
dWRlc1N0cjJTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVz
dEludGVyZmFjZSYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3N0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU1Rlc3RJbnRlcmZhY2VNaXhpbkF0dHJpYnV0ZVNldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0SW50ZXJmYWNlJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC01
NTEsODAgKzU4MCw5NiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlSW5j
CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7Ci0gICAgICAgIHJldHVybiBpbXBsLnNldEluY2x1ZGVzU3RyMihXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgICAgIHJldHVybiBpbXBsLnNldE1peGluQXR0cmlidXRl
KFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VJbmNsdWRlc1N0cjIoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VNaXhpbkF0dHJpYnV0ZShKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU1Rlc3RJbnRlcmZhY2U+OjpzZXQ8c2V0SlNUZXN0SW50ZXJmYWNlSW5jbHVkZXNTdHIyU2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJpbmNs
dWRlc1N0cjIiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEludGVyZmFjZT46OnNl
dDxzZXRKU1Rlc3RJbnRlcmZhY2VNaXhpbkF0dHJpYnV0ZVNldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAibWl4aW5BdHRyaWJ1dGUiKTsKIH0KIAog
I2VuZGlmCiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykK
LXN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbmNsdWRlc1N0cjNHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEludGVyZmFjZSYgdGhp
c09iamVjdCkKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VNaXhpbkN1c3Rv
bUF0dHJpYnV0ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNU
ZXN0SW50ZXJmYWNlJiB0aGlzT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKLSAgICByZXR1cm4gdGhpc09iamVjdC5pbmNsdWRlc1N0cjMobGV4aWNhbEds
b2JhbE9iamVjdCk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QubWl4aW5DdXN0b21BdHRyaWJ1dGUo
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFj
ZUluY2x1ZGVzU3RyMyhKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJ
bnRlcmZhY2VNaXhpbkN1c3RvbUF0dHJpYnV0ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RJbnRlcmZhY2U+OjpnZXQ8anNUZXN0SW50ZXJmYWNl
SW5jbHVkZXNTdHIzR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiaW5jbHVkZXNTdHIzIik7CisgICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU1Rlc3RJbnRlcmZhY2U+OjpnZXQ8anNUZXN0SW50ZXJmYWNlTWl4aW5D
dXN0b21BdHRyaWJ1dGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJtaXhpbkN1c3RvbUF0dHJpYnV0ZSIpOwog
fQogCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlv
bjIzKQotc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdEludGVyZmFjZUluY2x1ZGVzU3RyM1Nl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0SW50ZXJmYWNl
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQorc3RhdGljIGlubGluZSBib29sIHNldEpTVGVz
dEludGVyZmFjZU1peGluQ3VzdG9tQXR0cmlidXRlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RJbnRlcmZhY2UmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
LSAgICB0aGlzT2JqZWN0LnNldEluY2x1ZGVzU3RyMyhsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CisgICAgdGhpc09iamVjdC5zZXRNaXhpbkN1c3RvbUF0dHJpYnV0ZShsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgc2V0SlNUZXN0SW50
ZXJmYWNlSW5jbHVkZXNTdHIzKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jv
b2wgc2V0SlNUZXN0SW50ZXJmYWNlTWl4aW5DdXN0b21BdHRyaWJ1dGUoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0SW50
ZXJmYWNlPjo6c2V0PHNldEpTVGVzdEludGVyZmFjZUluY2x1ZGVzU3RyM1NldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiaW5jbHVkZXNTdHIzIik7
CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RJbnRlcmZhY2U+OjpzZXQ8c2V0SlNUZXN0
SW50ZXJmYWNlTWl4aW5DdXN0b21BdHRyaWJ1dGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm1peGluQ3VzdG9tQXR0cmlidXRlIik7CiB9CiAK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMp
Ci1zdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0SW50ZXJmYWNlSW5jbHVkZXNOb2RlR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RJbnRlcmZhY2UmIHRo
aXNPYmplY3QpCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0SW50ZXJmYWNlTWl4aW5Ob2Rl
QXR0cmlidXRlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rl
c3RJbnRlcmZhY2UmIHRoaXNPYmplY3QpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETEludGVyZmFjZTxOb2RlPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCksIHRocm93U2Nv
cGUsIGltcGwuaW5jbHVkZXNOb2RlKCkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETEludGVyZmFjZTxOb2RlPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgKnRo
aXNPYmplY3QuZ2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwubWl4aW5Ob2RlQXR0cmli
dXRlKCkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUluY2x1ZGVzTm9k
ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VNaXhp
bk5vZGVBdHRyaWJ1dGUoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNUZXN0SW50ZXJmYWNlPjo6Z2V0PGpzVGVzdEludGVyZmFjZUluY2x1ZGVzTm9kZUdl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgImluY2x1ZGVzTm9kZSIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNUZXN0SW50ZXJmYWNlPjo6Z2V0PGpzVGVzdEludGVyZmFjZU1peGluTm9kZUF0dHJpYnV0ZUdl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgIm1peGluTm9kZUF0dHJpYnV0ZSIpOwogfQogCiAjZW5kaWYKIAogI2lm
IEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotc3RhdGljIGlubGlu
ZSBib29sIHNldEpTVGVzdEludGVyZmFjZUluY2x1ZGVzTm9kZVNldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0SW50ZXJmYWNlJiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKQorc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdEludGVyZmFjZU1peGluTm9k
ZUF0dHJpYnV0ZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNU
ZXN0SW50ZXJmYWNlJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwotICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETEludGVyZmFjZTxO
b2RlPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIFtdKEpTQzo6SlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBdHRy
aWJ1dGVUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsICJUZXN0SW50ZXJmYWNl
IiwgImluY2x1ZGVzTm9kZSIsICJOb2RlIik7IH0pOworICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETEludGVyZmFjZTxOb2RlPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIFtd
KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29w
ZSYgc2NvcGUpIHsgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwg
c2NvcGUsICJUZXN0SW50ZXJmYWNlIiwgIm1peGluTm9kZUF0dHJpYnV0ZSIsICJOb2RlIik7IH0p
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewot
ICAgICAgICByZXR1cm4gaW1wbC5zZXRJbmNsdWRlc05vZGUoKm5hdGl2ZVZhbHVlKTsKKyAgICAg
ICAgcmV0dXJuIGltcGwuc2V0TWl4aW5Ob2RlQXR0cmlidXRlKCpuYXRpdmVWYWx1ZSk7CiAgICAg
fSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlSW5jbHVk
ZXNOb2RlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jvb2wgc2V0SlNUZXN0
SW50ZXJmYWNlTWl4aW5Ob2RlQXR0cmlidXRlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKIHsKLSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEludGVyZmFjZT46OnNldDxz
ZXRKU1Rlc3RJbnRlcmZhY2VJbmNsdWRlc05vZGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImluY2x1ZGVzTm9kZSIpOworICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNUZXN0SW50ZXJmYWNlPjo6c2V0PHNldEpTVGVzdEludGVyZmFjZU1peGlu
Tm9kZUF0dHJpYnV0ZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAibWl4aW5Ob2RlQXR0cmlidXRlIik7Cit9CisKKyNlbmRpZgorCisjaWYgRU5B
QkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCitzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNUZXN0SW50ZXJmYWNlUGFydGlhbE1peGluQXR0cmlidXRlRnJvbVBhcnRpYWxHZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEludGVyZmFjZSYg
dGhpc09iamVjdCkKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMRG91YmxlPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBpbXBsLnBhcnRpYWxNaXhpbkF0dHJpYnV0ZUZyb21QYXJ0aWFsKCkpKSk7Cit9
CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVBhcnRpYWxNaXhpbkF0dHJpYnV0ZUZy
b21QYXJ0aWFsKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTVGVzdEludGVyZmFjZT46OmdldDxqc1Rlc3RJbnRlcmZhY2VQYXJ0aWFsTWl4aW5BdHRyaWJ1
dGVGcm9tUGFydGlhbEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInBhcnRpYWxNaXhpbkF0dHJpYnV0ZUZyb21Q
YXJ0aWFsIik7CiB9CiAKICNlbmRpZgpAQCAtODM2LDcgKzg4MSw3IEBAIGJvb2wgc2V0SlNUZXN0
SW50ZXJmYWNlUmVmbGVjdEF0dHJpYnV0ZSgKICNlbmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlv
bjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZDFCb2R5
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1l
KiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+OjpDbGFz
c1BhcmFtZXRlciBjYXN0ZWRUaGlzKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uTWl4aW5PcGVyYXRpb25Cb2R5KEpTQzo6
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxs
RnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+OjpDbGFzc1BhcmFt
ZXRlciBjYXN0ZWRUaGlzKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKQEAgLTg0NCwxOSArODg5LDE5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIGlt
cGwuaW5jbHVkZXNNZXRob2QxKCk7CisgICAgaW1wbC5taXhpbk9wZXJhdGlvbigpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01l
dGhvZDEoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90
b3R5cGVGdW5jdGlvbk1peGluT3BlcmF0aW9uKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTVGVzdEludGVyZmFjZT46OmNhbGw8anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25J
bmNsdWRlc01ldGhvZDFCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgImlu
Y2x1ZGVzTWV0aG9kMSIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNl
Pjo6Y2FsbDxqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbk1peGluT3BlcmF0aW9uQm9k
eT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJtaXhpbk9wZXJhdGlvbiIpOwog
fQogCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlv
bjIzKQotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVBy
b3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2QyQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJ
RExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykK
K3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5
cGVGdW5jdGlvbk1peGluQ29tcGxleE9wZXJhdGlvbkJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUg
SURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMp
CiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtODcyLDM3ICs5
MTcsMzcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1
dG8gc3RyQXJnID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBh
cmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQxID0g
Y2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKLSAgICBhdXRvIG9iakFyZyA9IGNvbnZl
cnQ8SURMSW50ZXJmYWNlPFRlc3RPYmo+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQx
LnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Qzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5cGVFcnJvcihsZXhpY2FsR2xv
YmFsT2JqZWN0LCBzY29wZSwgMSwgIm9iakFyZyIsICJUZXN0SW50ZXJmYWNlIiwgImluY2x1ZGVz
TWV0aG9kMiIsICJUZXN0T2JqIik7IH0pOworICAgIGF1dG8gb2JqQXJnID0gY29udmVydDxJRExJ
bnRlcmZhY2U8VGVzdE9iaj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUo
KSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJv
d1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHNjb3BlLCAxLCAib2JqQXJnIiwgIlRlc3RJbnRlcmZhY2UiLCAibWl4aW5Db21wbGV4T3Bl
cmF0aW9uIiwgIlRlc3RPYmoiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBs
LmluY2x1ZGVzTWV0aG9kMigqY29udGV4dCwgV1RGTW92ZShzdHJBcmcpLCAqb2JqQXJnKSkpKTsK
KyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8
SURMSW50ZXJmYWNlPFRlc3RPYmo+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMt
Pmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLm1peGluQ29tcGxleE9wZXJhdGlvbigq
Y29udGV4dCwgV1RGTW92ZShzdHJBcmcpLCAqb2JqQXJnKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkluY2x1ZGVz
TWV0aG9kMihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVBy
b3RvdHlwZUZ1bmN0aW9uTWl4aW5Db21wbGV4T3BlcmF0aW9uKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSURM
T3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46OmNhbGw8anNUZXN0SW50ZXJmYWNlUHJvdG90eXBl
RnVuY3Rpb25JbmNsdWRlc01ldGhvZDJCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxG
cmFtZSwgImluY2x1ZGVzTWV0aG9kMiIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0
SW50ZXJmYWNlPjo6Y2FsbDxqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbk1peGluQ29t
cGxleE9wZXJhdGlvbkJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAibWl4
aW5Db21wbGV4T3BlcmF0aW9uIik7CiB9CiAKICNlbmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlv
bjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZDNCb2R5
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1l
KiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+OjpDbGFz
c1BhcmFtZXRlciBjYXN0ZWRUaGlzKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uTWl4aW5DdXN0b21PcGVyYXRpb25Cb2R5
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1l
KiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+OjpDbGFz
c1BhcmFtZXRlciBjYXN0ZWRUaGlzKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFN
KGNhbGxGcmFtZSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIChKU1ZhbHVl
OjplbmNvZGUoY2FzdGVkVGhpcy0+aW5jbHVkZXNNZXRob2QzKCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCAqY2FsbEZyYW1lKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKEpT
VmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5taXhpbkN1c3RvbU9wZXJhdGlvbigqbGV4aWNhbEds
b2JhbE9iamVjdCwgKmNhbGxGcmFtZSkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZDMoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5j
dGlvbk1peGluQ3VzdG9tT3BlcmF0aW9uKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdEludGVyZmFjZT46OmNhbGw8anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbmNs
dWRlc01ldGhvZDNCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgImluY2x1
ZGVzTWV0aG9kMyIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6
Y2FsbDxqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbk1peGluQ3VzdG9tT3BlcmF0aW9u
Qm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJtaXhpbkN1c3RvbU9wZXJh
dGlvbiIpOwogfQogCiAjZW5kaWYKIAogI2lmIChFTkFCTEUoQ29uZGl0aW9uMTEpICYmIEVOQUJM
RShDb25kaXRpb24yMikpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLXN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkluY2x1ZGVz
TWV0aG9kQ29uZGl0aW9uYWxCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxK
U1Rlc3RJbnRlcmZhY2U+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQorc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uTWl4
aW5Db25kaXRpb25hbE9wZXJhdGlvbkJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0
aW9uPEpTVGVzdEludGVyZmFjZT46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCiB7CiAgICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtOTEwLDE5ICs5NTUsMTkgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJB
TShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5pbmNsdWRlc01ldGhvZENvbmRpdGlv
bmFsKCk7CisgICAgaW1wbC5taXhpbkNvbmRpdGlvbmFsT3BlcmF0aW9uKCk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkluY2x1ZGVzTWV0aG9k
Q29uZGl0aW9uYWwoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZh
Y2VQcm90b3R5cGVGdW5jdGlvbk1peGluQ29uZGl0aW9uYWxPcGVyYXRpb24oSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Y2FsbDxqc1Rlc3RJbnRlcmZhY2VQ
cm90b3R5cGVGdW5jdGlvbkluY2x1ZGVzTWV0aG9kQ29uZGl0aW9uYWxCb2R5PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgImluY2x1ZGVzTWV0aG9kQ29uZGl0aW9uYWwiKTsKKyAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46OmNhbGw8anNUZXN0SW50ZXJm
YWNlUHJvdG90eXBlRnVuY3Rpb25NaXhpbkNvbmRpdGlvbmFsT3BlcmF0aW9uQm9keT4oKmxleGlj
YWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJtaXhpbkNvbmRpdGlvbmFsT3BlcmF0aW9uIik7
CiB9CiAKICNlbmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0
aW9uMjMpCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNl
UHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZFNldHRpbmdzQ29uZGl0aW9uYWxCb2R5KEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBj
YWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+OjpDbGFzc1Bh
cmFtZXRlciBjYXN0ZWRUaGlzKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uTWl4aW5TZXR0aW5nc0NvbmRpdGlvbmFsT3Bl
cmF0aW9uQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6
OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJm
YWNlPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CkBAIC05MzAsMzIgKzk3NSw1MiBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICB0aHJvd1Njb3BlLnJl
bGVhc2UoKTsKLSAgICBpbXBsLmluY2x1ZGVzTWV0aG9kU2V0dGluZ3NDb25kaXRpb25hbCgpOwor
ICAgIGltcGwubWl4aW5TZXR0aW5nc0NvbmRpdGlvbmFsT3BlcmF0aW9uKCk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkluY2x1ZGVzTWV0aG9k
U2V0dGluZ3NDb25kaXRpb25hbChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uTWl4aW5TZXR0aW5nc0NvbmRpdGlvbmFsT3BlcmF0
aW9uKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46OmNhbGw8
anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZFNldHRpbmdzQ29u
ZGl0aW9uYWxCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgImluY2x1ZGVz
TWV0aG9kU2V0dGluZ3NDb25kaXRpb25hbCIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNU
ZXN0SW50ZXJmYWNlPjo6Y2FsbDxqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbk1peGlu
U2V0dGluZ3NDb25kaXRpb25hbE9wZXJhdGlvbkJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAq
Y2FsbEZyYW1lLCAibWl4aW5TZXR0aW5nc0NvbmRpdGlvbmFsT3BlcmF0aW9uIik7CiB9CiAKICNl
bmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1z
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlUHJvdG90eXBl
RnVuY3Rpb25UYWtlTm9kZXNCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxK
U1Rlc3RJbnRlcmZhY2U+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQorc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uTWl4
aW5SZXN1bHRGaWVsZE9wZXJhdGlvbkJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0
aW9uPEpTVGVzdEludGVyZmFjZT46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCiB7CiAgICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGF1dG8gaW1wbFJlc3VsdCA9IGltcGwudGFrZU5v
ZGVzKCk7CisgICAgYXV0byBpbXBsUmVzdWx0ID0gaW1wbC5taXhpblJlc3VsdEZpZWxkT3BlcmF0
aW9uKCk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETFNlcXVlbmNlPElETEludGVyZmFjZTxOb2RlPj4+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUoaW1wbFJlc3VsdC5ub2Rl
cykpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNl
UHJvdG90eXBlRnVuY3Rpb25UYWtlTm9kZXMoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbk1peGluUmVzdWx0RmllbGRPcGVyYXRp
b24oSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQoreworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Y2FsbDxq
c1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbk1peGluUmVzdWx0RmllbGRPcGVyYXRpb25C
b2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm1peGluUmVzdWx0RmllbGRP
cGVyYXRpb24iKTsKK30KKworI2VuZGlmCisKKyNpZiAoRU5BQkxFKENvbmRpdGlvbjIyKSAmJiBF
TkFCTEUoQ29uZGl0aW9uMzMpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCitzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25QYXJ0
aWFsTWl4aW5PcGVyYXRpb25Gcm9tUGFydGlhbEJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURM
T3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCit7
CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKKyAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKKyAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwor
ICAgIGltcGwucGFydGlhbE1peGluT3BlcmF0aW9uRnJvbVBhcnRpYWwoKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uUGFydGlhbE1peGluT3Bl
cmF0aW9uRnJvbVBhcnRpYWwoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0SW50
ZXJmYWNlPjo6Y2FsbDxqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblRha2VOb2Rlc0Jv
ZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAidGFrZU5vZGVzIik7CisgICAg
cmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+OjpjYWxsPGpzVGVzdEludGVyZmFj
ZVByb3RvdHlwZUZ1bmN0aW9uUGFydGlhbE1peGluT3BlcmF0aW9uRnJvbVBhcnRpYWxCb2R5Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgInBhcnRpYWxNaXhpbk9wZXJhdGlvbkZy
b21QYXJ0aWFsIik7CiB9CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaAkocmV2aXNp
b24gMjY2NzQwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEludGVyZmFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCwxMCArNjQsMTAgQEAgcHVibGlj
OgogCiAgICAgLy8gQ3VzdG9tIGF0dHJpYnV0ZXMKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8
IEVOQUJMRShDb25kaXRpb24yMykKLSAgICBKU0M6OkpTVmFsdWUgaW5jbHVkZXNTdHIzKEpTQzo6
SlNHbG9iYWxPYmplY3QmKSBjb25zdDsKKyAgICBKU0M6OkpTVmFsdWUgbWl4aW5DdXN0b21BdHRy
aWJ1dGUoSlNDOjpKU0dsb2JhbE9iamVjdCYpIGNvbnN0OwogI2VuZGlmCiAjaWYgRU5BQkxFKENv
bmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgdm9pZCBzZXRJbmNsdWRlc1N0
cjMoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSk7CisgICAgdm9pZCBzZXRNaXhp
bkN1c3RvbUF0dHJpYnV0ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsKICNl
bmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogICAg
IEpTQzo6SlNWYWx1ZSBzdXBwbGVtZW50YWxTdHIzKEpTQzo6SlNHbG9iYWxPYmplY3QmKSBjb25z
dDsKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogCiAgICAgLy8gQ3VzdG9tIGZ1bmN0aW9ucwog
I2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIEpTQzo6
SlNWYWx1ZSBpbmNsdWRlc01ldGhvZDMoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6Q2FsbEZy
YW1lJik7CisgICAgSlNDOjpKU1ZhbHVlIG1peGluQ3VzdG9tT3BlcmF0aW9uKEpTQzo6SlNHbG9i
YWxPYmplY3QmLCBKU0M6OkNhbGxGcmFtZSYpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlv
bjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiAgICAgSlNDOjpKU1ZhbHVlIHN1cHBsZW1lbnRh
bE1ldGhvZDMoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6Q2FsbEZyYW1lJik7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWl4aW5JbnRlcmZh
Y2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RNaXhpbkludGVyZmFjZS5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1peGluSW50ZXJmYWNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIGdlbmVy
YXRlZCBqdXN0IHRvIHRlbGwgYnVpbGQgc2NyaXB0cyB0aGF0IEpTVGVzdE1peGluSW50ZXJmYWNl
LmggYW5kCisgICAgSlNUZXN0TWl4aW5JbnRlcmZhY2UuY3BwIGFyZSBjcmVhdGVkIGZvciBUZXN0
TWl4aW5JbnRlcmZhY2UuaWRsLCBhbmQgdGh1cworICAgIHByZXZlbnQgdGhlIGJ1aWxkIHNjcmlw
dHMgZnJvbSB0cnlpbmcgdG8gZ2VuZXJhdGUgSlNUZXN0TWl4aW5JbnRlcmZhY2UuaCBhbmQKKyAg
ICBKU1Rlc3RNaXhpbkludGVyZmFjZS5jcHAgYXQgZXZlcnkgYnVpbGQuIFRoaXMgZmlsZSBtdXN0
IG5vdCBiZSB0cmllZCB0byBjb21waWxlLgorKi8KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNaXhpbkludGVyZmFjZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNaXhpbkludGVy
ZmFjZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RNaXhpbkludGVyZmFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NiBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGp1c3QgdG8gdGVsbCBidWlsZCBz
Y3JpcHRzIHRoYXQgSlNUZXN0TWl4aW5JbnRlcmZhY2UuaCBhbmQKKyAgICBKU1Rlc3RNaXhpbklu
dGVyZmFjZS5jcHAgYXJlIGNyZWF0ZWQgZm9yIFRlc3RNaXhpbkludGVyZmFjZS5pZGwsIGFuZCB0
aHVzCisgICAgcHJldmVudCB0aGUgYnVpbGQgc2NyaXB0cyBmcm9tIHRyeWluZyB0byBnZW5lcmF0
ZSBKU1Rlc3RNaXhpbkludGVyZmFjZS5oIGFuZAorICAgIEpTVGVzdE1peGluSW50ZXJmYWNlLmNw
cCBhdCBldmVyeSBidWlsZC4gVGhpcyBmaWxlIG11c3Qgbm90IGJlIHRyaWVkIHRvIGNvbXBpbGUu
CisqLwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNw
cAkocmV2aXNpb24gMjY2NzQwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDYgKzEsMzc5IEBACiAvKgotICAgIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQganVzdCB0byB0
ZWxsIGJ1aWxkIHNjcmlwdHMgdGhhdCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmggYW5k
Ci0gICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAgYXJlIGNyZWF0ZWQgZm9yIFRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmlkbCwgYW5kIHRodXMKLSAgICBwcmV2ZW50IHRoZSBi
dWlsZCBzY3JpcHRzIGZyb20gdHJ5aW5nIHRvIGdlbmVyYXRlIEpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMuaCBhbmQKLSAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcCBhdCBl
dmVyeSBidWlsZC4gVGhpcyBmaWxlIG11c3Qgbm90IGJlIHRyaWVkIHRvIGNvbXBpbGUuCisgICAg
VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAg
IFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERP
IE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisK
KyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgogKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaCIKKworI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgor
I2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgorI2luY2x1ZGUgIkpTQmxvYi5oIgorI2luY2x1
ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3IuaCIKKyNpbmNs
dWRlICJKU0RPTUNvbnZlcnRCdWZmZXJTb3VyY2UuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnRJ
bnRlcmZhY2UuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnROdW1iZXJzLmgiCisjaW5jbHVkZSAi
SlNET01Db252ZXJ0U3RyaW5ncy5oIgorI2luY2x1ZGUgIkpTRE9NQ29udmVydFZhcmlhZGljLmgi
CisjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgorI2luY2x1ZGUgIkpTRE9NV3Jh
cHBlckNhY2hlLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1
ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5j
dGlvblByb3RvdHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5o
PgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9HZXRQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KKworCituYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSlNDOworCisv
LyBBdHRyaWJ1dGVzCisKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yc0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CisKK2NsYXNzIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKK3B1
YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRp
YyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYg
dm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCisgICAgeworICAgICAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90
eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIHB0
ci0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAg
IERFQ0xBUkVfSU5GTzsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgSlNDOjpTdWJz
cGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlND
OjpWTSYgdm0pCisgICAgeworICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlLCBCYXNlKTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJv
dG90eXBlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKKyAgICAgICAgOiBKU0M6OkpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVy
ZSkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Cit9
OworU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc1Byb3RvdHlwZSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlw
ZTo6QmFzZSk7CisKK3VzaW5nIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rv
ciA9IEpTRE9NQ29uc3RydWN0b3I8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz47CisKK3N0
YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yczEoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byog
Y2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0
b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOworICAgIEFTU0VSVChjYXN0ZWRUaGlzKTsKKyAg
ICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRB
cmd1bWVudCgwKTsKKyAgICBhdXRvIGFycmF5QnVmZmVyID0gY29udmVydDxJRExBcnJheUJ1ZmZl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCBbXShKU0M6OkpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7
IHRocm93QXJndW1lbnRUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJh
cnJheUJ1ZmZlciIsICJUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyIsIG51bGxwdHIsICJBcnJh
eUJ1ZmZlciIpOyB9KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOworICAgIGF1dG8gb2JqZWN0ID0gVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnM6OmNyZWF0ZSgqYXJyYXlCdWZmZXIpOworICAgIHN0YXRpY19hc3NlcnQoZGVjbHR5cGUob2Jq
ZWN0KTo6aXNSZWYpOworICAgIGF1dG8ganNWYWx1ZSA9IHRvSlNOZXdseUNyZWF0ZWQ8SURMSW50
ZXJmYWNlPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
ICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGTW92ZShvYmplY3QpKTsKKyAgICBzZXRT
dWJjbGFzc1N0cnVjdHVyZUlmTmVlZGVkPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGFzT2JqZWN0KGpzVmFsdWUpKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1ZhbHVlKTsKK30KKworc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1
Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gbGV4aWNh
bEdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CisgICAg
QVNTRVJUKGNhc3RlZFRoaXMpOworICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAg
PSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOworICAgIGF1dG8gYXJyYXlCdWZmZXJW
aWV3ID0gY29udmVydDxJRExBcnJheUJ1ZmZlclZpZXc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBh
cmd1bWVudDAudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGxl
eGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiYXJyYXlCdWZmZXJWaWV3IiwgIlRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzIiwgbnVsbHB0ciwgIkFycmF5QnVmZmVyVmlldyIpOyB9KTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAg
IGF1dG8gb2JqZWN0ID0gVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNyZWF0ZShhcnJheUJ1
ZmZlclZpZXcucmVsZWFzZU5vbk51bGwoKSk7CisgICAgc3RhdGljX2Fzc2VydChkZWNsdHlwZShv
YmplY3QpOjppc1JlZik7CisgICAgYXV0byBqc1ZhbHVlID0gdG9KU05ld2x5Q3JlYXRlZDxJRExJ
bnRlcmZhY2U8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEZNb3ZlKG9iamVjdCkpOworICAgIHNl
dFN1YmNsYXNzU3RydWN0dXJlSWZOZWVkZWQ8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+KGxl
eGljYWxHbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYXNPYmplY3QoanNWYWx1ZSkpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVmFsdWUpOworfQorCitzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0
cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMzKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBsZXhp
Y2FsR2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKKyAg
ICBBU1NFUlQoY2FzdGVkVGhpcyk7CisgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50
MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CisgICAgYXV0byBibG9iID0gY29u
dmVydDxJRExJbnRlcmZhY2U8QmxvYj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAu
dmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
OjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGxleGljYWxHbG9i
YWxPYmplY3QsIHNjb3BlLCAwLCAiYmxvYiIsICJUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyIs
IG51bGxwdHIsICJCbG9iIik7IH0pOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgYXV0byBvYmplY3QgPSBUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yczo6Y3JlYXRlKCpibG9iKTsKKyAgICBzdGF0aWNfYXNzZXJ0KGRlY2x0eXBlKG9i
amVjdCk6OmlzUmVmKTsKKyAgICBhdXRvIGpzVmFsdWUgPSB0b0pTTmV3bHlDcmVhdGVkPElETElu
dGVyZmFjZTxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUob2JqZWN0KSk7CisgICAgc2V0
U3ViY2xhc3NTdHJ1Y3R1cmVJZk5lZWRlZDxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4obGV4
aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBhc09iamVjdChqc1ZhbHVlKSk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNWYWx1ZSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3Ry
dWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczQoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGxleGlj
YWxHbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOworICAg
IEFTU0VSVChjYXN0ZWRUaGlzKTsKKyAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQw
ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKKyAgICBhdXRvIHN0cmluZyA9IGNv
bnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVl
KCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CisgICAgYXV0byBvYmplY3QgPSBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRl
KFdURk1vdmUoc3RyaW5nKSk7CisgICAgc3RhdGljX2Fzc2VydChkZWNsdHlwZShvYmplY3QpOjpp
c1JlZik7CisgICAgYXV0byBqc1ZhbHVlID0gdG9KU05ld2x5Q3JlYXRlZDxJRExJbnRlcmZhY2U8
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3Rl
ZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEZNb3ZlKG9iamVjdCkpOworICAgIHNldFN1YmNsYXNz
U3RydWN0dXJlSWZOZWVkZWQ8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+KGxleGljYWxHbG9i
YWxPYmplY3QsIGNhbGxGcmFtZSwgYXNPYmplY3QoanNWYWx1ZSkpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VmFsdWUpOworfQorCitzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM1KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFs
T2JqZWN0LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yc0NvbnN0cnVjdG9yKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKKyAgICBBU1NFUlQo
Y2FzdGVkVGhpcyk7CisgICAgYXV0byBsb25nQXJncyA9IGNvbnZlcnRWYXJpYWRpY0FyZ3VtZW50
czxJRExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgMCk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBhdXRv
IG9iamVjdCA9IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUoV1RGTW92ZShsb25n
QXJncykpOworICAgIHN0YXRpY19hc3NlcnQoZGVjbHR5cGUob2JqZWN0KTo6aXNSZWYpOworICAg
IGF1dG8ganNWYWx1ZSA9IHRvSlNOZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPFRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzPj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9i
YWxPYmplY3QoKSwgV1RGTW92ZShvYmplY3QpKTsKKyAgICBzZXRTdWJjbGFzc1N0cnVjdHVyZUlm
TmVlZGVkPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBj
YWxsRnJhbWUsIGFzT2JqZWN0KGpzVmFsdWUpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIHsgfSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1ZhbHVlKTsKK30K
KwordGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBs
ZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBzaXpl
X3QgYXJnc0NvdW50ID0gc3RkOjptaW48c2l6ZV90PigxLCBjYWxsRnJhbWUtPmFyZ3VtZW50Q291
bnQoKSk7CisgICAgaWYgKGFyZ3NDb3VudCA9PSAwKSB7CisgICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAoY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczUo
bGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKSkpOworICAgIH0KKyAgICBpZiAoYXJnc0Nv
dW50ID09IDEpIHsKKyAgICAgICAgSlNWYWx1ZSBkaXN0aW5ndWlzaGluZ0FyZyA9IGNhbGxGcmFt
ZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CisgICAgICAgIGlmIChkaXN0aW5ndWlzaGluZ0FyZy5p
c09iamVjdCgpICYmIGFzT2JqZWN0KGRpc3Rpbmd1aXNoaW5nQXJnKS0+aW5oZXJpdHM8SlNBcnJh
eUJ1ZmZlcj4odm0pKQorICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
IChjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMShsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBjYWxsRnJhbWUpKSk7CisgICAgICAgIGlmIChkaXN0aW5ndWlzaGluZ0FyZy5pc09iamVj
dCgpICYmIGFzT2JqZWN0KGRpc3Rpbmd1aXNoaW5nQXJnKS0+aW5oZXJpdHM8SlNBcnJheUJ1ZmZl
clZpZXc+KHZtKSkKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAo
Y29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczIobGV4aWNhbEdsb2JhbE9iamVj
dCwgY2FsbEZyYW1lKSkpOworICAgICAgICBpZiAoZGlzdGluZ3Vpc2hpbmdBcmcuaXNPYmplY3Qo
KSAmJiBhc09iamVjdChkaXN0aW5ndWlzaGluZ0FyZyktPmluaGVyaXRzPEpTQmxvYj4odm0pKQor
ICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIChjb25zdHJ1Y3RKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUp
KSk7CisgICAgICAgIGlmIChkaXN0aW5ndWlzaGluZ0FyZy5pc051bWJlcigpKQorICAgICAgICAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIChjb25zdHJ1Y3RKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzNShsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpKSk7CisgICAg
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAoY29uc3RydWN0SlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yczQobGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKSkpOworICAg
IH0KKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlKTsKK30KKwordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25z
dCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTSh2
bSk7CisgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOworfQorCit0
ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpp
bml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QpCit7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZt
LCAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBwdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pOworfQorCit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJM
RShKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IpIH07CisKKy8qIEhhc2gg
dGFibGUgZm9yIHByb3RvdHlwZSAqLworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZVRhYmxlVmFsdWVzW10gPQoreworICAg
IHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29u
c3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IpIH0gfSwK
K307CisKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90
eXBlOjpzX2luZm8gPSB7ICJUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyIsICZCYXNlOjpzX2lu
Zm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc1Byb3RvdHlwZSkgfTsKKwordm9pZCBKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0pOworICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yczo6aW5mbygpLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
UHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRI
T1VUX1RSQU5TSVRJT04oKTsKK30KKworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnM6OnNfaW5mbyA9IHsgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIiwgJkJh
c2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzKSB9OworCitKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
OjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnM+JiYgaW1wbCkKKyAgICA6IEpTRE9NV3JhcHBlcjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cz4oc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpCit7Cit9CisKK3ZvaWQg
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQorewor
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGlu
Zm8oKSkpOworCisgICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19iYXNlX29mPEFjdGl2ZURPTU9i
amVjdCwgVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+Ojp2YWx1ZSwgIkludGVyZmFjZSBpcyBu
b3QgbWFya2VkIGFzIFtBY3RpdmVET01PYmplY3RdIGV2ZW4gdGhvdWdoIGltcGxlbWVudGF0aW9u
IGNsYXNzIHN1YmNsYXNzZXMgQWN0aXZlRE9NT2JqZWN0LiIpOworCit9CisKK0pTT2JqZWN0KiBK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGVQcm90b3R5cGUoVk0mIHZtLCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlOjpjcmVhdGUodm0sICZnbG9iYWxPYmplY3QsIEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgJmds
b2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0Lm9iamVjdFByb3RvdHlwZSgpKSk7Cit9CisKK0pTT2Jq
ZWN0KiBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBnZXRET01Qcm90b3R5
cGU8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4odm0sIGdsb2JhbE9iamVjdCk7Cit9CisK
K0pTVmFsdWUgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Z2V0Q29uc3RydWN0b3IoVk0m
IHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBn
ZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I+
KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7Cit9
CisKK3ZvaWQgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6ZGVzdHJveShKU0M6OkpTQ2Vs
bCogY2VsbCkKK3sKKyAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiB0aGlzT2JqZWN0
ID0gc3RhdGljX2Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyo+KGNlbGwpOworICAg
IHRoaXNPYmplY3QtPkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6On5KU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzKCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgVk0mIHZt
ID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUqPih2bSwgSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBw
cm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7Cit9CisKK2Jvb2wgc2V0SlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKK3sKKyAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8qIHBy
b3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3Rv
dHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElLRUxZ
KCFwcm90b3R5cGUpKSB7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgLy8g
U2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKKyAgICByZXR1cm4gcHJvdG90eXBlLT5w
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKSk7Cit9CisKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnM6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRv
JiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0
YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAo
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzLmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzPiB8fCAhSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6bmVlZHNEZXN0
cnVjdGlvbik7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPikKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk7
CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycyk7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJs
ZS1jb2RlIikKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQor
ICAgIGlmICgmSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6dmlzaXRPdXRwdXRDb25zdHJh
aW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNs
aWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVf
V0FSTklOR1NfRU5ECitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQor
Cit2b2lkIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmFuYWx5emVIZWFwKEpTQ2VsbCog
Y2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqPihjZWxsKTsKKyAgICBhbmFseXpl
ci5zZXRXcmFwcGVkT2JqZWN0Rm9yQ2VsbChjZWxsLCAmdGhpc09iamVjdC0+d3JhcHBlZCgpKTsK
KyAgICBpZiAodGhpc09iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICAgICBh
bmFseXplci5zZXRMYWJlbEZvckNlbGwoY2VsbCwgInVybCAiICsgdGhpc09iamVjdC0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT51cmwoKS5zdHJpbmcoKSk7CisgICAgQmFzZTo6YW5hbHl6ZUhl
YXAoY2VsbCwgYW5hbHl6ZXIpOworfQorCitib29sIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtu
b3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvciwgY29uc3QgY2hhcioqIHJl
YXNvbikKK3sKKyAgICBVTlVTRURfUEFSQU0oaGFuZGxlKTsKKyAgICBVTlVTRURfUEFSQU0odmlz
aXRvcik7CisgICAgVU5VU0VEX1BBUkFNKHJlYXNvbik7CisgICAgcmV0dXJuIGZhbHNlOworfQor
Cit2b2lkIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNPd25lcjo6ZmluYWxpemUoSlNDOjpI
YW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCit7CisgICAgYXV0byog
anNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyA9IHN0YXRpY19jYXN0PEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CisgICAgYXV0byYgd29y
bGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7CisgICAgdW5jYWNo
ZVdyYXBwZXIod29ybGQsICZqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLT53cmFwcGVkKCks
IGpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpOworfQorCisjaWYgRU5BQkxFKEJJTkRJTkdf
SU5URUdSSVRZKQorI2lmIFBMQVRGT1JNKFdJTikKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0
NDgzKQorZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkICgqY29uc3QgX19pZGVudGlmaWVyKCI/P183
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNAV2ViQ29yZUBANkJAIilbXSkoKTsgfQorI2Vsc2UK
K2V4dGVybiAiQyIgeyBleHRlcm4gdm9pZCogX1pUVk43V2ViQ29yZTI2VGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNFW107IH0KKyNlbmRpZgorI2VuZGlmCisKK0pTQzo6SlNWYWx1ZSB0b0pTTmV3
bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBSZWY8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+JiYgaW1wbCkKK3sKKworI2lm
IEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKKyAgICBjb25zdCB2b2lkKiBhY3R1YWxWVGFibGVQ
b2ludGVyID0gZ2V0VlRhYmxlUG9pbnRlcihpbXBsLnB0cigpKTsKKyNpZiBQTEFURk9STShXSU4p
CisgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gX19pZGVudGlmaWVyKCI/P183VGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNAV2ViQ29yZUBANkJAIik7CisjZWxzZQorICAgIHZvaWQq
IGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9ICZfWlRWTjdXZWJDb3JlMjZUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc0VbMl07CisjZW5kaWYKKworICAgIC8vIElmIHRoaXMgZmFpbHMgVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMgZG9lcyBub3QgaGF2ZSBhIHZ0YWJsZSwgc28geW91IG5lZWQgdG8g
YWRkIHRoZQorICAgIC8vIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUgYXR0cmlidXRlIHRvIHRo
ZSBpbnRlcmZhY2UgZGVmaW5pdGlvbgorICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19wb2x5bW9y
cGhpYzxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz46OnZhbHVlLCAiVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMgaXMgbm90IHBvbHltb3JwaGljIik7CisKKyAgICAvLyBJZiB5b3UgaGl0IHRo
aXMgYXNzZXJ0aW9uIHlvdSBlaXRoZXIgaGF2ZSBhIHVzZSBhZnRlciBmcmVlIGJ1Zywgb3IKKyAg
ICAvLyBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyBoYXMgc3ViY2xhc3Nlcy4gSWYgVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgaGFzIHN1YmNsYXNzZXMgdGhhdCBnZXQgcGFzc2VkCisgICAg
Ly8gdG8gdG9KUygpIHdlIGN1cnJlbnRseSByZXF1aXJlIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzIHlvdSB0byBvcHQgb3V0IG9mIGJpbmRpbmcgaGFyZGVuaW5nCisgICAgLy8gYnkgYWRkaW5n
IHRoZSBTa2lwVlRhYmxlVmFsaWRhdGlvbiBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBJREwg
ZGVmaW5pdGlvbgorICAgIFJFTEVBU0VfQVNTRVJUKGFjdHVhbFZUYWJsZVBvaW50ZXIgPT0gZXhw
ZWN0ZWRWVGFibGVQb2ludGVyKTsKKyNlbmRpZgorICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPFRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwor
fQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycyYgaW1wbCkKK3sKKyAgICByZXR1cm4gd3JhcChsZXhpY2FsR2xvYmFsT2JqZWN0
LCBnbG9iYWxPYmplY3QsIGltcGwpOworfQorCitUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyog
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6dG9XcmFwcGVkKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqPih2bSwgdmFsdWUpKQorICAgICAgICByZXR1
cm4gJndyYXBwZXItPndyYXBwZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oCShyZXZpc2lvbiAy
NjY3NDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsOTMgQEAK
IC8qCi0gICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBqdXN0IHRvIHRlbGwgYnVpbGQgc2NyaXB0
cyB0aGF0IEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaCBhbmQKLSAgICBKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzLmNwcCBhcmUgY3JlYXRlZCBmb3IgVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMuaWRsLCBhbmQgdGh1cwotICAgIHByZXZlbnQgdGhlIGJ1aWxkIHNjcmlwdHMgZnJv
bSB0cnlpbmcgdG8gZ2VuZXJhdGUgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oIGFuZAot
ICAgIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwIGF0IGV2ZXJ5IGJ1aWxkLiBUaGlz
IGZpbGUgbXVzdCBub3QgYmUgdHJpZWQgdG8gY29tcGlsZS4KKyAgICBUaGlzIGZpbGUgaXMgcGFy
dCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBi
ZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAg
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTRE9NV3JhcHBlci5oIgorI2luY2x1ZGUgIlRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycyA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+
IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVyPFRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzPjsKKyAgICBzdGF0aWMgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyog
Y3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFJlZjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4mJiBpbXBsKQorICAgIHsK
KyAgICAgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogcHRyID0gbmV3IChOb3ROdWxs
LCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPihnbG9iYWxP
YmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoc3RydWN0dXJl
LCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgcHRyLT5maW5pc2hDcmVh
dGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOworICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKwor
ICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9N
R2xvYmFsT2JqZWN0Jik7CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6
OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKKyAgICBzdGF0aWMgVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMqIHRvV3JhcHBlZChKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKKyAgICBzdGF0aWMg
dm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBz
dGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBpbmZvKCksIEpTQzo6Tm9uQXJyYXkpOworICAgIH0KKworICAgIHN0YXRpYyBKU0M6OkpT
VmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3Qq
KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0
aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAg
ICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVu
dGx5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFj
ZUZvckltcGwodm0pOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKKyAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0Nl
bGwqLCBKU0M6OkhlYXBBbmFseXplciYpOworcHJvdGVjdGVkOgorICAgIEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4mJik7CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KEpTQzo6Vk0mKTsKK307CisKK2NsYXNzIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNPd25l
ciA6IHB1YmxpYyBKU0M6OldlYWtIYW5kbGVPd25lciB7CitwdWJsaWM6CisgICAgdmlydHVhbCBi
b29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4s
IHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0b3ImLCBjb25zdCBjaGFyKiopOworICAgIHZp
cnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250
ZXh0KTsKK307CisKK2lubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93bmVyKERP
TVdyYXBwZXJXb3JsZCYsIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKikKK3sKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc093bmVyPiBvd25l
cjsKKyAgICByZXR1cm4gJm93bmVyLmdldCgpOworfQorCitpbmxpbmUgdm9pZCogd3JhcHBlcktl
eShUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogd3JhcHBhYmxlT2JqZWN0KQoreworICAgIHJl
dHVybiB3cmFwcGFibGVPYmplY3Q7Cit9CisKK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
Jik7CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMqIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTKGxleGljYWxHbG9i
YWxPYmplY3QsIGdsb2JhbE9iamVjdCwgKmltcGwpIDogSlNDOjpqc051bGwoKTsgfQorSlNDOjpK
U1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFs
T2JqZWN0KiwgUmVmPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPiYmKTsKK2lubGluZSBKU0M6
OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWZQdHI8VGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+JiYgaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlNOZXdseUNy
ZWF0ZWQobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbXBsLnJlbGVhc2VOb25O
dWxsKCkpIDogSlNDOjpqc051bGwoKTsgfQorCit0ZW1wbGF0ZTw+IHN0cnVjdCBKU0RPTVdyYXBw
ZXJDb252ZXJ0ZXJUcmFpdHM8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+IHsKKyAgICB1c2lu
ZyBXcmFwcGVyQ2xhc3MgPSBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOworICAgIHVzaW5n
IFRvV3JhcHBlZFJldHVyblR5cGUgPSBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyo7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGFydGlhbE1peGluSW50ZXJmYWNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGFydGlh
bE1peGluSW50ZXJmYWNlLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGFydGlhbE1peGluSW50ZXJmYWNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDYgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRl
ZCBqdXN0IHRvIHRlbGwgYnVpbGQgc2NyaXB0cyB0aGF0IEpTVGVzdFBhcnRpYWxNaXhpbkludGVy
ZmFjZS5oIGFuZAorICAgIEpTVGVzdFBhcnRpYWxNaXhpbkludGVyZmFjZS5jcHAgYXJlIGNyZWF0
ZWQgZm9yIFRlc3RQYXJ0aWFsTWl4aW5JbnRlcmZhY2UuaWRsLCBhbmQgdGh1cworICAgIHByZXZl
bnQgdGhlIGJ1aWxkIHNjcmlwdHMgZnJvbSB0cnlpbmcgdG8gZ2VuZXJhdGUgSlNUZXN0UGFydGlh
bE1peGluSW50ZXJmYWNlLmggYW5kCisgICAgSlNUZXN0UGFydGlhbE1peGluSW50ZXJmYWNlLmNw
cCBhdCBldmVyeSBidWlsZC4gVGhpcyBmaWxlIG11c3Qgbm90IGJlIHRyaWVkIHRvIGNvbXBpbGUu
CisqLwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFBhcnRpYWxNaXhpbkludGVyZmFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQYXJ0aWFsTWl4aW5JbnRlcmZhY2UuaAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0UGFydGlhbE1peGluSW50ZXJmYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2IEBA
CisvKgorICAgIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQganVzdCB0byB0ZWxsIGJ1aWxkIHNjcmlw
dHMgdGhhdCBKU1Rlc3RQYXJ0aWFsTWl4aW5JbnRlcmZhY2UuaCBhbmQKKyAgICBKU1Rlc3RQYXJ0
aWFsTWl4aW5JbnRlcmZhY2UuY3BwIGFyZSBjcmVhdGVkIGZvciBUZXN0UGFydGlhbE1peGluSW50
ZXJmYWNlLmlkbCwgYW5kIHRodXMKKyAgICBwcmV2ZW50IHRoZSBidWlsZCBzY3JpcHRzIGZyb20g
dHJ5aW5nIHRvIGdlbmVyYXRlIEpTVGVzdFBhcnRpYWxNaXhpbkludGVyZmFjZS5oIGFuZAorICAg
IEpTVGVzdFBhcnRpYWxNaXhpbkludGVyZmFjZS5jcHAgYXQgZXZlcnkgYnVpbGQuIFRoaXMgZmls
ZSBtdXN0IG5vdCBiZSB0cmllZCB0byBjb21waWxlLgorKi8KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9Eb2N1bWVudE9yU2hhZG93Um9vdFN0eWxlU2hlZXRzLmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRPclNoYWRvd1Jvb3RTdHlsZVNoZWV0cy5pZGwJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50T3JTaGFkb3dSb290U3R5
bGVTaGVldHMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20vI2V4dGVuc2lvbnMtdG8tdGhlLWRv
Y3VtZW50LW9yLXNoYWRvdy1yb290LWludGVyZmFjZQorcGFydGlhbCBpbnRlcmZhY2UgbWl4aW4g
RG9jdW1lbnRPclNoYWRvd1Jvb3QgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTdHlsZVNoZWV0
TGlzdCBzdHlsZVNoZWV0czsgLy8gRklYTUU6IFNob3VsZCBiZSBbU2FtZU9iamVjdF0uCit9Owor
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRPclNoYWRvd1Jvb3QuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9yU2hhZG93Um9vdC5pZGwJKHJl
dmlzaW9uIDI2Njc0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9yU2hhZG93Um9v
dC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDIyICsyNiwyMiBAQAogCiAvLyBodHRwczovL2Rv
bS5zcGVjLndoYXR3Zy5vcmcvI2RvY3VtZW50b3JzaGFkb3dyb290CiBpbnRlcmZhY2UgbWl4aW4g
RG9jdW1lbnRPclNoYWRvd1Jvb3QgewotICAgIC8vIEV4dGVuc2lvbnMgZnJvbSBTaGFkb3cgRE9N
IEFQSSAoaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmNvbXBvbmVudHMvc3BlYy9zaGFkb3cvI2V4
dGVuc2lvbnMtdG8tdGhlLWRvY3VtZW50b3JzaGFkb3dyb290LW1peGluKS4KLSAgICAvLyBET01T
ZWxlY3Rpb24/IGdldFNlbGVjdGlvbigpOyAvLyBGSVhNRTogV2UgY3VycmVudGx5IGhhdmUgdGhp
cyBvbiBEb2N1bWVudCBvbmx5LgotICAgIEVsZW1lbnQ/IGVsZW1lbnRGcm9tUG9pbnQoZG91Ymxl
IHgsIGRvdWJsZSB5KTsKLSAgICBzZXF1ZW5jZTxFbGVtZW50PiBlbGVtZW50c0Zyb21Qb2ludChk
b3VibGUgeCwgZG91YmxlIHkpOwotICAgIC8vIENhcmV0UG9zaXRpb24/IGNhcmV0UG9zaXRpb25G
cm9tUG9pbnQoZG91YmxlIHgsIGRvdWJsZSB5KTsgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgor
ICAgIC8vIEV4dGVuc2lvbnMgZnJvbSBIVE1MIChodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3Jn
L211bHRpcGFnZS9kb20uaHRtbCNkb2N1bWVudG9yc2hhZG93cm9vdCkKICAgICByZWFkb25seSBh
dHRyaWJ1dGUgRWxlbWVudD8gYWN0aXZlRWxlbWVudDsKIAotICAgIC8vIEV4dGVuc2lvbnMgZnJv
bSB0aGUgQ1NTT00gc3BlY2lmaWNhdGlvbiAoaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzc29t
LyNleHRlbnNpb25zLXRvLXRoZS1kb2N1bWVudC1pbnRlcmZhY2UpLgotICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBTdHlsZVNoZWV0TGlzdCBzdHlsZVNoZWV0czsgLy8gRklYTUU6IFNob3VsZCBiZSBb
U2FtZU9iamVjdF0uCi0KLSAgICAvLyBFeHRlbnNpb25zIGZyb20gUG9pbnRlciBMb2NrIEFQSSAo
aHR0cHM6Ly93M2MuZ2l0aHViLmlvL3BvaW50ZXJsb2NrLyNleHRlbnNpb25zLXRvLXRoZS1kb2N1
bWVudG9yc2hhZG93cm9vdC1taXhpbikuCi0gICAgW0NvbmRpdGlvbmFsPVBPSU5URVJfTE9DS10g
cmVhZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQ/IHBvaW50ZXJMb2NrRWxlbWVudDsKKyAgICAvLyBG
SVhNRTogZ2V0U2VsZWN0aW9uIGlzIGN1cnJlbnRseSBkZWZpbmVkIG9ubHkgdG8gYmUgb24gRG9j
dW1lbnQgaW4gdGhlIFNlbGVjdGlvbiBBUEkgc3BlYworICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1
Yi5pby9zZWxlY3Rpb24tYXBpLyNleHRlbnNpb25zLXRvLWRvY3VtZW50LWludGVyZmFjZSwgYnV0
CisgICAgLy8gcHJldmlvdXNseSBoYWQgYmVlbiBkZWZpbmVkIHRvIGJlIG9uIERvY3VtZW50T3JT
aGFkb3dSb290IGluIHRoZSBkZXByZWNhdGVkIFNoYWRvdyBET00gc3BlYworICAgIC8vIGh0dHBz
Oi8vdzNjLmdpdGh1Yi5pby93ZWJjb21wb25lbnRzL3NwZWMvc2hhZG93LyNleHRlbnNpb25zLXRv
LXRoZS1kb2N1bWVudG9yc2hhZG93cm9vdC1taXhpbi4KKyAgICAvLyBXZSBzaG91bGQgZ2V0IHRo
aXMgcmVzb2x2ZWQgaW4gdGhlIFNlbGVjdGlvbiBBUEkgc3BlYyBhbmQgbW92ZSB0aGlzIHRvIHRo
ZSBjb3JyZWN0IElETCBmaWxlcy4KKyAgICAvLyBET01TZWxlY3Rpb24/IGdldFNlbGVjdGlvbigp
OwogCi0gICAgLy8gRXh0ZW5zaW9ucyBmcm9tIFBpY3R1cmUtaW4tUGljdHVyZSBBUEkgKGh0dHBz
Oi8vd2ljZy5naXRodWIuaW8vcGljdHVyZS1pbi1waWN0dXJlLyNkb2N1bWVudG9yc2hhZG93cm9v
dC1leHRlbnNpb24pCi0gICAgW0NvbmRpdGlvbmFsPVBJQ1RVUkVfSU5fUElDVFVSRV9BUEksIEVu
YWJsZWRCeVNldHRpbmc9UGljdHVyZUluUGljdHVyZUFQSV0gcmVhZG9ubHkgYXR0cmlidXRlIEVs
ZW1lbnQ/IHBpY3R1cmVJblBpY3R1cmVFbGVtZW50OwotCi0gICAgLy8gRXh0ZW5zaW9uIGZyb20g
V2ViIEFuaW1hdGlvbnMgQVBJIChodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvd2ViLWFuaW1hdGlv
bnMtMS8jZXh0ZW5zaW9ucy10by10aGUtZG9jdW1lbnRvcnNoYWRvd3Jvb3QtaW50ZXJmYWNlLW1p
eGluKQotICAgIFtFbmFibGVkQXRSdW50aW1lPVdlYkFuaW1hdGlvbnNdIHNlcXVlbmNlPFdlYkFu
aW1hdGlvbj4gZ2V0QW5pbWF0aW9ucygpOworICAgIC8vIEZJWE1FOiBUaGVzZSBhcmUgY3VycmVu
dGx5IGRlZmluZWQgb25seSB0byBiZSBvbiBEb2N1bWVudCBpbiB0aGUgQ1NTT00gc3BlYworICAg
IC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3NvbS12aWV3LyNleHRlbnNpb25zLXRvLXRo
ZS1kb2N1bWVudC1pbnRlcmZhY2UsIGJ1dAorICAgIC8vIHByZXZpb3VzbHkgaGFkIGJlZW4gZGVm
aW5lZCB0byBiZSBvbiBEb2N1bWVudE9yU2hhZG93Um9vdCBpbiB0aGUgZGVwcmVjYXRlZCBTaGFk
b3cgRE9NIHNwZWMKKyAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vd2ViY29tcG9uZW50cy9z
cGVjL3NoYWRvdy8jZXh0ZW5zaW9ucy10by10aGUtZG9jdW1lbnRvcnNoYWRvd3Jvb3QtbWl4aW4u
CisgICAgLy8gV2Ugc2hvdWxkIGdldCB0aGlzIHJlc29sdmVkIGluIHRoZSBDU1NPTSBzcGVjIGFu
ZCBtb3ZlIHRoZXNlIHRvIHRoZSBjb3JyZWN0IElETCBmaWxlcy4KKyAgICBFbGVtZW50PyBlbGVt
ZW50RnJvbVBvaW50KGRvdWJsZSB4LCBkb3VibGUgeSk7CisgICAgc2VxdWVuY2U8RWxlbWVudD4g
ZWxlbWVudHNGcm9tUG9pbnQoZG91YmxlIHgsIGRvdWJsZSB5KTsKKyAgICAvLyBDYXJldFBvc2l0
aW9uPyBjYXJldFBvc2l0aW9uRnJvbVBvaW50KGRvdWJsZSB4LCBkb3VibGUgeSk7IC8vIEZJWE1F
OiBJbXBsZW1lbnQgdGhpcy4KIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRP
clNoYWRvd1Jvb3RQb2ludGVyTG9jay5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50T3JTaGFkb3dSb290UG9pbnRlckxvY2suaWRsCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9yU2hhZG93Um9vdFBvaW50ZXJMb2NrLmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gaHR0cHM6Ly93
M2MuZ2l0aHViLmlvL3BvaW50ZXJsb2NrLyNleHRlbnNpb25zLXRvLXRoZS1kb2N1bWVudG9yc2hh
ZG93cm9vdC1taXhpbgorWworICAgIENvbmRpdGlvbmFsPVBPSU5URVJfTE9DSworXSBwYXJ0aWFs
IGludGVyZmFjZSBtaXhpbiBEb2N1bWVudE9yU2hhZG93Um9vdCB7CisgICAgcmVhZG9ubHkgYXR0
cmlidXRlIEVsZW1lbnQ/IHBvaW50ZXJMb2NrRWxlbWVudDsKK307Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408267</attachid>
            <date>2020-09-08 14:11:17 -0700</date>
            <delta_ts>2020-09-08 14:46:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216255-20200908141116.patch</filename>
            <type>text/plain</type>
            <size>196442</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2Njc0NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgxIEBACisyMDIwLTA5LTA3ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViSURMXSBBZGQgc3VwcG9ydCBm
b3IgcGFydGlhbCBpbnRlcmZhY2UgbWl4aW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTYyNTUKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBB
ZGxlci4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgV2ViSURMICdwYXJ0aWFsIGludGVyZmFj
ZSBtaXhpbnMnIGFuZCBhZG9wdCB0aGVtIGZvciBhIGZldworICAgICAgICBzdXBwbGVtZW50cyBv
ZiB0aGUgRG9jdW1lbnRPclNoYWRvd1Jvb3QgbWl4aW4uCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1
dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudE9yU2hhZG93Um9vdC5pZGw6CisgICAgICAgICogY3Nz
L0RvY3VtZW50T3JTaGFkb3dSb290U3R5bGVTaGVldHMuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBk
b20vRG9jdW1lbnRPclNoYWRvd1Jvb3RQb2ludGVyTG9jay5pZGw6IEFkZGVkLgorICAgICAgICAq
IE1vZHVsZXMvcGljdHVyZWlucGljdHVyZS9Eb2N1bWVudE9yU2hhZG93Um9vdFBpY3R1cmVJblBp
Y3R1cmUuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBhbmltYXRpb24vRG9jdW1lbnRPclNoYWRvd1Jv
b3RBbmltYXRpb25zLmlkbDogQWRkZWQuCisgICAgICAgIEFkZCBuZXcgc3BsaXQtb3V0IElETHMu
CisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG06CisgICAgICAg
IChHZW5lcmF0ZUVtcHR5SGVhZGVyQW5kQ3BwKToKKyAgICAgICAgTW92ZSBlbXB0eSBmaWxlIGdl
bmVyYXRpb24gaGVyZSAoZnJvbSBnZW5lcmF0ZS1iaW5kaW5ncy5wbCksIGFsbG93aW5nCisgICAg
ICAgIGZvciBhIHNpbXBsaWZpZWQgY29tcGlsYXRpb24gbW9kZWwsIHdoZXJlIGFsbCBJRExzIGdp
dmVuIHRvIGdlbmVyYXRlLWJpbmRpbmdzLnBsCisgICAgICAgIG5vdyBpbnN0YW50aWF0ZSB0aGUg
Q29kZUdlbmVyYXRvciBhbmQgaXQgaXMgdGhlIENvZGVHZW5lcmF0b3JzIGpvYiB0byBmaWd1cmUK
KyAgICAgICAgb3V0IGlmIHRoZSBmaWxlIG5lZWRzIGFueXRoaW5nIGdlbmVyYXRlZC4gVGhpcyBh
bGxvd3MgdGhlIGRlcGVuZGVuY2llcyBmaWxlCisgICAgICAgIHRvIGdldCBvdXQgb2YgdGhlIGJ1
c2luZXNzIG9mIGluZGljYXRpbmcgdGhhdCBhbiBJREwgZG9lc24ndCBuZWVkIGdlbmVyYXRpb24s
CisgICAgICAgIGFuZCBzdGljayB0byBqdXN0IGxpc3RpbmcgZGVwZW5kZW5jaWVzLiBUaGlzIGlz
IGltcG9ydGFudCBub3cgdGhhdCBkZXBlbmRlbmNpZXMKKyAgICAgICAgbGlrZSBpbnRlcmZhY2Ug
bWl4aW5zIGNhbiBub3cgaGF2ZSBkZXBlbmNpZXMgb2YgdGhlaXIgb3duLCBwYXJ0aWFsIGludGVy
ZmFjZSBtaXhpbnMuCisKKyAgICAgICAgKFByb2Nlc3NJbnRlcmZhY2VzKToKKyAgICAgICAgKFBy
b2Nlc3NEaWN0aW9uYXJpZXMpOgorICAgICAgICBNb3ZlIGxvZ2ljIHRvIGF2b2lkIGdlbmVyYXRp
b24gb2YgbWl4aW5zIGFuZCBwYXJ0aWFscyBoZXJlLgorCisgICAgICAgIChQcm9jZXNzSW50ZXJm
YWNlU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzKToKKyAgICAgICAgU3VwcG9ydCByZWN1cnNpdmVs
eSBwcm9jZXNzaW5nIHN1cHBsZW1lbnRhbCBkZXBlbmRlbmNpZXMgZm9yIHBhcnRpYWwgaW50ZXJm
YWNlCisgICAgICAgIG1peGlucy4gRW5zdXJlIHRoYXQgd2UgZG9uJ3QgZXZhbHVhdGUgZXhwb3N1
cmUgd2hlbiBkb2luZyB0aGlzLCBhcyB0aGF0IHNob3VsZAorICAgICAgICBvbmx5IGhhcHBlbiBv
biB0aGUgZmluYWwgaW50ZXJmYWNlLgorCisgICAgICAgIChzaG91bGRQcm9wZXJ0eUJlRXhwb3Nl
ZCk6CisgICAgICAgIE1vdmUgYWxsIGxvZ2ljIGZvciBleHBvc3VyZSBoZXJlLCByYXRoZXIgdGhh
biBzcGxpdHRpbmcgaXQgdXAgYmV0d2VlbiBoZXJlCisgICAgICAgIGFuZCBQcm9jZXNzSW50ZXJm
YWNlU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzL1Byb2Nlc3NEaWN0aW9uYXJ5U3VwcGxlbWVudGFs
RGVwZW5kZW5jaWVzCisgICAgICAgIAorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvZ2VuZXJh
dGUtYmluZGluZ3MucGw6CisgICAgICAgIChnZW5lcmF0ZUJpbmRpbmdzKToKKyAgICAgICAgKGdl
bmVyYXRlRW1wdHlIZWFkZXJBbmRDcHApOiBEZWxldGVkLgorICAgICAgICBSZW1vdmUgc3VwcG9y
dCBmb3IgdW51c2VkIGFkZGl0aW9uYWxJZGxGaWxlcyBvcHRpb24gYW5kIHNpbXBsaWZ5IHRoaW5n
cworICAgICAgICBieSBoYXZpbmcgQ29kZUdlbmVyYXRvciB3b3JrIG91dCB3aGV0aGVyIGl0IHNo
b3VsZCBnZW5lcmF0ZSBhbiBlbXB0eSBzZXQgb2YKKyAgICAgICAgZmlsZXMgYmFzZWQgb24gdGhl
IGZpbGVzIHRoZW1zZWx2ZXMgcmF0aGVyIHRoYW4gaW5mZXJyaW5nIGl0IGZyb20gdGhlIGRlcGVu
ZGVuY3kKKyAgICAgICAgaW5mb3JtYXRpb24uCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3ByZXByb2Nlc3MtaWRscy5wbDoKKyAgICAgICAgKGdldFBhcnRpYWxOYW1lc0Zyb21JREwpOgor
ICAgICAgICBBZGQgc3VwcG9ydCBmb3IgcHJvcGVybHkgcGFyc2luZyBwYXJ0aWFsIGludGVyZmFj
ZSBtaXhpbnMgYW5kIHN0b3AgZGlzYWxsb3dpbmcKKyAgICAgICAgZGVwZW5kZW5jaWVzLCBsaWtl
IGEgbWl4aW4gaW50ZXJmYWNlLCBmcm9tIGhhdmluZyBpdHMgb3duIGRlcGVuZGVuY2VzLgorCisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsSW5jbHVk
ZXMuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRp
b25hbEluY2x1ZGVzLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEluY2x1ZGVzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SW5jbHVkZXMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE1peGluSW50ZXJmYWNlLmNwcDogQWRkZWQuCisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1peGluSW50ZXJmYWNlLmg6IEFkZGVkLgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQYXJ0aWFsTWl4aW5JbnRlcmZhY2Uu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGFy
dGlhbE1peGluSW50ZXJmYWNlLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9TdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9UZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5pZGw6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Rlc3RJbmNsdWRlcy5pZGw6IFJlbW92ZWQuCisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RJbnRlcmZhY2UuaWRsOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0TWl4aW5JbnRlcmZhY2UuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGw6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3RQYXJ0aWFsTWl4aW5JbnRlcmZhY2UuaWRsOiBBZGRlZC4KKyAgICAgICAg
UmVuYW1lIFRlc3RJbmNsdWRlcyB0byBUZXN0TWl4aW5JbnRlcmZhY2UgKHNpbmNlIHRoYXQgaXMg
d2hhdCBpdCBpcyB0ZXN0aW5nKQorICAgICAgICBhbmQgYWRkIFRlc3RQYXJ0aWFsTWl4aW5JbnRl
cmZhY2UgdG8gdGVzdCBwYXJ0aWFsIGludGVyZmFjZSBtaXhpbnMuCisKIDIwMjAtMDktMDggIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggcHJlY2lzaW9uIGlz
c3VlcyBpbiBBdWRpb1BhcmFtVGltZWxpbmUgd2hlbiBldmVudCB0aW1lcyBhcmUgdmVyeSBjbG9z
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI2Njc0NykKKysrIFNvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00MjcsNiArNDI3LDcgQEAg
c2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBNb2R1bGVzL3BheW1lbnRyZXF1ZXN0
L1BheW1lbnRTaGlwcGluZ1R5cGUuaWRsCiAgICAgTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXlt
ZW50VmFsaWRhdGlvbkVycm9ycy5pZGwKIAorICAgIE1vZHVsZXMvcGljdHVyZWlucGljdHVyZS9E
b2N1bWVudE9yU2hhZG93Um9vdFBpY3R1cmVJblBpY3R1cmUuaWRsCiAgICAgTW9kdWxlcy9waWN0
dXJlaW5waWN0dXJlL0RvY3VtZW50UGljdHVyZUluUGljdHVyZS5pZGwKICAgICBNb2R1bGVzL3Bp
Y3R1cmVpbnBpY3R1cmUvRW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZlbnQuaWRsCiAgICAgTW9kdWxl
cy9waWN0dXJlaW5waWN0dXJlL0hUTUxWaWRlb0VsZW1lbnRQaWN0dXJlSW5QaWN0dXJlLmlkbApA
QCAtNjQxLDYgKzY0Miw3IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAgYW5p
bWF0aW9uL0NvbXBvc2l0ZU9wZXJhdGlvbi5pZGwKICAgICBhbmltYXRpb24vQ29tcG9zaXRlT3Bl
cmF0aW9uT3JBdXRvLmlkbAogICAgIGFuaW1hdGlvbi9Db21wdXRlZEVmZmVjdFRpbWluZy5pZGwK
KyAgICBhbmltYXRpb24vRG9jdW1lbnRPclNoYWRvd1Jvb3RBbmltYXRpb25zLmlkbAogICAgIGFu
aW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmlkbAogICAgIGFuaW1hdGlvbi9Eb2N1bWVudFRpbWVs
aW5lT3B0aW9ucy5pZGwKICAgICBhbmltYXRpb24vRmlsbE1vZGUuaWRsCkBAIC03MDAsNiArNzAy
LDcgQEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBjc3MvQ1NTU3R5bGVTaGVl
dC5pZGwKICAgICBjc3MvQ1NTU3VwcG9ydHNSdWxlLmlkbAogICAgIGNzcy9DU1NVbmtub3duUnVs
ZS5pZGwKKyAgICBjc3MvRG9jdW1lbnRPclNoYWRvd1Jvb3RTdHlsZVNoZWV0cy5pZGwKICAgICBj
c3MvRE9NQ1NTQ3VzdG9tUHJvcGVydHlEZXNjcmlwdG9yLmlkbAogICAgIGNzcy9ET01DU1NOYW1l
c3BhY2UuaWRsCiAgICAgY3NzL0RPTUNTU1BhaW50V29ya2xldC5pZGwKQEAgLTc3Myw2ICs3NzYs
NyBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAgIGRvbS9Eb2N1bWVudEZyYWdt
ZW50LmlkbAogICAgIGRvbS9Eb2N1bWVudEZ1bGxzY3JlZW4uaWRsCiAgICAgZG9tL0RvY3VtZW50
T3JTaGFkb3dSb290LmlkbAorICAgIGRvbS9Eb2N1bWVudE9yU2hhZG93Um9vdFBvaW50ZXJMb2Nr
LmlkbAogICAgIGRvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaWRsCiAgICAgZG9tL0RvY3VtZW50
VG91Y2guaWRsCiAgICAgZG9tL0RvY3VtZW50VHlwZS5pZGwKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAkocmV2aXNpb24gMjY2NzQ3KQor
KysgU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAkod29ya2lu
ZyBjb3B5KQpAQCAtMjU1LDYgKzI1NSw3IEBAICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvcGF5bWVu
dHJlcXVlc3QvUGEKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVu
dFNoaXBwaW5nT3B0aW9uLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9wYXltZW50cmVxdWVz
dC9QYXltZW50U2hpcHBpbmdUeXBlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9wYXltZW50
cmVxdWVzdC9QYXltZW50VmFsaWRhdGlvbkVycm9ycy5pZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVs
ZXMvcGljdHVyZWlucGljdHVyZS9Eb2N1bWVudE9yU2hhZG93Um9vdFBpY3R1cmVJblBpY3R1cmUu
aWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3BpY3R1cmVpbnBpY3R1cmUvRG9jdW1lbnRQaWN0
dXJlSW5QaWN0dXJlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9waWN0dXJlaW5waWN0dXJl
L0VudGVyUGljdHVyZUluUGljdHVyZUV2ZW50LmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9w
aWN0dXJlaW5waWN0dXJlL0hUTUxWaWRlb0VsZW1lbnRQaWN0dXJlSW5QaWN0dXJlLmlkbApAQCAt
NTM0LDYgKzUzNSw3IEBAICQoUFJPSkVDVF9ESVIpL2FuaW1hdGlvbi9DU1NUcmFuc2l0aW9uLmkK
ICQoUFJPSkVDVF9ESVIpL2FuaW1hdGlvbi9Db21wb3NpdGVPcGVyYXRpb24uaWRsCiAkKFBST0pF
Q1RfRElSKS9hbmltYXRpb24vQ29tcG9zaXRlT3BlcmF0aW9uT3JBdXRvLmlkbAogJChQUk9KRUNU
X0RJUikvYW5pbWF0aW9uL0NvbXB1dGVkRWZmZWN0VGltaW5nLmlkbAorJChQUk9KRUNUX0RJUikv
YW5pbWF0aW9uL0RvY3VtZW50T3JTaGFkb3dSb290QW5pbWF0aW9ucy5pZGwKICQoUFJPSkVDVF9E
SVIpL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmlkbAogJChQUk9KRUNUX0RJUikvYW5pbWF0
aW9uL0RvY3VtZW50VGltZWxpbmVPcHRpb25zLmlkbAogJChQUk9KRUNUX0RJUikvYW5pbWF0aW9u
L0VmZmVjdFRpbWluZy5pZGwKQEAgLTYxNiw2ICs2MTgsNyBAQCAkKFBST0pFQ1RfRElSKS9jc3Mv
RGVwcmVjYXRlZENTU09NUkdCQ29sCiAkKFBST0pFQ1RfRElSKS9jc3MvRGVwcmVjYXRlZENTU09N
UmVjdC5pZGwKICQoUFJPSkVDVF9ESVIpL2Nzcy9EZXByZWNhdGVkQ1NTT01WYWx1ZS5pZGwKICQo
UFJPSkVDVF9ESVIpL2Nzcy9EZXByZWNhdGVkQ1NTT01WYWx1ZUxpc3QuaWRsCiskKFBST0pFQ1Rf
RElSKS9jc3MvRG9jdW1lbnRPclNoYWRvd1Jvb3RTdHlsZVNoZWV0cy5pZGwKICQoUFJPSkVDVF9E
SVIpL2Nzcy9FbGVtZW50Q1NTSW5saW5lU3R5bGUuaWRsCiAkKFBST0pFQ1RfRElSKS9jc3MvRm9u
dEZhY2UuaWRsCiAkKFBST0pFQ1RfRElSKS9jc3MvRm9udEZhY2VTZXQuaWRsCkBAIC02OTEsNiAr
Njk0LDcgQEAgJChQUk9KRUNUX0RJUikvZG9tL0RvY3VtZW50QW5kRWxlbWVudEV2ZQogJChQUk9K
RUNUX0RJUikvZG9tL0RvY3VtZW50RnJhZ21lbnQuaWRsCiAkKFBST0pFQ1RfRElSKS9kb20vRG9j
dW1lbnRGdWxsc2NyZWVuLmlkbAogJChQUk9KRUNUX0RJUikvZG9tL0RvY3VtZW50T3JTaGFkb3dS
b290LmlkbAorJChQUk9KRUNUX0RJUikvZG9tL0RvY3VtZW50T3JTaGFkb3dSb290UG9pbnRlckxv
Y2suaWRsCiAkKFBST0pFQ1RfRElSKS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmlkbAogJChQ
Uk9KRUNUX0RJUikvZG9tL0RvY3VtZW50VG91Y2guaWRsCiAkKFBST0pFQ1RfRElSKS9kb20vRG9j
dW1lbnRUeXBlLmlkbApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0
LnhjZmlsZWxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QJKHJldmlzaW9uIDI2Njc0NykKKysrIFNvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CSh3b3JraW5nIGNvcHkpCkBAIC01NDQsNiAr
NTQ0LDE0IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWIKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRG9jdW1lbnRGdWxsc2Ny
ZWVuLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRG9j
dW1lbnRPclNoYWRvd1Jvb3QuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0RvY3VtZW50T3JTaGFkb3dSb290LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRG9jdW1lbnRPclNoYWRvd1Jvb3RBbmltYXRpb25z
LmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEb2N1
bWVudE9yU2hhZG93Um9vdEFuaW1hdGlvbnMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNEb2N1bWVudE9yU2hhZG93Um9vdFBpY3R1cmVJblBpY3R1cmUu
Y3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RvY3Vt
ZW50T3JTaGFkb3dSb290UGljdHVyZUluUGljdHVyZS5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RvY3VtZW50T3JTaGFkb3dSb290UG9pbnRlckxvY2su
Y3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RvY3Vt
ZW50T3JTaGFkb3dSb290UG9pbnRlckxvY2suaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNEb2N1bWVudE9yU2hhZG93Um9vdFN0eWxlU2hlZXRzLmNwcAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEb2N1bWVudE9y
U2hhZG93Um9vdFN0eWxlU2hlZXRzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTRG9jdW1lbnRQaWN0dXJlSW5QaWN0dXJlLmNwcAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEb2N1bWVudFBpY3R1cmVJblBpY3R1
cmUuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEb2N1
bWVudFN0b3JhZ2VBY2Nlc3MuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJ
KHJldmlzaW9uIDI2Njc0NykKKysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJ
KHdvcmtpbmcgY29weSkKQEAgLTM1Myw2ICszNTMsNyBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRTaGlwcGluZ09wdGlv
bi5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50U2hp
cHBpbmdUeXBlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1Bh
eW1lbnRWYWxpZGF0aW9uRXJyb3JzLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3BpY3R1
cmVpbnBpY3R1cmUvRG9jdW1lbnRPclNoYWRvd1Jvb3RQaWN0dXJlSW5QaWN0dXJlLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL3BpY3R1cmVpbnBpY3R1cmUvRG9jdW1lbnRQaWN0dXJlSW5Q
aWN0dXJlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3BpY3R1cmVpbnBpY3R1cmUvRW50
ZXJQaWN0dXJlSW5QaWN0dXJlRXZlbnQuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvcGlj
dHVyZWlucGljdHVyZS9IVE1MVmlkZW9FbGVtZW50UGljdHVyZUluUGljdHVyZS5pZGwgXApAQCAt
NTk4LDYgKzU5OSw3IEBAIEpTX0JJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL2FuaW1h
dGlvbi9Db21wb3NpdGVPcGVyYXRpb24uaWRsIFwKICAgICAkKFdlYkNvcmUpL2FuaW1hdGlvbi9D
b21wb3NpdGVPcGVyYXRpb25PckF1dG8uaWRsIFwKICAgICAkKFdlYkNvcmUpL2FuaW1hdGlvbi9D
b21wdXRlZEVmZmVjdFRpbWluZy5pZGwgXAorICAgICQoV2ViQ29yZSkvYW5pbWF0aW9uL0RvY3Vt
ZW50T3JTaGFkb3dSb290QW5pbWF0aW9ucy5pZGwgXAogICAgICQoV2ViQ29yZSkvYW5pbWF0aW9u
L0RvY3VtZW50VGltZWxpbmUuaWRsIFwKICAgICAkKFdlYkNvcmUpL2FuaW1hdGlvbi9Eb2N1bWVu
dFRpbWVsaW5lT3B0aW9ucy5pZGwgXAogICAgICQoV2ViQ29yZSkvYW5pbWF0aW9uL0VmZmVjdFRp
bWluZy5pZGwgXApAQCAtNjU0LDYgKzY1Niw3IEBAIEpTX0JJTkRJTkdfSURMUyA9IFwKICAgICAk
KFdlYkNvcmUpL2Nzcy9DU1NTdHlsZVNoZWV0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9jc3MvQ1NT
U3VwcG9ydHNSdWxlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9jc3MvQ1NTVW5rbm93blJ1bGUuaWRs
IFwKKyAgICAkKFdlYkNvcmUpL2Nzcy9Eb2N1bWVudE9yU2hhZG93Um9vdFN0eWxlU2hlZXRzLmlk
bCBcCiAgICAgJChXZWJDb3JlKS9jc3MvRE9NQ1NTQ3VzdG9tUHJvcGVydHlEZXNjcmlwdG9yLmlk
bCBcCiAgICAgJChXZWJDb3JlKS9jc3MvRE9NQ1NTTmFtZXNwYWNlLmlkbCBcCiAgICAgJChXZWJD
b3JlKS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmlkbCBcCkBAIC03MjQsNiArNzI3LDcgQEAgSlNf
QklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvZG9tL0RvY3VtZW50RnVsbHNjcmVlbi5p
ZGwgXAogICAgICQoV2ViQ29yZSkvZG9tL0RvY3VtZW50RnJhZ21lbnQuaWRsIFwKICAgICAkKFdl
YkNvcmUpL2RvbS9Eb2N1bWVudE9yU2hhZG93Um9vdC5pZGwgXAorICAgICQoV2ViQ29yZSkvZG9t
L0RvY3VtZW50T3JTaGFkb3dSb290UG9pbnRlckxvY2suaWRsIFwKICAgICAkKFdlYkNvcmUpL2Rv
bS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaWRsIFwKICAgICAkKFdlYkNvcmUpL2RvbS9Eb2N1bWVu
dFR5cGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL2RvbS9EcmFnRXZlbnQuaWRsIFwKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvcGljdHVyZWlucGljdHVyZS9Eb2N1bWVudE9yU2hhZG93Um9v
dFBpY3R1cmVJblBpY3R1cmUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcGljdHVyZWlucGljdHVyZS9Eb2N1bWVudE9yU2hhZG93Um9vdFBpY3R1cmVJblBpY3R1cmUu
aWRsCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGljdHVyZWlucGlj
dHVyZS9Eb2N1bWVudE9yU2hhZG93Um9vdFBpY3R1cmVJblBpY3R1cmUuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBodHRwczovL3czYy5naXRodWIu
aW8vcGljdHVyZS1pbi1waWN0dXJlLyNkb2N1bWVudG9yc2hhZG93cm9vdC1leHRlbnNpb24KK1sK
KyAgICBDb25kaXRpb25hbD1QSUNUVVJFX0lOX1BJQ1RVUkVfQVBJLAorICAgIEVuYWJsZWRCeVNl
dHRpbmc9UGljdHVyZUluUGljdHVyZUFQSQorXSBwYXJ0aWFsIGludGVyZmFjZSBtaXhpbiBEb2N1
bWVudE9yU2hhZG93Um9vdCB7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQ/IHBpY3R1
cmVJblBpY3R1cmVFbGVtZW50OworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI2Njc0NykKKysrIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMTAxMjYsNiArMTAxMjYsMTAgQEAKIAkJN0MzMzBBMDUxREY5Rjk1MTAwRDMzOTVDIC8q
IEpTUG9zaXRpb25PcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTUG9zaXRpb25PcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0MzMzBBMDYxREY5Rjk1MTAwRDMzOTVDIC8qIEpTUG9zaXRpb25PcHRpb25zLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUG9zaXRpb25PcHRpb25zLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdDMzNGMzYwMUI0QTA1MDQwMDUwMkNBRiAvKiBKU0RvY3VtZW50
RnJhZ21lbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJN0MzNjU1NjkyNTA2RERCNzAwQTc4ODJCIC8qIERvY3VtZW50T3JTaGFkb3dSb290U3R5bGVT
aGVldHMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IERvY3VtZW50T3JTaGFkb3dSb290U3R5bGVTaGVldHMuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzM2NTU2QzI1MDZERTlDMDBBNzg4MkIgLyogRG9j
dW1lbnRPclNoYWRvd1Jvb3RQb2ludGVyTG9jay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRG9jdW1lbnRPclNoYWRvd1Jv
b3RQb2ludGVyTG9jay5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMzY1NTZF
MjUwNkRGOTkwMEE3ODgyQiAvKiBEb2N1bWVudE9yU2hhZG93Um9vdFBpY3R1cmVJblBpY3R1cmUu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IERvY3VtZW50T3JTaGFkb3dSb290UGljdHVyZUluUGljdHVyZS5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMzY1NTcwMjUwNkUwQTcwMEE3ODgyQiAvKiBEb2N1
bWVudE9yU2hhZG93Um9vdEFuaW1hdGlvbnMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERvY3VtZW50T3JTaGFkb3dSb290
QW5pbWF0aW9ucy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMzgwNkRCMjUw
NUIxODkwMDc0NEE3QiAvKiBBbmltYXRpb25GcmFtZVByb3ZpZGVyLmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBBbmltYXRpb25GcmFtZVByb3ZpZGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0MzQTkxRTUxQzk2M0I4ODAwRDFBN0UzIC8qIENsaXBib2FyZEFjY2Vzc1Bv
bGljeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDbGlwYm9hcmRBY2Nlc3NQ
b2xpY3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MzQjc5NkYxOTA4NzU3QjAw
QjQ3QTJEIC8qIFVzZXJNZXNzYWdlSGFuZGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBVc2VyTWVzc2FnZUhhbmRsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTgzNTEsNiArMTgzNTUsNyBAQAogCQkxREVGMDZBMjIzM0MzMkRCMDBFRTIy
OEQgLyogcGljdHVyZWlucGljdHVyZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCisJCQkJN0MzNjU1NkUyNTA2REY5OTAwQTc4ODJCIC8qIERvY3VtZW50T3JTaGFk
b3dSb290UGljdHVyZUluUGljdHVyZS5pZGwgKi8sCiAJCQkJMURFRjA2REMyMzNEMkUxQzAwRUUy
MjhEIC8qIERvY3VtZW50UGljdHVyZUluUGljdHVyZS5jcHAgKi8sCiAJCQkJMURFRjA2REQyMzNE
MkUxQzAwRUUyMjhEIC8qIERvY3VtZW50UGljdHVyZUluUGljdHVyZS5oICovLAogCQkJCTFERUYw
NkRFMjMzRDJFMUMwMEVFMjI4RCAvKiBEb2N1bWVudFBpY3R1cmVJblBpY3R1cmUuaWRsICovLApA
QCAtMjE4MDksNiArMjE4MTQsNyBAQAogCQkJCTcxMjNDMTg1MjA0NzM5QjkwMDc4OTM5MiAvKiBD
U1NUcmFuc2l0aW9uLmlkbCAqLywKIAkJCQk3MTVBRDcxRjIwNTA1MTI0MDBENTkyREMgLyogRGVj
bGFyYXRpdmVBbmltYXRpb24uY3BwICovLAogCQkJCTcxNUFENzFEMjA1MDUxMjQwMEQ1OTJEQyAv
KiBEZWNsYXJhdGl2ZUFuaW1hdGlvbi5oICovLAorCQkJCTdDMzY1NTcwMjUwNkUwQTcwMEE3ODgy
QiAvKiBEb2N1bWVudE9yU2hhZG93Um9vdEFuaW1hdGlvbnMuaWRsICovLAogCQkJCTcxMDI1RUM0
MUY5OUYwOTYwMDRBMjUwQyAvKiBEb2N1bWVudFRpbWVsaW5lLmNwcCAqLywKIAkJCQk3MTAyNUVD
NTFGOTlGMDk2MDA0QTI1MEMgLyogRG9jdW1lbnRUaW1lbGluZS5oICovLAogCQkJCTcxMDI1RUNB
MUY5OUYwOTYwMDRBMjUwQyAvKiBEb2N1bWVudFRpbWVsaW5lLmlkbCAqLywKQEAgLTI4NjM4LDYg
KzI4NjQ0LDcgQEAKIAkJCQk5NDc5NDkyNzFFMDMxMzIwMDAwMThEODUgLyogRGVwcmVjYXRlZENT
U09NVmFsdWVMaXN0LmggKi8sCiAJCQkJQThEMDY1MUMwQTIzQzFGRTAwNUU3MjAzIC8qIERlcHJl
Y2F0ZWRDU1NPTVZhbHVlTGlzdC5pZGwgKi8sCiAJCQkJMEZBMEEwRTUyM0FFQUEzNTAwMEVFQjk0
IC8qIGRpYWxvZy5jc3MgKi8sCisJCQkJN0MzNjU1NjkyNTA2RERCNzAwQTc4ODJCIC8qIERvY3Vt
ZW50T3JTaGFkb3dSb290U3R5bGVTaGVldHMuaWRsICovLAogCQkJCTRCREEzRkY4MjE1MUI2RjIw
MEZENjYwNCAvKiBET01DU1NDdXN0b21Qcm9wZXJ0eURlc2NyaXB0b3IuaCAqLywKIAkJCQk0QkRB
M0ZGQTIxNTFCNkYzMDBGRDY2MDQgLyogRE9NQ1NTQ3VzdG9tUHJvcGVydHlEZXNjcmlwdG9yLmlk
bCAqLywKIAkJCQlGRDY3NzczNTE5NUNBQjIwMDA3MkUwRDMgLyogRE9NQ1NTTmFtZXNwYWNlLmNw
cCAqLywKQEAgLTI5MTg3LDYgKzI5MTk0LDcgQEAKIAkJCQlDRTA1N0ZBMzEyMjA3MzExMDBBNDc2
RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCAqLywKIAkJCQlDRTA1N0ZBNDEyMjA3
MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmggKi8sCiAJCQkJOUIwRkU4
NzMxRDlFMDJERjAwNEE4QUNCIC8qIERvY3VtZW50T3JTaGFkb3dSb290LmlkbCAqLywKKwkJCQk3
QzM2NTU2QzI1MDZERTlDMDBBNzg4MkIgLyogRG9jdW1lbnRPclNoYWRvd1Jvb3RQb2ludGVyTG9j
ay5pZGwgKi8sCiAJCQkJQThDMjI4MEQxMUQ0QTU5NzAwRDVBN0QzIC8qIERvY3VtZW50UGFyc2Vy
LmNwcCAqLywKIAkJCQlCQ0NGQkFFNzBCNTE1MkVEMDAwMUYxRDcgLyogRG9jdW1lbnRQYXJzZXIu
aCAqLywKIAkJCQlBRDZFNzFBQTE2Njg4OTlEMDAzMjBDMTMgLyogRG9jdW1lbnRTaGFyZWRPYmpl
Y3RQb29sLmNwcCAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudE9y
U2hhZG93Um9vdEFuaW1hdGlvbnMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9Eb2N1bWVudE9yU2hhZG93Um9vdEFuaW1hdGlvbnMuaWRsCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudE9yU2hhZG93Um9vdEFuaW1hdGlv
bnMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBo
dHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvd2ViLWFuaW1hdGlvbnMtMS8jZXh0ZW5zaW9ucy10by10
aGUtZG9jdW1lbnRvcnNoYWRvd3Jvb3QtaW50ZXJmYWNlLW1peGluCitbCisgICAgRW5hYmxlZEF0
UnVudGltZT1XZWJBbmltYXRpb25zCitdIHBhcnRpYWwgaW50ZXJmYWNlIG1peGluIERvY3VtZW50
T3JTaGFkb3dSb290IHsKKyAgICBzZXF1ZW5jZTxXZWJBbmltYXRpb24+IGdldEFuaW1hdGlvbnMo
KTsKK307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3IucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yLnBtCShyZXZpc2lvbiAyNjY3NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0JKHdvcmtpbmcgY29weSkKQEAgLTE5Niw2ICsxOTYs
MzAgQEAgc3ViIFByb2Nlc3NEb2N1bWVudAogICAgIGRpZSAiUHJvY2Vzc2luZyBkb2N1bWVudCAi
IC4gJHVzZURvY3VtZW50LT5maWxlTmFtZSAuICIgZGlkIG5vdCBnZW5lcmF0ZSBhbnl0aGluZy4i
OwogfQogCitzdWIgR2VuZXJhdGVFbXB0eUhlYWRlckFuZENwcAoreworICAgIG15ICgkb2JqZWN0
LCAkdXNlRG9jdW1lbnQsICRjb2RlR2VuZXJhdG9yKSA9IEBfOworCisgICAgbXkgJHRhcmdldE5h
bWUgPSBmaWxlcGFyc2UoJHVzZURvY3VtZW50LT5maWxlTmFtZSwgIi5pZGwiKTsKKyAgICBteSAk
cHJlZml4ID0gJGNvZGVHZW5lcmF0b3ItPkZpbGVOYW1lUHJlZml4KCk7CisKKyAgICBteSAkaGVh
ZGVyTmFtZSA9ICIke3ByZWZpeH0ke3RhcmdldE5hbWV9LmgiOworICAgIG15ICRjcHBOYW1lID0g
IiR7cHJlZml4fSR7dGFyZ2V0TmFtZX0uY3BwIjsKKyAgICBteSAkY29udGVudHMgPSAiLyoKKyAg
ICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIHRvIGluZm9ybSBidWlsZCBzY3JpcHRzIHRoYXQgJHto
ZWFkZXJOYW1lfSBhbmQKKyAgICAke2NwcE5hbWV9IHdlcmUgY3JlYXRlZCBmb3IgJHt0YXJnZXRO
YW1lfS5pZGwsIGFuZCBwcmV2ZW50IHRoZSBidWlsZAorICAgIHNjcmlwdHMgZnJvbSB0cnlpbmcg
dG8gcmVnZW5lcmF0ZSAke2hlYWRlck5hbWV9IGFuZCAke2NwcE5hbWV9IG9uIGV2ZXJ5IGJ1aWxk
LgorKi8KKyI7CisgICAgb3BlbiBGSCwgIj4gJHt1c2VPdXRwdXRIZWFkZXJzRGlyfS8ke2hlYWRl
ck5hbWV9IiBvciBkaWUgIkNhbm5vdCBvcGVuICR7aGVhZGVyTmFtZX1cbiI7CisgICAgcHJpbnQg
RkggJGNvbnRlbnRzOworICAgIGNsb3NlIEZIOworCisgICAgb3BlbiBGSCwgIj4gJHt1c2VPdXRw
dXREaXJ9LyR7Y3BwTmFtZX0iIG9yIGRpZSAiQ2Fubm90IG9wZW4gJHtjcHBOYW1lfVxuIjsKKyAg
ICBwcmludCBGSCAkY29udGVudHM7CisgICAgY2xvc2UgRkg7Cit9CisKIHN1YiBQcm9jZXNzRGlj
dGlvbmFyeUFuZEVudW1lcmF0aW9uSW1wbGVtZW50ZWRBc092ZXJyaWRlcwogewogICAgIG15ICgk
b2JqZWN0LCAkdXNlRG9jdW1lbnQpID0gQF87CkBAIC0yMTksNiArMjQzLDExIEBAIHN1YiBQcm9j
ZXNzSW50ZXJmYWNlcwogCiAgICAgZGllICJNdWx0aXBsZSBpbnRlcmZhY2VzIHBlciBkb2N1bWVu
dCBhcmUgbm90IHN1cHBvcnRlZCIgaWYgQHskdXNlRG9jdW1lbnQtPmludGVyZmFjZXN9ID4gMTsK
ICAgICBteSAkaW50ZXJmYWNlID0gJHVzZURvY3VtZW50LT5pbnRlcmZhY2VzLT5bMF07CisgICAg
CisgICAgaWYgKCRpbnRlcmZhY2UtPmlzTWl4aW4gfHwgJGludGVyZmFjZS0+aXNQYXJ0aWFsKSB7
CisgICAgICAgICRvYmplY3QtPkdlbmVyYXRlRW1wdHlIZWFkZXJBbmRDcHAoJHVzZURvY3VtZW50
LCAkY29kZUdlbmVyYXRvcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICAkb2JqZWN0
LT5Qcm9jZXNzSW50ZXJmYWNlU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzKCRpbnRlcmZhY2UsICR1
c2VEb2N1bWVudCk7CiAgICAgJG9iamVjdC0+UHJvY2Vzc0RpY3Rpb25hcnlBbmRFbnVtZXJhdGlv
bkltcGxlbWVudGVkQXNPdmVycmlkZXMoJHVzZURvY3VtZW50KTsKQEAgLTI2Miw2ICsyOTEsMTEg
QEAgc3ViIFByb2Nlc3NEaWN0aW9uYXJpZXMKICAgICAgICAgZGllICJNdWx0aXBsZSBkaWN0aW9u
YXJpZXMgcGVyIGRvY3VtZW50IGFyZSBvbmx5IHN1cHBvcnRlZCBpZiBvbmUgbWF0Y2hlcyB0aGUg
ZmlsZW5hbWUiIHVubGVzcyAkZGljdGlvbmFyeTsKICAgICB9CiAKKyAgICBpZiAoJGRpY3Rpb25h
cnktPmlzUGFydGlhbCkgeworICAgICAgICAkb2JqZWN0LT5HZW5lcmF0ZUVtcHR5SGVhZGVyQW5k
Q3BwKCR1c2VEb2N1bWVudCwgJGNvZGVHZW5lcmF0b3IpOworICAgICAgICByZXR1cm47CisgICAg
fQorCiAgICAgJG9iamVjdC0+UHJvY2Vzc0RpY3Rpb25hcnlTdXBwbGVtZW50YWxEZXBlbmRlbmNp
ZXMoJGRpY3Rpb25hcnksICR1c2VEb2N1bWVudCk7CiAgICAgJG9iamVjdC0+UHJvY2Vzc0RpY3Rp
b25hcnlBbmRFbnVtZXJhdGlvbkltcGxlbWVudGVkQXNPdmVycmlkZXMoJHVzZURvY3VtZW50KTsK
ICAgICAKQEAgLTM0Myw5ICszNzcsNiBAQCBzdWIgUHJvY2Vzc0ludGVyZmFjZVN1cHBsZW1lbnRh
bERlcGVuZGVuCiAKICAgICBteSAkdGFyZ2V0RmlsZU5hbWUgPSBmaWxlcGFyc2UoJHRhcmdldERv
Y3VtZW50LT5maWxlTmFtZSk7CiAKLSAgICAjIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgcHJvY2Vz
c2luZyByZWN1cnNpdmUgc3VwcGxlbWVudGFsIGRlcGVuZGVuY2llcwotICAgICMgdG8gcHJvdmlk
ZSBzdXBwb3J0IGZvciBwYXJ0aWFsIGludGVyZmFjZSBtaXhpbnMuCi0KICAgICAjIEZJWE1FOiBD
dXJyZW50bHksIHdlIHJlcXVpcmUgYWxsIHRoZSBpbmNsdWRlcyBzdGF0ZW1lbnRzIHRvIGJlIGlu
IHRoZQogICAgICMgc2FtZSBmaWxlIGFzIHRoZSBpbnRlcmZhY2UgdGhleSBhcmUgYmVpbmcgbWl4
ZWQgaW50bywgYnV0IHRoYXQgcmVzdHJpY3Rpb24KICAgICAjIGlzIGFydGlmaWNpYWwgYW5kIHdl
IGNvdWxkIGFkZCBzdXBwb3J0IGZvciBpbmNsdWRlcyBzdGF0ZW1lbnRzIGVsc2V3aGVyZS4KQEAg
LTM2MCwxMCArMzkxLDYgQEAgc3ViIFByb2Nlc3NJbnRlcmZhY2VTdXBwbGVtZW50YWxEZXBlbmRl
bgogICAgICAgICB9CiAgICAgfQogCi0gICAgbXkgJGV4cG9zZWRBdHRyaWJ1dGUgPSAkdGFyZ2V0
SW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRXhwb3NlZCJ9IHx8ICJXaW5kb3ciOwot
ICAgICRleHBvc2VkQXR0cmlidXRlID0gc3Vic3RyKCRleHBvc2VkQXR0cmlidXRlLCAxLCAtMSkg
aWYgc3Vic3RyKCRleHBvc2VkQXR0cmlidXRlLCAwLCAxKSBlcSAiKCI7Ci0gICAgbXkgQHRhcmdl
dEdsb2JhbENvbnRleHRzID0gc3BsaXQoIiwiLCAkZXhwb3NlZEF0dHJpYnV0ZSk7Ci0KICAgICBm
b3JlYWNoIG15ICRpZGxGaWxlIChAeyRzdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMtPnskdGFyZ2V0
RmlsZU5hbWV9fSkgewogICAgICAgICBuZXh0IGlmIGZpbGVwYXJzZSgkaWRsRmlsZSkgZXEgJHRh
cmdldEZpbGVOYW1lOwogCkBAIC0zNzQsMTUgKzQwMSwyMSBAQCBzdWIgUHJvY2Vzc0ludGVyZmFj
ZVN1cHBsZW1lbnRhbERlcGVuZGVuCiAgICAgICAgIGZvcmVhY2ggbXkgJGludGVyZmFjZSAoQHsk
ZG9jdW1lbnQtPmludGVyZmFjZXN9KSB7CiAgICAgICAgICAgICBuZXh0IHVubGVzcyAkb2JqZWN0
LT5Jc1ZhbGlkU3VwcGxlbWVudGFsSW50ZXJmYWNlKCRpbnRlcmZhY2UsICR0YXJnZXRJbnRlcmZh
Y2UsIFwlaW5jbHVkZXNNYXApOwogCisgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+aXNNaXhp
biAmJiAhJGludGVyZmFjZS0+aXNQYXJ0aWFsKSB7CisgICAgICAgICAgICAgICAgIyBSZWN1cnNp
dmVseSBwcm9jZXNzIGFueSBzdXBwbGVtZW50YWwgZGVwZW5kZW5jaWVzIGZvciBlYWNoIHZhbGlk
IG1peGluLiBUaGlzCisgICAgICAgICAgICAgICAgIyBhbGxvd3MgcGFydGlhbCBwYXJ0aWFsIGlu
dGVyZmFjZSBtaXhpbnMgdG8gYmUgbWVyZ2VkIGludG8gdGhlIG1peGluLgorICAgICAgICAgICAg
ICAgICRvYmplY3QtPlByb2Nlc3NJbnRlcmZhY2VTdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMoJGlu
dGVyZmFjZSwgJGRvY3VtZW50KTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgIyBTdXBw
b3J0IGZvciBhdHRyaWJ1dGVzIGZyb20gc3VwcGxlbWVudGFsIGludGVyZmFjZXMuCiAgICAgICAg
ICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30pIHsK
LSAgICAgICAgICAgICAgICBuZXh0IHVubGVzcyBzaG91bGRQcm9wZXJ0eUJlRXhwb3NlZCgkYXR0
cmlidXRlLCBcQHRhcmdldEdsb2JhbENvbnRleHRzKTsKKyAgICAgICAgICAgICAgICBuZXh0IHVu
bGVzcyAkdGFyZ2V0SW50ZXJmYWNlLT5pc01peGluIHx8IHNob3VsZFByb3BlcnR5QmVFeHBvc2Vk
KCRhdHRyaWJ1dGUsICR0YXJnZXRJbnRlcmZhY2UpOwogCi0gICAgICAgICAgICAgICAgaWYgKCRp
bnRlcmZhY2UtPmlzUGFydGlhbCkgeworICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5p
c1BhcnRpYWwgJiYgISRpbnRlcmZhY2UtPmlzTWl4aW4pIHsKICAgICAgICAgICAgICAgICAgICAg
JGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifSA9ICRpbnRl
cmZhY2VOYW1lIGlmICEkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntSZWZsZWN0fTsK
ICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+aXNN
aXhpbikgeworICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5pc01peGluICYmICEkaW50
ZXJmYWNlLT5pc1BhcnRpYWwpIHsKICAgICAgICAgICAgICAgICAgICAgIyBBZGQgaW5jbHVkZXMg
c3RhdGVtZW50IHNwZWNpZmljIGV4dGVuZGVkIGF0dHJpYnV0ZXMgdG8gZWFjaCBhdHRyaWJ1dGUu
CiAgICAgICAgICAgICAgICAgICAgICRvYmplY3QtPk1lcmdlRXh0ZW5kZWRBdHRyaWJ1dGVzRnJv
bVN1cHBsZW1lbnRhbCgkaW5jbHVkZXNNYXB7JGludGVyZmFjZS0+dHlwZS0+bmFtZX0tPmV4dGVu
ZGVkQXR0cmlidXRlcywgJGF0dHJpYnV0ZSwgImF0dHJpYnV0ZSIpOwogICAgICAgICAgICAgICAg
IH0KQEAgLTM5NSwxMyArNDI4LDEzIEBAIHN1YiBQcm9jZXNzSW50ZXJmYWNlU3VwcGxlbWVudGFs
RGVwZW5kZW4KIAogICAgICAgICAgICAgIyBTdXBwb3J0IGZvciBvcGVyYXRpb25zIGZyb20gc3Vw
cGxlbWVudGFsIGludGVyZmFjZXMuCiAgICAgICAgICAgICBmb3JlYWNoIG15ICRvcGVyYXRpb24g
KEB7JGludGVyZmFjZS0+b3BlcmF0aW9uc30pIHsKLSAgICAgICAgICAgICAgICBuZXh0IHVubGVz
cyBzaG91bGRQcm9wZXJ0eUJlRXhwb3NlZCgkb3BlcmF0aW9uLCBcQHRhcmdldEdsb2JhbENvbnRl
eHRzKTsKKyAgICAgICAgICAgICAgICBuZXh0IHVubGVzcyAkdGFyZ2V0SW50ZXJmYWNlLT5pc01p
eGluIHx8IHNob3VsZFByb3BlcnR5QmVFeHBvc2VkKCRvcGVyYXRpb24sICR0YXJnZXRJbnRlcmZh
Y2UpOwogCi0gICAgICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmlzUGFydGlhbCkgeworICAg
ICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5pc1BhcnRpYWwgJiYgISRpbnRlcmZhY2UtPmlz
TWl4aW4pIHsKICAgICAgICAgICAgICAgICAgICAgJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkltcGxlbWVudGVkQnkifSA9ICRpbnRlcmZhY2VOYW1lOwogICAgICAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5pc01peGluKSB7CisgICAgICAg
ICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmlzTWl4aW4gJiYgISRpbnRlcmZhY2UtPmlzUGFydGlh
bCkgewogICAgICAgICAgICAgICAgICAgICAjIEFkZCBpbmNsdWRlcyBzdGF0ZW1lbnQgc3BlY2lm
aWMgZXh0ZW5kZWQgYXR0cmlidXRlcyB0byBlYWNoIG9wZXJhdGlvbi4KICAgICAgICAgICAgICAg
ICAgICAgJG9iamVjdC0+TWVyZ2VFeHRlbmRlZEF0dHJpYnV0ZXNGcm9tU3VwcGxlbWVudGFsKCRp
bmNsdWRlc01hcHskaW50ZXJmYWNlLT50eXBlLT5uYW1lfS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLCAk
b3BlcmF0aW9uLCAib3BlcmF0aW9uIik7CiAgICAgICAgICAgICAgICAgfQpAQCAtNDE0LDEzICs0
NDcsMTMgQEAgc3ViIFByb2Nlc3NJbnRlcmZhY2VTdXBwbGVtZW50YWxEZXBlbmRlbgogCiAgICAg
ICAgICAgICAjIFN1cHBvcnQgZm9yIGNvbnN0YW50cyBmcm9tIHN1cHBsZW1lbnRhbCBpbnRlcmZh
Y2VzLgogICAgICAgICAgICAgZm9yZWFjaCBteSAkY29uc3RhbnQgKEB7JGludGVyZmFjZS0+Y29u
c3RhbnRzfSkgewotICAgICAgICAgICAgICAgIG5leHQgdW5sZXNzIHNob3VsZFByb3BlcnR5QmVF
eHBvc2VkKCRjb25zdGFudCwgXEB0YXJnZXRHbG9iYWxDb250ZXh0cyk7CisgICAgICAgICAgICAg
ICAgbmV4dCB1bmxlc3MgJHRhcmdldEludGVyZmFjZS0+aXNNaXhpbiB8fCBzaG91bGRQcm9wZXJ0
eUJlRXhwb3NlZCgkY29uc3RhbnQsICR0YXJnZXRJbnRlcmZhY2UpOwogCi0gICAgICAgICAgICAg
ICAgaWYgKCRpbnRlcmZhY2UtPmlzUGFydGlhbCkgeworICAgICAgICAgICAgICAgIGlmICgkaW50
ZXJmYWNlLT5pc1BhcnRpYWwgJiYgISRpbnRlcmZhY2UtPmlzTWl4aW4pIHsKICAgICAgICAgICAg
ICAgICAgICAgJGNvbnN0YW50LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9
ID0gJGludGVyZmFjZU5hbWU7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAg
aWYgKCRpbnRlcmZhY2UtPmlzTWl4aW4pIHsKKyAgICAgICAgICAgICAgICBpZiAoJGludGVyZmFj
ZS0+aXNNaXhpbiAmJiAhJGludGVyZmFjZS0+aXNQYXJ0aWFsKSB7CiAgICAgICAgICAgICAgICAg
ICAgICMgQWRkIGluY2x1ZGVzIHN0YXRlbWVudCBzcGVjaWZpYyBleHRlbmRlZCBhdHRyaWJ1dGVz
IHRvIGVhY2ggb3BlcmF0aW9uLgogICAgICAgICAgICAgICAgICAgICAkb2JqZWN0LT5NZXJnZUV4
dGVuZGVkQXR0cmlidXRlc0Zyb21TdXBwbGVtZW50YWwoJGluY2x1ZGVzTWFweyRpbnRlcmZhY2Ut
PnR5cGUtPm5hbWV9LT5leHRlbmRlZEF0dHJpYnV0ZXMsICRjb25zdGFudCwgImNvbnN0YW50Iik7
CiAgICAgICAgICAgICAgICAgfQpAQCAtNDQwLDEwICs0NzMsNiBAQCBzdWIgUHJvY2Vzc0RpY3Rp
b25hcnlTdXBwbGVtZW50YWxEZXBlbmRlCiAKICAgICByZXR1cm4gdW5sZXNzICRzdXBwbGVtZW50
YWxEZXBlbmRlbmNpZXM7CiAKLSAgICBteSAkZXhwb3NlZEF0dHJpYnV0ZSA9ICR0YXJnZXREaWN0
aW9uYXJ5LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRXhwb3NlZCJ9IHx8ICJXaW5kb3ciOwotICAg
ICRleHBvc2VkQXR0cmlidXRlID0gc3Vic3RyKCRleHBvc2VkQXR0cmlidXRlLCAxLCAtMSkgaWYg
c3Vic3RyKCRleHBvc2VkQXR0cmlidXRlLCAwLCAxKSBlcSAiKCI7Ci0gICAgbXkgQHRhcmdldEds
b2JhbENvbnRleHRzID0gc3BsaXQoIiwiLCAkZXhwb3NlZEF0dHJpYnV0ZSk7Ci0KICAgICBteSAk
dGFyZ2V0RmlsZU5hbWUgPSBmaWxlcGFyc2UoJHRhcmdldERvY3VtZW50LT5maWxlTmFtZSk7CiAg
ICAgZm9yZWFjaCBteSAkaWRsRmlsZSAoQHskc3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzLT57JHRh
cmdldEZpbGVOYW1lfX0pIHsKICAgICAgICAgbmV4dCBpZiBmaWxlcGFyc2UoJGlkbEZpbGUpIGVx
ICR0YXJnZXRGaWxlTmFtZTsKQEAgLTQ1Nyw3ICs0ODYsNyBAQCBzdWIgUHJvY2Vzc0RpY3Rpb25h
cnlTdXBwbGVtZW50YWxEZXBlbmRlCiAKICAgICAgICAgICAgICMgU3VwcG9ydCBmb3IgbWVtYmVy
cyBvZiBwYXJ0aWFsIGRpY3Rpb25hcmllcy4KICAgICAgICAgICAgIGZvcmVhY2ggbXkgJG1lbWJl
ciAoQHskZGljdGlvbmFyeS0+bWVtYmVyc30pIHsKLSAgICAgICAgICAgICAgICBuZXh0IHVubGVz
cyBzaG91bGRQcm9wZXJ0eUJlRXhwb3NlZCgkbWVtYmVyLCBcQHRhcmdldEdsb2JhbENvbnRleHRz
KTsKKyAgICAgICAgICAgICAgICBuZXh0IHVubGVzcyBzaG91bGRQcm9wZXJ0eUJlRXhwb3NlZCgk
bWVtYmVyLCAkdGFyZ2V0RGljdGlvbmFyeSk7CiAKICAgICAgICAgICAgICAgICAkbWVtYmVyLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9ID0gJGRpY3Rpb25hcnlOYW1lOwog
CkBAIC00NzQsNyArNTAzLDExIEBAIHN1YiBQcm9jZXNzRGljdGlvbmFyeVN1cHBsZW1lbnRhbERl
cGVuZGUKICMgb24gd2hpY2ggZ2xvYmFsIGNvbnRleHRzIHRoZXkgc2hvdWxkIGJlIGV4cG9zZWQu
CiBzdWIgc2hvdWxkUHJvcGVydHlCZUV4cG9zZWQKIHsKLSAgICBteSAoJGNvbnRleHQsICR0YXJn
ZXRHbG9iYWxDb250ZXh0cykgPSBAXzsKKyAgICBteSAoJGNvbnRleHQsICR0YXJnZXQpID0gQF87
CisKKyAgICBteSAkZXhwb3NlZEF0dHJpYnV0ZSA9ICR0YXJnZXQtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJFeHBvc2VkIn0gfHwgIldpbmRvdyI7CisgICAgJGV4cG9zZWRBdHRyaWJ1dGUgPSBzdWJz
dHIoJGV4cG9zZWRBdHRyaWJ1dGUsIDEsIC0xKSBpZiBzdWJzdHIoJGV4cG9zZWRBdHRyaWJ1dGUs
IDAsIDEpIGVxICIoIjsKKyAgICBteSBAdGFyZ2V0R2xvYmFsQ29udGV4dHMgPSBzcGxpdCgiLCIs
ICRleHBvc2VkQXR0cmlidXRlKTsKIAogICAgIG15ICRleHBvc2VkID0gJGNvbnRleHQtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0V4cG9zZWR9OwogCkBAIC00ODMsMjIgKzUxNiwxMSBAQCBzdWIgc2hv
dWxkUHJvcGVydHlCZUV4cG9zZWQKICAgICAkZXhwb3NlZCA9IHN1YnN0cigkZXhwb3NlZCwgMSwg
LTEpIGlmIHN1YnN0cigkZXhwb3NlZCwgMCwgMSkgZXEgIigiOwogICAgIG15IEBzb3VyY2VHbG9i
YWxDb250ZXh0cyA9IHNwbGl0KCIsIiwgJGV4cG9zZWQpOwogCi0gICAgZm9yIG15ICR0YXJnZXRH
bG9iYWxDb250ZXh0IChAJHRhcmdldEdsb2JhbENvbnRleHRzKSB7CisgICAgZm9yZWFjaCBteSAk
dGFyZ2V0R2xvYmFsQ29udGV4dCAoQHRhcmdldEdsb2JhbENvbnRleHRzKSB7CiAgICAgICAgIHJl
dHVybiAxIGlmIGdyZXAoL14kdGFyZ2V0R2xvYmFsQ29udGV4dCQvLCBAc291cmNlR2xvYmFsQ29u
dGV4dHMpOwogICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQotc3ViIEZpbGVOYW1lUHJlZml4Ci17
Ci0gICAgbXkgJG9iamVjdCA9IHNoaWZ0OwogCi0gICAgbXkgJGlmYWNlTmFtZSA9ICJDb2RlR2Vu
ZXJhdG9yIiAuICR1c2VHZW5lcmF0b3I7Ci0gICAgcmVxdWlyZSAkaWZhY2VOYW1lIC4gIi5wbSI7
Ci0KLSAgICAjIER5bmFtaWNhbGx5IGxvYWQgZXh0ZXJuYWwgY29kZSBnZW5lcmF0aW9uIHBlcmwg
bW9kdWxlCi0gICAgJGNvZGVHZW5lcmF0b3IgPSAkaWZhY2VOYW1lLT5uZXcoJG9iamVjdCwgJHdy
aXRlRGVwZW5kZW5jaWVzLCAkdmVyYm9zZSk7Ci0gICAgcmV0dXJuICRjb2RlR2VuZXJhdG9yLT5G
aWxlTmFtZVByZWZpeCgpOworICAgIHJldHVybiAwOwogfQogCiBzdWIgVXBkYXRlRmlsZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJp
bmRpbmdzLnBsCShyZXZpc2lvbiAyNjY3NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw2
IEBAIG15ICRwcmVwcm9jZXNzb3I7CiBteSAkd3JpdGVEZXBlbmRlbmNpZXM7CiBteSAkdmVyYm9z
ZTsKIG15ICRzdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZTsKLW15ICRhZGRpdGlvbmFsSWRsRmls
ZXM7CiBteSAkaWRsQXR0cmlidXRlc0ZpbGU7CiAKIEdldE9wdGlvbnMoJ2luY2x1ZGU9c0AnID0+
IFxAaWRsRGlyZWN0b3JpZXMsCkBAIC02OSw3ICs2OCw2IEBAIEdldE9wdGlvbnMoJ2luY2x1ZGU9
c0AnID0+IFxAaWRsRGlyZWN0b3IKICAgICAgICAgICAgJ3ZlcmJvc2UnID0+IFwkdmVyYm9zZSwK
ICAgICAgICAgICAgJ3dyaXRlLWRlcGVuZGVuY2llcycgPT4gXCR3cml0ZURlcGVuZGVuY2llcywK
ICAgICAgICAgICAgJ3N1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlPXMnID0+IFwkc3VwcGxlbWVu
dGFsRGVwZW5kZW5jeUZpbGUsCi0gICAgICAgICAgICdhZGRpdGlvbmFsSWRsRmlsZXM9cycgPT4g
XCRhZGRpdGlvbmFsSWRsRmlsZXMsCiAgICAgICAgICAgICdpZGxBdHRyaWJ1dGVzRmlsZT1zJyA9
PiBcJGlkbEF0dHJpYnV0ZXNGaWxlKTsKIAogZGllKCdNdXN0IHNwZWNpZnkgaW5wdXQgZmlsZS4n
KSB1bmxlc3MgQEFSR1Y7CkBAIC0xMDUsMzMgKzEwMywxMiBAQCBzdWIgZ2VuZXJhdGVCaW5kaW5n
cwogICAgICAgICAjCiAgICAgICAgICMgVGhlIGFib3ZlIGluZGljYXRlcyB0aGF0IERPTVdpbmRv
dy5pZGwgaXMgc3VwcGxlbWVudGVkIGJ5IFAuaWRsLCBRLmlkbCBhbmQgUi5pZGwsCiAgICAgICAg
ICMgRG9jdW1lbnQuaWRsIGlzIHN1cHBsZW1lbnRlZCBieSBTLmlkbCwgYW5kIEV2ZW50LmlkbCBp
cyBzdXBwbGVtZW50ZWQgYnkgbm8gSURMcy4KLSAgICAgICAgIyBUaGUgSURMIHRoYXQgc3VwcGxl
bWVudHMgYW5vdGhlciBJREwgKGUuZy4gUC5pZGwpIG5ldmVyIGFwcGVhcnMgaW4gdGhlIGRlcGVu
ZGVuY3kgZmlsZS4KICAgICAgICAgb3BlbiBGSCwgIjwgJHN1cHBsZW1lbnRhbERlcGVuZGVuY3lG
aWxlIiBvciBkaWUgIkNhbm5vdCBvcGVuICRzdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZVxuIjsK
ICAgICAgICAgd2hpbGUgKG15ICRsaW5lID0gPEZIPikgewogICAgICAgICAgICAgbXkgKCRpZGxG
aWxlLCBAZm9sbG93aW5nSWRsRmlsZXMpID0gc3BsaXQoL1xzKy8sICRsaW5lKTsKICAgICAgICAg
ICAgICRzdXBwbGVtZW50YWxEZXBlbmRlbmNpZXN7ZmlsZXBhcnNlKCRpZGxGaWxlKX0gPSBbc29y
dCBAZm9sbG93aW5nSWRsRmlsZXNdIGlmICRpZGxGaWxlOwogICAgICAgICB9CiAgICAgICAgIGNs
b3NlIEZIOwotCi0gICAgICAgIGlmIChleGlzdHMgJHN1cHBsZW1lbnRhbERlcGVuZGVuY2llc3tm
aWxlcGFyc2UoJHRhcmdldElkbEZpbGUpfSkgewotICAgICAgICAgICAgJGlkbEZvdW5kID0gMTsK
LSAgICAgICAgfQotCi0gICAgICAgICMgJGFkZGl0aW9uYWxJZGxGaWxlcyBpcyBsaXN0IG9mIElE
TCBmaWxlcyB3aGljaCBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluCi0gICAgICAgICMgRGVyaXZl
ZFNvdXJjZXMqLmNwcCAoaS5lLiB0aGV5IGFyZSBub3QgZGVzY3JpYmVkIGluIHRoZSBzdXBwbGVt
ZW50YWwKLSAgICAgICAgIyBkZXBlbmRlbmN5IGZpbGUpIGJ1dCBzaG91bGQgZ2VuZXJhdGUgLmgg
YW5kIC5jcHAgZmlsZXMuCi0gICAgICAgIGlmICghJGlkbEZvdW5kIGFuZCAkYWRkaXRpb25hbElk
bEZpbGVzKSB7Ci0gICAgICAgICAgICBteSBAaWRsRmlsZXMgPSBzaGVsbHdvcmRzKCRhZGRpdGlv
bmFsSWRsRmlsZXMpOwotICAgICAgICAgICAgJGlkbEZvdW5kID0gZ3JlcCB7ICRfIGFuZCBmaWxl
cGFyc2UoJF8pIGVxIGZpbGVwYXJzZSgkdGFyZ2V0SWRsRmlsZSkgfSBAaWRsRmlsZXM7Ci0gICAg
ICAgIH0KLQotICAgICAgICBpZiAoISRpZGxGb3VuZCkgewotICAgICAgICAgICAgbXkgJGNvZGVH
ZW4gPSBDb2RlR2VuZXJhdG9yLT5uZXcoXEBpZGxEaXJlY3RvcmllcywgJGdlbmVyYXRvciwgJG91
dHB1dERpcmVjdG9yeSwgJG91dHB1dEhlYWRlcnNEaXJlY3RvcnksICRwcmVwcm9jZXNzb3IsICR3
cml0ZURlcGVuZGVuY2llcywgJHZlcmJvc2UpOwotCi0gICAgICAgICAgICAjIFdlIGdlbmVyYXRl
IGVtcHR5IC5oIGFuZCAuY3BwIGZpbGVzIGp1c3QgdG8gdGVsbCBidWlsZCBzY3JpcHRzIHRoYXQg
LmggYW5kIC5jcHAgZmlsZXMgYXJlIGNyZWF0ZWQuCi0gICAgICAgICAgICBnZW5lcmF0ZUVtcHR5
SGVhZGVyQW5kQ3BwKCRjb2RlR2VuLT5GaWxlTmFtZVByZWZpeCgpLCAkdGFyZ2V0SW50ZXJmYWNl
TmFtZSwgJG91dHB1dEhlYWRlcnNEaXJlY3RvcnksICRvdXRwdXREaXJlY3RvcnkpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9CiAgICAgfQogCiAgICAgbXkgJGlucHV0OwpAQCAtMTU0
LDI1ICsxMzEsMyBAQCBzdWIgZ2VuZXJhdGVCaW5kaW5ncwogICAgIG15ICRjb2RlR2VuID0gQ29k
ZUdlbmVyYXRvci0+bmV3KFxAaWRsRGlyZWN0b3JpZXMsICRnZW5lcmF0b3IsICRvdXRwdXREaXJl
Y3RvcnksICRvdXRwdXRIZWFkZXJzRGlyZWN0b3J5LCAkcHJlcHJvY2Vzc29yLCAkd3JpdGVEZXBl
bmRlbmNpZXMsICR2ZXJib3NlLCAkdGFyZ2V0SWRsRmlsZSwgJGlkbEF0dHJpYnV0ZXMsIFwlc3Vw
cGxlbWVudGFsRGVwZW5kZW5jaWVzKTsKICAgICAkY29kZUdlbi0+UHJvY2Vzc0RvY3VtZW50KCR0
YXJnZXREb2N1bWVudCwgJGRlZmluZXMpOwogfQotCi1zdWIgZ2VuZXJhdGVFbXB0eUhlYWRlckFu
ZENwcAotewotICAgIG15ICgkcHJlZml4LCAkdGFyZ2V0SW50ZXJmYWNlTmFtZSwgJG91dHB1dEhl
YWRlcnNEaXJlY3RvcnksICRvdXRwdXREaXJlY3RvcnkpID0gQF87Ci0KLSAgICBteSAkaGVhZGVy
TmFtZSA9ICIke3ByZWZpeH0ke3RhcmdldEludGVyZmFjZU5hbWV9LmgiOwotICAgIG15ICRjcHBO
YW1lID0gIiR7cHJlZml4fSR7dGFyZ2V0SW50ZXJmYWNlTmFtZX0uY3BwIjsKLSAgICBteSAkY29u
dGVudHMgPSAiLyoKLSAgICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGp1c3QgdG8gdGVsbCBidWls
ZCBzY3JpcHRzIHRoYXQgJGhlYWRlck5hbWUgYW5kCi0gICAgJGNwcE5hbWUgYXJlIGNyZWF0ZWQg
Zm9yICR7dGFyZ2V0SW50ZXJmYWNlTmFtZX0uaWRsLCBhbmQgdGh1cwotICAgIHByZXZlbnQgdGhl
IGJ1aWxkIHNjcmlwdHMgZnJvbSB0cnlpbmcgdG8gZ2VuZXJhdGUgJGhlYWRlck5hbWUgYW5kCi0g
ICAgJGNwcE5hbWUgYXQgZXZlcnkgYnVpbGQuIFRoaXMgZmlsZSBtdXN0IG5vdCBiZSB0cmllZCB0
byBjb21waWxlLgotKi8KLSI7Ci0gICAgb3BlbiBGSCwgIj4gJHtvdXRwdXRIZWFkZXJzRGlyZWN0
b3J5fS8ke2hlYWRlck5hbWV9IiBvciBkaWUgIkNhbm5vdCBvcGVuICRoZWFkZXJOYW1lXG4iOwot
ICAgIHByaW50IEZIICRjb250ZW50czsKLSAgICBjbG9zZSBGSDsKLQotICAgIG9wZW4gRkgsICI+
ICR7b3V0cHV0RGlyZWN0b3J5fS8ke2NwcE5hbWV9IiBvciBkaWUgIkNhbm5vdCBvcGVuICRjcHBO
YW1lXG4iOwotICAgIHByaW50IEZIICRjb250ZW50czsKLSAgICBjbG9zZSBGSDsKLX0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxz
LnBsCShyZXZpc2lvbiAyNjY3NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3ByZXByb2Nlc3MtaWRscy5wbAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKICMhL3Vz
ci9iaW4vZW52IHBlcmwKICMKICMgQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICMKICMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjU0LDYgKzI1NSwxMiBAQCBHZW5l
cmF0ZVBhcnRpYWxJbnRlcmZhY2UoIldvcmtsZXRHbG9iYWxTCiBHZW5lcmF0ZVBhcnRpYWxJbnRl
cmZhY2UoIlBhaW50V29ya2xldEdsb2JhbFNjb3BlIiwgJHBhaW50V29ya2xldEdsb2JhbFNjb3Bl
Q29uc3RydWN0b3JzQ29kZSwgJHBhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmls
ZSk7CiBHZW5lcmF0ZVBhcnRpYWxJbnRlcmZhY2UoJHRlc3RHbG9iYWxDb250ZXh0TmFtZSwgJHRl
c3RHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0NvZGUsICR0ZXN0R2xvYmFsU2NvcGVDb25zdHJ1Y3Rv
cnNGaWxlKSBpZiBkZWZpbmVkKCR0ZXN0R2xvYmFsQ29udGV4dE5hbWUpOwogCitpZiAoJGlzb1N1
YnNwYWNlc0hlYWRlckZpbGUpIHsKKyAgICAkaXNvU3Vic3BhY2VzSGVhZGVyQ29kZSAuPSAifTtc
biI7CisgICAgJGlzb1N1YnNwYWNlc0hlYWRlckNvZGUgLj0gIn0gLy8gbmFtZXNwYWNlIFdlYkNv
cmVcbiI7CisgICAgV3JpdGVGaWxlSWZDaGFuZ2VkKCRpc29TdWJzcGFjZXNIZWFkZXJGaWxlLCAk
aXNvU3Vic3BhY2VzSGVhZGVyQ29kZSk7Cit9CisKICMgUmVzb2x2ZXMgcGFydGlhbCBpbnRlcmZh
Y2VzIGFuZCBpbmNsdWRlIGRlcGVuZGVuY2llcy4KIGZvcmVhY2ggbXkgJGlkbEZpbGVQYXRoIChz
b3J0IGtleXMgJXN1cHBsZW1lbnRhbERlcGVuZGVuY2llcykgewogICAgIG15ICRiYXNlRmlsZXMg
PSAkc3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzeyRpZGxGaWxlUGF0aH07CkBAIC0yNjEsMTMgKzI2
OCw2IEBAIGZvcmVhY2ggbXkgJGlkbEZpbGVQYXRoIChzb3J0IGtleXMgJXN1cHAKICAgICAgICAg
bXkgJHRhcmdldElkbEZpbGVQYXRoID0gJGludGVyZmFjZU5hbWVUb0lkbEZpbGVQYXRoeyRiYXNl
RmlsZX0gb3IgZGllICIke2Jhc2VGaWxlfS5pZGwgbm90IGZvdW5kLCBidXQgaXQgaXMgc3VwcGxl
bWVudGVkIGJ5ICRpZGxGaWxlUGF0aCI7CiAgICAgICAgIHB1c2goQHskc3VwcGxlbWVudGFsc3sk
dGFyZ2V0SWRsRmlsZVBhdGh9fSwgJGlkbEZpbGVQYXRoKTsKICAgICB9Ci0gICAgZGVsZXRlICRz
dXBwbGVtZW50YWxzeyRpZGxGaWxlUGF0aH07Ci19Ci0KLWlmICgkaXNvU3Vic3BhY2VzSGVhZGVy
RmlsZSkgewotICAgICRpc29TdWJzcGFjZXNIZWFkZXJDb2RlIC49ICJ9O1xuIjsKLSAgICAkaXNv
U3Vic3BhY2VzSGVhZGVyQ29kZSAuPSAifSAvLyBuYW1lc3BhY2UgV2ViQ29yZVxuIjsKLSAgICBX
cml0ZUZpbGVJZkNoYW5nZWQoJGlzb1N1YnNwYWNlc0hlYWRlckZpbGUsICRpc29TdWJzcGFjZXNI
ZWFkZXJDb2RlKTsKIH0KIAogIyBPdXRwdXRzIHRoZSBkZXBlbmRlbmN5LgpAQCAtMjgwLDcgKzI4
MCw2IEBAIGlmICgkaXNvU3Vic3BhY2VzSGVhZGVyRmlsZSkgewogIwogIyBUaGUgYWJvdmUgaW5k
aWNhdGVzIHRoYXQgRE9NV2luZG93LmlkbCBpcyBzdXBwbGVtZW50ZWQgYnkgUC5pZGwsIFEuaWRs
IGFuZCBSLmlkbCwKICMgRG9jdW1lbnQuaWRsIGlzIHN1cHBsZW1lbnRlZCBieSBTLmlkbCwgYW5k
IEV2ZW50LmlkbCBpcyBzdXBwbGVtZW50ZWQgYnkgbm8gSURMcy4KLSMgVGhlIElETCB0aGF0IHN1
cHBsZW1lbnRzIGFub3RoZXIgSURMIChlLmcuIFAuaWRsKSBuZXZlciBhcHBlYXJzIGluIHRoZSBk
ZXBlbmRlbmN5IGZpbGUuCiBteSAkZGVwZW5kZW5jaWVzID0gIiI7CiBmb3JlYWNoIG15ICRpZGxG
aWxlUGF0aCAoc29ydCBrZXlzICVzdXBwbGVtZW50YWxzKSB7CiAgICAgJGRlcGVuZGVuY2llcyAu
PSAiJGlkbEZpbGVQYXRoIEB7JHN1cHBsZW1lbnRhbHN7JGlkbEZpbGVQYXRofX1cbiI7CkBAIC00
NjAsOCArNDU5LDEzIEBAIHN1YiBnZXRQYXJ0aWFsTmFtZXNGcm9tSURMCiAgICAgbXkgJGZpbGVD
b250ZW50cyA9ICRpZGxGaWxlLT5maWxlQ29udGVudHM7CiAKICAgICBteSBAcGFydGlhbE5hbWVz
ID0gKCk7CisgICAgd2hpbGUgKCRmaWxlQ29udGVudHMgPX4gL3BhcnRpYWxccytpbnRlcmZhY2Vc
cyttaXhpblxzKyhcdyspL21nKSB7CisgICAgICAgIHB1c2goQHBhcnRpYWxOYW1lcywgJDEpOwor
ICAgIH0KKworICAgICRmaWxlQ29udGVudHMgPSAkaWRsRmlsZS0+ZmlsZUNvbnRlbnRzOwogICAg
IHdoaWxlICgkZmlsZUNvbnRlbnRzID1+IC9wYXJ0aWFsXHMrKGludGVyZmFjZXxkaWN0aW9uYXJ5
fG5hbWVzcGFjZSlccysoXHcrKS9tZykgewotICAgICAgICBwdXNoKEBwYXJ0aWFsTmFtZXMsICQy
KTsKKyAgICAgICAgcHVzaChAcGFydGlhbE5hbWVzLCAkMikgaWYgJDIgbmUgIm1peGluIjsKICAg
ICB9CiAgICAgCiAgICAgaWYgKCR2YWxpZGF0ZUFnYWluc3RQYXJzZXIpIHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMu
ZGVwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9T
dXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwCShyZXZpc2lvbiAyNjY3NDcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzLmRl
cAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTAgKzQ1LDEwIEBAIFdlYkRPTVRlc3RDYWxsYmFja0lu
dGVyZmFjZS5oOiAKIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmg6IAogRE9N
VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmg6IAogV2ViRE9NVGVzdENsYXNzV2l0
aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmg6IAotSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5oOiBU
ZXN0SW5jbHVkZXMuaWRsCi1ET01UZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5oOiBUZXN0SW5jbHVk
ZXMuaWRsCi1XZWJET01UZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5oOiBUZXN0SW5jbHVkZXMuaWRs
Ci1UZXN0SW5jbHVkZXMuaWRsOgorSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5oOiBUZXN0TWl4
aW5JbnRlcmZhY2UuaWRsCitET01UZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5oOiBUZXN0TWl4aW5J
bnRlcmZhY2UuaWRsCitXZWJET01UZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5oOiBUZXN0TWl4aW5J
bnRlcmZhY2UuaWRsCitUZXN0TWl4aW5JbnRlcmZhY2UuaWRsOgogSlNUZXN0RE9NSklULmg6IAog
RE9NVGVzdERPTUpJVC5oOiAKIFdlYkRPTVRlc3RET01KSVQuaDogCkBAIC0xMDAsMTAgKzEwMCwx
MCBAQCBUZXN0U3VwcGxlbWVudGFsLmlkbDoKIEpTVGVzdEluaGVyaXRlZERpY3Rpb25hcnkyLmg6
IAogRE9NVGVzdEluaGVyaXRlZERpY3Rpb25hcnkyLmg6IAogV2ViRE9NVGVzdEluaGVyaXRlZERp
Y3Rpb25hcnkyLmg6IAotSlNUZXN0SW50ZXJmYWNlLmg6IFRlc3RJbmNsdWRlcy5pZGwgVGVzdFN1
cHBsZW1lbnRhbC5pZGwKLURPTVRlc3RJbnRlcmZhY2UuaDogVGVzdEluY2x1ZGVzLmlkbCBUZXN0
U3VwcGxlbWVudGFsLmlkbAotV2ViRE9NVGVzdEludGVyZmFjZS5oOiBUZXN0SW5jbHVkZXMuaWRs
IFRlc3RTdXBwbGVtZW50YWwuaWRsCi1UZXN0SW5jbHVkZXMuaWRsOgorSlNUZXN0SW50ZXJmYWNl
Lmg6IFRlc3RNaXhpbkludGVyZmFjZS5pZGwgVGVzdFN1cHBsZW1lbnRhbC5pZGwKK0RPTVRlc3RJ
bnRlcmZhY2UuaDogVGVzdE1peGluSW50ZXJmYWNlLmlkbCBUZXN0U3VwcGxlbWVudGFsLmlkbAor
V2ViRE9NVGVzdEludGVyZmFjZS5oOiBUZXN0TWl4aW5JbnRlcmZhY2UuaWRsIFRlc3RTdXBwbGVt
ZW50YWwuaWRsCitUZXN0TWl4aW5JbnRlcmZhY2UuaWRsOgogVGVzdFN1cHBsZW1lbnRhbC5pZGw6
CiBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5oOiAKIERPTVRlc3RJbnRlcmZhY2VM
ZWFkaW5nVW5kZXJzY29yZS5oOiAKQEAgLTEyNiw2ICsxMjYsMTAgQEAgV2ViRE9NVGVzdExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMuaDogCiBKU1Rlc3RNYXBMaWtlLmg6IAogRE9NVGVzdE1hcExpa2Uu
aDogCiBXZWJET01UZXN0TWFwTGlrZS5oOiAKK0pTVGVzdE1peGluSW50ZXJmYWNlLmg6IFRlc3RQ
YXJ0aWFsTWl4aW5JbnRlcmZhY2UuaWRsCitET01UZXN0TWl4aW5JbnRlcmZhY2UuaDogVGVzdFBh
cnRpYWxNaXhpbkludGVyZmFjZS5pZGwKK1dlYkRPTVRlc3RNaXhpbkludGVyZmFjZS5oOiBUZXN0
UGFydGlhbE1peGluSW50ZXJmYWNlLmlkbAorVGVzdFBhcnRpYWxNaXhpbkludGVyZmFjZS5pZGw6
CiBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuaDogCiBET01UZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmg6IAogV2ViRE9NVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlck5vSWRlbnRpZmllci5oOiAKQEAgLTE4Niw2ICsxOTAsOSBAQCBXZWJET01UZXN0
Tm9kZS5oOiAKIEpTVGVzdE9iai5oOiAKIERPTVRlc3RPYmouaDogCiBXZWJET01UZXN0T2JqLmg6
IAorSlNUZXN0T3BlcmF0aW9uQmFzZS5oOiAKK0RPTVRlc3RPcGVyYXRpb25CYXNlLmg6IAorV2Vi
RE9NVGVzdE9wZXJhdGlvbkJhc2UuaDogCiBKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbC5oOiBU
ZXN0T3BlcmF0aW9uQmFzZS5pZGwKIERPTVRlc3RPcGVyYXRpb25Db25kaXRpb25hbC5oOiBUZXN0
T3BlcmF0aW9uQmFzZS5pZGwKIFdlYkRPTVRlc3RPcGVyYXRpb25Db25kaXRpb25hbC5oOiBUZXN0
T3BlcmF0aW9uQmFzZS5pZGwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmlkbAko
cmV2aXNpb24gMjY2NzQ3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzMsNCArMzMs
NCBAQCBpbnRlcmZhY2UgVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMgewogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBkb3VibGUgdGVzdEF0dHI7CiB9OwogCi1bQ29uZGl0aW9uYWw9Q29uZGl0aW9uMTIs
IEVuYWJsZWRCeVNldHRpbmc9VGVzdFNldHRpbmcyXSBUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyBp
bmNsdWRlcyBUZXN0SW5jbHVkZXM7CitbQ29uZGl0aW9uYWw9Q29uZGl0aW9uMTIsIEVuYWJsZWRC
eVNldHRpbmc9VGVzdFNldHRpbmcyXSBUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyBpbmNsdWRlcyBU
ZXN0TWl4aW5JbnRlcmZhY2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVGVzdEluY2x1ZGVzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEluY2x1ZGVzLmlkbAkocmV2aXNpb24gMjY2NzQ3KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RJbmNsdWRlcy5pZGwJKG5v
bmV4aXN0ZW50KQpAQCAtMSw1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ft
c3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zdHJBcmcsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9y
IHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVzdHJBcmcsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQot
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0vLyBUaGlzIElETCBmaWxlIGlz
IGZvciB0ZXN0aW5nIHRoZSBiaW5kaW5ncyBjb2RlIGdlbmVyYXRvciBhbmQgZm9yIHRyYWNraW5n
Ci0vLyBjaGFuZ2VzIGluIGl0cyBvdXRwdXQuCi1bCi0gICAgQ29uZGl0aW9uYWw9Q29uZGl0aW9u
MjJ8Q29uZGl0aW9uMjMKLV0gaW50ZXJmYWNlIG1peGluIFRlc3RJbmNsdWRlcyB7Ci0gICAgcmVh
ZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBpbmNsdWRlc1N0cjE7Ci0gICAgYXR0cmlidXRlIERP
TVN0cmluZyBpbmNsdWRlc1N0cjI7Ci0gICAgW0N1c3RvbUdldHRlciwgQ3VzdG9tU2V0dGVyXSBh
dHRyaWJ1dGUgRE9NU3RyaW5nIGluY2x1ZGVzU3RyMzsKLSAgICBhdHRyaWJ1dGUgTm9kZSBpbmNs
dWRlc05vZGU7Ci0KLSAgICB1bmRlZmluZWQgaW5jbHVkZXNNZXRob2QxKCk7Ci0gICAgW0NhbGxX
aXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9uXSBUZXN0T2JqIGlu
Y2x1ZGVzTWV0aG9kMihET01TdHJpbmcgc3RyQXJnLCBUZXN0T2JqIG9iakFyZyk7Ci0gICAgW0N1
c3RvbV0gdW5kZWZpbmVkIGluY2x1ZGVzTWV0aG9kMygpOwotICAgIFtDb25kaXRpb25hbD1Db25k
aXRpb24xMV0gdW5kZWZpbmVkIGluY2x1ZGVzTWV0aG9kQ29uZGl0aW9uYWwoKTsKLSAgICBbRW5h
YmxlZEJ5U2V0dGluZz1UZXN0U2V0dGluZ10gdW5kZWZpbmVkIGluY2x1ZGVzTWV0aG9kU2V0dGlu
Z3NDb25kaXRpb25hbCgpOwotCi0gICAgY29uc3QgdW5zaWduZWQgc2hvcnQgSU5DTFVERVNfQ09O
U1RBTlQxID0gMTsKLSAgICBbUmVmbGVjdD1DT05TVF9JTVBMXSBjb25zdCB1bnNpZ25lZCBzaG9y
dCBJTkNMVURFU19DT05TVEFOVDIgPSAyOwotCi0gICAgW1Jlc3VsdEZpZWxkPW5vZGVzXSBzZXF1
ZW5jZTxOb2RlPiB0YWtlTm9kZXMoKTsKLX07Ci0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9UZXN0SW50ZXJmYWNlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEludGVyZmFjZS5pZGwJKHJldmlzaW9u
IDI2Njc0NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0SW50
ZXJmYWNlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDAsNCArNDAsNCBAQAogICAgIGl0ZXJhYmxl
PFRlc3ROb2RlLCBUZXN0T2JqPjsKIH07CiAKLVRlc3RJbnRlcmZhY2UgaW5jbHVkZXMgVGVzdElu
Y2x1ZGVzOworVGVzdEludGVyZmFjZSBpbmNsdWRlcyBUZXN0TWl4aW5JbnRlcmZhY2U7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE1peGluSW50ZXJmYWNl
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VGVzdE1peGluSW50ZXJmYWNlLmlkbAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE1peGluSW50ZXJmYWNlLmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVj
dHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zdHJBcmcsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICog
My4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1l
cyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVzdHJBcmcsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBUaGlzIElETCBmaWxlIGlzIGZvciB0ZXN0
aW5nIHRoZSBiaW5kaW5ncyBjb2RlIGdlbmVyYXRvciBhbmQgZm9yIHRyYWNraW5nCisvLyBjaGFu
Z2VzIGluIGl0cyBvdXRwdXQuCitbCisgICAgQ29uZGl0aW9uYWw9Q29uZGl0aW9uMjJ8Q29uZGl0
aW9uMjMKK10gaW50ZXJmYWNlIG1peGluIFRlc3RNaXhpbkludGVyZmFjZSB7CisgICAgcmVhZG9u
bHkgYXR0cmlidXRlIERPTVN0cmluZyBtaXhpblJlYWRPbmx5QXR0cmlidXRlOworICAgIGF0dHJp
YnV0ZSBET01TdHJpbmcgbWl4aW5BdHRyaWJ1dGU7CisgICAgW0N1c3RvbUdldHRlciwgQ3VzdG9t
U2V0dGVyXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG1peGluQ3VzdG9tQXR0cmlidXRlOworICAgIGF0
dHJpYnV0ZSBOb2RlIG1peGluTm9kZUF0dHJpYnV0ZTsKKworICAgIHVuZGVmaW5lZCBtaXhpbk9w
ZXJhdGlvbigpOworICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJv
d0V4Y2VwdGlvbl0gVGVzdE9iaiBtaXhpbkNvbXBsZXhPcGVyYXRpb24oRE9NU3RyaW5nIHN0ckFy
ZywgVGVzdE9iaiBvYmpBcmcpOworICAgIFtDdXN0b21dIHVuZGVmaW5lZCBtaXhpbkN1c3RvbU9w
ZXJhdGlvbigpOworICAgIFtDb25kaXRpb25hbD1Db25kaXRpb24xMV0gdW5kZWZpbmVkIG1peGlu
Q29uZGl0aW9uYWxPcGVyYXRpb24oKTsKKyAgICBbRW5hYmxlZEJ5U2V0dGluZz1UZXN0U2V0dGlu
Z10gdW5kZWZpbmVkIG1peGluU2V0dGluZ3NDb25kaXRpb25hbE9wZXJhdGlvbigpOworICAgIFtS
ZXN1bHRGaWVsZD1ub2Rlc10gc2VxdWVuY2U8Tm9kZT4gbWl4aW5SZXN1bHRGaWVsZE9wZXJhdGlv
bigpOworCisgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTUlYSU5fQ09OU1RBTlQgPSAxOworICAg
IFtSZWZsZWN0PUNPTlNUX0lNUExdIGNvbnN0IHVuc2lnbmVkIHNob3J0IE1JWElOX1JFRkxFQ1RF
RF9DT05TVEFOVCA9IDI7Cit9OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3RPYmouaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAkocmV2aXNpb24gMjY2NzQ3KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC00NjMsOCArNDYzLDggQEAgZW51bSBUZXN0Q29uZmlkZW5jZSB7ICJoaWdoIiwgImtpbmRhLWxv
dwogfTsKIAogLy8gVGhlIGZvbGxvd2luZyBjb21tZW50cyBzaG91bGQgbm90IGdlbmVyYXRlIGFu
eSBjb2RlLgotLy8gVGVzdE9iaiBpbmNsdWRlcyBUZXN0SW5jbHVkZXM7Ci0vKiBUZXN0T2JqIGlu
Y2x1ZGVzIFRlc3RJbmNsdWRlczsgKi8KKy8vIFRlc3RPYmogaW5jbHVkZXMgVGVzdE1peGluSW50
ZXJmYWNlOworLyogVGVzdE9iaiBpbmNsdWRlcyBUZXN0TWl4aW5JbnRlcmZhY2U7ICovCiAKIHR5
cGVkZWYgYW55IEFueVR5cGVkZWY7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9UZXN0UGFydGlhbE1peGluSW50ZXJmYWNlLmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFBhcnRpYWxNaXhpbkludGVy
ZmFjZS5pZGwJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3RQYXJ0aWFsTWl4aW5JbnRlcmZhY2UuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBUaGlzIElETCBmaWxlIGlzIGZvciB0ZXN0aW5n
IHRoZSBiaW5kaW5ncyBjb2RlIGdlbmVyYXRvciBhbmQgZm9yIHRyYWNraW5nCisvLyBjaGFuZ2Vz
IGluIGl0cyBvdXRwdXQuCitbCisgICAgQ29uZGl0aW9uYWw9Q29uZGl0aW9uMzMKK10gcGFydGlh
bCBpbnRlcmZhY2UgbWl4aW4gVGVzdE1peGluSW50ZXJmYWNlIHsKKyAgICByZWFkb25seSBhdHRy
aWJ1dGUgZG91YmxlIHBhcnRpYWxNaXhpbkF0dHJpYnV0ZUZyb21QYXJ0aWFsOworICAgIHVuZGVm
aW5lZCBwYXJ0aWFsTWl4aW5PcGVyYXRpb25Gcm9tUGFydGlhbCgpOworICAgIGNvbnN0IHVuc2ln
bmVkIHNob3J0IFBBUlRJQUxfTUlYSU5fQ09OU1RBTlRfRlJPTV9QQVJUSUFMID0gNTsKK307Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNCaW5kaW5nVGVz
dEdsb2JhbENvbnN0cnVjdG9ycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTQmluZGluZ1Rlc3RHbG9iYWxDb25zdHJ1Y3RvcnMuY3Bw
CShyZXZpc2lvbiAyNjY3NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNCaW5kaW5nVGVzdEdsb2JhbENvbnN0cnVjdG9ycy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNiArMSw1IEBACiAvKgotICAgIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQganVzdCB0byB0
ZWxsIGJ1aWxkIHNjcmlwdHMgdGhhdCBKU0JpbmRpbmdUZXN0R2xvYmFsQ29uc3RydWN0b3JzLmgg
YW5kCi0gICAgSlNCaW5kaW5nVGVzdEdsb2JhbENvbnN0cnVjdG9ycy5jcHAgYXJlIGNyZWF0ZWQg
Zm9yIEJpbmRpbmdUZXN0R2xvYmFsQ29uc3RydWN0b3JzLmlkbCwgYW5kIHRodXMKLSAgICBwcmV2
ZW50IHRoZSBidWlsZCBzY3JpcHRzIGZyb20gdHJ5aW5nIHRvIGdlbmVyYXRlIEpTQmluZGluZ1Rl
c3RHbG9iYWxDb25zdHJ1Y3RvcnMuaCBhbmQKLSAgICBKU0JpbmRpbmdUZXN0R2xvYmFsQ29uc3Ry
dWN0b3JzLmNwcCBhdCBldmVyeSBidWlsZC4gVGhpcyBmaWxlIG11c3Qgbm90IGJlIHRyaWVkIHRv
IGNvbXBpbGUuCisgICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCB0byBpbmZvcm0gYnVpbGQgc2Ny
aXB0cyB0aGF0IEpTQmluZGluZ1Rlc3RHbG9iYWxDb25zdHJ1Y3RvcnMuaCBhbmQKKyAgICBKU0Jp
bmRpbmdUZXN0R2xvYmFsQ29uc3RydWN0b3JzLmNwcCB3ZXJlIGNyZWF0ZWQgZm9yIEJpbmRpbmdU
ZXN0R2xvYmFsQ29uc3RydWN0b3JzLmlkbCwgYW5kIHByZXZlbnQgdGhlIGJ1aWxkCisgICAgc2Ny
aXB0cyBmcm9tIHRyeWluZyB0byByZWdlbmVyYXRlIEpTQmluZGluZ1Rlc3RHbG9iYWxDb25zdHJ1
Y3RvcnMuaCBhbmQgSlNCaW5kaW5nVGVzdEdsb2JhbENvbnN0cnVjdG9ycy5jcHAgb24gZXZlcnkg
YnVpbGQuCiAqLwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTQmluZGluZ1Rlc3RHbG9iYWxDb25zdHJ1Y3RvcnMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNCaW5kaW5nVGVzdEdsb2JhbENvbnN0
cnVjdG9ycy5oCShyZXZpc2lvbiAyNjY3NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNCaW5kaW5nVGVzdEdsb2JhbENvbnN0cnVjdG9ycy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDYgKzEsNSBAQAogLyoKLSAgICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGp1
c3QgdG8gdGVsbCBidWlsZCBzY3JpcHRzIHRoYXQgSlNCaW5kaW5nVGVzdEdsb2JhbENvbnN0cnVj
dG9ycy5oIGFuZAotICAgIEpTQmluZGluZ1Rlc3RHbG9iYWxDb25zdHJ1Y3RvcnMuY3BwIGFyZSBj
cmVhdGVkIGZvciBCaW5kaW5nVGVzdEdsb2JhbENvbnN0cnVjdG9ycy5pZGwsIGFuZCB0aHVzCi0g
ICAgcHJldmVudCB0aGUgYnVpbGQgc2NyaXB0cyBmcm9tIHRyeWluZyB0byBnZW5lcmF0ZSBKU0Jp
bmRpbmdUZXN0R2xvYmFsQ29uc3RydWN0b3JzLmggYW5kCi0gICAgSlNCaW5kaW5nVGVzdEdsb2Jh
bENvbnN0cnVjdG9ycy5jcHAgYXQgZXZlcnkgYnVpbGQuIFRoaXMgZmlsZSBtdXN0IG5vdCBiZSB0
cmllZCB0byBjb21waWxlLgorICAgIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgdG8gaW5mb3JtIGJ1
aWxkIHNjcmlwdHMgdGhhdCBKU0JpbmRpbmdUZXN0R2xvYmFsQ29uc3RydWN0b3JzLmggYW5kCisg
ICAgSlNCaW5kaW5nVGVzdEdsb2JhbENvbnN0cnVjdG9ycy5jcHAgd2VyZSBjcmVhdGVkIGZvciBC
aW5kaW5nVGVzdEdsb2JhbENvbnN0cnVjdG9ycy5pZGwsIGFuZCBwcmV2ZW50IHRoZSBidWlsZAor
ICAgIHNjcmlwdHMgZnJvbSB0cnlpbmcgdG8gcmVnZW5lcmF0ZSBKU0JpbmRpbmdUZXN0R2xvYmFs
Q29uc3RydWN0b3JzLmggYW5kIEpTQmluZGluZ1Rlc3RHbG9iYWxDb25zdHJ1Y3RvcnMuY3BwIG9u
IGV2ZXJ5IGJ1aWxkLgogKi8KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU0RPTVdpbmRvd0NvbnN0cnVjdG9ycy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93Q29uc3RydWN0b3Jz
LmNwcAkocmV2aXNpb24gMjY2NzQ3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTRE9NV2luZG93Q29uc3RydWN0b3JzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw2ICsxLDUgQEAKIC8qCi0gICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBqdXN0IHRvIHRlbGwg
YnVpbGQgc2NyaXB0cyB0aGF0IEpTRE9NV2luZG93Q29uc3RydWN0b3JzLmggYW5kCi0gICAgSlNE
T01XaW5kb3dDb25zdHJ1Y3RvcnMuY3BwIGFyZSBjcmVhdGVkIGZvciBET01XaW5kb3dDb25zdHJ1
Y3RvcnMuaWRsLCBhbmQgdGh1cwotICAgIHByZXZlbnQgdGhlIGJ1aWxkIHNjcmlwdHMgZnJvbSB0
cnlpbmcgdG8gZ2VuZXJhdGUgSlNET01XaW5kb3dDb25zdHJ1Y3RvcnMuaCBhbmQKLSAgICBKU0RP
TVdpbmRvd0NvbnN0cnVjdG9ycy5jcHAgYXQgZXZlcnkgYnVpbGQuIFRoaXMgZmlsZSBtdXN0IG5v
dCBiZSB0cmllZCB0byBjb21waWxlLgorICAgIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgdG8gaW5m
b3JtIGJ1aWxkIHNjcmlwdHMgdGhhdCBKU0RPTVdpbmRvd0NvbnN0cnVjdG9ycy5oIGFuZAorICAg
IEpTRE9NV2luZG93Q29uc3RydWN0b3JzLmNwcCB3ZXJlIGNyZWF0ZWQgZm9yIERPTVdpbmRvd0Nv
bnN0cnVjdG9ycy5pZGwsIGFuZCBwcmV2ZW50IHRoZSBidWlsZAorICAgIHNjcmlwdHMgZnJvbSB0
cnlpbmcgdG8gcmVnZW5lcmF0ZSBKU0RPTVdpbmRvd0NvbnN0cnVjdG9ycy5oIGFuZCBKU0RPTVdp
bmRvd0NvbnN0cnVjdG9ycy5jcHAgb24gZXZlcnkgYnVpbGQuCiAqLwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93Q29uc3RydWN0b3JzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
RE9NV2luZG93Q29uc3RydWN0b3JzLmgJKHJldmlzaW9uIDI2Njc0NykKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRvd0NvbnN0cnVjdG9ycy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNSBAQAogLyoKLSAgICBUaGlzIGZpbGUgaXMgZ2VuZXJh
dGVkIGp1c3QgdG8gdGVsbCBidWlsZCBzY3JpcHRzIHRoYXQgSlNET01XaW5kb3dDb25zdHJ1Y3Rv
cnMuaCBhbmQKLSAgICBKU0RPTVdpbmRvd0NvbnN0cnVjdG9ycy5jcHAgYXJlIGNyZWF0ZWQgZm9y
IERPTVdpbmRvd0NvbnN0cnVjdG9ycy5pZGwsIGFuZCB0aHVzCi0gICAgcHJldmVudCB0aGUgYnVp
bGQgc2NyaXB0cyBmcm9tIHRyeWluZyB0byBnZW5lcmF0ZSBKU0RPTVdpbmRvd0NvbnN0cnVjdG9y
cy5oIGFuZAotICAgIEpTRE9NV2luZG93Q29uc3RydWN0b3JzLmNwcCBhdCBldmVyeSBidWlsZC4g
VGhpcyBmaWxlIG11c3Qgbm90IGJlIHRyaWVkIHRvIGNvbXBpbGUuCisgICAgVGhpcyBmaWxlIGlz
IGdlbmVyYXRlZCB0byBpbmZvcm0gYnVpbGQgc2NyaXB0cyB0aGF0IEpTRE9NV2luZG93Q29uc3Ry
dWN0b3JzLmggYW5kCisgICAgSlNET01XaW5kb3dDb25zdHJ1Y3RvcnMuY3BwIHdlcmUgY3JlYXRl
ZCBmb3IgRE9NV2luZG93Q29uc3RydWN0b3JzLmlkbCwgYW5kIHByZXZlbnQgdGhlIGJ1aWxkCisg
ICAgc2NyaXB0cyBmcm9tIHRyeWluZyB0byByZWdlbmVyYXRlIEpTRE9NV2luZG93Q29uc3RydWN0
b3JzLmggYW5kIEpTRE9NV2luZG93Q29uc3RydWN0b3JzLmNwcCBvbiBldmVyeSBidWlsZC4KICov
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGVDb25zdHJ1Y3RvcnMuY3BwCShyZXZpc2lvbiAyNjY3NDcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNv
bnN0cnVjdG9ycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw1IEBACiAvKgotICAgIFRo
aXMgZmlsZSBpcyBnZW5lcmF0ZWQganVzdCB0byB0ZWxsIGJ1aWxkIHNjcmlwdHMgdGhhdCBKU0Rl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmggYW5kCi0gICAgSlNEZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5jcHAgYXJlIGNyZWF0ZWQgZm9yIERlZGlj
YXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCwgYW5kIHRodXMKLSAgICBwcmV2
ZW50IHRoZSBidWlsZCBzY3JpcHRzIGZyb20gdHJ5aW5nIHRvIGdlbmVyYXRlIEpTRGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaCBhbmQKLSAgICBKU0RlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmNwcCBhdCBldmVyeSBidWlsZC4gVGhpcyBmaWxlIG11
c3Qgbm90IGJlIHRyaWVkIHRvIGNvbXBpbGUuCisgICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCB0
byBpbmZvcm0gYnVpbGQgc2NyaXB0cyB0aGF0IEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVD
b25zdHJ1Y3RvcnMuaCBhbmQKKyAgICBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3JzLmNwcCB3ZXJlIGNyZWF0ZWQgZm9yIERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29u
c3RydWN0b3JzLmlkbCwgYW5kIHByZXZlbnQgdGhlIGJ1aWxkCisgICAgc2NyaXB0cyBmcm9tIHRy
eWluZyB0byByZWdlbmVyYXRlIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rv
cnMuaCBhbmQgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5jcHAgb24g
ZXZlcnkgYnVpbGQuCiAqLwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5oCShyZXZpc2lvbiAyNjY3NDcpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3JrZXJH
bG9iYWxTY29wZUNvbnN0cnVjdG9ycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNSBAQAog
LyoKLSAgICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGp1c3QgdG8gdGVsbCBidWlsZCBzY3JpcHRz
IHRoYXQgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5oIGFuZAotICAg
IEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuY3BwIGFyZSBjcmVhdGVk
IGZvciBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwsIGFuZCB0aHVz
Ci0gICAgcHJldmVudCB0aGUgYnVpbGQgc2NyaXB0cyBmcm9tIHRyeWluZyB0byBnZW5lcmF0ZSBK
U0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmggYW5kCi0gICAgSlNEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5jcHAgYXQgZXZlcnkgYnVpbGQuIFRo
aXMgZmlsZSBtdXN0IG5vdCBiZSB0cmllZCB0byBjb21waWxlLgorICAgIFRoaXMgZmlsZSBpcyBn
ZW5lcmF0ZWQgdG8gaW5mb3JtIGJ1aWxkIHNjcmlwdHMgdGhhdCBKU0RlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlQ29uc3RydWN0b3JzLmggYW5kCisgICAgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZUNvbnN0cnVjdG9ycy5jcHAgd2VyZSBjcmVhdGVkIGZvciBEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZUNvbnN0cnVjdG9ycy5pZGwsIGFuZCBwcmV2ZW50IHRoZSBidWlsZAorICAgIHNjcmlw
dHMgZnJvbSB0cnlpbmcgdG8gcmVnZW5lcmF0ZSBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3Bl
Q29uc3RydWN0b3JzLmggYW5kIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rv
cnMuY3BwIG9uIGV2ZXJ5IGJ1aWxkLgogKi8KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5jcHAJKHJldmlzaW9uIDI2Njc0
NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsx
LDUgQEAKIC8qCi0gICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBqdXN0IHRvIHRlbGwgYnVpbGQg
c2NyaXB0cyB0aGF0IEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaCBhbmQK
LSAgICBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmNwcCBhcmUgY3JlYXRl
ZCBmb3IgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsLCBhbmQgdGh1cwot
ICAgIHByZXZlbnQgdGhlIGJ1aWxkIHNjcmlwdHMgZnJvbSB0cnlpbmcgdG8gZ2VuZXJhdGUgSlNQ
YWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5oIGFuZAotICAgIEpTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuY3BwIGF0IGV2ZXJ5IGJ1aWxkLiBUaGlzIGZpbGUg
bXVzdCBub3QgYmUgdHJpZWQgdG8gY29tcGlsZS4KKyAgICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVk
IHRvIGluZm9ybSBidWlsZCBzY3JpcHRzIHRoYXQgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZUNv
bnN0cnVjdG9ycy5oIGFuZAorICAgIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3Rv
cnMuY3BwIHdlcmUgY3JlYXRlZCBmb3IgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3Rv
cnMuaWRsLCBhbmQgcHJldmVudCB0aGUgYnVpbGQKKyAgICBzY3JpcHRzIGZyb20gdHJ5aW5nIHRv
IHJlZ2VuZXJhdGUgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5oIGFuZCBK
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmNwcCBvbiBldmVyeSBidWlsZC4K
ICovCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
Q29uc3RydWN0b3JzLmgJKHJldmlzaW9uIDI2Njc0NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3Jz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw1IEBACiAvKgotICAgIFRoaXMgZmlsZSBpcyBn
ZW5lcmF0ZWQganVzdCB0byB0ZWxsIGJ1aWxkIHNjcmlwdHMgdGhhdCBKU1BhaW50V29ya2xldEds
b2JhbFNjb3BlQ29uc3RydWN0b3JzLmggYW5kCi0gICAgSlNQYWludFdvcmtsZXRHbG9iYWxTY29w
ZUNvbnN0cnVjdG9ycy5jcHAgYXJlIGNyZWF0ZWQgZm9yIFBhaW50V29ya2xldEdsb2JhbFNjb3Bl
Q29uc3RydWN0b3JzLmlkbCwgYW5kIHRodXMKLSAgICBwcmV2ZW50IHRoZSBidWlsZCBzY3JpcHRz
IGZyb20gdHJ5aW5nIHRvIGdlbmVyYXRlIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1
Y3RvcnMuaCBhbmQKLSAgICBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmNw
cCBhdCBldmVyeSBidWlsZC4gVGhpcyBmaWxlIG11c3Qgbm90IGJlIHRyaWVkIHRvIGNvbXBpbGUu
CisgICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCB0byBpbmZvcm0gYnVpbGQgc2NyaXB0cyB0aGF0
IEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaCBhbmQKKyAgICBKU1BhaW50
V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmNwcCB3ZXJlIGNyZWF0ZWQgZm9yIFBhaW50
V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCwgYW5kIHByZXZlbnQgdGhlIGJ1aWxk
CisgICAgc2NyaXB0cyBmcm9tIHRyeWluZyB0byByZWdlbmVyYXRlIEpTUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGVDb25zdHJ1Y3RvcnMuaCBhbmQgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0
cnVjdG9ycy5jcHAgb24gZXZlcnkgYnVpbGQuCiAqLwpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0
b3JzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuY3BwCShyZXZpc2lv
biAyNjY3NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDYgKzEsNSBAQAogLyoKLSAgICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGp1c3QgdG8gdGVs
bCBidWlsZCBzY3JpcHRzIHRoYXQgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rv
cnMuaCBhbmQKLSAgICBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5jcHAg
YXJlIGNyZWF0ZWQgZm9yIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGws
IGFuZCB0aHVzCi0gICAgcHJldmVudCB0aGUgYnVpbGQgc2NyaXB0cyBmcm9tIHRyeWluZyB0byBn
ZW5lcmF0ZSBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5oIGFuZAotICAg
IEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmNwcCBhdCBldmVyeSBidWls
ZC4gVGhpcyBmaWxlIG11c3Qgbm90IGJlIHRyaWVkIHRvIGNvbXBpbGUuCisgICAgVGhpcyBmaWxl
IGlzIGdlbmVyYXRlZCB0byBpbmZvcm0gYnVpbGQgc2NyaXB0cyB0aGF0IEpTU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmggYW5kCisgICAgSlNTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGVDb25zdHJ1Y3RvcnMuY3BwIHdlcmUgY3JlYXRlZCBmb3IgU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlQ29uc3RydWN0b3JzLmlkbCwgYW5kIHByZXZlbnQgdGhlIGJ1aWxkCisgICAgc2NyaXB0
cyBmcm9tIHRyeWluZyB0byByZWdlbmVyYXRlIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29u
c3RydWN0b3JzLmggYW5kIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmNw
cCBvbiBldmVyeSBidWlsZC4KICovCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaAkocmV2aXNpb24gMjY2NzQ3KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2VydmljZVdvcmtlckds
b2JhbFNjb3BlQ29uc3RydWN0b3JzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw1IEBACiAv
KgotICAgIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQganVzdCB0byB0ZWxsIGJ1aWxkIHNjcmlwdHMg
dGhhdCBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5oIGFuZAotICAgIEpT
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmNwcCBhcmUgY3JlYXRlZCBmb3Ig
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCwgYW5kIHRodXMKLSAgICBw
cmV2ZW50IHRoZSBidWlsZCBzY3JpcHRzIGZyb20gdHJ5aW5nIHRvIGdlbmVyYXRlIEpTU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmggYW5kCi0gICAgSlNTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuY3BwIGF0IGV2ZXJ5IGJ1aWxkLiBUaGlzIGZpbGUgbXVz
dCBub3QgYmUgdHJpZWQgdG8gY29tcGlsZS4KKyAgICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIHRv
IGluZm9ybSBidWlsZCBzY3JpcHRzIHRoYXQgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25z
dHJ1Y3RvcnMuaCBhbmQKKyAgICBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9y
cy5jcHAgd2VyZSBjcmVhdGVkIGZvciBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rv
cnMuaWRsLCBhbmQgcHJldmVudCB0aGUgYnVpbGQKKyAgICBzY3JpcHRzIGZyb20gdHJ5aW5nIHRv
IHJlZ2VuZXJhdGUgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaCBhbmQg
SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuY3BwIG9uIGV2ZXJ5IGJ1aWxk
LgogKi8KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDb25kaXRpb25hbEluY2x1ZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5jcHAJKHJl
dmlzaW9uIDI2Njc0NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsMjIg
KzYzLDI1IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAvLyBGdW5jdGlvbnMKIAogI2lmIChFTkFC
TEUoQ29uZGl0aW9uMTIpICYmIEVOQUJMRShDb25kaXRpb24yMikpIHx8IEVOQUJMRShDb25kaXRp
b24yMykKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDb25kaXRpb25h
bEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZDEoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uTWl4aW5PcGVyYXRp
b24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYKICNpZiAo
RU5BQkxFKENvbmRpdGlvbjEyKSAmJiBFTkFCTEUoQ29uZGl0aW9uMjIpKSB8fCBFTkFCTEUoQ29u
ZGl0aW9uMjMpCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q29uZGl0
aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2QyKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbk1peGluQ29t
cGxleE9wZXJhdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNl
bmRpZgogI2lmIChFTkFCTEUoQ29uZGl0aW9uMTIpICYmIEVOQUJMRShDb25kaXRpb24yMikpIHx8
IEVOQUJMRShDb25kaXRpb24yMykKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZDMo
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0
aW9uTWl4aW5DdXN0b21PcGVyYXRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZy
YW1lKik7CiAjZW5kaWYKICNpZiAoRU5BQkxFKENvbmRpdGlvbjExKSAmJiBFTkFCTEUoQ29uZGl0
aW9uMTIpICYmIEVOQUJMRShDb25kaXRpb24yMikpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLUpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVz
UHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZENvbmRpdGlvbmFsKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbk1peGluQ29uZGl0
aW9uYWxPcGVyYXRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAj
ZW5kaWYKICNpZiAoRU5BQkxFKENvbmRpdGlvbjEyKSAmJiBFTkFCTEUoQ29uZGl0aW9uMjIpKSB8
fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2RT
ZXR0aW5nc0NvbmRpdGlvbmFsKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSop
OworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENvbmRpdGlvbmFsSW5j
bHVkZXNQcm90b3R5cGVGdW5jdGlvbk1peGluU2V0dGluZ3NDb25kaXRpb25hbE9wZXJhdGlvbihK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNlbmRpZgogI2lmIChFTkFC
TEUoQ29uZGl0aW9uMTIpICYmIEVOQUJMRShDb25kaXRpb24yMikpIHx8IEVOQUJMRShDb25kaXRp
b24yMykKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDb25kaXRpb25h
bEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25UYWtlTm9kZXMoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uTWl4aW5SZXN1bHRGaWVsZE9w
ZXJhdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKKyNlbmRpZgor
I2lmIChFTkFCTEUoQ29uZGl0aW9uMTIpICYmIEVOQUJMRShDb25kaXRpb24yMikgJiYgRU5BQkxF
KENvbmRpdGlvbjMzKSkgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlv
blBhcnRpYWxNaXhpbk9wZXJhdGlvbkZyb21QYXJ0aWFsKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkNhbGxGcmFtZSopOwogI2VuZGlmCiAKIC8vIEF0dHJpYnV0ZXMKQEAgLTg3LDE5ICs5MCwy
MiBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFsSW5jCiBib29sIHNldEpT
VGVzdENvbmRpdGlvbmFsSW5jbHVkZXNDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNUZXN0QXR0cihKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogI2lmIEVOQUJM
RShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzSW5jbHVkZXNTdHIxKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CitKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNNaXhpblJlYWRPbmx5QXR0cmlidXRl
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5
TmFtZSk7CisjZW5kaWYKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRp
b24yMykKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc01peGlu
QXR0cmlidXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNNaXhpbkF0
dHJpYnV0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJM
RShDb25kaXRpb24yMykKLUpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q29uZGl0aW9uYWxJbmNs
dWRlc0luY2x1ZGVzU3RyMihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotYm9vbCBzZXRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVz
SW5jbHVkZXNTdHIyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OkVuY29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q29uZGl0aW9u
YWxJbmNsdWRlc01peGluQ3VzdG9tQXR0cmlidXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdENvbmRp
dGlvbmFsSW5jbHVkZXNNaXhpbkN1c3RvbUF0dHJpYnV0ZShKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAjZW5kaWYKICNpZiBF
TkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLUpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0luY2x1ZGVzU3RyMyhKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotYm9vbCBz
ZXRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzSW5jbHVkZXNTdHIzKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc01peGluTm9kZUF0dHJpYnV0ZShK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5h
bWUpOworYm9vbCBzZXRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzTWl4aW5Ob2RlQXR0cmlidXRl
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRK
U1ZhbHVlKTsKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRp
dGlvbjIzKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzSW5j
bHVkZXNOb2RlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7Ci1ib29sIHNldEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNJbmNsdWRl
c05vZGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5j
b2RlZEpTVmFsdWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDb25kaXRpb25hbEluY2x1
ZGVzUGFydGlhbE1peGluQXR0cmlidXRlRnJvbVBhcnRpYWwoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKICNlbmRpZgogCiBjbGFz
cyBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6
SlNOb25GaW5hbE9iamVjdCB7CkBAIC0xNDEsMjMgKzE0NywzMSBAQCB1c2luZyBKU1Rlc3RDb25k
aXRpb25hbEluY2x1ZGVzQ29uc3RydWN0CiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNU
ZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0NvbnN0cnVjdG9yVGFibGVWYWx1ZXNbXSA9CiB7CiAjaWYg
RU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgeyAiSU5DTFVE
RVNfQ09OU1RBTlQxIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29u
c3RhbnRJbnRlZ2VyLCBOb0ludHJpbnNpYywgeyAobG9uZyBsb25nKSgxKSB9IH0sCisgICAgeyAi
TUlYSU5fQ09OU1RBTlQiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
b25zdGFudEludGVnZXIsIE5vSW50cmluc2ljLCB7IChsb25nIGxvbmcpKDEpIH0gfSwKKyNlbHNl
CisgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKKyNlbmRpZgorI2lmIEVOQUJM
RShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorICAgIHsgIk1JWElOX1JFRkxF
Q1RFRF9DT05TVEFOVCIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNv
bnN0YW50SW50ZWdlciwgTm9JbnRyaW5zaWMsIHsgKGxvbmcgbG9uZykoMikgfSB9LAogI2Vsc2UK
ICAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAogI2VuZGlmCiAjaWYgRU5BQkxF
KENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgeyAiSU5DTFVERVNfQ09O
U1RBTlQyIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJ
bnRlZ2VyLCBOb0ludHJpbnNpYywgeyAobG9uZyBsb25nKSgyKSB9IH0sCisgICAgeyAiUEFSVElB
TF9NSVhJTl9DT05TVEFOVF9GUk9NX1BBUlRJQUwiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIsIE5vSW50cmluc2ljLCB7IChsb25nIGxvbmcp
KDUpIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKICNl
bmRpZgogfTsKIAogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIz
KQotc3RhdGljX2Fzc2VydChUZXN0Q29uZGl0aW9uYWxJbmNsdWRlczo6SU5DTFVERVNfQ09OU1RB
TlQxID09IDEsICJJTkNMVURFU19DT05TVEFOVDEgaW4gVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMg
ZG9lcyBub3QgbWF0Y2ggdmFsdWUgZnJvbSBJREwiKTsKK3N0YXRpY19hc3NlcnQoVGVzdENvbmRp
dGlvbmFsSW5jbHVkZXM6Ok1JWElOX0NPTlNUQU5UID09IDEsICJNSVhJTl9DT05TVEFOVCBpbiBU
ZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyBkb2VzIG5vdCBtYXRjaCB2YWx1ZSBmcm9tIElETCIpOwog
I2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCiBz
dGF0aWNfYXNzZXJ0KFRlc3RDb25kaXRpb25hbEluY2x1ZGVzOjpDT05TVF9JTVBMID09IDIsICJD
T05TVF9JTVBMIGluIFRlc3RDb25kaXRpb25hbEluY2x1ZGVzIGRvZXMgbm90IG1hdGNoIHZhbHVl
IGZyb20gSURMIik7CiAjZW5kaWYKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShD
b25kaXRpb24yMykKK3N0YXRpY19hc3NlcnQoVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM6OlBBUlRJ
QUxfTUlYSU5fQ09OU1RBTlRfRlJPTV9QQVJUSUFMID09IDUsICJQQVJUSUFMX01JWElOX0NPTlNU
QU5UX0ZST01fUEFSVElBTCBpbiBUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyBkb2VzIG5vdCBtYXRj
aCB2YWx1ZSBmcm9tIElETCIpOworI2VuZGlmCiAKIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RD
b25kaXRpb25hbEluY2x1ZGVzQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKQEAgLTE4
Miw2MiArMTk2LDc3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RDb25kaXQK
ICAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0Nv
bnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0NvbnN0cnVjdG9yKSB9IH0sCiAg
ICAgeyAidGVzdEF0dHIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0Q29u
ZGl0aW9uYWxJbmNsdWRlc1Rlc3RBdHRyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogI2lmIEVOQUJMRShDb25kaXRpb24yMikg
fHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIHsgImluY2x1ZGVzU3RyMSIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzSW5jbHVkZXNTdHIx
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
MCkgfSB9LAorICAgIHsgIm1peGluUmVhZE9ubHlBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc01peGluUmVhZE9ubHlBdHRy
aWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPigwKSB9IH0sCisjZWxzZQorICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0s
CisjZW5kaWYKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykK
KyAgICB7ICJtaXhpbkF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc01peGluQXR0cmli
dXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc01peGluQXR0cmlidXRlKSB9IH0sCiAjZWxz
ZQogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYKICNpZiBFTkFC
TEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLSAgICB7ICJpbmNsdWRlc1N0
cjIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNJbmNsdWRlc1N0cjIpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RDb25kaXRpb25h
bEluY2x1ZGVzSW5jbHVkZXNTdHIyKSB9IH0sCisgICAgeyAibWl4aW5DdXN0b21BdHRyaWJ1dGUi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdENvbmRpdGlvbmFsSW5jbHVkZXNNaXhpbkN1c3RvbUF0dHJpYnV0ZSksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdENvbmRp
dGlvbmFsSW5jbHVkZXNNaXhpbkN1c3RvbUF0dHJpYnV0ZSkgfSB9LAogI2Vsc2UKICAgICB7IDAs
IDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlv
bjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgeyAiaW5jbHVkZXNTdHIzIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RDb25k
aXRpb25hbEluY2x1ZGVzSW5jbHVkZXNTdHIzKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0lu
Y2x1ZGVzU3RyMykgfSB9LAorICAgIHsgIm1peGluTm9kZUF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0Q29uZGl0aW9u
YWxJbmNsdWRlc01peGluTm9kZUF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNN
aXhpbk5vZGVBdHRyaWJ1dGUpIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywg
eyAwLCAwIH0gfSwKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENv
bmRpdGlvbjIzKQotICAgIHsgImluY2x1ZGVzTm9kZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0lu
Y2x1ZGVzTm9kZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNJbmNsdWRlc05vZGUpIH0gfSwK
KyAgICB7ICJwYXJ0aWFsTWl4aW5BdHRyaWJ1dGVGcm9tUGFydGlhbCIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUGFydGlhbE1peGluQXR0
cmlidXRlRnJvbVBhcnRpYWwpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMs
IHsgMCwgMCB9IH0sCiAjZW5kaWYKICNpZiAoRU5BQkxFKENvbmRpdGlvbjEyKSAmJiBFTkFCTEUo
Q29uZGl0aW9uMjIpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgeyAiaW5jbHVkZXNNZXRo
b2QxIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0
aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0
aW9uPihqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01l
dGhvZDEpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAibWl4aW5PcGVyYXRpb24iLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVz
dENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbk1peGluT3BlcmF0aW9uKSwgKGlu
dHB0cl90KSAoMCkgfSB9LAogI2Vsc2UKICAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAg
fSB9LAogI2VuZGlmCiAjaWYgKEVOQUJMRShDb25kaXRpb24xMikgJiYgRU5BQkxFKENvbmRpdGlv
bjIyKSkgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIHsgImluY2x1ZGVzTWV0aG9kMiIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNU
ZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2QyKSwg
KGludHB0cl90KSAoMikgfSB9LAorICAgIHsgIm1peGluQ29tcGxleE9wZXJhdGlvbiIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0
Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uTWl4aW5Db21wbGV4T3BlcmF0aW9u
KSwgKGludHB0cl90KSAoMikgfSB9LAogI2Vsc2UKICAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7
IDAsIDAgfSB9LAogI2VuZGlmCiAjaWYgKEVOQUJMRShDb25kaXRpb24xMikgJiYgRU5BQkxFKENv
bmRpdGlvbjIyKSkgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIHsgImluY2x1ZGVzTWV0aG9k
MyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlv
biksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlv
bj4oanNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRo
b2QzKSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgIm1peGluQ3VzdG9tT3BlcmF0aW9uIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihq
c1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25NaXhpbkN1c3RvbU9wZXJh
dGlvbiksIChpbnRwdHJfdCkgKDApIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNp
YywgeyAwLCAwIH0gfSwKICNlbmRpZgogI2lmIChFTkFCTEUoQ29uZGl0aW9uMTEpICYmIEVOQUJM
RShDb25kaXRpb24xMikgJiYgRU5BQkxFKENvbmRpdGlvbjIyKSkgfHwgRU5BQkxFKENvbmRpdGlv
bjIzKQotICAgIHsgImluY2x1ZGVzTWV0aG9kQ29uZGl0aW9uYWwiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdENvbmRpdGlvbmFs
SW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbkluY2x1ZGVzTWV0aG9kQ29uZGl0aW9uYWwpLCAoaW50
cHRyX3QpICgwKSB9IH0sCisgICAgeyAibWl4aW5Db25kaXRpb25hbE9wZXJhdGlvbiIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0
Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uTWl4aW5Db25kaXRpb25hbE9wZXJh
dGlvbiksIChpbnRwdHJfdCkgKDApIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNp
YywgeyAwLCAwIH0gfSwKICNlbmRpZgogI2lmIChFTkFCTEUoQ29uZGl0aW9uMTIpICYmIEVOQUJM
RShDb25kaXRpb24yMikpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLSAgICB7ICJpbmNsdWRlc01l
dGhvZFNldHRpbmdzQ29uZGl0aW9uYWwiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5
cGVGdW5jdGlvbkluY2x1ZGVzTWV0aG9kU2V0dGluZ3NDb25kaXRpb25hbCksIChpbnRwdHJfdCkg
KDApIH0gfSwKKyAgICB7ICJtaXhpblNldHRpbmdzQ29uZGl0aW9uYWxPcGVyYXRpb24iLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVz
dENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbk1peGluU2V0dGluZ3NDb25kaXRp
b25hbE9wZXJhdGlvbiksIChpbnRwdHJfdCkgKDApIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBO
b0ludHJpbnNpYywgeyAwLCAwIH0gfSwKICNlbmRpZgogI2lmIChFTkFCTEUoQ29uZGl0aW9uMTIp
ICYmIEVOQUJMRShDb25kaXRpb24yMikpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLSAgICB7ICJ0
YWtlTm9kZXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZl
RnVuY3Rpb24+KGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvblRha2VO
b2RlcyksIChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICJtaXhpblJlc3VsdEZpZWxkT3BlcmF0
aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0
aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0
aW9uPihqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25NaXhpblJlc3Vs
dEZpZWxkT3BlcmF0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LAorI2Vsc2UKKyAgICB7IDAsIDAs
IE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAorI2VuZGlmCisjaWYgKEVOQUJMRShDb25kaXRpb24x
MikgJiYgRU5BQkxFKENvbmRpdGlvbjIyKSAmJiBFTkFCTEUoQ29uZGl0aW9uMzMpKSB8fCBFTkFC
TEUoQ29uZGl0aW9uMjMpCisgICAgeyAicGFydGlhbE1peGluT3BlcmF0aW9uRnJvbVBhcnRpYWwi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24p
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+
KGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvblBhcnRpYWxNaXhpbk9w
ZXJhdGlvbkZyb21QYXJ0aWFsKSwgKGludHB0cl90KSAoMCkgfSB9LAogI2Vsc2UKICAgICB7IDAs
IDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlv
bjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgeyAiSU5DTFVERVNfQ09OU1RBTlQxIiwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2VyLCBO
b0ludHJpbnNpYywgeyAobG9uZyBsb25nKSgxKSB9IH0sCisgICAgeyAiTUlYSU5fQ09OU1RBTlQi
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIs
IE5vSW50cmluc2ljLCB7IChsb25nIGxvbmcpKDEpIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBO
b0ludHJpbnNpYywgeyAwLCAwIH0gfSwKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikg
fHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIHsgIklOQ0xVREVTX0NPTlNUQU5UMiIsIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdlciwgTm9JbnRy
aW5zaWMsIHsgKGxvbmcgbG9uZykoMikgfSB9LAorICAgIHsgIk1JWElOX1JFRkxFQ1RFRF9DT05T
VEFOVCIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50
ZWdlciwgTm9JbnRyaW5zaWMsIHsgKGxvbmcgbG9uZykoMikgfSB9LAorI2Vsc2UKKyAgICB7IDAs
IDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAorI2VuZGlmCisjaWYgRU5BQkxFKENvbmRpdGlv
bjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCisgICAgeyAiUEFSVElBTF9NSVhJTl9DT05TVEFO
VF9GUk9NX1BBUlRJQUwiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
b25zdGFudEludGVnZXIsIE5vSW50cmluc2ljLCB7IChsb25nIGxvbmcpKDUpIH0gfSwKICNlbHNl
CiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKICNlbmRpZgpAQCAtMjUzLDcg
KzI4Miw3IEBAIHZvaWQgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZToKICNpZiAo
RU5BQkxFKENvbmRpdGlvbjEyKSAmJiBFTkFCTEUoQ29uZGl0aW9uMjIpKSB8fCBFTkFCTEUoQ29u
ZGl0aW9uMjMpCiAgICAgaWYgKCFkb3duY2FzdDxEb2N1bWVudD4oanNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5zZXR0
aW5ncygpLnRlc3RTZXR0aW5nMkVuYWJsZWQoKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRp
bWVQcm9wZXJ0aWVzID0gdHJ1ZTsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImluY2x1
ZGVzTWV0aG9kMSIpLCBzdHJsZW4oImluY2x1ZGVzTWV0aG9kMSIpKTsKKyAgICAgICAgYXV0byBw
cm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0
PGNvbnN0IExDaGFyKj4oIm1peGluT3BlcmF0aW9uIiksIHN0cmxlbigibWl4aW5PcGVyYXRpb24i
KSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRl
bGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAgICAgICAgRGVsZXRlUHJv
cGVydHlTbG90IHNsb3Q7CiAgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBn
bG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKQEAgLTI2Miw3ICsyOTEsNyBAQCB2
b2lkIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGU6CiAjaWYgKEVOQUJMRShDb25k
aXRpb24xMikgJiYgRU5BQkxFKENvbmRpdGlvbjIyKSkgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQog
ICAgIGlmICghZG93bmNhc3Q8RG9jdW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGds
b2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0dGluZ3MoKS50ZXN0
U2V0dGluZzJFbmFibGVkKCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGll
cyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJpbmNsdWRlc01ldGhvZDIi
KSwgc3RybGVuKCJpbmNsdWRlc01ldGhvZDIiKSk7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1l
ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hh
cio+KCJtaXhpbkNvbXBsZXhPcGVyYXRpb24iKSwgc3RybGVuKCJtaXhpbkNvbXBsZXhPcGVyYXRp
b24iKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06
OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAgICAgICAgRGVsZXRl
UHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlz
LCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKQEAgLTI3MSw3ICszMDAsNyBA
QCB2b2lkIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGU6CiAjaWYgKEVOQUJMRShD
b25kaXRpb24xMikgJiYgRU5BQkxFKENvbmRpdGlvbjIyKSkgfHwgRU5BQkxFKENvbmRpdGlvbjIz
KQogICAgIGlmICghZG93bmNhc3Q8RG9jdW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0dGluZ3MoKS50
ZXN0U2V0dGluZzJFbmFibGVkKCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVy
dGllcyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJpbmNsdWRlc01ldGhv
ZDMiKSwgc3RybGVuKCJpbmNsdWRlc01ldGhvZDMiKSk7CisgICAgICAgIGF1dG8gcHJvcGVydHlO
YW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBM
Q2hhcio+KCJtaXhpbkN1c3RvbU9wZXJhdGlvbiIpLCBzdHJsZW4oIm1peGluQ3VzdG9tT3BlcmF0
aW9uIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZN
OjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CiAgICAgICAgIERlbGV0
ZVByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhp
cywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CkBAIC0yODAsNyArMzA5LDcg
QEAgdm9pZCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlOgogI2lmIChFTkFCTEUo
Q29uZGl0aW9uMTEpICYmIEVOQUJMRShDb25kaXRpb24xMikgJiYgRU5BQkxFKENvbmRpdGlvbjIy
KSkgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogICAgIGlmICghZG93bmNhc3Q8RG9jdW1lbnQ+KGpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKS0+c2V0dGluZ3MoKS50ZXN0U2V0dGluZzJFbmFibGVkKCkpIHsKICAgICAgICAg
aGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJvcGVy
dHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBMQ2hhcio+KCJpbmNsdWRlc01ldGhvZENvbmRpdGlvbmFsIiksIHN0cmxlbigiaW5jbHVkZXNN
ZXRob2RDb25kaXRpb25hbCIpKTsKKyAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIm1peGlu
Q29uZGl0aW9uYWxPcGVyYXRpb24iKSwgc3RybGVuKCJtaXhpbkNvbmRpdGlvbmFsT3BlcmF0aW9u
IikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpE
ZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CiAgICAgICAgIERlbGV0ZVBy
b3BlcnR5U2xvdCBzbG90OwogICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywg
Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CkBAIC0yODksNyArMzE4LDcgQEAg
dm9pZCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlOgogI2lmIChFTkFCTEUoQ29u
ZGl0aW9uMTIpICYmIEVOQUJMRShDb25kaXRpb24yMikpIHx8IEVOQUJMRShDb25kaXRpb24yMykK
ICAgICBpZiAoIShkb3duY2FzdDxEb2N1bWVudD4oanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
Z2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5zZXR0aW5ncygpLnRl
c3RTZXR0aW5nRW5hYmxlZCgpICYmIGRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNl
dHRpbmdzKCkudGVzdFNldHRpbmcyRW5hYmxlZCgpKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1
bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImlu
Y2x1ZGVzTWV0aG9kU2V0dGluZ3NDb25kaXRpb25hbCIpLCBzdHJsZW4oImluY2x1ZGVzTWV0aG9k
U2V0dGluZ3NDb25kaXRpb25hbCIpKTsKKyAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIm1p
eGluU2V0dGluZ3NDb25kaXRpb25hbE9wZXJhdGlvbiIpLCBzdHJsZW4oIm1peGluU2V0dGluZ3ND
b25kaXRpb25hbE9wZXJhdGlvbiIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNj
b3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUp
OwogICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpA
QCAtMjk4LDcgKzMyNywyNSBAQCB2b2lkIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5
cGU6CiAjaWYgKEVOQUJMRShDb25kaXRpb24xMikgJiYgRU5BQkxFKENvbmRpdGlvbjIyKSkgfHwg
RU5BQkxFKENvbmRpdGlvbjIzKQogICAgIGlmICghZG93bmNhc3Q8RG9jdW1lbnQ+KGpzQ2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKS0+c2V0dGluZ3MoKS50ZXN0U2V0dGluZzJFbmFibGVkKCkpIHsKICAgICAgICAgaGFzRGlz
YWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1l
ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hh
cio+KCJ0YWtlTm9kZXMiKSwgc3RybGVuKCJ0YWtlTm9kZXMiKSk7CisgICAgICAgIGF1dG8gcHJv
cGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBMQ2hhcio+KCJtaXhpblJlc3VsdEZpZWxkT3BlcmF0aW9uIiksIHN0cmxlbigibWl4aW5S
ZXN1bHRGaWVsZE9wZXJhdGlvbiIpKTsKKyAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNj
b3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUp
OworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwor
ICAgIH0KKyNlbmRpZgorI2lmIChFTkFCTEUoQ29uZGl0aW9uMTIpICYmIEVOQUJMRShDb25kaXRp
b24yMikgJiYgRU5BQkxFKENvbmRpdGlvbjMzKSkgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorICAg
IGlmICghZG93bmNhc3Q8RG9jdW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2Jh
bE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0dGluZ3MoKS50ZXN0U2V0
dGluZzJFbmFibGVkKCkpIHsKKyAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9
IHRydWU7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJwYXJ0aWFsTWl4aW5PcGVyYXRp
b25Gcm9tUGFydGlhbCIpLCBzdHJsZW4oInBhcnRpYWxNaXhpbk9wZXJhdGlvbkZyb21QYXJ0aWFs
IikpOworICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpE
ZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CisgICAgICAgIERlbGV0ZVBy
b3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywg
Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgfQorI2VuZGlmCisjaWYg
RU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCisgICAgaWYgKCFkb3du
Y2FzdDxEb2N1bWVudD4oanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkp
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5zZXR0aW5ncygpLnRlc3RTZXR0aW5nMkVuYWJs
ZWQoKSkgeworICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKKyAg
ICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIm1peGluUmVhZE9ubHlBdHRyaWJ1dGUiKSwgc3Ry
bGVuKCJtaXhpblJlYWRPbmx5QXR0cmlidXRlIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVy
dHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZp
Z3VyYWJsZSk7CiAgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBKU09i
amVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwg
c2xvdCk7CkBAIC0zMDcsNyArMzU0LDcgQEAgdm9pZCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVz
UHJvdG90eXBlOgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIz
KQogICAgIGlmICghZG93bmNhc3Q8RG9jdW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0dGluZ3MoKS50
ZXN0U2V0dGluZzJFbmFibGVkKCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVy
dGllcyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJpbmNsdWRlc1N0cjEi
KSwgc3RybGVuKCJpbmNsdWRlc1N0cjEiKSk7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+
KCJtaXhpbkF0dHJpYnV0ZSIpLCBzdHJsZW4oIm1peGluQXR0cmlidXRlIikpOwogICAgICAgICBW
TTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1v
ZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CiAgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90
OwogICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCks
IHByb3BlcnR5TmFtZSwgc2xvdCk7CkBAIC0zMTYsNyArMzYzLDcgQEAgdm9pZCBKU1Rlc3RDb25k
aXRpb25hbEluY2x1ZGVzUHJvdG90eXBlOgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5B
QkxFKENvbmRpdGlvbjIzKQogICAgIGlmICghZG93bmNhc3Q8RG9jdW1lbnQ+KGpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KS0+c2V0dGluZ3MoKS50ZXN0U2V0dGluZzJFbmFibGVkKCkpIHsKICAgICAgICAgaGFzRGlzYWJs
ZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+
KCJpbmNsdWRlc1N0cjIiKSwgc3RybGVuKCJpbmNsdWRlc1N0cjIiKSk7CisgICAgICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBMQ2hhcio+KCJtaXhpbkN1c3RvbUF0dHJpYnV0ZSIpLCBzdHJsZW4oIm1peGluQ3Vz
dG9tQXR0cmlidXRlIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2Nv
cGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CiAgICAg
ICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CkBAIC0zMjUs
NyArMzcyLDcgQEAgdm9pZCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlOgogI2lm
IEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogICAgIGlmICghZG93
bmNhc3Q8RG9jdW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgp
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0dGluZ3MoKS50ZXN0U2V0dGluZzJFbmFi
bGVkKCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7Ci0g
ICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJpbmNsdWRlc1N0cjMiKSwgc3RybGVuKCJpbmNs
dWRlc1N0cjMiKSk7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJtaXhpbk5vZGVBdHRy
aWJ1dGUiKSwgc3RybGVuKCJtaXhpbk5vZGVBdHRyaWJ1dGUiKSk7CiAgICAgICAgIFZNOjpEZWxl
dGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdu
b3JlQ29uZmlndXJhYmxlKTsKICAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAgICAg
ICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVy
dHlOYW1lLCBzbG90KTsKQEAgLTMzNCw3ICszODEsNyBAQCB2b2lkIEpTVGVzdENvbmRpdGlvbmFs
SW5jbHVkZXNQcm90b3R5cGU6CiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29u
ZGl0aW9uMjMpCiAgICAgaWYgKCFkb3duY2FzdDxEb2N1bWVudD4oanNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5zZXR0
aW5ncygpLnRlc3RTZXR0aW5nMkVuYWJsZWQoKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRp
bWVQcm9wZXJ0aWVzID0gdHJ1ZTsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImluY2x1
ZGVzTm9kZSIpLCBzdHJsZW4oImluY2x1ZGVzTm9kZSIpKTsKKyAgICAgICAgYXV0byBwcm9wZXJ0
eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0
IExDaGFyKj4oInBhcnRpYWxNaXhpbkF0dHJpYnV0ZUZyb21QYXJ0aWFsIiksIHN0cmxlbigicGFy
dGlhbE1peGluQXR0cmlidXRlRnJvbVBhcnRpYWwiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9w
ZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29u
ZmlndXJhYmxlKTsKICAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIEpT
T2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1l
LCBzbG90KTsKQEAgLTQyOSwzOSArNDc2LDM5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdENvbmRp
dGlvbmFsSW5jbHVkZXMKIH0KIAogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENv
bmRpdGlvbjIzKQotc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVk
ZXNJbmNsdWRlc1N0cjFHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMmIHRoaXNPYmplY3QpCitzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc01peGluUmVhZE9ubHlBdHRyaWJ1dGVHZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdENvbmRpdGlvbmFs
SW5jbHVkZXMmIHRoaXNPYmplY3QpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETERPTVN0cmluZz4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5pbmNsdWRlc1N0cjEoKSkpKTsKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLm1peGluUmVhZE9ubHlBdHRyaWJ1dGUoKSkpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0luY2x1ZGVzU3Ry
MShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDb25kaXRpb25hbElu
Y2x1ZGVzTWl4aW5SZWFkT25seUF0dHJpYnV0ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPjo6Z2V0PGpzVGVz
dENvbmRpdGlvbmFsSW5jbHVkZXNJbmNsdWRlc1N0cjFHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJl
aGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJpbmNsdWRl
c1N0cjEiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVk
ZXM+OjpnZXQ8anNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc01peGluUmVhZE9ubHlBdHRyaWJ1dGVH
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJtaXhpblJlYWRPbmx5QXR0cmlidXRlIik7CiB9CiAKICNlbmRpZgog
CiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1zdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0luY2x1ZGVzU3RyMkdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0Q29uZGl0aW9uYWxJ
bmNsdWRlcyYgdGhpc09iamVjdCkKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RDb25kaXRp
b25hbEluY2x1ZGVzTWl4aW5BdHRyaWJ1dGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMmIHRoaXNPYmplY3QpCiB7CiAg
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
ICh0b0pTPElETERPTVN0cmluZz4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1w
bC5pbmNsdWRlc1N0cjIoKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
Lm1peGluQXR0cmlidXRlKCkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdENvbmRpdGlv
bmFsSW5jbHVkZXNJbmNsdWRlc1N0cjIoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFs
dWUganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc01peGluQXR0cmlidXRlKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkKIHsKLSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVk
ZXM+OjpnZXQ8anNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0luY2x1ZGVzU3RyMkdldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgImluY2x1ZGVzU3RyMiIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0Q29u
ZGl0aW9uYWxJbmNsdWRlcz46OmdldDxqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzTWl4aW5BdHRy
aWJ1dGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICJtaXhpbkF0dHJpYnV0ZSIpOwogfQogCiAjZW5kaWYKIAog
I2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotc3RhdGljIGlu
bGluZSBib29sIHNldEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNJbmNsdWRlc1N0cjJTZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdENvbmRpdGlvbmFsSW5j
bHVkZXMmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc01peGluQXR0cmlidXRlU2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CkBAIC00NjksODYgKzUxNiwxMDIgQEAgc3RhdGljIGlubGluZSBib29sIHNldEpT
VGVzdENvbmRpdGlvbmFsSQogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0
cmluZz4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewotICAgICAgICByZXR1cm4gaW1wbC5zZXRJ
bmNsdWRlc1N0cjIoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgICAgICByZXR1cm4gaW1wbC5z
ZXRNaXhpbkF0dHJpYnV0ZShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICAgfSk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgc2V0SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0luY2x1ZGVz
U3RyMihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXNNaXhpbkF0dHJpYnV0ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCiB7Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RDb25kaXRpb25hbElu
Y2x1ZGVzPjo6c2V0PHNldEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNJbmNsdWRlc1N0cjJTZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImluY2x1
ZGVzU3RyMiIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0Q29uZGl0aW9uYWxJbmNs
dWRlcz46OnNldDxzZXRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzTWl4aW5BdHRyaWJ1dGVTZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm1peGlu
QXR0cmlidXRlIik7CiB9CiAKICNlbmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMjMpCi1zdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0Q29uZGl0aW9u
YWxJbmNsdWRlc0luY2x1ZGVzU3RyM0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyYgdGhpc09iamVjdCkKK3N0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzTWl4aW5DdXN0b21BdHRyaWJ1
dGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdENvbmRp
dGlvbmFsSW5jbHVkZXMmIHRoaXNPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxleGljYWxH
bG9iYWxPYmplY3QpOwotICAgIHJldHVybiB0aGlzT2JqZWN0LmluY2x1ZGVzU3RyMyhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gdGhpc09iamVjdC5taXhpbkN1c3RvbUF0dHJpYnV0
ZShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0Q29uZGl0
aW9uYWxJbmNsdWRlc0luY2x1ZGVzU3RyMyhKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzTWl4aW5DdXN0b21BdHRyaWJ1dGUoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0Q29uZGl0aW9u
YWxJbmNsdWRlcz46OmdldDxqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzSW5jbHVkZXNTdHIzR2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAiaW5jbHVkZXNTdHIzIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPjo6Z2V0PGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNN
aXhpbkN1c3RvbUF0dHJpYnV0ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIm1peGluQ3VzdG9tQXR0cmlidXRl
Iik7CiB9CiAKICNlbmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29u
ZGl0aW9uMjMpCi1zdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRl
c0luY2x1ZGVzU3RyM1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3N0
YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzTWl4aW5DdXN0b21B
dHRyaWJ1dGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVz
dENvbmRpdGlvbmFsSW5jbHVkZXMmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICB0aGlzT2Jq
ZWN0LnNldEluY2x1ZGVzU3RyMyhsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CisgICAgdGhp
c09iamVjdC5zZXRNaXhpbkN1c3RvbUF0dHJpYnV0ZShsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgc2V0SlNUZXN0Q29uZGl0aW9uYWxJbmNs
dWRlc0luY2x1ZGVzU3RyMyhKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29s
IHNldEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNNaXhpbkN1c3RvbUF0dHJpYnV0ZShKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPjo6c2V0PHNldEpTVGVzdENvbmRpdGlvbmFsSW5jbHVk
ZXNJbmNsdWRlc1N0cjNTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgImluY2x1ZGVzU3RyMyIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNU
ZXN0Q29uZGl0aW9uYWxJbmNsdWRlcz46OnNldDxzZXRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVz
TWl4aW5DdXN0b21BdHRyaWJ1dGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgIm1peGluQ3VzdG9tQXR0cmlidXRlIik7CiB9CiAKICNlbmRpZgog
CiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1zdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0luY2x1ZGVzTm9kZUdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0Q29uZGl0aW9uYWxJ
bmNsdWRlcyYgdGhpc09iamVjdCkKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RDb25kaXRp
b25hbEluY2x1ZGVzTWl4aW5Ob2RlQXR0cmlidXRlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzJiB0aGlzT2JqZWN0KQog
ewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExJbnRlcmZhY2U8Tm9kZT4+KGxleGljYWxHbG9iYWxPYmplY3QsICp0aGlz
T2JqZWN0Lmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLmluY2x1ZGVzTm9kZSgpKSkp
OworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExJbnRlcmZhY2U8
Tm9kZT4+KGxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpLCB0
aHJvd1Njb3BlLCBpbXBsLm1peGluTm9kZUF0dHJpYnV0ZSgpKSkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzSW5jbHVkZXNOb2RlKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNNaXhpbk5vZGVB
dHRyaWJ1dGUoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcz46OmdldDxqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVz
SW5jbHVkZXNOb2RlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiaW5jbHVkZXNOb2RlIik7CisgICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPjo6Z2V0PGpzVGVzdENvbmRp
dGlvbmFsSW5jbHVkZXNNaXhpbk5vZGVBdHRyaWJ1dGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJl
aGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJtaXhpbk5v
ZGVBdHRyaWJ1dGUiKTsKIH0KIAogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8
IEVOQUJMRShDb25kaXRpb24yMykKLXN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RDb25kaXRp
b25hbEluY2x1ZGVzSW5jbHVkZXNOb2RlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQorc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNN
aXhpbk5vZGVBdHRyaWJ1dGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUp
CiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMSW50ZXJmYWNlPE5vZGU+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgW10oSlND
OjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBz
Y29wZSkgeyB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29w
ZSwgIlRlc3RDb25kaXRpb25hbEluY2x1ZGVzIiwgImluY2x1ZGVzTm9kZSIsICJOb2RlIik7IH0p
OworICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETEludGVyZmFjZTxOb2RlPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBdHRyaWJ1dGVUeXBl
RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsICJUZXN0Q29uZGl0aW9uYWxJbmNsdWRl
cyIsICJtaXhpbk5vZGVBdHRyaWJ1dGUiLCAiTm9kZSIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKLSAgICAgICAgcmV0dXJuIGltcGwu
c2V0SW5jbHVkZXNOb2RlKCpuYXRpdmVWYWx1ZSk7CisgICAgICAgIHJldHVybiBpbXBsLnNldE1p
eGluTm9kZUF0dHJpYnV0ZSgqbmF0aXZlVmFsdWUpOwogICAgIH0pOwogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIHNldEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNJbmNsdWRlc05vZGUoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RDb25kaXRpb25h
bEluY2x1ZGVzTWl4aW5Ob2RlQXR0cmlidXRlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVk
ZXM+OjpzZXQ8c2V0SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc01peGluTm9kZUF0dHJpYnV0ZVNl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAibWl4
aW5Ob2RlQXR0cmlidXRlIik7Cit9CisKKyNlbmRpZgorCisjaWYgRU5BQkxFKENvbmRpdGlvbjIy
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0Q29u
ZGl0aW9uYWxJbmNsdWRlc1BhcnRpYWxNaXhpbkF0dHJpYnV0ZUZyb21QYXJ0aWFsR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RDb25kaXRpb25hbEluY2x1
ZGVzJiB0aGlzT2JqZWN0KQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExEb3VibGU+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwucGFydGlhbE1peGluQXR0cmlidXRlRnJvbVBhcnRpYWwoKSkp
KTsKK30KKworRW5jb2RlZEpTVmFsdWUganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1BhcnRpYWxN
aXhpbkF0dHJpYnV0ZUZyb21QYXJ0aWFsKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+OjpzZXQ8c2V0SlNUZXN0
Q29uZGl0aW9uYWxJbmNsdWRlc0luY2x1ZGVzTm9kZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiaW5jbHVkZXNOb2RlIik7CisgICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPjo6Z2V0PGpzVGVzdENvbmRp
dGlvbmFsSW5jbHVkZXNQYXJ0aWFsTWl4aW5BdHRyaWJ1dGVGcm9tUGFydGlhbEdldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgInBhcnRpYWxNaXhpbkF0dHJpYnV0ZUZyb21QYXJ0aWFsIik7CiB9CiAKICNlbmRpZgog
CiAjaWYgKEVOQUJMRShDb25kaXRpb24xMikgJiYgRU5BQkxFKENvbmRpdGlvbjIyKSkgfHwgRU5B
QkxFKENvbmRpdGlvbjIzKQotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbkluY2x1ZGVzTWV0aG9kMUJvZHko
SlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVk
ZXM+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbk1peGlu
T3BlcmF0aW9uQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0Q29u
ZGl0aW9uYWxJbmNsdWRlcz46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCiB7CiAgICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNTU2LDE5ICs2MTksMTkgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShj
YWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
dGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5pbmNsdWRlc01ldGhvZDEoKTsKKyAgICBp
bXBsLm1peGluT3BlcmF0aW9uKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDb25kaXRp
b25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZDEoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVu
Y3Rpb25NaXhpbk9wZXJhdGlvbihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RD
b25kaXRpb25hbEluY2x1ZGVzPjo6Y2FsbDxqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90
eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZDFCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNh
bGxGcmFtZSwgImluY2x1ZGVzTWV0aG9kMSIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNU
ZXN0Q29uZGl0aW9uYWxJbmNsdWRlcz46OmNhbGw8anNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1By
b3RvdHlwZUZ1bmN0aW9uTWl4aW5PcGVyYXRpb25Cb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
KmNhbGxGcmFtZSwgIm1peGluT3BlcmF0aW9uIik7CiB9CiAKICNlbmRpZgogCiAjaWYgKEVOQUJM
RShDb25kaXRpb24xMikgJiYgRU5BQkxFKENvbmRpdGlvbjIyKSkgfHwgRU5BQkxFKENvbmRpdGlv
bjIzKQotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFs
SW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbkluY2x1ZGVzTWV0aG9kMkJvZHkoSlNDOjpKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
dHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+OjpDbGFzc1Bh
cmFtZXRlciBjYXN0ZWRUaGlzKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbk1peGluQ29tcGxleE9wZXJh
dGlvbkJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdENvbmRpdGlv
bmFsSW5jbHVkZXM+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQogewogICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTU4NCwzNyArNjQ3LDM3IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvIHN0ckFyZyA9IGNvbnZl
cnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MSA9IGNhbGxGcmFtZS0+dW5jaGVj
a2VkQXJndW1lbnQoMSk7Ci0gICAgYXV0byBvYmpBcmcgPSBjb252ZXJ0PElETEludGVyZmFjZTxU
ZXN0T2JqPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MS52YWx1ZSgpLCBbXShKU0M6
OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNj
b3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUs
IDEsICJvYmpBcmciLCAiVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMiLCAiaW5jbHVkZXNNZXRob2Qy
IiwgIlRlc3RPYmoiKTsgfSk7CisgICAgYXV0byBvYmpBcmcgPSBjb252ZXJ0PElETEludGVyZmFj
ZTxUZXN0T2JqPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MS52YWx1ZSgpLCBbXShK
U0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUm
IHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2Nv
cGUsIDEsICJvYmpBcmciLCAiVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMiLCAibWl4aW5Db21wbGV4
T3BlcmF0aW9uIiwgIlRlc3RPYmoiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBp
bXBsLmluY2x1ZGVzTWV0aG9kMigqY29udGV4dCwgV1RGTW92ZShzdHJBcmcpLCAqb2JqQXJnKSkp
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRv
SlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRo
aXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLm1peGluQ29tcGxleE9wZXJhdGlv
bigqY29udGV4dCwgV1RGTW92ZShzdHJBcmcpLCAqb2JqQXJnKSkpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVu
Y3Rpb25JbmNsdWRlc01ldGhvZDIoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25NaXhpbkNvbXBsZXhPcGVyYXRp
b24oSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRl
cz46OmNhbGw8anNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uSW5jbHVk
ZXNNZXRob2QyQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJpbmNsdWRl
c01ldGhvZDIiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdENvbmRpdGlvbmFsSW5j
bHVkZXM+OjpjYWxsPGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbk1p
eGluQ29tcGxleE9wZXJhdGlvbkJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1l
LCAibWl4aW5Db21wbGV4T3BlcmF0aW9uIik7CiB9CiAKICNlbmRpZgogCiAjaWYgKEVOQUJMRShD
b25kaXRpb24xMikgJiYgRU5BQkxFKENvbmRpdGlvbjIyKSkgfHwgRU5BQkxFKENvbmRpdGlvbjIz
KQotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFsSW5j
bHVkZXNQcm90b3R5cGVGdW5jdGlvbkluY2x1ZGVzTWV0aG9kM0JvZHkoSlNDOjpKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlw
ZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+OjpDbGFzc1BhcmFt
ZXRlciBjYXN0ZWRUaGlzKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbk1peGluQ3VzdG9tT3BlcmF0aW9u
Qm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxG
cmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0Q29uZGl0aW9uYWxJ
bmNsdWRlcz46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCiB7CiAgICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5pbmNsdWRlc01ldGhvZDMoKmxleGlj
YWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAoSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPm1peGluQ3VzdG9tT3BlcmF0
aW9uKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lKSkpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVu
Y3Rpb25JbmNsdWRlc01ldGhvZDMoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25NaXhpbkN1c3RvbU9wZXJhdGlv
bihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVz
Pjo6Y2FsbDxqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRl
c01ldGhvZDNCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgImluY2x1ZGVz
TWV0aG9kMyIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0Q29uZGl0aW9uYWxJbmNs
dWRlcz46OmNhbGw8anNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uTWl4
aW5DdXN0b21PcGVyYXRpb25Cb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwg
Im1peGluQ3VzdG9tT3BlcmF0aW9uIik7CiB9CiAKICNlbmRpZgogCiAjaWYgKEVOQUJMRShDb25k
aXRpb24xMSkgJiYgRU5BQkxFKENvbmRpdGlvbjEyKSAmJiBFTkFCTEUoQ29uZGl0aW9uMjIpKSB8
fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2RD
b25kaXRpb25hbEJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXM+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQorc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5
cGVGdW5jdGlvbk1peGluQ29uZGl0aW9uYWxPcGVyYXRpb25Cb2R5KEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVu
YW1lIElETE9wZXJhdGlvbjxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPjo6Q2xhc3NQYXJhbWV0
ZXIgY2FzdGVkVGhpcykKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CkBAIC02MjIsMTkgKzY4NSwxOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBs
LmluY2x1ZGVzTWV0aG9kQ29uZGl0aW9uYWwoKTsKKyAgICBpbXBsLm1peGluQ29uZGl0aW9uYWxP
cGVyYXRpb24oKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVk
ZXNQcm90b3R5cGVGdW5jdGlvbkluY2x1ZGVzTWV0aG9kQ29uZGl0aW9uYWwoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVu
Y3Rpb25NaXhpbkNvbmRpdGlvbmFsT3BlcmF0aW9uKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+OjpjYWxsPGpzVGVzdENvbmRpdGlvbmFsSW5j
bHVkZXNQcm90b3R5cGVGdW5jdGlvbkluY2x1ZGVzTWV0aG9kQ29uZGl0aW9uYWxCb2R5PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgImluY2x1ZGVzTWV0aG9kQ29uZGl0aW9uYWwi
KTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+Ojpj
YWxsPGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbk1peGluQ29uZGl0
aW9uYWxPcGVyYXRpb25Cb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm1p
eGluQ29uZGl0aW9uYWxPcGVyYXRpb24iKTsKIH0KIAogI2VuZGlmCiAKICNpZiAoRU5BQkxFKENv
bmRpdGlvbjEyKSAmJiBFTkFCTEUoQ29uZGl0aW9uMjIpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMp
Ci1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q29uZGl0aW9uYWxJbmNs
dWRlc1Byb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2RTZXR0aW5nc0NvbmRpdGlvbmFsQm9k
eShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFt
ZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0Q29uZGl0aW9uYWxJbmNs
dWRlcz46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uTWl4
aW5TZXR0aW5nc0NvbmRpdGlvbmFsT3BlcmF0aW9uQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJ
RExPcGVyYXRpb248SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcz46OkNsYXNzUGFyYW1ldGVyIGNh
c3RlZFRoaXMpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAt
NjQyLDMyICs3MDUsNTIgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dAogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5pbmNs
dWRlc01ldGhvZFNldHRpbmdzQ29uZGl0aW9uYWwoKTsKKyAgICBpbXBsLm1peGluU2V0dGluZ3ND
b25kaXRpb25hbE9wZXJhdGlvbigpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q29uZGl0
aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2RTZXR0aW5nc0NvbmRp
dGlvbmFsKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q29uZGl0aW9uYWxJ
bmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uTWl4aW5TZXR0aW5nc0NvbmRpdGlvbmFsT3BlcmF0aW9u
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+
OjpjYWxsPGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbkluY2x1ZGVz
TWV0aG9kU2V0dGluZ3NDb25kaXRpb25hbEJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2Fs
bEZyYW1lLCAiaW5jbHVkZXNNZXRob2RTZXR0aW5nc0NvbmRpdGlvbmFsIik7CisgICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPjo6Y2FsbDxqc1Rlc3RDb25k
aXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25NaXhpblNldHRpbmdzQ29uZGl0aW9uYWxP
cGVyYXRpb25Cb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm1peGluU2V0
dGluZ3NDb25kaXRpb25hbE9wZXJhdGlvbiIpOwogfQogCiAjZW5kaWYKIAogI2lmIChFTkFCTEUo
Q29uZGl0aW9uMTIpICYmIEVOQUJMRShDb25kaXRpb24yMikpIHx8IEVOQUJMRShDb25kaXRpb24y
MykKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDb25kaXRpb25hbElu
Y2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25UYWtlTm9kZXNCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1l
IElETE9wZXJhdGlvbjxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPjo6Q2xhc3NQYXJhbWV0ZXIg
Y2FzdGVkVGhpcykKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDb25k
aXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25NaXhpblJlc3VsdEZpZWxkT3BlcmF0aW9u
Qm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxG
cmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0Q29uZGl0aW9uYWxJ
bmNsdWRlcz46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCiB7CiAgICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwotICAgIGF1dG8gaW1wbFJlc3VsdCA9IGltcGwudGFrZU5vZGVzKCk7CisgICAg
YXV0byBpbXBsUmVzdWx0ID0gaW1wbC5taXhpblJlc3VsdEZpZWxkT3BlcmF0aW9uKCk7CiAgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFNl
cXVlbmNlPElETEludGVyZmFjZTxOb2RlPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVk
VGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUoaW1wbFJlc3VsdC5ub2RlcykpKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1By
b3RvdHlwZUZ1bmN0aW9uVGFrZU5vZGVzKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uTWl4aW5SZXN1bHRGaWVs
ZE9wZXJhdGlvbihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCit7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RDb25kaXRpb25h
bEluY2x1ZGVzPjo6Y2FsbDxqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rp
b25NaXhpblJlc3VsdEZpZWxkT3BlcmF0aW9uQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpj
YWxsRnJhbWUsICJtaXhpblJlc3VsdEZpZWxkT3BlcmF0aW9uIik7Cit9CisKKyNlbmRpZgorCisj
aWYgKEVOQUJMRShDb25kaXRpb24xMikgJiYgRU5BQkxFKENvbmRpdGlvbjIyKSAmJiBFTkFCTEUo
Q29uZGl0aW9uMzMpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCitzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9u
UGFydGlhbE1peGluT3BlcmF0aW9uRnJvbVBhcnRpYWxCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1l
IElETE9wZXJhdGlvbjxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPjo6Q2xhc3NQYXJhbWV0ZXIg
Y2FzdGVkVGhpcykKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9i
amVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgdGhyb3dTY29w
ZS5yZWxlYXNlKCk7CisgICAgaW1wbC5wYXJ0aWFsTWl4aW5PcGVyYXRpb25Gcm9tUGFydGlhbCgp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlw
ZUZ1bmN0aW9uUGFydGlhbE1peGluT3BlcmF0aW9uRnJvbVBhcnRpYWwoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVy
biBJRExPcGVyYXRpb248SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcz46OmNhbGw8anNUZXN0Q29u
ZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uVGFrZU5vZGVzQm9keT4oKmxleGljYWxH
bG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJ0YWtlTm9kZXMiKTsKKyAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+OjpjYWxsPGpzVGVzdENvbmRpdGlvbmFs
SW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvblBhcnRpYWxNaXhpbk9wZXJhdGlvbkZyb21QYXJ0aWFs
Qm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJwYXJ0aWFsTWl4aW5PcGVy
YXRpb25Gcm9tUGFydGlhbCIpOwogfQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXMuaAkocmV2aXNpb24gMjY2NzQ3KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtNjAsMTUgKzYwLDE1IEBAIHB1YmxpYzoKIAogICAgIC8vIEN1c3RvbSBh
dHRyaWJ1dGVzCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMp
Ci0gICAgSlNDOjpKU1ZhbHVlIGluY2x1ZGVzU3RyMyhKU0M6OkpTR2xvYmFsT2JqZWN0JikgY29u
c3Q7CisgICAgSlNDOjpKU1ZhbHVlIG1peGluQ3VzdG9tQXR0cmlidXRlKEpTQzo6SlNHbG9iYWxP
YmplY3QmKSBjb25zdDsKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxF
KENvbmRpdGlvbjIzKQotICAgIHZvaWQgc2V0SW5jbHVkZXNTdHIzKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmLCBKU0M6OkpTVmFsdWUpOworICAgIHZvaWQgc2V0TWl4aW5DdXN0b21BdHRyaWJ1dGUoSlND
OjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSk7CiAjZW5kaWYKIAogICAgIC8vIEN1c3Rv
bSBmdW5jdGlvbnMKICNpZiAoRU5BQkxFKENvbmRpdGlvbjEyKSAmJiBFTkFCTEUoQ29uZGl0aW9u
MjIpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgSlNDOjpKU1ZhbHVlIGluY2x1ZGVzTWV0
aG9kMyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpDYWxsRnJhbWUmKTsKKyAgICBKU0M6OkpT
VmFsdWUgbWl4aW5DdXN0b21PcGVyYXRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6Q2Fs
bEZyYW1lJik7CiAjZW5kaWYKIHByb3RlY3RlZDoKICAgICBKU1Rlc3RDb25kaXRpb25hbEluY2x1
ZGVzKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdENvbmRpdGlv
bmFsSW5jbHVkZXM+JiYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmdTdXBwbGVtZW50YWwuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVk
QnlTZXR0aW5nU3VwcGxlbWVudGFsLmNwcAkocmV2aXNpb24gMjY2NzQ3KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmdTdXBw
bGVtZW50YWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNSBAQAogLyoKLSAgICBUaGlz
IGZpbGUgaXMgZ2VuZXJhdGVkIGp1c3QgdG8gdGVsbCBidWlsZCBzY3JpcHRzIHRoYXQgSlNUZXN0
RW5hYmxlZEJ5U2V0dGluZ1N1cHBsZW1lbnRhbC5oIGFuZAotICAgIEpTVGVzdEVuYWJsZWRCeVNl
dHRpbmdTdXBwbGVtZW50YWwuY3BwIGFyZSBjcmVhdGVkIGZvciBUZXN0RW5hYmxlZEJ5U2V0dGlu
Z1N1cHBsZW1lbnRhbC5pZGwsIGFuZCB0aHVzCi0gICAgcHJldmVudCB0aGUgYnVpbGQgc2NyaXB0
cyBmcm9tIHRyeWluZyB0byBnZW5lcmF0ZSBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nU3VwcGxlbWVu
dGFsLmggYW5kCi0gICAgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1N1cHBsZW1lbnRhbC5jcHAgYXQg
ZXZlcnkgYnVpbGQuIFRoaXMgZmlsZSBtdXN0IG5vdCBiZSB0cmllZCB0byBjb21waWxlLgorICAg
IFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgdG8gaW5mb3JtIGJ1aWxkIHNjcmlwdHMgdGhhdCBKU1Rl
c3RFbmFibGVkQnlTZXR0aW5nU3VwcGxlbWVudGFsLmggYW5kCisgICAgSlNUZXN0RW5hYmxlZEJ5
U2V0dGluZ1N1cHBsZW1lbnRhbC5jcHAgd2VyZSBjcmVhdGVkIGZvciBUZXN0RW5hYmxlZEJ5U2V0
dGluZ1N1cHBsZW1lbnRhbC5pZGwsIGFuZCBwcmV2ZW50IHRoZSBidWlsZAorICAgIHNjcmlwdHMg
ZnJvbSB0cnlpbmcgdG8gcmVnZW5lcmF0ZSBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nU3VwcGxlbWVu
dGFsLmggYW5kIEpTVGVzdEVuYWJsZWRCeVNldHRpbmdTdXBwbGVtZW50YWwuY3BwIG9uIGV2ZXJ5
IGJ1aWxkLgogKi8KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nU3VwcGxlbWVudGFsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRp
bmdTdXBwbGVtZW50YWwuaAkocmV2aXNpb24gMjY2NzQ3KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmdTdXBwbGVtZW50YWwu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDUgQEAKIC8qCi0gICAgVGhpcyBmaWxlIGlzIGdl
bmVyYXRlZCBqdXN0IHRvIHRlbGwgYnVpbGQgc2NyaXB0cyB0aGF0IEpTVGVzdEVuYWJsZWRCeVNl
dHRpbmdTdXBwbGVtZW50YWwuaCBhbmQKLSAgICBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nU3VwcGxl
bWVudGFsLmNwcCBhcmUgY3JlYXRlZCBmb3IgVGVzdEVuYWJsZWRCeVNldHRpbmdTdXBwbGVtZW50
YWwuaWRsLCBhbmQgdGh1cwotICAgIHByZXZlbnQgdGhlIGJ1aWxkIHNjcmlwdHMgZnJvbSB0cnlp
bmcgdG8gZ2VuZXJhdGUgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1N1cHBsZW1lbnRhbC5oIGFuZAot
ICAgIEpTVGVzdEVuYWJsZWRCeVNldHRpbmdTdXBwbGVtZW50YWwuY3BwIGF0IGV2ZXJ5IGJ1aWxk
LiBUaGlzIGZpbGUgbXVzdCBub3QgYmUgdHJpZWQgdG8gY29tcGlsZS4KKyAgICBUaGlzIGZpbGUg
aXMgZ2VuZXJhdGVkIHRvIGluZm9ybSBidWlsZCBzY3JpcHRzIHRoYXQgSlNUZXN0RW5hYmxlZEJ5
U2V0dGluZ1N1cHBsZW1lbnRhbC5oIGFuZAorICAgIEpTVGVzdEVuYWJsZWRCeVNldHRpbmdTdXBw
bGVtZW50YWwuY3BwIHdlcmUgY3JlYXRlZCBmb3IgVGVzdEVuYWJsZWRCeVNldHRpbmdTdXBwbGVt
ZW50YWwuaWRsLCBhbmQgcHJldmVudCB0aGUgYnVpbGQKKyAgICBzY3JpcHRzIGZyb20gdHJ5aW5n
IHRvIHJlZ2VuZXJhdGUgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1N1cHBsZW1lbnRhbC5oIGFuZCBK
U1Rlc3RFbmFibGVkQnlTZXR0aW5nU3VwcGxlbWVudGFsLmNwcCBvbiBldmVyeSBidWlsZC4KICov
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5j
bHVkZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbmNsdWRlcy5jcHAJKHJldmlzaW9uIDI2Njc0NykKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmNsdWRlcy5jcHAJKG5vbmV4
aXN0ZW50KQpAQCAtMSw2ICswLDAgQEAKLS8qCi0gICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBq
dXN0IHRvIHRlbGwgYnVpbGQgc2NyaXB0cyB0aGF0IEpTVGVzdEluY2x1ZGVzLmggYW5kCi0gICAg
SlNUZXN0SW5jbHVkZXMuY3BwIGFyZSBjcmVhdGVkIGZvciBUZXN0SW5jbHVkZXMuaWRsLCBhbmQg
dGh1cwotICAgIHByZXZlbnQgdGhlIGJ1aWxkIHNjcmlwdHMgZnJvbSB0cnlpbmcgdG8gZ2VuZXJh
dGUgSlNUZXN0SW5jbHVkZXMuaCBhbmQKLSAgICBKU1Rlc3RJbmNsdWRlcy5jcHAgYXQgZXZlcnkg
YnVpbGQuIFRoaXMgZmlsZSBtdXN0IG5vdCBiZSB0cmllZCB0byBjb21waWxlLgotKi8KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmNsdWRlcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RJbmNsdWRlcy5oCShyZXZpc2lvbiAyNjY3NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5jbHVkZXMuaAkobm9uZXhpc3RlbnQpCkBAIC0x
LDYgKzAsMCBAQAotLyoKLSAgICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGp1c3QgdG8gdGVsbCBi
dWlsZCBzY3JpcHRzIHRoYXQgSlNUZXN0SW5jbHVkZXMuaCBhbmQKLSAgICBKU1Rlc3RJbmNsdWRl
cy5jcHAgYXJlIGNyZWF0ZWQgZm9yIFRlc3RJbmNsdWRlcy5pZGwsIGFuZCB0aHVzCi0gICAgcHJl
dmVudCB0aGUgYnVpbGQgc2NyaXB0cyBmcm9tIHRyeWluZyB0byBnZW5lcmF0ZSBKU1Rlc3RJbmNs
dWRlcy5oIGFuZAotICAgIEpTVGVzdEluY2x1ZGVzLmNwcCBhdCBldmVyeSBidWlsZC4gVGhpcyBm
aWxlIG11c3Qgbm90IGJlIHRyaWVkIHRvIGNvbXBpbGUuCi0qLwpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVy
ZmFjZS5jcHAJKHJldmlzaW9uIDI2Njc0NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCwx
MSArNTQsMTEgQEAKICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKICNpZiBFTkFCTEUoQ29uZGl0aW9u
MTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKLSNpbmNsdWRlICJKU0RPTUNvbnZlcnROdW1iZXJz
LmgiCiAjaW5jbHVkZSAiVGVzdFN1cHBsZW1lbnRhbEJ1aWx0aW5zLmgiCiAjZW5kaWYKIAogI2lm
IEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKSB8fCBFTkFCTEUoQ29u
ZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnRO
dW1iZXJzLmgiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU05v
ZGUuaCIKICNlbmRpZgpAQCAtNzUsMjIgKzc1LDI1IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAv
LyBGdW5jdGlvbnMKIAogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlv
bjIzKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVBy
b3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2QxKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdElu
dGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uTWl4aW5PcGVyYXRpb24oSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8
IEVOQUJMRShDb25kaXRpb24yMykKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkluY2x1ZGVzTWV0aG9kMihKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbk1peGluQ29tcGxleE9wZXJh
dGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKICNlbmRpZgogI2lm
IEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW5j
bHVkZXNNZXRob2QzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1
bmN0aW9uTWl4aW5DdXN0b21PcGVyYXRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2Fs
bEZyYW1lKik7CiAjZW5kaWYKICNpZiAoRU5BQkxFKENvbmRpdGlvbjExKSAmJiBFTkFCTEUoQ29u
ZGl0aW9uMjIpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhv
ZENvbmRpdGlvbmFsKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1
bmN0aW9uTWl4aW5Db25kaXRpb25hbE9wZXJhdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpDYWxsRnJhbWUqKTsKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxF
KENvbmRpdGlvbjIzKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdElu
dGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2RTZXR0aW5nc0NvbmRpdGlvbmFs
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uTWl4aW5T
ZXR0aW5nc0NvbmRpdGlvbmFsT3BlcmF0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNh
bGxGcmFtZSopOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29u
ZGl0aW9uMjMpCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJm
YWNlUHJvdG90eXBlRnVuY3Rpb25UYWtlTm9kZXMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
Q2FsbEZyYW1lKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50
ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25NaXhpblJlc3VsdEZpZWxkT3BlcmF0aW9uKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworI2VuZGlmCisjaWYgKEVOQUJMRShDb25k
aXRpb24yMikgJiYgRU5BQkxFKENvbmRpdGlvbjMzKSkgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlw
ZUZ1bmN0aW9uUGFydGlhbE1peGluT3BlcmF0aW9uRnJvbVBhcnRpYWwoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEp
IHx8IEVOQUJMRShDb25kaXRpb24xMikKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDEoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CkBAIC0xMTUsMTkgKzExOCwyMiBA
QCBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0CiBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBib29sIHNldEpTVGVzdElu
dGVyZmFjZUNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVO
QUJMRShDb25kaXRpb24yMykKLUpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlSW5j
bHVkZXNTdHIxKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZU1peGlu
UmVhZE9ubHlBdHRyaWJ1dGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikg
fHwgRU5BQkxFKENvbmRpdGlvbjIzKQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZh
Y2VJbmNsdWRlc1N0cjIoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6UHJvcGVydHlOYW1lKTsKLWJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlSW5jbHVkZXNTdHIy
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRK
U1ZhbHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlTWl4aW5BdHRyaWJ1
dGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVy
dHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0SW50ZXJmYWNlTWl4aW5BdHRyaWJ1dGUoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwog
I2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1K
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUluY2x1ZGVzU3RyMyhKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotYm9v
bCBzZXRKU1Rlc3RJbnRlcmZhY2VJbmNsdWRlc1N0cjMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RJbnRlcmZhY2VNaXhpbkN1c3RvbUF0dHJpYnV0ZShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworYm9vbCBzZXRK
U1Rlc3RJbnRlcmZhY2VNaXhpbkN1c3RvbUF0dHJpYnV0ZShKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAjZW5kaWYKICNpZiBF
TkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLUpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0SW50ZXJmYWNlSW5jbHVkZXNOb2RlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1ib29sIHNldEpTVGVzdElu
dGVyZmFjZUluY2x1ZGVzTm9kZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdElu
dGVyZmFjZU1peGluTm9kZUF0dHJpYnV0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VN
aXhpbk5vZGVBdHRyaWJ1dGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworI2VuZGlmCisjaWYgRU5BQkxFKENvbmRpdGlvbjIy
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVy
ZmFjZVBhcnRpYWxNaXhpbkF0dHJpYnV0ZUZyb21QYXJ0aWFsKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiAjZW5kaWYKICNpZiBF
TkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JTdXBwbGVtZW50YWxTdGF0aWNSZWFkT25s
eUF0dHIoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJv
cGVydHlOYW1lKTsKQEAgLTE5NSwxMiArMjAxLDE3IEBAIHVzaW5nIEpTVGVzdEludGVyZmFjZUNv
bnN0cnVjdG9yID0gSlNET00KIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RJbnRl
cmZhY2VDb25zdHJ1Y3RvclRhYmxlVmFsdWVzW10gPQogewogI2lmIEVOQUJMRShDb25kaXRpb24y
MikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIHsgIklOQ0xVREVTX0NPTlNUQU5UMSIsIEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdlciwgTm9J
bnRyaW5zaWMsIHsgKGxvbmcgbG9uZykoMSkgfSB9LAorICAgIHsgIk1JWElOX0NPTlNUQU5UIiwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2VyLCBO
b0ludHJpbnNpYywgeyAobG9uZyBsb25nKSgxKSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9J
bnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8
IEVOQUJMRShDb25kaXRpb24yMykKLSAgICB7ICJJTkNMVURFU19DT05TVEFOVDIiLCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIsIE5vSW50cmlu
c2ljLCB7IChsb25nIGxvbmcpKDIpIH0gfSwKKyAgICB7ICJNSVhJTl9SRUZMRUNURURfQ09OU1RB
TlQiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFudEludGVn
ZXIsIE5vSW50cmluc2ljLCB7IChsb25nIGxvbmcpKDIpIH0gfSwKKyNlbHNlCisgICAgeyAwLCAw
LCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKKyNlbmRpZgorI2lmIEVOQUJMRShDb25kaXRpb24y
MikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorICAgIHsgIlBBUlRJQUxfTUlYSU5fQ09OU1RBTlRf
RlJPTV9QQVJUSUFMIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29u
c3RhbnRJbnRlZ2VyLCBOb0ludHJpbnNpYywgeyAobG9uZyBsb25nKSg1KSB9IH0sCiAjZWxzZQog
ICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYKQEAgLTIzMiwxMSAr
MjQzLDE0IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RJbnRlcmYKIH07CiAK
ICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLXN0YXRpY19h
c3NlcnQoVGVzdEludGVyZmFjZTo6SU5DTFVERVNfQ09OU1RBTlQxID09IDEsICJJTkNMVURFU19D
T05TVEFOVDEgaW4gVGVzdEludGVyZmFjZSBkb2VzIG5vdCBtYXRjaCB2YWx1ZSBmcm9tIElETCIp
Oworc3RhdGljX2Fzc2VydChUZXN0SW50ZXJmYWNlOjpNSVhJTl9DT05TVEFOVCA9PSAxLCAiTUlY
SU5fQ09OU1RBTlQgaW4gVGVzdEludGVyZmFjZSBkb2VzIG5vdCBtYXRjaCB2YWx1ZSBmcm9tIElE
TCIpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MjMpCiBzdGF0aWNfYXNzZXJ0KFRlc3RJbnRlcmZhY2U6OkNPTlNUX0lNUEwgPT0gMiwgIkNPTlNU
X0lNUEwgaW4gVGVzdEludGVyZmFjZSBkb2VzIG5vdCBtYXRjaCB2YWx1ZSBmcm9tIElETCIpOwog
I2VuZGlmCisjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCitz
dGF0aWNfYXNzZXJ0KFRlc3RJbnRlcmZhY2U6OlBBUlRJQUxfTUlYSU5fQ09OU1RBTlRfRlJPTV9Q
QVJUSUFMID09IDUsICJQQVJUSUFMX01JWElOX0NPTlNUQU5UX0ZST01fUEFSVElBTCBpbiBUZXN0
SW50ZXJmYWNlIGRvZXMgbm90IG1hdGNoIHZhbHVlIGZyb20gSURMIik7CisjZW5kaWYKICNpZiBF
TkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKIHN0YXRpY19hc3NlcnQo
VGVzdFN1cHBsZW1lbnRhbDo6U1VQUExFTUVOVEFMQ09OU1RBTlQxID09IDEsICJTVVBQTEVNRU5U
QUxDT05TVEFOVDEgaW4gVGVzdFN1cHBsZW1lbnRhbCBkb2VzIG5vdCBtYXRjaCB2YWx1ZSBmcm9t
IElETCIpOwogI2VuZGlmCkBAIC0yOTMsMjIgKzMwNywyNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRh
YmxlVmFsdWUgSlNUZXN0SW50ZXJmCiB7CiAgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IpIH0g
fSwKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLSAgICB7
ICJpbmNsdWRlc1N0cjEiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0SW50
ZXJmYWNlSW5jbHVkZXNTdHIxKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAorICAgIHsgIm1peGluUmVhZE9ubHlBdHRyaWJ1dGUi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0SW50ZXJmYWNlTWl4aW5SZWFk
T25seUF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KDApIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAw
LCAwIH0gfSwKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRp
dGlvbjIzKQotICAgIHsgImluY2x1ZGVzU3RyMiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0SW50ZXJmYWNlSW5jbHVkZXNTdHIyKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNUZXN0SW50ZXJmYWNlSW5jbHVkZXNTdHIyKSB9IH0sCisgICAgeyAibWl4aW5BdHRyaWJ1dGUi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdEludGVyZmFjZU1peGluQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0SW50ZXJmYWNlTWl4aW5BdHRyaWJ1
dGUpIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKICNl
bmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAg
IHsgImluY2x1ZGVzU3RyMyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0SW50ZXJmYWNlSW5jbHVkZXNTdHIzKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0SW50ZXJm
YWNlSW5jbHVkZXNTdHIzKSB9IH0sCisgICAgeyAibWl4aW5DdXN0b21BdHRyaWJ1dGUiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdElu
dGVyZmFjZU1peGluQ3VzdG9tQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0SW50ZXJmYWNlTWl4aW5DdXN0b21B
dHRyaWJ1dGUpIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0g
fSwKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIz
KQotICAgIHsgImluY2x1ZGVzTm9kZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0SW50ZXJmYWNlSW5jbHVkZXNOb2RlKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0
SW50ZXJmYWNlSW5jbHVkZXNOb2RlKSB9IH0sCisgICAgeyAibWl4aW5Ob2RlQXR0cmlidXRlIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RJbnRlcmZhY2VNaXhpbk5vZGVBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RJbnRlcmZhY2VNaXhpbk5vZGVB
dHRyaWJ1dGUpIH0gfSwKKyNlbHNlCisgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0g
fSwKKyNlbmRpZgorI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIz
KQorICAgIHsgInBhcnRpYWxNaXhpbkF0dHJpYnV0ZUZyb21QYXJ0aWFsIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEludGVyZmFjZVBhcnRpYWxNaXhpbkF0dHJpYnV0ZUZy
b21QYXJ0aWFsKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oMCkgfSB9LAogI2Vsc2UKICAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAg
fSB9LAogI2VuZGlmCkBAIC0zNDMsMzIgKzM2MiwzNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxl
VmFsdWUgSlNUZXN0SW50ZXJmCiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwK
ICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQot
ICAgIHsgImluY2x1ZGVzTWV0aG9kMSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25J
bmNsdWRlc01ldGhvZDEpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAibWl4aW5PcGVyYXRp
b24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rp
b24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rp
b24+KGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uTWl4aW5PcGVyYXRpb24pLCAoaW50
cHRyX3QpICgwKSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9
IH0sCiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24y
MykKLSAgICB7ICJpbmNsdWRlc01ldGhvZDIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0
aW9uSW5jbHVkZXNNZXRob2QyKSwgKGludHB0cl90KSAoMikgfSB9LAorICAgIHsgIm1peGluQ29t
cGxleE9wZXJhdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdO
YXRpdmVGdW5jdGlvbj4oanNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25NaXhpbkNvbXBs
ZXhPcGVyYXRpb24pLCAoaW50cHRyX3QpICgyKSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9J
bnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8
IEVOQUJMRShDb25kaXRpb24yMykKLSAgICB7ICJpbmNsdWRlc01ldGhvZDMiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdEludGVy
ZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2QzKSwgKGludHB0cl90KSAoMCkgfSB9
LAorICAgIHsgIm1peGluQ3VzdG9tT3BlcmF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVG
dW5jdGlvbk1peGluQ3VzdG9tT3BlcmF0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LAogI2Vsc2UK
ICAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAogI2VuZGlmCiAjaWYgKEVOQUJM
RShDb25kaXRpb24xMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIyKSkgfHwgRU5BQkxFKENvbmRpdGlv
bjIzKQotICAgIHsgImluY2x1ZGVzTWV0aG9kQ29uZGl0aW9uYWwiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdEludGVyZmFjZVBy
b3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2RDb25kaXRpb25hbCksIChpbnRwdHJfdCkgKDAp
IH0gfSwKKyAgICB7ICJtaXhpbkNvbmRpdGlvbmFsT3BlcmF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RJbnRlcmZhY2VQ
cm90b3R5cGVGdW5jdGlvbk1peGluQ29uZGl0aW9uYWxPcGVyYXRpb24pLCAoaW50cHRyX3QpICgw
KSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5k
aWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLSAgICB7
ICJpbmNsdWRlc01ldGhvZFNldHRpbmdzQ29uZGl0aW9uYWwiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdEludGVyZmFjZVByb3Rv
dHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2RTZXR0aW5nc0NvbmRpdGlvbmFsKSwgKGludHB0cl90
KSAoMCkgfSB9LAorICAgIHsgIm1peGluU2V0dGluZ3NDb25kaXRpb25hbE9wZXJhdGlvbiIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNU
ZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25NaXhpblNldHRpbmdzQ29uZGl0aW9uYWxPcGVy
YXRpb24pLCAoaW50cHRyX3QpICgwKSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5z
aWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJM
RShDb25kaXRpb24yMykKLSAgICB7ICJ0YWtlTm9kZXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdEludGVyZmFjZVByb3RvdHlw
ZUZ1bmN0aW9uVGFrZU5vZGVzKSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgIm1peGluUmVz
dWx0RmllbGRPcGVyYXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uTWl4aW5S
ZXN1bHRGaWVsZE9wZXJhdGlvbiksIChpbnRwdHJfdCkgKDApIH0gfSwKKyNlbHNlCisgICAgeyAw
LCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKKyNlbmRpZgorI2lmIChFTkFCTEUoQ29uZGl0
aW9uMjIpICYmIEVOQUJMRShDb25kaXRpb24zMykpIHx8IEVOQUJMRShDb25kaXRpb24yMykKKyAg
ICB7ICJwYXJ0aWFsTWl4aW5PcGVyYXRpb25Gcm9tUGFydGlhbCIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0SW50ZXJmYWNlUHJv
dG90eXBlRnVuY3Rpb25QYXJ0aWFsTWl4aW5PcGVyYXRpb25Gcm9tUGFydGlhbCksIChpbnRwdHJf
dCkgKDApIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwK
ICNlbmRpZgpAQCAtMzk3LDEyICs0MjEsMTcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVl
IEpTVGVzdEludGVyZgogICAgIHsgInZhbHVlcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVu
Y3Rpb25WYWx1ZXMpLCAoaW50cHRyX3QpICgwKSB9IH0sCiAgICAgeyAiZm9yRWFjaCIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0
SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoKSwgKGludHB0cl90KSAoMSkgfSB9LAog
I2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIHsgIklO
Q0xVREVTX0NPTlNUQU5UMSIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkNvbnN0YW50SW50ZWdlciwgTm9JbnRyaW5zaWMsIHsgKGxvbmcgbG9uZykoMSkgfSB9LAorICAg
IHsgIk1JWElOX0NPTlNUQU5UIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q29uc3RhbnRJbnRlZ2VyLCBOb0ludHJpbnNpYywgeyAobG9uZyBsb25nKSgxKSB9IH0sCisj
ZWxzZQorICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCisjZW5kaWYKKyNpZiBF
TkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKKyAgICB7ICJNSVhJTl9S
RUZMRUNURURfQ09OU1RBTlQiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpDb25zdGFudEludGVnZXIsIE5vSW50cmluc2ljLCB7IChsb25nIGxvbmcpKDIpIH0gfSwKICNl
bHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKICNlbmRpZgogI2lmIEVO
QUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIHsgIklOQ0xVREVT
X0NPTlNUQU5UMiIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0
YW50SW50ZWdlciwgTm9JbnRyaW5zaWMsIHsgKGxvbmcgbG9uZykoMikgfSB9LAorICAgIHsgIlBB
UlRJQUxfTUlYSU5fQ09OU1RBTlRfRlJPTV9QQVJUSUFMIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2VyLCBOb0ludHJpbnNpYywgeyAobG9uZyBs
b25nKSg1KSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0s
CiAjZW5kaWYKQEAgLTQyOCw3ICs0NTcsNyBAQCB2b2lkIEpTVGVzdEludGVyZmFjZVByb3RvdHlw
ZTo6ZmluaXNoQ3JlCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MjMpCiAgICAgaWYgKCFkb3duY2FzdDxEb2N1bWVudD4oanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5zZXR0aW5ncygp
LnRlc3RTZXR0aW5nRW5hYmxlZCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3Bl
cnRpZXMgPSB0cnVlOwotICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiaW5jbHVkZXNNZXRo
b2RTZXR0aW5nc0NvbmRpdGlvbmFsIiksIHN0cmxlbigiaW5jbHVkZXNNZXRob2RTZXR0aW5nc0Nv
bmRpdGlvbmFsIikpOworICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigibWl4aW5TZXR0aW5n
c0NvbmRpdGlvbmFsT3BlcmF0aW9uIiksIHN0cmxlbigibWl4aW5TZXR0aW5nc0NvbmRpdGlvbmFs
T3BlcmF0aW9uIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUo
dm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CiAgICAgICAg
IERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CkBAIC01MTEsMzkg
KzU0MCwzOSBAQCBib29sIHNldEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKEpTR2xvCiB9CiAK
ICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLXN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbmNsdWRlc1N0cjFHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEludGVyZmFjZSYgdGhpc09iamVjdCkK
K3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VNaXhpblJlYWRPbmx5QXR0cmli
dXRlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RJbnRl
cmZhY2UmIHRoaXNPYmplY3QpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETERPTVN0cmluZz4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5pbmNsdWRlc1N0cjEoKSkpKTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLm1peGluUmVhZE9ubHlBdHRyaWJ1dGUoKSkpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlSW5jbHVkZXNTdHIxKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZU1peGluUmVhZE9ubHlBdHRy
aWJ1dGUoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNU
ZXN0SW50ZXJmYWNlPjo6Z2V0PGpzVGVzdEludGVyZmFjZUluY2x1ZGVzU3RyMUdldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgImluY2x1ZGVzU3RyMSIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0SW50
ZXJmYWNlPjo6Z2V0PGpzVGVzdEludGVyZmFjZU1peGluUmVhZE9ubHlBdHRyaWJ1dGVHZXR0ZXIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsICJtaXhpblJlYWRPbmx5QXR0cmlidXRlIik7CiB9CiAKICNlbmRpZgogCiAjaWYg
RU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1zdGF0aWMgaW5saW5l
IEpTVmFsdWUganNUZXN0SW50ZXJmYWNlSW5jbHVkZXNTdHIyR2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RJbnRlcmZhY2UmIHRoaXNPYmplY3QpCitzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNUZXN0SW50ZXJmYWNlTWl4aW5BdHRyaWJ1dGVHZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEludGVyZmFjZSYgdGhpc09i
amVjdCkKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBpbXBsLmluY2x1ZGVzU3RyMigpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwubWl4aW5BdHRyaWJ1dGUoKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNU
ZXN0SW50ZXJmYWNlSW5jbHVkZXNTdHIyKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK0VuY29kZWRKU1Zh
bHVlIGpzVGVzdEludGVyZmFjZU1peGluQXR0cmlidXRlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsK
LSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEludGVyZmFjZT46OmdldDxqc1Rlc3RJbnRl
cmZhY2VJbmNsdWRlc1N0cjJHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJpbmNsdWRlc1N0cjIiKTsKKyAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEludGVyZmFjZT46OmdldDxqc1Rlc3RJbnRlcmZhY2VN
aXhpbkF0dHJpYnV0ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIm1peGluQXR0cmlidXRlIik7CiB9CiAKICNl
bmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1z
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlSW5jbHVkZXNTdHIyU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RJbnRlcmZhY2UmIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0SW50ZXJm
YWNlTWl4aW5BdHRyaWJ1dGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTVGVzdEludGVyZmFjZSYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNTUxLDgwICs1ODAsOTYgQEAg
c3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdEludGVyZmFjZUluYwogICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewot
ICAgICAgICByZXR1cm4gaW1wbC5zZXRJbmNsdWRlc1N0cjIoV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OworICAgICAgICByZXR1cm4gaW1wbC5zZXRNaXhpbkF0dHJpYnV0ZShXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgc2V0SlNUZXN0SW50
ZXJmYWNlSW5jbHVkZXNTdHIyKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jv
b2wgc2V0SlNUZXN0SW50ZXJmYWNlTWl4aW5BdHRyaWJ1dGUoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQogewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0SW50ZXJmYWNl
Pjo6c2V0PHNldEpTVGVzdEludGVyZmFjZUluY2x1ZGVzU3RyMlNldHRlcj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiaW5jbHVkZXNTdHIyIik7CisgICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RJbnRlcmZhY2U+OjpzZXQ8c2V0SlNUZXN0SW50ZXJm
YWNlTWl4aW5BdHRyaWJ1dGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgIm1peGluQXR0cmlidXRlIik7CiB9CiAKICNlbmRpZgogCiAjaWYgRU5B
QkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1zdGF0aWMgaW5saW5lIEpT
VmFsdWUganNUZXN0SW50ZXJmYWNlSW5jbHVkZXNTdHIzR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RJbnRlcmZhY2UmIHRoaXNPYmplY3QpCitzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0SW50ZXJmYWNlTWl4aW5DdXN0b21BdHRyaWJ1dGVHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEludGVyZmFjZSYgdGhp
c09iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAg
cmV0dXJuIHRoaXNPYmplY3QuaW5jbHVkZXNTdHIzKGxleGljYWxHbG9iYWxPYmplY3QpOworICAg
IHJldHVybiB0aGlzT2JqZWN0Lm1peGluQ3VzdG9tQXR0cmlidXRlKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbmNsdWRlc1N0cjMoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlTWl4aW5DdXN0
b21BdHRyaWJ1dGUoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNUZXN0SW50ZXJmYWNlPjo6Z2V0PGpzVGVzdEludGVyZmFjZUluY2x1ZGVzU3RyM0dldHRl
ciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgImluY2x1ZGVzU3RyMyIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNU
ZXN0SW50ZXJmYWNlPjo6Z2V0PGpzVGVzdEludGVyZmFjZU1peGluQ3VzdG9tQXR0cmlidXRlR2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAibWl4aW5DdXN0b21BdHRyaWJ1dGUiKTsKIH0KIAogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLXN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VJbmNsdWRlc1N0cjNTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEludGVyZmFjZSYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VNaXhpbkN1
c3RvbUF0dHJpYnV0ZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNUZXN0SW50ZXJmYWNlJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgdGhpc09iamVjdC5z
ZXRJbmNsdWRlc1N0cjMobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOworICAgIHRoaXNPYmpl
Y3Quc2V0TWl4aW5DdXN0b21BdHRyaWJ1dGUobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIHNldEpTVGVzdEludGVyZmFjZUluY2x1ZGVzU3Ry
MyhKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdEludGVy
ZmFjZU1peGluQ3VzdG9tQXR0cmlidXRlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKIHsKLSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEludGVyZmFjZT46OnNldDxzZXRK
U1Rlc3RJbnRlcmZhY2VJbmNsdWRlc1N0cjNTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImluY2x1ZGVzU3RyMyIpOworICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNUZXN0SW50ZXJmYWNlPjo6c2V0PHNldEpTVGVzdEludGVyZmFjZU1peGluQ3Vz
dG9tQXR0cmlidXRlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICJtaXhpbkN1c3RvbUF0dHJpYnV0ZSIpOwogfQogCiAjZW5kaWYKIAogI2lmIEVO
QUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzVGVzdEludGVyZmFjZUluY2x1ZGVzTm9kZUdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0SW50ZXJmYWNlJiB0aGlzT2JqZWN0KQorc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdEludGVyZmFjZU1peGluTm9kZUF0dHJpYnV0ZUdldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0SW50ZXJmYWNlJiB0aGlz
T2JqZWN0KQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExJbnRlcmZhY2U8Tm9kZT4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsICp0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLmluY2x1ZGVz
Tm9kZSgpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExJ
bnRlcmZhY2U8Tm9kZT4+KGxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0Lmdsb2JhbE9i
amVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLm1peGluTm9kZUF0dHJpYnV0ZSgpKSkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbmNsdWRlc05vZGUoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlTWl4aW5Ob2RlQXR0cmlidXRlKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEludGVy
ZmFjZT46OmdldDxqc1Rlc3RJbnRlcmZhY2VJbmNsdWRlc05vZGVHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJp
bmNsdWRlc05vZGUiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEludGVyZmFjZT46
OmdldDxqc1Rlc3RJbnRlcmZhY2VNaXhpbk5vZGVBdHRyaWJ1dGVHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJt
aXhpbk5vZGVBdHRyaWJ1dGUiKTsKIH0KIAogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ29uZGl0aW9u
MjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLXN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RJ
bnRlcmZhY2VJbmNsdWRlc05vZGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTVGVzdEludGVyZmFjZSYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3N0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VNaXhpbk5vZGVBdHRyaWJ1dGVTZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEludGVyZmFjZSYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExJbnRlcmZhY2U8Tm9kZT4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXR0cmlidXRlVHlwZUVycm9yKGxl
eGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVzdEludGVyZmFjZSIsICJpbmNsdWRlc05vZGUi
LCAiTm9kZSIpOyB9KTsKKyAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExJbnRlcmZh
Y2U8Tm9kZT4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCBbXShKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93
QXR0cmlidXRlVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVzdEludGVy
ZmFjZSIsICJtaXhpbk5vZGVBdHRyaWJ1dGUiLCAiTm9kZSIpOyB9KTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKLSAgICAgICAgcmV0dXJuIGlt
cGwuc2V0SW5jbHVkZXNOb2RlKCpuYXRpdmVWYWx1ZSk7CisgICAgICAgIHJldHVybiBpbXBsLnNl
dE1peGluTm9kZUF0dHJpYnV0ZSgqbmF0aXZlVmFsdWUpOwogICAgIH0pOwogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIHNldEpTVGVzdEludGVyZmFjZUluY2x1ZGVzTm9kZShKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdEludGVyZmFjZU1peGluTm9k
ZUF0dHJpYnV0ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RJbnRlcmZhY2U+OjpzZXQ8c2V0SlNUZXN0SW50ZXJmYWNl
SW5jbHVkZXNOb2RlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICJpbmNsdWRlc05vZGUiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVz
dEludGVyZmFjZT46OnNldDxzZXRKU1Rlc3RJbnRlcmZhY2VNaXhpbk5vZGVBdHRyaWJ1dGVTZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm1peGlu
Tm9kZUF0dHJpYnV0ZSIpOworfQorCisjZW5kaWYKKworI2lmIEVOQUJMRShDb25kaXRpb24yMikg
fHwgRU5BQkxFKENvbmRpdGlvbjIzKQorc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEludGVy
ZmFjZVBhcnRpYWxNaXhpbkF0dHJpYnV0ZUZyb21QYXJ0aWFsR2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RJbnRlcmZhY2UmIHRoaXNPYmplY3QpCit7Cisg
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
ICh0b0pTPElETERvdWJsZT4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5w
YXJ0aWFsTWl4aW5BdHRyaWJ1dGVGcm9tUGFydGlhbCgpKSkpOworfQorCitFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RJbnRlcmZhY2VQYXJ0aWFsTWl4aW5BdHRyaWJ1dGVGcm9tUGFydGlhbChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RJbnRlcmZhY2U+
OjpnZXQ8anNUZXN0SW50ZXJmYWNlUGFydGlhbE1peGluQXR0cmlidXRlRnJvbVBhcnRpYWxHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJwYXJ0aWFsTWl4aW5BdHRyaWJ1dGVGcm9tUGFydGlhbCIpOwogfQogCiAj
ZW5kaWYKQEAgLTgzNiw3ICs4ODEsNyBAQCBib29sIHNldEpTVGVzdEludGVyZmFjZVJlZmxlY3RB
dHRyaWJ1dGUoCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENv
bmRpdGlvbjIzKQotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVy
ZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2QxQm9keShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBl
bmFtZSBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVk
VGhpcykKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VQ
cm90b3R5cGVGdW5jdGlvbk1peGluT3BlcmF0aW9uQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJ
RExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykK
IHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC04NDQsMTkgKzg4
OSwxOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5V
U0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLmluY2x1ZGVzTWV0aG9k
MSgpOworICAgIGltcGwubWl4aW5PcGVyYXRpb24oKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2QxKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25NaXhp
bk9wZXJhdGlvbihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+
OjpjYWxsPGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2QxQm9k
eT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJpbmNsdWRlc01ldGhvZDEiKTsK
KyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46OmNhbGw8anNUZXN0SW50
ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25NaXhpbk9wZXJhdGlvbkJvZHk+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCAqY2FsbEZyYW1lLCAibWl4aW5PcGVyYXRpb24iKTsKIH0KIAogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLXN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbklu
Y2x1ZGVzTWV0aG9kMkJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVz
dEludGVyZmFjZT46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCitzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25NaXhpbkNv
bXBsZXhPcGVyYXRpb25Cb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rl
c3RJbnRlcmZhY2U+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQogewogICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTg3MiwzNyArOTE3LDM3IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvIHN0ckFyZyA9IGNvbnZl
cnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MSA9IGNhbGxGcmFtZS0+dW5jaGVj
a2VkQXJndW1lbnQoMSk7Ci0gICAgYXV0byBvYmpBcmcgPSBjb252ZXJ0PElETEludGVyZmFjZTxU
ZXN0T2JqPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MS52YWx1ZSgpLCBbXShKU0M6
OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNj
b3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUs
IDEsICJvYmpBcmciLCAiVGVzdEludGVyZmFjZSIsICJpbmNsdWRlc01ldGhvZDIiLCAiVGVzdE9i
aiIpOyB9KTsKKyAgICBhdXRvIG9iakFyZyA9IGNvbnZlcnQ8SURMSW50ZXJmYWNlPFRlc3RPYmo+
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsg
dGhyb3dBcmd1bWVudFR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMSwgIm9i
akFyZyIsICJUZXN0SW50ZXJmYWNlIiwgIm1peGluQ29tcGxleE9wZXJhdGlvbiIsICJUZXN0T2Jq
Iik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5pbmNsdWRlc01ldGhvZDIo
KmNvbnRleHQsIFdURk1vdmUoc3RyQXJnKSwgKm9iakFyZykpKSk7CisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxUZXN0
T2JqPj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwg
dGhyb3dTY29wZSwgaW1wbC5taXhpbkNvbXBsZXhPcGVyYXRpb24oKmNvbnRleHQsIFdURk1vdmUo
c3RyQXJnKSwgKm9iakFyZykpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZDIoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbk1p
eGluQ29tcGxleE9wZXJhdGlvbihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RJ
bnRlcmZhY2U+OjpjYWxsPGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNN
ZXRob2QyQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJpbmNsdWRlc01l
dGhvZDIiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46OmNhbGw8
anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25NaXhpbkNvbXBsZXhPcGVyYXRpb25Cb2R5
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm1peGluQ29tcGxleE9wZXJhdGlv
biIpOwogfQogCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENv
bmRpdGlvbjIzKQotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVy
ZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2QzQm9keShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBl
bmFtZSBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVk
VGhpcykKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VQ
cm90b3R5cGVGdW5jdGlvbk1peGluQ3VzdG9tT3BlcmF0aW9uQm9keShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBl
bmFtZSBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVk
VGhpcykKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwotICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAoSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRo
aXMtPmluY2x1ZGVzTWV0aG9kMygqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSkpKSk7
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIChKU1ZhbHVlOjplbmNvZGUoY2Fz
dGVkVGhpcy0+bWl4aW5DdXN0b21PcGVyYXRpb24oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxs
RnJhbWUpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVy
ZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2QzKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25NaXhpbkN1c3RvbU9w
ZXJhdGlvbihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+Ojpj
YWxsPGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2QzQm9keT4o
KmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJpbmNsdWRlc01ldGhvZDMiKTsKKyAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46OmNhbGw8anNUZXN0SW50ZXJm
YWNlUHJvdG90eXBlRnVuY3Rpb25NaXhpbkN1c3RvbU9wZXJhdGlvbkJvZHk+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAibWl4aW5DdXN0b21PcGVyYXRpb24iKTsKIH0KIAogI2Vu
ZGlmCiAKICNpZiAoRU5BQkxFKENvbmRpdGlvbjExKSAmJiBFTkFCTEUoQ29uZGl0aW9uMjIpKSB8
fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZENvbmRpdGlvbmFs
Qm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxG
cmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6
Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbk1peGluQ29uZGl0aW9uYWxPcGVy
YXRpb25Cb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZh
Y2U+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKQEAgLTkxMCwxOSArOTU1LDE5IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIHRocm93U2NvcGUucmVs
ZWFzZSgpOwotICAgIGltcGwuaW5jbHVkZXNNZXRob2RDb25kaXRpb25hbCgpOworICAgIGltcGwu
bWl4aW5Db25kaXRpb25hbE9wZXJhdGlvbigpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZENvbmRpdGlvbmFsKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rp
b25NaXhpbkNvbmRpdGlvbmFsT3BlcmF0aW9uKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTVGVzdEludGVyZmFjZT46OmNhbGw8anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25J
bmNsdWRlc01ldGhvZENvbmRpdGlvbmFsQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxs
RnJhbWUsICJpbmNsdWRlc01ldGhvZENvbmRpdGlvbmFsIik7CisgICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU1Rlc3RJbnRlcmZhY2U+OjpjYWxsPGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0
aW9uTWl4aW5Db25kaXRpb25hbE9wZXJhdGlvbkJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAq
Y2FsbEZyYW1lLCAibWl4aW5Db25kaXRpb25hbE9wZXJhdGlvbiIpOwogfQogCiAjZW5kaWYKIAog
I2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9u
SW5jbHVkZXNNZXRob2RTZXR0aW5nc0NvbmRpdGlvbmFsQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFt
ZSBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhp
cykKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VQcm90
b3R5cGVGdW5jdGlvbk1peGluU2V0dGluZ3NDb25kaXRpb25hbE9wZXJhdGlvbkJvZHkoSlNDOjpK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46OkNsYXNzUGFyYW1l
dGVyIGNhc3RlZFRoaXMpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwpAQCAtOTMwLDMyICs5NzUsNTIgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1w
bC5pbmNsdWRlc01ldGhvZFNldHRpbmdzQ29uZGl0aW9uYWwoKTsKKyAgICBpbXBsLm1peGluU2V0
dGluZ3NDb25kaXRpb25hbE9wZXJhdGlvbigpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbmNsdWRlc01ldGhvZFNldHRpbmdzQ29uZGl0aW9u
YWwoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5
cGVGdW5jdGlvbk1peGluU2V0dGluZ3NDb25kaXRpb25hbE9wZXJhdGlvbihKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0
dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+OjpjYWxsPGpzVGVzdEludGVyZmFjZVBy
b3RvdHlwZUZ1bmN0aW9uSW5jbHVkZXNNZXRob2RTZXR0aW5nc0NvbmRpdGlvbmFsQm9keT4oKmxl
eGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJpbmNsdWRlc01ldGhvZFNldHRpbmdzQ29u
ZGl0aW9uYWwiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46OmNh
bGw8anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25NaXhpblNldHRpbmdzQ29uZGl0aW9u
YWxPcGVyYXRpb25Cb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm1peGlu
U2V0dGluZ3NDb25kaXRpb25hbE9wZXJhdGlvbiIpOwogfQogCiAjZW5kaWYKIAogI2lmIEVOQUJM
RShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uVGFrZU5vZGVz
Qm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxG
cmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6
Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbk1peGluUmVzdWx0RmllbGRPcGVy
YXRpb25Cb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZh
Y2U+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5V
U0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKLSAgICBhdXRvIGltcGxSZXN1bHQgPSBpbXBsLnRha2VOb2RlcygpOworICAgIGF1dG8g
aW1wbFJlc3VsdCA9IGltcGwubWl4aW5SZXN1bHRGaWVsZE9wZXJhdGlvbigpOwogICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExTZXF1ZW5j
ZTxJRExJbnRlcmZhY2U8Tm9kZT4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMt
Pmdsb2JhbE9iamVjdCgpLCBXVEZNb3ZlKGltcGxSZXN1bHQubm9kZXMpKSkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9u
VGFrZU5vZGVzKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNl
UHJvdG90eXBlRnVuY3Rpb25NaXhpblJlc3VsdEZpZWxkT3BlcmF0aW9uKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICByZXR1
cm4gSURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46OmNhbGw8anNUZXN0SW50ZXJmYWNlUHJv
dG90eXBlRnVuY3Rpb25NaXhpblJlc3VsdEZpZWxkT3BlcmF0aW9uQm9keT4oKmxleGljYWxHbG9i
YWxPYmplY3QsICpjYWxsRnJhbWUsICJtaXhpblJlc3VsdEZpZWxkT3BlcmF0aW9uIik7Cit9CisK
KyNlbmRpZgorCisjaWYgKEVOQUJMRShDb25kaXRpb24yMikgJiYgRU5BQkxFKENvbmRpdGlvbjMz
KSkgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uUGFydGlhbE1peGluT3BlcmF0aW9u
RnJvbVBhcnRpYWxCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RJ
bnRlcmZhY2U+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQoreworICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7Cisg
ICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKKyAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKKyAgICBpbXBsLnBhcnRpYWxN
aXhpbk9wZXJhdGlvbkZyb21QYXJ0aWFsKCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJ
bnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblBhcnRpYWxNaXhpbk9wZXJhdGlvbkZyb21QYXJ0aWFs
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46OmNhbGw8anNU
ZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25UYWtlTm9kZXNCb2R5PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgKmNhbGxGcmFtZSwgInRha2VOb2RlcyIpOworICAgIHJldHVybiBJRExPcGVyYXRp
b248SlNUZXN0SW50ZXJmYWNlPjo6Y2FsbDxqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlv
blBhcnRpYWxNaXhpbk9wZXJhdGlvbkZyb21QYXJ0aWFsQm9keT4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsICpjYWxsRnJhbWUsICJwYXJ0aWFsTWl4aW5PcGVyYXRpb25Gcm9tUGFydGlhbCIpOwogfQog
CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RJbnRlcmZhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmgJKHJldmlzaW9uIDI2Njc0NykKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaAko
d29ya2luZyBjb3B5KQpAQCAtNjQsMTAgKzY0LDEwIEBAIHB1YmxpYzoKIAogICAgIC8vIEN1c3Rv
bSBhdHRyaWJ1dGVzCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MjMpCi0gICAgSlNDOjpKU1ZhbHVlIGluY2x1ZGVzU3RyMyhKU0M6OkpTR2xvYmFsT2JqZWN0Jikg
Y29uc3Q7CisgICAgSlNDOjpKU1ZhbHVlIG1peGluQ3VzdG9tQXR0cmlidXRlKEpTQzo6SlNHbG9i
YWxPYmplY3QmKSBjb25zdDsKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5B
QkxFKENvbmRpdGlvbjIzKQotICAgIHZvaWQgc2V0SW5jbHVkZXNTdHIzKEpTQzo6SlNHbG9iYWxP
YmplY3QmLCBKU0M6OkpTVmFsdWUpOworICAgIHZvaWQgc2V0TWl4aW5DdXN0b21BdHRyaWJ1dGUo
SlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSk7CiAjZW5kaWYKICNpZiBFTkFCTEUo
Q29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKICAgICBKU0M6OkpTVmFsdWUgc3Vw
cGxlbWVudGFsU3RyMyhKU0M6OkpTR2xvYmFsT2JqZWN0JikgY29uc3Q7CkBAIC03OCw3ICs3OCw3
IEBAIHB1YmxpYzoKIAogICAgIC8vIEN1c3RvbSBmdW5jdGlvbnMKICNpZiBFTkFCTEUoQ29uZGl0
aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLSAgICBKU0M6OkpTVmFsdWUgaW5jbHVkZXNN
ZXRob2QzKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkNhbGxGcmFtZSYpOworICAgIEpTQzo6
SlNWYWx1ZSBtaXhpbkN1c3RvbU9wZXJhdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpD
YWxsRnJhbWUmKTsKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENv
bmRpdGlvbjEyKQogICAgIEpTQzo6SlNWYWx1ZSBzdXBwbGVtZW50YWxNZXRob2QzKEpTQzo6SlNH
bG9iYWxPYmplY3QmLCBKU0M6OkNhbGxGcmFtZSYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1peGluSW50ZXJmYWNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWl4aW5J
bnRlcmZhY2UuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RNaXhpbkludGVyZmFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw1IEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgdG8gaW5mb3JtIGJ1
aWxkIHNjcmlwdHMgdGhhdCBKU1Rlc3RNaXhpbkludGVyZmFjZS5oIGFuZAorICAgIEpTVGVzdE1p
eGluSW50ZXJmYWNlLmNwcCB3ZXJlIGNyZWF0ZWQgZm9yIFRlc3RNaXhpbkludGVyZmFjZS5pZGws
IGFuZCBwcmV2ZW50IHRoZSBidWlsZAorICAgIHNjcmlwdHMgZnJvbSB0cnlpbmcgdG8gcmVnZW5l
cmF0ZSBKU1Rlc3RNaXhpbkludGVyZmFjZS5oIGFuZCBKU1Rlc3RNaXhpbkludGVyZmFjZS5jcHAg
b24gZXZlcnkgYnVpbGQuCisqLwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE1peGluSW50ZXJmYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1peGluSW50ZXJmYWNlLmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE1peGluSW50ZXJmYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1IEBACisvKgor
ICAgIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgdG8gaW5mb3JtIGJ1aWxkIHNjcmlwdHMgdGhhdCBK
U1Rlc3RNaXhpbkludGVyZmFjZS5oIGFuZAorICAgIEpTVGVzdE1peGluSW50ZXJmYWNlLmNwcCB3
ZXJlIGNyZWF0ZWQgZm9yIFRlc3RNaXhpbkludGVyZmFjZS5pZGwsIGFuZCBwcmV2ZW50IHRoZSBi
dWlsZAorICAgIHNjcmlwdHMgZnJvbSB0cnlpbmcgdG8gcmVnZW5lcmF0ZSBKU1Rlc3RNaXhpbklu
dGVyZmFjZS5oIGFuZCBKU1Rlc3RNaXhpbkludGVyZmFjZS5jcHAgb24gZXZlcnkgYnVpbGQuCisq
LwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9w
ZXJhdGlvbkJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPcGVyYXRpb25CYXNlLmNwcAkocmV2aXNpb24gMjY2NzQ3KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9wZXJhdGlv
bkJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNSBAQAogLyoKLSAgICBUaGlzIGZp
bGUgaXMgZ2VuZXJhdGVkIGp1c3QgdG8gdGVsbCBidWlsZCBzY3JpcHRzIHRoYXQgSlNUZXN0T3Bl
cmF0aW9uQmFzZS5oIGFuZAotICAgIEpTVGVzdE9wZXJhdGlvbkJhc2UuY3BwIGFyZSBjcmVhdGVk
IGZvciBUZXN0T3BlcmF0aW9uQmFzZS5pZGwsIGFuZCB0aHVzCi0gICAgcHJldmVudCB0aGUgYnVp
bGQgc2NyaXB0cyBmcm9tIHRyeWluZyB0byBnZW5lcmF0ZSBKU1Rlc3RPcGVyYXRpb25CYXNlLmgg
YW5kCi0gICAgSlNUZXN0T3BlcmF0aW9uQmFzZS5jcHAgYXQgZXZlcnkgYnVpbGQuIFRoaXMgZmls
ZSBtdXN0IG5vdCBiZSB0cmllZCB0byBjb21waWxlLgorICAgIFRoaXMgZmlsZSBpcyBnZW5lcmF0
ZWQgdG8gaW5mb3JtIGJ1aWxkIHNjcmlwdHMgdGhhdCBKU1Rlc3RPcGVyYXRpb25CYXNlLmggYW5k
CisgICAgSlNUZXN0T3BlcmF0aW9uQmFzZS5jcHAgd2VyZSBjcmVhdGVkIGZvciBUZXN0T3BlcmF0
aW9uQmFzZS5pZGwsIGFuZCBwcmV2ZW50IHRoZSBidWlsZAorICAgIHNjcmlwdHMgZnJvbSB0cnlp
bmcgdG8gcmVnZW5lcmF0ZSBKU1Rlc3RPcGVyYXRpb25CYXNlLmggYW5kIEpTVGVzdE9wZXJhdGlv
bkJhc2UuY3BwIG9uIGV2ZXJ5IGJ1aWxkLgogKi8KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPcGVyYXRpb25CYXNlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9wZXJhdGlvbkJh
c2UuaAkocmV2aXNpb24gMjY2NzQ3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9wZXJhdGlvbkJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsx
LDUgQEAKIC8qCi0gICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBqdXN0IHRvIHRlbGwgYnVpbGQg
c2NyaXB0cyB0aGF0IEpTVGVzdE9wZXJhdGlvbkJhc2UuaCBhbmQKLSAgICBKU1Rlc3RPcGVyYXRp
b25CYXNlLmNwcCBhcmUgY3JlYXRlZCBmb3IgVGVzdE9wZXJhdGlvbkJhc2UuaWRsLCBhbmQgdGh1
cwotICAgIHByZXZlbnQgdGhlIGJ1aWxkIHNjcmlwdHMgZnJvbSB0cnlpbmcgdG8gZ2VuZXJhdGUg
SlNUZXN0T3BlcmF0aW9uQmFzZS5oIGFuZAotICAgIEpTVGVzdE9wZXJhdGlvbkJhc2UuY3BwIGF0
IGV2ZXJ5IGJ1aWxkLiBUaGlzIGZpbGUgbXVzdCBub3QgYmUgdHJpZWQgdG8gY29tcGlsZS4KKyAg
ICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIHRvIGluZm9ybSBidWlsZCBzY3JpcHRzIHRoYXQgSlNU
ZXN0T3BlcmF0aW9uQmFzZS5oIGFuZAorICAgIEpTVGVzdE9wZXJhdGlvbkJhc2UuY3BwIHdlcmUg
Y3JlYXRlZCBmb3IgVGVzdE9wZXJhdGlvbkJhc2UuaWRsLCBhbmQgcHJldmVudCB0aGUgYnVpbGQK
KyAgICBzY3JpcHRzIGZyb20gdHJ5aW5nIHRvIHJlZ2VuZXJhdGUgSlNUZXN0T3BlcmF0aW9uQmFz
ZS5oIGFuZCBKU1Rlc3RPcGVyYXRpb25CYXNlLmNwcCBvbiBldmVyeSBidWlsZC4KICovCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCShyZXZpc2lv
biAyNjY3NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSwz
NzkgQEAKIC8qCi0gICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBqdXN0IHRvIHRlbGwgYnVpbGQg
c2NyaXB0cyB0aGF0IEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaCBhbmQKLSAgICBKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcCBhcmUgY3JlYXRlZCBmb3IgVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMuaWRsLCBhbmQgdGh1cwotICAgIHByZXZlbnQgdGhlIGJ1aWxkIHNjcmlw
dHMgZnJvbSB0cnlpbmcgdG8gZ2VuZXJhdGUgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5o
IGFuZAotICAgIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwIGF0IGV2ZXJ5IGJ1aWxk
LiBUaGlzIGZpbGUgbXVzdCBub3QgYmUgdHJpZWQgdG8gY29tcGlsZS4KKyAgICBUaGlzIGZpbGUg
aXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxl
IGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElG
WSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CiAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycy5oIgorCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAi
RE9NSXNvU3Vic3BhY2VzLmgiCisjaW5jbHVkZSAiSlNCbG9iLmgiCisjaW5jbHVkZSAiSlNET01C
aW5kaW5nLmgiCisjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkpTRE9N
Q29udmVydEJ1ZmZlclNvdXJjZS5oIgorI2luY2x1ZGUgIkpTRE9NQ29udmVydEludGVyZmFjZS5o
IgorI2luY2x1ZGUgIkpTRE9NQ29udmVydE51bWJlcnMuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZl
cnRTdHJpbmdzLmgiCisjaW5jbHVkZSAiSlNET01Db252ZXJ0VmFyaWFkaWMuaCIKKyNpbmNsdWRl
ICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCisjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUu
aCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29y
ZUpTQ2xpZW50RGF0YS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90
eXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKKy8vIEF0dHJpYnV0
ZXMKKworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29u
c3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0
cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlKTsKKworY2xhc3MgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3Rv
dHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAg
IHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CisgICAgc3RhdGljIEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAg
ICB7CisgICAgICAgIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUqIHB0ciA9
IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc1Byb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90
b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgcHRyLT5maW5pc2hD
cmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisgICAgREVDTEFSRV9J
TkZPOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBKU0M6OlN1YnNwYWNlQWNjZXNz
PgorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkK
KyAgICB7CisgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUsIEJhc2UpOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgfQorICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlND
OjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlw
ZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQor
Citwcml2YXRlOgorICAgIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUoSlND
OjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJl
KQorICAgICAgICA6IEpTQzo6SlNOb25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQorICAgIHsK
KyAgICB9CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK307CitTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
UHJvdG90eXBlLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlOjpCYXNlKTsK
KwordXNpbmcgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yID0gSlNET01D
b25zdHJ1Y3RvcjxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPjsKKworc3RhdGljIGlubGlu
ZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMShK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
Cit7CisgICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvKiBjYXN0ZWRUaGlz
ID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcio+KGNhbGxG
cmFtZS0+anNDYWxsZWUoKSk7CisgICAgQVNTRVJUKGNhc3RlZFRoaXMpOworICAgIEVuc3VyZVN0
aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDAp
OworICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBjb252ZXJ0PElETEFycmF5QnVmZmVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1
bWVudFR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImFycmF5QnVmZmVy
IiwgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIiwgbnVsbHB0ciwgIkFycmF5QnVmZmVyIik7
IH0pOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CisgICAgYXV0byBvYmplY3QgPSBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRl
KCphcnJheUJ1ZmZlcik7CisgICAgc3RhdGljX2Fzc2VydChkZWNsdHlwZShvYmplY3QpOjppc1Jl
Zik7CisgICAgYXV0byBqc1ZhbHVlID0gdG9KU05ld2x5Q3JlYXRlZDxJRExJbnRlcmZhY2U8VGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRo
aXMtPmdsb2JhbE9iamVjdCgpLCBXVEZNb3ZlKG9iamVjdCkpOworICAgIHNldFN1YmNsYXNzU3Ry
dWN0dXJlSWZOZWVkZWQ8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+KGxleGljYWxHbG9iYWxP
YmplY3QsIGNhbGxGcmFtZSwgYXNPYmplY3QoanNWYWx1ZSkpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVmFs
dWUpOworfQorCitzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMyKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc0NvbnN0cnVjdG9yKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKKyAgICBBU1NFUlQoY2Fz
dGVkVGhpcyk7CisgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFt
ZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CisgICAgYXV0byBhcnJheUJ1ZmZlclZpZXcgPSBjb252
ZXJ0PElETEFycmF5QnVmZmVyVmlldz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52
YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6
OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3IobGV4aWNhbEdsb2Jh
bE9iamVjdCwgc2NvcGUsIDAsICJhcnJheUJ1ZmZlclZpZXciLCAiVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMiLCBudWxscHRyLCAiQXJyYXlCdWZmZXJWaWV3Iik7IH0pOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgYXV0byBvYmpl
Y3QgPSBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlKGFycmF5QnVmZmVyVmlldy5y
ZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBzdGF0aWNfYXNzZXJ0KGRlY2x0eXBlKG9iamVjdCk6Omlz
UmVmKTsKKyAgICBhdXRvIGpzVmFsdWUgPSB0b0pTTmV3bHlDcmVhdGVkPElETEludGVyZmFjZTxU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVk
VGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUob2JqZWN0KSk7CisgICAgc2V0U3ViY2xhc3NT
dHJ1Y3R1cmVJZk5lZWRlZDxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgY2FsbEZyYW1lLCBhc09iamVjdChqc1ZhbHVlKSk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNW
YWx1ZSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yczMoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxP
YmplY3QtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzQ29uc3RydWN0b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOworICAgIEFTU0VSVChj
YXN0ZWRUaGlzKTsKKyAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZy
YW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKKyAgICBhdXRvIGJsb2IgPSBjb252ZXJ0PElETElu
dGVyZmFjZTxCbG9iPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCBb
XShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2Nv
cGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwg
c2NvcGUsIDAsICJibG9iIiwgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIiwgbnVsbHB0ciwg
IkJsb2IiKTsgfSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKKyAgICBhdXRvIG9iamVjdCA9IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
OjpjcmVhdGUoKmJsb2IpOworICAgIHN0YXRpY19hc3NlcnQoZGVjbHR5cGUob2JqZWN0KTo6aXNS
ZWYpOworICAgIGF1dG8ganNWYWx1ZSA9IHRvSlNOZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPFRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRU
aGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGTW92ZShvYmplY3QpKTsKKyAgICBzZXRTdWJjbGFzc1N0
cnVjdHVyZUlmTmVlZGVkPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPihsZXhpY2FsR2xvYmFs
T2JqZWN0LCBjYWxsRnJhbWUsIGFzT2JqZWN0KGpzVmFsdWUpKTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Zh
bHVlKTsKK30KKworc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzNChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9i
amVjdC0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNDb25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CisgICAgQVNTRVJUKGNh
c3RlZFRoaXMpOworICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJh
bWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOworICAgIGF1dG8gc3RyaW5nID0gY29udmVydDxJRExE
T01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBh
dXRvIG9iamVjdCA9IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUoV1RGTW92ZShz
dHJpbmcpKTsKKyAgICBzdGF0aWNfYXNzZXJ0KGRlY2x0eXBlKG9iamVjdCk6OmlzUmVmKTsKKyAg
ICBhdXRvIGpzVmFsdWUgPSB0b0pTTmV3bHlDcmVhdGVkPElETEludGVyZmFjZTxUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xv
YmFsT2JqZWN0KCksIFdURk1vdmUob2JqZWN0KSk7CisgICAgc2V0U3ViY2xhc3NTdHJ1Y3R1cmVJ
Zk5lZWRlZDxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4obGV4aWNhbEdsb2JhbE9iamVjdCwg
Y2FsbEZyYW1lLCBhc09iamVjdChqc1ZhbHVlKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCB7IH0pOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNWYWx1ZSk7Cit9
CisKK3N0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yczUoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
YXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29u
c3RydWN0b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOworICAgIEFTU0VSVChjYXN0ZWRUaGlz
KTsKKyAgICBhdXRvIGxvbmdBcmdzID0gY29udmVydFZhcmlhZGljQXJndW1lbnRzPElETExvbmc+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAwKTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIGF1dG8gb2JqZWN0ID0g
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNyZWF0ZShXVEZNb3ZlKGxvbmdBcmdzKSk7Cisg
ICAgc3RhdGljX2Fzc2VydChkZWNsdHlwZShvYmplY3QpOjppc1JlZik7CisgICAgYXV0byBqc1Zh
bHVlID0gdG9KU05ld2x5Q3JlYXRlZDxJRExJbnRlcmZhY2U8VGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnM+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgp
LCBXVEZNb3ZlKG9iamVjdCkpOworICAgIHNldFN1YmNsYXNzU3RydWN0dXJlSWZOZWVkZWQ8VGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwg
YXNPYmplY3QoanNWYWx1ZSkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
eyB9KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVmFsdWUpOworfQorCit0ZW1wbGF0
ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGxleGljYWxHbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIHNpemVfdCBhcmdzQ291
bnQgPSBzdGQ6Om1pbjxzaXplX3Q+KDEsIGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpKTsKKyAg
ICBpZiAoYXJnc0NvdW50ID09IDApIHsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsIChjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzNShsZXhpY2FsR2xv
YmFsT2JqZWN0LCBjYWxsRnJhbWUpKSk7CisgICAgfQorICAgIGlmIChhcmdzQ291bnQgPT0gMSkg
eworICAgICAgICBKU1ZhbHVlIGRpc3Rpbmd1aXNoaW5nQXJnID0gY2FsbEZyYW1lLT51bmNoZWNr
ZWRBcmd1bWVudCgwKTsKKyAgICAgICAgaWYgKGRpc3Rpbmd1aXNoaW5nQXJnLmlzT2JqZWN0KCkg
JiYgYXNPYmplY3QoZGlzdGluZ3Vpc2hpbmdBcmcpLT5pbmhlcml0czxKU0FycmF5QnVmZmVyPih2
bSkpCisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKGNvbnN0cnVj
dEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMxKGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxG
cmFtZSkpKTsKKyAgICAgICAgaWYgKGRpc3Rpbmd1aXNoaW5nQXJnLmlzT2JqZWN0KCkgJiYgYXNP
YmplY3QoZGlzdGluZ3Vpc2hpbmdBcmcpLT5pbmhlcml0czxKU0FycmF5QnVmZmVyVmlldz4odm0p
KQorICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIChjb25zdHJ1Y3RK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJh
bWUpKSk7CisgICAgICAgIGlmIChkaXN0aW5ndWlzaGluZ0FyZy5pc09iamVjdCgpICYmIGFzT2Jq
ZWN0KGRpc3Rpbmd1aXNoaW5nQXJnKS0+aW5oZXJpdHM8SlNCbG9iPih2bSkpCisgICAgICAgICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKGNvbnN0cnVjdEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMzKGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxGcmFtZSkpKTsKKyAgICAg
ICAgaWYgKGRpc3Rpbmd1aXNoaW5nQXJnLmlzTnVtYmVyKCkpCisgICAgICAgICAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgKGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnM1KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxGcmFtZSkpKTsKKyAgICAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIChjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzNChsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpKSk7CisgICAgfQorICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwor
fQorCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0
cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKHZtKTsKKyAgICBy
ZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7Cit9CisKK3RlbXBsYXRlPD4g
dm9pZCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmluaXRpYWxpemVQ
cm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yczo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycyJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Cit9CisK
K3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnND
b25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMiLCAmQmFz
ZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvcikgfTsKKworLyogSGFzaCB0YWJsZSBmb3Ig
cHJvdG90eXBlICovCisKK3N0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9Cit7CisgICAgeyAiY29uc3Ry
dWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvciks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNl
dEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvcikgfSB9LAorfTsKKworY29u
c3QgQ2xhc3NJbmZvIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGU6OnNfaW5m
byA9IHsgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0
ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzUHJvdG90eXBlKSB9OworCit2b2lkIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90
b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bih2bSk7CisgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzOjppbmZvKCksIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGVU
YWJsZVZhbHVlcywgKnRoaXMpOworICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJ
VElPTigpOworfQorCitjb25zdCBDbGFzc0luZm8gSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
czo6c19pbmZvID0geyAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMiLCAmQmFzZTo6c19pbmZv
LCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMpIH07CisKK0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OkpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4mJiBpbXBs
KQorICAgIDogSlNET01XcmFwcGVyPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPihzdHJ1Y3R1
cmUsIGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSkKK3sKK30KKwordm9pZCBKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisK
KyAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vfb2Y8QWN0aXZlRE9NT2JqZWN0LCBUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz46OnZhbHVlLCAiSW50ZXJmYWNlIGlzIG5vdCBtYXJrZWQg
YXMgW0FjdGl2ZURPTU9iamVjdF0gZXZlbiB0aG91Z2ggaW1wbGVtZW50YXRpb24gY2xhc3Mgc3Vi
Y2xhc3NlcyBBY3RpdmVET01PYmplY3QuIik7CisKK30KKworSlNPYmplY3QqIEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnM6OmNyZWF0ZVByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNQcm90b3R5cGU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwgSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCAmZ2xvYmFsT2JqZWN0
LCBnbG9iYWxPYmplY3Qub2JqZWN0UHJvdG90eXBlKCkpKTsKK30KKworSlNPYmplY3QqIEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzPih2bSwgZ2xvYmFsT2JqZWN0KTsKK30KKworSlNWYWx1ZSBK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIGdldERPTUNvbnN0
cnVjdG9yPEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcj4odm0sICpqc0Nh
c3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKK30KKwordm9pZCBK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQor
eworICAgIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIHRoaXNPYmplY3QgPSBzdGF0aWNf
Y2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKj4oY2VsbCk7CisgICAgdGhpc09iamVj
dC0+SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6fkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMoKTsKK30KKworRW5jb2RlZEpTVmFsdWUganNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICBWTSYgdm0gPSBKU0M6Omdl
dFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKQorICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6Omdl
dENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+
Z2xvYmFsT2JqZWN0KCkpKTsKK30KKworYm9vbCBzZXRKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAg
IFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byogcHJvdG90eXBlID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKj4odm0s
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlw
ZSkpIHsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAvLyBTaGFkb3dpbmcg
YSBidWlsdC1pbiBjb25zdHJ1Y3RvcgorICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpKTsKK30KKworSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yczo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERh
dGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBh
dXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFj
ZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuZ2V0KCkp
CisgICAgICAgIHJldHVybiBzcGFjZTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9v
Zl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnM+IHx8ICFKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpuZWVkc0Rlc3RydWN0aW9uKTsK
KyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+KQorICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLmdldCgpLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKTsKKyAgICBlbHNl
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5j
ZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKTsKKyAg
ICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMuZ2V0KCk7CitJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQor
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCisgICAgaWYgKCZK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZK
U0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5v
dXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19F
TkQKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKK3ZvaWQgSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFw
QW5hbHl6ZXImIGFuYWx5emVyKQoreworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyo+KGNlbGwpOworICAgIGFuYWx5emVyLnNldFdyYXBw
ZWRPYmplY3RGb3JDZWxsKGNlbGwsICZ0aGlzT2JqZWN0LT53cmFwcGVkKCkpOworICAgIGlmICh0
aGlzT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgICAgIGFuYWx5emVyLnNl
dExhYmVsRm9yQ2VsbChjZWxsLCAidXJsICIgKyB0aGlzT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPnVybCgpLnN0cmluZygpKTsKKyAgICBCYXNlOjphbmFseXplSGVhcChjZWxsLCBh
bmFseXplcik7Cit9CisKK2Jvb2wgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc093bmVyOjpp
c1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRs
ZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yLCBjb25zdCBjaGFyKiogcmVhc29uKQorewor
ICAgIFVOVVNFRF9QQVJBTShoYW5kbGUpOworICAgIFVOVVNFRF9QQVJBTSh2aXNpdG9yKTsKKyAg
ICBVTlVTRURfUEFSQU0ocmVhc29uKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc093bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6
OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKK3sKKyAgICBhdXRvKiBqc1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycyo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKKyAgICBhdXRvJiB3b3JsZCA9ICpzdGF0
aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKKyAgICB1bmNhY2hlV3JhcHBlcih3
b3JsZCwgJmpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMtPndyYXBwZWQoKSwganNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycyk7Cit9CisKKyNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkp
CisjaWYgUExBVEZPUk0oV0lOKQorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ0ODMpCitleHRl
cm4gIkMiIHsgZXh0ZXJuIHZvaWQgKCpjb25zdCBfX2lkZW50aWZpZXIoIj8/XzdUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc0BXZWJDb3JlQEA2QkAiKVtdKSgpOyB9CisjZWxzZQorZXh0ZXJuICJD
IiB7IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJDb3JlMjZUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c0VbXTsgfQorI2VuZGlmCisjZW5kaWYKKworSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQo
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJl
ZjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4mJiBpbXBsKQoreworCisjaWYgRU5BQkxFKEJJ
TkRJTkdfSU5URUdSSVRZKQorICAgIGNvbnN0IHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSBn
ZXRWVGFibGVQb2ludGVyKGltcGwucHRyKCkpOworI2lmIFBMQVRGT1JNKFdJTikKKyAgICB2b2lk
KiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSBfX2lkZW50aWZpZXIoIj8/XzdUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc0BXZWJDb3JlQEA2QkAiKTsKKyNlbHNlCisgICAgdm9pZCogZXhwZWN0ZWRW
VGFibGVQb2ludGVyID0gJl9aVFZON1dlYkNvcmUyNlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
RVsyXTsKKyNlbmRpZgorCisgICAgLy8gSWYgdGhpcyBmYWlscyBUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycyBkb2VzIG5vdCBoYXZlIGEgdnRhYmxlLCBzbyB5b3UgbmVlZCB0byBhZGQgdGhlCisg
ICAgLy8gSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFj
ZSBkZWZpbml0aW9uCisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3BvbHltb3JwaGljPFRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzPjo6dmFsdWUsICJUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cyBpcyBub3QgcG9seW1vcnBoaWMiKTsKKworICAgIC8vIElmIHlvdSBoaXQgdGhpcyBhc3NlcnRp
b24geW91IGVpdGhlciBoYXZlIGEgdXNlIGFmdGVyIGZyZWUgYnVnLCBvcgorICAgIC8vIFRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzIGhhcyBzdWJjbGFzc2VzLiBJZiBUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycyBoYXMgc3ViY2xhc3NlcyB0aGF0IGdldCBwYXNzZWQKKyAgICAvLyB0byB0b0pT
KCkgd2UgY3VycmVudGx5IHJlcXVpcmUgVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgeW91IHRv
IG9wdCBvdXQgb2YgYmluZGluZyBoYXJkZW5pbmcKKyAgICAvLyBieSBhZGRpbmcgdGhlIFNraXBW
VGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0aW9u
CisgICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZUYWJs
ZVBvaW50ZXIpOworI2VuZGlmCisgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnM+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Cit9CisKK0pTQzo6
SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
JiBpbXBsKQoreworICAgIHJldHVybiB3cmFwKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9i
amVjdCwgaW1wbCk7Cit9CisKK1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzOjp0b1dyYXBwZWQoSlNDOjpWTSYgdm0sIEpTQzo6SlNWYWx1ZSB2
YWx1ZSkKK3sKKyAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycyo+KHZtLCB2YWx1ZSkpCisgICAgICAgIHJldHVybiAmd3JhcHBl
ci0+d3JhcHBlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCit9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgJKHJldmlzaW9uIDI2Njc0NykKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw5MyBAQAogLyoKLSAgICBU
aGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGp1c3QgdG8gdGVsbCBidWlsZCBzY3JpcHRzIHRoYXQgSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oIGFuZAotICAgIEpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMuY3BwIGFyZSBjcmVhdGVkIGZvciBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5p
ZGwsIGFuZCB0aHVzCi0gICAgcHJldmVudCB0aGUgYnVpbGQgc2NyaXB0cyBmcm9tIHRyeWluZyB0
byBnZW5lcmF0ZSBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmggYW5kCi0gICAgSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAgYXQgZXZlcnkgYnVpbGQuIFRoaXMgZmlsZSBtdXN0
IG5vdCBiZSB0cmllZCB0byBjb21waWxlLgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBX
ZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJh
dGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAg
ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiSlNET01XcmFwcGVyLmgiCisjaW5jbHVkZSAiVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIDog
cHVibGljIEpTRE9NV3JhcHBlcjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4geworcHVibGlj
OgorICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnM+OworICAgIHN0YXRpYyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBjcmVhdGUoSlND
OjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UmVmPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPiYmIGltcGwpCisgICAgeworICAgICAgICBK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxs
b2NhdGVDZWxsPEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+KGdsb2JhbE9iamVjdC0+dm0o
KS5oZWFwKSkgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyhzdHJ1Y3R1cmUsICpnbG9iYWxP
YmplY3QsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2Jh
bE9iamVjdC0+dm0oKSk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisgICAgc3RhdGlj
IEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmpl
Y3QmKTsKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RP
TUdsb2JhbE9iamVjdCYpOworICAgIHN0YXRpYyBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyog
dG9XcmFwcGVkKEpTQzo6Vk0mLCBKU0M6OkpTVmFsdWUpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ry
b3koSlNDOjpKU0NlbGwqKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBKU0M6
OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAg
ICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSwgSlNDOjpOb25BcnJheSk7CisgICAgfQorCisgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRD
b25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRl
bXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNv
bnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2
bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwo
SlNDOjpWTSYgdm0pOworICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6
SGVhcEFuYWx5emVyJik7Citwcm90ZWN0ZWQ6CisgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycyhKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzPiYmKTsKKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYp
OworfTsKKworY2xhc3MgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc093bmVyIDogcHVibGlj
IEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZWFj
aGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29u
dGV4dCwgSlNDOjpTbG90VmlzaXRvciYsIGNvbnN0IGNoYXIqKik7CisgICAgdmlydHVhbCB2b2lk
IGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOworfTsK
KworaW5saW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIoRE9NV3JhcHBlcldv
cmxkJiwgVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqKQoreworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzT3duZXI+IG93bmVyOworICAgIHJl
dHVybiAmb3duZXIuZ2V0KCk7Cit9CisKK2lubGluZSB2b2lkKiB3cmFwcGVyS2V5KFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzKiB3cmFwcGFibGVPYmplY3QpCit7CisgICAgcmV0dXJuIHdyYXBw
YWJsZU9iamVjdDsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMmKTsKK2lubGlu
ZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycyogaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlMobGV4aWNhbEdsb2JhbE9iamVjdCwg
Z2xvYmFsT2JqZWN0LCAqaW1wbCkgOiBKU0M6OmpzTnVsbCgpOyB9CitKU0M6OkpTVmFsdWUgdG9K
U05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBS
ZWY8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+JiYpOworaW5saW5lIEpTQzo6SlNWYWx1ZSB0
b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZlB0cjxUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycz4mJiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KU05ld2x5Q3JlYXRlZChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGltcGwucmVsZWFzZU5vbk51bGwoKSkgOiBK
U0M6OmpzTnVsbCgpOyB9CisKK3RlbXBsYXRlPD4gc3RydWN0IEpTRE9NV3JhcHBlckNvbnZlcnRl
clRyYWl0czxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4geworICAgIHVzaW5nIFdyYXBwZXJD
bGFzcyA9IEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM7CisgICAgdXNpbmcgVG9XcmFwcGVk
UmV0dXJuVHlwZSA9IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKjsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RQYXJ0aWFsTWl4aW5JbnRlcmZhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQYXJ0aWFsTWl4aW5JbnRl
cmZhY2UuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RQYXJ0aWFsTWl4aW5JbnRlcmZhY2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNSBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIHRvIGluZm9y
bSBidWlsZCBzY3JpcHRzIHRoYXQgSlNUZXN0UGFydGlhbE1peGluSW50ZXJmYWNlLmggYW5kCisg
ICAgSlNUZXN0UGFydGlhbE1peGluSW50ZXJmYWNlLmNwcCB3ZXJlIGNyZWF0ZWQgZm9yIFRlc3RQ
YXJ0aWFsTWl4aW5JbnRlcmZhY2UuaWRsLCBhbmQgcHJldmVudCB0aGUgYnVpbGQKKyAgICBzY3Jp
cHRzIGZyb20gdHJ5aW5nIHRvIHJlZ2VuZXJhdGUgSlNUZXN0UGFydGlhbE1peGluSW50ZXJmYWNl
LmggYW5kIEpTVGVzdFBhcnRpYWxNaXhpbkludGVyZmFjZS5jcHAgb24gZXZlcnkgYnVpbGQuCisq
LwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBh
cnRpYWxNaXhpbkludGVyZmFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQYXJ0aWFsTWl4aW5JbnRlcmZhY2UuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
UGFydGlhbE1peGluSW50ZXJmYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1IEBACisv
KgorICAgIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgdG8gaW5mb3JtIGJ1aWxkIHNjcmlwdHMgdGhh
dCBKU1Rlc3RQYXJ0aWFsTWl4aW5JbnRlcmZhY2UuaCBhbmQKKyAgICBKU1Rlc3RQYXJ0aWFsTWl4
aW5JbnRlcmZhY2UuY3BwIHdlcmUgY3JlYXRlZCBmb3IgVGVzdFBhcnRpYWxNaXhpbkludGVyZmFj
ZS5pZGwsIGFuZCBwcmV2ZW50IHRoZSBidWlsZAorICAgIHNjcmlwdHMgZnJvbSB0cnlpbmcgdG8g
cmVnZW5lcmF0ZSBKU1Rlc3RQYXJ0aWFsTWl4aW5JbnRlcmZhY2UuaCBhbmQgSlNUZXN0UGFydGlh
bE1peGluSW50ZXJmYWNlLmNwcCBvbiBldmVyeSBidWlsZC4KKyovCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3VwcGxlbWVudGFsLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U3VwcGxlbWVudGFsLmNwcAkocmV2aXNpb24gMjY2NzQ3KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN1cHBsZW1lbnRhbC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNiArMSw1IEBACiAvKgotICAgIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQganVzdCB0
byB0ZWxsIGJ1aWxkIHNjcmlwdHMgdGhhdCBKU1Rlc3RTdXBwbGVtZW50YWwuaCBhbmQKLSAgICBK
U1Rlc3RTdXBwbGVtZW50YWwuY3BwIGFyZSBjcmVhdGVkIGZvciBUZXN0U3VwcGxlbWVudGFsLmlk
bCwgYW5kIHRodXMKLSAgICBwcmV2ZW50IHRoZSBidWlsZCBzY3JpcHRzIGZyb20gdHJ5aW5nIHRv
IGdlbmVyYXRlIEpTVGVzdFN1cHBsZW1lbnRhbC5oIGFuZAotICAgIEpTVGVzdFN1cHBsZW1lbnRh
bC5jcHAgYXQgZXZlcnkgYnVpbGQuIFRoaXMgZmlsZSBtdXN0IG5vdCBiZSB0cmllZCB0byBjb21w
aWxlLgorICAgIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgdG8gaW5mb3JtIGJ1aWxkIHNjcmlwdHMg
dGhhdCBKU1Rlc3RTdXBwbGVtZW50YWwuaCBhbmQKKyAgICBKU1Rlc3RTdXBwbGVtZW50YWwuY3Bw
IHdlcmUgY3JlYXRlZCBmb3IgVGVzdFN1cHBsZW1lbnRhbC5pZGwsIGFuZCBwcmV2ZW50IHRoZSBi
dWlsZAorICAgIHNjcmlwdHMgZnJvbSB0cnlpbmcgdG8gcmVnZW5lcmF0ZSBKU1Rlc3RTdXBwbGVt
ZW50YWwuaCBhbmQgSlNUZXN0U3VwcGxlbWVudGFsLmNwcCBvbiBldmVyeSBidWlsZC4KICovCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3VwcGxl
bWVudGFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFN1cHBsZW1lbnRhbC5oCShyZXZpc2lvbiAyNjY3NDcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3VwcGxlbWVudGFsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNiArMSw1IEBACiAvKgotICAgIFRoaXMgZmlsZSBpcyBnZW5lcmF0
ZWQganVzdCB0byB0ZWxsIGJ1aWxkIHNjcmlwdHMgdGhhdCBKU1Rlc3RTdXBwbGVtZW50YWwuaCBh
bmQKLSAgICBKU1Rlc3RTdXBwbGVtZW50YWwuY3BwIGFyZSBjcmVhdGVkIGZvciBUZXN0U3VwcGxl
bWVudGFsLmlkbCwgYW5kIHRodXMKLSAgICBwcmV2ZW50IHRoZSBidWlsZCBzY3JpcHRzIGZyb20g
dHJ5aW5nIHRvIGdlbmVyYXRlIEpTVGVzdFN1cHBsZW1lbnRhbC5oIGFuZAotICAgIEpTVGVzdFN1
cHBsZW1lbnRhbC5jcHAgYXQgZXZlcnkgYnVpbGQuIFRoaXMgZmlsZSBtdXN0IG5vdCBiZSB0cmll
ZCB0byBjb21waWxlLgorICAgIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgdG8gaW5mb3JtIGJ1aWxk
IHNjcmlwdHMgdGhhdCBKU1Rlc3RTdXBwbGVtZW50YWwuaCBhbmQKKyAgICBKU1Rlc3RTdXBwbGVt
ZW50YWwuY3BwIHdlcmUgY3JlYXRlZCBmb3IgVGVzdFN1cHBsZW1lbnRhbC5pZGwsIGFuZCBwcmV2
ZW50IHRoZSBidWlsZAorICAgIHNjcmlwdHMgZnJvbSB0cnlpbmcgdG8gcmVnZW5lcmF0ZSBKU1Rl
c3RTdXBwbGVtZW50YWwuaCBhbmQgSlNUZXN0U3VwcGxlbWVudGFsLmNwcCBvbiBldmVyeSBidWls
ZC4KICovCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNX
b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1
Y3RvcnMuY3BwCShyZXZpc2lvbiAyNjY3NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNiArMSw1IEBACiAvKgotICAgIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQg
anVzdCB0byB0ZWxsIGJ1aWxkIHNjcmlwdHMgdGhhdCBKU1dvcmtlckdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3JzLmggYW5kCi0gICAgSlNXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5jcHAgYXJl
IGNyZWF0ZWQgZm9yIFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCwgYW5kIHRodXMK
LSAgICBwcmV2ZW50IHRoZSBidWlsZCBzY3JpcHRzIGZyb20gdHJ5aW5nIHRvIGdlbmVyYXRlIEpT
V29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaCBhbmQKLSAgICBKU1dvcmtlckdsb2JhbFNj
b3BlQ29uc3RydWN0b3JzLmNwcCBhdCBldmVyeSBidWlsZC4gVGhpcyBmaWxlIG11c3Qgbm90IGJl
IHRyaWVkIHRvIGNvbXBpbGUuCisgICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCB0byBpbmZvcm0g
YnVpbGQgc2NyaXB0cyB0aGF0IEpTV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaCBhbmQK
KyAgICBKU1dvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmNwcCB3ZXJlIGNyZWF0ZWQgZm9y
IFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCwgYW5kIHByZXZlbnQgdGhlIGJ1aWxk
CisgICAgc2NyaXB0cyBmcm9tIHRyeWluZyB0byByZWdlbmVyYXRlIEpTV29ya2VyR2xvYmFsU2Nv
cGVDb25zdHJ1Y3RvcnMuaCBhbmQgSlNXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5jcHAg
b24gZXZlcnkgYnVpbGQuCiAqLwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9iYWxT
Y29wZUNvbnN0cnVjdG9ycy5oCShyZXZpc2lvbiAyNjY3NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNSBAQAogLyoKLSAgICBUaGlzIGZpbGUgaXMgZ2Vu
ZXJhdGVkIGp1c3QgdG8gdGVsbCBidWlsZCBzY3JpcHRzIHRoYXQgSlNXb3JrZXJHbG9iYWxTY29w
ZUNvbnN0cnVjdG9ycy5oIGFuZAotICAgIEpTV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMu
Y3BwIGFyZSBjcmVhdGVkIGZvciBXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwsIGFu
ZCB0aHVzCi0gICAgcHJldmVudCB0aGUgYnVpbGQgc2NyaXB0cyBmcm9tIHRyeWluZyB0byBnZW5l
cmF0ZSBKU1dvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmggYW5kCi0gICAgSlNXb3JrZXJH
bG9iYWxTY29wZUNvbnN0cnVjdG9ycy5jcHAgYXQgZXZlcnkgYnVpbGQuIFRoaXMgZmlsZSBtdXN0
IG5vdCBiZSB0cmllZCB0byBjb21waWxlLgorICAgIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgdG8g
aW5mb3JtIGJ1aWxkIHNjcmlwdHMgdGhhdCBKU1dvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3Jz
LmggYW5kCisgICAgSlNXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5jcHAgd2VyZSBjcmVh
dGVkIGZvciBXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwsIGFuZCBwcmV2ZW50IHRo
ZSBidWlsZAorICAgIHNjcmlwdHMgZnJvbSB0cnlpbmcgdG8gcmVnZW5lcmF0ZSBKU1dvcmtlckds
b2JhbFNjb3BlQ29uc3RydWN0b3JzLmggYW5kIEpTV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rv
cnMuY3BwIG9uIGV2ZXJ5IGJ1aWxkLgogKi8KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29y
a2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmNwcAkocmV2aXNpb24gMjY2NzQ3KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2xldEdsb2JhbFNjb3Bl
Q29uc3RydWN0b3JzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDUgQEAKIC8qCi0gICAg
VGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBqdXN0IHRvIHRlbGwgYnVpbGQgc2NyaXB0cyB0aGF0IEpT
V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmggYW5kCi0gICAgSlNXb3JrbGV0R2xvYmFs
U2NvcGVDb25zdHJ1Y3RvcnMuY3BwIGFyZSBjcmVhdGVkIGZvciBXb3JrbGV0R2xvYmFsU2NvcGVD
b25zdHJ1Y3RvcnMuaWRsLCBhbmQgdGh1cwotICAgIHByZXZlbnQgdGhlIGJ1aWxkIHNjcmlwdHMg
ZnJvbSB0cnlpbmcgdG8gZ2VuZXJhdGUgSlNXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMu
aCBhbmQKLSAgICBKU1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5jcHAgYXQgZXZlcnkg
YnVpbGQuIFRoaXMgZmlsZSBtdXN0IG5vdCBiZSB0cmllZCB0byBjb21waWxlLgorICAgIFRoaXMg
ZmlsZSBpcyBnZW5lcmF0ZWQgdG8gaW5mb3JtIGJ1aWxkIHNjcmlwdHMgdGhhdCBKU1dvcmtsZXRH
bG9iYWxTY29wZUNvbnN0cnVjdG9ycy5oIGFuZAorICAgIEpTV29ya2xldEdsb2JhbFNjb3BlQ29u
c3RydWN0b3JzLmNwcCB3ZXJlIGNyZWF0ZWQgZm9yIFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVj
dG9ycy5pZGwsIGFuZCBwcmV2ZW50IHRoZSBidWlsZAorICAgIHNjcmlwdHMgZnJvbSB0cnlpbmcg
dG8gcmVnZW5lcmF0ZSBKU1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5oIGFuZCBKU1dv
cmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5jcHAgb24gZXZlcnkgYnVpbGQuCiAqLwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2xldEdsb2Jh
bFNjb3BlQ29uc3RydWN0b3JzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmgJKHJl
dmlzaW9uIDI2Njc0NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDYgKzEsNSBAQAogLyoKLSAgICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGp1c3QgdG8gdGVsbCBi
dWlsZCBzY3JpcHRzIHRoYXQgSlNXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaCBhbmQK
LSAgICBKU1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5jcHAgYXJlIGNyZWF0ZWQgZm9y
IFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwsIGFuZCB0aHVzCi0gICAgcHJldmVu
dCB0aGUgYnVpbGQgc2NyaXB0cyBmcm9tIHRyeWluZyB0byBnZW5lcmF0ZSBKU1dvcmtsZXRHbG9i
YWxTY29wZUNvbnN0cnVjdG9ycy5oIGFuZAotICAgIEpTV29ya2xldEdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3JzLmNwcCBhdCBldmVyeSBidWlsZC4gVGhpcyBmaWxlIG11c3Qgbm90IGJlIHRyaWVkIHRv
IGNvbXBpbGUuCisgICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCB0byBpbmZvcm0gYnVpbGQgc2Ny
aXB0cyB0aGF0IEpTV29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmggYW5kCisgICAgSlNX
b3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuY3BwIHdlcmUgY3JlYXRlZCBmb3IgV29ya2xl
dEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCwgYW5kIHByZXZlbnQgdGhlIGJ1aWxkCisgICAg
c2NyaXB0cyBmcm9tIHRyeWluZyB0byByZWdlbmVyYXRlIEpTV29ya2xldEdsb2JhbFNjb3BlQ29u
c3RydWN0b3JzLmggYW5kIEpTV29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmNwcCBvbiBl
dmVyeSBidWlsZC4KICovCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRPclNoYWRv
d1Jvb3RTdHlsZVNoZWV0cy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0Rv
Y3VtZW50T3JTaGFkb3dSb290U3R5bGVTaGVldHMuaWRsCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudE9yU2hhZG93Um9vdFN0eWxlU2hlZXRzLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDMwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gaHR0cHM6Ly9kcmFmdHMu
Y3Nzd2cub3JnL2Nzc29tLyNleHRlbnNpb25zLXRvLXRoZS1kb2N1bWVudC1vci1zaGFkb3ctcm9v
dC1pbnRlcmZhY2UKK3BhcnRpYWwgaW50ZXJmYWNlIG1peGluIERvY3VtZW50T3JTaGFkb3dSb290
IHsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgU3R5bGVTaGVldExpc3Qgc3R5bGVTaGVldHM7IC8v
IEZJWE1FOiBTaG91bGQgYmUgW1NhbWVPYmplY3RdLgorfTsKKwpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50T3JTaGFkb3dSb290LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRPclNoYWRvd1Jvb3QuaWRsCShyZXZpc2lvbiAyNjY3NDcpCisrKyBT
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRPclNoYWRvd1Jvb3QuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiwyMiArMjYsMjIgQEAKIAogLy8gaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNk
b2N1bWVudG9yc2hhZG93cm9vdAogaW50ZXJmYWNlIG1peGluIERvY3VtZW50T3JTaGFkb3dSb290
IHsKLSAgICAvLyBFeHRlbnNpb25zIGZyb20gU2hhZG93IERPTSBBUEkgKGh0dHBzOi8vdzNjLmdp
dGh1Yi5pby93ZWJjb21wb25lbnRzL3NwZWMvc2hhZG93LyNleHRlbnNpb25zLXRvLXRoZS1kb2N1
bWVudG9yc2hhZG93cm9vdC1taXhpbikuCi0gICAgLy8gRE9NU2VsZWN0aW9uPyBnZXRTZWxlY3Rp
b24oKTsgLy8gRklYTUU6IFdlIGN1cnJlbnRseSBoYXZlIHRoaXMgb24gRG9jdW1lbnQgb25seS4K
LSAgICBFbGVtZW50PyBlbGVtZW50RnJvbVBvaW50KGRvdWJsZSB4LCBkb3VibGUgeSk7Ci0gICAg
c2VxdWVuY2U8RWxlbWVudD4gZWxlbWVudHNGcm9tUG9pbnQoZG91YmxlIHgsIGRvdWJsZSB5KTsK
LSAgICAvLyBDYXJldFBvc2l0aW9uPyBjYXJldFBvc2l0aW9uRnJvbVBvaW50KGRvdWJsZSB4LCBk
b3VibGUgeSk7IC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KKyAgICAvLyBFeHRlbnNpb25zIGZy
b20gSFRNTCAoaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZG9tLmh0bWwj
ZG9jdW1lbnRvcnNoYWRvd3Jvb3QpCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQ/IGFj
dGl2ZUVsZW1lbnQ7CiAKLSAgICAvLyBFeHRlbnNpb25zIGZyb20gdGhlIENTU09NIHNwZWNpZmlj
YXRpb24gKGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3NvbS8jZXh0ZW5zaW9ucy10by10aGUt
ZG9jdW1lbnQtaW50ZXJmYWNlKS4KLSAgICByZWFkb25seSBhdHRyaWJ1dGUgU3R5bGVTaGVldExp
c3Qgc3R5bGVTaGVldHM7IC8vIEZJWE1FOiBTaG91bGQgYmUgW1NhbWVPYmplY3RdLgotCi0gICAg
Ly8gRXh0ZW5zaW9ucyBmcm9tIFBvaW50ZXIgTG9jayBBUEkgKGh0dHBzOi8vdzNjLmdpdGh1Yi5p
by9wb2ludGVybG9jay8jZXh0ZW5zaW9ucy10by10aGUtZG9jdW1lbnRvcnNoYWRvd3Jvb3QtbWl4
aW4pLgotICAgIFtDb25kaXRpb25hbD1QT0lOVEVSX0xPQ0tdIHJlYWRvbmx5IGF0dHJpYnV0ZSBF
bGVtZW50PyBwb2ludGVyTG9ja0VsZW1lbnQ7CisgICAgLy8gRklYTUU6IGdldFNlbGVjdGlvbiBp
cyBjdXJyZW50bHkgZGVmaW5lZCBvbmx5IHRvIGJlIG9uIERvY3VtZW50IGluIHRoZSBTZWxlY3Rp
b24gQVBJIHNwZWMKKyAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vc2VsZWN0aW9uLWFwaS8j
ZXh0ZW5zaW9ucy10by1kb2N1bWVudC1pbnRlcmZhY2UsIGJ1dAorICAgIC8vIHByZXZpb3VzbHkg
aGFkIGJlZW4gZGVmaW5lZCB0byBiZSBvbiBEb2N1bWVudE9yU2hhZG93Um9vdCBpbiB0aGUgZGVw
cmVjYXRlZCBTaGFkb3cgRE9NIHNwZWMKKyAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vd2Vi
Y29tcG9uZW50cy9zcGVjL3NoYWRvdy8jZXh0ZW5zaW9ucy10by10aGUtZG9jdW1lbnRvcnNoYWRv
d3Jvb3QtbWl4aW4uCisgICAgLy8gV2Ugc2hvdWxkIGdldCB0aGlzIHJlc29sdmVkIGluIHRoZSBT
ZWxlY3Rpb24gQVBJIHNwZWMgYW5kIG1vdmUgdGhpcyB0byB0aGUgY29ycmVjdCBJREwgZmlsZXMu
CisgICAgLy8gRE9NU2VsZWN0aW9uPyBnZXRTZWxlY3Rpb24oKTsKIAotICAgIC8vIEV4dGVuc2lv
bnMgZnJvbSBQaWN0dXJlLWluLVBpY3R1cmUgQVBJIChodHRwczovL3dpY2cuZ2l0aHViLmlvL3Bp
Y3R1cmUtaW4tcGljdHVyZS8jZG9jdW1lbnRvcnNoYWRvd3Jvb3QtZXh0ZW5zaW9uKQotICAgIFtD
b25kaXRpb25hbD1QSUNUVVJFX0lOX1BJQ1RVUkVfQVBJLCBFbmFibGVkQnlTZXR0aW5nPVBpY3R1
cmVJblBpY3R1cmVBUEldIHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50PyBwaWN0dXJlSW5QaWN0
dXJlRWxlbWVudDsKLQotICAgIC8vIEV4dGVuc2lvbiBmcm9tIFdlYiBBbmltYXRpb25zIEFQSSAo
aHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL3dlYi1hbmltYXRpb25zLTEvI2V4dGVuc2lvbnMtdG8t
dGhlLWRvY3VtZW50b3JzaGFkb3dyb290LWludGVyZmFjZS1taXhpbikKLSAgICBbRW5hYmxlZEF0
UnVudGltZT1XZWJBbmltYXRpb25zXSBzZXF1ZW5jZTxXZWJBbmltYXRpb24+IGdldEFuaW1hdGlv
bnMoKTsKKyAgICAvLyBGSVhNRTogVGhlc2UgYXJlIGN1cnJlbnRseSBkZWZpbmVkIG9ubHkgdG8g
YmUgb24gRG9jdW1lbnQgaW4gdGhlIENTU09NIHNwZWMKKyAgICAvLyBodHRwczovL2RyYWZ0cy5j
c3N3Zy5vcmcvY3Nzb20tdmlldy8jZXh0ZW5zaW9ucy10by10aGUtZG9jdW1lbnQtaW50ZXJmYWNl
LCBidXQKKyAgICAvLyBwcmV2aW91c2x5IGhhZCBiZWVuIGRlZmluZWQgdG8gYmUgb24gRG9jdW1l
bnRPclNoYWRvd1Jvb3QgaW4gdGhlIGRlcHJlY2F0ZWQgU2hhZG93IERPTSBzcGVjCisgICAgLy8g
aHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmNvbXBvbmVudHMvc3BlYy9zaGFkb3cvI2V4dGVuc2lv
bnMtdG8tdGhlLWRvY3VtZW50b3JzaGFkb3dyb290LW1peGluLgorICAgIC8vIFdlIHNob3VsZCBn
ZXQgdGhpcyByZXNvbHZlZCBpbiB0aGUgQ1NTT00gc3BlYyBhbmQgbW92ZSB0aGVzZSB0byB0aGUg
Y29ycmVjdCBJREwgZmlsZXMuCisgICAgRWxlbWVudD8gZWxlbWVudEZyb21Qb2ludChkb3VibGUg
eCwgZG91YmxlIHkpOworICAgIHNlcXVlbmNlPEVsZW1lbnQ+IGVsZW1lbnRzRnJvbVBvaW50KGRv
dWJsZSB4LCBkb3VibGUgeSk7CisgICAgLy8gQ2FyZXRQb3NpdGlvbj8gY2FyZXRQb3NpdGlvbkZy
b21Qb2ludChkb3VibGUgeCwgZG91YmxlIHkpOyAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCiB9
OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3JTaGFkb3dSb290UG9pbnRlckxv
Y2suaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9yU2hhZG93
Um9vdFBvaW50ZXJMb2NrLmlkbAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRPclNoYWRvd1Jvb3RQb2ludGVyTG9jay5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9wb2ludGVy
bG9jay8jZXh0ZW5zaW9ucy10by10aGUtZG9jdW1lbnRvcnNoYWRvd3Jvb3QtbWl4aW4KK1sKKyAg
ICBDb25kaXRpb25hbD1QT0lOVEVSX0xPQ0sKK10gcGFydGlhbCBpbnRlcmZhY2UgbWl4aW4gRG9j
dW1lbnRPclNoYWRvd1Jvb3QgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50PyBwb2lu
dGVyTG9ja0VsZW1lbnQ7Cit9Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>